summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominique Belhachemi <domibel@debian.org>2010-04-03 16:18:28 +0200
committerDominique Belhachemi <domibel@debian.org>2010-04-03 16:18:28 +0200
commitc049eeac7dd7e69f9b4f5bfce0e25e9ebc4036b7 (patch)
treeb9b79401a239a63f8f1a582614ec1a41172498df
Import sparskit_2.0.0.orig.tar.gz
[dgit import orig sparskit_2.0.0.orig.tar.gz]
-rw-r--r--BLASSM/README83
-rw-r--r--BLASSM/blassm.f1116
-rw-r--r--BLASSM/makefile21
-rw-r--r--BLASSM/matvec.f830
-rw-r--r--BLASSM/rmatvec.f202
-rw-r--r--BLASSM/tester.f172
-rw-r--r--DOC/QUICK_REF200
-rw-r--r--DOC/README14
-rw-r--r--DOC/dir.eps115
-rw-r--r--DOC/dir.fig46
-rw-r--r--DOC/dir.pdfbin0 -> 1471 bytes
-rw-r--r--DOC/doc_data.txt15
-rw-r--r--DOC/jpwh.pdfbin0 -> 42831 bytes
-rw-r--r--DOC/jpwh.ps6057
-rw-r--r--DOC/mat8.pdfbin0 -> 63163 bytes
-rw-r--r--DOC/mat8.ps8564
-rw-r--r--DOC/mat9.pdfbin0 -> 54091 bytes
-rw-r--r--DOC/mat9.ps7332
-rw-r--r--DOC/msh8.pdfbin0 -> 21743 bytes
-rw-r--r--DOC/msh8.ps10937
-rw-r--r--DOC/msh9.pdfbin0 -> 20888 bytes
-rw-r--r--DOC/msh9.ps9353
-rw-r--r--DOC/paper.pdfbin0 -> 432929 bytes
-rw-r--r--DOC/paper.ps46661
-rw-r--r--DOC/paper.tex1998
-rw-r--r--DOC/vbrpic.eps307
-rw-r--r--DOC/vbrpic.fig207
-rw-r--r--DOC/vbrpic.pdfbin0 -> 2451 bytes
-rw-r--r--FORMATS/README143
-rw-r--r--FORMATS/chkfmt1.f424
-rw-r--r--FORMATS/chkun.f168
-rw-r--r--FORMATS/formats.f3716
-rw-r--r--FORMATS/makefile28
-rw-r--r--FORMATS/rvbr.f142
-rw-r--r--FORMATS/unary.f3141
-rw-r--r--INFO/README66
-rw-r--r--INFO/dinfo13.f394
-rw-r--r--INFO/info.saylr142
-rw-r--r--INFO/infofun.f800
-rw-r--r--INFO/makefile18
-rw-r--r--INFO/rinfo1.f39
-rw-r--r--INFO/rinfoC.c104
-rw-r--r--INFO/saylr1368
-rw-r--r--INOUT/README23
-rw-r--r--INOUT/chkio.f100
-rw-r--r--INOUT/hb2pic.f35
-rw-r--r--INOUT/hb2ps.f42
-rw-r--r--INOUT/inout.f1504
-rw-r--r--INOUT/makefile28
-rw-r--r--INOUT/semantic.cache15
-rw-r--r--ITSOL/README63
-rw-r--r--ITSOL/ilut.f2430
-rw-r--r--ITSOL/itaux.f217
-rw-r--r--ITSOL/iters.f3586
-rw-r--r--ITSOL/makefile27
-rw-r--r--ITSOL/rilut.f285
-rw-r--r--ITSOL/riter2.f102
-rw-r--r--ITSOL/riters.f129
-rw-r--r--ITSOL/riters_sav129
-rw-r--r--ITSOL/runilut.f264
-rw-r--r--ITSOL/saylr1367
-rw-r--r--LGPL504
-rw-r--r--MATGEN/FDIF/README31
-rw-r--r--MATGEN/FDIF/functns.f171
-rw-r--r--MATGEN/FDIF/genmat.f1279
-rw-r--r--MATGEN/FDIF/makefile21
-rw-r--r--MATGEN/FDIF/rgen5pt.f66
-rw-r--r--MATGEN/FDIF/rgenblk.f63
-rw-r--r--MATGEN/FEM/README26
-rw-r--r--MATGEN/FEM/convdif.f131
-rw-r--r--MATGEN/FEM/elmtlib2.f1501
-rw-r--r--MATGEN/FEM/femgen.f620
-rw-r--r--MATGEN/FEM/functns2.f225
-rw-r--r--MATGEN/FEM/makefile20
-rw-r--r--MATGEN/FEM/mat.hb513
-rw-r--r--MATGEN/FEM/meshes.f986
-rw-r--r--MATGEN/FEM/semantic.cache16
-rw-r--r--MATGEN/MISC/README15
-rw-r--r--MATGEN/MISC/makefile25
-rw-r--r--MATGEN/MISC/markov.f143
-rw-r--r--MATGEN/MISC/rsobel.f14
-rw-r--r--MATGEN/MISC/rzlatev.f108
-rw-r--r--MATGEN/MISC/sobel.f158
-rw-r--r--MATGEN/MISC/zlatev.f542
-rw-r--r--MATGEN/README57
-rw-r--r--ORDERINGS/README55
-rw-r--r--ORDERINGS/ccn.f709
-rw-r--r--ORDERINGS/color.f917
-rw-r--r--ORDERINGS/dsepart.f980
-rw-r--r--README108
-rw-r--r--UNSUPP/BLAS1/blas1.f670
-rw-r--r--UNSUPP/MATEXP/README20
-rw-r--r--UNSUPP/MATEXP/exppro.f593
-rw-r--r--UNSUPP/MATEXP/makefile14
-rw-r--r--UNSUPP/MATEXP/phipro.f640
-rw-r--r--UNSUPP/MATEXP/rexp.f98
-rw-r--r--UNSUPP/MATEXP/rphi.f127
-rw-r--r--UNSUPP/PLOTS/README19
-rw-r--r--UNSUPP/PLOTS/psgrd.f190
-rw-r--r--UNSUPP/PLOTS/texgrid1.f242
-rw-r--r--UNSUPP/PLOTS/texplt1.f243
-rw-r--r--UNSUPP/README57
-rwxr-xr-xdotests144
-rw-r--r--logfile329
-rw-r--r--makefile153
-rwxr-xr-xsgrep5
106 files changed, 126717 insertions, 0 deletions
diff --git a/BLASSM/README b/BLASSM/README
new file mode 100644
index 0000000..071c687
--- /dev/null
+++ b/BLASSM/README
@@ -0,0 +1,83 @@
+c----------------------------------------------------------------------c
+c c
+c BLASSM and MATVEC MODULES c
+c c
+c----------------------------------------------------------------------c
+c c
+c This directory contains the BLASSM and MATVEC modules of SPARSKIT c
+c c
+c----------------------------------------------------------------------c
+c c
+c Current contents c
+c----------------------------------------------------------------------c
+c c
+c blassm.f : contains the latest version of the basc linear algerba c
+c routines for sparse matrices. c
+c c
+c tester.f : is a main program to test the routines and the paths c
+c c
+c matvec.f : contains the subroutines in the module matvec c
+c c
+c rmatvec.f: a test program that runs all the routines in matvec c
+c c
+c----------------------------------------------------------------------c
+c c
+c makefile : make file for tester.ex (tests blassm.f) and mvec.ex c
+c (tests routines in matvec.f) c
+c c
+c----------------------------------------------------------------------c
+c----------------------------------------------------------------------c
+c----------------------------------------------------------------------c
+c current status of blassm.f c
+c c
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c BASIC LINEAR ALGEBRA FOR SPARSE MATRICES. BLASSM MODULE c
+c----------------------------------------------------------------------c
+c amub : computes C = A*B c
+c aplb : computes C = A+B c
+c aplsb : computes C = A + s B c
+c apmbt : Computes C = A +/- transp(B) c
+c aplsbt : Computes C = A + s * transp(B) c
+c diamua : Computes C = Diag * A c
+c amudia : Computes C = A* Diag c
+c apldia : Computes C = A + Diag. c
+c aplsca : Computes A:= A + s I (s = scalar) c
+c----------------------------------------------------------------------c
+c----------------------------------------------------------------------c
+c c
+c current status of matvec.f c
+c c
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c BASIC MATRIX-VECTOR OPERATIONS - MATVEC MODULE c
+c Matrix-vector Mulitiplications and Triang. Solves c
+c----------------------------------------------------------------------c
+c contents:
+c---------- c
+c 1) Matrix-vector products: c
+c--------------------------- c
+c amux : A times a vector. Compressed Sparse Row (CSR) format. c
+c amuxms: A times a vector. Modified Compress Sparse Row format. c
+c atmux : Transp(A) times a vector. CSR format. c
+c amuxe : A times a vector. Ellpack/Itpack (ELL) format. c
+c amuxd : A times a vector. Diagonal (DIA) format. c
+c amuxj : A times a vector. Jagged Diagonal (JAD) format. c
+c vbrmv : Sparse matrix-full vector product, in VBR format c
+c c
+c 2) Triangular system solutions: c
+c------------------------------- c
+c lsol : Unit Lower Triang. solve. Compressed Sparse Row (CSR) format.c
+c ldsol : Lower Triang. solve. Modified Sparse Row (MSR) format. c
+c lsolc : Unit Lower Triang. solve. Comp. Sparse Column (CSC) format. c
+c ldsolc: Lower Triang. solve. Modified Sparse Column (MSC) format. c
+c ldsoll: Lower Triang. solve with level scheduling. MSR format. c
+c usol : Unit Upper Triang. solve. Compressed Sparse Row (CSR) format.c
+c udsol : Upper Triang. solve. Modified Sparse Row (MSR) format. c
+c usolc : Unit Upper Triang. solve. Comp. Sparse Column (CSC) format. c
+c udsolc: Upper Triang. solve. Modified Sparse Column (MSC) format. c
+c----------------------------------------------------------------------c
+
+
diff --git a/BLASSM/blassm.f b/BLASSM/blassm.f
new file mode 100644
index 0000000..899deb3
--- /dev/null
+++ b/BLASSM/blassm.f
@@ -0,0 +1,1116 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c BASIC LINEAR ALGEBRA FOR SPARSE MATRICES. BLASSM MODULE c
+c----------------------------------------------------------------------c
+c amub : computes C = A*B c
+c aplb : computes C = A+B c
+c aplb1 : computes C = A+B [Sorted version: A, B, C sorted] c
+c aplsb : computes C = A + s B c
+c aplsb1 : computes C = A+sB [Sorted version: A, B, C sorted] c
+c apmbt : Computes C = A +/- transp(B) c
+c aplsbt : Computes C = A + s * transp(B) c
+c diamua : Computes C = Diag * A c
+c amudia : Computes C = A* Diag c
+c aplsca : Computes A:= A + s I (s = scalar) c
+c apldia : Computes C = A + Diag. c
+c----------------------------------------------------------------------c
+c Note: this module still incomplete. c
+c----------------------------------------------------------------------c
+ subroutine amub (nrow,ncol,job,a,ja,ia,b,jb,ib,
+ * c,jc,ic,nzmax,iw,ierr)
+ real*8 a(*), b(*), c(*)
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(*),ic(*),iw(ncol)
+c-----------------------------------------------------------------------
+c performs the matrix by matrix product C = A B
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A = row dimension of C
+c ncol = integer. The column dimension of B = column dimension of C
+c job = integer. Job indicator. When job = 0, only the structure
+c (i.e. the arrays jc, ic) is computed and the
+c real values are ignored.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format.
+c
+c nzmax = integer. The length of the arrays c and jc.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row sparse format.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c work arrays:
+c------------
+c iw = integer work array of length equal to the number of
+c columns in A.
+c Note:
+c-------
+c The row dimension of B is not needed. However there is no checking
+c on the condition that ncol(A) = nrow(B).
+c
+c-----------------------------------------------------------------------
+ real*8 scal
+ logical values
+ values = (job .ne. 0)
+ len = 0
+ ic(1) = 1
+ ierr = 0
+c initialize array iw.
+ do 1 j=1, ncol
+ iw(j) = 0
+ 1 continue
+c
+ do 500 ii=1, nrow
+c row i
+ do 200 ka=ia(ii), ia(ii+1)-1
+ if (values) scal = a(ka)
+ jj = ja(ka)
+ do 100 kb=ib(jj),ib(jj+1)-1
+ jcol = jb(kb)
+ jpos = iw(jcol)
+ if (jpos .eq. 0) then
+ len = len+1
+ if (len .gt. nzmax) then
+ ierr = ii
+ return
+ endif
+ jc(len) = jcol
+ iw(jcol)= len
+ if (values) c(len) = scal*b(kb)
+ else
+ if (values) c(jpos) = c(jpos) + scal*b(kb)
+ endif
+ 100 continue
+ 200 continue
+ do 201 k=ic(ii), len
+ iw(jc(k)) = 0
+ 201 continue
+ ic(ii+1) = len+1
+ 500 continue
+ return
+c-------------end-of-amub-----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplb (nrow,ncol,job,a,ja,ia,b,jb,ib,
+ * c,jc,ic,nzmax,iw,ierr)
+ real*8 a(*), b(*), c(*)
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(nrow+1),ic(nrow+1),
+ * iw(ncol)
+c-----------------------------------------------------------------------
+c performs the matrix sum C = A+B.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and B
+c ncol = integer. The column dimension of A and B.
+c job = integer. Job indicator. When job = 0, only the structure
+c (i.e. the arrays jc, ic) is computed and the
+c real values are ignored.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format.
+c
+c nzmax = integer. The length of the arrays c and jc.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row sparse format.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c work arrays:
+c------------
+c iw = integer work array of length equal to the number of
+c columns in A.
+c
+c-----------------------------------------------------------------------
+ logical values
+ values = (job .ne. 0)
+ ierr = 0
+ len = 0
+ ic(1) = 1
+ do 1 j=1, ncol
+ iw(j) = 0
+ 1 continue
+c
+ do 500 ii=1, nrow
+c row i
+ do 200 ka=ia(ii), ia(ii+1)-1
+ len = len+1
+ jcol = ja(ka)
+ if (len .gt. nzmax) goto 999
+ jc(len) = jcol
+ if (values) c(len) = a(ka)
+ iw(jcol)= len
+ 200 continue
+c
+ do 300 kb=ib(ii),ib(ii+1)-1
+ jcol = jb(kb)
+ jpos = iw(jcol)
+ if (jpos .eq. 0) then
+ len = len+1
+ if (len .gt. nzmax) goto 999
+ jc(len) = jcol
+ if (values) c(len) = b(kb)
+ iw(jcol)= len
+ else
+ if (values) c(jpos) = c(jpos) + b(kb)
+ endif
+ 300 continue
+ do 301 k=ic(ii), len
+ iw(jc(k)) = 0
+ 301 continue
+ ic(ii+1) = len+1
+ 500 continue
+ return
+ 999 ierr = ii
+ return
+c------------end of aplb -----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplb1(nrow,ncol,job,a,ja,ia,b,jb,ib,c,jc,ic,nzmax,ierr)
+ real*8 a(*), b(*), c(*)
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(nrow+1),ic(nrow+1)
+c-----------------------------------------------------------------------
+c performs the matrix sum C = A+B for matrices in sorted CSR format.
+c the difference with aplb is that the resulting matrix is such that
+c the elements of each row are sorted with increasing column indices in
+c each row, provided the original matrices are sorted in the same way.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and B
+c ncol = integer. The column dimension of A and B.
+c job = integer. Job indicator. When job = 0, only the structure
+c (i.e. the arrays jc, ic) is computed and the
+c real values are ignored.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format with entries sorted
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format with entries sorted
+c ascendly in each row
+c
+c nzmax = integer. The length of the arrays c and jc.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row sparse format
+c with entries sorted ascendly in each row.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c Notes:
+c-------
+c this will not work if any of the two input matrices is not sorted
+c-----------------------------------------------------------------------
+ logical values
+ values = (job .ne. 0)
+ ierr = 0
+ kc = 1
+ ic(1) = kc
+c
+ do 6 i=1, nrow
+ ka = ia(i)
+ kb = ib(i)
+ kamax = ia(i+1)-1
+ kbmax = ib(i+1)-1
+ 5 continue
+ if (ka .le. kamax) then
+ j1 = ja(ka)
+ else
+ j1 = ncol+1
+ endif
+ if (kb .le. kbmax) then
+ j2 = jb(kb)
+ else
+ j2 = ncol+1
+ endif
+c
+c three cases
+c
+ if (kc .gt. nzmax) goto 999
+ if (j1 .eq. j2) then
+ if (values) c(kc) = a(ka)+b(kb)
+ jc(kc) = j1
+ ka = ka+1
+ kb = kb+1
+ kc = kc+1
+ else if (j1 .lt. j2) then
+ jc(kc) = j1
+ if (values) c(kc) = a(ka)
+ ka = ka+1
+ kc = kc+1
+ else if (j1 .gt. j2) then
+ jc(kc) = j2
+ if (values) c(kc) = b(kb)
+ kb = kb+1
+ kc = kc+1
+ endif
+ if (ka .le. kamax .or. kb .le. kbmax) goto 5
+ ic(i+1) = kc
+ 6 continue
+ return
+ 999 ierr = i
+ return
+c------------end-of-aplb1-----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplsb (nrow,ncol,a,ja,ia,s,b,jb,ib,c,jc,ic,
+ * nzmax,ierr)
+ real*8 a(*), b(*), c(*), s
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(nrow+1),ic(nrow+1)
+c-----------------------------------------------------------------------
+c performs the operation C = A+s B for matrices in sorted CSR format.
+c the difference with aplsb is that the resulting matrix is such that
+c the elements of each row are sorted with increasing column indices in
+c each row, provided the original matrices are sorted in the same way.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and B
+c ncol = integer. The column dimension of A and B.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format with entries sorted
+c
+c s = real. scalar factor for B.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format with entries sorted
+c ascendly in each row
+c
+c nzmax = integer. The length of the arrays c and jc.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row sparse format
+c with entries sorted ascendly in each row.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c Notes:
+c-------
+c this will not work if any of the two input matrices is not sorted
+c-----------------------------------------------------------------------
+ ierr = 0
+ kc = 1
+ ic(1) = kc
+c
+c the following loop does a merge of two sparse rows + adds them.
+c
+ do 6 i=1, nrow
+ ka = ia(i)
+ kb = ib(i)
+ kamax = ia(i+1)-1
+ kbmax = ib(i+1)-1
+ 5 continue
+c
+c this is a while -- do loop --
+c
+ if (ka .le. kamax .or. kb .le. kbmax) then
+c
+ if (ka .le. kamax) then
+ j1 = ja(ka)
+ else
+c take j1 large enough that always j2 .lt. j1
+ j1 = ncol+1
+ endif
+ if (kb .le. kbmax) then
+ j2 = jb(kb)
+ else
+c similarly take j2 large enough that always j1 .lt. j2
+ j2 = ncol+1
+ endif
+c
+c three cases
+c
+ if (kc .gt. nzmax) goto 999
+ if (j1 .eq. j2) then
+ c(kc) = a(ka)+s*b(kb)
+ jc(kc) = j1
+ ka = ka+1
+ kb = kb+1
+ kc = kc+1
+ else if (j1 .lt. j2) then
+ jc(kc) = j1
+ c(kc) = a(ka)
+ ka = ka+1
+ kc = kc+1
+ else if (j1 .gt. j2) then
+ jc(kc) = j2
+ c(kc) = s*b(kb)
+ kb = kb+1
+ kc = kc+1
+ endif
+ goto 5
+c
+c end while loop
+c
+ endif
+ ic(i+1) = kc
+ 6 continue
+ return
+ 999 ierr = i
+ return
+c------------end-of-aplsb ---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplsb1 (nrow,ncol,a,ja,ia,s,b,jb,ib,c,jc,ic,
+ * nzmax,ierr)
+ real*8 a(*), b(*), c(*), s
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(nrow+1),ic(nrow+1)
+c-----------------------------------------------------------------------
+c performs the operation C = A+s B for matrices in sorted CSR format.
+c the difference with aplsb is that the resulting matrix is such that
+c the elements of each row are sorted with increasing column indices in
+c each row, provided the original matrices are sorted in the same way.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and B
+c ncol = integer. The column dimension of A and B.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format with entries sorted
+c
+c s = real. scalar factor for B.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format with entries sorted
+c ascendly in each row
+c
+c nzmax = integer. The length of the arrays c and jc.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row sparse format
+c with entries sorted ascendly in each row.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c Notes:
+c-------
+c this will not work if any of the two input matrices is not sorted
+c-----------------------------------------------------------------------
+ ierr = 0
+ kc = 1
+ ic(1) = kc
+c
+c the following loop does a merge of two sparse rows + adds them.
+c
+ do 6 i=1, nrow
+ ka = ia(i)
+ kb = ib(i)
+ kamax = ia(i+1)-1
+ kbmax = ib(i+1)-1
+ 5 continue
+c
+c this is a while -- do loop --
+c
+ if (ka .le. kamax .or. kb .le. kbmax) then
+c
+ if (ka .le. kamax) then
+ j1 = ja(ka)
+ else
+c take j1 large enough that always j2 .lt. j1
+ j1 = ncol+1
+ endif
+ if (kb .le. kbmax) then
+ j2 = jb(kb)
+ else
+c similarly take j2 large enough that always j1 .lt. j2
+ j2 = ncol+1
+ endif
+c
+c three cases
+c
+ if (j1 .eq. j2) then
+ c(kc) = a(ka)+s*b(kb)
+ jc(kc) = j1
+ ka = ka+1
+ kb = kb+1
+ kc = kc+1
+ else if (j1 .lt. j2) then
+ jc(kc) = j1
+ c(kc) = a(ka)
+ ka = ka+1
+ kc = kc+1
+ else if (j1 .gt. j2) then
+ jc(kc) = j2
+ c(kc) = s*b(kb)
+ kb = kb+1
+ kc = kc+1
+ endif
+ if (kc .gt. nzmax) goto 999
+ goto 5
+c
+c end while loop
+c
+ endif
+ ic(i+1) = kc
+ 6 continue
+ return
+ 999 ierr = i
+ return
+c------------end-of-aplsb1 ---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine apmbt (nrow,ncol,job,a,ja,ia,b,jb,ib,
+ * c,jc,ic,nzmax,iw,ierr)
+ real*8 a(*), b(*), c(*)
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(ncol+1),ic(*),iw(*)
+c-----------------------------------------------------------------------
+c performs the matrix sum C = A + transp(B) or C = A - transp(B)
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and transp(B)
+c ncol = integer. The column dimension of A. Also the row
+c dimension of B.
+c
+c job = integer. if job = -1, apmbt will compute C= A - transp(B)
+c (structure + values)
+c if (job .eq. 1) it will compute C=A+transp(A)
+c (structure+ values)
+c if (job .eq. 0) it will compute the structure of
+c C= A+/-transp(B) only (ignoring all real values).
+c any other value of job will be treated as job=1
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format.
+c
+c nzmax = integer. The length of the arrays c, jc, and ic.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row format.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return.
+c ierr = -1 means that nzmax was .lt. either the number of
+c nonzero elements of A or the number of nonzero elements in B.
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c work arrays:
+c------------
+c iw = integer work array of length at least max(ncol,nrow)
+c
+c Notes:
+c------- It is important to note that here all of three arrays c, ic,
+c and jc are assumed to be of length nnz(c). This is because
+c the matrix is internally converted in coordinate format.
+c
+c-----------------------------------------------------------------------
+ logical values
+ values = (job .ne. 0)
+c
+ ierr = 0
+ do 1 j=1, ncol
+ iw(j) = 0
+ 1 continue
+c
+ nnza = ia(nrow+1)-1
+ nnzb = ib(ncol+1)-1
+ len = nnzb
+ if (nzmax .lt. nnzb .or. nzmax .lt. nnza) then
+ ierr = -1
+ return
+ endif
+c
+c trasnpose matrix b into c
+c
+ ljob = 0
+ if (values) ljob = 1
+ ipos = 1
+ call csrcsc (ncol,ljob,ipos,b,jb,ib,c,jc,ic)
+c-----------------------------------------------------------------------
+ if (job .eq. -1) then
+ do 2 k=1,len
+ c(k) = -c(k)
+ 2 continue
+ endif
+c
+c--------------- main loop --------------------------------------------
+c
+ do 500 ii=1, nrow
+ do 200 k = ic(ii),ic(ii+1)-1
+ iw(jc(k)) = k
+ 200 continue
+c-----------------------------------------------------------------------
+ do 300 ka = ia(ii), ia(ii+1)-1
+ jcol = ja(ka)
+ jpos = iw(jcol)
+ if (jpos .eq. 0) then
+c
+c if fill-in append in coordinate format to matrix.
+c
+ len = len+1
+ if (len .gt. nzmax) goto 999
+ jc(len) = jcol
+
+ ic(len) = ii
+ if (values) c(len) = a(ka)
+ else
+c else do addition.
+ if (values) c(jpos) = c(jpos) + a(ka)
+ endif
+ 300 continue
+ do 301 k=ic(ii), ic(ii+1)-1
+ iw(jc(k)) = 0
+ 301 continue
+ 500 continue
+c
+c convert first part of matrix (without fill-ins) into coo format
+c
+ ljob = 2
+ if (values) ljob = 3
+ do 501 i=1, nrow+1
+ iw(i) = ic(i)
+ 501 continue
+ call csrcoo (nrow,ljob,nnzb,c,jc,iw,nnzb,c,ic,jc,ierr)
+c
+c convert the whole thing back to csr format.
+c
+ ljob = 0
+ if (values) ljob = 1
+ call coicsr (nrow,len,ljob,c,jc,ic,iw)
+ return
+ 999 ierr = ii
+ return
+c--------end-of-apmbt---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplsbt(nrow,ncol,a,ja,ia,s,b,jb,ib,
+ * c,jc,ic,nzmax,iw,ierr)
+ real*8 a(*), b(*), c(*), s
+ integer ja(*),jb(*),jc(*),ia(nrow+1),ib(ncol+1),ic(*),iw(*)
+c-----------------------------------------------------------------------
+c performs the matrix sum C = A + transp(B).
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and transp(B)
+c ncol = integer. The column dimension of A. Also the row
+c dimension of B.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c s = real. scalar factor for B.
+c
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format.
+c
+c nzmax = integer. The length of the arrays c, jc, and ic.
+c amub will stop if the result matrix C has a number
+c of elements that exceeds exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c c,
+c jc,
+c ic = resulting matrix C in compressed sparse row format.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return.
+c ierr = -1 means that nzmax was .lt. either the number of
+c nonzero elements of A or the number of nonzero elements in B.
+c ierr .gt. 0 means that amub stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c work arrays:
+c------------
+c iw = integer work array of length at least max(nrow,ncol)
+c
+c Notes:
+c------- It is important to note that here all of three arrays c, ic,
+c and jc are assumed to be of length nnz(c). This is because
+c the matrix is internally converted in coordinate format.
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ do 1 j=1, ncol
+ iw(j) = 0
+ 1 continue
+c
+ nnza = ia(nrow+1)-1
+ nnzb = ib(ncol+1)-1
+ len = nnzb
+ if (nzmax .lt. nnzb .or. nzmax .lt. nnza) then
+ ierr = -1
+ return
+ endif
+c
+c transpose matrix b into c
+c
+ ljob = 1
+ ipos = 1
+ call csrcsc (ncol,ljob,ipos,b,jb,ib,c,jc,ic)
+ do 2 k=1,len
+ 2 c(k) = c(k)*s
+c
+c main loop. add rows from ii = 1 to nrow.
+c
+ do 500 ii=1, nrow
+c iw is used as a system to recognize whether there
+c was a nonzero element in c.
+ do 200 k = ic(ii),ic(ii+1)-1
+ iw(jc(k)) = k
+ 200 continue
+c
+ do 300 ka = ia(ii), ia(ii+1)-1
+ jcol = ja(ka)
+ jpos = iw(jcol)
+ if (jpos .eq. 0) then
+c
+c if fill-in append in coordinate format to matrix.
+c
+ len = len+1
+ if (len .gt. nzmax) goto 999
+ jc(len) = jcol
+ ic(len) = ii
+ c(len) = a(ka)
+ else
+c else do addition.
+ c(jpos) = c(jpos) + a(ka)
+ endif
+ 300 continue
+ do 301 k=ic(ii), ic(ii+1)-1
+ iw(jc(k)) = 0
+ 301 continue
+ 500 continue
+c
+c convert first part of matrix (without fill-ins) into coo format
+c
+ ljob = 3
+ do 501 i=1, nrow+1
+ iw(i) = ic(i)
+ 501 continue
+ call csrcoo (nrow,ljob,nnzb,c,jc,iw,nnzb,c,ic,jc,ierr)
+c
+c convert the whole thing back to csr format.
+c
+ ljob = 1
+ call coicsr (nrow,len,ljob,c,jc,ic,iw)
+ return
+ 999 ierr = ii
+ return
+c--------end-of-aplsbt--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine diamua (nrow,job, a, ja, ia, diag, b, jb, ib)
+ real*8 a(*), b(*), diag(nrow), scal
+ integer ja(*),jb(*), ia(nrow+1),ib(nrow+1)
+c-----------------------------------------------------------------------
+c performs the matrix by matrix product B = Diag * A (in place)
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c job = integer. job indicator. Job=0 means get array b only
+c job = 1 means get b, and the integer arrays ib, jb.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c diag = diagonal matrix stored as a vector dig(1:n)
+c
+c on return:
+c----------
+c
+c b,
+c jb,
+c ib = resulting matrix B in compressed sparse row sparse format.
+c
+c Notes:
+c-------
+c 1) The column dimension of A is not needed.
+c 2) algorithm in place (B can take the place of A).
+c in this case use job=0.
+c-----------------------------------------------------------------
+ do 1 ii=1,nrow
+c
+c normalize each row
+c
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ scal = diag(ii)
+ do 2 k=k1, k2
+ b(k) = a(k)*scal
+ 2 continue
+ 1 continue
+c
+ if (job .eq. 0) return
+c
+ do 3 ii=1, nrow+1
+ ib(ii) = ia(ii)
+ 3 continue
+ do 31 k=ia(1), ia(nrow+1) -1
+ jb(k) = ja(k)
+ 31 continue
+ return
+c----------end-of-diamua------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amudia (nrow,job, a, ja, ia, diag, b, jb, ib)
+ real*8 a(*), b(*), diag(nrow)
+ integer ja(*),jb(*), ia(nrow+1),ib(nrow+1)
+c-----------------------------------------------------------------------
+c performs the matrix by matrix product B = A * Diag (in place)
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c job = integer. job indicator. Job=0 means get array b only
+c job = 1 means get b, and the integer arrays ib, jb.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c diag = diagonal matrix stored as a vector dig(1:n)
+c
+c on return:
+c----------
+c
+c b,
+c jb,
+c ib = resulting matrix B in compressed sparse row sparse format.
+c
+c Notes:
+c-------
+c 1) The column dimension of A is not needed.
+c 2) algorithm in place (B can take the place of A).
+c-----------------------------------------------------------------
+ do 1 ii=1,nrow
+c
+c scale each element
+c
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ do 2 k=k1, k2
+ b(k) = a(k)*diag(ja(k))
+ 2 continue
+ 1 continue
+c
+ if (job .eq. 0) return
+c
+ do 3 ii=1, nrow+1
+ ib(ii) = ia(ii)
+ 3 continue
+ do 31 k=ia(1), ia(nrow+1) -1
+ jb(k) = ja(k)
+ 31 continue
+ return
+c-----------------------------------------------------------------------
+c-----------end-of-amudiag----------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplsca (nrow, a, ja, ia, scal,iw)
+ real*8 a(*), scal
+ integer ja(*), ia(nrow+1),iw(*)
+c-----------------------------------------------------------------------
+c Adds a scalar to the diagonal entries of a sparse matrix A :=A + s I
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c scal = real. scalar to add to the diagonal entries.
+c
+c on return:
+c----------
+c
+c a,
+c ja,
+c ia = matrix A with diagonal elements shifted (or created).
+c
+c iw = integer work array of length n. On return iw will
+c contain the positions of the diagonal entries in the
+c output matrix. (i.e., a(iw(k)), ja(iw(k)), k=1,...n,
+c are the values/column indices of the diagonal elements
+c of the output matrix. ).
+c
+c Notes:
+c-------
+c The column dimension of A is not needed.
+c important: the matrix a may be expanded slightly to allow for
+c additions of nonzero elements to previously nonexisting diagonals.
+c The is no checking as to whether there is enough space appended
+c to the arrays a and ja. if not sure allow for n additional
+c elemnts.
+c coded by Y. Saad. Latest version July, 19, 1990
+c-----------------------------------------------------------------------
+ logical test
+c
+ call diapos (nrow,ja,ia,iw)
+ icount = 0
+ do 1 j=1, nrow
+ if (iw(j) .eq. 0) then
+ icount = icount+1
+ else
+ a(iw(j)) = a(iw(j)) + scal
+ endif
+ 1 continue
+c
+c if no diagonal elements to insert in data structure return.
+c
+ if (icount .eq. 0) return
+c
+c shift the nonzero elements if needed, to allow for created
+c diagonal elements.
+c
+ ko = ia(nrow+1)+icount
+c
+c copy rows backward
+c
+ do 5 ii=nrow, 1, -1
+c
+c go through row ii
+c
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ ia(ii+1) = ko
+ test = (iw(ii) .eq. 0)
+ do 4 k = k2,k1,-1
+ j = ja(k)
+ if (test .and. (j .lt. ii)) then
+ test = .false.
+ ko = ko - 1
+ a(ko) = scal
+ ja(ko) = ii
+ iw(ii) = ko
+ endif
+ ko = ko-1
+ a(ko) = a(k)
+ ja(ko) = j
+ 4 continue
+c diagonal element has not been added yet.
+ if (test) then
+ ko = ko-1
+ a(ko) = scal
+ ja(ko) = ii
+ iw(ii) = ko
+ endif
+ 5 continue
+ ia(1) = ko
+ return
+c-----------------------------------------------------------------------
+c----------end-of-aplsca------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine apldia (nrow, job, a, ja, ia, diag, b, jb, ib, iw)
+ real*8 a(*), b(*), diag(nrow)
+ integer ja(*),jb(*), ia(nrow+1),ib(nrow+1), iw(*)
+c-----------------------------------------------------------------------
+c Adds a diagonal matrix to a general sparse matrix: B = A + Diag
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c job = integer. job indicator. Job=0 means get array b only
+c (i.e. assume that a has already been copied into array b,
+c or that algorithm is used in place. ) For all practical
+c purposes enter job=0 for an in-place call and job=1 otherwise
+c
+c Note: in case there are missing diagonal elements in A,
+c then the option job =0 will be ignored, since the algorithm
+c must modify the data structure (i.e. jb, ib) in this
+c situation.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c diag = diagonal matrix stored as a vector dig(1:n)
+c
+c on return:
+c----------
+c
+c b,
+c jb,
+c ib = resulting matrix B in compressed sparse row sparse format.
+c
+c
+c iw = integer work array of length n. On return iw will
+c contain the positions of the diagonal entries in the
+c output matrix. (i.e., a(iw(k)), ja(iw(k)), k=1,...n,
+c are the values/column indices of the diagonal elements
+c of the output matrix. ).
+c
+c Notes:
+c-------
+c 1) The column dimension of A is not needed.
+c 2) algorithm in place (b, jb, ib, can be the same as
+c a, ja, ia, on entry). See comments for parameter job.
+c
+c coded by Y. Saad. Latest version July, 19, 1990
+c-----------------------------------------------------------------
+ logical test
+c
+c copy integer arrays into b's data structure if required
+c
+ if (job .ne. 0) then
+ nnz = ia(nrow+1)-1
+ do 2 k=1, nnz
+ jb(k) = ja(k)
+ b(k) = a(k)
+ 2 continue
+ do 3 k=1, nrow+1
+ ib(k) = ia(k)
+ 3 continue
+ endif
+c
+c get positions of diagonal elements in data structure.
+c
+ call diapos (nrow,ja,ia,iw)
+c
+c count number of holes in diagonal and add diag(*) elements to
+c valid diagonal entries.
+c
+ icount = 0
+ do 1 j=1, nrow
+ if (iw(j) .eq. 0) then
+ icount = icount+1
+ else
+ b(iw(j)) = a(iw(j)) + diag(j)
+ endif
+ 1 continue
+c
+c if no diagonal elements to insert return
+c
+ if (icount .eq. 0) return
+c
+c shift the nonzero elements if needed, to allow for created
+c diagonal elements.
+c
+ ko = ib(nrow+1)+icount
+c
+c copy rows backward
+c
+ do 5 ii=nrow, 1, -1
+c
+c go through row ii
+c
+ k1 = ib(ii)
+ k2 = ib(ii+1)-1
+ ib(ii+1) = ko
+ test = (iw(ii) .eq. 0)
+ do 4 k = k2,k1,-1
+ j = jb(k)
+ if (test .and. (j .lt. ii)) then
+ test = .false.
+ ko = ko - 1
+ b(ko) = diag(ii)
+ jb(ko) = ii
+ iw(ii) = ko
+ endif
+ ko = ko-1
+ b(ko) = a(k)
+ jb(ko) = j
+ 4 continue
+c diagonal element has not been added yet.
+ if (test) then
+ ko = ko-1
+ b(ko) = diag(ii)
+ jb(ko) = ii
+ iw(ii) = ko
+ endif
+ 5 continue
+ ib(1) = ko
+ return
+c-----------------------------------------------------------------------
+c------------end-of-apldiag---------------------------------------------
+ end
diff --git a/BLASSM/makefile b/BLASSM/makefile
new file mode 100644
index 0000000..7fa9ff7
--- /dev/null
+++ b/BLASSM/makefile
@@ -0,0 +1,21 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+mvec.ex: rmatvec.o ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o mvec.ex rmatvec.o ../MATGEN/FDIF/functns.o ../libskit.a
+
+tester.ex: tester.o ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o tester.ex tester.o ../MATGEN/FDIF/functns.o ../libskit.a
+
+clean:
+ rm -f *.o *.ex core *.trace fort.* ftn??
+
+../MATGEN/FDIF/functns.o:
+ (cd ../MATGEN/FDIF; $(F77) $(FFLAGS) -c functns.f)
+
+../libskit.a:
+ (cd ..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
diff --git a/BLASSM/matvec.f b/BLASSM/matvec.f
new file mode 100644
index 0000000..60cbb9f
--- /dev/null
+++ b/BLASSM/matvec.f
@@ -0,0 +1,830 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c BASIC MATRIX-VECTOR OPERATIONS - MATVEC MODULE c
+c Matrix-vector Mulitiplications and Triang. Solves c
+c----------------------------------------------------------------------c
+c contents: (as of Nov 18, 1991) c
+c---------- c
+c 1) Matrix-vector products: c
+c--------------------------- c
+c amux : A times a vector. Compressed Sparse Row (CSR) format. c
+c amuxms: A times a vector. Modified Compress Sparse Row format. c
+c atmux : Transp(A) times a vector. CSR format. c
+c atmuxr: Transp(A) times a vector. CSR format. A rectangular. c
+c amuxe : A times a vector. Ellpack/Itpack (ELL) format. c
+c amuxd : A times a vector. Diagonal (DIA) format. c
+c amuxj : A times a vector. Jagged Diagonal (JAD) format. c
+c vbrmv : Sparse matrix-full vector product, in VBR format c
+c c
+c 2) Triangular system solutions: c
+c------------------------------- c
+c lsol : Unit Lower Triang. solve. Compressed Sparse Row (CSR) format.c
+c ldsol : Lower Triang. solve. Modified Sparse Row (MSR) format. c
+c lsolc : Unit Lower Triang. solve. Comp. Sparse Column (CSC) format. c
+c ldsolc: Lower Triang. solve. Modified Sparse Column (MSC) format. c
+c ldsoll: Lower Triang. solve with level scheduling. MSR format. c
+c usol : Unit Upper Triang. solve. Compressed Sparse Row (CSR) format.c
+c udsol : Upper Triang. solve. Modified Sparse Row (MSR) format. c
+c usolc : Unit Upper Triang. solve. Comp. Sparse Column (CSC) format. c
+c udsolc: Upper Triang. solve. Modified Sparse Column (MSC) format. c
+c----------------------------------------------------------------------c
+c 1) M A T R I X B Y V E C T O R P R O D U C T S c
+c----------------------------------------------------------------------c
+ subroutine amux (n, x, y, a,ja,ia)
+ real*8 x(*), y(*), a(*)
+ integer n, ja(*), ia(*)
+c-----------------------------------------------------------------------
+c A times a vector
+c-----------------------------------------------------------------------
+c multiplies a matrix by a vector using the dot product form
+c Matrix A is stored in compressed sparse row storage.
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c a, ja,
+c ia = input matrix in compressed sparse row format.
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=Ax
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ real*8 t
+ integer i, k
+c-----------------------------------------------------------------------
+ do 100 i = 1,n
+c
+c compute the inner product of row i with vector x
+c
+ t = 0.0d0
+ do 99 k=ia(i), ia(i+1)-1
+ t = t + a(k)*x(ja(k))
+ 99 continue
+c
+c store result in y(i)
+c
+ y(i) = t
+ 100 continue
+c
+ return
+c---------end-of-amux---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amuxms (n, x, y, a,ja)
+ real*8 x(*), y(*), a(*)
+ integer n, ja(*)
+c-----------------------------------------------------------------------
+c A times a vector in MSR format
+c-----------------------------------------------------------------------
+c multiplies a matrix by a vector using the dot product form
+c Matrix A is stored in Modified Sparse Row storage.
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c a, ja,= input matrix in modified compressed sparse row format.
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=Ax
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, k
+c-----------------------------------------------------------------------
+ do 10 i=1, n
+ y(i) = a(i)*x(i)
+ 10 continue
+ do 100 i = 1,n
+c
+c compute the inner product of row i with vector x
+c
+ do 99 k=ja(i), ja(i+1)-1
+ y(i) = y(i) + a(k) *x(ja(k))
+ 99 continue
+ 100 continue
+c
+ return
+c---------end-of-amuxm--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine atmux (n, x, y, a, ja, ia)
+ real*8 x(*), y(*), a(*)
+ integer n, ia(*), ja(*)
+c-----------------------------------------------------------------------
+c transp( A ) times a vector
+c-----------------------------------------------------------------------
+c multiplies the transpose of a matrix by a vector when the original
+c matrix is stored in compressed sparse row storage. Can also be
+c viewed as the product of a matrix by a vector when the original
+c matrix is stored in the compressed sparse column format.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c a, ja,
+c ia = input matrix in compressed sparse row format.
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=transp(A)*x
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, k
+c-----------------------------------------------------------------------
+c
+c zero out output vector
+c
+ do 1 i=1,n
+ y(i) = 0.0
+ 1 continue
+c
+c loop over the rows
+c
+ do 100 i = 1,n
+ do 99 k=ia(i), ia(i+1)-1
+ y(ja(k)) = y(ja(k)) + x(i)*a(k)
+ 99 continue
+ 100 continue
+c
+ return
+c-------------end-of-atmux----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine atmuxr (m, n, x, y, a, ja, ia)
+ real*8 x(*), y(*), a(*)
+ integer m, n, ia(*), ja(*)
+c-----------------------------------------------------------------------
+c transp( A ) times a vector, A can be rectangular
+c-----------------------------------------------------------------------
+c See also atmux. The essential difference is how the solution vector
+c is initially zeroed. If using this to multiply rectangular CSC
+c matrices by a vector, m number of rows, n is number of columns.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c m = column dimension of A
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c a, ja,
+c ia = input matrix in compressed sparse row format.
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=transp(A)*x
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, k
+c-----------------------------------------------------------------------
+c
+c zero out output vector
+c
+ do 1 i=1,m
+ y(i) = 0.0
+ 1 continue
+c
+c loop over the rows
+c
+ do 100 i = 1,n
+ do 99 k=ia(i), ia(i+1)-1
+ y(ja(k)) = y(ja(k)) + x(i)*a(k)
+ 99 continue
+ 100 continue
+c
+ return
+c-------------end-of-atmuxr---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amuxe (n,x,y,na,ncol,a,ja)
+ real*8 x(n), y(n), a(na,*)
+ integer n, na, ncol, ja(na,*)
+c-----------------------------------------------------------------------
+c A times a vector in Ellpack Itpack format (ELL)
+c-----------------------------------------------------------------------
+c multiplies a matrix by a vector when the original matrix is stored
+c in the ellpack-itpack sparse format.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c na = integer. The first dimension of arrays a and ja
+c as declared by the calling program.
+c ncol = integer. The number of active columns in array a.
+c (i.e., the number of generalized diagonals in matrix.)
+c a, ja = the real and integer arrays of the itpack format
+c (a(i,k),k=1,ncol contains the elements of row i in matrix
+c ja(i,k),k=1,ncol contains their column numbers)
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=y=A*x
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, j
+c-----------------------------------------------------------------------
+ do 1 i=1, n
+ y(i) = 0.0
+ 1 continue
+ do 10 j=1,ncol
+ do 25 i = 1,n
+ y(i) = y(i)+a(i,j)*x(ja(i,j))
+ 25 continue
+ 10 continue
+c
+ return
+c--------end-of-amuxe---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amuxd (n,x,y,diag,ndiag,idiag,ioff)
+ integer n, ndiag, idiag, ioff(idiag)
+ real*8 x(n), y(n), diag(ndiag,idiag)
+c-----------------------------------------------------------------------
+c A times a vector in Diagonal storage format (DIA)
+c-----------------------------------------------------------------------
+c multiplies a matrix by a vector when the original matrix is stored
+c in the diagonal storage format.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c ndiag = integer. The first dimension of array adiag as declared in
+c the calling program.
+c idiag = integer. The number of diagonals in the matrix.
+c diag = real array containing the diagonals stored of A.
+c idiag = number of diagonals in matrix.
+c diag = real array of size (ndiag x idiag) containing the diagonals
+c
+c ioff = integer array of length idiag, containing the offsets of the
+c diagonals of the matrix:
+c diag(i,k) contains the element a(i,i+ioff(k)) of the matrix.
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=A*x
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer j, k, io, i1, i2
+c-----------------------------------------------------------------------
+ do 1 j=1, n
+ y(j) = 0.0d0
+ 1 continue
+ do 10 j=1, idiag
+ io = ioff(j)
+ i1 = max0(1,1-io)
+ i2 = min0(n,n-io)
+ do 9 k=i1, i2
+ y(k) = y(k)+diag(k,j)*x(k+io)
+ 9 continue
+ 10 continue
+c
+ return
+c----------end-of-amuxd-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amuxj (n, x, y, jdiag, a, ja, ia)
+ integer n, jdiag, ja(*), ia(*)
+ real*8 x(n), y(n), a(*)
+c-----------------------------------------------------------------------
+c A times a vector in Jagged-Diagonal storage format (JAD)
+c-----------------------------------------------------------------------
+c multiplies a matrix by a vector when the original matrix is stored
+c in the jagged diagonal storage format.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = row dimension of A
+c x = real array of length equal to the column dimension of
+c the A matrix.
+c jdiag = integer. The number of jadded-diagonals in the data-structure.
+c a = real array containing the jadded diagonals of A stored
+c in succession (in decreasing lengths)
+c j = integer array containing the colum indices of the
+c corresponding elements in a.
+c ia = integer array containing the lengths of the jagged diagonals
+c
+c on return:
+c-----------
+c y = real array of length n, containing the product y=A*x
+c
+c Note:
+c-------
+c Permutation related to the JAD format is not performed.
+c this can be done by:
+c call permvec (n,y,y,iperm)
+c after the call to amuxj, where iperm is the permutation produced
+c by csrjad.
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, ii, k1, len, j
+c-----------------------------------------------------------------------
+ do 1 i=1, n
+ y(i) = 0.0d0
+ 1 continue
+ do 70 ii=1, jdiag
+ k1 = ia(ii)-1
+ len = ia(ii+1)-k1-1
+ do 60 j=1,len
+ y(j)= y(j)+a(k1+j)*x(ja(k1+j))
+ 60 continue
+ 70 continue
+c
+ return
+c----------end-of-amuxj-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine vbrmv(nr, nc, ia, ja, ka, a, kvstr, kvstc, x, b)
+c-----------------------------------------------------------------------
+ integer nr, nc, ia(nr+1), ja(*), ka(*), kvstr(nr+1), kvstc(*)
+ real*8 a(*), x(*), b(*)
+c-----------------------------------------------------------------------
+c Sparse matrix-full vector product, in VBR format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c nr, nc = number of block rows and columns in matrix A
+c ia,ja,ka,a,kvstr,kvstc = matrix A in variable block row format
+c x = multiplier vector in full format
+c
+c On return:
+c---------------
+c b = product of matrix A times vector x in full format
+c
+c Algorithm:
+c---------------
+c Perform multiplication by traversing a in order.
+c
+c-----------------------------------------------------------------------
+c-----local variables
+ integer n, i, j, ii, jj, k, istart, istop
+ real*8 xjj
+c---------------------------------
+ n = kvstc(nc+1)-1
+ do i = 1, n
+ b(i) = 0.d0
+ enddo
+c---------------------------------
+ k = 1
+ do i = 1, nr
+ istart = kvstr(i)
+ istop = kvstr(i+1)-1
+ do j = ia(i), ia(i+1)-1
+ do jj = kvstc(ja(j)), kvstc(ja(j)+1)-1
+ xjj = x(jj)
+ do ii = istart, istop
+ b(ii) = b(ii) + xjj*a(k)
+ k = k + 1
+ enddo
+ enddo
+ enddo
+ enddo
+c---------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+c----------------------end-of-vbrmv-------------------------------------
+c-----------------------------------------------------------------------
+c----------------------------------------------------------------------c
+c 2) T R I A N G U L A R S Y S T E M S O L U T I O N S c
+c----------------------------------------------------------------------c
+ subroutine lsol (n,x,y,al,jal,ial)
+ integer n, jal(*),ial(n+1)
+ real*8 x(n), y(n), al(*)
+c-----------------------------------------------------------------------
+c solves L x = y ; L = lower unit triang. / CSR format
+c-----------------------------------------------------------------------
+c solves a unit lower triangular system by standard (sequential )
+c forward elimination - matrix stored in CSR format.
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right side.
+c
+c al,
+c jal,
+c ial, = Lower triangular matrix stored in compressed sparse row
+c format.
+c
+c On return:
+c-----------
+c x = The solution of L x = y.
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ x(1) = y(1)
+ do 150 k = 2, n
+ t = y(k)
+ do 100 j = ial(k), ial(k+1)-1
+ t = t-al(j)*x(jal(j))
+ 100 continue
+ x(k) = t
+ 150 continue
+c
+ return
+c----------end-of-lsol--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ldsol (n,x,y,al,jal)
+ integer n, jal(*)
+ real*8 x(n), y(n), al(*)
+c-----------------------------------------------------------------------
+c Solves L x = y L = triangular. MSR format
+c-----------------------------------------------------------------------
+c solves a (non-unit) lower triangular system by standard (sequential)
+c forward elimination - matrix stored in MSR format
+c with diagonal elements already inverted (otherwise do inversion,
+c al(1:n) = 1.0/al(1:n), before calling ldsol).
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right hand side.
+c
+c al,
+c jal, = Lower triangular matrix stored in Modified Sparse Row
+c format.
+c
+c On return:
+c-----------
+c x = The solution of L x = y .
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ x(1) = y(1)*al(1)
+ do 150 k = 2, n
+ t = y(k)
+ do 100 j = jal(k), jal(k+1)-1
+ t = t - al(j)*x(jal(j))
+ 100 continue
+ x(k) = al(k)*t
+ 150 continue
+ return
+c----------end-of-ldsol-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine lsolc (n,x,y,al,jal,ial)
+ integer n, jal(*),ial(*)
+ real*8 x(n), y(n), al(*)
+c-----------------------------------------------------------------------
+c SOLVES L x = y ; where L = unit lower trang. CSC format
+c-----------------------------------------------------------------------
+c solves a unit lower triangular system by standard (sequential )
+c forward elimination - matrix stored in CSC format.
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real*8 array containg the right side.
+c
+c al,
+c jal,
+c ial, = Lower triangular matrix stored in compressed sparse column
+c format.
+c
+c On return:
+c-----------
+c x = The solution of L x = y.
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ do 140 k=1,n
+ x(k) = y(k)
+ 140 continue
+ do 150 k = 1, n-1
+ t = x(k)
+ do 100 j = ial(k), ial(k+1)-1
+ x(jal(j)) = x(jal(j)) - t*al(j)
+ 100 continue
+ 150 continue
+c
+ return
+c----------end-of-lsolc-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ldsolc (n,x,y,al,jal)
+ integer n, jal(*)
+ real*8 x(n), y(n), al(*)
+c-----------------------------------------------------------------------
+c Solves L x = y ; L = nonunit Low. Triang. MSC format
+c-----------------------------------------------------------------------
+c solves a (non-unit) lower triangular system by standard (sequential)
+c forward elimination - matrix stored in Modified Sparse Column format
+c with diagonal elements already inverted (otherwise do inversion,
+c al(1:n) = 1.0/al(1:n), before calling ldsol).
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right hand side.
+c
+c al,
+c jal,
+c ial, = Lower triangular matrix stored in Modified Sparse Column
+c format.
+c
+c On return:
+c-----------
+c x = The solution of L x = y .
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ do 140 k=1,n
+ x(k) = y(k)
+ 140 continue
+ do 150 k = 1, n
+ x(k) = x(k)*al(k)
+ t = x(k)
+ do 100 j = jal(k), jal(k+1)-1
+ x(jal(j)) = x(jal(j)) - t*al(j)
+ 100 continue
+ 150 continue
+c
+ return
+c----------end-of-lsolc------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ldsoll (n,x,y,al,jal,nlev,lev,ilev)
+ integer n, nlev, jal(*), ilev(nlev+1), lev(n)
+ real*8 x(n), y(n), al(*)
+c-----------------------------------------------------------------------
+c Solves L x = y L = triangular. Uses LEVEL SCHEDULING/MSR format
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right hand side.
+c
+c al,
+c jal, = Lower triangular matrix stored in Modified Sparse Row
+c format.
+c nlev = number of levels in matrix
+c lev = integer array of length n, containing the permutation
+c that defines the levels in the level scheduling ordering.
+c ilev = pointer to beginning of levels in lev.
+c the numbers lev(i) to lev(i+1)-1 contain the row numbers
+c that belong to level number i, in the level shcheduling
+c ordering.
+c
+c On return:
+c-----------
+c x = The solution of L x = y .
+c--------------------------------------------------------------------
+ integer ii, jrow, i
+ real*8 t
+c
+c outer loop goes through the levels. (SEQUENTIAL loop)
+c
+ do 150 ii=1, nlev
+c
+c next loop executes within the same level. PARALLEL loop
+c
+ do 100 i=ilev(ii), ilev(ii+1)-1
+ jrow = lev(i)
+c
+c compute inner product of row jrow with x
+c
+ t = y(jrow)
+ do 130 k=jal(jrow), jal(jrow+1)-1
+ t = t - al(k)*x(jal(k))
+ 130 continue
+ x(jrow) = t*al(jrow)
+ 100 continue
+ 150 continue
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine usol (n,x,y,au,jau,iau)
+ integer n, jau(*),iau(n+1)
+ real*8 x(n), y(n), au(*)
+c-----------------------------------------------------------------------
+c Solves U x = y U = unit upper triangular.
+c-----------------------------------------------------------------------
+c solves a unit upper triangular system by standard (sequential )
+c backward elimination - matrix stored in CSR format.
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right side.
+c
+c au,
+c jau,
+c iau, = Lower triangular matrix stored in compressed sparse row
+c format.
+c
+c On return:
+c-----------
+c x = The solution of U x = y .
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ x(n) = y(n)
+ do 150 k = n-1,1,-1
+ t = y(k)
+ do 100 j = iau(k), iau(k+1)-1
+ t = t - au(j)*x(jau(j))
+ 100 continue
+ x(k) = t
+ 150 continue
+c
+ return
+c----------end-of-usol--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine udsol (n,x,y,au,jau)
+ integer n, jau(*)
+ real*8 x(n), y(n),au(*)
+c-----------------------------------------------------------------------
+c Solves U x = y ; U = upper triangular in MSR format
+c-----------------------------------------------------------------------
+c solves a non-unit upper triangular matrix by standard (sequential )
+c backward elimination - matrix stored in MSR format.
+c with diagonal elements already inverted (otherwise do inversion,
+c au(1:n) = 1.0/au(1:n), before calling).
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real array containg the right side.
+c
+c au,
+c jau, = Lower triangular matrix stored in modified sparse row
+c format.
+c
+c On return:
+c-----------
+c x = The solution of U x = y .
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ x(n) = y(n)*au(n)
+ do 150 k = n-1,1,-1
+ t = y(k)
+ do 100 j = jau(k), jau(k+1)-1
+ t = t - au(j)*x(jau(j))
+ 100 continue
+ x(k) = au(k)*t
+ 150 continue
+c
+ return
+c----------end-of-udsol-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine usolc (n,x,y,au,jau,iau)
+ real*8 x(*), y(*), au(*)
+ integer n, jau(*),iau(*)
+c-----------------------------------------------------------------------
+c SOUVES U x = y ; where U = unit upper trang. CSC format
+c-----------------------------------------------------------------------
+c solves a unit upper triangular system by standard (sequential )
+c forward elimination - matrix stored in CSC format.
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real*8 array containg the right side.
+c
+c au,
+c jau,
+c iau, = Uower triangular matrix stored in compressed sparse column
+c format.
+c
+c On return:
+c-----------
+c x = The solution of U x = y.
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ do 140 k=1,n
+ x(k) = y(k)
+ 140 continue
+ do 150 k = n,1,-1
+ t = x(k)
+ do 100 j = iau(k), iau(k+1)-1
+ x(jau(j)) = x(jau(j)) - t*au(j)
+ 100 continue
+ 150 continue
+c
+ return
+c----------end-of-usolc-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine udsolc (n,x,y,au,jau)
+ integer n, jau(*)
+ real*8 x(n), y(n), au(*)
+c-----------------------------------------------------------------------
+c Solves U x = y ; U = nonunit Up. Triang. MSC format
+c-----------------------------------------------------------------------
+c solves a (non-unit) upper triangular system by standard (sequential)
+c forward elimination - matrix stored in Modified Sparse Column format
+c with diagonal elements already inverted (otherwise do inversion,
+c auuuul(1:n) = 1.0/au(1:n), before calling ldsol).
+c-----------------------------------------------------------------------
+c
+c On entry:
+c----------
+c n = integer. dimension of problem.
+c y = real*8 array containg the right hand side.
+c
+c au,
+c jau, = Upper triangular matrix stored in Modified Sparse Column
+c format.
+c
+c On return:
+c-----------
+c x = The solution of U x = y .
+c--------------------------------------------------------------------
+c local variables
+c
+ integer k, j
+ real*8 t
+c-----------------------------------------------------------------------
+ do 140 k=1,n
+ x(k) = y(k)
+ 140 continue
+ do 150 k = n,1,-1
+ x(k) = x(k)*au(k)
+ t = x(k)
+ do 100 j = jau(k), jau(k+1)-1
+ x(jau(j)) = x(jau(j)) - t*au(j)
+ 100 continue
+ 150 continue
+c
+ return
+c----------end-of-udsolc------------------------------------------------
+c-----------------------------------------------------------------------
+ end
diff --git a/BLASSM/rmatvec.f b/BLASSM/rmatvec.f
new file mode 100644
index 0000000..c34cbf9
--- /dev/null
+++ b/BLASSM/rmatvec.f
@@ -0,0 +1,202 @@
+ program rmatvec
+ parameter (nmax=10000, nzmax=80000)
+ implicit real*8 (a-h,o-z)
+c-----------------------------------------------------------------------
+c This test program tests all the subroutines in matvec.
+c it generates matrices and transforms them in appropriate formats
+c and then call the appropriate routines.
+c-----------------------------------------------------------------------
+ integer ia1(nmax), ia2(nmax), ja1(nzmax), ja2(nzmax),
+ * jad(nzmax), iwk1(nmax), iwk2(nmax), idim(11), ioff(10)
+ real*8 a1(nzmax), a2(nzmax),
+ * x(nmax), y(nmax), y0(nmax), y1(nmax), stencil(100)
+c common used only to generate nonsymmetric matrices
+c common /gam/ gamma, gamma1, cvar
+ data idim /4, 10, 15, 40, 50, 60, 70, 80, 90, 100, 200 /
+ data iout /6/
+c
+c initialize common gam
+c
+c gamma = 0.5
+c gamma1 = 1.0
+c cvar = 1.0
+c-----------------------------------------------------------------------
+c ii loop corresponds to size of problem
+c-----------------------------------------------------------------------
+ do 100 ii = 1, 3
+ write (iout,*) '---------------- ii ',ii,'--------------------'
+ nfree = 1
+ nx = idim(ii)
+ ny = nx
+c-----------------------------------------------------------------------
+c jj loop corresponds to 2-D and 3-D problems.
+c-----------------------------------------------------------------------
+ do 150 jj=1, 2
+ write (iout,*) ' ----------- jj ',jj,' -------------'
+ nz = 1
+ if (jj .eq. 2) nz = 10
+c
+c call matrix generation routine --
+c (strange to use block version to generate 1 x 1 blocks...)
+c
+ call gen57bl (nx,ny,nz,1,1,n,a1,ja1,ia1,ia2,stencil)
+c
+c initialize x
+c
+ do 1 j=1, n
+ x(j) = real(j)
+ 1 continue
+c
+c initial call to get `` exact '' answer in y0
+c
+ call amux(n,x,y0, a1, ja1, ia1)
+c-----------------------------------------------------------------------
+c TESTING AMUXE
+c-----------------------------------------------------------------------
+c
+c convert to itpack format -----
+c
+ call csrell (n,a1,ja1,ia1,7,a2,jad,n,ndiag,ierr)
+ call amuxe (n, x, y, n, ndiag, a2,jad)
+ call errpr (n, y, y0,iout,'amuxe ')
+c-----------------------------------------------------------------------
+c TESTING AMUXD
+c-----------------------------------------------------------------------
+c
+c convert to diagonal format
+c
+ idiag = 7
+ call csrdia (n, idiag,10,a1, ja1, ia1, nmax, a2,
+ * ioff, a2, ja2, ia2, jad)
+ call amuxd (n,x,y,a2,nmax,idiag,ioff)
+ call errpr (n, y, y0,iout,'amuxd ')
+c-----------------------------------------------------------------------
+c TESTING ATMUX
+c-----------------------------------------------------------------------
+c
+c convert to csc format (transpose)
+c
+ call csrcsc (n,1,1,a1,ja1,ia1,a2,ja2,ia2)
+ call atmux (n, x, y, a2, ja2, ia2)
+ call errpr (n, y, y0,iout,'atmux ')
+c-----------------------------------------------------------------------
+c TESTING AMUXJ
+c-----------------------------------------------------------------------
+c
+c convert to jagged diagonal format
+c
+ call csrjad (n,a1,ja1,ia1, jdiag, jad, a2, ja2, ia2)
+ call amuxj (n, x, y, jdiag, a2, ja2, ia2)
+ call dvperm (n, y, jad)
+ call errpr (n, y, y0,iout,'amuxj ')
+c
+c convert back
+
+ call jadcsr (n, jdiag, a2, ja2, ia2, jad, a1, ja1, ia1)
+ call amux (n, x, y, a1, ja1, ia1)
+ call errpr (n, y, y0,iout,'jadcsr')
+c-----------------------------------------------------------------------
+c-----------------------------------------------------------------------
+c triangular systems solutions
+c-----------------------------------------------------------------------
+c TESTING LDSOL
+c-----------------------------------------------------------------------
+ call getl (n, a1, ja1, ia1, a2, ja2, ia2)
+ call amux (n,x,y0, a2, ja2, ia2)
+ call atmux(n,x,y1, a2, ja2, ia2)
+ call csrmsr (n, a2, ja2, ia2, a2, ja2, y, iwk2)
+ do 2 k=1,n
+ a2(k) = 1.0d0/ a2(k)
+ 2 continue
+ call ldsol (n, y, y0, a2, ja2)
+ call errpr (n, x, y, iout,'ldsol ')
+c-----------------------------------------------------------------------
+c TESTING LDSOLL
+c-----------------------------------------------------------------------
+ call levels (n, ja2, ja2, nlev, jad, iwk1, iwk2)
+ call ldsoll (n, y, y0, a2, ja2, nlev, jad, iwk1)
+ call errpr (n, x, y, iout,'ldsoll')
+c-----------------------------------------------------------------------
+c TESTING UDSOLC
+c-----------------------------------------------------------------------
+c here we take advantage of the fact that the MSR format for U
+c is the MSC format for L
+c
+ call udsolc (n, y, y1, a2, ja2)
+ call errpr (n, x, y, iout,'udsolc')
+c-----------------------------------------------------------------------
+c TESTING LSOL
+c-----------------------------------------------------------------------
+c here we exploit the fact that with MSR format a, ja, ja is actually
+c the correct data structure for the strict lower triangular part of
+c the CSR format. First rescale matrix.
+c
+ scal = 0.1
+ do 3 k=ja2(1), ja2(n+1)-1
+ a2(k)=a2(k)*scal
+ 3 continue
+ call amux(n, x, y0, a2, ja2, ja2)
+ do 4 j=1,n
+ y0(j) = x(j) + y0(j)
+ 4 continue
+ call lsol (n, y, y0, a2, ja2, ja2)
+ call errpr (n, x, y, iout,'lsol ')
+c-----------------------------------------------------------------------
+c TESTING UDSOL
+c-----------------------------------------------------------------------
+ call getu (n, a1, ja1, ia1, a2, ja2, ia2)
+ call amux (n,x,y0, a2, ja2, ia2)
+ call atmux(n,x,y1, a2, ja2, ia2)
+ call csrmsr (n, a2, ja2, ia2, a2, ja2, y, jad)
+ do 5 k=1,n
+ a2(k) = 1.0d0/ a2(k)
+ 5 continue
+ call udsol (n, y, y0, a2, ja2)
+ call errpr (n, x, y, iout,'udsol ')
+c-----------------------------------------------------------------------
+c TESTING LDSOLC
+c-----------------------------------------------------------------------
+c here we take advantage of the fact that the MSR format for L
+c is the MSC format for U
+c
+ call ldsolc (n, y, y1, a2, ja2)
+ call errpr (n, x, y, iout,'ldsolc')
+c-----------------------------------------------------------------------
+c TESTING USOL
+c-----------------------------------------------------------------------
+c here we exploit the fact that with MSR format a, ja, ja is actually
+c the correct data structure for the strict lower triangular part of
+c the CSR format. First rescale matrix.
+c
+ scal = 0.1
+ do 6 k=ja2(1), ja2(n+1)-1
+ a2(k)=a2(k)*scal
+ 6 continue
+ call amux(n, x, y1, a2, ja2, ja2)
+ do 7 j=1,n
+ y1(j) = x(j) + y1(j)
+ 7 continue
+ call usol (n, y, y1, a2, ja2, ja2)
+ call errpr (n, x, y, iout,'usol ')
+c-----------------------------------------------------------------------
+c -- END --
+c-----------------------------------------------------------------------
+ 150 continue
+ 100 continue
+ stop
+c---------------end-of-main---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine errpr (n, y, y1,iout,msg)
+ real*8 y(*), y1(*), t, sqrt
+ character*6 msg
+ t = 0.0d0
+ do 1 k=1,n
+ t = t+(y(k)-y1(k))**2
+ 1 continue
+ t = sqrt(t)
+ write (iout,*) ' 2-norm of difference in ',msg,' =', t
+ return
+ end
+
diff --git a/BLASSM/tester.f b/BLASSM/tester.f
new file mode 100644
index 0000000..5b28fe7
--- /dev/null
+++ b/BLASSM/tester.f
@@ -0,0 +1,172 @@
+ program matprod
+c-----------------------------------------------------------------------
+c test program for some routines in BLASSM.f
+c-----------------------------------------------------------------------
+c Last update: May 2, 1994
+c-----------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ parameter (nxmax = 30,nmx = nxmax*nxmax,nzmax=7*nmx)
+ integer ia(nmx+1),ib(nmx+1),ic(nzmax),
+ * ja(nzmax),jb(nzmax),jc(nzmax),iw(nmx)
+c-----------------------------------------------------------------------
+ real*8 a(nzmax),b(nzmax),c(nzmax),
+ * x(nmx),y(nmx),y1(nmx),rhs(nmx), al(6)
+ character title*71,key*8,type*3
+
+ nx = 20
+ ny = 20
+ nz = 1
+ al(1) = 1.0D0
+ al(2) = 0.0D0
+ al(3) = 2.3D1
+ al(4) = 0.4D0
+ al(5) = 0.0D0
+ al(6) = 8.2D-2
+ iout = 8
+c-----------------------------------------------------------------------
+ call gen57pt (nx,ny,nz,al,0,n,a,ja,ia,iw,rhs)
+ call gen57pt (ny,nx,nz,al,0,n,b,jb,ib,iw,rhs)
+c
+ s = 3.812
+c
+ call aplsb1(n,n,a,ja,ia,s,b,jb,ib,c,jc,ic,nzmax,ierr)
+ if (ierr .ne. 0) print *,' ierr = ',ierr
+c
+c call dump (1,n,.true.,c,jc,ic,9)
+c
+ do 1 k=1,n
+ x(k) = real(k)/real(n)
+ 1 continue
+c
+ call ope (n,x,y1,a,ja,ia)
+ call ope (n,x,y,b,jb,ib)
+ do 2 j=1, n
+ y1(j) = s*y(j) + y1(j)
+ 2 continue
+c
+ call ope (n,x,y,c,jc,ic)
+c------------------------------------------------------
+ write (6,*) ' ------------ checking APLSB --------------'
+ call ydfnorm(n,y1,y,6)
+c------------------------------------------------------
+
+ type = '--------'
+ title=' test matrix for blassm c = a+b '
+ key = 'rua'
+c
+ ifmt = 103
+c
+ job = -1
+c--------
+ do 121 jj=1,2
+ write (9,*) 'DUMP A____________________________'
+ call dump (1,n,.true.,a,ja,ia,9)
+ write (9,*) 'DUMP B____________________________'
+ call dump (1,n,.true.,b,jb,ib,9)
+ call apmbt(n,n,job,a,ja,ia,b,jb,ib,c,jc,ic,nzmax,iw,ierr)
+ write (9,*) 'DUMP C____________________________'
+ call dump (1,n,.true.,c,jc,ic,9)
+ if (ierr .ne. 0) print *,' ierr = ',ierr
+ call ope (n,x,y1,a,ja,ia)
+ call opet (n,x,y,b,jb,ib)
+ s = real(job)
+ do 3 j=1, n
+ 3 y1(j) = y1(j) + s*y(j)
+c
+ call ope (n,x,y,c,jc,ic)
+c------------xs------------------------------------------
+ write (6,*) ' '
+ write (6,*) ' ------------ checking APMBT---------------'
+ write (6,*) ' ------------ with JOB = ',job,' -------------'
+ call ydfnorm(n,y1,y,6)
+c------------------------------------------------------
+ job = job + 2
+ 121 continue
+c
+ type = '--------'
+ title=' test matrix for blassm c = a+b^T '
+c
+c
+c
+ s = 0.1232445
+ call aplsbt(n,n,a,ja,ia,s,b,jb,ib,c,jc,ic,nzmax,iw,ierr)
+c
+ if (ierr .ne. 0) print *,' ierr = ',ierr
+ call ope (n,x,y1,a,ja,ia)
+ call opet (n,x,y,b,jb,ib)
+ do 4 j=1, n
+ 4 y1(j) = y1(j) + s*y(j)
+c
+ call ope (n,x,y,c,jc,ic)
+c------------------------------------------------------
+c------------------------------------------------------
+ write (6,*) ' '
+ write (6,*) ' ------------ checking APLSBT---------------'
+ call ydfnorm(n,y1,y,6)
+c-----------------------------------------------------------------------
+c testing products
+c-----------------------------------------------------------------------
+ job = 1
+ call amub (n,n,job,a,ja,ia,b,jb,ib,c,jc,ic,nzmax,iw,ierr)
+c
+ if (ierr .ne. 0) print *,' ierr = ',ierr
+ call ope (n,x,y,b,jb,ib)
+ call ope (n,y,y1,a,ja,ia)
+c
+ call ope (n,x,y,c,jc,ic)
+c-----------------------------------------------------------------------
+ write (6,*) ' '
+ write (6,*) ' ------------ checking AMUB ---------------'
+ call ydfnorm(n,y1,y,6)
+c
+ stop
+ end
+c
+c
+ subroutine ope (n,x,y,a,ja,ia)
+ implicit real*8 (a-h,o-z)
+ real*8 x(1),y(1),a(1)
+ integer ia(*),ja(*)
+c sparse matrix * vector multiplication
+c
+ do 100 i=1,n
+ k1 = ia(i)
+ k2 = ia(i+1) -1
+ y(i) = 0.0
+ do 99 k=k1,k2
+ y(i) = y(i) + a(k)*x(ja(k))
+ 99 continue
+ 100 continue
+ return
+ end
+c
+ subroutine opet (n,x,y,a,ja,ia)
+ implicit real*8 (a-h,o-z)
+ real*8 x(1),y(1),a(1)
+ integer ia(*),ja(*)
+c sparse matrix * vector multiplication
+c
+ do 1 j=1, n
+ 1 y(j) = 0.0d0
+c
+ do 100 i=1,n
+ do 99 k=ia(i), ia(i+1)-1
+ y(ja(k)) = y(ja(k)) + x(i)*a(k)
+ 99 continue
+ 100 continue
+ return
+ end
+c
+ subroutine ydfnorm(n,y1,y,iout)
+ implicit real*8 (a-h,o-z)
+ real*8 y(*),y1(*)
+c
+ t = 0.0d0
+ do 21 k=1,n
+ t = t+(y(k)-y1(k))**2
+ 21 continue
+ t = sqrt(t)
+ write(iout,*) '2-norm of error (exact answer-tested answer)=',t
+c-----------------------------------------------------------------------
+ return
+ end
diff --git a/DOC/QUICK_REF b/DOC/QUICK_REF
new file mode 100644
index 0000000..20a30cf
--- /dev/null
+++ b/DOC/QUICK_REF
@@ -0,0 +1,200 @@
+c-------------------------------------------------------------------------------c
+c c
+c QUICK REFERENCE c
+c c
+c-------------------------------------------------------------------------------c
+c For convenience we list here the most important subroutines c
+c in the various modules of SPARSKIT. More detailed information can be c
+c found either in the body of the paper or in the documentation of the package.c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c FORMATS Module c
+c===============================================================================c
+c c
+c CSRDNS : converts a row-stored sparse matrix into the dense format. c
+c DNSCSR : converts a dense matrix to a sparse storage format. c
+c COOCSR : converts coordinate to to csr format c
+c COICSR : in-place conversion of coordinate to csr format c
+c CSRCOO : converts compressed sparse row to coordinate format. c
+c CSRSSR : converts compressed sparse row to symmetric sparse row format. c
+c SSRCSR : converts symmetric sparse row to compressed sparse row format. c
+c CSRELL : converts compressed sparse row to Ellpack format c
+c ELLCSR : converts Ellpack format to compressed sparse row format. c
+c CSRMSR : converts compressed sparse row format to modified sparse c
+c row format. c
+c MSRCSR : converts modified sparse row format to compressed sparse c
+c row format. c
+c CSRCSC : converts compressed sparse row format to compressed sparse c
+c column format (transposition). c
+c CSRDIA : converts the compressed sparse row format into the diagonal c
+c format. c
+c DIACSR : converts the diagonal format into the compressed sparse row c
+c format. c
+c BSRCSR : converts the block-row sparse format into the compressed c
+c sparse row format. c
+c CSRBSR : converts the compressed sparse row format into the block-row c
+c sparse format. c
+c CSRBND : converts the compressed sparse row format into the banded c
+c format (Linpack style). c
+c BNDCSR : converts the banded format (Linpack style) into the compressed c
+c sparse row storage. c
+c CSRSSK : converts the compressed sparse row format to the symmetric c
+c skyline format c
+c SSKSSR : converts symmetric skyline format to symmetric sparse row format. c
+c CSRJAD : converts the csr format into the jagged diagonal format c
+c JADCSR : converts the jagged-diagonal format into the csr format c
+c COOELL : converts the coordinate format into the Ellpack/Itpack format. c
+c CSRVBR : converts the compressed sparse row format into the c
+c variable block row format. c
+c VBRCSR : converts the variable block row format into the c
+c compressed sparse row format. c
+c CSORTED : Checks if matrix in CSR format is sorted by columns. c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c UNARY Module c
+c===============================================================================c
+c c
+c SUBMAT : extracts a submatrix from a sparse matrix. c
+c FILTER : filters elements from a matrix according to their magnitude. c
+c FILTERM: Same as above, but for the MSR format. c
+c TRANSP : in-place transposition routine (see also CSRCSC in formats) c
+c GETELM : returns a(i,j) for any (i,j) from a CSR-stored matrix. c
+c COPMAT : copies a matrix into another matrix (both stored csr). c
+c MSRCOP : copies a matrix in MSR format into a matrix in MSR format. c
+c GETELM : returns a(i,j) for any (i,j) from a CSR-stored matrix. c
+c GETDIA : extracts a specified diagonal from a matrix. c
+c GETL : extracts lower triangular part. c
+c GETU : extracts upper triangular part. c
+c LEVELS : gets the level scheduling structure for lower triangular matrices. c
+c AMASK : extracts C = A * M c
+c RPERM : permutes the rows of a matrix (B = P A) c
+c CPERM : permutes the columns of a matrix (B = A Q) c
+c DPERM : permutes a matrix (B = P A Q) given two permutations P, Q c
+c DPERM2 : general submatrix permutation/extraction routine. c
+c DMPERM : symmetric permutation of row and column (B=PAP') in MSR fmt. c
+c DVPERM : permutes a vector (in-place). c
+c IVPERM : permutes an integer vector (in-place). c
+c RETMX : returns the max absolute value in each row of the matrix. c
+c DIAPOS : returns the positions of the diagonal elements in A. c
+c EXTBDG : extracts the main diagonal blocks of a matrix. c
+c GETBWD : returns the bandwidth information on a matrix. c
+c BLKFND : finds the block-size of a matrix. c
+c BLKCHK : checks whether a given integer is the block size of A. c
+c INFDIA : obtains information on the diagonals of A. c
+c AMUBDG : computes the number of nonzero elements in each row of A*B. c
+c APLBDG : computes the number of nonzero elements in each row of A+B. c
+c RNRMS : computes the norms of the rows of A. c
+c CNRMS : computes the norms of the columns of A. c
+c ROSCAL : scales the rows of a matrix by their norms. c
+c COSCAL : scales the columns of a matrix by their norms. c
+c ADDBLK : adds a matrix B into a block of A. c
+c GET1UP : collects the first elements of each row of the upper c
+c triangular portion of the matrix. c
+c XTROWS : extracts given rows from a matrix in CSR format. c
+c CSRKVSTR : Finds block row partitioning of matrix in CSR format c
+c CSRKVSTC : Finds block column partitioning of matrix in CSR format c
+c KVSTMERGE: Merges block partitionings, for conformal row/col pattern c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c INOUT Module c
+c===============================================================================c
+c c
+c READMT : reads matrices in the boeing/Harewell format. c
+c PRTMT : prints matrices in the boeing/Harewell format. c
+c DUMP : prints rows of a matrix, in a readable format. c
+c PLTMT : produces a 'pic' file for plotting a sparse matrix. c
+c PSPLTM : Generates a post-script plot of the non-zero pattern of A. c
+c SMMS : Write the matrx in a format used in SMMS package. c
+c READSM : Reads matrices in coordinate format (as in SMMS package). c
+c READSK : Reads matrices in CSR format (simplified H/B formate). c
+c SKIT : Writes matrices to a file, format same as above. c
+c PRTUNF : Writes matrices (in CSR format) unformatted. c
+c READUNF : Reads unformatted data of matrices (in CSR format). c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c INFO Module c
+c===============================================================================c
+c c
+c DINFO1 : obtains a number of statistics on a sparse matrix. c
+c VBRINFO: Print info on matrix in variable block row format c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c MATGEN Module c
+c===============================================================================c
+c c
+c GEN57PT : generates 5-point and 7-point matrices. c
+c GEN57BL : generates block 5-point and 7-point matrices. c
+c GENFEA : generates finite element matrices in assembled form. c
+c GENFEU : generates finite element matrices in unassembled form. c
+c ASSMB1 : assembles an unassembled matrix (as produced by genfeu). c
+c MATRF2 : Routines for generating sparse matrices by Zlatev et al. c
+c DCN : Routines for generating sparse matrices by Zlatev et al. c
+c ECN : Routines for generating sparse matrices by Zlatev et al. c
+c MARKGEN : subroutine to produce a Markov chain matrix for a random walk. c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c BLASSM Module c
+c===============================================================================c
+c c
+c AMUB : computes C = A*B c
+c APLB : computes C = A+B c
+c APLSB : computes C = A + s B c
+c APMBT : Computes C = A +(-) B^T c
+c APLSBT : Computes C = A + s * B^T c
+c DIAMUA : Computes C = Diag * A c
+c AMUDIA : Computes C = A* Diag c
+c APLDIA : Computes C = A + Diag c
+c APLSCA : Computes A:= A + s I (s = scalar) c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c MATVEC Module c
+c===============================================================================c
+c c
+c AMUX : A times a vector. Compressed Sparse Row (CSR) format. c
+c ATMUX : A^T times a vector. CSR format. c
+c AMUXE : A times a vector. Ellpack/Itpack (ELL) format. c
+c AMUXD : A times a vector. Diagonal (DIA) format. c
+c AMUXJ : A times a vector. Jagged Diagonal (JAD) format. c
+c VBRMV : Sparse matrix-full vector product, in VBR format c
+c c
+c LSOL : Unit lower triangular system solution. Compressed Sparse Row c
+c (CSR) format. c
+c LDSOL : Lower triangular system solution. Modified Sparse Row (MSR) format. c
+c LSOL : Unit lower triangular system solution. Compressed Sparse Column c
+c (CSC) format. c
+c LDSOLC: Lower triangular system solution. Modif. Sparse Column (MSC) format c
+c LDSOLL: Lower triangular system solution with level scheduling. MSR format. c
+c USOL : Unit upper triangular system solution. Compressed Sparse Row c
+c (CSR) format. c
+c UDSOL : Upper triangular system solution. Modified Sparse Row (MSR) format. c
+c USOLC : Unit upper triangular system solution. Compressed Sparse c
+c Column (CSC) format. c
+c UDSOLC: Upper triangular system solution. Modif. Sparse Column (MSC) format c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c ORDERINGS Module c
+c===============================================================================c
+c c
+c LEVSET : The standard Cuthill-McKee ordering algorithm. c
+c COLOR : A greedy algorithm for multicoloring ordering. c
+c CCN : Strongly connected components. c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+c ITSOL Module c
+c===============================================================================c
+c c
+c ILUT : ILUT(k) preconditioned GMRES mini package. c
+c ITERS : Nine Krylov iterative solvers with reverse communication. c
+c c
+c-------------------------------------------------------------------------------c
+c===============================================================================c
+
diff --git a/DOC/README b/DOC/README
new file mode 100644
index 0000000..7f2f99a
--- /dev/null
+++ b/DOC/README
@@ -0,0 +1,14 @@
+
+ This directory contains some documentation on the package.
+
+ paper.tex is the tex-file of the documentation.
+ paper.ps is the post-script file
+ QUICK_REF is a quick-reference file that contains all existing routines
+ listed by module. * may need updating*
+
+ all other files are pictures used by paper.tex.
+
+ *THANKS: to Daniel Heiserer (BMW, germany) for a the recent update to
+ the files (latex, figures..) in this directory
+
+-----------------------------------------------------------------------
diff --git a/DOC/dir.eps b/DOC/dir.eps
new file mode 100644
index 0000000..a3b7c1d
--- /dev/null
+++ b/DOC/dir.eps
@@ -0,0 +1,115 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /tmp/xfig-fig024490
+%%Creator: fig2dev
+%%CreationDate: Thu Aug 19 20:24:55 1993
+%%For: dsu@unity (Dongli Su,2-209 EECS,626-7512,378-3764)
+%%BoundingBox: 0 0 567 259
+%%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
+ end
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+0 setlinecap 0 setlinejoin
+-18.0 328.0 translate 0.900 -0.900 scale
+0.500 setlinewidth
+% Polyline
+n 49 244 m 319 99 l gs col-1 s gr
+% Polyline
+n 319 99 m 134 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 204 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 264 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 324 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 394 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 484 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 569 244 l gs col-1 s gr
+% Polyline
+n 544 304 m 564 264 l gs col-1 s gr
+% Polyline
+n 564 264 m 614 304 l gs col-1 s gr
+% Polyline
+n 344 304 m 389 264 l gs col-1 s gr
+% Polyline
+n 389 264 m 399 304 l gs col-1 s gr
+% Polyline
+n 389 264 m 454 304 l gs col-1 s gr
+% Polyline
+n 319 99 m 319 99 l 634 244 l 634 244 l gs col-1 s gr
+/Times-Roman findfont 14.00 scalefont setfont
+19 259 m
+gs 1 -1 scale (BLASSM) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+99 259 m
+gs 1 -1 scale (FORMATS) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+189 259 m
+gs 1 -1 scale (INFO) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+239 259 m
+gs 1 -1 scale (INOUT) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+304 259 m
+gs 1 -1 scale (ITSOL) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+359 259 m
+gs 1 -1 scale (MATGEN) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+439 259 m
+gs 1 -1 scale (ORDERINGS) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+539 259 m
+gs 1 -1 scale (UNSUPP) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+519 319 m
+gs 1 -1 scale (MATEXP) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+329 319 m
+gs 1 -1 scale (FDIF) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+384 319 m
+gs 1 -1 scale (FEM) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+439 319 m
+gs 1 -1 scale (MISC) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+279 89 m
+gs 1 -1 scale (SPARSKIT) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+599 319 m
+gs 1 -1 scale (PLOTS) col-1 show gr
+%%/Times-Roman findfont 20.00 scalefont setfont
+%%199 364 m
+%%gs 1 -1 scale (General organization of SPARSKIT) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+619 259 m
+gs 1 -1 scale (DOC) col-1 show gr
+$F2psEnd
diff --git a/DOC/dir.fig b/DOC/dir.fig
new file mode 100644
index 0000000..5b7e5c5
--- /dev/null
+++ b/DOC/dir.fig
@@ -0,0 +1,46 @@
+#FIG 2.1
+80 2
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 49 244 319 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 134 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 204 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 264 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 324 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 394 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 484 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 569 244 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 544 304 564 264 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 564 264 614 304 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 344 304 389 264 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 389 264 399 304 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 389 264 454 304 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 99 319 99 634 244 634 244 9999 9999
+4 0 0 14 0 -1 0 0.00000 4 10 58 19 259 BLASSM
+4 0 0 14 0 -1 0 0.00000 4 10 68 99 259 FORMATS
+4 0 0 14 0 -1 0 0.00000 4 10 34 189 259 INFO
+4 0 0 14 0 -1 0 0.00000 4 10 45 239 259 INOUT
+4 0 0 14 0 -1 0 0.00000 4 10 41 304 259 ITSOL
+4 0 0 14 0 -1 0 0.00000 4 10 64 359 259 MATGEN
+4 0 0 14 0 -1 0 0.00000 4 10 82 439 259 ORDERINGS
+4 0 0 14 0 -1 0 0.00000 4 10 55 539 259 UNSUPP
+4 0 0 12 0 -1 0 0.00000 4 9 50 519 319 MATEXP
+4 0 0 12 0 -1 0 0.00000 4 9 29 329 319 FDIF
+4 0 0 12 0 -1 0 0.00000 4 9 27 384 319 FEM
+4 0 0 12 0 -1 0 0.00000 4 9 30 439 319 MISC
+4 0 0 18 0 -1 0 0.00000 4 13 88 279 89 SPARSKIT
+4 0 0 12 0 -1 0 0.00000 4 9 37 599 319 PLOTS
+4 0 0 20 0 -1 0 0.00000 4 17 279 199 364 General organization of SPARSKIT
+4 0 0 14 0 -1 0 0.00000 4 10 30 619 259 DOC
diff --git a/DOC/dir.pdf b/DOC/dir.pdf
new file mode 100644
index 0000000..565d9f6
--- /dev/null
+++ b/DOC/dir.pdf
Binary files differ
diff --git a/DOC/doc_data.txt b/DOC/doc_data.txt
new file mode 100644
index 0000000..652b682
--- /dev/null
+++ b/DOC/doc_data.txt
@@ -0,0 +1,15 @@
+InfoKey: Creator
+InfoValue: fig2dev Version 3.2 Patchlevel 3c
+InfoKey: Title
+InfoValue: dir.pdf
+InfoKey: Author
+InfoValue: q127038@caek315 (Daniel Heiserer, EK-213, +49-89-382-21187)
+InfoKey: Producer
+InfoValue: GPL Ghostscript 8.15
+InfoKey: ModDate
+InfoValue: D:20050308101430
+InfoKey: CreationDate
+InfoValue: D:20050308101430
+PdfID0: 5eca9773bba4d12b8b37b446c3226559
+PdfID1: 5eca9773bba4d12b8b37b446c3226559
+NumberOfPages: 2
diff --git a/DOC/jpwh.pdf b/DOC/jpwh.pdf
new file mode 100644
index 0000000..bbdaccf
--- /dev/null
+++ b/DOC/jpwh.pdf
Binary files differ
diff --git a/DOC/jpwh.ps b/DOC/jpwh.ps
new file mode 100644
index 0000000..4788a7a
--- /dev/null
+++ b/DOC/jpwh.ps
@@ -0,0 +1,6057 @@
+%!
+%%Creator: PSPLTM routine
+%%309.92 133.88 1244.56 1165.72
+%%74 94 527 454
+%%BoundingBox: 0 0 527 454
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+/Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 2.15000 cm moveto
+(AN UNSYMMETRIC MATRIX FROM PHILIPS LTD, J.P.WHELAN,1978.) Cshow
+ 4.44500 cm 3.35000 cm translate
+ 12.7000 cm 992 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 992 0 lineto
+ 992 992 lineto
+ 0 992 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 990 p
+ 83 990 p
+ 1 989 p
+ 84 989 p
+ 121 989 p
+ 146 989 p
+ 164 989 p
+ 2 988 p
+ 121 988 p
+ 3 987 p
+ 121 987 p
+ 122 987 p
+ 140 987 p
+ 4 986 p
+ 84 986 p
+ 122 986 p
+ 5 985 p
+ 6 984 p
+ 100 984 p
+ 123 984 p
+ 7 983 p
+ 106 983 p
+ 123 983 p
+ 124 983 p
+ 8 982 p
+ 106 982 p
+ 111 982 p
+ 123 982 p
+ 9 981 p
+ 10 980 p
+ 95 980 p
+ 11 979 p
+ 106 979 p
+ 125 979 p
+ 138 979 p
+ 152 979 p
+ 12 978 p
+ 85 978 p
+ 95 978 p
+ 125 978 p
+ 13 977 p
+ 119 977 p
+ 14 976 p
+ 119 976 p
+ 126 976 p
+ 15 975 p
+ 119 975 p
+ 158 975 p
+ 16 974 p
+ 93 974 p
+ 126 974 p
+ 17 973 p
+ 93 973 p
+ 18 972 p
+ 93 972 p
+ 19 971 p
+ 101 971 p
+ 113 971 p
+ 20 970 p
+ 101 970 p
+ 139 970 p
+ 21 969 p
+ 82 969 p
+ 98 969 p
+ 101 969 p
+ 22 968 p
+ 98 968 p
+ 23 967 p
+ 98 967 p
+ 24 966 p
+ 25 965 p
+ 114 965 p
+ 139 965 p
+ 141 965 p
+ 153 965 p
+ 163 965 p
+ 26 964 p
+ 127 964 p
+ 139 964 p
+ 141 964 p
+ 27 963 p
+ 114 963 p
+ 28 962 p
+ 115 962 p
+ 143 962 p
+ 155 962 p
+ 165 962 p
+ 194 962 p
+ 29 961 p
+ 114 961 p
+ 143 961 p
+ 30 960 p
+ 128 960 p
+ 143 960 p
+ 31 959 p
+ 105 959 p
+ 117 959 p
+ 129 959 p
+ 166 959 p
+ 32 958 p
+ 105 958 p
+ 33 957 p
+ 83 957 p
+ 105 957 p
+ 34 956 p
+ 83 956 p
+ 94 956 p
+ 35 955 p
+ 94 955 p
+ 102 955 p
+ 36 954 p
+ 94 954 p
+ 37 953 p
+ 91 953 p
+ 128 953 p
+ 38 952 p
+ 39 951 p
+ 103 951 p
+ 112 951 p
+ 116 951 p
+ 128 951 p
+ 154 951 p
+ 156 951 p
+ 159 951 p
+ 167 951 p
+ 40 950 p
+ 91 950 p
+ 104 950 p
+ 41 949 p
+ 92 949 p
+ 103 949 p
+ 42 948 p
+ 104 948 p
+ 43 947 p
+ 44 946 p
+ 92 946 p
+ 108 946 p
+ 130 946 p
+ 45 945 p
+ 92 945 p
+ 130 945 p
+ 46 944 p
+ 47 943 p
+ 102 943 p
+ 131 943 p
+ 48 942 p
+ 102 942 p
+ 107 942 p
+ 132 942 p
+ 49 941 p
+ 108 941 p
+ 132 941 p
+ 50 940 p
+ 107 940 p
+ 51 939 p
+ 111 939 p
+ 161 939 p
+ 168 939 p
+ 180 939 p
+ 52 938 p
+ 107 938 p
+ 53 937 p
+ 54 936 p
+ 100 936 p
+ 110 936 p
+ 111 936 p
+ 55 935 p
+ 82 935 p
+ 56 934 p
+ 84 934 p
+ 100 934 p
+ 110 934 p
+ 57 933 p
+ 95 933 p
+ 58 932 p
+ 85 932 p
+ 108 932 p
+ 59 931 p
+ 85 931 p
+ 109 931 p
+ 60 930 p
+ 91 930 p
+ 109 930 p
+ 61 929 p
+ 99 929 p
+ 131 929 p
+ 133 929 p
+ 62 928 p
+ 131 928 p
+ 63 927 p
+ 103 927 p
+ 64 926 p
+ 99 926 p
+ 65 925 p
+ 127 925 p
+ 66 924 p
+ 109 924 p
+ 126 924 p
+ 67 923 p
+ 115 923 p
+ 68 922 p
+ 82 922 p
+ 113 922 p
+ 118 922 p
+ 69 921 p
+ 113 921 p
+ 134 921 p
+ 158 921 p
+ 169 921 p
+ 178 921 p
+ 188 921 p
+ 212 921 p
+ 70 920 p
+ 134 920 p
+ 71 919 p
+ 134 919 p
+ 72 918 p
+ 73 917 p
+ 135 917 p
+ 74 916 p
+ 117 916 p
+ 75 915 p
+ 117 915 p
+ 136 915 p
+ 76 914 p
+ 136 914 p
+ 77 913 p
+ 116 913 p
+ 136 913 p
+ 144 913 p
+ 147 913 p
+ 78 912 p
+ 96 912 p
+ 79 911 p
+ 112 911 p
+ 116 911 p
+ 144 911 p
+ 145 911 p
+ 187 911 p
+ 80 910 p
+ 96 910 p
+ 124 910 p
+ 81 909 p
+ 112 909 p
+ 124 909 p
+ 140 909 p
+ 145 909 p
+ 170 909 p
+ 82 908 p
+ 118 908 p
+ 168 908 p
+ 181 908 p
+ 195 908 p
+ 83 907 p
+ 171 907 p
+ 182 907 p
+ 190 907 p
+ 84 906 p
+ 146 906 p
+ 151 906 p
+ 172 906 p
+ 213 906 p
+ 85 905 p
+ 120 905 p
+ 160 905 p
+ 173 905 p
+ 197 905 p
+ 86 904 p
+ 99 904 p
+ 159 904 p
+ 82 903 p
+ 87 903 p
+ 118 903 p
+ 88 902 p
+ 164 902 p
+ 174 902 p
+ 89 901 p
+ 129 901 p
+ 90 900 p
+ 96 900 p
+ 138 900 p
+ 158 900 p
+ 175 900 p
+ 91 899 p
+ 104 899 p
+ 115 899 p
+ 154 899 p
+ 155 899 p
+ 176 899 p
+ 92 898 p
+ 133 898 p
+ 177 898 p
+ 93 897 p
+ 127 897 p
+ 178 897 p
+ 193 897 p
+ 220 897 p
+ 94 896 p
+ 179 896 p
+ 189 896 p
+ 95 895 p
+ 125 895 p
+ 173 895 p
+ 180 895 p
+ 183 895 p
+ 96 894 p
+ 144 894 p
+ 152 894 p
+ 175 894 p
+ 203 894 p
+ 97 893 p
+ 122 893 p
+ 140 893 p
+ 98 892 p
+ 153 892 p
+ 184 892 p
+ 195 892 p
+ 99 891 p
+ 150 891 p
+ 170 891 p
+ 221 891 p
+ 100 890 p
+ 110 890 p
+ 172 890 p
+ 186 890 p
+ 101 889 p
+ 181 889 p
+ 209 889 p
+ 264 889 p
+ 102 888 p
+ 148 888 p
+ 157 888 p
+ 163 888 p
+ 179 888 p
+ 198 888 p
+ 214 888 p
+ 103 887 p
+ 133 887 p
+ 159 887 p
+ 162 887 p
+ 200 887 p
+ 91 886 p
+ 104 886 p
+ 120 886 p
+ 154 886 p
+ 162 886 p
+ 176 886 p
+ 105 885 p
+ 129 885 p
+ 149 885 p
+ 182 885 p
+ 106 884 p
+ 183 884 p
+ 192 884 p
+ 107 883 p
+ 157 883 p
+ 184 883 p
+ 108 882 p
+ 120 882 p
+ 130 882 p
+ 161 882 p
+ 173 882 p
+ 177 882 p
+ 222 882 p
+ 109 881 p
+ 176 881 p
+ 100 880 p
+ 110 880 p
+ 172 880 p
+ 185 880 p
+ 111 879 p
+ 168 879 p
+ 180 879 p
+ 183 879 p
+ 186 879 p
+ 223 879 p
+ 247 879 p
+ 112 878 p
+ 145 878 p
+ 167 878 p
+ 170 878 p
+ 187 878 p
+ 113 877 p
+ 178 877 p
+ 181 877 p
+ 188 877 p
+ 114 876 p
+ 141 876 p
+ 149 876 p
+ 189 876 p
+ 91 875 p
+ 115 875 p
+ 142 875 p
+ 116 874 p
+ 147 874 p
+ 187 874 p
+ 207 874 p
+ 117 873 p
+ 135 873 p
+ 147 873 p
+ 169 873 p
+ 224 873 p
+ 82 872 p
+ 118 872 p
+ 151 872 p
+ 188 872 p
+ 225 872 p
+ 119 871 p
+ 138 871 p
+ 160 871 p
+ 226 871 p
+ 85 870 p
+ 104 870 p
+ 108 870 p
+ 120 870 p
+ 197 870 p
+ 199 870 p
+ 121 869 p
+ 150 869 p
+ 171 869 p
+ 190 869 p
+ 191 869 p
+ 227 869 p
+ 122 868 p
+ 146 868 p
+ 186 868 p
+ 191 868 p
+ 210 868 p
+ 219 868 p
+ 227 868 p
+ 123 867 p
+ 192 867 p
+ 124 866 p
+ 152 866 p
+ 192 866 p
+ 203 866 p
+ 219 866 p
+ 228 866 p
+ 95 865 p
+ 125 865 p
+ 196 865 p
+ 217 865 p
+ 229 865 p
+ 126 864 p
+ 142 864 p
+ 160 864 p
+ 193 864 p
+ 93 863 p
+ 127 863 p
+ 142 863 p
+ 194 863 p
+ 209 863 p
+ 218 863 p
+ 220 863 p
+ 230 863 p
+ 128 862 p
+ 155 862 p
+ 156 862 p
+ 208 862 p
+ 211 862 p
+ 105 861 p
+ 129 861 p
+ 166 861 p
+ 174 861 p
+ 224 861 p
+ 231 861 p
+ 108 860 p
+ 130 860 p
+ 132 860 p
+ 148 860 p
+ 177 860 p
+ 232 860 p
+ 131 859 p
+ 171 859 p
+ 215 859 p
+ 232 859 p
+ 233 859 p
+ 130 858 p
+ 132 858 p
+ 148 858 p
+ 161 858 p
+ 92 857 p
+ 103 857 p
+ 133 857 p
+ 200 857 p
+ 221 857 p
+ 234 857 p
+ 134 856 p
+ 135 856 p
+ 151 856 p
+ 235 856 p
+ 117 855 p
+ 134 855 p
+ 135 855 p
+ 169 855 p
+ 174 855 p
+ 235 855 p
+ 136 854 p
+ 175 854 p
+ 212 854 p
+ 121 853 p
+ 137 853 p
+ 150 853 p
+ 119 852 p
+ 138 852 p
+ 196 852 p
+ 139 851 p
+ 153 851 p
+ 140 850 p
+ 191 850 p
+ 114 849 p
+ 141 849 p
+ 165 849 p
+ 218 849 p
+ 115 848 p
+ 126 848 p
+ 127 848 p
+ 142 848 p
+ 194 848 p
+ 206 848 p
+ 283 848 p
+ 143 847 p
+ 149 847 p
+ 165 847 p
+ 201 847 p
+ 211 847 p
+ 96 846 p
+ 144 846 p
+ 207 846 p
+ 236 846 p
+ 112 845 p
+ 145 845 p
+ 203 845 p
+ 84 844 p
+ 122 844 p
+ 146 844 p
+ 164 844 p
+ 227 844 p
+ 116 843 p
+ 117 843 p
+ 147 843 p
+ 236 843 p
+ 237 843 p
+ 244 843 p
+ 265 843 p
+ 102 842 p
+ 130 842 p
+ 132 842 p
+ 148 842 p
+ 157 842 p
+ 238 842 p
+ 105 841 p
+ 114 841 p
+ 143 841 p
+ 149 841 p
+ 166 841 p
+ 99 840 p
+ 121 840 p
+ 150 840 p
+ 215 840 p
+ 84 839 p
+ 118 839 p
+ 134 839 p
+ 151 839 p
+ 185 839 p
+ 213 839 p
+ 225 839 p
+ 266 839 p
+ 96 838 p
+ 124 838 p
+ 152 838 p
+ 196 838 p
+ 98 837 p
+ 139 837 p
+ 153 837 p
+ 163 837 p
+ 205 837 p
+ 209 837 p
+ 251 837 p
+ 267 837 p
+ 91 836 p
+ 104 836 p
+ 154 836 p
+ 156 836 p
+ 162 836 p
+ 91 835 p
+ 128 835 p
+ 155 835 p
+ 204 835 p
+ 211 835 p
+ 239 835 p
+ 256 835 p
+ 263 835 p
+ 273 835 p
+ 128 834 p
+ 154 834 p
+ 156 834 p
+ 208 834 p
+ 250 834 p
+ 256 834 p
+ 257 834 p
+ 102 833 p
+ 107 833 p
+ 148 833 p
+ 157 833 p
+ 184 833 p
+ 158 832 p
+ 252 832 p
+ 268 832 p
+ 103 831 p
+ 159 831 p
+ 167 831 p
+ 250 831 p
+ 85 830 p
+ 119 830 p
+ 126 830 p
+ 160 830 p
+ 193 830 p
+ 206 830 p
+ 217 830 p
+ 242 830 p
+ 108 829 p
+ 132 829 p
+ 161 829 p
+ 222 829 p
+ 241 829 p
+ 245 829 p
+ 269 829 p
+ 103 828 p
+ 104 828 p
+ 154 828 p
+ 162 828 p
+ 200 828 p
+ 102 827 p
+ 153 827 p
+ 163 827 p
+ 179 827 p
+ 189 827 p
+ 198 827 p
+ 214 827 p
+ 251 827 p
+ 146 826 p
+ 164 826 p
+ 190 826 p
+ 213 826 p
+ 141 825 p
+ 143 825 p
+ 165 825 p
+ 218 825 p
+ 239 825 p
+ 240 825 p
+ 129 824 p
+ 149 824 p
+ 166 824 p
+ 201 824 p
+ 237 824 p
+ 258 824 p
+ 270 824 p
+ 288 824 p
+ 112 823 p
+ 159 823 p
+ 167 823 p
+ 208 823 p
+ 216 823 p
+ 82 822 p
+ 111 822 p
+ 168 822 p
+ 202 822 p
+ 247 822 p
+ 269 822 p
+ 271 822 p
+ 117 821 p
+ 135 821 p
+ 169 821 p
+ 212 821 p
+ 99 820 p
+ 112 820 p
+ 170 820 p
+ 216 820 p
+ 259 820 p
+ 262 820 p
+ 83 819 p
+ 121 819 p
+ 131 819 p
+ 171 819 p
+ 215 819 p
+ 84 818 p
+ 100 818 p
+ 110 818 p
+ 172 818 p
+ 185 818 p
+ 202 818 p
+ 210 818 p
+ 85 817 p
+ 95 817 p
+ 108 817 p
+ 173 817 p
+ 197 817 p
+ 217 817 p
+ 241 817 p
+ 129 816 p
+ 135 816 p
+ 174 816 p
+ 224 816 p
+ 231 816 p
+ 272 816 p
+ 96 815 p
+ 136 815 p
+ 175 815 p
+ 236 815 p
+ 252 815 p
+ 91 814 p
+ 104 814 p
+ 109 814 p
+ 176 814 p
+ 199 814 p
+ 204 814 p
+ 206 814 p
+ 263 814 p
+ 273 814 p
+ 297 814 p
+ 310 814 p
+ 92 813 p
+ 108 813 p
+ 130 813 p
+ 177 813 p
+ 199 813 p
+ 222 813 p
+ 93 812 p
+ 113 812 p
+ 178 812 p
+ 264 812 p
+ 268 812 p
+ 274 812 p
+ 285 812 p
+ 94 811 p
+ 102 811 p
+ 163 811 p
+ 179 811 p
+ 182 811 p
+ 198 811 p
+ 95 810 p
+ 111 810 p
+ 180 810 p
+ 223 810 p
+ 241 810 p
+ 82 809 p
+ 101 809 p
+ 113 809 p
+ 181 809 p
+ 195 809 p
+ 261 809 p
+ 264 809 p
+ 275 809 p
+ 83 808 p
+ 105 808 p
+ 179 808 p
+ 182 808 p
+ 233 808 p
+ 249 808 p
+ 276 808 p
+ 95 807 p
+ 106 807 p
+ 111 807 p
+ 183 807 p
+ 223 807 p
+ 229 807 p
+ 98 806 p
+ 107 806 p
+ 157 806 p
+ 184 806 p
+ 205 806 p
+ 110 805 p
+ 151 805 p
+ 172 805 p
+ 185 805 p
+ 202 805 p
+ 100 804 p
+ 111 804 p
+ 122 804 p
+ 186 804 p
+ 210 804 p
+ 112 803 p
+ 116 803 p
+ 187 803 p
+ 207 803 p
+ 216 803 p
+ 113 802 p
+ 118 802 p
+ 188 802 p
+ 225 802 p
+ 260 802 p
+ 94 801 p
+ 114 801 p
+ 163 801 p
+ 189 801 p
+ 201 801 p
+ 249 801 p
+ 83 800 p
+ 121 800 p
+ 164 800 p
+ 190 800 p
+ 254 800 p
+ 277 800 p
+ 121 799 p
+ 122 799 p
+ 140 799 p
+ 191 799 p
+ 219 799 p
+ 278 799 p
+ 106 798 p
+ 123 798 p
+ 124 798 p
+ 192 798 p
+ 228 798 p
+ 243 798 p
+ 93 797 p
+ 126 797 p
+ 160 797 p
+ 193 797 p
+ 220 797 p
+ 242 797 p
+ 127 796 p
+ 142 796 p
+ 194 796 p
+ 204 796 p
+ 230 796 p
+ 82 795 p
+ 98 795 p
+ 181 795 p
+ 195 795 p
+ 205 795 p
+ 275 795 p
+ 125 794 p
+ 138 794 p
+ 152 794 p
+ 196 794 p
+ 226 794 p
+ 228 794 p
+ 252 794 p
+ 255 794 p
+ 279 794 p
+ 85 793 p
+ 120 793 p
+ 173 793 p
+ 197 793 p
+ 248 793 p
+ 280 793 p
+ 311 793 p
+ 326 793 p
+ 102 792 p
+ 163 792 p
+ 179 792 p
+ 198 792 p
+ 214 792 p
+ 233 792 p
+ 281 792 p
+ 294 792 p
+ 302 792 p
+ 120 791 p
+ 176 791 p
+ 177 791 p
+ 199 791 p
+ 234 791 p
+ 248 791 p
+ 310 791 p
+ 103 790 p
+ 133 790 p
+ 162 790 p
+ 200 790 p
+ 234 790 p
+ 143 789 p
+ 166 789 p
+ 189 789 p
+ 201 789 p
+ 249 789 p
+ 258 789 p
+ 270 789 p
+ 300 789 p
+ 303 789 p
+ 331 789 p
+ 168 788 p
+ 172 788 p
+ 185 788 p
+ 202 788 p
+ 247 788 p
+ 261 788 p
+ 304 788 p
+ 333 788 p
+ 96 787 p
+ 124 787 p
+ 145 787 p
+ 203 787 p
+ 259 787 p
+ 279 787 p
+ 282 787 p
+ 155 786 p
+ 176 786 p
+ 194 786 p
+ 204 786 p
+ 239 786 p
+ 283 786 p
+ 153 785 p
+ 184 785 p
+ 195 785 p
+ 205 785 p
+ 238 785 p
+ 267 785 p
+ 271 785 p
+ 294 785 p
+ 307 785 p
+ 142 784 p
+ 160 784 p
+ 176 784 p
+ 206 784 p
+ 280 784 p
+ 297 784 p
+ 116 783 p
+ 144 783 p
+ 187 783 p
+ 207 783 p
+ 257 783 p
+ 282 783 p
+ 128 782 p
+ 156 782 p
+ 167 782 p
+ 208 782 p
+ 101 781 p
+ 127 781 p
+ 153 781 p
+ 209 781 p
+ 267 781 p
+ 122 780 p
+ 172 780 p
+ 186 780 p
+ 210 780 p
+ 284 780 p
+ 289 780 p
+ 308 780 p
+ 128 779 p
+ 143 779 p
+ 155 779 p
+ 211 779 p
+ 256 779 p
+ 270 779 p
+ 136 778 p
+ 169 778 p
+ 212 778 p
+ 244 778 p
+ 285 778 p
+ 293 778 p
+ 298 778 p
+ 312 778 p
+ 84 777 p
+ 151 777 p
+ 164 777 p
+ 213 777 p
+ 254 777 p
+ 266 777 p
+ 102 776 p
+ 163 776 p
+ 198 776 p
+ 214 776 p
+ 238 776 p
+ 131 775 p
+ 150 775 p
+ 171 775 p
+ 215 775 p
+ 221 775 p
+ 286 775 p
+ 167 774 p
+ 170 774 p
+ 187 774 p
+ 216 774 p
+ 257 774 p
+ 125 773 p
+ 160 773 p
+ 173 773 p
+ 217 773 p
+ 226 773 p
+ 246 773 p
+ 280 773 p
+ 313 773 p
+ 127 772 p
+ 141 772 p
+ 165 772 p
+ 218 772 p
+ 230 772 p
+ 240 772 p
+ 122 771 p
+ 124 771 p
+ 191 771 p
+ 219 771 p
+ 243 771 p
+ 259 771 p
+ 287 771 p
+ 93 770 p
+ 127 770 p
+ 193 770 p
+ 220 770 p
+ 268 770 p
+ 314 770 p
+ 322 770 p
+ 334 770 p
+ 99 769 p
+ 133 769 p
+ 215 769 p
+ 221 769 p
+ 232 769 p
+ 262 769 p
+ 315 769 p
+ 108 768 p
+ 161 768 p
+ 177 768 p
+ 222 768 p
+ 245 768 p
+ 248 768 p
+ 291 768 p
+ 316 768 p
+ 111 767 p
+ 180 767 p
+ 183 767 p
+ 223 767 p
+ 117 766 p
+ 129 766 p
+ 174 766 p
+ 224 766 p
+ 231 766 p
+ 237 766 p
+ 253 766 p
+ 288 766 p
+ 118 765 p
+ 151 765 p
+ 188 765 p
+ 225 765 p
+ 235 765 p
+ 260 765 p
+ 261 765 p
+ 119 764 p
+ 196 764 p
+ 217 764 p
+ 226 764 p
+ 242 764 p
+ 255 764 p
+ 121 763 p
+ 122 763 p
+ 146 763 p
+ 227 763 p
+ 254 763 p
+ 277 763 p
+ 284 763 p
+ 289 763 p
+ 124 762 p
+ 192 762 p
+ 196 762 p
+ 228 762 p
+ 229 762 p
+ 243 762 p
+ 290 762 p
+ 296 762 p
+ 317 762 p
+ 125 761 p
+ 183 761 p
+ 228 761 p
+ 229 761 p
+ 246 761 p
+ 290 761 p
+ 325 761 p
+ 127 760 p
+ 194 760 p
+ 218 760 p
+ 230 760 p
+ 240 760 p
+ 283 760 p
+ 314 760 p
+ 129 759 p
+ 174 759 p
+ 224 759 p
+ 231 759 p
+ 276 759 p
+ 318 759 p
+ 130 758 p
+ 131 758 p
+ 221 758 p
+ 232 758 p
+ 281 758 p
+ 286 758 p
+ 291 758 p
+ 315 758 p
+ 319 758 p
+ 131 757 p
+ 182 757 p
+ 198 757 p
+ 233 757 p
+ 286 757 p
+ 292 757 p
+ 302 757 p
+ 133 756 p
+ 199 756 p
+ 200 756 p
+ 234 756 p
+ 250 756 p
+ 315 756 p
+ 320 756 p
+ 336 756 p
+ 134 755 p
+ 135 755 p
+ 225 755 p
+ 235 755 p
+ 253 755 p
+ 260 755 p
+ 272 755 p
+ 293 755 p
+ 321 755 p
+ 144 754 p
+ 147 754 p
+ 175 754 p
+ 236 754 p
+ 282 754 p
+ 312 754 p
+ 147 753 p
+ 166 753 p
+ 224 753 p
+ 237 753 p
+ 244 753 p
+ 265 753 p
+ 288 753 p
+ 148 752 p
+ 205 752 p
+ 214 752 p
+ 238 752 p
+ 245 752 p
+ 281 752 p
+ 294 752 p
+ 307 752 p
+ 155 751 p
+ 165 751 p
+ 204 751 p
+ 239 751 p
+ 263 751 p
+ 303 751 p
+ 165 750 p
+ 218 750 p
+ 230 750 p
+ 240 750 p
+ 251 750 p
+ 300 750 p
+ 314 750 p
+ 358 750 p
+ 161 749 p
+ 173 749 p
+ 180 749 p
+ 241 749 p
+ 246 749 p
+ 299 749 p
+ 311 749 p
+ 316 749 p
+ 160 748 p
+ 193 748 p
+ 226 748 p
+ 242 748 p
+ 322 748 p
+ 192 747 p
+ 219 747 p
+ 228 747 p
+ 243 747 p
+ 284 747 p
+ 290 747 p
+ 309 747 p
+ 317 747 p
+ 359 747 p
+ 147 746 p
+ 212 746 p
+ 237 746 p
+ 244 746 p
+ 253 746 p
+ 265 746 p
+ 312 746 p
+ 323 746 p
+ 161 745 p
+ 222 745 p
+ 238 745 p
+ 245 745 p
+ 269 745 p
+ 316 745 p
+ 324 745 p
+ 217 744 p
+ 229 744 p
+ 241 744 p
+ 246 744 p
+ 255 744 p
+ 299 744 p
+ 311 744 p
+ 313 744 p
+ 325 744 p
+ 342 744 p
+ 354 744 p
+ 360 744 p
+ 388 744 p
+ 403 744 p
+ 111 743 p
+ 168 743 p
+ 202 743 p
+ 247 743 p
+ 299 743 p
+ 197 742 p
+ 199 742 p
+ 222 742 p
+ 248 742 p
+ 291 742 p
+ 326 742 p
+ 357 742 p
+ 182 741 p
+ 189 741 p
+ 201 741 p
+ 249 741 p
+ 258 741 p
+ 156 740 p
+ 159 740 p
+ 234 740 p
+ 250 740 p
+ 310 740 p
+ 327 740 p
+ 347 740 p
+ 153 739 p
+ 163 739 p
+ 240 739 p
+ 251 739 p
+ 300 739 p
+ 158 738 p
+ 175 738 p
+ 196 738 p
+ 252 738 p
+ 279 738 p
+ 328 738 p
+ 335 738 p
+ 345 738 p
+ 356 738 p
+ 224 737 p
+ 235 737 p
+ 244 737 p
+ 253 737 p
+ 272 737 p
+ 323 737 p
+ 329 737 p
+ 338 737 p
+ 190 736 p
+ 213 736 p
+ 227 736 p
+ 254 736 p
+ 277 736 p
+ 289 736 p
+ 301 736 p
+ 318 736 p
+ 330 736 p
+ 196 735 p
+ 226 735 p
+ 246 735 p
+ 255 735 p
+ 296 735 p
+ 328 735 p
+ 354 735 p
+ 422 735 p
+ 155 734 p
+ 156 734 p
+ 211 734 p
+ 256 734 p
+ 327 734 p
+ 348 734 p
+ 350 734 p
+ 156 733 p
+ 207 733 p
+ 216 733 p
+ 257 733 p
+ 295 733 p
+ 332 733 p
+ 347 733 p
+ 361 733 p
+ 166 732 p
+ 201 732 p
+ 249 732 p
+ 258 732 p
+ 276 732 p
+ 306 732 p
+ 331 732 p
+ 362 732 p
+ 170 731 p
+ 203 731 p
+ 219 731 p
+ 259 731 p
+ 262 731 p
+ 295 731 p
+ 317 731 p
+ 353 731 p
+ 363 731 p
+ 188 730 p
+ 225 730 p
+ 235 730 p
+ 260 730 p
+ 274 730 p
+ 285 730 p
+ 293 730 p
+ 321 730 p
+ 181 729 p
+ 202 729 p
+ 225 729 p
+ 261 729 p
+ 266 729 p
+ 275 729 p
+ 333 729 p
+ 341 729 p
+ 364 729 p
+ 170 728 p
+ 221 728 p
+ 259 728 p
+ 262 728 p
+ 278 728 p
+ 287 728 p
+ 320 728 p
+ 361 728 p
+ 363 728 p
+ 365 728 p
+ 375 728 p
+ 155 727 p
+ 176 727 p
+ 239 727 p
+ 263 727 p
+ 273 727 p
+ 327 727 p
+ 344 727 p
+ 350 727 p
+ 366 727 p
+ 101 726 p
+ 178 726 p
+ 181 726 p
+ 264 726 p
+ 274 726 p
+ 305 726 p
+ 334 726 p
+ 147 725 p
+ 237 725 p
+ 244 725 p
+ 265 725 p
+ 323 725 p
+ 332 725 p
+ 348 725 p
+ 367 725 p
+ 151 724 p
+ 213 724 p
+ 261 724 p
+ 266 724 p
+ 301 724 p
+ 321 724 p
+ 333 724 p
+ 153 723 p
+ 205 723 p
+ 209 723 p
+ 267 723 p
+ 305 723 p
+ 358 723 p
+ 368 723 p
+ 370 723 p
+ 158 722 p
+ 178 722 p
+ 220 722 p
+ 268 722 p
+ 298 722 p
+ 328 722 p
+ 369 722 p
+ 374 722 p
+ 387 722 p
+ 405 722 p
+ 161 721 p
+ 168 721 p
+ 245 721 p
+ 269 721 p
+ 271 721 p
+ 307 721 p
+ 349 721 p
+ 166 720 p
+ 201 720 p
+ 211 720 p
+ 270 720 p
+ 303 720 p
+ 331 720 p
+ 348 720 p
+ 355 720 p
+ 168 719 p
+ 205 719 p
+ 269 719 p
+ 271 719 p
+ 304 719 p
+ 370 719 p
+ 174 718 p
+ 235 718 p
+ 253 718 p
+ 272 718 p
+ 318 718 p
+ 338 718 p
+ 155 717 p
+ 176 717 p
+ 263 717 p
+ 273 717 p
+ 178 716 p
+ 260 716 p
+ 264 716 p
+ 274 716 p
+ 334 716 p
+ 341 716 p
+ 369 716 p
+ 371 716 p
+ 181 715 p
+ 195 715 p
+ 261 715 p
+ 275 715 p
+ 305 715 p
+ 182 714 p
+ 231 714 p
+ 258 714 p
+ 276 714 p
+ 306 714 p
+ 362 714 p
+ 372 714 p
+ 190 713 p
+ 227 713 p
+ 254 713 p
+ 277 713 p
+ 278 713 p
+ 292 713 p
+ 330 713 p
+ 191 712 p
+ 262 712 p
+ 277 712 p
+ 278 712 p
+ 287 712 p
+ 337 712 p
+ 343 712 p
+ 352 712 p
+ 196 711 p
+ 203 711 p
+ 252 711 p
+ 279 711 p
+ 296 711 p
+ 335 711 p
+ 353 711 p
+ 197 710 p
+ 206 710 p
+ 217 710 p
+ 280 710 p
+ 313 710 p
+ 198 709 p
+ 232 709 p
+ 238 709 p
+ 281 709 p
+ 319 709 p
+ 324 709 p
+ 339 709 p
+ 203 708 p
+ 207 708 p
+ 236 708 p
+ 282 708 p
+ 295 708 p
+ 335 708 p
+ 353 708 p
+ 142 707 p
+ 204 707 p
+ 230 707 p
+ 283 707 p
+ 297 707 p
+ 210 706 p
+ 227 706 p
+ 243 706 p
+ 284 706 p
+ 308 706 p
+ 343 706 p
+ 359 706 p
+ 377 706 p
+ 178 705 p
+ 212 705 p
+ 260 705 p
+ 285 705 p
+ 298 705 p
+ 215 704 p
+ 232 704 p
+ 233 704 p
+ 286 704 p
+ 292 704 p
+ 302 704 p
+ 337 704 p
+ 346 704 p
+ 351 704 p
+ 219 703 p
+ 262 703 p
+ 278 703 p
+ 287 703 p
+ 343 703 p
+ 166 702 p
+ 224 702 p
+ 237 702 p
+ 288 702 p
+ 338 702 p
+ 355 702 p
+ 210 701 p
+ 227 701 p
+ 254 701 p
+ 289 701 p
+ 301 701 p
+ 308 701 p
+ 330 701 p
+ 228 700 p
+ 229 700 p
+ 243 700 p
+ 290 700 p
+ 309 700 p
+ 222 699 p
+ 232 699 p
+ 248 699 p
+ 291 699 p
+ 319 699 p
+ 336 699 p
+ 233 698 p
+ 277 698 p
+ 286 698 p
+ 292 698 p
+ 337 698 p
+ 346 698 p
+ 212 697 p
+ 235 697 p
+ 260 697 p
+ 293 697 p
+ 329 697 p
+ 198 696 p
+ 205 696 p
+ 238 696 p
+ 294 696 p
+ 370 696 p
+ 373 696 p
+ 376 696 p
+ 390 696 p
+ 257 695 p
+ 259 695 p
+ 282 695 p
+ 295 695 p
+ 228 694 p
+ 255 694 p
+ 279 694 p
+ 296 694 p
+ 325 694 p
+ 345 694 p
+ 354 694 p
+ 406 694 p
+ 427 694 p
+ 428 694 p
+ 176 693 p
+ 206 693 p
+ 283 693 p
+ 297 693 p
+ 322 693 p
+ 344 693 p
+ 407 693 p
+ 212 692 p
+ 268 692 p
+ 285 692 p
+ 298 692 p
+ 369 692 p
+ 374 692 p
+ 395 692 p
+ 241 691 p
+ 246 691 p
+ 247 691 p
+ 299 691 p
+ 304 691 p
+ 309 691 p
+ 388 691 p
+ 408 691 p
+ 201 690 p
+ 240 690 p
+ 251 690 p
+ 300 690 p
+ 306 690 p
+ 358 690 p
+ 384 690 p
+ 386 690 p
+ 393 690 p
+ 400 690 p
+ 254 689 p
+ 266 689 p
+ 289 689 p
+ 301 689 p
+ 409 689 p
+ 430 689 p
+ 198 688 p
+ 233 688 p
+ 286 688 p
+ 302 688 p
+ 373 688 p
+ 201 687 p
+ 239 687 p
+ 270 687 p
+ 303 687 p
+ 350 687 p
+ 202 686 p
+ 271 686 p
+ 299 686 p
+ 304 686 p
+ 340 686 p
+ 264 685 p
+ 267 685 p
+ 275 685 p
+ 305 685 p
+ 341 685 p
+ 368 685 p
+ 258 684 p
+ 276 684 p
+ 300 684 p
+ 306 684 p
+ 362 684 p
+ 384 684 p
+ 401 684 p
+ 205 683 p
+ 238 683 p
+ 269 683 p
+ 307 683 p
+ 349 683 p
+ 210 682 p
+ 284 682 p
+ 289 682 p
+ 308 682 p
+ 340 682 p
+ 410 682 p
+ 447 682 p
+ 243 681 p
+ 290 681 p
+ 299 681 p
+ 309 681 p
+ 388 681 p
+ 402 681 p
+ 176 680 p
+ 199 680 p
+ 250 680 p
+ 310 680 p
+ 326 680 p
+ 336 680 p
+ 344 680 p
+ 404 680 p
+ 411 680 p
+ 197 679 p
+ 241 679 p
+ 246 679 p
+ 311 679 p
+ 342 679 p
+ 212 678 p
+ 236 678 p
+ 244 678 p
+ 312 678 p
+ 329 678 p
+ 332 678 p
+ 356 678 p
+ 367 678 p
+ 394 678 p
+ 217 677 p
+ 246 677 p
+ 280 677 p
+ 313 677 p
+ 360 677 p
+ 220 676 p
+ 230 676 p
+ 240 676 p
+ 314 676 p
+ 382 676 p
+ 391 676 p
+ 412 676 p
+ 413 676 p
+ 457 676 p
+ 221 675 p
+ 232 675 p
+ 234 675 p
+ 315 675 p
+ 320 675 p
+ 351 675 p
+ 222 674 p
+ 241 674 p
+ 245 674 p
+ 316 674 p
+ 324 674 p
+ 342 674 p
+ 349 674 p
+ 228 673 p
+ 243 673 p
+ 259 673 p
+ 317 673 p
+ 359 673 p
+ 398 673 p
+ 406 673 p
+ 231 672 p
+ 254 672 p
+ 272 672 p
+ 318 672 p
+ 372 672 p
+ 232 671 p
+ 281 671 p
+ 291 671 p
+ 319 671 p
+ 339 671 p
+ 351 671 p
+ 383 671 p
+ 392 671 p
+ 399 671 p
+ 234 670 p
+ 262 670 p
+ 315 670 p
+ 320 670 p
+ 365 670 p
+ 235 669 p
+ 260 669 p
+ 266 669 p
+ 321 669 p
+ 364 669 p
+ 371 669 p
+ 378 669 p
+ 220 668 p
+ 242 668 p
+ 297 668 p
+ 322 668 p
+ 387 668 p
+ 413 668 p
+ 458 668 p
+ 244 667 p
+ 253 667 p
+ 265 667 p
+ 323 667 p
+ 367 667 p
+ 379 667 p
+ 245 666 p
+ 281 666 p
+ 316 666 p
+ 324 666 p
+ 339 666 p
+ 229 665 p
+ 246 665 p
+ 296 665 p
+ 325 665 p
+ 197 664 p
+ 248 664 p
+ 310 664 p
+ 326 664 p
+ 357 664 p
+ 407 664 p
+ 411 664 p
+ 414 664 p
+ 250 663 p
+ 256 663 p
+ 263 663 p
+ 327 663 p
+ 347 663 p
+ 366 663 p
+ 252 662 p
+ 255 662 p
+ 268 662 p
+ 328 662 p
+ 345 662 p
+ 387 662 p
+ 253 661 p
+ 293 661 p
+ 312 661 p
+ 329 661 p
+ 378 661 p
+ 379 661 p
+ 395 661 p
+ 415 661 p
+ 451 661 p
+ 254 660 p
+ 277 660 p
+ 289 660 p
+ 330 660 p
+ 352 660 p
+ 409 660 p
+ 426 660 p
+ 201 659 p
+ 258 659 p
+ 270 659 p
+ 331 659 p
+ 384 659 p
+ 386 659 p
+ 389 659 p
+ 257 658 p
+ 265 658 p
+ 312 658 p
+ 332 658 p
+ 380 658 p
+ 396 658 p
+ 416 658 p
+ 439 658 p
+ 202 657 p
+ 261 657 p
+ 266 657 p
+ 333 657 p
+ 340 657 p
+ 220 656 p
+ 264 656 p
+ 274 656 p
+ 334 656 p
+ 368 656 p
+ 405 656 p
+ 417 656 p
+ 459 656 p
+ 252 655 p
+ 279 655 p
+ 282 655 p
+ 335 655 p
+ 356 655 p
+ 380 655 p
+ 234 654 p
+ 291 654 p
+ 310 654 p
+ 336 654 p
+ 383 654 p
+ 418 654 p
+ 463 654 p
+ 278 653 p
+ 286 653 p
+ 292 653 p
+ 337 653 p
+ 346 653 p
+ 375 653 p
+ 385 653 p
+ 253 652 p
+ 272 652 p
+ 288 652 p
+ 338 652 p
+ 379 652 p
+ 381 652 p
+ 397 652 p
+ 281 651 p
+ 319 651 p
+ 324 651 p
+ 339 651 p
+ 373 651 p
+ 376 651 p
+ 392 651 p
+ 304 650 p
+ 308 650 p
+ 333 650 p
+ 340 650 p
+ 402 650 p
+ 419 650 p
+ 261 649 p
+ 274 649 p
+ 305 649 p
+ 341 649 p
+ 364 649 p
+ 417 649 p
+ 419 649 p
+ 420 649 p
+ 438 649 p
+ 246 648 p
+ 311 648 p
+ 316 648 p
+ 342 648 p
+ 357 648 p
+ 360 648 p
+ 421 648 p
+ 456 648 p
+ 278 647 p
+ 284 647 p
+ 287 647 p
+ 343 647 p
+ 352 647 p
+ 363 647 p
+ 377 647 p
+ 263 646 p
+ 297 646 p
+ 310 646 p
+ 344 646 p
+ 412 646 p
+ 443 646 p
+ 252 645 p
+ 296 645 p
+ 328 645 p
+ 345 645 p
+ 422 645 p
+ 427 645 p
+ 431 645 p
+ 435 645 p
+ 286 644 p
+ 292 644 p
+ 337 644 p
+ 346 644 p
+ 401 644 p
+ 423 644 p
+ 454 644 p
+ 250 643 p
+ 257 643 p
+ 327 643 p
+ 347 643 p
+ 361 643 p
+ 396 643 p
+ 404 643 p
+ 460 643 p
+ 256 642 p
+ 265 642 p
+ 270 642 p
+ 348 642 p
+ 355 642 p
+ 396 642 p
+ 425 642 p
+ 269 641 p
+ 307 641 p
+ 316 641 p
+ 349 641 p
+ 421 641 p
+ 424 641 p
+ 256 640 p
+ 263 640 p
+ 303 640 p
+ 350 640 p
+ 366 640 p
+ 391 640 p
+ 425 640 p
+ 461 640 p
+ 286 639 p
+ 315 639 p
+ 319 639 p
+ 351 639 p
+ 383 639 p
+ 278 638 p
+ 330 638 p
+ 343 638 p
+ 352 638 p
+ 375 638 p
+ 385 638 p
+ 426 638 p
+ 259 637 p
+ 279 637 p
+ 282 637 p
+ 353 637 p
+ 398 637 p
+ 416 637 p
+ 427 637 p
+ 246 636 p
+ 255 636 p
+ 296 636 p
+ 354 636 p
+ 403 636 p
+ 428 636 p
+ 442 636 p
+ 270 635 p
+ 288 635 p
+ 348 635 p
+ 355 635 p
+ 381 635 p
+ 389 635 p
+ 429 635 p
+ 441 635 p
+ 452 635 p
+ 462 635 p
+ 252 634 p
+ 312 634 p
+ 335 634 p
+ 356 634 p
+ 374 634 p
+ 380 634 p
+ 248 633 p
+ 326 633 p
+ 342 633 p
+ 357 633 p
+ 392 633 p
+ 411 633 p
+ 414 633 p
+ 421 633 p
+ 463 633 p
+ 478 633 p
+ 240 632 p
+ 267 632 p
+ 300 632 p
+ 358 632 p
+ 382 632 p
+ 400 632 p
+ 434 632 p
+ 464 632 p
+ 243 631 p
+ 284 631 p
+ 317 631 p
+ 359 631 p
+ 377 631 p
+ 410 631 p
+ 246 630 p
+ 313 630 p
+ 342 630 p
+ 360 630 p
+ 403 630 p
+ 414 630 p
+ 456 630 p
+ 257 629 p
+ 262 629 p
+ 347 629 p
+ 361 629 p
+ 365 629 p
+ 416 629 p
+ 446 629 p
+ 465 629 p
+ 258 628 p
+ 276 628 p
+ 306 628 p
+ 362 628 p
+ 372 628 p
+ 397 628 p
+ 437 628 p
+ 259 627 p
+ 262 627 p
+ 343 627 p
+ 363 627 p
+ 398 627 p
+ 261 626 p
+ 321 626 p
+ 341 626 p
+ 364 626 p
+ 430 626 p
+ 438 626 p
+ 262 625 p
+ 320 625 p
+ 361 625 p
+ 365 625 p
+ 418 625 p
+ 263 624 p
+ 327 624 p
+ 350 624 p
+ 366 624 p
+ 391 624 p
+ 404 624 p
+ 461 624 p
+ 474 624 p
+ 265 623 p
+ 312 623 p
+ 323 623 p
+ 367 623 p
+ 394 623 p
+ 429 623 p
+ 267 622 p
+ 305 622 p
+ 334 622 p
+ 368 622 p
+ 382 622 p
+ 420 622 p
+ 268 621 p
+ 274 621 p
+ 298 621 p
+ 369 621 p
+ 371 621 p
+ 415 621 p
+ 445 621 p
+ 267 620 p
+ 271 620 p
+ 294 620 p
+ 370 620 p
+ 420 620 p
+ 424 620 p
+ 434 620 p
+ 436 620 p
+ 274 619 p
+ 321 619 p
+ 369 619 p
+ 371 619 p
+ 378 619 p
+ 415 619 p
+ 417 619 p
+ 438 619 p
+ 445 619 p
+ 276 618 p
+ 318 618 p
+ 362 618 p
+ 372 618 p
+ 423 618 p
+ 294 617 p
+ 302 617 p
+ 339 617 p
+ 373 617 p
+ 376 617 p
+ 390 617 p
+ 399 617 p
+ 268 616 p
+ 298 616 p
+ 356 616 p
+ 374 616 p
+ 395 616 p
+ 431 616 p
+ 444 616 p
+ 488 616 p
+ 262 615 p
+ 337 615 p
+ 352 615 p
+ 375 615 p
+ 385 615 p
+ 446 615 p
+ 467 615 p
+ 487 615 p
+ 294 614 p
+ 339 614 p
+ 373 614 p
+ 376 614 p
+ 390 614 p
+ 436 614 p
+ 466 614 p
+ 471 614 p
+ 284 613 p
+ 343 613 p
+ 359 613 p
+ 377 613 p
+ 426 613 p
+ 467 613 p
+ 321 612 p
+ 329 612 p
+ 371 612 p
+ 378 612 p
+ 451 612 p
+ 455 612 p
+ 485 612 p
+ 323 611 p
+ 329 611 p
+ 338 611 p
+ 379 611 p
+ 381 611 p
+ 394 611 p
+ 449 611 p
+ 452 611 p
+ 332 610 p
+ 335 610 p
+ 356 610 p
+ 380 610 p
+ 431 610 p
+ 439 610 p
+ 338 609 p
+ 355 609 p
+ 379 609 p
+ 381 609 p
+ 397 609 p
+ 449 609 p
+ 452 609 p
+ 314 608 p
+ 358 608 p
+ 368 608 p
+ 382 608 p
+ 434 608 p
+ 457 608 p
+ 503 608 p
+ 517 608 p
+ 319 607 p
+ 336 607 p
+ 351 607 p
+ 383 607 p
+ 418 607 p
+ 468 607 p
+ 300 606 p
+ 306 606 p
+ 331 606 p
+ 384 606 p
+ 386 606 p
+ 393 606 p
+ 433 606 p
+ 437 606 p
+ 441 606 p
+ 337 605 p
+ 352 605 p
+ 375 605 p
+ 385 605 p
+ 432 605 p
+ 468 605 p
+ 487 605 p
+ 498 605 p
+ 300 604 p
+ 331 604 p
+ 384 604 p
+ 386 604 p
+ 389 604 p
+ 400 604 p
+ 268 603 p
+ 322 603 p
+ 328 603 p
+ 387 603 p
+ 405 603 p
+ 435 603 p
+ 246 602 p
+ 299 602 p
+ 309 602 p
+ 388 602 p
+ 402 602 p
+ 408 602 p
+ 442 602 p
+ 469 602 p
+ 331 601 p
+ 355 601 p
+ 386 601 p
+ 389 601 p
+ 425 601 p
+ 433 601 p
+ 462 601 p
+ 470 601 p
+ 294 600 p
+ 373 600 p
+ 376 600 p
+ 390 600 p
+ 393 600 p
+ 314 599 p
+ 350 599 p
+ 366 599 p
+ 391 599 p
+ 470 599 p
+ 496 599 p
+ 497 599 p
+ 526 599 p
+ 319 598 p
+ 339 598 p
+ 357 598 p
+ 392 598 p
+ 399 598 p
+ 466 598 p
+ 300 597 p
+ 384 597 p
+ 390 597 p
+ 393 597 p
+ 401 597 p
+ 437 597 p
+ 454 597 p
+ 464 597 p
+ 471 597 p
+ 484 597 p
+ 486 597 p
+ 312 596 p
+ 367 596 p
+ 379 596 p
+ 394 596 p
+ 444 596 p
+ 481 596 p
+ 298 595 p
+ 329 595 p
+ 374 595 p
+ 395 595 p
+ 332 594 p
+ 347 594 p
+ 348 594 p
+ 396 594 p
+ 429 594 p
+ 461 594 p
+ 465 594 p
+ 482 594 p
+ 489 594 p
+ 545 594 p
+ 338 593 p
+ 362 593 p
+ 381 593 p
+ 397 593 p
+ 409 593 p
+ 317 592 p
+ 353 592 p
+ 363 592 p
+ 398 592 p
+ 406 592 p
+ 440 592 p
+ 450 592 p
+ 494 592 p
+ 319 591 p
+ 373 591 p
+ 392 591 p
+ 399 591 p
+ 468 591 p
+ 300 590 p
+ 358 590 p
+ 386 590 p
+ 400 590 p
+ 433 590 p
+ 457 590 p
+ 493 590 p
+ 306 589 p
+ 346 589 p
+ 393 589 p
+ 401 589 p
+ 423 589 p
+ 454 589 p
+ 309 588 p
+ 340 588 p
+ 388 588 p
+ 402 588 p
+ 408 588 p
+ 410 588 p
+ 419 588 p
+ 447 588 p
+ 448 588 p
+ 469 588 p
+ 472 588 p
+ 492 588 p
+ 504 588 p
+ 546 588 p
+ 568 588 p
+ 570 588 p
+ 246 587 p
+ 354 587 p
+ 360 587 p
+ 403 587 p
+ 407 587 p
+ 422 587 p
+ 453 587 p
+ 458 587 p
+ 473 587 p
+ 505 587 p
+ 310 586 p
+ 347 586 p
+ 366 586 p
+ 404 586 p
+ 460 586 p
+ 474 586 p
+ 268 585 p
+ 334 585 p
+ 387 585 p
+ 405 585 p
+ 413 585 p
+ 458 585 p
+ 488 585 p
+ 506 585 p
+ 296 584 p
+ 317 584 p
+ 398 584 p
+ 406 584 p
+ 440 584 p
+ 442 584 p
+ 448 584 p
+ 450 584 p
+ 507 584 p
+ 297 583 p
+ 326 583 p
+ 403 583 p
+ 407 583 p
+ 412 583 p
+ 443 583 p
+ 473 583 p
+ 475 583 p
+ 299 582 p
+ 388 582 p
+ 402 582 p
+ 408 582 p
+ 301 581 p
+ 330 581 p
+ 397 581 p
+ 409 581 p
+ 430 581 p
+ 432 581 p
+ 449 581 p
+ 479 581 p
+ 508 581 p
+ 308 580 p
+ 359 580 p
+ 402 580 p
+ 410 580 p
+ 440 580 p
+ 447 580 p
+ 448 580 p
+ 500 580 p
+ 310 579 p
+ 326 579 p
+ 357 579 p
+ 411 579 p
+ 443 579 p
+ 463 579 p
+ 491 579 p
+ 314 578 p
+ 344 578 p
+ 407 578 p
+ 412 578 p
+ 475 578 p
+ 314 577 p
+ 322 577 p
+ 405 577 p
+ 413 577 p
+ 509 577 p
+ 516 577 p
+ 326 576 p
+ 357 576 p
+ 360 576 p
+ 414 576 p
+ 456 576 p
+ 473 576 p
+ 329 575 p
+ 369 575 p
+ 371 575 p
+ 415 575 p
+ 451 575 p
+ 476 575 p
+ 332 574 p
+ 353 574 p
+ 361 574 p
+ 416 574 p
+ 439 574 p
+ 465 574 p
+ 520 574 p
+ 547 574 p
+ 334 573 p
+ 341 573 p
+ 371 573 p
+ 417 573 p
+ 445 573 p
+ 459 573 p
+ 336 572 p
+ 365 572 p
+ 383 572 p
+ 418 572 p
+ 446 572 p
+ 460 572 p
+ 477 572 p
+ 499 572 p
+ 340 571 p
+ 341 571 p
+ 402 571 p
+ 419 571 p
+ 424 571 p
+ 483 571 p
+ 492 571 p
+ 510 571 p
+ 531 571 p
+ 341 570 p
+ 368 570 p
+ 370 570 p
+ 420 570 p
+ 459 570 p
+ 483 570 p
+ 511 570 p
+ 517 570 p
+ 342 569 p
+ 349 569 p
+ 357 569 p
+ 421 569 p
+ 466 569 p
+ 469 569 p
+ 478 569 p
+ 255 568 p
+ 345 568 p
+ 403 568 p
+ 422 568 p
+ 428 568 p
+ 435 568 p
+ 346 567 p
+ 372 567 p
+ 401 567 p
+ 423 567 p
+ 432 567 p
+ 349 566 p
+ 370 566 p
+ 419 566 p
+ 424 566 p
+ 483 566 p
+ 492 566 p
+ 534 566 p
+ 348 565 p
+ 350 565 p
+ 389 565 p
+ 425 565 p
+ 462 565 p
+ 470 565 p
+ 330 564 p
+ 352 564 p
+ 377 564 p
+ 426 564 p
+ 479 564 p
+ 296 563 p
+ 345 563 p
+ 353 563 p
+ 427 563 p
+ 450 563 p
+ 480 563 p
+ 296 562 p
+ 354 562 p
+ 422 562 p
+ 428 562 p
+ 453 562 p
+ 355 561 p
+ 367 561 p
+ 396 561 p
+ 429 561 p
+ 482 561 p
+ 548 561 p
+ 562 561 p
+ 301 560 p
+ 364 560 p
+ 409 560 p
+ 430 560 p
+ 472 560 p
+ 485 560 p
+ 345 559 p
+ 374 559 p
+ 380 559 p
+ 431 559 p
+ 444 559 p
+ 480 559 p
+ 490 559 p
+ 501 559 p
+ 385 558 p
+ 409 558 p
+ 423 558 p
+ 432 558 p
+ 384 557 p
+ 389 557 p
+ 400 557 p
+ 433 557 p
+ 464 557 p
+ 484 557 p
+ 493 557 p
+ 358 556 p
+ 370 556 p
+ 382 556 p
+ 434 556 p
+ 436 556 p
+ 503 556 p
+ 345 555 p
+ 387 555 p
+ 422 555 p
+ 435 555 p
+ 480 555 p
+ 490 555 p
+ 370 554 p
+ 376 554 p
+ 434 554 p
+ 436 554 p
+ 471 554 p
+ 519 554 p
+ 530 554 p
+ 362 553 p
+ 384 553 p
+ 393 553 p
+ 437 553 p
+ 441 553 p
+ 484 553 p
+ 486 553 p
+ 508 553 p
+ 341 552 p
+ 364 552 p
+ 371 552 p
+ 438 552 p
+ 455 552 p
+ 510 552 p
+ 511 552 p
+ 332 551 p
+ 380 551 p
+ 416 551 p
+ 439 551 p
+ 482 551 p
+ 398 550 p
+ 406 550 p
+ 410 550 p
+ 440 550 p
+ 512 550 p
+ 535 550 p
+ 355 549 p
+ 384 549 p
+ 437 549 p
+ 441 549 p
+ 513 549 p
+ 354 548 p
+ 388 548 p
+ 406 548 p
+ 442 548 p
+ 453 548 p
+ 502 548 p
+ 504 548 p
+ 344 547 p
+ 407 547 p
+ 411 547 p
+ 443 547 p
+ 496 547 p
+ 518 547 p
+ 374 546 p
+ 394 546 p
+ 431 546 p
+ 444 546 p
+ 476 546 p
+ 481 546 p
+ 549 546 p
+ 558 546 p
+ 369 545 p
+ 371 545 p
+ 417 545 p
+ 445 545 p
+ 455 545 p
+ 476 545 p
+ 495 545 p
+ 361 544 p
+ 375 544 p
+ 418 544 p
+ 446 544 p
+ 467 544 p
+ 494 544 p
+ 540 544 p
+ 543 544 p
+ 550 544 p
+ 308 543 p
+ 402 543 p
+ 410 543 p
+ 447 543 p
+ 472 543 p
+ 479 543 p
+ 500 543 p
+ 402 542 p
+ 406 542 p
+ 410 542 p
+ 448 542 p
+ 500 542 p
+ 514 542 p
+ 379 541 p
+ 381 541 p
+ 409 541 p
+ 449 541 p
+ 485 541 p
+ 508 541 p
+ 537 541 p
+ 398 540 p
+ 406 540 p
+ 427 540 p
+ 450 540 p
+ 501 540 p
+ 514 540 p
+ 329 539 p
+ 378 539 p
+ 415 539 p
+ 451 539 p
+ 481 539 p
+ 355 538 p
+ 379 538 p
+ 381 538 p
+ 452 538 p
+ 513 538 p
+ 548 538 p
+ 403 537 p
+ 428 537 p
+ 442 537 p
+ 453 537 p
+ 507 537 p
+ 539 537 p
+ 565 537 p
+ 346 536 p
+ 393 536 p
+ 401 536 p
+ 454 536 p
+ 378 535 p
+ 438 535 p
+ 445 535 p
+ 455 535 p
+ 515 535 p
+ 524 535 p
+ 529 535 p
+ 342 534 p
+ 360 534 p
+ 414 534 p
+ 456 534 p
+ 478 534 p
+ 502 534 p
+ 314 533 p
+ 382 533 p
+ 400 533 p
+ 457 533 p
+ 509 533 p
+ 516 533 p
+ 525 533 p
+ 541 533 p
+ 575 533 p
+ 579 533 p
+ 587 533 p
+ 322 532 p
+ 403 532 p
+ 405 532 p
+ 458 532 p
+ 475 532 p
+ 505 532 p
+ 506 532 p
+ 536 532 p
+ 557 532 p
+ 597 532 p
+ 334 531 p
+ 417 531 p
+ 420 531 p
+ 459 531 p
+ 506 531 p
+ 509 531 p
+ 511 531 p
+ 517 531 p
+ 551 531 p
+ 347 530 p
+ 404 530 p
+ 418 530 p
+ 460 530 p
+ 474 530 p
+ 518 530 p
+ 533 530 p
+ 543 530 p
+ 545 530 p
+ 350 529 p
+ 366 529 p
+ 396 529 p
+ 461 529 p
+ 489 529 p
+ 355 528 p
+ 389 528 p
+ 425 528 p
+ 462 528 p
+ 489 528 p
+ 513 528 p
+ 336 527 p
+ 357 527 p
+ 411 527 p
+ 463 527 p
+ 477 527 p
+ 491 527 p
+ 533 527 p
+ 358 526 p
+ 393 526 p
+ 433 526 p
+ 464 526 p
+ 503 526 p
+ 519 526 p
+ 532 526 p
+ 361 525 p
+ 396 525 p
+ 416 525 p
+ 465 525 p
+ 520 525 p
+ 543 525 p
+ 552 525 p
+ 376 524 p
+ 392 524 p
+ 421 524 p
+ 466 524 p
+ 530 524 p
+ 534 524 p
+ 542 524 p
+ 553 524 p
+ 559 524 p
+ 591 524 p
+ 375 523 p
+ 377 523 p
+ 446 523 p
+ 467 523 p
+ 494 523 p
+ 498 523 p
+ 512 523 p
+ 528 523 p
+ 550 523 p
+ 383 522 p
+ 385 522 p
+ 399 522 p
+ 468 522 p
+ 477 522 p
+ 487 522 p
+ 554 522 p
+ 388 521 p
+ 402 521 p
+ 421 521 p
+ 469 521 p
+ 502 521 p
+ 538 521 p
+ 568 521 p
+ 389 520 p
+ 391 520 p
+ 425 520 p
+ 470 520 p
+ 493 520 p
+ 376 519 p
+ 393 519 p
+ 436 519 p
+ 471 519 p
+ 553 519 p
+ 555 519 p
+ 582 519 p
+ 402 518 p
+ 430 518 p
+ 447 518 p
+ 472 518 p
+ 510 518 p
+ 522 518 p
+ 523 518 p
+ 546 518 p
+ 403 517 p
+ 407 517 p
+ 414 517 p
+ 473 517 p
+ 505 517 p
+ 527 517 p
+ 556 517 p
+ 602 517 p
+ 366 516 p
+ 404 516 p
+ 460 516 p
+ 474 516 p
+ 496 516 p
+ 497 516 p
+ 544 516 p
+ 407 515 p
+ 412 515 p
+ 458 515 p
+ 475 515 p
+ 516 515 p
+ 526 515 p
+ 556 515 p
+ 557 515 p
+ 592 515 p
+ 617 515 p
+ 415 514 p
+ 444 514 p
+ 445 514 p
+ 476 514 p
+ 488 514 p
+ 495 514 p
+ 558 514 p
+ 418 513 p
+ 463 513 p
+ 468 513 p
+ 477 513 p
+ 499 513 p
+ 533 513 p
+ 553 513 p
+ 559 513 p
+ 357 512 p
+ 421 512 p
+ 456 512 p
+ 478 512 p
+ 491 512 p
+ 527 512 p
+ 560 512 p
+ 409 511 p
+ 426 511 p
+ 447 511 p
+ 479 511 p
+ 521 511 p
+ 427 510 p
+ 431 510 p
+ 435 510 p
+ 480 510 p
+ 501 510 p
+ 507 510 p
+ 394 509 p
+ 444 509 p
+ 451 509 p
+ 481 509 p
+ 515 509 p
+ 537 509 p
+ 548 509 p
+ 561 509 p
+ 396 508 p
+ 429 508 p
+ 439 508 p
+ 482 508 p
+ 547 508 p
+ 549 508 p
+ 552 508 p
+ 562 508 p
+ 419 507 p
+ 420 507 p
+ 424 507 p
+ 483 507 p
+ 530 507 p
+ 531 507 p
+ 566 507 p
+ 593 507 p
+ 595 507 p
+ 604 507 p
+ 393 506 p
+ 433 506 p
+ 437 506 p
+ 484 506 p
+ 486 506 p
+ 532 506 p
+ 583 506 p
+ 378 505 p
+ 430 505 p
+ 449 505 p
+ 485 505 p
+ 515 505 p
+ 563 505 p
+ 393 504 p
+ 437 504 p
+ 484 504 p
+ 486 504 p
+ 554 504 p
+ 555 504 p
+ 594 504 p
+ 616 504 p
+ 375 503 p
+ 385 503 p
+ 468 503 p
+ 487 503 p
+ 498 503 p
+ 499 503 p
+ 540 503 p
+ 374 502 p
+ 405 502 p
+ 476 502 p
+ 488 502 p
+ 490 502 p
+ 495 502 p
+ 536 502 p
+ 558 502 p
+ 396 501 p
+ 461 501 p
+ 462 501 p
+ 489 501 p
+ 497 501 p
+ 584 501 p
+ 586 501 p
+ 431 500 p
+ 435 500 p
+ 488 500 p
+ 490 500 p
+ 539 500 p
+ 569 500 p
+ 411 499 p
+ 463 499 p
+ 478 499 p
+ 491 499 p
+ 518 499 p
+ 560 499 p
+ 402 498 p
+ 419 498 p
+ 424 498 p
+ 492 498 p
+ 546 498 p
+ 568 498 p
+ 595 498 p
+ 400 497 p
+ 433 497 p
+ 470 497 p
+ 493 497 p
+ 532 497 p
+ 575 497 p
+ 584 497 p
+ 605 497 p
+ 398 496 p
+ 446 496 p
+ 467 496 p
+ 494 496 p
+ 520 496 p
+ 535 496 p
+ 550 496 p
+ 445 495 p
+ 476 495 p
+ 488 495 p
+ 495 495 p
+ 524 495 p
+ 574 495 p
+ 391 494 p
+ 443 494 p
+ 474 494 p
+ 496 494 p
+ 526 494 p
+ 544 494 p
+ 391 493 p
+ 474 493 p
+ 489 493 p
+ 497 493 p
+ 385 492 p
+ 467 492 p
+ 487 492 p
+ 498 492 p
+ 528 492 p
+ 576 492 p
+ 620 492 p
+ 418 491 p
+ 477 491 p
+ 487 491 p
+ 499 491 p
+ 540 491 p
+ 589 491 p
+ 410 490 p
+ 447 490 p
+ 448 490 p
+ 500 490 p
+ 512 490 p
+ 431 489 p
+ 450 489 p
+ 480 489 p
+ 501 489 p
+ 547 489 p
+ 564 489 p
+ 569 489 p
+ 572 489 p
+ 442 488 p
+ 456 488 p
+ 469 488 p
+ 502 488 p
+ 504 488 p
+ 527 488 p
+ 538 488 p
+ 565 488 p
+ 382 487 p
+ 434 487 p
+ 464 487 p
+ 503 487 p
+ 519 487 p
+ 541 487 p
+ 566 487 p
+ 571 487 p
+ 402 486 p
+ 442 486 p
+ 502 486 p
+ 504 486 p
+ 596 486 p
+ 606 486 p
+ 618 486 p
+ 643 486 p
+ 403 485 p
+ 458 485 p
+ 473 485 p
+ 505 485 p
+ 597 485 p
+ 405 484 p
+ 458 484 p
+ 459 484 p
+ 506 484 p
+ 536 484 p
+ 551 484 p
+ 581 484 p
+ 598 484 p
+ 406 483 p
+ 453 483 p
+ 480 483 p
+ 507 483 p
+ 514 483 p
+ 409 482 p
+ 437 482 p
+ 449 482 p
+ 508 482 p
+ 521 482 p
+ 563 482 p
+ 594 482 p
+ 413 481 p
+ 457 481 p
+ 459 481 p
+ 509 481 p
+ 525 481 p
+ 419 480 p
+ 438 480 p
+ 472 480 p
+ 510 480 p
+ 529 480 p
+ 531 480 p
+ 593 480 p
+ 420 479 p
+ 438 479 p
+ 459 479 p
+ 511 479 p
+ 524 479 p
+ 593 479 p
+ 440 478 p
+ 467 478 p
+ 500 478 p
+ 512 478 p
+ 521 478 p
+ 522 478 p
+ 528 478 p
+ 596 478 p
+ 603 478 p
+ 441 477 p
+ 452 477 p
+ 462 477 p
+ 513 477 p
+ 583 477 p
+ 584 477 p
+ 599 477 p
+ 619 477 p
+ 633 477 p
+ 448 476 p
+ 450 476 p
+ 507 476 p
+ 514 476 p
+ 535 476 p
+ 564 476 p
+ 596 476 p
+ 455 475 p
+ 481 475 p
+ 485 475 p
+ 515 475 p
+ 537 475 p
+ 561 475 p
+ 563 475 p
+ 590 475 p
+ 600 475 p
+ 413 474 p
+ 457 474 p
+ 475 474 p
+ 516 474 p
+ 557 474 p
+ 581 474 p
+ 587 474 p
+ 382 473 p
+ 420 473 p
+ 459 473 p
+ 517 473 p
+ 525 473 p
+ 551 473 p
+ 443 472 p
+ 460 472 p
+ 491 472 p
+ 518 472 p
+ 544 472 p
+ 556 472 p
+ 588 472 p
+ 436 471 p
+ 464 471 p
+ 503 471 p
+ 519 471 p
+ 580 471 p
+ 416 470 p
+ 465 470 p
+ 494 470 p
+ 520 470 p
+ 567 470 p
+ 578 470 p
+ 479 469 p
+ 508 469 p
+ 512 469 p
+ 521 469 p
+ 522 469 p
+ 523 469 p
+ 603 469 p
+ 620 469 p
+ 627 469 p
+ 644 469 p
+ 651 469 p
+ 472 468 p
+ 512 468 p
+ 521 468 p
+ 522 468 p
+ 523 468 p
+ 570 468 p
+ 577 468 p
+ 472 467 p
+ 521 467 p
+ 522 467 p
+ 523 467 p
+ 577 467 p
+ 627 467 p
+ 628 467 p
+ 644 467 p
+ 455 466 p
+ 495 466 p
+ 511 466 p
+ 524 466 p
+ 529 466 p
+ 590 466 p
+ 624 466 p
+ 645 466 p
+ 457 465 p
+ 509 465 p
+ 517 465 p
+ 525 465 p
+ 579 465 p
+ 391 464 p
+ 475 464 p
+ 496 464 p
+ 526 464 p
+ 587 464 p
+ 601 464 p
+ 473 463 p
+ 478 463 p
+ 502 463 p
+ 527 463 p
+ 538 463 p
+ 565 463 p
+ 573 463 p
+ 602 463 p
+ 467 462 p
+ 498 462 p
+ 512 462 p
+ 528 462 p
+ 585 462 p
+ 603 462 p
+ 620 462 p
+ 639 462 p
+ 455 461 p
+ 510 461 p
+ 524 461 p
+ 529 461 p
+ 590 461 p
+ 624 461 p
+ 628 461 p
+ 436 460 p
+ 466 460 p
+ 483 460 p
+ 530 460 p
+ 534 460 p
+ 582 460 p
+ 604 460 p
+ 419 459 p
+ 483 459 p
+ 510 459 p
+ 531 459 p
+ 595 459 p
+ 464 458 p
+ 484 458 p
+ 493 458 p
+ 532 458 p
+ 541 458 p
+ 571 458 p
+ 583 458 p
+ 605 458 p
+ 630 458 p
+ 632 458 p
+ 460 457 p
+ 463 457 p
+ 477 457 p
+ 533 457 p
+ 559 457 p
+ 588 457 p
+ 589 457 p
+ 629 457 p
+ 424 456 p
+ 466 456 p
+ 530 456 p
+ 534 456 p
+ 542 456 p
+ 440 455 p
+ 494 455 p
+ 514 455 p
+ 535 455 p
+ 567 455 p
+ 458 454 p
+ 488 454 p
+ 506 454 p
+ 536 454 p
+ 539 454 p
+ 574 454 p
+ 598 454 p
+ 622 454 p
+ 659 454 p
+ 449 453 p
+ 481 453 p
+ 515 453 p
+ 537 453 p
+ 469 452 p
+ 502 452 p
+ 527 452 p
+ 538 452 p
+ 542 452 p
+ 606 452 p
+ 453 451 p
+ 490 451 p
+ 536 451 p
+ 539 451 p
+ 564 451 p
+ 607 451 p
+ 659 451 p
+ 446 450 p
+ 487 450 p
+ 499 450 p
+ 540 450 p
+ 576 450 p
+ 585 450 p
+ 608 450 p
+ 457 449 p
+ 503 449 p
+ 532 449 p
+ 541 449 p
+ 575 449 p
+ 609 449 p
+ 466 448 p
+ 534 448 p
+ 538 448 p
+ 542 448 p
+ 591 448 p
+ 621 448 p
+ 626 448 p
+ 446 447 p
+ 460 447 p
+ 465 447 p
+ 543 447 p
+ 589 447 p
+ 610 447 p
+ 613 447 p
+ 665 447 p
+ 474 446 p
+ 496 446 p
+ 518 446 p
+ 544 446 p
+ 545 446 p
+ 588 446 p
+ 592 446 p
+ 610 446 p
+ 635 446 p
+ 637 446 p
+ 396 445 p
+ 460 445 p
+ 544 445 p
+ 545 445 p
+ 586 445 p
+ 610 445 p
+ 402 444 p
+ 472 444 p
+ 492 444 p
+ 546 444 p
+ 570 444 p
+ 577 444 p
+ 618 444 p
+ 416 443 p
+ 482 443 p
+ 501 443 p
+ 547 443 p
+ 549 443 p
+ 552 443 p
+ 611 443 p
+ 429 442 p
+ 452 442 p
+ 481 442 p
+ 548 442 p
+ 562 442 p
+ 599 442 p
+ 612 442 p
+ 444 441 p
+ 482 441 p
+ 547 441 p
+ 549 441 p
+ 572 441 p
+ 611 441 p
+ 446 440 p
+ 467 440 p
+ 494 440 p
+ 550 440 p
+ 578 440 p
+ 585 440 p
+ 459 439 p
+ 506 439 p
+ 517 439 p
+ 551 439 p
+ 566 439 p
+ 579 439 p
+ 581 439 p
+ 631 439 p
+ 645 439 p
+ 646 439 p
+ 691 439 p
+ 716 439 p
+ 465 438 p
+ 482 438 p
+ 547 438 p
+ 552 438 p
+ 611 438 p
+ 613 438 p
+ 638 438 p
+ 647 438 p
+ 466 437 p
+ 471 437 p
+ 477 437 p
+ 553 437 p
+ 554 437 p
+ 582 437 p
+ 614 437 p
+ 468 436 p
+ 486 436 p
+ 553 436 p
+ 554 436 p
+ 555 436 p
+ 576 436 p
+ 615 436 p
+ 616 436 p
+ 471 435 p
+ 486 435 p
+ 554 435 p
+ 555 435 p
+ 580 435 p
+ 615 435 p
+ 616 435 p
+ 473 434 p
+ 475 434 p
+ 518 434 p
+ 556 434 p
+ 573 434 p
+ 592 434 p
+ 602 434 p
+ 617 434 p
+ 625 434 p
+ 648 434 p
+ 692 434 p
+ 458 433 p
+ 475 433 p
+ 516 433 p
+ 557 433 p
+ 597 433 p
+ 598 433 p
+ 617 433 p
+ 660 433 p
+ 444 432 p
+ 476 432 p
+ 488 432 p
+ 558 432 p
+ 561 432 p
+ 569 432 p
+ 574 432 p
+ 466 431 p
+ 477 431 p
+ 533 431 p
+ 559 431 p
+ 560 431 p
+ 629 431 p
+ 649 431 p
+ 478 430 p
+ 491 430 p
+ 559 430 p
+ 560 430 p
+ 573 430 p
+ 626 430 p
+ 481 429 p
+ 515 429 p
+ 558 429 p
+ 561 429 p
+ 612 429 p
+ 623 429 p
+ 650 429 p
+ 429 428 p
+ 482 428 p
+ 548 428 p
+ 562 428 p
+ 640 428 p
+ 485 427 p
+ 508 427 p
+ 515 427 p
+ 563 427 p
+ 600 427 p
+ 619 427 p
+ 651 427 p
+ 501 426 p
+ 514 426 p
+ 539 426 p
+ 564 426 p
+ 567 426 p
+ 607 426 p
+ 652 426 p
+ 653 426 p
+ 658 426 p
+ 664 426 p
+ 686 426 p
+ 693 426 p
+ 453 425 p
+ 502 425 p
+ 527 425 p
+ 565 425 p
+ 606 425 p
+ 607 425 p
+ 625 425 p
+ 483 424 p
+ 503 424 p
+ 551 424 p
+ 566 424 p
+ 571 424 p
+ 609 424 p
+ 642 424 p
+ 520 423 p
+ 535 423 p
+ 564 423 p
+ 567 423 p
+ 578 423 p
+ 641 423 p
+ 652 423 p
+ 653 423 p
+ 686 423 p
+ 690 423 p
+ 694 423 p
+ 402 422 p
+ 469 422 p
+ 492 422 p
+ 568 422 p
+ 618 422 p
+ 490 421 p
+ 501 421 p
+ 558 421 p
+ 569 421 p
+ 572 421 p
+ 622 421 p
+ 402 420 p
+ 522 420 p
+ 546 420 p
+ 570 420 p
+ 503 419 p
+ 532 419 p
+ 566 419 p
+ 571 419 p
+ 580 419 p
+ 630 419 p
+ 642 419 p
+ 501 418 p
+ 549 418 p
+ 569 418 p
+ 572 418 p
+ 652 418 p
+ 654 418 p
+ 527 417 p
+ 556 417 p
+ 560 417 p
+ 573 417 p
+ 648 417 p
+ 495 416 p
+ 536 416 p
+ 558 416 p
+ 574 416 p
+ 622 416 p
+ 645 416 p
+ 650 416 p
+ 457 415 p
+ 493 415 p
+ 541 415 p
+ 575 415 p
+ 632 415 p
+ 498 414 p
+ 540 414 p
+ 554 414 p
+ 576 414 p
+ 614 414 p
+ 634 414 p
+ 655 414 p
+ 695 414 p
+ 522 413 p
+ 523 413 p
+ 546 413 p
+ 577 413 p
+ 627 413 p
+ 643 413 p
+ 656 413 p
+ 669 413 p
+ 670 413 p
+ 696 413 p
+ 520 412 p
+ 550 412 p
+ 567 412 p
+ 578 412 p
+ 608 412 p
+ 613 412 p
+ 641 412 p
+ 457 411 p
+ 525 411 p
+ 551 411 p
+ 579 411 p
+ 609 411 p
+ 519 410 p
+ 555 410 p
+ 571 410 p
+ 580 410 p
+ 636 410 p
+ 506 409 p
+ 516 409 p
+ 551 409 p
+ 581 409 p
+ 631 409 p
+ 471 408 p
+ 530 408 p
+ 553 408 p
+ 582 408 p
+ 591 408 p
+ 615 408 p
+ 636 408 p
+ 657 408 p
+ 484 407 p
+ 513 407 p
+ 532 407 p
+ 583 407 p
+ 594 407 p
+ 630 407 p
+ 633 407 p
+ 671 407 p
+ 489 406 p
+ 493 406 p
+ 513 406 p
+ 584 406 p
+ 586 406 p
+ 599 406 p
+ 601 406 p
+ 605 406 p
+ 633 406 p
+ 640 406 p
+ 680 406 p
+ 697 406 p
+ 528 405 p
+ 540 405 p
+ 550 405 p
+ 585 405 p
+ 639 405 p
+ 641 405 p
+ 489 404 p
+ 545 404 p
+ 584 404 p
+ 586 404 p
+ 637 404 p
+ 638 404 p
+ 640 404 p
+ 683 404 p
+ 457 403 p
+ 516 403 p
+ 526 403 p
+ 587 403 p
+ 601 403 p
+ 631 403 p
+ 667 403 p
+ 518 402 p
+ 533 402 p
+ 544 402 p
+ 588 402 p
+ 648 402 p
+ 676 402 p
+ 698 402 p
+ 739 402 p
+ 499 401 p
+ 533 401 p
+ 543 401 p
+ 589 401 p
+ 608 401 p
+ 614 401 p
+ 629 401 p
+ 668 401 p
+ 698 401 p
+ 699 401 p
+ 715 401 p
+ 515 400 p
+ 524 400 p
+ 529 400 p
+ 590 400 p
+ 628 400 p
+ 677 400 p
+ 685 400 p
+ 733 400 p
+ 466 399 p
+ 542 399 p
+ 582 399 p
+ 591 399 p
+ 626 399 p
+ 657 399 p
+ 662 399 p
+ 663 399 p
+ 682 399 p
+ 740 399 p
+ 475 398 p
+ 544 398 p
+ 556 398 p
+ 592 398 p
+ 483 397 p
+ 510 397 p
+ 511 397 p
+ 593 397 p
+ 624 397 p
+ 656 397 p
+ 486 396 p
+ 508 396 p
+ 583 396 p
+ 594 396 p
+ 619 396 p
+ 655 396 p
+ 483 395 p
+ 492 395 p
+ 531 395 p
+ 595 395 p
+ 604 395 p
+ 621 395 p
+ 656 395 p
+ 662 395 p
+ 504 394 p
+ 512 394 p
+ 514 394 p
+ 596 394 p
+ 653 394 p
+ 658 394 p
+ 661 394 p
+ 670 394 p
+ 672 394 p
+ 458 393 p
+ 505 393 p
+ 557 393 p
+ 597 393 p
+ 659 393 p
+ 660 393 p
+ 506 392 p
+ 536 392 p
+ 557 392 p
+ 598 392 p
+ 660 392 p
+ 681 392 p
+ 684 392 p
+ 700 392 p
+ 513 391 p
+ 548 391 p
+ 584 391 p
+ 599 391 p
+ 600 391 p
+ 612 391 p
+ 697 391 p
+ 701 391 p
+ 712 391 p
+ 722 391 p
+ 515 390 p
+ 563 390 p
+ 599 390 p
+ 600 390 p
+ 677 390 p
+ 687 390 p
+ 702 390 p
+ 526 389 p
+ 584 389 p
+ 587 389 p
+ 601 389 p
+ 635 389 p
+ 637 389 p
+ 666 389 p
+ 674 389 p
+ 728 389 p
+ 743 389 p
+ 473 388 p
+ 527 388 p
+ 556 388 p
+ 602 388 p
+ 512 387 p
+ 521 387 p
+ 528 387 p
+ 603 387 p
+ 661 387 p
+ 670 387 p
+ 675 387 p
+ 703 387 p
+ 483 386 p
+ 530 386 p
+ 595 386 p
+ 604 386 p
+ 646 386 p
+ 662 386 p
+ 682 386 p
+ 704 386 p
+ 713 386 p
+ 493 385 p
+ 532 385 p
+ 584 385 p
+ 605 385 p
+ 632 385 p
+ 674 385 p
+ 504 384 p
+ 538 384 p
+ 565 384 p
+ 606 384 p
+ 658 384 p
+ 663 384 p
+ 688 384 p
+ 705 384 p
+ 735 384 p
+ 764 384 p
+ 539 383 p
+ 564 383 p
+ 565 383 p
+ 607 383 p
+ 625 383 p
+ 664 383 p
+ 706 383 p
+ 540 382 p
+ 578 382 p
+ 589 382 p
+ 608 382 p
+ 665 382 p
+ 678 382 p
+ 541 381 p
+ 566 381 p
+ 579 381 p
+ 609 381 p
+ 642 381 p
+ 666 381 p
+ 679 381 p
+ 689 381 p
+ 543 380 p
+ 544 380 p
+ 545 380 p
+ 610 380 p
+ 638 380 p
+ 698 380 p
+ 707 380 p
+ 547 379 p
+ 549 379 p
+ 552 379 p
+ 611 379 p
+ 623 379 p
+ 647 379 p
+ 701 379 p
+ 708 379 p
+ 548 378 p
+ 561 378 p
+ 599 378 p
+ 612 378 p
+ 623 378 p
+ 543 377 p
+ 552 377 p
+ 578 377 p
+ 613 377 p
+ 647 377 p
+ 665 377 p
+ 553 376 p
+ 576 376 p
+ 589 376 p
+ 614 376 p
+ 634 376 p
+ 657 376 p
+ 668 376 p
+ 554 375 p
+ 555 375 p
+ 582 375 p
+ 615 375 p
+ 634 375 p
+ 636 375 p
+ 486 374 p
+ 554 374 p
+ 555 374 p
+ 616 374 p
+ 711 374 p
+ 475 373 p
+ 556 373 p
+ 557 373 p
+ 617 373 p
+ 635 373 p
+ 667 373 p
+ 673 373 p
+ 504 372 p
+ 546 372 p
+ 568 372 p
+ 618 372 p
+ 621 372 p
+ 643 372 p
+ 513 371 p
+ 563 371 p
+ 594 371 p
+ 619 371 p
+ 651 371 p
+ 671 371 p
+ 702 371 p
+ 498 370 p
+ 521 370 p
+ 528 370 p
+ 620 370 p
+ 639 370 p
+ 695 370 p
+ 703 370 p
+ 542 369 p
+ 595 369 p
+ 618 369 p
+ 621 369 p
+ 663 369 p
+ 705 369 p
+ 536 368 p
+ 569 368 p
+ 574 368 p
+ 622 368 p
+ 650 368 p
+ 654 368 p
+ 664 368 p
+ 709 368 p
+ 718 368 p
+ 561 367 p
+ 611 367 p
+ 612 367 p
+ 623 367 p
+ 654 367 p
+ 687 367 p
+ 708 367 p
+ 524 366 p
+ 529 366 p
+ 593 366 p
+ 624 366 p
+ 685 366 p
+ 691 366 p
+ 556 365 p
+ 565 365 p
+ 607 365 p
+ 625 365 p
+ 673 365 p
+ 688 365 p
+ 706 365 p
+ 710 365 p
+ 542 364 p
+ 560 364 p
+ 591 364 p
+ 626 364 p
+ 521 363 p
+ 523 363 p
+ 577 363 p
+ 627 363 p
+ 644 363 p
+ 675 363 p
+ 523 362 p
+ 529 362 p
+ 590 362 p
+ 628 362 p
+ 669 362 p
+ 685 362 p
+ 533 361 p
+ 559 361 p
+ 589 361 p
+ 629 361 p
+ 649 361 p
+ 532 360 p
+ 571 360 p
+ 583 360 p
+ 630 360 p
+ 679 360 p
+ 711 360 p
+ 551 359 p
+ 581 359 p
+ 587 359 p
+ 631 359 p
+ 681 359 p
+ 684 359 p
+ 716 359 p
+ 741 359 p
+ 753 359 p
+ 532 358 p
+ 575 358 p
+ 605 358 p
+ 632 358 p
+ 666 358 p
+ 679 358 p
+ 513 357 p
+ 583 357 p
+ 584 357 p
+ 633 357 p
+ 671 357 p
+ 697 357 p
+ 576 356 p
+ 614 356 p
+ 615 356 p
+ 634 356 p
+ 655 356 p
+ 668 356 p
+ 723 356 p
+ 724 356 p
+ 730 356 p
+ 738 356 p
+ 742 356 p
+ 787 356 p
+ 831 356 p
+ 544 355 p
+ 601 355 p
+ 617 355 p
+ 635 355 p
+ 667 355 p
+ 676 355 p
+ 728 355 p
+ 580 354 p
+ 582 354 p
+ 615 354 p
+ 636 354 p
+ 723 354 p
+ 544 353 p
+ 586 353 p
+ 601 353 p
+ 637 353 p
+ 676 353 p
+ 680 353 p
+ 707 353 p
+ 743 353 p
+ 552 352 p
+ 586 352 p
+ 610 352 p
+ 638 352 p
+ 683 352 p
+ 707 352 p
+ 528 351 p
+ 585 351 p
+ 620 351 p
+ 639 351 p
+ 678 351 p
+ 562 350 p
+ 584 350 p
+ 586 350 p
+ 640 350 p
+ 680 350 p
+ 683 350 p
+ 567 349 p
+ 578 349 p
+ 585 349 p
+ 641 349 p
+ 661 349 p
+ 694 349 p
+ 566 348 p
+ 571 348 p
+ 609 348 p
+ 642 348 p
+ 646 348 p
+ 689 348 p
+ 713 348 p
+ 504 347 p
+ 577 347 p
+ 618 347 p
+ 643 347 p
+ 672 347 p
+ 521 346 p
+ 523 346 p
+ 627 346 p
+ 644 346 p
+ 669 346 p
+ 677 346 p
+ 744 346 p
+ 524 345 p
+ 551 345 p
+ 574 345 p
+ 645 345 p
+ 681 345 p
+ 551 344 p
+ 604 344 p
+ 642 344 p
+ 646 344 p
+ 689 344 p
+ 691 344 p
+ 704 344 p
+ 714 344 p
+ 745 344 p
+ 552 343 p
+ 611 343 p
+ 613 343 p
+ 647 343 p
+ 690 343 p
+ 719 343 p
+ 727 343 p
+ 746 343 p
+ 767 343 p
+ 556 342 p
+ 573 342 p
+ 588 342 p
+ 648 342 p
+ 649 342 p
+ 688 342 p
+ 559 341 p
+ 629 341 p
+ 648 341 p
+ 649 341 p
+ 724 341 p
+ 739 341 p
+ 740 341 p
+ 747 341 p
+ 754 341 p
+ 785 341 p
+ 561 340 p
+ 574 340 p
+ 622 340 p
+ 650 340 p
+ 687 340 p
+ 718 340 p
+ 732 340 p
+ 521 339 p
+ 563 339 p
+ 619 339 p
+ 651 339 p
+ 744 339 p
+ 748 339 p
+ 758 339 p
+ 564 338 p
+ 567 338 p
+ 572 338 p
+ 652 338 p
+ 690 338 p
+ 564 337 p
+ 567 337 p
+ 596 337 p
+ 653 337 p
+ 686 337 p
+ 572 336 p
+ 622 336 p
+ 623 336 p
+ 654 336 p
+ 708 336 p
+ 709 336 p
+ 720 336 p
+ 749 336 p
+ 576 335 p
+ 594 335 p
+ 634 335 p
+ 655 335 p
+ 695 335 p
+ 577 334 p
+ 593 334 p
+ 595 334 p
+ 656 334 p
+ 696 334 p
+ 704 334 p
+ 725 334 p
+ 582 333 p
+ 591 333 p
+ 614 333 p
+ 657 333 p
+ 564 332 p
+ 596 332 p
+ 606 332 p
+ 658 332 p
+ 672 332 p
+ 693 332 p
+ 706 332 p
+ 735 332 p
+ 750 332 p
+ 762 332 p
+ 792 332 p
+ 536 331 p
+ 539 331 p
+ 597 331 p
+ 659 331 p
+ 700 331 p
+ 557 330 p
+ 597 330 p
+ 598 330 p
+ 660 330 p
+ 673 330 p
+ 684 330 p
+ 596 329 p
+ 603 329 p
+ 641 329 p
+ 661 329 p
+ 678 329 p
+ 750 329 p
+ 751 329 p
+ 770 329 p
+ 795 329 p
+ 591 328 p
+ 595 328 p
+ 604 328 p
+ 662 328 p
+ 682 328 p
+ 752 328 p
+ 591 327 p
+ 606 327 p
+ 621 327 p
+ 663 327 p
+ 740 327 p
+ 752 327 p
+ 764 327 p
+ 765 327 p
+ 564 326 p
+ 607 326 p
+ 622 326 p
+ 664 326 p
+ 693 326 p
+ 709 326 p
+ 543 325 p
+ 608 325 p
+ 613 325 p
+ 665 325 p
+ 699 325 p
+ 601 324 p
+ 609 324 p
+ 632 324 p
+ 666 324 p
+ 674 324 p
+ 741 324 p
+ 587 323 p
+ 617 323 p
+ 635 323 p
+ 667 323 p
+ 728 323 p
+ 753 323 p
+ 589 322 p
+ 614 322 p
+ 634 322 p
+ 668 322 p
+ 715 322 p
+ 729 322 p
+ 754 322 p
+ 577 321 p
+ 628 321 p
+ 644 321 p
+ 669 321 p
+ 717 321 p
+ 726 321 p
+ 769 321 p
+ 577 320 p
+ 596 320 p
+ 603 320 p
+ 670 320 p
+ 675 320 p
+ 726 320 p
+ 751 320 p
+ 776 320 p
+ 583 319 p
+ 619 319 p
+ 633 319 p
+ 671 319 p
+ 711 319 p
+ 734 319 p
+ 738 319 p
+ 755 319 p
+ 825 319 p
+ 596 318 p
+ 643 318 p
+ 658 318 p
+ 672 318 p
+ 696 318 p
+ 705 318 p
+ 750 318 p
+ 776 318 p
+ 617 317 p
+ 625 317 p
+ 660 317 p
+ 673 317 p
+ 700 317 p
+ 753 317 p
+ 756 317 p
+ 768 317 p
+ 771 317 p
+ 784 317 p
+ 601 316 p
+ 605 316 p
+ 666 316 p
+ 674 316 p
+ 755 316 p
+ 603 315 p
+ 627 315 p
+ 670 315 p
+ 675 315 p
+ 588 314 p
+ 635 314 p
+ 637 314 p
+ 676 314 p
+ 692 314 p
+ 757 314 p
+ 772 314 p
+ 798 314 p
+ 803 314 p
+ 590 313 p
+ 600 313 p
+ 644 313 p
+ 677 313 p
+ 702 313 p
+ 744 313 p
+ 758 313 p
+ 763 313 p
+ 769 313 p
+ 814 313 p
+ 608 312 p
+ 639 312 p
+ 661 312 p
+ 678 312 p
+ 742 312 p
+ 759 312 p
+ 770 312 p
+ 777 312 p
+ 609 311 p
+ 630 311 p
+ 632 311 p
+ 679 311 p
+ 731 311 p
+ 584 310 p
+ 637 310 p
+ 640 310 p
+ 680 310 p
+ 734 310 p
+ 743 310 p
+ 757 310 p
+ 778 310 p
+ 799 310 p
+ 598 309 p
+ 631 309 p
+ 645 309 p
+ 681 309 p
+ 718 309 p
+ 732 309 p
+ 760 309 p
+ 786 309 p
+ 800 309 p
+ 847 309 p
+ 591 308 p
+ 604 308 p
+ 662 308 p
+ 682 308 p
+ 713 308 p
+ 723 308 p
+ 737 308 p
+ 761 308 p
+ 783 308 p
+ 586 307 p
+ 638 307 p
+ 640 307 p
+ 683 307 p
+ 701 307 p
+ 721 307 p
+ 767 307 p
+ 598 306 p
+ 631 306 p
+ 660 306 p
+ 684 306 p
+ 760 306 p
+ 590 305 p
+ 624 305 p
+ 628 305 p
+ 685 305 p
+ 717 305 p
+ 733 305 p
+ 769 305 p
+ 564 304 p
+ 567 304 p
+ 653 304 p
+ 686 304 p
+ 694 304 p
+ 762 304 p
+ 801 304 p
+ 600 303 p
+ 623 303 p
+ 650 303 p
+ 687 303 p
+ 712 303 p
+ 720 303 p
+ 722 303 p
+ 763 303 p
+ 606 302 p
+ 625 302 p
+ 648 302 p
+ 688 302 p
+ 692 302 p
+ 736 302 p
+ 747 302 p
+ 764 302 p
+ 768 302 p
+ 781 302 p
+ 802 302 p
+ 609 301 p
+ 642 301 p
+ 646 301 p
+ 689 301 p
+ 716 301 p
+ 731 301 p
+ 745 301 p
+ 567 300 p
+ 647 300 p
+ 652 300 p
+ 690 300 p
+ 719 300 p
+ 551 299 p
+ 624 299 p
+ 646 299 p
+ 691 299 p
+ 717 299 p
+ 793 299 p
+ 800 299 p
+ 556 298 p
+ 676 298 p
+ 688 298 p
+ 692 298 p
+ 739 298 p
+ 756 298 p
+ 768 298 p
+ 803 298 p
+ 564 297 p
+ 658 297 p
+ 664 297 p
+ 693 297 p
+ 762 297 p
+ 773 297 p
+ 567 296 p
+ 641 296 p
+ 686 296 p
+ 694 296 p
+ 746 296 p
+ 576 295 p
+ 620 295 p
+ 655 295 p
+ 695 295 p
+ 703 295 p
+ 577 294 p
+ 656 294 p
+ 672 294 p
+ 696 294 p
+ 725 294 p
+ 726 294 p
+ 789 294 p
+ 804 294 p
+ 584 293 p
+ 599 293 p
+ 633 293 p
+ 697 293 p
+ 734 293 p
+ 588 292 p
+ 589 292 p
+ 610 292 p
+ 698 292 p
+ 699 292 p
+ 715 292 p
+ 772 292 p
+ 589 291 p
+ 665 291 p
+ 698 291 p
+ 699 291 p
+ 727 291 p
+ 729 291 p
+ 598 290 p
+ 659 290 p
+ 673 290 p
+ 700 290 p
+ 710 290 p
+ 760 290 p
+ 771 290 p
+ 775 290 p
+ 599 289 p
+ 611 289 p
+ 683 289 p
+ 701 289 p
+ 721 289 p
+ 600 288 p
+ 619 288 p
+ 677 288 p
+ 702 288 p
+ 712 288 p
+ 758 288 p
+ 603 287 p
+ 620 287 p
+ 695 287 p
+ 703 287 p
+ 748 287 p
+ 751 287 p
+ 759 287 p
+ 604 286 p
+ 646 286 p
+ 656 286 p
+ 704 286 p
+ 714 286 p
+ 737 286 p
+ 793 286 p
+ 606 285 p
+ 621 285 p
+ 672 285 p
+ 705 285 p
+ 725 285 p
+ 735 285 p
+ 752 285 p
+ 765 285 p
+ 789 285 p
+ 607 284 p
+ 625 284 p
+ 658 284 p
+ 706 284 p
+ 710 284 p
+ 610 283 p
+ 637 283 p
+ 638 283 p
+ 707 283 p
+ 727 283 p
+ 757 283 p
+ 611 282 p
+ 623 282 p
+ 654 282 p
+ 708 282 p
+ 719 282 p
+ 720 282 p
+ 721 282 p
+ 766 282 p
+ 622 281 p
+ 654 281 p
+ 664 281 p
+ 709 281 p
+ 749 281 p
+ 773 281 p
+ 775 281 p
+ 625 280 p
+ 700 280 p
+ 706 280 p
+ 710 280 p
+ 736 280 p
+ 771 280 p
+ 773 280 p
+ 616 279 p
+ 630 279 p
+ 671 279 p
+ 711 279 p
+ 730 279 p
+ 738 279 p
+ 599 278 p
+ 687 278 p
+ 702 278 p
+ 712 278 p
+ 722 278 p
+ 774 278 p
+ 604 277 p
+ 642 277 p
+ 682 277 p
+ 713 277 p
+ 714 277 p
+ 731 277 p
+ 646 276 p
+ 704 276 p
+ 713 276 p
+ 714 276 p
+ 737 276 p
+ 790 276 p
+ 805 276 p
+ 589 275 p
+ 668 275 p
+ 698 275 p
+ 715 275 p
+ 729 275 p
+ 551 274 p
+ 631 274 p
+ 689 274 p
+ 716 274 p
+ 745 274 p
+ 786 274 p
+ 669 273 p
+ 685 273 p
+ 691 273 p
+ 717 273 p
+ 817 273 p
+ 870 273 p
+ 622 272 p
+ 650 272 p
+ 681 272 p
+ 718 272 p
+ 732 272 p
+ 775 272 p
+ 647 271 p
+ 690 271 p
+ 708 271 p
+ 719 271 p
+ 746 271 p
+ 749 271 p
+ 779 271 p
+ 654 270 p
+ 687 270 p
+ 708 270 p
+ 720 270 p
+ 782 270 p
+ 806 270 p
+ 683 269 p
+ 701 269 p
+ 708 269 p
+ 721 269 p
+ 766 269 p
+ 767 269 p
+ 599 268 p
+ 687 268 p
+ 712 268 p
+ 722 268 p
+ 766 268 p
+ 774 268 p
+ 634 267 p
+ 636 267 p
+ 682 267 p
+ 723 267 p
+ 724 267 p
+ 730 267 p
+ 783 267 p
+ 634 266 p
+ 649 266 p
+ 723 266 p
+ 724 266 p
+ 754 266 p
+ 783 266 p
+ 785 266 p
+ 807 266 p
+ 842 266 p
+ 656 265 p
+ 696 265 p
+ 705 265 p
+ 725 265 p
+ 789 265 p
+ 804 265 p
+ 808 265 p
+ 669 264 p
+ 670 264 p
+ 696 264 p
+ 726 264 p
+ 794 264 p
+ 817 264 p
+ 849 264 p
+ 860 264 p
+ 647 263 p
+ 699 263 p
+ 707 263 p
+ 727 263 p
+ 772 263 p
+ 829 263 p
+ 852 263 p
+ 601 262 p
+ 635 262 p
+ 667 262 p
+ 728 262 p
+ 741 262 p
+ 756 262 p
+ 798 262 p
+ 668 261 p
+ 699 261 p
+ 715 261 p
+ 729 261 p
+ 742 261 p
+ 777 261 p
+ 809 261 p
+ 829 261 p
+ 846 261 p
+ 634 260 p
+ 711 260 p
+ 723 260 p
+ 730 260 p
+ 755 260 p
+ 791 260 p
+ 807 260 p
+ 825 260 p
+ 850 260 p
+ 857 260 p
+ 679 259 p
+ 689 259 p
+ 713 259 p
+ 731 259 p
+ 790 259 p
+ 791 259 p
+ 650 258 p
+ 681 258 p
+ 718 258 p
+ 732 258 p
+ 733 258 p
+ 806 258 p
+ 816 258 p
+ 590 257 p
+ 685 257 p
+ 732 257 p
+ 733 257 p
+ 763 257 p
+ 800 257 p
+ 671 256 p
+ 680 256 p
+ 697 256 p
+ 734 256 p
+ 774 256 p
+ 778 256 p
+ 823 256 p
+ 868 256 p
+ 882 256 p
+ 606 255 p
+ 658 255 p
+ 705 255 p
+ 735 255 p
+ 736 255 p
+ 810 255 p
+ 688 254 p
+ 710 254 p
+ 735 254 p
+ 736 254 p
+ 821 254 p
+ 822 254 p
+ 830 254 p
+ 853 254 p
+ 682 253 p
+ 704 253 p
+ 714 253 p
+ 737 253 p
+ 808 253 p
+ 634 252 p
+ 671 252 p
+ 711 252 p
+ 738 252 p
+ 831 252 p
+ 854 252 p
+ 855 252 p
+ 588 251 p
+ 649 251 p
+ 692 251 p
+ 739 251 p
+ 781 251 p
+ 803 251 p
+ 809 251 p
+ 811 251 p
+ 832 251 p
+ 591 250 p
+ 649 250 p
+ 663 250 p
+ 740 250 p
+ 747 250 p
+ 761 250 p
+ 785 250 p
+ 788 250 p
+ 631 249 p
+ 666 249 p
+ 728 249 p
+ 741 249 p
+ 786 249 p
+ 813 249 p
+ 824 249 p
+ 833 249 p
+ 843 249 p
+ 851 249 p
+ 866 249 p
+ 634 248 p
+ 678 248 p
+ 729 248 p
+ 742 248 p
+ 777 248 p
+ 787 248 p
+ 812 248 p
+ 834 248 p
+ 601 247 p
+ 637 247 p
+ 680 247 p
+ 743 247 p
+ 798 247 p
+ 799 247 p
+ 644 246 p
+ 651 246 p
+ 677 246 p
+ 744 246 p
+ 748 246 p
+ 794 246 p
+ 814 246 p
+ 646 245 p
+ 689 245 p
+ 716 245 p
+ 745 245 p
+ 790 245 p
+ 793 245 p
+ 845 245 p
+ 647 244 p
+ 694 244 p
+ 719 244 p
+ 746 244 p
+ 770 244 p
+ 779 244 p
+ 835 244 p
+ 841 244 p
+ 875 244 p
+ 649 243 p
+ 688 243 p
+ 740 243 p
+ 747 243 p
+ 781 243 p
+ 788 243 p
+ 802 243 p
+ 844 243 p
+ 651 242 p
+ 703 242 p
+ 744 242 p
+ 748 242 p
+ 794 242 p
+ 812 242 p
+ 654 241 p
+ 709 241 p
+ 719 241 p
+ 749 241 p
+ 782 241 p
+ 796 241 p
+ 797 241 p
+ 835 241 p
+ 658 240 p
+ 661 240 p
+ 672 240 p
+ 750 240 p
+ 776 240 p
+ 792 240 p
+ 819 240 p
+ 661 239 p
+ 670 239 p
+ 703 239 p
+ 751 239 p
+ 759 239 p
+ 795 239 p
+ 662 238 p
+ 663 238 p
+ 705 238 p
+ 752 238 p
+ 761 238 p
+ 808 238 p
+ 631 237 p
+ 667 237 p
+ 673 237 p
+ 753 237 p
+ 784 237 p
+ 649 236 p
+ 668 236 p
+ 724 236 p
+ 754 236 p
+ 787 236 p
+ 809 236 p
+ 846 236 p
+ 671 235 p
+ 674 235 p
+ 730 235 p
+ 755 235 p
+ 799 235 p
+ 825 235 p
+ 833 235 p
+ 673 234 p
+ 692 234 p
+ 728 234 p
+ 756 234 p
+ 784 234 p
+ 813 234 p
+ 676 233 p
+ 680 233 p
+ 707 233 p
+ 757 233 p
+ 836 233 p
+ 852 233 p
+ 651 232 p
+ 677 232 p
+ 702 232 p
+ 758 232 p
+ 814 232 p
+ 823 232 p
+ 837 232 p
+ 678 231 p
+ 703 231 p
+ 751 231 p
+ 759 231 p
+ 812 231 p
+ 681 230 p
+ 684 230 p
+ 700 230 p
+ 760 230 p
+ 682 229 p
+ 740 229 p
+ 752 229 p
+ 761 229 p
+ 788 229 p
+ 838 229 p
+ 658 228 p
+ 686 228 p
+ 693 228 p
+ 762 228 p
+ 792 228 p
+ 797 228 p
+ 821 228 p
+ 677 227 p
+ 687 227 p
+ 733 227 p
+ 763 227 p
+ 780 227 p
+ 806 227 p
+ 606 226 p
+ 663 226 p
+ 688 226 p
+ 764 226 p
+ 765 226 p
+ 663 225 p
+ 705 225 p
+ 764 225 p
+ 765 225 p
+ 802 225 p
+ 810 225 p
+ 828 225 p
+ 708 224 p
+ 721 224 p
+ 722 224 p
+ 766 224 p
+ 778 224 p
+ 796 224 p
+ 827 224 p
+ 647 223 p
+ 683 223 p
+ 721 223 p
+ 767 223 p
+ 779 223 p
+ 673 222 p
+ 688 222 p
+ 692 222 p
+ 768 222 p
+ 815 222 p
+ 822 222 p
+ 848 222 p
+ 669 221 p
+ 677 221 p
+ 685 221 p
+ 769 221 p
+ 780 221 p
+ 661 220 p
+ 678 220 p
+ 746 220 p
+ 770 220 p
+ 801 220 p
+ 673 219 p
+ 700 219 p
+ 710 219 p
+ 771 219 p
+ 822 219 p
+ 826 219 p
+ 676 218 p
+ 698 218 p
+ 727 218 p
+ 772 218 p
+ 829 218 p
+ 693 217 p
+ 709 217 p
+ 710 217 p
+ 773 217 p
+ 797 217 p
+ 839 217 p
+ 853 217 p
+ 869 217 p
+ 712 216 p
+ 722 216 p
+ 734 216 p
+ 774 216 p
+ 780 216 p
+ 827 216 p
+ 840 216 p
+ 868 216 p
+ 700 215 p
+ 709 215 p
+ 718 215 p
+ 775 215 p
+ 782 215 p
+ 826 215 p
+ 839 215 p
+ 872 215 p
+ 670 214 p
+ 672 214 p
+ 750 214 p
+ 776 214 p
+ 795 214 p
+ 819 214 p
+ 678 213 p
+ 729 213 p
+ 742 213 p
+ 777 213 p
+ 834 213 p
+ 841 213 p
+ 905 213 p
+ 680 212 p
+ 734 212 p
+ 766 212 p
+ 778 212 p
+ 827 212 p
+ 836 212 p
+ 868 212 p
+ 879 212 p
+ 719 211 p
+ 746 211 p
+ 767 211 p
+ 779 211 p
+ 796 211 p
+ 763 210 p
+ 769 210 p
+ 774 210 p
+ 780 210 p
+ 816 210 p
+ 823 210 p
+ 876 210 p
+ 887 210 p
+ 911 210 p
+ 928 210 p
+ 932 210 p
+ 688 209 p
+ 739 209 p
+ 747 209 p
+ 781 209 p
+ 815 209 p
+ 720 208 p
+ 749 208 p
+ 775 208 p
+ 782 208 p
+ 880 208 p
+ 682 207 p
+ 723 207 p
+ 724 207 p
+ 783 207 p
+ 805 207 p
+ 807 207 p
+ 838 207 p
+ 842 207 p
+ 850 207 p
+ 673 206 p
+ 753 206 p
+ 756 206 p
+ 784 206 p
+ 826 206 p
+ 843 206 p
+ 848 206 p
+ 858 206 p
+ 649 205 p
+ 724 205 p
+ 740 205 p
+ 785 205 p
+ 811 205 p
+ 842 205 p
+ 844 205 p
+ 681 204 p
+ 716 204 p
+ 741 204 p
+ 786 204 p
+ 824 204 p
+ 843 204 p
+ 845 204 p
+ 847 204 p
+ 634 203 p
+ 742 203 p
+ 754 203 p
+ 787 203 p
+ 834 203 p
+ 846 203 p
+ 863 203 p
+ 877 203 p
+ 902 203 p
+ 740 202 p
+ 747 202 p
+ 761 202 p
+ 788 202 p
+ 696 201 p
+ 705 201 p
+ 725 201 p
+ 789 201 p
+ 804 201 p
+ 810 201 p
+ 828 201 p
+ 849 201 p
+ 862 201 p
+ 867 201 p
+ 714 200 p
+ 731 200 p
+ 745 200 p
+ 790 200 p
+ 791 200 p
+ 805 200 p
+ 824 200 p
+ 856 200 p
+ 730 199 p
+ 731 199 p
+ 790 199 p
+ 791 199 p
+ 833 199 p
+ 864 199 p
+ 658 198 p
+ 750 198 p
+ 762 198 p
+ 792 198 p
+ 691 197 p
+ 704 197 p
+ 745 197 p
+ 793 197 p
+ 818 197 p
+ 856 197 p
+ 870 197 p
+ 726 196 p
+ 744 196 p
+ 748 196 p
+ 794 196 p
+ 817 196 p
+ 837 196 p
+ 860 196 p
+ 661 195 p
+ 751 195 p
+ 776 195 p
+ 795 195 p
+ 801 195 p
+ 819 195 p
+ 820 195 p
+ 867 195 p
+ 894 195 p
+ 900 195 p
+ 749 194 p
+ 766 194 p
+ 779 194 p
+ 796 194 p
+ 879 194 p
+ 880 194 p
+ 749 193 p
+ 762 193 p
+ 773 193 p
+ 797 193 p
+ 835 193 p
+ 839 193 p
+ 676 192 p
+ 728 192 p
+ 743 192 p
+ 798 192 p
+ 813 192 p
+ 851 192 p
+ 874 192 p
+ 881 192 p
+ 680 191 p
+ 743 191 p
+ 755 191 p
+ 799 191 p
+ 836 191 p
+ 874 191 p
+ 882 191 p
+ 885 191 p
+ 681 190 p
+ 691 190 p
+ 733 190 p
+ 800 190 p
+ 816 190 p
+ 847 190 p
+ 870 190 p
+ 876 190 p
+ 686 189 p
+ 770 189 p
+ 795 189 p
+ 801 189 p
+ 820 189 p
+ 841 189 p
+ 883 189 p
+ 688 188 p
+ 747 188 p
+ 765 188 p
+ 802 188 p
+ 815 188 p
+ 830 188 p
+ 676 187 p
+ 692 187 p
+ 739 187 p
+ 803 187 p
+ 832 187 p
+ 848 187 p
+ 881 187 p
+ 884 187 p
+ 886 187 p
+ 696 186 p
+ 725 186 p
+ 789 186 p
+ 804 186 p
+ 818 186 p
+ 849 186 p
+ 714 185 p
+ 783 185 p
+ 790 185 p
+ 805 185 p
+ 720 184 p
+ 732 184 p
+ 763 184 p
+ 806 184 p
+ 840 184 p
+ 724 183 p
+ 730 183 p
+ 783 183 p
+ 807 183 p
+ 831 183 p
+ 850 183 p
+ 861 183 p
+ 725 182 p
+ 737 182 p
+ 752 182 p
+ 808 182 p
+ 818 182 p
+ 838 182 p
+ 729 181 p
+ 739 181 p
+ 754 181 p
+ 809 181 p
+ 811 181 p
+ 832 181 p
+ 735 180 p
+ 765 180 p
+ 789 180 p
+ 810 180 p
+ 821 180 p
+ 828 180 p
+ 739 179 p
+ 785 179 p
+ 809 179 p
+ 811 179 p
+ 844 179 p
+ 742 178 p
+ 748 178 p
+ 759 178 p
+ 812 178 p
+ 854 178 p
+ 865 178 p
+ 741 177 p
+ 756 177 p
+ 798 177 p
+ 813 177 p
+ 851 177 p
+ 677 176 p
+ 744 176 p
+ 758 176 p
+ 814 176 p
+ 837 176 p
+ 768 175 p
+ 781 175 p
+ 802 175 p
+ 815 175 p
+ 871 175 p
+ 884 175 p
+ 732 174 p
+ 780 174 p
+ 800 174 p
+ 816 174 p
+ 872 174 p
+ 888 174 p
+ 912 174 p
+ 928 174 p
+ 934 174 p
+ 717 173 p
+ 726 173 p
+ 794 173 p
+ 817 173 p
+ 860 173 p
+ 909 173 p
+ 910 173 p
+ 911 173 p
+ 793 172 p
+ 804 172 p
+ 808 172 p
+ 818 172 p
+ 862 172 p
+ 750 171 p
+ 776 171 p
+ 795 171 p
+ 819 171 p
+ 820 171 p
+ 795 170 p
+ 801 170 p
+ 819 170 p
+ 820 170 p
+ 894 170 p
+ 899 170 p
+ 913 170 p
+ 929 170 p
+ 736 169 p
+ 762 169 p
+ 810 169 p
+ 821 169 p
+ 873 169 p
+ 913 169 p
+ 930 169 p
+ 736 168 p
+ 768 168 p
+ 771 168 p
+ 822 168 p
+ 853 168 p
+ 914 168 p
+ 919 168 p
+ 734 167 p
+ 758 167 p
+ 780 167 p
+ 823 167 p
+ 859 167 p
+ 741 166 p
+ 786 166 p
+ 790 166 p
+ 824 166 p
+ 845 166 p
+ 856 166 p
+ 866 166 p
+ 906 166 p
+ 915 166 p
+ 671 165 p
+ 730 165 p
+ 755 165 p
+ 825 165 p
+ 882 165 p
+ 890 165 p
+ 771 164 p
+ 775 164 p
+ 784 164 p
+ 826 164 p
+ 869 164 p
+ 872 164 p
+ 895 164 p
+ 914 164 p
+ 917 164 p
+ 766 163 p
+ 774 163 p
+ 778 163 p
+ 827 163 p
+ 840 163 p
+ 765 162 p
+ 789 162 p
+ 810 162 p
+ 828 162 p
+ 830 162 p
+ 727 161 p
+ 729 161 p
+ 772 161 p
+ 829 161 p
+ 852 161 p
+ 881 161 p
+ 886 161 p
+ 889 161 p
+ 905 161 p
+ 944 161 p
+ 736 160 p
+ 802 160 p
+ 828 160 p
+ 830 160 p
+ 871 160 p
+ 892 160 p
+ 896 160 p
+ 919 160 p
+ 925 160 p
+ 930 160 p
+ 634 159 p
+ 738 159 p
+ 807 159 p
+ 831 159 p
+ 854 159 p
+ 857 159 p
+ 861 159 p
+ 907 159 p
+ 739 158 p
+ 803 158 p
+ 809 158 p
+ 832 158 p
+ 886 158 p
+ 741 157 p
+ 755 157 p
+ 791 157 p
+ 833 157 p
+ 885 157 p
+ 890 157 p
+ 906 157 p
+ 920 157 p
+ 926 157 p
+ 742 156 p
+ 777 156 p
+ 787 156 p
+ 834 156 p
+ 863 156 p
+ 865 156 p
+ 902 156 p
+ 746 155 p
+ 749 155 p
+ 797 155 p
+ 835 155 p
+ 875 155 p
+ 880 155 p
+ 883 155 p
+ 891 155 p
+ 899 155 p
+ 901 155 p
+ 757 154 p
+ 778 154 p
+ 799 154 p
+ 836 154 p
+ 874 154 p
+ 893 154 p
+ 908 154 p
+ 758 153 p
+ 794 153 p
+ 814 153 p
+ 837 153 p
+ 855 153 p
+ 859 153 p
+ 878 153 p
+ 761 152 p
+ 783 152 p
+ 808 152 p
+ 838 152 p
+ 896 152 p
+ 773 151 p
+ 775 151 p
+ 797 151 p
+ 839 151 p
+ 869 151 p
+ 873 151 p
+ 903 151 p
+ 774 150 p
+ 806 150 p
+ 827 150 p
+ 840 150 p
+ 888 150 p
+ 746 149 p
+ 777 149 p
+ 801 149 p
+ 841 149 p
+ 875 149 p
+ 883 149 p
+ 894 149 p
+ 901 149 p
+ 929 149 p
+ 724 148 p
+ 783 148 p
+ 785 148 p
+ 842 148 p
+ 877 148 p
+ 896 148 p
+ 741 147 p
+ 784 147 p
+ 786 147 p
+ 843 147 p
+ 866 147 p
+ 747 146 p
+ 785 146 p
+ 811 146 p
+ 844 146 p
+ 871 146 p
+ 745 145 p
+ 786 145 p
+ 824 145 p
+ 845 145 p
+ 729 144 p
+ 754 144 p
+ 787 144 p
+ 846 144 p
+ 863 144 p
+ 877 144 p
+ 681 143 p
+ 786 143 p
+ 800 143 p
+ 847 143 p
+ 895 143 p
+ 912 143 p
+ 768 142 p
+ 784 142 p
+ 803 142 p
+ 848 142 p
+ 858 142 p
+ 884 142 p
+ 726 141 p
+ 789 141 p
+ 804 141 p
+ 849 141 p
+ 862 141 p
+ 730 140 p
+ 783 140 p
+ 807 140 p
+ 850 140 p
+ 857 140 p
+ 861 140 p
+ 864 140 p
+ 898 140 p
+ 741 139 p
+ 798 139 p
+ 813 139 p
+ 851 139 p
+ 858 139 p
+ 920 139 p
+ 922 139 p
+ 727 138 p
+ 757 138 p
+ 829 138 p
+ 852 138 p
+ 736 137 p
+ 773 137 p
+ 822 137 p
+ 853 137 p
+ 873 137 p
+ 738 136 p
+ 812 136 p
+ 831 136 p
+ 854 136 p
+ 855 136 p
+ 865 136 p
+ 878 136 p
+ 907 136 p
+ 973 136 p
+ 738 135 p
+ 837 135 p
+ 854 135 p
+ 855 135 p
+ 859 135 p
+ 790 134 p
+ 793 134 p
+ 824 134 p
+ 856 134 p
+ 864 134 p
+ 906 134 p
+ 915 134 p
+ 730 133 p
+ 831 133 p
+ 850 133 p
+ 857 133 p
+ 898 133 p
+ 784 132 p
+ 848 132 p
+ 851 132 p
+ 858 132 p
+ 914 132 p
+ 922 132 p
+ 931 132 p
+ 823 131 p
+ 837 131 p
+ 855 131 p
+ 859 131 p
+ 878 131 p
+ 887 131 p
+ 897 131 p
+ 726 130 p
+ 794 130 p
+ 817 130 p
+ 860 130 p
+ 867 130 p
+ 909 130 p
+ 910 130 p
+ 923 130 p
+ 807 129 p
+ 831 129 p
+ 850 129 p
+ 861 129 p
+ 898 129 p
+ 907 129 p
+ 924 129 p
+ 789 128 p
+ 818 128 p
+ 849 128 p
+ 862 128 p
+ 925 128 p
+ 787 127 p
+ 834 127 p
+ 846 127 p
+ 863 127 p
+ 889 127 p
+ 902 127 p
+ 905 127 p
+ 791 126 p
+ 850 126 p
+ 856 126 p
+ 864 126 p
+ 924 126 p
+ 926 126 p
+ 812 125 p
+ 834 125 p
+ 854 125 p
+ 865 125 p
+ 900 125 p
+ 927 125 p
+ 973 125 p
+ 741 124 p
+ 824 124 p
+ 843 124 p
+ 866 124 p
+ 895 124 p
+ 920 124 p
+ 789 123 p
+ 795 123 p
+ 860 123 p
+ 867 123 p
+ 909 123 p
+ 913 123 p
+ 923 123 p
+ 734 122 p
+ 774 122 p
+ 778 122 p
+ 868 122 p
+ 879 122 p
+ 887 122 p
+ 897 122 p
+ 773 121 p
+ 826 121 p
+ 839 121 p
+ 869 121 p
+ 717 120 p
+ 793 120 p
+ 800 120 p
+ 870 120 p
+ 876 120 p
+ 911 120 p
+ 815 119 p
+ 830 119 p
+ 844 119 p
+ 871 119 p
+ 892 119 p
+ 904 119 p
+ 775 118 p
+ 816 118 p
+ 826 118 p
+ 872 118 p
+ 903 118 p
+ 917 118 p
+ 821 117 p
+ 839 117 p
+ 853 117 p
+ 873 117 p
+ 899 117 p
+ 930 117 p
+ 798 116 p
+ 799 116 p
+ 836 116 p
+ 874 116 p
+ 885 116 p
+ 893 116 p
+ 746 115 p
+ 835 115 p
+ 841 115 p
+ 875 115 p
+ 901 115 p
+ 944 115 p
+ 780 114 p
+ 800 114 p
+ 870 114 p
+ 876 114 p
+ 912 114 p
+ 928 114 p
+ 787 113 p
+ 842 113 p
+ 846 113 p
+ 877 113 p
+ 889 113 p
+ 837 112 p
+ 854 112 p
+ 859 112 p
+ 878 112 p
+ 910 112 p
+ 927 112 p
+ 973 112 p
+ 778 111 p
+ 796 111 p
+ 868 111 p
+ 879 111 p
+ 891 111 p
+ 782 110 p
+ 796 110 p
+ 835 110 p
+ 880 110 p
+ 888 110 p
+ 891 110 p
+ 903 110 p
+ 798 109 p
+ 803 109 p
+ 829 109 p
+ 881 109 p
+ 922 109 p
+ 931 109 p
+ 734 108 p
+ 799 108 p
+ 825 108 p
+ 882 108 p
+ 890 108 p
+ 908 108 p
+ 801 107 p
+ 835 107 p
+ 841 107 p
+ 883 107 p
+ 803 106 p
+ 815 106 p
+ 848 106 p
+ 884 106 p
+ 892 106 p
+ 904 106 p
+ 799 105 p
+ 833 105 p
+ 874 105 p
+ 885 105 p
+ 893 105 p
+ 939 105 p
+ 803 104 p
+ 829 104 p
+ 832 104 p
+ 886 104 p
+ 904 104 p
+ 780 103 p
+ 859 103 p
+ 868 103 p
+ 887 103 p
+ 897 103 p
+ 961 103 p
+ 816 102 p
+ 840 102 p
+ 880 102 p
+ 888 102 p
+ 829 101 p
+ 863 101 p
+ 877 101 p
+ 889 101 p
+ 825 100 p
+ 833 100 p
+ 882 100 p
+ 890 100 p
+ 939 100 p
+ 835 99 p
+ 879 99 p
+ 880 99 p
+ 891 99 p
+ 830 98 p
+ 871 98 p
+ 884 98 p
+ 892 98 p
+ 919 98 p
+ 836 97 p
+ 874 97 p
+ 885 97 p
+ 893 97 p
+ 908 97 p
+ 939 97 p
+ 795 96 p
+ 820 96 p
+ 841 96 p
+ 894 96 p
+ 900 96 p
+ 826 95 p
+ 847 95 p
+ 866 95 p
+ 895 95 p
+ 830 94 p
+ 838 94 p
+ 842 94 p
+ 896 94 p
+ 924 94 p
+ 859 93 p
+ 868 93 p
+ 887 93 p
+ 897 93 p
+ 850 92 p
+ 857 92 p
+ 861 92 p
+ 898 92 p
+ 926 92 p
+ 820 91 p
+ 835 91 p
+ 873 91 p
+ 899 91 p
+ 795 90 p
+ 865 90 p
+ 894 90 p
+ 900 90 p
+ 923 90 p
+ 835 89 p
+ 841 89 p
+ 875 89 p
+ 901 89 p
+ 929 89 p
+ 787 88 p
+ 834 88 p
+ 863 88 p
+ 902 88 p
+ 839 87 p
+ 872 87 p
+ 880 87 p
+ 903 87 p
+ 871 86 p
+ 884 86 p
+ 886 86 p
+ 904 86 p
+ 931 86 p
+ 777 85 p
+ 829 85 p
+ 863 85 p
+ 905 85 p
+ 824 84 p
+ 833 84 p
+ 856 84 p
+ 906 84 p
+ 915 84 p
+ 831 83 p
+ 854 83 p
+ 861 83 p
+ 907 83 p
+ 836 82 p
+ 882 82 p
+ 893 82 p
+ 908 82 p
+ 817 81 p
+ 860 81 p
+ 867 81 p
+ 909 81 p
+ 817 80 p
+ 860 80 p
+ 878 80 p
+ 910 80 p
+ 932 80 p
+ 961 80 p
+ 780 79 p
+ 817 79 p
+ 870 79 p
+ 911 79 p
+ 932 79 p
+ 816 78 p
+ 847 78 p
+ 876 78 p
+ 912 78 p
+ 917 78 p
+ 934 78 p
+ 820 77 p
+ 821 77 p
+ 867 77 p
+ 913 77 p
+ 925 77 p
+ 822 76 p
+ 826 76 p
+ 858 76 p
+ 914 76 p
+ 824 75 p
+ 856 75 p
+ 906 75 p
+ 915 75 p
+ 825 74 p
+ 859 74 p
+ 890 74 p
+ 916 74 p
+ 826 73 p
+ 872 73 p
+ 912 73 p
+ 917 73 p
+ 934 73 p
+ 829 72 p
+ 836 72 p
+ 881 72 p
+ 918 72 p
+ 822 71 p
+ 830 71 p
+ 892 71 p
+ 919 71 p
+ 833 70 p
+ 851 70 p
+ 866 70 p
+ 920 70 p
+ 856 69 p
+ 864 69 p
+ 870 69 p
+ 921 69 p
+ 851 68 p
+ 858 68 p
+ 881 68 p
+ 922 68 p
+ 860 67 p
+ 867 67 p
+ 900 67 p
+ 923 67 p
+ 927 67 p
+ 861 66 p
+ 864 66 p
+ 896 66 p
+ 924 66 p
+ 830 65 p
+ 862 65 p
+ 913 65 p
+ 925 65 p
+ 833 64 p
+ 864 64 p
+ 898 64 p
+ 926 64 p
+ 865 63 p
+ 878 63 p
+ 923 63 p
+ 927 63 p
+ 780 62 p
+ 816 62 p
+ 876 62 p
+ 928 62 p
+ 820 61 p
+ 841 61 p
+ 901 61 p
+ 929 61 p
+ 821 60 p
+ 830 60 p
+ 873 60 p
+ 930 60 p
+ 858 59 p
+ 881 59 p
+ 904 59 p
+ 931 59 p
+ 780 58 p
+ 910 58 p
+ 911 58 p
+ 932 58 p
+ 961 58 p
+ 868 57 p
+ 887 57 p
+ 897 57 p
+ 933 57 p
+ 816 56 p
+ 912 56 p
+ 917 56 p
+ 934 56 p
+ 780 55 p
+ 911 55 p
+ 928 55 p
+ 935 55 p
+ 865 54 p
+ 900 54 p
+ 905 54 p
+ 936 54 p
+ 912 53 p
+ 928 53 p
+ 937 53 p
+ 830 52 p
+ 871 52 p
+ 896 52 p
+ 938 52 p
+ 885 51 p
+ 890 51 p
+ 893 51 p
+ 939 51 p
+ 881 50 p
+ 886 50 p
+ 931 50 p
+ 940 50 p
+ 875 49 p
+ 879 49 p
+ 901 49 p
+ 941 49 p
+ 944 49 p
+ 879 48 p
+ 888 48 p
+ 942 48 p
+ 882 47 p
+ 890 47 p
+ 908 47 p
+ 943 47 p
+ 829 46 p
+ 875 46 p
+ 944 46 p
+ 880 45 p
+ 899 45 p
+ 901 45 p
+ 945 45 p
+ 826 44 p
+ 858 44 p
+ 895 44 p
+ 946 44 p
+ 898 43 p
+ 907 43 p
+ 947 43 p
+ 893 42 p
+ 922 42 p
+ 948 42 p
+ 864 41 p
+ 898 41 p
+ 926 41 p
+ 949 41 p
+ 904 40 p
+ 914 40 p
+ 931 40 p
+ 950 40 p
+ 895 39 p
+ 906 39 p
+ 920 39 p
+ 951 39 p
+ 826 38 p
+ 873 38 p
+ 903 38 p
+ 952 38 p
+ 920 37 p
+ 939 37 p
+ 953 37 p
+ 829 36 p
+ 889 36 p
+ 954 36 p
+ 889 35 p
+ 896 35 p
+ 924 35 p
+ 955 35 p
+ 841 34 p
+ 901 34 p
+ 944 34 p
+ 956 34 p
+ 892 33 p
+ 919 33 p
+ 957 33 p
+ 820 32 p
+ 867 32 p
+ 913 32 p
+ 958 32 p
+ 894 31 p
+ 900 31 p
+ 959 31 p
+ 861 30 p
+ 902 30 p
+ 960 30 p
+ 887 29 p
+ 910 29 p
+ 932 29 p
+ 961 29 p
+ 870 28 p
+ 915 28 p
+ 962 28 p
+ 820 27 p
+ 873 27 p
+ 913 27 p
+ 963 27 p
+ 829 26 p
+ 889 26 p
+ 964 26 p
+ 833 25 p
+ 906 25 p
+ 926 25 p
+ 965 25 p
+ 858 24 p
+ 895 24 p
+ 920 24 p
+ 966 24 p
+ 859 23 p
+ 878 23 p
+ 961 23 p
+ 967 23 p
+ 862 22 p
+ 867 22 p
+ 909 22 p
+ 968 22 p
+ 865 21 p
+ 902 21 p
+ 905 21 p
+ 969 21 p
+ 862 20 p
+ 870 20 p
+ 911 20 p
+ 970 20 p
+ 871 19 p
+ 904 19 p
+ 971 19 p
+ 873 18 p
+ 903 18 p
+ 972 18 p
+ 854 17 p
+ 865 17 p
+ 878 17 p
+ 973 17 p
+ 879 16 p
+ 880 16 p
+ 974 16 p
+ 880 15 p
+ 888 15 p
+ 903 15 p
+ 975 15 p
+ 895 14 p
+ 917 14 p
+ 976 14 p
+ 862 13 p
+ 896 13 p
+ 925 13 p
+ 977 13 p
+ 899 12 p
+ 929 12 p
+ 978 12 p
+ 900 11 p
+ 927 11 p
+ 979 11 p
+ 903 10 p
+ 917 10 p
+ 980 10 p
+ 910 9 p
+ 981 9 p
+ 870 8 p
+ 911 8 p
+ 982 8 p
+ 895 7 p
+ 912 7 p
+ 983 7 p
+ 922 6 p
+ 931 6 p
+ 984 6 p
+ 910 5 p
+ 911 5 p
+ 932 5 p
+ 985 5 p
+ 833 4 p
+ 986 4 p
+ 858 3 p
+ 922 3 p
+ 987 3 p
+ 862 2 p
+ 925 2 p
+ 988 2 p
+ 858 1 p
+ 914 1 p
+ 989 1 p
+ 862 0 p
+ 990 0 p
+showpage
diff --git a/DOC/mat8.pdf b/DOC/mat8.pdf
new file mode 100644
index 0000000..ec46ce0
--- /dev/null
+++ b/DOC/mat8.pdf
Binary files differ
diff --git a/DOC/mat8.ps b/DOC/mat8.ps
new file mode 100644
index 0000000..1f70290
--- /dev/null
+++ b/DOC/mat8.ps
@@ -0,0 +1,8564 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: PSPLTM routine
+%%BoundingBox: 100 50 510 500
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 16.9700 cm moveto
+(Assembled Matrix) Cshow
+ 3.81000 cm 2.00000 cm translate
+ 13.9700 cm 1257 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 1257 0 lineto
+ 1257 1257 lineto
+ 0 1257 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 1255 p
+ 880 1255 p
+ 881 1255 p
+ 918 1255 p
+ 1 1254 p
+ 1161 1254 p
+ 1160 1254 p
+ 1199 1254 p
+ 2 1253 p
+ 469 1253 p
+ 468 1253 p
+ 472 1253 p
+ 3 1252 p
+ 730 1252 p
+ 731 1252 p
+ 732 1252 p
+ 4 1251 p
+ 330 1251 p
+ 332 1251 p
+ 333 1251 p
+ 1202 1251 p
+ 1233 1251 p
+ 5 1250 p
+ 332 1250 p
+ 331 1250 p
+ 335 1250 p
+ 337 1250 p
+ 1121 1250 p
+ 1164 1250 p
+ 6 1249 p
+ 337 1249 p
+ 336 1249 p
+ 339 1249 p
+ 341 1249 p
+ 1041 1249 p
+ 1080 1249 p
+ 7 1248 p
+ 341 1248 p
+ 340 1248 p
+ 343 1248 p
+ 345 1248 p
+ 961 1248 p
+ 963 1248 p
+ 8 1247 p
+ 345 1247 p
+ 344 1247 p
+ 347 1247 p
+ 349 1247 p
+ 882 1247 p
+ 920 1247 p
+ 9 1246 p
+ 349 1246 p
+ 348 1246 p
+ 351 1246 p
+ 353 1246 p
+ 820 1246 p
+ 845 1246 p
+ 10 1245 p
+ 353 1245 p
+ 352 1245 p
+ 356 1245 p
+ 799 1245 p
+ 798 1245 p
+ 11 1244 p
+ 334 1244 p
+ 333 1244 p
+ 357 1244 p
+ 359 1244 p
+ 12 1243 p
+ 331 1243 p
+ 330 1243 p
+ 334 1243 p
+ 338 1243 p
+ 358 1243 p
+ 361 1243 p
+ 13 1242 p
+ 336 1242 p
+ 335 1242 p
+ 338 1242 p
+ 342 1242 p
+ 362 1242 p
+ 364 1242 p
+ 14 1241 p
+ 340 1241 p
+ 339 1241 p
+ 342 1241 p
+ 346 1241 p
+ 365 1241 p
+ 367 1241 p
+ 15 1240 p
+ 344 1240 p
+ 343 1240 p
+ 346 1240 p
+ 350 1240 p
+ 368 1240 p
+ 370 1240 p
+ 16 1239 p
+ 348 1239 p
+ 347 1239 p
+ 350 1239 p
+ 354 1239 p
+ 371 1239 p
+ 373 1239 p
+ 17 1238 p
+ 352 1238 p
+ 351 1238 p
+ 354 1238 p
+ 355 1238 p
+ 374 1238 p
+ 376 1238 p
+ 18 1237 p
+ 356 1237 p
+ 355 1237 p
+ 377 1237 p
+ 19 1236 p
+ 360 1236 p
+ 359 1236 p
+ 379 1236 p
+ 381 1236 p
+ 20 1235 p
+ 358 1235 p
+ 357 1235 p
+ 360 1235 p
+ 363 1235 p
+ 380 1235 p
+ 383 1235 p
+ 21 1234 p
+ 362 1234 p
+ 361 1234 p
+ 363 1234 p
+ 366 1234 p
+ 384 1234 p
+ 386 1234 p
+ 22 1233 p
+ 365 1233 p
+ 364 1233 p
+ 366 1233 p
+ 369 1233 p
+ 387 1233 p
+ 389 1233 p
+ 23 1232 p
+ 368 1232 p
+ 367 1232 p
+ 369 1232 p
+ 372 1232 p
+ 390 1232 p
+ 392 1232 p
+ 24 1231 p
+ 371 1231 p
+ 370 1231 p
+ 372 1231 p
+ 375 1231 p
+ 393 1231 p
+ 395 1231 p
+ 25 1230 p
+ 374 1230 p
+ 373 1230 p
+ 375 1230 p
+ 378 1230 p
+ 396 1230 p
+ 398 1230 p
+ 26 1229 p
+ 377 1229 p
+ 376 1229 p
+ 378 1229 p
+ 399 1229 p
+ 402 1229 p
+ 404 1229 p
+ 27 1228 p
+ 382 1228 p
+ 381 1228 p
+ 406 1228 p
+ 408 1228 p
+ 28 1227 p
+ 380 1227 p
+ 379 1227 p
+ 382 1227 p
+ 385 1227 p
+ 405 1227 p
+ 410 1227 p
+ 29 1226 p
+ 384 1226 p
+ 383 1226 p
+ 385 1226 p
+ 388 1226 p
+ 409 1226 p
+ 413 1226 p
+ 30 1225 p
+ 387 1225 p
+ 386 1225 p
+ 388 1225 p
+ 391 1225 p
+ 412 1225 p
+ 415 1225 p
+ 31 1224 p
+ 390 1224 p
+ 389 1224 p
+ 391 1224 p
+ 394 1224 p
+ 416 1224 p
+ 418 1224 p
+ 32 1223 p
+ 393 1223 p
+ 392 1223 p
+ 394 1223 p
+ 397 1223 p
+ 419 1223 p
+ 421 1223 p
+ 33 1222 p
+ 396 1222 p
+ 395 1222 p
+ 397 1222 p
+ 400 1222 p
+ 422 1222 p
+ 424 1222 p
+ 34 1221 p
+ 399 1221 p
+ 398 1221 p
+ 400 1221 p
+ 401 1221 p
+ 425 1221 p
+ 427 1221 p
+ 35 1220 p
+ 402 1220 p
+ 401 1220 p
+ 403 1220 p
+ 428 1220 p
+ 430 1220 p
+ 36 1219 p
+ 404 1219 p
+ 403 1219 p
+ 431 1219 p
+ 434 1219 p
+ 37 1218 p
+ 407 1218 p
+ 408 1218 p
+ 436 1218 p
+ 438 1218 p
+ 38 1217 p
+ 405 1217 p
+ 406 1217 p
+ 407 1217 p
+ 411 1217 p
+ 435 1217 p
+ 440 1217 p
+ 39 1216 p
+ 409 1216 p
+ 410 1216 p
+ 411 1216 p
+ 414 1216 p
+ 439 1216 p
+ 443 1216 p
+ 40 1215 p
+ 412 1215 p
+ 413 1215 p
+ 414 1215 p
+ 417 1215 p
+ 442 1215 p
+ 446 1215 p
+ 41 1214 p
+ 416 1214 p
+ 415 1214 p
+ 417 1214 p
+ 420 1214 p
+ 445 1214 p
+ 449 1214 p
+ 42 1213 p
+ 419 1213 p
+ 418 1213 p
+ 420 1213 p
+ 423 1213 p
+ 448 1213 p
+ 452 1213 p
+ 43 1212 p
+ 422 1212 p
+ 421 1212 p
+ 423 1212 p
+ 426 1212 p
+ 451 1212 p
+ 455 1212 p
+ 44 1211 p
+ 425 1211 p
+ 424 1211 p
+ 426 1211 p
+ 429 1211 p
+ 454 1211 p
+ 457 1211 p
+ 45 1210 p
+ 428 1210 p
+ 427 1210 p
+ 429 1210 p
+ 432 1210 p
+ 458 1210 p
+ 460 1210 p
+ 46 1209 p
+ 431 1209 p
+ 430 1209 p
+ 432 1209 p
+ 433 1209 p
+ 461 1209 p
+ 464 1209 p
+ 465 1209 p
+ 47 1208 p
+ 434 1208 p
+ 433 1208 p
+ 466 1208 p
+ 470 1208 p
+ 469 1208 p
+ 48 1207 p
+ 437 1207 p
+ 438 1207 p
+ 475 1207 p
+ 477 1207 p
+ 49 1206 p
+ 435 1206 p
+ 436 1206 p
+ 437 1206 p
+ 441 1206 p
+ 474 1206 p
+ 479 1206 p
+ 50 1205 p
+ 439 1205 p
+ 440 1205 p
+ 441 1205 p
+ 444 1205 p
+ 478 1205 p
+ 482 1205 p
+ 51 1204 p
+ 442 1204 p
+ 443 1204 p
+ 444 1204 p
+ 447 1204 p
+ 481 1204 p
+ 485 1204 p
+ 52 1203 p
+ 445 1203 p
+ 446 1203 p
+ 447 1203 p
+ 450 1203 p
+ 484 1203 p
+ 488 1203 p
+ 53 1202 p
+ 448 1202 p
+ 449 1202 p
+ 450 1202 p
+ 453 1202 p
+ 487 1202 p
+ 491 1202 p
+ 54 1201 p
+ 451 1201 p
+ 452 1201 p
+ 453 1201 p
+ 456 1201 p
+ 490 1201 p
+ 494 1201 p
+ 55 1200 p
+ 454 1200 p
+ 455 1200 p
+ 456 1200 p
+ 459 1200 p
+ 493 1200 p
+ 497 1200 p
+ 56 1199 p
+ 458 1199 p
+ 457 1199 p
+ 459 1199 p
+ 462 1199 p
+ 496 1199 p
+ 500 1199 p
+ 57 1198 p
+ 461 1198 p
+ 460 1198 p
+ 462 1198 p
+ 463 1198 p
+ 499 1198 p
+ 503 1198 p
+ 58 1197 p
+ 464 1197 p
+ 463 1197 p
+ 467 1197 p
+ 502 1197 p
+ 507 1197 p
+ 59 1196 p
+ 466 1196 p
+ 465 1196 p
+ 467 1196 p
+ 471 1196 p
+ 506 1196 p
+ 60 1195 p
+ 468 1195 p
+ 470 1195 p
+ 471 1195 p
+ 473 1195 p
+ 505 1195 p
+ 509 1195 p
+ 61 1194 p
+ 472 1194 p
+ 473 1194 p
+ 511 1194 p
+ 62 1193 p
+ 476 1193 p
+ 477 1193 p
+ 513 1193 p
+ 515 1193 p
+ 63 1192 p
+ 474 1192 p
+ 475 1192 p
+ 476 1192 p
+ 480 1192 p
+ 512 1192 p
+ 517 1192 p
+ 64 1191 p
+ 478 1191 p
+ 479 1191 p
+ 480 1191 p
+ 483 1191 p
+ 516 1191 p
+ 520 1191 p
+ 65 1190 p
+ 481 1190 p
+ 482 1190 p
+ 483 1190 p
+ 486 1190 p
+ 519 1190 p
+ 523 1190 p
+ 66 1189 p
+ 484 1189 p
+ 485 1189 p
+ 486 1189 p
+ 489 1189 p
+ 522 1189 p
+ 526 1189 p
+ 67 1188 p
+ 487 1188 p
+ 488 1188 p
+ 489 1188 p
+ 492 1188 p
+ 525 1188 p
+ 529 1188 p
+ 68 1187 p
+ 490 1187 p
+ 491 1187 p
+ 492 1187 p
+ 495 1187 p
+ 528 1187 p
+ 532 1187 p
+ 69 1186 p
+ 493 1186 p
+ 494 1186 p
+ 495 1186 p
+ 498 1186 p
+ 531 1186 p
+ 535 1186 p
+ 70 1185 p
+ 496 1185 p
+ 497 1185 p
+ 498 1185 p
+ 501 1185 p
+ 534 1185 p
+ 538 1185 p
+ 71 1184 p
+ 499 1184 p
+ 500 1184 p
+ 501 1184 p
+ 504 1184 p
+ 537 1184 p
+ 541 1184 p
+ 72 1183 p
+ 502 1183 p
+ 503 1183 p
+ 504 1183 p
+ 508 1183 p
+ 540 1183 p
+ 544 1183 p
+ 73 1182 p
+ 505 1182 p
+ 506 1182 p
+ 507 1182 p
+ 508 1182 p
+ 510 1182 p
+ 543 1182 p
+ 547 1182 p
+ 74 1181 p
+ 509 1181 p
+ 510 1181 p
+ 511 1181 p
+ 546 1181 p
+ 75 1180 p
+ 514 1180 p
+ 515 1180 p
+ 550 1180 p
+ 76 1179 p
+ 512 1179 p
+ 513 1179 p
+ 514 1179 p
+ 518 1179 p
+ 549 1179 p
+ 552 1179 p
+ 77 1178 p
+ 516 1178 p
+ 517 1178 p
+ 518 1178 p
+ 521 1178 p
+ 551 1178 p
+ 555 1178 p
+ 78 1177 p
+ 519 1177 p
+ 520 1177 p
+ 521 1177 p
+ 524 1177 p
+ 554 1177 p
+ 558 1177 p
+ 79 1176 p
+ 522 1176 p
+ 523 1176 p
+ 524 1176 p
+ 527 1176 p
+ 557 1176 p
+ 561 1176 p
+ 80 1175 p
+ 525 1175 p
+ 526 1175 p
+ 527 1175 p
+ 530 1175 p
+ 560 1175 p
+ 564 1175 p
+ 81 1174 p
+ 528 1174 p
+ 529 1174 p
+ 530 1174 p
+ 533 1174 p
+ 563 1174 p
+ 567 1174 p
+ 82 1173 p
+ 531 1173 p
+ 532 1173 p
+ 533 1173 p
+ 536 1173 p
+ 566 1173 p
+ 570 1173 p
+ 83 1172 p
+ 534 1172 p
+ 535 1172 p
+ 536 1172 p
+ 539 1172 p
+ 569 1172 p
+ 573 1172 p
+ 84 1171 p
+ 537 1171 p
+ 538 1171 p
+ 539 1171 p
+ 542 1171 p
+ 572 1171 p
+ 576 1171 p
+ 85 1170 p
+ 540 1170 p
+ 541 1170 p
+ 542 1170 p
+ 545 1170 p
+ 575 1170 p
+ 579 1170 p
+ 86 1169 p
+ 543 1169 p
+ 544 1169 p
+ 545 1169 p
+ 548 1169 p
+ 578 1169 p
+ 582 1169 p
+ 87 1168 p
+ 546 1168 p
+ 547 1168 p
+ 548 1168 p
+ 581 1168 p
+ 584 1168 p
+ 88 1167 p
+ 549 1167 p
+ 550 1167 p
+ 553 1167 p
+ 587 1167 p
+ 89 1166 p
+ 551 1166 p
+ 552 1166 p
+ 553 1166 p
+ 556 1166 p
+ 586 1166 p
+ 589 1166 p
+ 90 1165 p
+ 554 1165 p
+ 555 1165 p
+ 556 1165 p
+ 559 1165 p
+ 588 1165 p
+ 592 1165 p
+ 91 1164 p
+ 557 1164 p
+ 558 1164 p
+ 559 1164 p
+ 562 1164 p
+ 591 1164 p
+ 595 1164 p
+ 92 1163 p
+ 560 1163 p
+ 561 1163 p
+ 562 1163 p
+ 565 1163 p
+ 594 1163 p
+ 598 1163 p
+ 93 1162 p
+ 563 1162 p
+ 564 1162 p
+ 565 1162 p
+ 568 1162 p
+ 597 1162 p
+ 601 1162 p
+ 94 1161 p
+ 566 1161 p
+ 567 1161 p
+ 568 1161 p
+ 571 1161 p
+ 600 1161 p
+ 604 1161 p
+ 95 1160 p
+ 569 1160 p
+ 570 1160 p
+ 571 1160 p
+ 574 1160 p
+ 603 1160 p
+ 607 1160 p
+ 96 1159 p
+ 572 1159 p
+ 573 1159 p
+ 574 1159 p
+ 577 1159 p
+ 606 1159 p
+ 610 1159 p
+ 97 1158 p
+ 575 1158 p
+ 576 1158 p
+ 577 1158 p
+ 580 1158 p
+ 609 1158 p
+ 613 1158 p
+ 98 1157 p
+ 578 1157 p
+ 579 1157 p
+ 580 1157 p
+ 583 1157 p
+ 612 1157 p
+ 616 1157 p
+ 99 1156 p
+ 581 1156 p
+ 582 1156 p
+ 583 1156 p
+ 585 1156 p
+ 615 1156 p
+ 619 1156 p
+ 100 1155 p
+ 584 1155 p
+ 585 1155 p
+ 618 1155 p
+ 621 1155 p
+ 101 1154 p
+ 586 1154 p
+ 587 1154 p
+ 590 1154 p
+ 624 1154 p
+ 102 1153 p
+ 588 1153 p
+ 589 1153 p
+ 590 1153 p
+ 593 1153 p
+ 623 1153 p
+ 626 1153 p
+ 103 1152 p
+ 591 1152 p
+ 592 1152 p
+ 593 1152 p
+ 596 1152 p
+ 625 1152 p
+ 629 1152 p
+ 104 1151 p
+ 594 1151 p
+ 595 1151 p
+ 596 1151 p
+ 599 1151 p
+ 628 1151 p
+ 632 1151 p
+ 105 1150 p
+ 597 1150 p
+ 598 1150 p
+ 599 1150 p
+ 602 1150 p
+ 631 1150 p
+ 635 1150 p
+ 106 1149 p
+ 600 1149 p
+ 601 1149 p
+ 602 1149 p
+ 605 1149 p
+ 634 1149 p
+ 638 1149 p
+ 107 1148 p
+ 603 1148 p
+ 604 1148 p
+ 605 1148 p
+ 608 1148 p
+ 637 1148 p
+ 641 1148 p
+ 108 1147 p
+ 606 1147 p
+ 607 1147 p
+ 608 1147 p
+ 611 1147 p
+ 640 1147 p
+ 644 1147 p
+ 109 1146 p
+ 609 1146 p
+ 610 1146 p
+ 611 1146 p
+ 614 1146 p
+ 643 1146 p
+ 647 1146 p
+ 110 1145 p
+ 612 1145 p
+ 613 1145 p
+ 614 1145 p
+ 617 1145 p
+ 646 1145 p
+ 650 1145 p
+ 111 1144 p
+ 615 1144 p
+ 616 1144 p
+ 617 1144 p
+ 620 1144 p
+ 649 1144 p
+ 653 1144 p
+ 112 1143 p
+ 618 1143 p
+ 619 1143 p
+ 620 1143 p
+ 622 1143 p
+ 652 1143 p
+ 656 1143 p
+ 113 1142 p
+ 621 1142 p
+ 622 1142 p
+ 655 1142 p
+ 658 1142 p
+ 114 1141 p
+ 623 1141 p
+ 624 1141 p
+ 627 1141 p
+ 661 1141 p
+ 115 1140 p
+ 625 1140 p
+ 626 1140 p
+ 627 1140 p
+ 630 1140 p
+ 660 1140 p
+ 663 1140 p
+ 116 1139 p
+ 628 1139 p
+ 629 1139 p
+ 630 1139 p
+ 633 1139 p
+ 662 1139 p
+ 666 1139 p
+ 117 1138 p
+ 631 1138 p
+ 632 1138 p
+ 633 1138 p
+ 636 1138 p
+ 665 1138 p
+ 669 1138 p
+ 118 1137 p
+ 634 1137 p
+ 635 1137 p
+ 636 1137 p
+ 639 1137 p
+ 668 1137 p
+ 119 1136 p
+ 637 1136 p
+ 638 1136 p
+ 639 1136 p
+ 642 1136 p
+ 671 1136 p
+ 673 1136 p
+ 120 1135 p
+ 640 1135 p
+ 641 1135 p
+ 642 1135 p
+ 645 1135 p
+ 672 1135 p
+ 676 1135 p
+ 121 1134 p
+ 643 1134 p
+ 644 1134 p
+ 645 1134 p
+ 648 1134 p
+ 675 1134 p
+ 679 1134 p
+ 122 1133 p
+ 646 1133 p
+ 647 1133 p
+ 648 1133 p
+ 651 1133 p
+ 678 1133 p
+ 682 1133 p
+ 123 1132 p
+ 649 1132 p
+ 650 1132 p
+ 651 1132 p
+ 654 1132 p
+ 681 1132 p
+ 685 1132 p
+ 124 1131 p
+ 652 1131 p
+ 653 1131 p
+ 654 1131 p
+ 657 1131 p
+ 684 1131 p
+ 688 1131 p
+ 125 1130 p
+ 655 1130 p
+ 656 1130 p
+ 657 1130 p
+ 659 1130 p
+ 687 1130 p
+ 691 1130 p
+ 693 1130 p
+ 126 1129 p
+ 658 1129 p
+ 659 1129 p
+ 692 1129 p
+ 695 1129 p
+ 127 1128 p
+ 660 1128 p
+ 661 1128 p
+ 664 1128 p
+ 698 1128 p
+ 128 1127 p
+ 662 1127 p
+ 663 1127 p
+ 664 1127 p
+ 667 1127 p
+ 697 1127 p
+ 129 1126 p
+ 665 1126 p
+ 666 1126 p
+ 667 1126 p
+ 670 1126 p
+ 699 1126 p
+ 701 1126 p
+ 130 1125 p
+ 668 1125 p
+ 669 1125 p
+ 670 1125 p
+ 671 1125 p
+ 674 1125 p
+ 700 1125 p
+ 704 1125 p
+ 131 1124 p
+ 672 1124 p
+ 673 1124 p
+ 674 1124 p
+ 677 1124 p
+ 703 1124 p
+ 707 1124 p
+ 132 1123 p
+ 675 1123 p
+ 676 1123 p
+ 677 1123 p
+ 680 1123 p
+ 706 1123 p
+ 710 1123 p
+ 133 1122 p
+ 678 1122 p
+ 679 1122 p
+ 680 1122 p
+ 683 1122 p
+ 709 1122 p
+ 713 1122 p
+ 134 1121 p
+ 681 1121 p
+ 682 1121 p
+ 683 1121 p
+ 686 1121 p
+ 712 1121 p
+ 716 1121 p
+ 135 1120 p
+ 684 1120 p
+ 685 1120 p
+ 686 1120 p
+ 689 1120 p
+ 715 1120 p
+ 719 1120 p
+ 136 1119 p
+ 687 1119 p
+ 688 1119 p
+ 689 1119 p
+ 690 1119 p
+ 718 1119 p
+ 722 1119 p
+ 137 1118 p
+ 691 1118 p
+ 690 1118 p
+ 694 1118 p
+ 721 1118 p
+ 725 1118 p
+ 138 1117 p
+ 692 1117 p
+ 693 1117 p
+ 694 1117 p
+ 696 1117 p
+ 724 1117 p
+ 728 1117 p
+ 139 1116 p
+ 695 1116 p
+ 696 1116 p
+ 727 1116 p
+ 730 1116 p
+ 140 1115 p
+ 697 1115 p
+ 698 1115 p
+ 699 1115 p
+ 702 1115 p
+ 735 1115 p
+ 141 1114 p
+ 700 1114 p
+ 701 1114 p
+ 702 1114 p
+ 705 1114 p
+ 734 1114 p
+ 142 1113 p
+ 703 1113 p
+ 704 1113 p
+ 705 1113 p
+ 708 1113 p
+ 736 1113 p
+ 738 1113 p
+ 143 1112 p
+ 706 1112 p
+ 707 1112 p
+ 708 1112 p
+ 711 1112 p
+ 737 1112 p
+ 741 1112 p
+ 144 1111 p
+ 709 1111 p
+ 710 1111 p
+ 711 1111 p
+ 714 1111 p
+ 740 1111 p
+ 744 1111 p
+ 145 1110 p
+ 712 1110 p
+ 713 1110 p
+ 714 1110 p
+ 717 1110 p
+ 743 1110 p
+ 747 1110 p
+ 146 1109 p
+ 715 1109 p
+ 716 1109 p
+ 717 1109 p
+ 720 1109 p
+ 746 1109 p
+ 750 1109 p
+ 147 1108 p
+ 718 1108 p
+ 719 1108 p
+ 720 1108 p
+ 723 1108 p
+ 749 1108 p
+ 753 1108 p
+ 148 1107 p
+ 721 1107 p
+ 722 1107 p
+ 723 1107 p
+ 726 1107 p
+ 752 1107 p
+ 757 1107 p
+ 149 1106 p
+ 724 1106 p
+ 725 1106 p
+ 726 1106 p
+ 729 1106 p
+ 756 1106 p
+ 150 1105 p
+ 727 1105 p
+ 728 1105 p
+ 729 1105 p
+ 731 1105 p
+ 733 1105 p
+ 755 1105 p
+ 759 1105 p
+ 151 1104 p
+ 732 1104 p
+ 733 1104 p
+ 761 1104 p
+ 152 1103 p
+ 734 1103 p
+ 735 1103 p
+ 736 1103 p
+ 739 1103 p
+ 763 1103 p
+ 153 1102 p
+ 737 1102 p
+ 738 1102 p
+ 739 1102 p
+ 742 1102 p
+ 762 1102 p
+ 154 1101 p
+ 740 1101 p
+ 741 1101 p
+ 742 1101 p
+ 745 1101 p
+ 764 1101 p
+ 766 1101 p
+ 155 1100 p
+ 743 1100 p
+ 744 1100 p
+ 745 1100 p
+ 748 1100 p
+ 765 1100 p
+ 769 1100 p
+ 156 1099 p
+ 746 1099 p
+ 747 1099 p
+ 748 1099 p
+ 751 1099 p
+ 768 1099 p
+ 772 1099 p
+ 157 1098 p
+ 749 1098 p
+ 750 1098 p
+ 751 1098 p
+ 754 1098 p
+ 771 1098 p
+ 775 1098 p
+ 158 1097 p
+ 752 1097 p
+ 753 1097 p
+ 754 1097 p
+ 758 1097 p
+ 774 1097 p
+ 778 1097 p
+ 159 1096 p
+ 755 1096 p
+ 756 1096 p
+ 757 1096 p
+ 758 1096 p
+ 760 1096 p
+ 777 1096 p
+ 781 1096 p
+ 160 1095 p
+ 759 1095 p
+ 760 1095 p
+ 761 1095 p
+ 780 1095 p
+ 161 1094 p
+ 762 1094 p
+ 763 1094 p
+ 764 1094 p
+ 767 1094 p
+ 784 1094 p
+ 162 1093 p
+ 765 1093 p
+ 766 1093 p
+ 767 1093 p
+ 770 1093 p
+ 783 1093 p
+ 163 1092 p
+ 768 1092 p
+ 769 1092 p
+ 770 1092 p
+ 773 1092 p
+ 785 1092 p
+ 787 1092 p
+ 164 1091 p
+ 771 1091 p
+ 772 1091 p
+ 773 1091 p
+ 776 1091 p
+ 786 1091 p
+ 790 1091 p
+ 165 1090 p
+ 774 1090 p
+ 775 1090 p
+ 776 1090 p
+ 779 1090 p
+ 789 1090 p
+ 793 1090 p
+ 166 1089 p
+ 777 1089 p
+ 778 1089 p
+ 779 1089 p
+ 782 1089 p
+ 792 1089 p
+ 796 1089 p
+ 167 1088 p
+ 780 1088 p
+ 781 1088 p
+ 782 1088 p
+ 795 1088 p
+ 168 1087 p
+ 783 1087 p
+ 784 1087 p
+ 785 1087 p
+ 788 1087 p
+ 803 1087 p
+ 802 1087 p
+ 805 1087 p
+ 169 1086 p
+ 786 1086 p
+ 787 1086 p
+ 788 1086 p
+ 791 1086 p
+ 804 1086 p
+ 808 1086 p
+ 170 1085 p
+ 789 1085 p
+ 790 1085 p
+ 791 1085 p
+ 794 1085 p
+ 807 1085 p
+ 811 1085 p
+ 171 1084 p
+ 792 1084 p
+ 793 1084 p
+ 794 1084 p
+ 797 1084 p
+ 810 1084 p
+ 814 1084 p
+ 172 1083 p
+ 795 1083 p
+ 796 1083 p
+ 797 1083 p
+ 813 1083 p
+ 816 1083 p
+ 173 1082 p
+ 801 1082 p
+ 803 1082 p
+ 822 1082 p
+ 821 1082 p
+ 824 1082 p
+ 174 1081 p
+ 802 1081 p
+ 801 1081 p
+ 806 1081 p
+ 826 1081 p
+ 828 1081 p
+ 175 1080 p
+ 804 1080 p
+ 805 1080 p
+ 806 1080 p
+ 809 1080 p
+ 827 1080 p
+ 831 1080 p
+ 176 1079 p
+ 807 1079 p
+ 808 1079 p
+ 809 1079 p
+ 812 1079 p
+ 830 1079 p
+ 834 1079 p
+ 177 1078 p
+ 810 1078 p
+ 811 1078 p
+ 812 1078 p
+ 815 1078 p
+ 833 1078 p
+ 837 1078 p
+ 178 1077 p
+ 813 1077 p
+ 814 1077 p
+ 815 1077 p
+ 817 1077 p
+ 836 1077 p
+ 840 1077 p
+ 179 1076 p
+ 816 1076 p
+ 817 1076 p
+ 839 1076 p
+ 842 1076 p
+ 180 1075 p
+ 823 1075 p
+ 822 1075 p
+ 850 1075 p
+ 849 1075 p
+ 852 1075 p
+ 181 1074 p
+ 821 1074 p
+ 823 1074 p
+ 825 1074 p
+ 854 1074 p
+ 855 1074 p
+ 182 1073 p
+ 824 1073 p
+ 825 1073 p
+ 826 1073 p
+ 829 1073 p
+ 857 1073 p
+ 858 1073 p
+ 183 1072 p
+ 827 1072 p
+ 828 1072 p
+ 829 1072 p
+ 832 1072 p
+ 860 1072 p
+ 861 1072 p
+ 184 1071 p
+ 830 1071 p
+ 831 1071 p
+ 832 1071 p
+ 835 1071 p
+ 863 1071 p
+ 864 1071 p
+ 185 1070 p
+ 833 1070 p
+ 834 1070 p
+ 835 1070 p
+ 838 1070 p
+ 866 1070 p
+ 868 1070 p
+ 186 1069 p
+ 836 1069 p
+ 837 1069 p
+ 838 1069 p
+ 841 1069 p
+ 867 1069 p
+ 871 1069 p
+ 187 1068 p
+ 839 1068 p
+ 840 1068 p
+ 841 1068 p
+ 843 1068 p
+ 870 1068 p
+ 873 1068 p
+ 876 1068 p
+ 188 1067 p
+ 842 1067 p
+ 843 1067 p
+ 875 1067 p
+ 878 1067 p
+ 189 1066 p
+ 851 1066 p
+ 850 1066 p
+ 883 1066 p
+ 885 1066 p
+ 886 1066 p
+ 190 1065 p
+ 849 1065 p
+ 851 1065 p
+ 853 1065 p
+ 887 1065 p
+ 889 1065 p
+ 191 1064 p
+ 852 1064 p
+ 853 1064 p
+ 854 1064 p
+ 856 1064 p
+ 891 1064 p
+ 892 1064 p
+ 192 1063 p
+ 855 1063 p
+ 856 1063 p
+ 857 1063 p
+ 859 1063 p
+ 894 1063 p
+ 895 1063 p
+ 193 1062 p
+ 858 1062 p
+ 859 1062 p
+ 860 1062 p
+ 862 1062 p
+ 897 1062 p
+ 898 1062 p
+ 194 1061 p
+ 861 1061 p
+ 862 1061 p
+ 863 1061 p
+ 865 1061 p
+ 900 1061 p
+ 901 1061 p
+ 195 1060 p
+ 864 1060 p
+ 865 1060 p
+ 866 1060 p
+ 869 1060 p
+ 903 1060 p
+ 904 1060 p
+ 196 1059 p
+ 867 1059 p
+ 868 1059 p
+ 869 1059 p
+ 872 1059 p
+ 906 1059 p
+ 907 1059 p
+ 197 1058 p
+ 870 1058 p
+ 871 1058 p
+ 872 1058 p
+ 874 1058 p
+ 909 1058 p
+ 910 1058 p
+ 198 1057 p
+ 873 1057 p
+ 874 1057 p
+ 877 1057 p
+ 912 1057 p
+ 913 1057 p
+ 199 1056 p
+ 875 1056 p
+ 876 1056 p
+ 877 1056 p
+ 879 1056 p
+ 881 1056 p
+ 915 1056 p
+ 916 1056 p
+ 200 1055 p
+ 878 1055 p
+ 879 1055 p
+ 880 1055 p
+ 201 1054 p
+ 884 1054 p
+ 883 1054 p
+ 923 1054 p
+ 925 1054 p
+ 202 1053 p
+ 885 1053 p
+ 884 1053 p
+ 888 1053 p
+ 924 1053 p
+ 927 1053 p
+ 203 1052 p
+ 887 1052 p
+ 886 1052 p
+ 888 1052 p
+ 890 1052 p
+ 928 1052 p
+ 930 1052 p
+ 204 1051 p
+ 889 1051 p
+ 890 1051 p
+ 891 1051 p
+ 893 1051 p
+ 931 1051 p
+ 933 1051 p
+ 935 1051 p
+ 205 1050 p
+ 892 1050 p
+ 893 1050 p
+ 894 1050 p
+ 896 1050 p
+ 937 1050 p
+ 938 1050 p
+ 206 1049 p
+ 895 1049 p
+ 896 1049 p
+ 897 1049 p
+ 899 1049 p
+ 940 1049 p
+ 941 1049 p
+ 207 1048 p
+ 898 1048 p
+ 899 1048 p
+ 900 1048 p
+ 902 1048 p
+ 943 1048 p
+ 944 1048 p
+ 208 1047 p
+ 901 1047 p
+ 902 1047 p
+ 903 1047 p
+ 905 1047 p
+ 946 1047 p
+ 947 1047 p
+ 209 1046 p
+ 904 1046 p
+ 905 1046 p
+ 906 1046 p
+ 908 1046 p
+ 949 1046 p
+ 950 1046 p
+ 210 1045 p
+ 907 1045 p
+ 908 1045 p
+ 909 1045 p
+ 911 1045 p
+ 952 1045 p
+ 955 1045 p
+ 211 1044 p
+ 910 1044 p
+ 911 1044 p
+ 912 1044 p
+ 914 1044 p
+ 953 1044 p
+ 212 1043 p
+ 913 1043 p
+ 914 1043 p
+ 915 1043 p
+ 917 1043 p
+ 954 1043 p
+ 957 1043 p
+ 213 1042 p
+ 916 1042 p
+ 917 1042 p
+ 918 1042 p
+ 958 1042 p
+ 214 1041 p
+ 926 1041 p
+ 925 1041 p
+ 964 1041 p
+ 966 1041 p
+ 215 1040 p
+ 924 1040 p
+ 923 1040 p
+ 926 1040 p
+ 929 1040 p
+ 965 1040 p
+ 969 1040 p
+ 216 1039 p
+ 928 1039 p
+ 927 1039 p
+ 929 1039 p
+ 932 1039 p
+ 968 1039 p
+ 972 1039 p
+ 217 1038 p
+ 931 1038 p
+ 930 1038 p
+ 932 1038 p
+ 934 1038 p
+ 971 1038 p
+ 975 1038 p
+ 218 1037 p
+ 933 1037 p
+ 934 1037 p
+ 936 1037 p
+ 974 1037 p
+ 977 1037 p
+ 219 1036 p
+ 935 1036 p
+ 936 1036 p
+ 937 1036 p
+ 939 1036 p
+ 979 1036 p
+ 980 1036 p
+ 220 1035 p
+ 938 1035 p
+ 939 1035 p
+ 940 1035 p
+ 942 1035 p
+ 982 1035 p
+ 983 1035 p
+ 221 1034 p
+ 941 1034 p
+ 942 1034 p
+ 943 1034 p
+ 945 1034 p
+ 985 1034 p
+ 986 1034 p
+ 222 1033 p
+ 944 1033 p
+ 945 1033 p
+ 946 1033 p
+ 948 1033 p
+ 988 1033 p
+ 989 1033 p
+ 223 1032 p
+ 947 1032 p
+ 948 1032 p
+ 949 1032 p
+ 951 1032 p
+ 991 1032 p
+ 992 1032 p
+ 224 1031 p
+ 950 1031 p
+ 951 1031 p
+ 952 1031 p
+ 956 1031 p
+ 994 1031 p
+ 995 1031 p
+ 225 1030 p
+ 954 1030 p
+ 953 1030 p
+ 955 1030 p
+ 956 1030 p
+ 959 1030 p
+ 997 1030 p
+ 998 1030 p
+ 226 1029 p
+ 958 1029 p
+ 957 1029 p
+ 959 1029 p
+ 1000 1029 p
+ 227 1028 p
+ 967 1028 p
+ 966 1028 p
+ 1004 1028 p
+ 1006 1028 p
+ 228 1027 p
+ 965 1027 p
+ 964 1027 p
+ 967 1027 p
+ 970 1027 p
+ 1003 1027 p
+ 1008 1027 p
+ 229 1026 p
+ 968 1026 p
+ 969 1026 p
+ 970 1026 p
+ 973 1026 p
+ 1007 1026 p
+ 1011 1026 p
+ 230 1025 p
+ 971 1025 p
+ 972 1025 p
+ 973 1025 p
+ 976 1025 p
+ 1010 1025 p
+ 1014 1025 p
+ 231 1024 p
+ 974 1024 p
+ 975 1024 p
+ 976 1024 p
+ 978 1024 p
+ 1013 1024 p
+ 1017 1024 p
+ 232 1023 p
+ 977 1023 p
+ 978 1023 p
+ 979 1023 p
+ 981 1023 p
+ 1016 1023 p
+ 1019 1023 p
+ 233 1022 p
+ 980 1022 p
+ 981 1022 p
+ 982 1022 p
+ 984 1022 p
+ 1020 1022 p
+ 1022 1022 p
+ 234 1021 p
+ 983 1021 p
+ 984 1021 p
+ 985 1021 p
+ 987 1021 p
+ 1024 1021 p
+ 1025 1021 p
+ 235 1020 p
+ 986 1020 p
+ 987 1020 p
+ 988 1020 p
+ 990 1020 p
+ 1027 1020 p
+ 1028 1020 p
+ 236 1019 p
+ 989 1019 p
+ 990 1019 p
+ 991 1019 p
+ 993 1019 p
+ 1030 1019 p
+ 1031 1019 p
+ 237 1018 p
+ 992 1018 p
+ 993 1018 p
+ 994 1018 p
+ 996 1018 p
+ 1033 1018 p
+ 1034 1018 p
+ 238 1017 p
+ 995 1017 p
+ 996 1017 p
+ 997 1017 p
+ 999 1017 p
+ 1036 1017 p
+ 1037 1017 p
+ 239 1016 p
+ 998 1016 p
+ 999 1016 p
+ 1000 1016 p
+ 1039 1016 p
+ 240 1015 p
+ 1005 1015 p
+ 1006 1015 p
+ 1043 1015 p
+ 1045 1015 p
+ 241 1014 p
+ 1003 1014 p
+ 1004 1014 p
+ 1005 1014 p
+ 1009 1014 p
+ 1042 1014 p
+ 1047 1014 p
+ 242 1013 p
+ 1007 1013 p
+ 1008 1013 p
+ 1009 1013 p
+ 1012 1013 p
+ 1046 1013 p
+ 1050 1013 p
+ 243 1012 p
+ 1010 1012 p
+ 1011 1012 p
+ 1012 1012 p
+ 1015 1012 p
+ 1049 1012 p
+ 1053 1012 p
+ 244 1011 p
+ 1013 1011 p
+ 1014 1011 p
+ 1015 1011 p
+ 1018 1011 p
+ 1052 1011 p
+ 1056 1011 p
+ 245 1010 p
+ 1016 1010 p
+ 1017 1010 p
+ 1018 1010 p
+ 1021 1010 p
+ 1055 1010 p
+ 1059 1010 p
+ 246 1009 p
+ 1020 1009 p
+ 1019 1009 p
+ 1021 1009 p
+ 1023 1009 p
+ 1058 1009 p
+ 1061 1009 p
+ 247 1008 p
+ 1022 1008 p
+ 1023 1008 p
+ 1024 1008 p
+ 1026 1008 p
+ 1062 1008 p
+ 1064 1008 p
+ 248 1007 p
+ 1025 1007 p
+ 1026 1007 p
+ 1027 1007 p
+ 1029 1007 p
+ 1066 1007 p
+ 1067 1007 p
+ 249 1006 p
+ 1028 1006 p
+ 1029 1006 p
+ 1030 1006 p
+ 1032 1006 p
+ 1069 1006 p
+ 1070 1006 p
+ 250 1005 p
+ 1031 1005 p
+ 1032 1005 p
+ 1033 1005 p
+ 1035 1005 p
+ 1072 1005 p
+ 1073 1005 p
+ 251 1004 p
+ 1034 1004 p
+ 1035 1004 p
+ 1036 1004 p
+ 1038 1004 p
+ 1075 1004 p
+ 1076 1004 p
+ 252 1003 p
+ 1037 1003 p
+ 1038 1003 p
+ 1039 1003 p
+ 1078 1003 p
+ 253 1002 p
+ 1044 1002 p
+ 1045 1002 p
+ 1085 1002 p
+ 254 1001 p
+ 1042 1001 p
+ 1043 1001 p
+ 1044 1001 p
+ 1048 1001 p
+ 1084 1001 p
+ 1087 1001 p
+ 255 1000 p
+ 1046 1000 p
+ 1047 1000 p
+ 1048 1000 p
+ 1051 1000 p
+ 1086 1000 p
+ 1090 1000 p
+ 256 999 p
+ 1049 999 p
+ 1050 999 p
+ 1051 999 p
+ 1054 999 p
+ 1089 999 p
+ 1093 999 p
+ 257 998 p
+ 1052 998 p
+ 1053 998 p
+ 1054 998 p
+ 1057 998 p
+ 1092 998 p
+ 1096 998 p
+ 258 997 p
+ 1055 997 p
+ 1056 997 p
+ 1057 997 p
+ 1060 997 p
+ 1095 997 p
+ 1099 997 p
+ 259 996 p
+ 1058 996 p
+ 1059 996 p
+ 1060 996 p
+ 1063 996 p
+ 1098 996 p
+ 1102 996 p
+ 260 995 p
+ 1062 995 p
+ 1061 995 p
+ 1063 995 p
+ 1065 995 p
+ 1101 995 p
+ 1104 995 p
+ 261 994 p
+ 1064 994 p
+ 1065 994 p
+ 1066 994 p
+ 1068 994 p
+ 1105 994 p
+ 1107 994 p
+ 262 993 p
+ 1067 993 p
+ 1068 993 p
+ 1069 993 p
+ 1071 993 p
+ 1109 993 p
+ 1110 993 p
+ 263 992 p
+ 1070 992 p
+ 1071 992 p
+ 1072 992 p
+ 1074 992 p
+ 1112 992 p
+ 1113 992 p
+ 264 991 p
+ 1073 991 p
+ 1074 991 p
+ 1075 991 p
+ 1077 991 p
+ 1115 991 p
+ 1116 991 p
+ 265 990 p
+ 1076 990 p
+ 1077 990 p
+ 1078 990 p
+ 1118 990 p
+ 1120 990 p
+ 266 989 p
+ 1084 989 p
+ 1085 989 p
+ 1088 989 p
+ 1123 989 p
+ 267 988 p
+ 1086 988 p
+ 1087 988 p
+ 1088 988 p
+ 1091 988 p
+ 1122 988 p
+ 1125 988 p
+ 268 987 p
+ 1089 987 p
+ 1090 987 p
+ 1091 987 p
+ 1094 987 p
+ 1124 987 p
+ 1128 987 p
+ 269 986 p
+ 1092 986 p
+ 1093 986 p
+ 1094 986 p
+ 1097 986 p
+ 1127 986 p
+ 1131 986 p
+ 270 985 p
+ 1095 985 p
+ 1096 985 p
+ 1097 985 p
+ 1100 985 p
+ 1130 985 p
+ 1134 985 p
+ 271 984 p
+ 1098 984 p
+ 1099 984 p
+ 1100 984 p
+ 1103 984 p
+ 1133 984 p
+ 1137 984 p
+ 272 983 p
+ 1101 983 p
+ 1102 983 p
+ 1103 983 p
+ 1106 983 p
+ 1136 983 p
+ 1140 983 p
+ 273 982 p
+ 1105 982 p
+ 1104 982 p
+ 1106 982 p
+ 1108 982 p
+ 1139 982 p
+ 1143 982 p
+ 274 981 p
+ 1107 981 p
+ 1108 981 p
+ 1109 981 p
+ 1111 981 p
+ 1142 981 p
+ 1145 981 p
+ 275 980 p
+ 1110 980 p
+ 1111 980 p
+ 1112 980 p
+ 1114 980 p
+ 1146 980 p
+ 1148 980 p
+ 276 979 p
+ 1113 979 p
+ 1114 979 p
+ 1115 979 p
+ 1117 979 p
+ 1149 979 p
+ 1151 979 p
+ 277 978 p
+ 1116 978 p
+ 1117 978 p
+ 1118 978 p
+ 1119 978 p
+ 1153 978 p
+ 1154 978 p
+ 1156 978 p
+ 278 977 p
+ 1120 977 p
+ 1119 977 p
+ 1158 977 p
+ 1162 977 p
+ 279 976 p
+ 1122 976 p
+ 1123 976 p
+ 1126 976 p
+ 1169 976 p
+ 280 975 p
+ 1124 975 p
+ 1125 975 p
+ 1126 975 p
+ 1129 975 p
+ 1168 975 p
+ 1171 975 p
+ 281 974 p
+ 1127 974 p
+ 1128 974 p
+ 1129 974 p
+ 1132 974 p
+ 1170 974 p
+ 1174 974 p
+ 282 973 p
+ 1130 973 p
+ 1131 973 p
+ 1132 973 p
+ 1135 973 p
+ 1173 973 p
+ 1177 973 p
+ 283 972 p
+ 1133 972 p
+ 1134 972 p
+ 1135 972 p
+ 1138 972 p
+ 1176 972 p
+ 1180 972 p
+ 284 971 p
+ 1136 971 p
+ 1137 971 p
+ 1138 971 p
+ 1141 971 p
+ 1179 971 p
+ 1183 971 p
+ 285 970 p
+ 1139 970 p
+ 1140 970 p
+ 1141 970 p
+ 1144 970 p
+ 1182 970 p
+ 1186 970 p
+ 286 969 p
+ 1142 969 p
+ 1143 969 p
+ 1144 969 p
+ 1147 969 p
+ 1185 969 p
+ 1189 969 p
+ 287 968 p
+ 1146 968 p
+ 1145 968 p
+ 1147 968 p
+ 1150 968 p
+ 1188 968 p
+ 1191 968 p
+ 288 967 p
+ 1149 967 p
+ 1148 967 p
+ 1150 967 p
+ 1152 967 p
+ 1192 967 p
+ 1196 967 p
+ 289 966 p
+ 1151 966 p
+ 1152 966 p
+ 1153 966 p
+ 1155 966 p
+ 1194 966 p
+ 290 965 p
+ 1154 965 p
+ 1155 965 p
+ 1157 965 p
+ 1195 965 p
+ 1200 965 p
+ 291 964 p
+ 1156 964 p
+ 1157 964 p
+ 1158 964 p
+ 1160 964 p
+ 1159 964 p
+ 1198 964 p
+ 292 963 p
+ 1159 963 p
+ 1161 963 p
+ 1162 963 p
+ 293 962 p
+ 1168 962 p
+ 1169 962 p
+ 1172 962 p
+ 1204 962 p
+ 294 961 p
+ 1170 961 p
+ 1171 961 p
+ 1172 961 p
+ 1175 961 p
+ 1203 961 p
+ 1206 961 p
+ 295 960 p
+ 1173 960 p
+ 1174 960 p
+ 1175 960 p
+ 1178 960 p
+ 1205 960 p
+ 1209 960 p
+ 296 959 p
+ 1176 959 p
+ 1177 959 p
+ 1178 959 p
+ 1181 959 p
+ 1208 959 p
+ 1212 959 p
+ 297 958 p
+ 1179 958 p
+ 1180 958 p
+ 1181 958 p
+ 1184 958 p
+ 1211 958 p
+ 1215 958 p
+ 298 957 p
+ 1182 957 p
+ 1183 957 p
+ 1184 957 p
+ 1187 957 p
+ 1214 957 p
+ 1218 957 p
+ 299 956 p
+ 1185 956 p
+ 1186 956 p
+ 1187 956 p
+ 1190 956 p
+ 1217 956 p
+ 1221 956 p
+ 300 955 p
+ 1188 955 p
+ 1189 955 p
+ 1190 955 p
+ 1193 955 p
+ 1220 955 p
+ 1223 955 p
+ 301 954 p
+ 1192 954 p
+ 1191 954 p
+ 1193 954 p
+ 1197 954 p
+ 1224 954 p
+ 1226 954 p
+ 302 953 p
+ 1195 953 p
+ 1194 953 p
+ 1196 953 p
+ 1197 953 p
+ 1201 953 p
+ 1227 953 p
+ 1229 953 p
+ 303 952 p
+ 1199 952 p
+ 1198 952 p
+ 1200 952 p
+ 1201 952 p
+ 1230 952 p
+ 304 951 p
+ 1203 951 p
+ 1204 951 p
+ 1207 951 p
+ 1237 951 p
+ 305 950 p
+ 1205 950 p
+ 1206 950 p
+ 1207 950 p
+ 1210 950 p
+ 1236 950 p
+ 1239 950 p
+ 306 949 p
+ 1208 949 p
+ 1209 949 p
+ 1210 949 p
+ 1213 949 p
+ 1238 949 p
+ 1242 949 p
+ 307 948 p
+ 1211 948 p
+ 1212 948 p
+ 1213 948 p
+ 1216 948 p
+ 1241 948 p
+ 1245 948 p
+ 308 947 p
+ 1214 947 p
+ 1215 947 p
+ 1216 947 p
+ 1219 947 p
+ 1244 947 p
+ 1247 947 p
+ 309 946 p
+ 1217 946 p
+ 1218 946 p
+ 1219 946 p
+ 1222 946 p
+ 1246 946 p
+ 1249 946 p
+ 310 945 p
+ 1220 945 p
+ 1221 945 p
+ 1222 945 p
+ 1225 945 p
+ 1248 945 p
+ 1251 945 p
+ 311 944 p
+ 1224 944 p
+ 1223 944 p
+ 1225 944 p
+ 1228 944 p
+ 1250 944 p
+ 1254 944 p
+ 312 943 p
+ 1227 943 p
+ 1226 943 p
+ 1228 943 p
+ 1231 943 p
+ 1253 943 p
+ 313 942 p
+ 1230 942 p
+ 1229 942 p
+ 1231 942 p
+ 1252 942 p
+ 314 941 p
+ 1236 941 p
+ 1237 941 p
+ 1240 941 p
+ 1255 941 p
+ 315 940 p
+ 1235 940 p
+ 1234 940 p
+ 1238 940 p
+ 1239 940 p
+ 1240 940 p
+ 1243 940 p
+ 316 939 p
+ 1166 939 p
+ 1165 939 p
+ 1167 939 p
+ 1241 939 p
+ 1242 939 p
+ 1243 939 p
+ 317 938 p
+ 1082 938 p
+ 1081 938 p
+ 1083 938 p
+ 1167 938 p
+ 1244 938 p
+ 1245 938 p
+ 318 937 p
+ 1002 937 p
+ 1001 937 p
+ 1040 937 p
+ 1083 937 p
+ 1246 937 p
+ 1247 937 p
+ 319 936 p
+ 922 936 p
+ 921 936 p
+ 960 936 p
+ 1040 936 p
+ 1248 936 p
+ 1249 936 p
+ 320 935 p
+ 847 935 p
+ 846 935 p
+ 848 935 p
+ 960 935 p
+ 1250 935 p
+ 1251 935 p
+ 321 934 p
+ 819 934 p
+ 818 934 p
+ 848 934 p
+ 1252 934 p
+ 1253 934 p
+ 1254 934 p
+ 322 933 p
+ 1233 933 p
+ 1232 933 p
+ 1235 933 p
+ 1255 933 p
+ 323 932 p
+ 1164 932 p
+ 1163 932 p
+ 1166 932 p
+ 1202 932 p
+ 1232 932 p
+ 1234 932 p
+ 324 931 p
+ 1080 931 p
+ 1079 931 p
+ 1082 931 p
+ 1121 931 p
+ 1163 931 p
+ 1165 931 p
+ 325 930 p
+ 963 930 p
+ 962 930 p
+ 1002 930 p
+ 1041 930 p
+ 1079 930 p
+ 1081 930 p
+ 326 929 p
+ 920 929 p
+ 919 929 p
+ 922 929 p
+ 961 929 p
+ 962 929 p
+ 1001 929 p
+ 327 928 p
+ 845 928 p
+ 844 928 p
+ 847 928 p
+ 882 928 p
+ 919 928 p
+ 921 928 p
+ 328 927 p
+ 798 927 p
+ 800 927 p
+ 819 927 p
+ 820 927 p
+ 844 927 p
+ 846 927 p
+ 329 926 p
+ 800 926 p
+ 799 926 p
+ 818 926 p
+ 330 925 p
+ 331 925 p
+ 332 925 p
+ 333 925 p
+ 334 925 p
+ 4 925 p
+ 12 925 p
+ 330 924 p
+ 331 924 p
+ 332 924 p
+ 338 924 p
+ 335 924 p
+ 12 924 p
+ 5 924 p
+ 330 923 p
+ 331 923 p
+ 332 923 p
+ 1164 923 p
+ 1202 923 p
+ 4 923 p
+ 5 923 p
+ 333 922 p
+ 334 922 p
+ 330 922 p
+ 4 922 p
+ 11 922 p
+ 333 921 p
+ 334 921 p
+ 330 921 p
+ 357 921 p
+ 358 921 p
+ 11 921 p
+ 12 921 p
+ 335 920 p
+ 336 920 p
+ 337 920 p
+ 331 920 p
+ 338 920 p
+ 5 920 p
+ 13 920 p
+ 335 919 p
+ 336 919 p
+ 337 919 p
+ 342 919 p
+ 339 919 p
+ 13 919 p
+ 6 919 p
+ 335 918 p
+ 336 918 p
+ 337 918 p
+ 1080 918 p
+ 1121 918 p
+ 5 918 p
+ 6 918 p
+ 331 917 p
+ 338 917 p
+ 335 917 p
+ 361 917 p
+ 362 917 p
+ 12 917 p
+ 13 917 p
+ 339 916 p
+ 340 916 p
+ 341 916 p
+ 336 916 p
+ 342 916 p
+ 6 916 p
+ 14 916 p
+ 339 915 p
+ 340 915 p
+ 341 915 p
+ 346 915 p
+ 343 915 p
+ 14 915 p
+ 7 915 p
+ 339 914 p
+ 340 914 p
+ 341 914 p
+ 963 914 p
+ 1041 914 p
+ 6 914 p
+ 7 914 p
+ 336 913 p
+ 342 913 p
+ 339 913 p
+ 364 913 p
+ 365 913 p
+ 13 913 p
+ 14 913 p
+ 343 912 p
+ 344 912 p
+ 345 912 p
+ 340 912 p
+ 346 912 p
+ 7 912 p
+ 15 912 p
+ 343 911 p
+ 344 911 p
+ 345 911 p
+ 350 911 p
+ 347 911 p
+ 15 911 p
+ 8 911 p
+ 343 910 p
+ 344 910 p
+ 345 910 p
+ 920 910 p
+ 961 910 p
+ 7 910 p
+ 8 910 p
+ 340 909 p
+ 346 909 p
+ 343 909 p
+ 367 909 p
+ 368 909 p
+ 14 909 p
+ 15 909 p
+ 347 908 p
+ 348 908 p
+ 349 908 p
+ 344 908 p
+ 350 908 p
+ 8 908 p
+ 16 908 p
+ 347 907 p
+ 348 907 p
+ 349 907 p
+ 354 907 p
+ 351 907 p
+ 16 907 p
+ 9 907 p
+ 347 906 p
+ 348 906 p
+ 349 906 p
+ 845 906 p
+ 882 906 p
+ 8 906 p
+ 9 906 p
+ 344 905 p
+ 350 905 p
+ 347 905 p
+ 370 905 p
+ 371 905 p
+ 15 905 p
+ 16 905 p
+ 351 904 p
+ 352 904 p
+ 353 904 p
+ 348 904 p
+ 354 904 p
+ 9 904 p
+ 17 904 p
+ 351 903 p
+ 352 903 p
+ 353 903 p
+ 355 903 p
+ 356 903 p
+ 17 903 p
+ 10 903 p
+ 351 902 p
+ 352 902 p
+ 353 902 p
+ 798 902 p
+ 820 902 p
+ 9 902 p
+ 10 902 p
+ 348 901 p
+ 354 901 p
+ 351 901 p
+ 373 901 p
+ 374 901 p
+ 16 901 p
+ 17 901 p
+ 355 900 p
+ 356 900 p
+ 352 900 p
+ 376 900 p
+ 377 900 p
+ 17 900 p
+ 18 900 p
+ 355 899 p
+ 356 899 p
+ 352 899 p
+ 18 899 p
+ 10 899 p
+ 357 898 p
+ 358 898 p
+ 334 898 p
+ 359 898 p
+ 360 898 p
+ 11 898 p
+ 20 898 p
+ 357 897 p
+ 358 897 p
+ 334 897 p
+ 363 897 p
+ 361 897 p
+ 20 897 p
+ 12 897 p
+ 359 896 p
+ 360 896 p
+ 357 896 p
+ 11 896 p
+ 19 896 p
+ 359 895 p
+ 360 895 p
+ 357 895 p
+ 379 895 p
+ 380 895 p
+ 19 895 p
+ 20 895 p
+ 361 894 p
+ 362 894 p
+ 338 894 p
+ 358 894 p
+ 363 894 p
+ 12 894 p
+ 21 894 p
+ 361 893 p
+ 362 893 p
+ 338 893 p
+ 366 893 p
+ 364 893 p
+ 21 893 p
+ 13 893 p
+ 358 892 p
+ 363 892 p
+ 361 892 p
+ 383 892 p
+ 384 892 p
+ 20 892 p
+ 21 892 p
+ 364 891 p
+ 365 891 p
+ 342 891 p
+ 362 891 p
+ 366 891 p
+ 13 891 p
+ 22 891 p
+ 364 890 p
+ 365 890 p
+ 342 890 p
+ 369 890 p
+ 367 890 p
+ 22 890 p
+ 14 890 p
+ 362 889 p
+ 366 889 p
+ 364 889 p
+ 386 889 p
+ 387 889 p
+ 21 889 p
+ 22 889 p
+ 367 888 p
+ 368 888 p
+ 346 888 p
+ 365 888 p
+ 369 888 p
+ 14 888 p
+ 23 888 p
+ 367 887 p
+ 368 887 p
+ 346 887 p
+ 372 887 p
+ 370 887 p
+ 23 887 p
+ 15 887 p
+ 365 886 p
+ 369 886 p
+ 367 886 p
+ 389 886 p
+ 390 886 p
+ 22 886 p
+ 23 886 p
+ 370 885 p
+ 371 885 p
+ 350 885 p
+ 368 885 p
+ 372 885 p
+ 15 885 p
+ 24 885 p
+ 370 884 p
+ 371 884 p
+ 350 884 p
+ 375 884 p
+ 373 884 p
+ 24 884 p
+ 16 884 p
+ 368 883 p
+ 372 883 p
+ 370 883 p
+ 392 883 p
+ 393 883 p
+ 23 883 p
+ 24 883 p
+ 373 882 p
+ 374 882 p
+ 354 882 p
+ 371 882 p
+ 375 882 p
+ 16 882 p
+ 25 882 p
+ 373 881 p
+ 374 881 p
+ 354 881 p
+ 378 881 p
+ 376 881 p
+ 25 881 p
+ 17 881 p
+ 371 880 p
+ 375 880 p
+ 373 880 p
+ 395 880 p
+ 396 880 p
+ 24 880 p
+ 25 880 p
+ 376 879 p
+ 377 879 p
+ 355 879 p
+ 374 879 p
+ 378 879 p
+ 17 879 p
+ 26 879 p
+ 376 878 p
+ 377 878 p
+ 355 878 p
+ 26 878 p
+ 18 878 p
+ 374 877 p
+ 378 877 p
+ 376 877 p
+ 398 877 p
+ 399 877 p
+ 25 877 p
+ 26 877 p
+ 379 876 p
+ 380 876 p
+ 360 876 p
+ 381 876 p
+ 382 876 p
+ 19 876 p
+ 28 876 p
+ 379 875 p
+ 380 875 p
+ 360 875 p
+ 385 875 p
+ 383 875 p
+ 28 875 p
+ 20 875 p
+ 381 874 p
+ 382 874 p
+ 379 874 p
+ 19 874 p
+ 27 874 p
+ 381 873 p
+ 382 873 p
+ 379 873 p
+ 405 873 p
+ 406 873 p
+ 27 873 p
+ 28 873 p
+ 383 872 p
+ 384 872 p
+ 363 872 p
+ 380 872 p
+ 385 872 p
+ 20 872 p
+ 29 872 p
+ 383 871 p
+ 384 871 p
+ 363 871 p
+ 388 871 p
+ 386 871 p
+ 29 871 p
+ 21 871 p
+ 380 870 p
+ 385 870 p
+ 383 870 p
+ 409 870 p
+ 410 870 p
+ 28 870 p
+ 29 870 p
+ 386 869 p
+ 387 869 p
+ 366 869 p
+ 384 869 p
+ 388 869 p
+ 21 869 p
+ 30 869 p
+ 386 868 p
+ 387 868 p
+ 366 868 p
+ 391 868 p
+ 389 868 p
+ 30 868 p
+ 22 868 p
+ 384 867 p
+ 388 867 p
+ 386 867 p
+ 412 867 p
+ 413 867 p
+ 29 867 p
+ 30 867 p
+ 389 866 p
+ 390 866 p
+ 369 866 p
+ 387 866 p
+ 391 866 p
+ 22 866 p
+ 31 866 p
+ 389 865 p
+ 390 865 p
+ 369 865 p
+ 394 865 p
+ 392 865 p
+ 31 865 p
+ 23 865 p
+ 387 864 p
+ 391 864 p
+ 389 864 p
+ 415 864 p
+ 416 864 p
+ 30 864 p
+ 31 864 p
+ 392 863 p
+ 393 863 p
+ 372 863 p
+ 390 863 p
+ 394 863 p
+ 23 863 p
+ 32 863 p
+ 392 862 p
+ 393 862 p
+ 372 862 p
+ 397 862 p
+ 395 862 p
+ 32 862 p
+ 24 862 p
+ 390 861 p
+ 394 861 p
+ 392 861 p
+ 418 861 p
+ 419 861 p
+ 31 861 p
+ 32 861 p
+ 395 860 p
+ 396 860 p
+ 375 860 p
+ 393 860 p
+ 397 860 p
+ 24 860 p
+ 33 860 p
+ 395 859 p
+ 396 859 p
+ 375 859 p
+ 400 859 p
+ 398 859 p
+ 33 859 p
+ 25 859 p
+ 393 858 p
+ 397 858 p
+ 395 858 p
+ 421 858 p
+ 422 858 p
+ 32 858 p
+ 33 858 p
+ 398 857 p
+ 399 857 p
+ 378 857 p
+ 396 857 p
+ 400 857 p
+ 25 857 p
+ 34 857 p
+ 398 856 p
+ 399 856 p
+ 378 856 p
+ 401 856 p
+ 402 856 p
+ 34 856 p
+ 26 856 p
+ 396 855 p
+ 400 855 p
+ 398 855 p
+ 424 855 p
+ 425 855 p
+ 33 855 p
+ 34 855 p
+ 401 854 p
+ 402 854 p
+ 399 854 p
+ 427 854 p
+ 428 854 p
+ 34 854 p
+ 35 854 p
+ 401 853 p
+ 402 853 p
+ 399 853 p
+ 403 853 p
+ 404 853 p
+ 35 853 p
+ 26 853 p
+ 403 852 p
+ 404 852 p
+ 402 852 p
+ 430 852 p
+ 431 852 p
+ 35 852 p
+ 36 852 p
+ 403 851 p
+ 404 851 p
+ 402 851 p
+ 36 851 p
+ 26 851 p
+ 405 850 p
+ 382 850 p
+ 406 850 p
+ 411 850 p
+ 410 850 p
+ 38 850 p
+ 28 850 p
+ 405 849 p
+ 382 849 p
+ 406 849 p
+ 407 849 p
+ 408 849 p
+ 38 849 p
+ 27 849 p
+ 407 848 p
+ 406 848 p
+ 408 848 p
+ 435 848 p
+ 436 848 p
+ 37 848 p
+ 38 848 p
+ 407 847 p
+ 406 847 p
+ 408 847 p
+ 37 847 p
+ 27 847 p
+ 409 846 p
+ 385 846 p
+ 410 846 p
+ 414 846 p
+ 413 846 p
+ 39 846 p
+ 29 846 p
+ 409 845 p
+ 385 845 p
+ 410 845 p
+ 411 845 p
+ 405 845 p
+ 39 845 p
+ 28 845 p
+ 411 844 p
+ 410 844 p
+ 405 844 p
+ 439 844 p
+ 440 844 p
+ 38 844 p
+ 39 844 p
+ 412 843 p
+ 388 843 p
+ 413 843 p
+ 417 843 p
+ 415 843 p
+ 40 843 p
+ 30 843 p
+ 412 842 p
+ 388 842 p
+ 413 842 p
+ 414 842 p
+ 409 842 p
+ 40 842 p
+ 29 842 p
+ 414 841 p
+ 413 841 p
+ 409 841 p
+ 442 841 p
+ 443 841 p
+ 39 841 p
+ 40 841 p
+ 415 840 p
+ 416 840 p
+ 391 840 p
+ 412 840 p
+ 417 840 p
+ 30 840 p
+ 41 840 p
+ 415 839 p
+ 416 839 p
+ 391 839 p
+ 420 839 p
+ 418 839 p
+ 41 839 p
+ 31 839 p
+ 412 838 p
+ 417 838 p
+ 415 838 p
+ 445 838 p
+ 446 838 p
+ 40 838 p
+ 41 838 p
+ 418 837 p
+ 419 837 p
+ 394 837 p
+ 416 837 p
+ 420 837 p
+ 31 837 p
+ 42 837 p
+ 418 836 p
+ 419 836 p
+ 394 836 p
+ 423 836 p
+ 421 836 p
+ 42 836 p
+ 32 836 p
+ 416 835 p
+ 420 835 p
+ 418 835 p
+ 448 835 p
+ 449 835 p
+ 41 835 p
+ 42 835 p
+ 421 834 p
+ 422 834 p
+ 397 834 p
+ 419 834 p
+ 423 834 p
+ 32 834 p
+ 43 834 p
+ 421 833 p
+ 422 833 p
+ 397 833 p
+ 426 833 p
+ 424 833 p
+ 43 833 p
+ 33 833 p
+ 419 832 p
+ 423 832 p
+ 421 832 p
+ 451 832 p
+ 452 832 p
+ 42 832 p
+ 43 832 p
+ 424 831 p
+ 425 831 p
+ 400 831 p
+ 422 831 p
+ 426 831 p
+ 33 831 p
+ 44 831 p
+ 424 830 p
+ 425 830 p
+ 400 830 p
+ 429 830 p
+ 427 830 p
+ 44 830 p
+ 34 830 p
+ 422 829 p
+ 426 829 p
+ 424 829 p
+ 454 829 p
+ 455 829 p
+ 43 829 p
+ 44 829 p
+ 427 828 p
+ 428 828 p
+ 401 828 p
+ 425 828 p
+ 429 828 p
+ 34 828 p
+ 45 828 p
+ 427 827 p
+ 428 827 p
+ 401 827 p
+ 432 827 p
+ 430 827 p
+ 45 827 p
+ 35 827 p
+ 425 826 p
+ 429 826 p
+ 427 826 p
+ 457 826 p
+ 458 826 p
+ 44 826 p
+ 45 826 p
+ 430 825 p
+ 431 825 p
+ 403 825 p
+ 428 825 p
+ 432 825 p
+ 35 825 p
+ 46 825 p
+ 430 824 p
+ 431 824 p
+ 403 824 p
+ 433 824 p
+ 434 824 p
+ 46 824 p
+ 36 824 p
+ 428 823 p
+ 432 823 p
+ 430 823 p
+ 460 823 p
+ 461 823 p
+ 45 823 p
+ 46 823 p
+ 433 822 p
+ 434 822 p
+ 431 822 p
+ 465 822 p
+ 466 822 p
+ 46 822 p
+ 47 822 p
+ 433 821 p
+ 434 821 p
+ 431 821 p
+ 47 821 p
+ 36 821 p
+ 435 820 p
+ 407 820 p
+ 436 820 p
+ 441 820 p
+ 440 820 p
+ 49 820 p
+ 38 820 p
+ 435 819 p
+ 407 819 p
+ 436 819 p
+ 437 819 p
+ 438 819 p
+ 49 819 p
+ 37 819 p
+ 437 818 p
+ 436 818 p
+ 438 818 p
+ 474 818 p
+ 475 818 p
+ 48 818 p
+ 49 818 p
+ 437 817 p
+ 436 817 p
+ 438 817 p
+ 48 817 p
+ 37 817 p
+ 439 816 p
+ 411 816 p
+ 440 816 p
+ 444 816 p
+ 443 816 p
+ 50 816 p
+ 39 816 p
+ 439 815 p
+ 411 815 p
+ 440 815 p
+ 441 815 p
+ 435 815 p
+ 50 815 p
+ 38 815 p
+ 441 814 p
+ 440 814 p
+ 435 814 p
+ 478 814 p
+ 479 814 p
+ 49 814 p
+ 50 814 p
+ 442 813 p
+ 414 813 p
+ 443 813 p
+ 447 813 p
+ 446 813 p
+ 51 813 p
+ 40 813 p
+ 442 812 p
+ 414 812 p
+ 443 812 p
+ 444 812 p
+ 439 812 p
+ 51 812 p
+ 39 812 p
+ 444 811 p
+ 443 811 p
+ 439 811 p
+ 481 811 p
+ 482 811 p
+ 50 811 p
+ 51 811 p
+ 445 810 p
+ 417 810 p
+ 446 810 p
+ 450 810 p
+ 449 810 p
+ 52 810 p
+ 41 810 p
+ 445 809 p
+ 417 809 p
+ 446 809 p
+ 447 809 p
+ 442 809 p
+ 52 809 p
+ 40 809 p
+ 447 808 p
+ 446 808 p
+ 442 808 p
+ 484 808 p
+ 485 808 p
+ 51 808 p
+ 52 808 p
+ 448 807 p
+ 420 807 p
+ 449 807 p
+ 453 807 p
+ 452 807 p
+ 53 807 p
+ 42 807 p
+ 448 806 p
+ 420 806 p
+ 449 806 p
+ 450 806 p
+ 445 806 p
+ 53 806 p
+ 41 806 p
+ 450 805 p
+ 449 805 p
+ 445 805 p
+ 487 805 p
+ 488 805 p
+ 52 805 p
+ 53 805 p
+ 451 804 p
+ 423 804 p
+ 452 804 p
+ 456 804 p
+ 455 804 p
+ 54 804 p
+ 43 804 p
+ 451 803 p
+ 423 803 p
+ 452 803 p
+ 453 803 p
+ 448 803 p
+ 54 803 p
+ 42 803 p
+ 453 802 p
+ 452 802 p
+ 448 802 p
+ 490 802 p
+ 491 802 p
+ 53 802 p
+ 54 802 p
+ 454 801 p
+ 426 801 p
+ 455 801 p
+ 459 801 p
+ 457 801 p
+ 55 801 p
+ 44 801 p
+ 454 800 p
+ 426 800 p
+ 455 800 p
+ 456 800 p
+ 451 800 p
+ 55 800 p
+ 43 800 p
+ 456 799 p
+ 455 799 p
+ 451 799 p
+ 493 799 p
+ 494 799 p
+ 54 799 p
+ 55 799 p
+ 457 798 p
+ 458 798 p
+ 429 798 p
+ 454 798 p
+ 459 798 p
+ 44 798 p
+ 56 798 p
+ 457 797 p
+ 458 797 p
+ 429 797 p
+ 462 797 p
+ 460 797 p
+ 56 797 p
+ 45 797 p
+ 454 796 p
+ 459 796 p
+ 457 796 p
+ 496 796 p
+ 497 796 p
+ 55 796 p
+ 56 796 p
+ 460 795 p
+ 461 795 p
+ 432 795 p
+ 458 795 p
+ 462 795 p
+ 45 795 p
+ 57 795 p
+ 460 794 p
+ 461 794 p
+ 432 794 p
+ 463 794 p
+ 464 794 p
+ 57 794 p
+ 46 794 p
+ 458 793 p
+ 462 793 p
+ 460 793 p
+ 499 793 p
+ 500 793 p
+ 56 793 p
+ 57 793 p
+ 461 792 p
+ 463 792 p
+ 464 792 p
+ 502 792 p
+ 503 792 p
+ 57 792 p
+ 58 792 p
+ 461 791 p
+ 463 791 p
+ 464 791 p
+ 467 791 p
+ 465 791 p
+ 46 791 p
+ 58 791 p
+ 465 790 p
+ 466 790 p
+ 433 790 p
+ 464 790 p
+ 467 790 p
+ 46 790 p
+ 59 790 p
+ 465 789 p
+ 466 789 p
+ 433 789 p
+ 471 789 p
+ 470 789 p
+ 59 789 p
+ 47 789 p
+ 464 788 p
+ 467 788 p
+ 465 788 p
+ 506 788 p
+ 507 788 p
+ 58 788 p
+ 59 788 p
+ 468 787 p
+ 469 787 p
+ 470 787 p
+ 472 787 p
+ 473 787 p
+ 60 787 p
+ 2 787 p
+ 468 786 p
+ 469 786 p
+ 470 786 p
+ 2 786 p
+ 47 786 p
+ 468 785 p
+ 469 785 p
+ 470 785 p
+ 471 785 p
+ 466 785 p
+ 60 785 p
+ 47 785 p
+ 471 784 p
+ 470 784 p
+ 466 784 p
+ 505 784 p
+ 506 784 p
+ 59 784 p
+ 60 784 p
+ 472 783 p
+ 468 783 p
+ 473 783 p
+ 61 783 p
+ 2 783 p
+ 472 782 p
+ 468 782 p
+ 473 782 p
+ 509 782 p
+ 511 782 p
+ 61 782 p
+ 60 782 p
+ 474 781 p
+ 437 781 p
+ 475 781 p
+ 480 781 p
+ 479 781 p
+ 63 781 p
+ 49 781 p
+ 474 780 p
+ 437 780 p
+ 475 780 p
+ 476 780 p
+ 477 780 p
+ 63 780 p
+ 48 780 p
+ 476 779 p
+ 475 779 p
+ 477 779 p
+ 512 779 p
+ 513 779 p
+ 62 779 p
+ 63 779 p
+ 476 778 p
+ 475 778 p
+ 477 778 p
+ 62 778 p
+ 48 778 p
+ 478 777 p
+ 441 777 p
+ 479 777 p
+ 483 777 p
+ 482 777 p
+ 64 777 p
+ 50 777 p
+ 478 776 p
+ 441 776 p
+ 479 776 p
+ 480 776 p
+ 474 776 p
+ 64 776 p
+ 49 776 p
+ 480 775 p
+ 479 775 p
+ 474 775 p
+ 516 775 p
+ 517 775 p
+ 63 775 p
+ 64 775 p
+ 481 774 p
+ 444 774 p
+ 482 774 p
+ 486 774 p
+ 485 774 p
+ 65 774 p
+ 51 774 p
+ 481 773 p
+ 444 773 p
+ 482 773 p
+ 483 773 p
+ 478 773 p
+ 65 773 p
+ 50 773 p
+ 483 772 p
+ 482 772 p
+ 478 772 p
+ 519 772 p
+ 520 772 p
+ 64 772 p
+ 65 772 p
+ 484 771 p
+ 447 771 p
+ 485 771 p
+ 489 771 p
+ 488 771 p
+ 66 771 p
+ 52 771 p
+ 484 770 p
+ 447 770 p
+ 485 770 p
+ 486 770 p
+ 481 770 p
+ 66 770 p
+ 51 770 p
+ 486 769 p
+ 485 769 p
+ 481 769 p
+ 522 769 p
+ 523 769 p
+ 65 769 p
+ 66 769 p
+ 487 768 p
+ 450 768 p
+ 488 768 p
+ 492 768 p
+ 491 768 p
+ 67 768 p
+ 53 768 p
+ 487 767 p
+ 450 767 p
+ 488 767 p
+ 489 767 p
+ 484 767 p
+ 67 767 p
+ 52 767 p
+ 489 766 p
+ 488 766 p
+ 484 766 p
+ 525 766 p
+ 526 766 p
+ 66 766 p
+ 67 766 p
+ 490 765 p
+ 453 765 p
+ 491 765 p
+ 495 765 p
+ 494 765 p
+ 68 765 p
+ 54 765 p
+ 490 764 p
+ 453 764 p
+ 491 764 p
+ 492 764 p
+ 487 764 p
+ 68 764 p
+ 53 764 p
+ 492 763 p
+ 491 763 p
+ 487 763 p
+ 528 763 p
+ 529 763 p
+ 67 763 p
+ 68 763 p
+ 493 762 p
+ 456 762 p
+ 494 762 p
+ 498 762 p
+ 497 762 p
+ 69 762 p
+ 55 762 p
+ 493 761 p
+ 456 761 p
+ 494 761 p
+ 495 761 p
+ 490 761 p
+ 69 761 p
+ 54 761 p
+ 495 760 p
+ 494 760 p
+ 490 760 p
+ 531 760 p
+ 532 760 p
+ 68 760 p
+ 69 760 p
+ 496 759 p
+ 459 759 p
+ 497 759 p
+ 501 759 p
+ 500 759 p
+ 70 759 p
+ 56 759 p
+ 496 758 p
+ 459 758 p
+ 497 758 p
+ 498 758 p
+ 493 758 p
+ 70 758 p
+ 55 758 p
+ 498 757 p
+ 497 757 p
+ 493 757 p
+ 534 757 p
+ 535 757 p
+ 69 757 p
+ 70 757 p
+ 499 756 p
+ 462 756 p
+ 500 756 p
+ 504 756 p
+ 503 756 p
+ 71 756 p
+ 57 756 p
+ 499 755 p
+ 462 755 p
+ 500 755 p
+ 501 755 p
+ 496 755 p
+ 71 755 p
+ 56 755 p
+ 501 754 p
+ 500 754 p
+ 496 754 p
+ 537 754 p
+ 538 754 p
+ 70 754 p
+ 71 754 p
+ 502 753 p
+ 463 753 p
+ 503 753 p
+ 508 753 p
+ 507 753 p
+ 72 753 p
+ 58 753 p
+ 502 752 p
+ 463 752 p
+ 503 752 p
+ 504 752 p
+ 499 752 p
+ 72 752 p
+ 57 752 p
+ 504 751 p
+ 503 751 p
+ 499 751 p
+ 540 751 p
+ 541 751 p
+ 71 751 p
+ 72 751 p
+ 505 750 p
+ 471 750 p
+ 506 750 p
+ 509 750 p
+ 510 750 p
+ 73 750 p
+ 60 750 p
+ 505 749 p
+ 471 749 p
+ 506 749 p
+ 467 749 p
+ 507 749 p
+ 73 749 p
+ 59 749 p
+ 506 748 p
+ 467 748 p
+ 507 748 p
+ 508 748 p
+ 502 748 p
+ 73 748 p
+ 58 748 p
+ 508 747 p
+ 507 747 p
+ 502 747 p
+ 543 747 p
+ 544 747 p
+ 72 747 p
+ 73 747 p
+ 509 746 p
+ 505 746 p
+ 510 746 p
+ 473 746 p
+ 511 746 p
+ 74 746 p
+ 60 746 p
+ 509 745 p
+ 505 745 p
+ 510 745 p
+ 546 745 p
+ 547 745 p
+ 74 745 p
+ 73 745 p
+ 473 744 p
+ 509 744 p
+ 511 744 p
+ 61 744 p
+ 74 744 p
+ 512 743 p
+ 476 743 p
+ 513 743 p
+ 518 743 p
+ 517 743 p
+ 76 743 p
+ 63 743 p
+ 512 742 p
+ 476 742 p
+ 513 742 p
+ 514 742 p
+ 515 742 p
+ 76 742 p
+ 62 742 p
+ 514 741 p
+ 513 741 p
+ 515 741 p
+ 549 741 p
+ 550 741 p
+ 75 741 p
+ 76 741 p
+ 514 740 p
+ 513 740 p
+ 515 740 p
+ 75 740 p
+ 62 740 p
+ 516 739 p
+ 480 739 p
+ 517 739 p
+ 521 739 p
+ 520 739 p
+ 77 739 p
+ 64 739 p
+ 516 738 p
+ 480 738 p
+ 517 738 p
+ 518 738 p
+ 512 738 p
+ 77 738 p
+ 63 738 p
+ 518 737 p
+ 517 737 p
+ 512 737 p
+ 551 737 p
+ 552 737 p
+ 76 737 p
+ 77 737 p
+ 519 736 p
+ 483 736 p
+ 520 736 p
+ 524 736 p
+ 523 736 p
+ 78 736 p
+ 65 736 p
+ 519 735 p
+ 483 735 p
+ 520 735 p
+ 521 735 p
+ 516 735 p
+ 78 735 p
+ 64 735 p
+ 521 734 p
+ 520 734 p
+ 516 734 p
+ 554 734 p
+ 555 734 p
+ 77 734 p
+ 78 734 p
+ 522 733 p
+ 486 733 p
+ 523 733 p
+ 527 733 p
+ 526 733 p
+ 79 733 p
+ 66 733 p
+ 522 732 p
+ 486 732 p
+ 523 732 p
+ 524 732 p
+ 519 732 p
+ 79 732 p
+ 65 732 p
+ 524 731 p
+ 523 731 p
+ 519 731 p
+ 557 731 p
+ 558 731 p
+ 78 731 p
+ 79 731 p
+ 525 730 p
+ 489 730 p
+ 526 730 p
+ 530 730 p
+ 529 730 p
+ 80 730 p
+ 67 730 p
+ 525 729 p
+ 489 729 p
+ 526 729 p
+ 527 729 p
+ 522 729 p
+ 80 729 p
+ 66 729 p
+ 527 728 p
+ 526 728 p
+ 522 728 p
+ 560 728 p
+ 561 728 p
+ 79 728 p
+ 80 728 p
+ 528 727 p
+ 492 727 p
+ 529 727 p
+ 533 727 p
+ 532 727 p
+ 81 727 p
+ 68 727 p
+ 528 726 p
+ 492 726 p
+ 529 726 p
+ 530 726 p
+ 525 726 p
+ 81 726 p
+ 67 726 p
+ 530 725 p
+ 529 725 p
+ 525 725 p
+ 563 725 p
+ 564 725 p
+ 80 725 p
+ 81 725 p
+ 531 724 p
+ 495 724 p
+ 532 724 p
+ 536 724 p
+ 535 724 p
+ 82 724 p
+ 69 724 p
+ 531 723 p
+ 495 723 p
+ 532 723 p
+ 533 723 p
+ 528 723 p
+ 82 723 p
+ 68 723 p
+ 533 722 p
+ 532 722 p
+ 528 722 p
+ 566 722 p
+ 567 722 p
+ 81 722 p
+ 82 722 p
+ 534 721 p
+ 498 721 p
+ 535 721 p
+ 539 721 p
+ 538 721 p
+ 83 721 p
+ 70 721 p
+ 534 720 p
+ 498 720 p
+ 535 720 p
+ 536 720 p
+ 531 720 p
+ 83 720 p
+ 69 720 p
+ 536 719 p
+ 535 719 p
+ 531 719 p
+ 569 719 p
+ 570 719 p
+ 82 719 p
+ 83 719 p
+ 537 718 p
+ 501 718 p
+ 538 718 p
+ 542 718 p
+ 541 718 p
+ 84 718 p
+ 71 718 p
+ 537 717 p
+ 501 717 p
+ 538 717 p
+ 539 717 p
+ 534 717 p
+ 84 717 p
+ 70 717 p
+ 539 716 p
+ 538 716 p
+ 534 716 p
+ 572 716 p
+ 573 716 p
+ 83 716 p
+ 84 716 p
+ 540 715 p
+ 504 715 p
+ 541 715 p
+ 545 715 p
+ 544 715 p
+ 85 715 p
+ 72 715 p
+ 540 714 p
+ 504 714 p
+ 541 714 p
+ 542 714 p
+ 537 714 p
+ 85 714 p
+ 71 714 p
+ 542 713 p
+ 541 713 p
+ 537 713 p
+ 575 713 p
+ 576 713 p
+ 84 713 p
+ 85 713 p
+ 543 712 p
+ 508 712 p
+ 544 712 p
+ 548 712 p
+ 547 712 p
+ 86 712 p
+ 73 712 p
+ 543 711 p
+ 508 711 p
+ 544 711 p
+ 545 711 p
+ 540 711 p
+ 86 711 p
+ 72 711 p
+ 545 710 p
+ 544 710 p
+ 540 710 p
+ 578 710 p
+ 579 710 p
+ 85 710 p
+ 86 710 p
+ 546 709 p
+ 510 709 p
+ 547 709 p
+ 87 709 p
+ 74 709 p
+ 546 708 p
+ 510 708 p
+ 547 708 p
+ 548 708 p
+ 543 708 p
+ 87 708 p
+ 73 708 p
+ 548 707 p
+ 547 707 p
+ 543 707 p
+ 581 707 p
+ 582 707 p
+ 86 707 p
+ 87 707 p
+ 549 706 p
+ 514 706 p
+ 550 706 p
+ 553 706 p
+ 552 706 p
+ 88 706 p
+ 76 706 p
+ 549 705 p
+ 514 705 p
+ 550 705 p
+ 88 705 p
+ 75 705 p
+ 551 704 p
+ 518 704 p
+ 552 704 p
+ 556 704 p
+ 555 704 p
+ 89 704 p
+ 77 704 p
+ 551 703 p
+ 518 703 p
+ 552 703 p
+ 553 703 p
+ 549 703 p
+ 89 703 p
+ 76 703 p
+ 553 702 p
+ 552 702 p
+ 549 702 p
+ 586 702 p
+ 587 702 p
+ 88 702 p
+ 89 702 p
+ 554 701 p
+ 521 701 p
+ 555 701 p
+ 559 701 p
+ 558 701 p
+ 90 701 p
+ 78 701 p
+ 554 700 p
+ 521 700 p
+ 555 700 p
+ 556 700 p
+ 551 700 p
+ 90 700 p
+ 77 700 p
+ 556 699 p
+ 555 699 p
+ 551 699 p
+ 588 699 p
+ 589 699 p
+ 89 699 p
+ 90 699 p
+ 557 698 p
+ 524 698 p
+ 558 698 p
+ 562 698 p
+ 561 698 p
+ 91 698 p
+ 79 698 p
+ 557 697 p
+ 524 697 p
+ 558 697 p
+ 559 697 p
+ 554 697 p
+ 91 697 p
+ 78 697 p
+ 559 696 p
+ 558 696 p
+ 554 696 p
+ 591 696 p
+ 592 696 p
+ 90 696 p
+ 91 696 p
+ 560 695 p
+ 527 695 p
+ 561 695 p
+ 565 695 p
+ 564 695 p
+ 92 695 p
+ 80 695 p
+ 560 694 p
+ 527 694 p
+ 561 694 p
+ 562 694 p
+ 557 694 p
+ 92 694 p
+ 79 694 p
+ 562 693 p
+ 561 693 p
+ 557 693 p
+ 594 693 p
+ 595 693 p
+ 91 693 p
+ 92 693 p
+ 563 692 p
+ 530 692 p
+ 564 692 p
+ 568 692 p
+ 567 692 p
+ 93 692 p
+ 81 692 p
+ 563 691 p
+ 530 691 p
+ 564 691 p
+ 565 691 p
+ 560 691 p
+ 93 691 p
+ 80 691 p
+ 565 690 p
+ 564 690 p
+ 560 690 p
+ 597 690 p
+ 598 690 p
+ 92 690 p
+ 93 690 p
+ 566 689 p
+ 533 689 p
+ 567 689 p
+ 571 689 p
+ 570 689 p
+ 94 689 p
+ 82 689 p
+ 566 688 p
+ 533 688 p
+ 567 688 p
+ 568 688 p
+ 563 688 p
+ 94 688 p
+ 81 688 p
+ 568 687 p
+ 567 687 p
+ 563 687 p
+ 600 687 p
+ 601 687 p
+ 93 687 p
+ 94 687 p
+ 569 686 p
+ 536 686 p
+ 570 686 p
+ 574 686 p
+ 573 686 p
+ 95 686 p
+ 83 686 p
+ 569 685 p
+ 536 685 p
+ 570 685 p
+ 571 685 p
+ 566 685 p
+ 95 685 p
+ 82 685 p
+ 571 684 p
+ 570 684 p
+ 566 684 p
+ 603 684 p
+ 604 684 p
+ 94 684 p
+ 95 684 p
+ 572 683 p
+ 539 683 p
+ 573 683 p
+ 577 683 p
+ 576 683 p
+ 96 683 p
+ 84 683 p
+ 572 682 p
+ 539 682 p
+ 573 682 p
+ 574 682 p
+ 569 682 p
+ 96 682 p
+ 83 682 p
+ 574 681 p
+ 573 681 p
+ 569 681 p
+ 606 681 p
+ 607 681 p
+ 95 681 p
+ 96 681 p
+ 575 680 p
+ 542 680 p
+ 576 680 p
+ 580 680 p
+ 579 680 p
+ 97 680 p
+ 85 680 p
+ 575 679 p
+ 542 679 p
+ 576 679 p
+ 577 679 p
+ 572 679 p
+ 97 679 p
+ 84 679 p
+ 577 678 p
+ 576 678 p
+ 572 678 p
+ 609 678 p
+ 610 678 p
+ 96 678 p
+ 97 678 p
+ 578 677 p
+ 545 677 p
+ 579 677 p
+ 583 677 p
+ 582 677 p
+ 98 677 p
+ 86 677 p
+ 578 676 p
+ 545 676 p
+ 579 676 p
+ 580 676 p
+ 575 676 p
+ 98 676 p
+ 85 676 p
+ 580 675 p
+ 579 675 p
+ 575 675 p
+ 612 675 p
+ 613 675 p
+ 97 675 p
+ 98 675 p
+ 581 674 p
+ 548 674 p
+ 582 674 p
+ 584 674 p
+ 585 674 p
+ 99 674 p
+ 87 674 p
+ 581 673 p
+ 548 673 p
+ 582 673 p
+ 583 673 p
+ 578 673 p
+ 99 673 p
+ 86 673 p
+ 583 672 p
+ 582 672 p
+ 578 672 p
+ 615 672 p
+ 616 672 p
+ 98 672 p
+ 99 672 p
+ 584 671 p
+ 581 671 p
+ 585 671 p
+ 100 671 p
+ 87 671 p
+ 584 670 p
+ 581 670 p
+ 585 670 p
+ 618 670 p
+ 619 670 p
+ 100 670 p
+ 99 670 p
+ 586 669 p
+ 553 669 p
+ 587 669 p
+ 590 669 p
+ 589 669 p
+ 101 669 p
+ 89 669 p
+ 586 668 p
+ 553 668 p
+ 587 668 p
+ 101 668 p
+ 88 668 p
+ 588 667 p
+ 556 667 p
+ 589 667 p
+ 593 667 p
+ 592 667 p
+ 102 667 p
+ 90 667 p
+ 588 666 p
+ 556 666 p
+ 589 666 p
+ 590 666 p
+ 586 666 p
+ 102 666 p
+ 89 666 p
+ 590 665 p
+ 589 665 p
+ 586 665 p
+ 623 665 p
+ 624 665 p
+ 101 665 p
+ 102 665 p
+ 591 664 p
+ 559 664 p
+ 592 664 p
+ 596 664 p
+ 595 664 p
+ 103 664 p
+ 91 664 p
+ 591 663 p
+ 559 663 p
+ 592 663 p
+ 593 663 p
+ 588 663 p
+ 103 663 p
+ 90 663 p
+ 593 662 p
+ 592 662 p
+ 588 662 p
+ 625 662 p
+ 626 662 p
+ 102 662 p
+ 103 662 p
+ 594 661 p
+ 562 661 p
+ 595 661 p
+ 599 661 p
+ 598 661 p
+ 104 661 p
+ 92 661 p
+ 594 660 p
+ 562 660 p
+ 595 660 p
+ 596 660 p
+ 591 660 p
+ 104 660 p
+ 91 660 p
+ 596 659 p
+ 595 659 p
+ 591 659 p
+ 628 659 p
+ 629 659 p
+ 103 659 p
+ 104 659 p
+ 597 658 p
+ 565 658 p
+ 598 658 p
+ 602 658 p
+ 601 658 p
+ 105 658 p
+ 93 658 p
+ 597 657 p
+ 565 657 p
+ 598 657 p
+ 599 657 p
+ 594 657 p
+ 105 657 p
+ 92 657 p
+ 599 656 p
+ 598 656 p
+ 594 656 p
+ 631 656 p
+ 632 656 p
+ 104 656 p
+ 105 656 p
+ 600 655 p
+ 568 655 p
+ 601 655 p
+ 605 655 p
+ 604 655 p
+ 106 655 p
+ 94 655 p
+ 600 654 p
+ 568 654 p
+ 601 654 p
+ 602 654 p
+ 597 654 p
+ 106 654 p
+ 93 654 p
+ 602 653 p
+ 601 653 p
+ 597 653 p
+ 634 653 p
+ 635 653 p
+ 105 653 p
+ 106 653 p
+ 603 652 p
+ 571 652 p
+ 604 652 p
+ 608 652 p
+ 607 652 p
+ 107 652 p
+ 95 652 p
+ 603 651 p
+ 571 651 p
+ 604 651 p
+ 605 651 p
+ 600 651 p
+ 107 651 p
+ 94 651 p
+ 605 650 p
+ 604 650 p
+ 600 650 p
+ 637 650 p
+ 638 650 p
+ 106 650 p
+ 107 650 p
+ 606 649 p
+ 574 649 p
+ 607 649 p
+ 611 649 p
+ 610 649 p
+ 108 649 p
+ 96 649 p
+ 606 648 p
+ 574 648 p
+ 607 648 p
+ 608 648 p
+ 603 648 p
+ 108 648 p
+ 95 648 p
+ 608 647 p
+ 607 647 p
+ 603 647 p
+ 640 647 p
+ 641 647 p
+ 107 647 p
+ 108 647 p
+ 609 646 p
+ 577 646 p
+ 610 646 p
+ 614 646 p
+ 613 646 p
+ 109 646 p
+ 97 646 p
+ 609 645 p
+ 577 645 p
+ 610 645 p
+ 611 645 p
+ 606 645 p
+ 109 645 p
+ 96 645 p
+ 611 644 p
+ 610 644 p
+ 606 644 p
+ 643 644 p
+ 644 644 p
+ 108 644 p
+ 109 644 p
+ 612 643 p
+ 580 643 p
+ 613 643 p
+ 617 643 p
+ 616 643 p
+ 110 643 p
+ 98 643 p
+ 612 642 p
+ 580 642 p
+ 613 642 p
+ 614 642 p
+ 609 642 p
+ 110 642 p
+ 97 642 p
+ 614 641 p
+ 613 641 p
+ 609 641 p
+ 646 641 p
+ 647 641 p
+ 109 641 p
+ 110 641 p
+ 615 640 p
+ 583 640 p
+ 616 640 p
+ 620 640 p
+ 619 640 p
+ 111 640 p
+ 99 640 p
+ 615 639 p
+ 583 639 p
+ 616 639 p
+ 617 639 p
+ 612 639 p
+ 111 639 p
+ 98 639 p
+ 617 638 p
+ 616 638 p
+ 612 638 p
+ 649 638 p
+ 650 638 p
+ 110 638 p
+ 111 638 p
+ 618 637 p
+ 585 637 p
+ 619 637 p
+ 621 637 p
+ 622 637 p
+ 112 637 p
+ 100 637 p
+ 618 636 p
+ 585 636 p
+ 619 636 p
+ 620 636 p
+ 615 636 p
+ 112 636 p
+ 99 636 p
+ 620 635 p
+ 619 635 p
+ 615 635 p
+ 652 635 p
+ 653 635 p
+ 111 635 p
+ 112 635 p
+ 621 634 p
+ 618 634 p
+ 622 634 p
+ 113 634 p
+ 100 634 p
+ 621 633 p
+ 618 633 p
+ 622 633 p
+ 655 633 p
+ 656 633 p
+ 113 633 p
+ 112 633 p
+ 623 632 p
+ 590 632 p
+ 624 632 p
+ 627 632 p
+ 626 632 p
+ 114 632 p
+ 102 632 p
+ 623 631 p
+ 590 631 p
+ 624 631 p
+ 114 631 p
+ 101 631 p
+ 625 630 p
+ 593 630 p
+ 626 630 p
+ 630 630 p
+ 629 630 p
+ 115 630 p
+ 103 630 p
+ 625 629 p
+ 593 629 p
+ 626 629 p
+ 627 629 p
+ 623 629 p
+ 115 629 p
+ 102 629 p
+ 627 628 p
+ 626 628 p
+ 623 628 p
+ 660 628 p
+ 661 628 p
+ 114 628 p
+ 115 628 p
+ 628 627 p
+ 596 627 p
+ 629 627 p
+ 633 627 p
+ 632 627 p
+ 116 627 p
+ 104 627 p
+ 628 626 p
+ 596 626 p
+ 629 626 p
+ 630 626 p
+ 625 626 p
+ 116 626 p
+ 103 626 p
+ 630 625 p
+ 629 625 p
+ 625 625 p
+ 662 625 p
+ 663 625 p
+ 115 625 p
+ 116 625 p
+ 631 624 p
+ 599 624 p
+ 632 624 p
+ 636 624 p
+ 635 624 p
+ 117 624 p
+ 105 624 p
+ 631 623 p
+ 599 623 p
+ 632 623 p
+ 633 623 p
+ 628 623 p
+ 117 623 p
+ 104 623 p
+ 633 622 p
+ 632 622 p
+ 628 622 p
+ 665 622 p
+ 666 622 p
+ 116 622 p
+ 117 622 p
+ 634 621 p
+ 602 621 p
+ 635 621 p
+ 639 621 p
+ 638 621 p
+ 118 621 p
+ 106 621 p
+ 634 620 p
+ 602 620 p
+ 635 620 p
+ 636 620 p
+ 631 620 p
+ 118 620 p
+ 105 620 p
+ 636 619 p
+ 635 619 p
+ 631 619 p
+ 668 619 p
+ 669 619 p
+ 117 619 p
+ 118 619 p
+ 637 618 p
+ 605 618 p
+ 638 618 p
+ 642 618 p
+ 641 618 p
+ 119 618 p
+ 107 618 p
+ 637 617 p
+ 605 617 p
+ 638 617 p
+ 639 617 p
+ 634 617 p
+ 119 617 p
+ 106 617 p
+ 639 616 p
+ 638 616 p
+ 634 616 p
+ 671 616 p
+ 668 616 p
+ 118 616 p
+ 119 616 p
+ 640 615 p
+ 608 615 p
+ 641 615 p
+ 645 615 p
+ 644 615 p
+ 120 615 p
+ 108 615 p
+ 640 614 p
+ 608 614 p
+ 641 614 p
+ 642 614 p
+ 637 614 p
+ 120 614 p
+ 107 614 p
+ 642 613 p
+ 641 613 p
+ 637 613 p
+ 672 613 p
+ 673 613 p
+ 119 613 p
+ 120 613 p
+ 643 612 p
+ 611 612 p
+ 644 612 p
+ 648 612 p
+ 647 612 p
+ 121 612 p
+ 109 612 p
+ 643 611 p
+ 611 611 p
+ 644 611 p
+ 645 611 p
+ 640 611 p
+ 121 611 p
+ 108 611 p
+ 645 610 p
+ 644 610 p
+ 640 610 p
+ 675 610 p
+ 676 610 p
+ 120 610 p
+ 121 610 p
+ 646 609 p
+ 614 609 p
+ 647 609 p
+ 651 609 p
+ 650 609 p
+ 122 609 p
+ 110 609 p
+ 646 608 p
+ 614 608 p
+ 647 608 p
+ 648 608 p
+ 643 608 p
+ 122 608 p
+ 109 608 p
+ 648 607 p
+ 647 607 p
+ 643 607 p
+ 678 607 p
+ 679 607 p
+ 121 607 p
+ 122 607 p
+ 649 606 p
+ 617 606 p
+ 650 606 p
+ 654 606 p
+ 653 606 p
+ 123 606 p
+ 111 606 p
+ 649 605 p
+ 617 605 p
+ 650 605 p
+ 651 605 p
+ 646 605 p
+ 123 605 p
+ 110 605 p
+ 651 604 p
+ 650 604 p
+ 646 604 p
+ 681 604 p
+ 682 604 p
+ 122 604 p
+ 123 604 p
+ 652 603 p
+ 620 603 p
+ 653 603 p
+ 657 603 p
+ 656 603 p
+ 124 603 p
+ 112 603 p
+ 652 602 p
+ 620 602 p
+ 653 602 p
+ 654 602 p
+ 649 602 p
+ 124 602 p
+ 111 602 p
+ 654 601 p
+ 653 601 p
+ 649 601 p
+ 684 601 p
+ 685 601 p
+ 123 601 p
+ 124 601 p
+ 655 600 p
+ 622 600 p
+ 656 600 p
+ 658 600 p
+ 659 600 p
+ 125 600 p
+ 113 600 p
+ 655 599 p
+ 622 599 p
+ 656 599 p
+ 657 599 p
+ 652 599 p
+ 125 599 p
+ 112 599 p
+ 657 598 p
+ 656 598 p
+ 652 598 p
+ 687 598 p
+ 688 598 p
+ 124 598 p
+ 125 598 p
+ 658 597 p
+ 655 597 p
+ 659 597 p
+ 126 597 p
+ 113 597 p
+ 658 596 p
+ 655 596 p
+ 659 596 p
+ 692 596 p
+ 693 596 p
+ 126 596 p
+ 125 596 p
+ 660 595 p
+ 627 595 p
+ 661 595 p
+ 664 595 p
+ 663 595 p
+ 127 595 p
+ 115 595 p
+ 660 594 p
+ 627 594 p
+ 661 594 p
+ 127 594 p
+ 114 594 p
+ 662 593 p
+ 630 593 p
+ 663 593 p
+ 667 593 p
+ 666 593 p
+ 128 593 p
+ 116 593 p
+ 662 592 p
+ 630 592 p
+ 663 592 p
+ 664 592 p
+ 660 592 p
+ 128 592 p
+ 115 592 p
+ 664 591 p
+ 663 591 p
+ 660 591 p
+ 697 591 p
+ 698 591 p
+ 127 591 p
+ 128 591 p
+ 665 590 p
+ 633 590 p
+ 666 590 p
+ 670 590 p
+ 669 590 p
+ 129 590 p
+ 117 590 p
+ 665 589 p
+ 633 589 p
+ 666 589 p
+ 667 589 p
+ 662 589 p
+ 129 589 p
+ 116 589 p
+ 667 588 p
+ 666 588 p
+ 662 588 p
+ 699 588 p
+ 697 588 p
+ 128 588 p
+ 129 588 p
+ 668 587 p
+ 636 587 p
+ 669 587 p
+ 671 587 p
+ 639 587 p
+ 130 587 p
+ 118 587 p
+ 668 586 p
+ 636 586 p
+ 669 586 p
+ 670 586 p
+ 665 586 p
+ 130 586 p
+ 117 586 p
+ 670 585 p
+ 669 585 p
+ 665 585 p
+ 700 585 p
+ 701 585 p
+ 129 585 p
+ 130 585 p
+ 671 584 p
+ 639 584 p
+ 668 584 p
+ 674 584 p
+ 673 584 p
+ 130 584 p
+ 119 584 p
+ 672 583 p
+ 642 583 p
+ 673 583 p
+ 677 583 p
+ 676 583 p
+ 131 583 p
+ 120 583 p
+ 672 582 p
+ 642 582 p
+ 673 582 p
+ 674 582 p
+ 671 582 p
+ 131 582 p
+ 119 582 p
+ 674 581 p
+ 673 581 p
+ 671 581 p
+ 703 581 p
+ 704 581 p
+ 130 581 p
+ 131 581 p
+ 675 580 p
+ 645 580 p
+ 676 580 p
+ 680 580 p
+ 679 580 p
+ 132 580 p
+ 121 580 p
+ 675 579 p
+ 645 579 p
+ 676 579 p
+ 677 579 p
+ 672 579 p
+ 132 579 p
+ 120 579 p
+ 677 578 p
+ 676 578 p
+ 672 578 p
+ 706 578 p
+ 707 578 p
+ 131 578 p
+ 132 578 p
+ 678 577 p
+ 648 577 p
+ 679 577 p
+ 683 577 p
+ 682 577 p
+ 133 577 p
+ 122 577 p
+ 678 576 p
+ 648 576 p
+ 679 576 p
+ 680 576 p
+ 675 576 p
+ 133 576 p
+ 121 576 p
+ 680 575 p
+ 679 575 p
+ 675 575 p
+ 709 575 p
+ 710 575 p
+ 132 575 p
+ 133 575 p
+ 681 574 p
+ 651 574 p
+ 682 574 p
+ 686 574 p
+ 685 574 p
+ 134 574 p
+ 123 574 p
+ 681 573 p
+ 651 573 p
+ 682 573 p
+ 683 573 p
+ 678 573 p
+ 134 573 p
+ 122 573 p
+ 683 572 p
+ 682 572 p
+ 678 572 p
+ 712 572 p
+ 713 572 p
+ 133 572 p
+ 134 572 p
+ 684 571 p
+ 654 571 p
+ 685 571 p
+ 689 571 p
+ 688 571 p
+ 135 571 p
+ 124 571 p
+ 684 570 p
+ 654 570 p
+ 685 570 p
+ 686 570 p
+ 681 570 p
+ 135 570 p
+ 123 570 p
+ 686 569 p
+ 685 569 p
+ 681 569 p
+ 715 569 p
+ 716 569 p
+ 134 569 p
+ 135 569 p
+ 687 568 p
+ 657 568 p
+ 688 568 p
+ 690 568 p
+ 691 568 p
+ 136 568 p
+ 125 568 p
+ 687 567 p
+ 657 567 p
+ 688 567 p
+ 689 567 p
+ 684 567 p
+ 136 567 p
+ 124 567 p
+ 689 566 p
+ 688 566 p
+ 684 566 p
+ 718 566 p
+ 719 566 p
+ 135 566 p
+ 136 566 p
+ 690 565 p
+ 691 565 p
+ 687 565 p
+ 721 565 p
+ 722 565 p
+ 136 565 p
+ 137 565 p
+ 690 564 p
+ 691 564 p
+ 687 564 p
+ 694 564 p
+ 693 564 p
+ 137 564 p
+ 125 564 p
+ 692 563 p
+ 659 563 p
+ 693 563 p
+ 695 563 p
+ 696 563 p
+ 138 563 p
+ 126 563 p
+ 692 562 p
+ 659 562 p
+ 693 562 p
+ 694 562 p
+ 691 562 p
+ 138 562 p
+ 125 562 p
+ 694 561 p
+ 693 561 p
+ 691 561 p
+ 724 561 p
+ 725 561 p
+ 137 561 p
+ 138 561 p
+ 695 560 p
+ 692 560 p
+ 696 560 p
+ 139 560 p
+ 126 560 p
+ 695 559 p
+ 692 559 p
+ 696 559 p
+ 727 559 p
+ 728 559 p
+ 139 559 p
+ 138 559 p
+ 697 558 p
+ 664 558 p
+ 698 558 p
+ 699 558 p
+ 667 558 p
+ 140 558 p
+ 128 558 p
+ 697 557 p
+ 664 557 p
+ 698 557 p
+ 140 557 p
+ 127 557 p
+ 699 556 p
+ 667 556 p
+ 697 556 p
+ 702 556 p
+ 701 556 p
+ 140 556 p
+ 129 556 p
+ 700 555 p
+ 670 555 p
+ 701 555 p
+ 705 555 p
+ 704 555 p
+ 141 555 p
+ 130 555 p
+ 700 554 p
+ 670 554 p
+ 701 554 p
+ 702 554 p
+ 699 554 p
+ 141 554 p
+ 129 554 p
+ 702 553 p
+ 701 553 p
+ 699 553 p
+ 734 553 p
+ 735 553 p
+ 140 553 p
+ 141 553 p
+ 703 552 p
+ 674 552 p
+ 704 552 p
+ 708 552 p
+ 707 552 p
+ 142 552 p
+ 131 552 p
+ 703 551 p
+ 674 551 p
+ 704 551 p
+ 705 551 p
+ 700 551 p
+ 142 551 p
+ 130 551 p
+ 705 550 p
+ 704 550 p
+ 700 550 p
+ 736 550 p
+ 734 550 p
+ 141 550 p
+ 142 550 p
+ 706 549 p
+ 677 549 p
+ 707 549 p
+ 711 549 p
+ 710 549 p
+ 143 549 p
+ 132 549 p
+ 706 548 p
+ 677 548 p
+ 707 548 p
+ 708 548 p
+ 703 548 p
+ 143 548 p
+ 131 548 p
+ 708 547 p
+ 707 547 p
+ 703 547 p
+ 737 547 p
+ 738 547 p
+ 142 547 p
+ 143 547 p
+ 709 546 p
+ 680 546 p
+ 710 546 p
+ 714 546 p
+ 713 546 p
+ 144 546 p
+ 133 546 p
+ 709 545 p
+ 680 545 p
+ 710 545 p
+ 711 545 p
+ 706 545 p
+ 144 545 p
+ 132 545 p
+ 711 544 p
+ 710 544 p
+ 706 544 p
+ 740 544 p
+ 741 544 p
+ 143 544 p
+ 144 544 p
+ 712 543 p
+ 683 543 p
+ 713 543 p
+ 717 543 p
+ 716 543 p
+ 145 543 p
+ 134 543 p
+ 712 542 p
+ 683 542 p
+ 713 542 p
+ 714 542 p
+ 709 542 p
+ 145 542 p
+ 133 542 p
+ 714 541 p
+ 713 541 p
+ 709 541 p
+ 743 541 p
+ 744 541 p
+ 144 541 p
+ 145 541 p
+ 715 540 p
+ 686 540 p
+ 716 540 p
+ 720 540 p
+ 719 540 p
+ 146 540 p
+ 135 540 p
+ 715 539 p
+ 686 539 p
+ 716 539 p
+ 717 539 p
+ 712 539 p
+ 146 539 p
+ 134 539 p
+ 717 538 p
+ 716 538 p
+ 712 538 p
+ 746 538 p
+ 747 538 p
+ 145 538 p
+ 146 538 p
+ 718 537 p
+ 689 537 p
+ 719 537 p
+ 723 537 p
+ 722 537 p
+ 147 537 p
+ 136 537 p
+ 718 536 p
+ 689 536 p
+ 719 536 p
+ 720 536 p
+ 715 536 p
+ 147 536 p
+ 135 536 p
+ 720 535 p
+ 719 535 p
+ 715 535 p
+ 749 535 p
+ 750 535 p
+ 146 535 p
+ 147 535 p
+ 721 534 p
+ 690 534 p
+ 722 534 p
+ 726 534 p
+ 725 534 p
+ 148 534 p
+ 137 534 p
+ 721 533 p
+ 690 533 p
+ 722 533 p
+ 723 533 p
+ 718 533 p
+ 148 533 p
+ 136 533 p
+ 723 532 p
+ 722 532 p
+ 718 532 p
+ 752 532 p
+ 753 532 p
+ 147 532 p
+ 148 532 p
+ 724 531 p
+ 694 531 p
+ 725 531 p
+ 729 531 p
+ 728 531 p
+ 149 531 p
+ 138 531 p
+ 724 530 p
+ 694 530 p
+ 725 530 p
+ 726 530 p
+ 721 530 p
+ 149 530 p
+ 137 530 p
+ 726 529 p
+ 725 529 p
+ 721 529 p
+ 756 529 p
+ 757 529 p
+ 148 529 p
+ 149 529 p
+ 727 528 p
+ 696 528 p
+ 728 528 p
+ 730 528 p
+ 731 528 p
+ 150 528 p
+ 139 528 p
+ 727 527 p
+ 696 527 p
+ 728 527 p
+ 729 527 p
+ 724 527 p
+ 150 527 p
+ 138 527 p
+ 729 526 p
+ 728 526 p
+ 724 526 p
+ 755 526 p
+ 756 526 p
+ 149 526 p
+ 150 526 p
+ 730 525 p
+ 727 525 p
+ 731 525 p
+ 3 525 p
+ 139 525 p
+ 730 524 p
+ 727 524 p
+ 731 524 p
+ 732 524 p
+ 733 524 p
+ 3 524 p
+ 150 524 p
+ 732 523 p
+ 731 523 p
+ 733 523 p
+ 151 523 p
+ 3 523 p
+ 732 522 p
+ 731 522 p
+ 733 522 p
+ 759 522 p
+ 761 522 p
+ 151 522 p
+ 150 522 p
+ 734 521 p
+ 702 521 p
+ 735 521 p
+ 736 521 p
+ 705 521 p
+ 152 521 p
+ 141 521 p
+ 734 520 p
+ 702 520 p
+ 735 520 p
+ 152 520 p
+ 140 520 p
+ 736 519 p
+ 705 519 p
+ 734 519 p
+ 739 519 p
+ 738 519 p
+ 152 519 p
+ 142 519 p
+ 737 518 p
+ 708 518 p
+ 738 518 p
+ 742 518 p
+ 741 518 p
+ 153 518 p
+ 143 518 p
+ 737 517 p
+ 708 517 p
+ 738 517 p
+ 739 517 p
+ 736 517 p
+ 153 517 p
+ 142 517 p
+ 739 516 p
+ 738 516 p
+ 736 516 p
+ 762 516 p
+ 763 516 p
+ 152 516 p
+ 153 516 p
+ 740 515 p
+ 711 515 p
+ 741 515 p
+ 745 515 p
+ 744 515 p
+ 154 515 p
+ 144 515 p
+ 740 514 p
+ 711 514 p
+ 741 514 p
+ 742 514 p
+ 737 514 p
+ 154 514 p
+ 143 514 p
+ 742 513 p
+ 741 513 p
+ 737 513 p
+ 764 513 p
+ 762 513 p
+ 153 513 p
+ 154 513 p
+ 743 512 p
+ 714 512 p
+ 744 512 p
+ 748 512 p
+ 747 512 p
+ 155 512 p
+ 145 512 p
+ 743 511 p
+ 714 511 p
+ 744 511 p
+ 745 511 p
+ 740 511 p
+ 155 511 p
+ 144 511 p
+ 745 510 p
+ 744 510 p
+ 740 510 p
+ 765 510 p
+ 766 510 p
+ 154 510 p
+ 155 510 p
+ 746 509 p
+ 717 509 p
+ 747 509 p
+ 751 509 p
+ 750 509 p
+ 156 509 p
+ 146 509 p
+ 746 508 p
+ 717 508 p
+ 747 508 p
+ 748 508 p
+ 743 508 p
+ 156 508 p
+ 145 508 p
+ 748 507 p
+ 747 507 p
+ 743 507 p
+ 768 507 p
+ 769 507 p
+ 155 507 p
+ 156 507 p
+ 749 506 p
+ 720 506 p
+ 750 506 p
+ 754 506 p
+ 753 506 p
+ 157 506 p
+ 147 506 p
+ 749 505 p
+ 720 505 p
+ 750 505 p
+ 751 505 p
+ 746 505 p
+ 157 505 p
+ 146 505 p
+ 751 504 p
+ 750 504 p
+ 746 504 p
+ 771 504 p
+ 772 504 p
+ 156 504 p
+ 157 504 p
+ 752 503 p
+ 723 503 p
+ 753 503 p
+ 758 503 p
+ 757 503 p
+ 158 503 p
+ 148 503 p
+ 752 502 p
+ 723 502 p
+ 753 502 p
+ 754 502 p
+ 749 502 p
+ 158 502 p
+ 147 502 p
+ 754 501 p
+ 753 501 p
+ 749 501 p
+ 774 501 p
+ 775 501 p
+ 157 501 p
+ 158 501 p
+ 755 500 p
+ 729 500 p
+ 756 500 p
+ 759 500 p
+ 760 500 p
+ 159 500 p
+ 150 500 p
+ 755 499 p
+ 729 499 p
+ 756 499 p
+ 726 499 p
+ 757 499 p
+ 159 499 p
+ 149 499 p
+ 756 498 p
+ 726 498 p
+ 757 498 p
+ 758 498 p
+ 752 498 p
+ 159 498 p
+ 148 498 p
+ 758 497 p
+ 757 497 p
+ 752 497 p
+ 777 497 p
+ 778 497 p
+ 158 497 p
+ 159 497 p
+ 759 496 p
+ 755 496 p
+ 760 496 p
+ 733 496 p
+ 761 496 p
+ 160 496 p
+ 150 496 p
+ 759 495 p
+ 755 495 p
+ 760 495 p
+ 780 495 p
+ 781 495 p
+ 160 495 p
+ 159 495 p
+ 733 494 p
+ 759 494 p
+ 761 494 p
+ 151 494 p
+ 160 494 p
+ 762 493 p
+ 739 493 p
+ 763 493 p
+ 764 493 p
+ 742 493 p
+ 161 493 p
+ 153 493 p
+ 762 492 p
+ 739 492 p
+ 763 492 p
+ 161 492 p
+ 152 492 p
+ 764 491 p
+ 742 491 p
+ 762 491 p
+ 767 491 p
+ 766 491 p
+ 161 491 p
+ 154 491 p
+ 765 490 p
+ 745 490 p
+ 766 490 p
+ 770 490 p
+ 769 490 p
+ 162 490 p
+ 155 490 p
+ 765 489 p
+ 745 489 p
+ 766 489 p
+ 767 489 p
+ 764 489 p
+ 162 489 p
+ 154 489 p
+ 767 488 p
+ 766 488 p
+ 764 488 p
+ 783 488 p
+ 784 488 p
+ 161 488 p
+ 162 488 p
+ 768 487 p
+ 748 487 p
+ 769 487 p
+ 773 487 p
+ 772 487 p
+ 163 487 p
+ 156 487 p
+ 768 486 p
+ 748 486 p
+ 769 486 p
+ 770 486 p
+ 765 486 p
+ 163 486 p
+ 155 486 p
+ 770 485 p
+ 769 485 p
+ 765 485 p
+ 785 485 p
+ 783 485 p
+ 162 485 p
+ 163 485 p
+ 771 484 p
+ 751 484 p
+ 772 484 p
+ 776 484 p
+ 775 484 p
+ 164 484 p
+ 157 484 p
+ 771 483 p
+ 751 483 p
+ 772 483 p
+ 773 483 p
+ 768 483 p
+ 164 483 p
+ 156 483 p
+ 773 482 p
+ 772 482 p
+ 768 482 p
+ 786 482 p
+ 787 482 p
+ 163 482 p
+ 164 482 p
+ 774 481 p
+ 754 481 p
+ 775 481 p
+ 779 481 p
+ 778 481 p
+ 165 481 p
+ 158 481 p
+ 774 480 p
+ 754 480 p
+ 775 480 p
+ 776 480 p
+ 771 480 p
+ 165 480 p
+ 157 480 p
+ 776 479 p
+ 775 479 p
+ 771 479 p
+ 789 479 p
+ 790 479 p
+ 164 479 p
+ 165 479 p
+ 777 478 p
+ 758 478 p
+ 778 478 p
+ 782 478 p
+ 781 478 p
+ 166 478 p
+ 159 478 p
+ 777 477 p
+ 758 477 p
+ 778 477 p
+ 779 477 p
+ 774 477 p
+ 166 477 p
+ 158 477 p
+ 779 476 p
+ 778 476 p
+ 774 476 p
+ 792 476 p
+ 793 476 p
+ 165 476 p
+ 166 476 p
+ 780 475 p
+ 760 475 p
+ 781 475 p
+ 167 475 p
+ 160 475 p
+ 780 474 p
+ 760 474 p
+ 781 474 p
+ 782 474 p
+ 777 474 p
+ 167 474 p
+ 159 474 p
+ 782 473 p
+ 781 473 p
+ 777 473 p
+ 795 473 p
+ 796 473 p
+ 166 473 p
+ 167 473 p
+ 783 472 p
+ 767 472 p
+ 784 472 p
+ 785 472 p
+ 770 472 p
+ 168 472 p
+ 162 472 p
+ 783 471 p
+ 767 471 p
+ 784 471 p
+ 168 471 p
+ 161 471 p
+ 785 470 p
+ 770 470 p
+ 783 470 p
+ 788 470 p
+ 787 470 p
+ 168 470 p
+ 163 470 p
+ 786 469 p
+ 773 469 p
+ 787 469 p
+ 791 469 p
+ 790 469 p
+ 169 469 p
+ 164 469 p
+ 786 468 p
+ 773 468 p
+ 787 468 p
+ 788 468 p
+ 785 468 p
+ 169 468 p
+ 163 468 p
+ 788 467 p
+ 787 467 p
+ 785 467 p
+ 804 467 p
+ 805 467 p
+ 168 467 p
+ 169 467 p
+ 789 466 p
+ 776 466 p
+ 790 466 p
+ 794 466 p
+ 793 466 p
+ 170 466 p
+ 165 466 p
+ 789 465 p
+ 776 465 p
+ 790 465 p
+ 791 465 p
+ 786 465 p
+ 170 465 p
+ 164 465 p
+ 791 464 p
+ 790 464 p
+ 786 464 p
+ 807 464 p
+ 808 464 p
+ 169 464 p
+ 170 464 p
+ 792 463 p
+ 779 463 p
+ 793 463 p
+ 797 463 p
+ 796 463 p
+ 171 463 p
+ 166 463 p
+ 792 462 p
+ 779 462 p
+ 793 462 p
+ 794 462 p
+ 789 462 p
+ 171 462 p
+ 165 462 p
+ 794 461 p
+ 793 461 p
+ 789 461 p
+ 810 461 p
+ 811 461 p
+ 170 461 p
+ 171 461 p
+ 795 460 p
+ 782 460 p
+ 796 460 p
+ 172 460 p
+ 167 460 p
+ 795 459 p
+ 782 459 p
+ 796 459 p
+ 797 459 p
+ 792 459 p
+ 172 459 p
+ 166 459 p
+ 797 458 p
+ 796 458 p
+ 792 458 p
+ 813 458 p
+ 814 458 p
+ 171 458 p
+ 172 458 p
+ 798 457 p
+ 799 457 p
+ 800 457 p
+ 353 457 p
+ 820 457 p
+ 328 457 p
+ 10 457 p
+ 798 456 p
+ 799 456 p
+ 800 456 p
+ 10 456 p
+ 329 456 p
+ 798 455 p
+ 799 455 p
+ 800 455 p
+ 818 455 p
+ 819 455 p
+ 328 455 p
+ 329 455 p
+ 801 454 p
+ 802 454 p
+ 803 454 p
+ 824 454 p
+ 826 454 p
+ 173 454 p
+ 174 454 p
+ 801 453 p
+ 802 453 p
+ 803 453 p
+ 806 453 p
+ 805 453 p
+ 174 453 p
+ 168 453 p
+ 801 452 p
+ 802 452 p
+ 803 452 p
+ 173 452 p
+ 168 452 p
+ 804 451 p
+ 788 451 p
+ 805 451 p
+ 809 451 p
+ 808 451 p
+ 175 451 p
+ 169 451 p
+ 804 450 p
+ 788 450 p
+ 805 450 p
+ 806 450 p
+ 802 450 p
+ 175 450 p
+ 168 450 p
+ 806 449 p
+ 805 449 p
+ 802 449 p
+ 827 449 p
+ 828 449 p
+ 174 449 p
+ 175 449 p
+ 807 448 p
+ 791 448 p
+ 808 448 p
+ 812 448 p
+ 811 448 p
+ 176 448 p
+ 170 448 p
+ 807 447 p
+ 791 447 p
+ 808 447 p
+ 809 447 p
+ 804 447 p
+ 176 447 p
+ 169 447 p
+ 809 446 p
+ 808 446 p
+ 804 446 p
+ 830 446 p
+ 831 446 p
+ 175 446 p
+ 176 446 p
+ 810 445 p
+ 794 445 p
+ 811 445 p
+ 815 445 p
+ 814 445 p
+ 177 445 p
+ 171 445 p
+ 810 444 p
+ 794 444 p
+ 811 444 p
+ 812 444 p
+ 807 444 p
+ 177 444 p
+ 170 444 p
+ 812 443 p
+ 811 443 p
+ 807 443 p
+ 833 443 p
+ 834 443 p
+ 176 443 p
+ 177 443 p
+ 813 442 p
+ 797 442 p
+ 814 442 p
+ 816 442 p
+ 817 442 p
+ 178 442 p
+ 172 442 p
+ 813 441 p
+ 797 441 p
+ 814 441 p
+ 815 441 p
+ 810 441 p
+ 178 441 p
+ 171 441 p
+ 815 440 p
+ 814 440 p
+ 810 440 p
+ 836 440 p
+ 837 440 p
+ 177 440 p
+ 178 440 p
+ 816 439 p
+ 813 439 p
+ 817 439 p
+ 179 439 p
+ 172 439 p
+ 816 438 p
+ 813 438 p
+ 817 438 p
+ 839 438 p
+ 840 438 p
+ 179 438 p
+ 178 438 p
+ 800 437 p
+ 818 437 p
+ 819 437 p
+ 329 437 p
+ 321 437 p
+ 800 436 p
+ 818 436 p
+ 819 436 p
+ 846 436 p
+ 848 436 p
+ 328 436 p
+ 321 436 p
+ 353 435 p
+ 798 435 p
+ 820 435 p
+ 844 435 p
+ 845 435 p
+ 9 435 p
+ 328 435 p
+ 821 434 p
+ 822 434 p
+ 823 434 p
+ 824 434 p
+ 825 434 p
+ 181 434 p
+ 173 434 p
+ 821 433 p
+ 822 433 p
+ 823 433 p
+ 173 433 p
+ 180 433 p
+ 821 432 p
+ 822 432 p
+ 823 432 p
+ 852 432 p
+ 854 432 p
+ 181 432 p
+ 180 432 p
+ 824 431 p
+ 821 431 p
+ 825 431 p
+ 801 431 p
+ 826 431 p
+ 182 431 p
+ 173 431 p
+ 824 430 p
+ 821 430 p
+ 825 430 p
+ 855 430 p
+ 857 430 p
+ 182 430 p
+ 181 430 p
+ 801 429 p
+ 824 429 p
+ 826 429 p
+ 829 429 p
+ 828 429 p
+ 174 429 p
+ 182 429 p
+ 827 428 p
+ 806 428 p
+ 828 428 p
+ 832 428 p
+ 831 428 p
+ 183 428 p
+ 175 428 p
+ 827 427 p
+ 806 427 p
+ 828 427 p
+ 829 427 p
+ 826 427 p
+ 183 427 p
+ 174 427 p
+ 829 426 p
+ 828 426 p
+ 826 426 p
+ 858 426 p
+ 860 426 p
+ 182 426 p
+ 183 426 p
+ 830 425 p
+ 809 425 p
+ 831 425 p
+ 835 425 p
+ 834 425 p
+ 184 425 p
+ 176 425 p
+ 830 424 p
+ 809 424 p
+ 831 424 p
+ 832 424 p
+ 827 424 p
+ 184 424 p
+ 175 424 p
+ 832 423 p
+ 831 423 p
+ 827 423 p
+ 861 423 p
+ 863 423 p
+ 183 423 p
+ 184 423 p
+ 833 422 p
+ 812 422 p
+ 834 422 p
+ 838 422 p
+ 837 422 p
+ 185 422 p
+ 177 422 p
+ 833 421 p
+ 812 421 p
+ 834 421 p
+ 835 421 p
+ 830 421 p
+ 185 421 p
+ 176 421 p
+ 835 420 p
+ 834 420 p
+ 830 420 p
+ 864 420 p
+ 866 420 p
+ 184 420 p
+ 185 420 p
+ 836 419 p
+ 815 419 p
+ 837 419 p
+ 841 419 p
+ 840 419 p
+ 186 419 p
+ 178 419 p
+ 836 418 p
+ 815 418 p
+ 837 418 p
+ 838 418 p
+ 833 418 p
+ 186 418 p
+ 177 418 p
+ 838 417 p
+ 837 417 p
+ 833 417 p
+ 867 417 p
+ 868 417 p
+ 185 417 p
+ 186 417 p
+ 839 416 p
+ 817 416 p
+ 840 416 p
+ 842 416 p
+ 843 416 p
+ 187 416 p
+ 179 416 p
+ 839 415 p
+ 817 415 p
+ 840 415 p
+ 841 415 p
+ 836 415 p
+ 187 415 p
+ 178 415 p
+ 841 414 p
+ 840 414 p
+ 836 414 p
+ 870 414 p
+ 871 414 p
+ 186 414 p
+ 187 414 p
+ 842 413 p
+ 839 413 p
+ 843 413 p
+ 188 413 p
+ 179 413 p
+ 842 412 p
+ 839 412 p
+ 843 412 p
+ 875 412 p
+ 876 412 p
+ 188 412 p
+ 187 412 p
+ 820 411 p
+ 844 411 p
+ 845 411 p
+ 846 411 p
+ 847 411 p
+ 328 411 p
+ 327 411 p
+ 820 410 p
+ 844 410 p
+ 845 410 p
+ 349 410 p
+ 882 410 p
+ 9 410 p
+ 327 410 p
+ 844 409 p
+ 846 409 p
+ 847 409 p
+ 819 409 p
+ 848 409 p
+ 328 409 p
+ 320 409 p
+ 844 408 p
+ 846 408 p
+ 847 408 p
+ 960 408 p
+ 921 408 p
+ 327 408 p
+ 320 408 p
+ 846 407 p
+ 819 407 p
+ 848 407 p
+ 1250 407 p
+ 1254 407 p
+ 320 407 p
+ 321 407 p
+ 849 406 p
+ 850 406 p
+ 851 406 p
+ 852 406 p
+ 853 406 p
+ 190 406 p
+ 180 406 p
+ 849 405 p
+ 850 405 p
+ 851 405 p
+ 180 405 p
+ 189 405 p
+ 849 404 p
+ 850 404 p
+ 851 404 p
+ 886 404 p
+ 887 404 p
+ 190 404 p
+ 189 404 p
+ 852 403 p
+ 849 403 p
+ 853 403 p
+ 823 403 p
+ 854 403 p
+ 191 403 p
+ 180 403 p
+ 852 402 p
+ 849 402 p
+ 853 402 p
+ 889 402 p
+ 891 402 p
+ 191 402 p
+ 190 402 p
+ 823 401 p
+ 852 401 p
+ 854 401 p
+ 855 401 p
+ 856 401 p
+ 181 401 p
+ 191 401 p
+ 855 400 p
+ 854 400 p
+ 856 400 p
+ 825 400 p
+ 857 400 p
+ 192 400 p
+ 181 400 p
+ 855 399 p
+ 854 399 p
+ 856 399 p
+ 892 399 p
+ 894 399 p
+ 192 399 p
+ 191 399 p
+ 825 398 p
+ 855 398 p
+ 857 398 p
+ 858 398 p
+ 859 398 p
+ 182 398 p
+ 192 398 p
+ 858 397 p
+ 857 397 p
+ 859 397 p
+ 829 397 p
+ 860 397 p
+ 193 397 p
+ 182 397 p
+ 858 396 p
+ 857 396 p
+ 859 396 p
+ 895 396 p
+ 897 396 p
+ 193 396 p
+ 192 396 p
+ 829 395 p
+ 858 395 p
+ 860 395 p
+ 861 395 p
+ 862 395 p
+ 183 395 p
+ 193 395 p
+ 861 394 p
+ 860 394 p
+ 862 394 p
+ 832 394 p
+ 863 394 p
+ 194 394 p
+ 183 394 p
+ 861 393 p
+ 860 393 p
+ 862 393 p
+ 898 393 p
+ 900 393 p
+ 194 393 p
+ 193 393 p
+ 832 392 p
+ 861 392 p
+ 863 392 p
+ 864 392 p
+ 865 392 p
+ 184 392 p
+ 194 392 p
+ 864 391 p
+ 863 391 p
+ 865 391 p
+ 835 391 p
+ 866 391 p
+ 195 391 p
+ 184 391 p
+ 864 390 p
+ 863 390 p
+ 865 390 p
+ 901 390 p
+ 903 390 p
+ 195 390 p
+ 194 390 p
+ 835 389 p
+ 864 389 p
+ 866 389 p
+ 869 389 p
+ 868 389 p
+ 185 389 p
+ 195 389 p
+ 867 388 p
+ 838 388 p
+ 868 388 p
+ 872 388 p
+ 871 388 p
+ 196 388 p
+ 186 388 p
+ 867 387 p
+ 838 387 p
+ 868 387 p
+ 869 387 p
+ 866 387 p
+ 196 387 p
+ 185 387 p
+ 869 386 p
+ 868 386 p
+ 866 386 p
+ 904 386 p
+ 906 386 p
+ 195 386 p
+ 196 386 p
+ 870 385 p
+ 841 385 p
+ 871 385 p
+ 873 385 p
+ 874 385 p
+ 197 385 p
+ 187 385 p
+ 870 384 p
+ 841 384 p
+ 871 384 p
+ 872 384 p
+ 867 384 p
+ 197 384 p
+ 186 384 p
+ 872 383 p
+ 871 383 p
+ 867 383 p
+ 907 383 p
+ 909 383 p
+ 196 383 p
+ 197 383 p
+ 873 382 p
+ 870 382 p
+ 874 382 p
+ 877 382 p
+ 876 382 p
+ 198 382 p
+ 187 382 p
+ 873 381 p
+ 870 381 p
+ 874 381 p
+ 910 381 p
+ 912 381 p
+ 198 381 p
+ 197 381 p
+ 875 380 p
+ 843 380 p
+ 876 380 p
+ 878 380 p
+ 879 380 p
+ 199 380 p
+ 188 380 p
+ 875 379 p
+ 843 379 p
+ 876 379 p
+ 877 379 p
+ 873 379 p
+ 199 379 p
+ 187 379 p
+ 877 378 p
+ 876 378 p
+ 873 378 p
+ 913 378 p
+ 915 378 p
+ 198 378 p
+ 199 378 p
+ 878 377 p
+ 875 377 p
+ 879 377 p
+ 200 377 p
+ 188 377 p
+ 878 376 p
+ 875 376 p
+ 879 376 p
+ 880 376 p
+ 881 376 p
+ 200 376 p
+ 199 376 p
+ 880 375 p
+ 879 375 p
+ 881 375 p
+ 0 375 p
+ 200 375 p
+ 880 374 p
+ 879 374 p
+ 881 374 p
+ 916 374 p
+ 918 374 p
+ 0 374 p
+ 199 374 p
+ 349 373 p
+ 845 373 p
+ 882 373 p
+ 919 373 p
+ 920 373 p
+ 8 373 p
+ 327 373 p
+ 883 372 p
+ 884 372 p
+ 885 372 p
+ 189 372 p
+ 201 372 p
+ 883 371 p
+ 884 371 p
+ 885 371 p
+ 923 371 p
+ 924 371 p
+ 201 371 p
+ 202 371 p
+ 883 370 p
+ 884 370 p
+ 885 370 p
+ 888 370 p
+ 886 370 p
+ 189 370 p
+ 202 370 p
+ 886 369 p
+ 887 369 p
+ 851 369 p
+ 885 369 p
+ 888 369 p
+ 189 369 p
+ 203 369 p
+ 886 368 p
+ 887 368 p
+ 851 368 p
+ 889 368 p
+ 890 368 p
+ 203 368 p
+ 190 368 p
+ 885 367 p
+ 888 367 p
+ 886 367 p
+ 927 367 p
+ 928 367 p
+ 202 367 p
+ 203 367 p
+ 889 366 p
+ 887 366 p
+ 890 366 p
+ 853 366 p
+ 891 366 p
+ 204 366 p
+ 190 366 p
+ 889 365 p
+ 887 365 p
+ 890 365 p
+ 930 365 p
+ 931 365 p
+ 204 365 p
+ 203 365 p
+ 853 364 p
+ 889 364 p
+ 891 364 p
+ 892 364 p
+ 893 364 p
+ 191 364 p
+ 204 364 p
+ 892 363 p
+ 891 363 p
+ 893 363 p
+ 856 363 p
+ 894 363 p
+ 205 363 p
+ 191 363 p
+ 892 362 p
+ 891 362 p
+ 893 362 p
+ 935 362 p
+ 937 362 p
+ 205 362 p
+ 204 362 p
+ 856 361 p
+ 892 361 p
+ 894 361 p
+ 895 361 p
+ 896 361 p
+ 192 361 p
+ 205 361 p
+ 895 360 p
+ 894 360 p
+ 896 360 p
+ 859 360 p
+ 897 360 p
+ 206 360 p
+ 192 360 p
+ 895 359 p
+ 894 359 p
+ 896 359 p
+ 938 359 p
+ 940 359 p
+ 206 359 p
+ 205 359 p
+ 859 358 p
+ 895 358 p
+ 897 358 p
+ 898 358 p
+ 899 358 p
+ 193 358 p
+ 206 358 p
+ 898 357 p
+ 897 357 p
+ 899 357 p
+ 862 357 p
+ 900 357 p
+ 207 357 p
+ 193 357 p
+ 898 356 p
+ 897 356 p
+ 899 356 p
+ 941 356 p
+ 943 356 p
+ 207 356 p
+ 206 356 p
+ 862 355 p
+ 898 355 p
+ 900 355 p
+ 901 355 p
+ 902 355 p
+ 194 355 p
+ 207 355 p
+ 901 354 p
+ 900 354 p
+ 902 354 p
+ 865 354 p
+ 903 354 p
+ 208 354 p
+ 194 354 p
+ 901 353 p
+ 900 353 p
+ 902 353 p
+ 944 353 p
+ 946 353 p
+ 208 353 p
+ 207 353 p
+ 865 352 p
+ 901 352 p
+ 903 352 p
+ 904 352 p
+ 905 352 p
+ 195 352 p
+ 208 352 p
+ 904 351 p
+ 903 351 p
+ 905 351 p
+ 869 351 p
+ 906 351 p
+ 209 351 p
+ 195 351 p
+ 904 350 p
+ 903 350 p
+ 905 350 p
+ 947 350 p
+ 949 350 p
+ 209 350 p
+ 208 350 p
+ 869 349 p
+ 904 349 p
+ 906 349 p
+ 907 349 p
+ 908 349 p
+ 196 349 p
+ 209 349 p
+ 907 348 p
+ 906 348 p
+ 908 348 p
+ 872 348 p
+ 909 348 p
+ 210 348 p
+ 196 348 p
+ 907 347 p
+ 906 347 p
+ 908 347 p
+ 950 347 p
+ 952 347 p
+ 210 347 p
+ 209 347 p
+ 872 346 p
+ 907 346 p
+ 909 346 p
+ 910 346 p
+ 911 346 p
+ 197 346 p
+ 210 346 p
+ 910 345 p
+ 909 345 p
+ 911 345 p
+ 874 345 p
+ 912 345 p
+ 211 345 p
+ 197 345 p
+ 910 344 p
+ 909 344 p
+ 911 344 p
+ 955 344 p
+ 953 344 p
+ 211 344 p
+ 210 344 p
+ 874 343 p
+ 910 343 p
+ 912 343 p
+ 913 343 p
+ 914 343 p
+ 198 343 p
+ 211 343 p
+ 913 342 p
+ 912 342 p
+ 914 342 p
+ 877 342 p
+ 915 342 p
+ 212 342 p
+ 198 342 p
+ 913 341 p
+ 912 341 p
+ 914 341 p
+ 953 341 p
+ 954 341 p
+ 212 341 p
+ 211 341 p
+ 877 340 p
+ 913 340 p
+ 915 340 p
+ 916 340 p
+ 917 340 p
+ 199 340 p
+ 212 340 p
+ 916 339 p
+ 915 339 p
+ 917 339 p
+ 881 339 p
+ 918 339 p
+ 213 339 p
+ 199 339 p
+ 916 338 p
+ 915 338 p
+ 917 338 p
+ 957 338 p
+ 958 338 p
+ 213 338 p
+ 212 338 p
+ 881 337 p
+ 916 337 p
+ 918 337 p
+ 0 337 p
+ 213 337 p
+ 882 336 p
+ 919 336 p
+ 920 336 p
+ 921 336 p
+ 922 336 p
+ 327 336 p
+ 326 336 p
+ 882 335 p
+ 919 335 p
+ 920 335 p
+ 345 335 p
+ 961 335 p
+ 8 335 p
+ 326 335 p
+ 919 334 p
+ 921 334 p
+ 922 334 p
+ 847 334 p
+ 960 334 p
+ 327 334 p
+ 319 334 p
+ 919 333 p
+ 921 333 p
+ 922 333 p
+ 1040 333 p
+ 1001 333 p
+ 326 333 p
+ 319 333 p
+ 923 332 p
+ 924 332 p
+ 884 332 p
+ 925 332 p
+ 926 332 p
+ 201 332 p
+ 215 332 p
+ 923 331 p
+ 924 331 p
+ 884 331 p
+ 929 331 p
+ 927 331 p
+ 215 331 p
+ 202 331 p
+ 925 330 p
+ 926 330 p
+ 923 330 p
+ 201 330 p
+ 214 330 p
+ 925 329 p
+ 926 329 p
+ 923 329 p
+ 964 329 p
+ 965 329 p
+ 214 329 p
+ 215 329 p
+ 927 328 p
+ 928 328 p
+ 888 328 p
+ 924 328 p
+ 929 328 p
+ 202 328 p
+ 216 328 p
+ 927 327 p
+ 928 327 p
+ 888 327 p
+ 932 327 p
+ 930 327 p
+ 216 327 p
+ 203 327 p
+ 924 326 p
+ 929 326 p
+ 927 326 p
+ 968 326 p
+ 969 326 p
+ 215 326 p
+ 216 326 p
+ 930 325 p
+ 931 325 p
+ 890 325 p
+ 928 325 p
+ 932 325 p
+ 203 325 p
+ 217 325 p
+ 930 324 p
+ 931 324 p
+ 890 324 p
+ 933 324 p
+ 934 324 p
+ 217 324 p
+ 204 324 p
+ 928 323 p
+ 932 323 p
+ 930 323 p
+ 971 323 p
+ 972 323 p
+ 216 323 p
+ 217 323 p
+ 933 322 p
+ 931 322 p
+ 934 322 p
+ 935 322 p
+ 936 322 p
+ 218 322 p
+ 204 322 p
+ 933 321 p
+ 931 321 p
+ 934 321 p
+ 974 321 p
+ 975 321 p
+ 218 321 p
+ 217 321 p
+ 935 320 p
+ 933 320 p
+ 936 320 p
+ 893 320 p
+ 937 320 p
+ 219 320 p
+ 204 320 p
+ 935 319 p
+ 933 319 p
+ 936 319 p
+ 977 319 p
+ 979 319 p
+ 219 319 p
+ 218 319 p
+ 893 318 p
+ 935 318 p
+ 937 318 p
+ 938 318 p
+ 939 318 p
+ 205 318 p
+ 219 318 p
+ 938 317 p
+ 937 317 p
+ 939 317 p
+ 896 317 p
+ 940 317 p
+ 220 317 p
+ 205 317 p
+ 938 316 p
+ 937 316 p
+ 939 316 p
+ 980 316 p
+ 982 316 p
+ 220 316 p
+ 219 316 p
+ 896 315 p
+ 938 315 p
+ 940 315 p
+ 941 315 p
+ 942 315 p
+ 206 315 p
+ 220 315 p
+ 941 314 p
+ 940 314 p
+ 942 314 p
+ 899 314 p
+ 943 314 p
+ 221 314 p
+ 206 314 p
+ 941 313 p
+ 940 313 p
+ 942 313 p
+ 983 313 p
+ 985 313 p
+ 221 313 p
+ 220 313 p
+ 899 312 p
+ 941 312 p
+ 943 312 p
+ 944 312 p
+ 945 312 p
+ 207 312 p
+ 221 312 p
+ 944 311 p
+ 943 311 p
+ 945 311 p
+ 902 311 p
+ 946 311 p
+ 222 311 p
+ 207 311 p
+ 944 310 p
+ 943 310 p
+ 945 310 p
+ 986 310 p
+ 988 310 p
+ 222 310 p
+ 221 310 p
+ 902 309 p
+ 944 309 p
+ 946 309 p
+ 947 309 p
+ 948 309 p
+ 208 309 p
+ 222 309 p
+ 947 308 p
+ 946 308 p
+ 948 308 p
+ 905 308 p
+ 949 308 p
+ 223 308 p
+ 208 308 p
+ 947 307 p
+ 946 307 p
+ 948 307 p
+ 989 307 p
+ 991 307 p
+ 223 307 p
+ 222 307 p
+ 905 306 p
+ 947 306 p
+ 949 306 p
+ 950 306 p
+ 951 306 p
+ 209 306 p
+ 223 306 p
+ 950 305 p
+ 949 305 p
+ 951 305 p
+ 908 305 p
+ 952 305 p
+ 224 305 p
+ 209 305 p
+ 950 304 p
+ 949 304 p
+ 951 304 p
+ 992 304 p
+ 994 304 p
+ 224 304 p
+ 223 304 p
+ 908 303 p
+ 950 303 p
+ 952 303 p
+ 955 303 p
+ 956 303 p
+ 210 303 p
+ 224 303 p
+ 914 302 p
+ 953 302 p
+ 954 302 p
+ 911 302 p
+ 955 302 p
+ 211 302 p
+ 225 302 p
+ 914 301 p
+ 953 301 p
+ 954 301 p
+ 959 301 p
+ 957 301 p
+ 212 301 p
+ 225 301 p
+ 955 300 p
+ 952 300 p
+ 956 300 p
+ 911 300 p
+ 953 300 p
+ 225 300 p
+ 210 300 p
+ 955 299 p
+ 952 299 p
+ 956 299 p
+ 995 299 p
+ 997 299 p
+ 225 299 p
+ 224 299 p
+ 957 298 p
+ 958 298 p
+ 917 298 p
+ 954 298 p
+ 959 298 p
+ 212 298 p
+ 226 298 p
+ 957 297 p
+ 958 297 p
+ 917 297 p
+ 226 297 p
+ 213 297 p
+ 954 296 p
+ 959 296 p
+ 957 296 p
+ 998 296 p
+ 1000 296 p
+ 225 296 p
+ 226 296 p
+ 847 295 p
+ 960 295 p
+ 921 295 p
+ 1251 295 p
+ 1248 295 p
+ 320 295 p
+ 319 295 p
+ 345 294 p
+ 920 294 p
+ 961 294 p
+ 962 294 p
+ 963 294 p
+ 7 294 p
+ 326 294 p
+ 961 293 p
+ 962 293 p
+ 963 293 p
+ 1001 293 p
+ 1002 293 p
+ 326 293 p
+ 325 293 p
+ 961 292 p
+ 962 292 p
+ 963 292 p
+ 341 292 p
+ 1041 292 p
+ 7 292 p
+ 325 292 p
+ 964 291 p
+ 965 291 p
+ 926 291 p
+ 966 291 p
+ 967 291 p
+ 214 291 p
+ 228 291 p
+ 964 290 p
+ 965 290 p
+ 926 290 p
+ 970 290 p
+ 969 290 p
+ 228 290 p
+ 215 290 p
+ 966 289 p
+ 967 289 p
+ 964 289 p
+ 214 289 p
+ 227 289 p
+ 966 288 p
+ 967 288 p
+ 964 288 p
+ 1003 288 p
+ 1004 288 p
+ 227 288 p
+ 228 288 p
+ 968 287 p
+ 929 287 p
+ 969 287 p
+ 973 287 p
+ 972 287 p
+ 229 287 p
+ 216 287 p
+ 968 286 p
+ 929 286 p
+ 969 286 p
+ 970 286 p
+ 965 286 p
+ 229 286 p
+ 215 286 p
+ 970 285 p
+ 969 285 p
+ 965 285 p
+ 1007 285 p
+ 1008 285 p
+ 228 285 p
+ 229 285 p
+ 971 284 p
+ 932 284 p
+ 972 284 p
+ 976 284 p
+ 975 284 p
+ 230 284 p
+ 217 284 p
+ 971 283 p
+ 932 283 p
+ 972 283 p
+ 973 283 p
+ 968 283 p
+ 230 283 p
+ 216 283 p
+ 973 282 p
+ 972 282 p
+ 968 282 p
+ 1010 282 p
+ 1011 282 p
+ 229 282 p
+ 230 282 p
+ 974 281 p
+ 934 281 p
+ 975 281 p
+ 977 281 p
+ 978 281 p
+ 231 281 p
+ 218 281 p
+ 974 280 p
+ 934 280 p
+ 975 280 p
+ 976 280 p
+ 971 280 p
+ 231 280 p
+ 217 280 p
+ 976 279 p
+ 975 279 p
+ 971 279 p
+ 1013 279 p
+ 1014 279 p
+ 230 279 p
+ 231 279 p
+ 977 278 p
+ 974 278 p
+ 978 278 p
+ 936 278 p
+ 979 278 p
+ 232 278 p
+ 218 278 p
+ 977 277 p
+ 974 277 p
+ 978 277 p
+ 1016 277 p
+ 1017 277 p
+ 232 277 p
+ 231 277 p
+ 936 276 p
+ 977 276 p
+ 979 276 p
+ 980 276 p
+ 981 276 p
+ 219 276 p
+ 232 276 p
+ 980 275 p
+ 979 275 p
+ 981 275 p
+ 939 275 p
+ 982 275 p
+ 233 275 p
+ 219 275 p
+ 980 274 p
+ 979 274 p
+ 981 274 p
+ 1019 274 p
+ 1020 274 p
+ 233 274 p
+ 232 274 p
+ 939 273 p
+ 980 273 p
+ 982 273 p
+ 983 273 p
+ 984 273 p
+ 220 273 p
+ 233 273 p
+ 983 272 p
+ 982 272 p
+ 984 272 p
+ 942 272 p
+ 985 272 p
+ 234 272 p
+ 220 272 p
+ 983 271 p
+ 982 271 p
+ 984 271 p
+ 1022 271 p
+ 1024 271 p
+ 234 271 p
+ 233 271 p
+ 942 270 p
+ 983 270 p
+ 985 270 p
+ 986 270 p
+ 987 270 p
+ 221 270 p
+ 234 270 p
+ 986 269 p
+ 985 269 p
+ 987 269 p
+ 945 269 p
+ 988 269 p
+ 235 269 p
+ 221 269 p
+ 986 268 p
+ 985 268 p
+ 987 268 p
+ 1025 268 p
+ 1027 268 p
+ 235 268 p
+ 234 268 p
+ 945 267 p
+ 986 267 p
+ 988 267 p
+ 989 267 p
+ 990 267 p
+ 222 267 p
+ 235 267 p
+ 989 266 p
+ 988 266 p
+ 990 266 p
+ 948 266 p
+ 991 266 p
+ 236 266 p
+ 222 266 p
+ 989 265 p
+ 988 265 p
+ 990 265 p
+ 1028 265 p
+ 1030 265 p
+ 236 265 p
+ 235 265 p
+ 948 264 p
+ 989 264 p
+ 991 264 p
+ 992 264 p
+ 993 264 p
+ 223 264 p
+ 236 264 p
+ 992 263 p
+ 991 263 p
+ 993 263 p
+ 951 263 p
+ 994 263 p
+ 237 263 p
+ 223 263 p
+ 992 262 p
+ 991 262 p
+ 993 262 p
+ 1031 262 p
+ 1033 262 p
+ 237 262 p
+ 236 262 p
+ 951 261 p
+ 992 261 p
+ 994 261 p
+ 995 261 p
+ 996 261 p
+ 224 261 p
+ 237 261 p
+ 995 260 p
+ 994 260 p
+ 996 260 p
+ 956 260 p
+ 997 260 p
+ 238 260 p
+ 224 260 p
+ 995 259 p
+ 994 259 p
+ 996 259 p
+ 1034 259 p
+ 1036 259 p
+ 238 259 p
+ 237 259 p
+ 956 258 p
+ 995 258 p
+ 997 258 p
+ 998 258 p
+ 999 258 p
+ 225 258 p
+ 238 258 p
+ 998 257 p
+ 997 257 p
+ 999 257 p
+ 959 257 p
+ 1000 257 p
+ 239 257 p
+ 225 257 p
+ 998 256 p
+ 997 256 p
+ 999 256 p
+ 1037 256 p
+ 1039 256 p
+ 239 256 p
+ 238 256 p
+ 959 255 p
+ 998 255 p
+ 1000 255 p
+ 226 255 p
+ 239 255 p
+ 962 254 p
+ 1001 254 p
+ 1002 254 p
+ 922 254 p
+ 1040 254 p
+ 326 254 p
+ 318 254 p
+ 962 253 p
+ 1001 253 p
+ 1002 253 p
+ 1083 253 p
+ 1081 253 p
+ 325 253 p
+ 318 253 p
+ 1003 252 p
+ 967 252 p
+ 1004 252 p
+ 1009 252 p
+ 1008 252 p
+ 241 252 p
+ 228 252 p
+ 1003 251 p
+ 967 251 p
+ 1004 251 p
+ 1005 251 p
+ 1006 251 p
+ 241 251 p
+ 227 251 p
+ 1005 250 p
+ 1004 250 p
+ 1006 250 p
+ 1042 250 p
+ 1043 250 p
+ 240 250 p
+ 241 250 p
+ 1005 249 p
+ 1004 249 p
+ 1006 249 p
+ 240 249 p
+ 227 249 p
+ 1007 248 p
+ 970 248 p
+ 1008 248 p
+ 1012 248 p
+ 1011 248 p
+ 242 248 p
+ 229 248 p
+ 1007 247 p
+ 970 247 p
+ 1008 247 p
+ 1009 247 p
+ 1003 247 p
+ 242 247 p
+ 228 247 p
+ 1009 246 p
+ 1008 246 p
+ 1003 246 p
+ 1046 246 p
+ 1047 246 p
+ 241 246 p
+ 242 246 p
+ 1010 245 p
+ 973 245 p
+ 1011 245 p
+ 1015 245 p
+ 1014 245 p
+ 243 245 p
+ 230 245 p
+ 1010 244 p
+ 973 244 p
+ 1011 244 p
+ 1012 244 p
+ 1007 244 p
+ 243 244 p
+ 229 244 p
+ 1012 243 p
+ 1011 243 p
+ 1007 243 p
+ 1049 243 p
+ 1050 243 p
+ 242 243 p
+ 243 243 p
+ 1013 242 p
+ 976 242 p
+ 1014 242 p
+ 1018 242 p
+ 1017 242 p
+ 244 242 p
+ 231 242 p
+ 1013 241 p
+ 976 241 p
+ 1014 241 p
+ 1015 241 p
+ 1010 241 p
+ 244 241 p
+ 230 241 p
+ 1015 240 p
+ 1014 240 p
+ 1010 240 p
+ 1052 240 p
+ 1053 240 p
+ 243 240 p
+ 244 240 p
+ 1016 239 p
+ 978 239 p
+ 1017 239 p
+ 1021 239 p
+ 1019 239 p
+ 245 239 p
+ 232 239 p
+ 1016 238 p
+ 978 238 p
+ 1017 238 p
+ 1018 238 p
+ 1013 238 p
+ 245 238 p
+ 231 238 p
+ 1018 237 p
+ 1017 237 p
+ 1013 237 p
+ 1055 237 p
+ 1056 237 p
+ 244 237 p
+ 245 237 p
+ 1019 236 p
+ 1020 236 p
+ 981 236 p
+ 1016 236 p
+ 1021 236 p
+ 232 236 p
+ 246 236 p
+ 1019 235 p
+ 1020 235 p
+ 981 235 p
+ 1022 235 p
+ 1023 235 p
+ 246 235 p
+ 233 235 p
+ 1016 234 p
+ 1021 234 p
+ 1019 234 p
+ 1058 234 p
+ 1059 234 p
+ 245 234 p
+ 246 234 p
+ 1022 233 p
+ 1020 233 p
+ 1023 233 p
+ 984 233 p
+ 1024 233 p
+ 247 233 p
+ 233 233 p
+ 1022 232 p
+ 1020 232 p
+ 1023 232 p
+ 1061 232 p
+ 1062 232 p
+ 247 232 p
+ 246 232 p
+ 984 231 p
+ 1022 231 p
+ 1024 231 p
+ 1025 231 p
+ 1026 231 p
+ 234 231 p
+ 247 231 p
+ 1025 230 p
+ 1024 230 p
+ 1026 230 p
+ 987 230 p
+ 1027 230 p
+ 248 230 p
+ 234 230 p
+ 1025 229 p
+ 1024 229 p
+ 1026 229 p
+ 1064 229 p
+ 1066 229 p
+ 248 229 p
+ 247 229 p
+ 987 228 p
+ 1025 228 p
+ 1027 228 p
+ 1028 228 p
+ 1029 228 p
+ 235 228 p
+ 248 228 p
+ 1028 227 p
+ 1027 227 p
+ 1029 227 p
+ 990 227 p
+ 1030 227 p
+ 249 227 p
+ 235 227 p
+ 1028 226 p
+ 1027 226 p
+ 1029 226 p
+ 1067 226 p
+ 1069 226 p
+ 249 226 p
+ 248 226 p
+ 990 225 p
+ 1028 225 p
+ 1030 225 p
+ 1031 225 p
+ 1032 225 p
+ 236 225 p
+ 249 225 p
+ 1031 224 p
+ 1030 224 p
+ 1032 224 p
+ 993 224 p
+ 1033 224 p
+ 250 224 p
+ 236 224 p
+ 1031 223 p
+ 1030 223 p
+ 1032 223 p
+ 1070 223 p
+ 1072 223 p
+ 250 223 p
+ 249 223 p
+ 993 222 p
+ 1031 222 p
+ 1033 222 p
+ 1034 222 p
+ 1035 222 p
+ 237 222 p
+ 250 222 p
+ 1034 221 p
+ 1033 221 p
+ 1035 221 p
+ 996 221 p
+ 1036 221 p
+ 251 221 p
+ 237 221 p
+ 1034 220 p
+ 1033 220 p
+ 1035 220 p
+ 1073 220 p
+ 1075 220 p
+ 251 220 p
+ 250 220 p
+ 996 219 p
+ 1034 219 p
+ 1036 219 p
+ 1037 219 p
+ 1038 219 p
+ 238 219 p
+ 251 219 p
+ 1037 218 p
+ 1036 218 p
+ 1038 218 p
+ 999 218 p
+ 1039 218 p
+ 252 218 p
+ 238 218 p
+ 1037 217 p
+ 1036 217 p
+ 1038 217 p
+ 1076 217 p
+ 1078 217 p
+ 252 217 p
+ 251 217 p
+ 999 216 p
+ 1037 216 p
+ 1039 216 p
+ 239 216 p
+ 252 216 p
+ 922 215 p
+ 1040 215 p
+ 1001 215 p
+ 1249 215 p
+ 1246 215 p
+ 319 215 p
+ 318 215 p
+ 341 214 p
+ 963 214 p
+ 1041 214 p
+ 1079 214 p
+ 1080 214 p
+ 6 214 p
+ 325 214 p
+ 1042 213 p
+ 1005 213 p
+ 1043 213 p
+ 1048 213 p
+ 1047 213 p
+ 254 213 p
+ 241 213 p
+ 1042 212 p
+ 1005 212 p
+ 1043 212 p
+ 1044 212 p
+ 1045 212 p
+ 254 212 p
+ 240 212 p
+ 1044 211 p
+ 1043 211 p
+ 1045 211 p
+ 1084 211 p
+ 1085 211 p
+ 253 211 p
+ 254 211 p
+ 1044 210 p
+ 1043 210 p
+ 1045 210 p
+ 253 210 p
+ 240 210 p
+ 1046 209 p
+ 1009 209 p
+ 1047 209 p
+ 1051 209 p
+ 1050 209 p
+ 255 209 p
+ 242 209 p
+ 1046 208 p
+ 1009 208 p
+ 1047 208 p
+ 1048 208 p
+ 1042 208 p
+ 255 208 p
+ 241 208 p
+ 1048 207 p
+ 1047 207 p
+ 1042 207 p
+ 1086 207 p
+ 1087 207 p
+ 254 207 p
+ 255 207 p
+ 1049 206 p
+ 1012 206 p
+ 1050 206 p
+ 1054 206 p
+ 1053 206 p
+ 256 206 p
+ 243 206 p
+ 1049 205 p
+ 1012 205 p
+ 1050 205 p
+ 1051 205 p
+ 1046 205 p
+ 256 205 p
+ 242 205 p
+ 1051 204 p
+ 1050 204 p
+ 1046 204 p
+ 1089 204 p
+ 1090 204 p
+ 255 204 p
+ 256 204 p
+ 1052 203 p
+ 1015 203 p
+ 1053 203 p
+ 1057 203 p
+ 1056 203 p
+ 257 203 p
+ 244 203 p
+ 1052 202 p
+ 1015 202 p
+ 1053 202 p
+ 1054 202 p
+ 1049 202 p
+ 257 202 p
+ 243 202 p
+ 1054 201 p
+ 1053 201 p
+ 1049 201 p
+ 1092 201 p
+ 1093 201 p
+ 256 201 p
+ 257 201 p
+ 1055 200 p
+ 1018 200 p
+ 1056 200 p
+ 1060 200 p
+ 1059 200 p
+ 258 200 p
+ 245 200 p
+ 1055 199 p
+ 1018 199 p
+ 1056 199 p
+ 1057 199 p
+ 1052 199 p
+ 258 199 p
+ 244 199 p
+ 1057 198 p
+ 1056 198 p
+ 1052 198 p
+ 1095 198 p
+ 1096 198 p
+ 257 198 p
+ 258 198 p
+ 1058 197 p
+ 1021 197 p
+ 1059 197 p
+ 1063 197 p
+ 1061 197 p
+ 259 197 p
+ 246 197 p
+ 1058 196 p
+ 1021 196 p
+ 1059 196 p
+ 1060 196 p
+ 1055 196 p
+ 259 196 p
+ 245 196 p
+ 1060 195 p
+ 1059 195 p
+ 1055 195 p
+ 1098 195 p
+ 1099 195 p
+ 258 195 p
+ 259 195 p
+ 1061 194 p
+ 1062 194 p
+ 1023 194 p
+ 1058 194 p
+ 1063 194 p
+ 246 194 p
+ 260 194 p
+ 1061 193 p
+ 1062 193 p
+ 1023 193 p
+ 1064 193 p
+ 1065 193 p
+ 260 193 p
+ 247 193 p
+ 1058 192 p
+ 1063 192 p
+ 1061 192 p
+ 1101 192 p
+ 1102 192 p
+ 259 192 p
+ 260 192 p
+ 1064 191 p
+ 1062 191 p
+ 1065 191 p
+ 1026 191 p
+ 1066 191 p
+ 261 191 p
+ 247 191 p
+ 1064 190 p
+ 1062 190 p
+ 1065 190 p
+ 1104 190 p
+ 1105 190 p
+ 261 190 p
+ 260 190 p
+ 1026 189 p
+ 1064 189 p
+ 1066 189 p
+ 1067 189 p
+ 1068 189 p
+ 248 189 p
+ 261 189 p
+ 1067 188 p
+ 1066 188 p
+ 1068 188 p
+ 1029 188 p
+ 1069 188 p
+ 262 188 p
+ 248 188 p
+ 1067 187 p
+ 1066 187 p
+ 1068 187 p
+ 1107 187 p
+ 1109 187 p
+ 262 187 p
+ 261 187 p
+ 1029 186 p
+ 1067 186 p
+ 1069 186 p
+ 1070 186 p
+ 1071 186 p
+ 249 186 p
+ 262 186 p
+ 1070 185 p
+ 1069 185 p
+ 1071 185 p
+ 1032 185 p
+ 1072 185 p
+ 263 185 p
+ 249 185 p
+ 1070 184 p
+ 1069 184 p
+ 1071 184 p
+ 1110 184 p
+ 1112 184 p
+ 263 184 p
+ 262 184 p
+ 1032 183 p
+ 1070 183 p
+ 1072 183 p
+ 1073 183 p
+ 1074 183 p
+ 250 183 p
+ 263 183 p
+ 1073 182 p
+ 1072 182 p
+ 1074 182 p
+ 1035 182 p
+ 1075 182 p
+ 264 182 p
+ 250 182 p
+ 1073 181 p
+ 1072 181 p
+ 1074 181 p
+ 1113 181 p
+ 1115 181 p
+ 264 181 p
+ 263 181 p
+ 1035 180 p
+ 1073 180 p
+ 1075 180 p
+ 1076 180 p
+ 1077 180 p
+ 251 180 p
+ 264 180 p
+ 1076 179 p
+ 1075 179 p
+ 1077 179 p
+ 1038 179 p
+ 1078 179 p
+ 265 179 p
+ 251 179 p
+ 1076 178 p
+ 1075 178 p
+ 1077 178 p
+ 1116 178 p
+ 1118 178 p
+ 265 178 p
+ 264 178 p
+ 1038 177 p
+ 1076 177 p
+ 1078 177 p
+ 252 177 p
+ 265 177 p
+ 1041 176 p
+ 1079 176 p
+ 1080 176 p
+ 1081 176 p
+ 1082 176 p
+ 325 176 p
+ 324 176 p
+ 1041 175 p
+ 1079 175 p
+ 1080 175 p
+ 337 175 p
+ 1121 175 p
+ 6 175 p
+ 324 175 p
+ 1079 174 p
+ 1081 174 p
+ 1082 174 p
+ 1002 174 p
+ 1083 174 p
+ 325 174 p
+ 317 174 p
+ 1079 173 p
+ 1081 173 p
+ 1082 173 p
+ 1167 173 p
+ 1165 173 p
+ 324 173 p
+ 317 173 p
+ 1002 172 p
+ 1083 172 p
+ 1081 172 p
+ 1247 172 p
+ 1244 172 p
+ 318 172 p
+ 317 172 p
+ 1084 171 p
+ 1044 171 p
+ 1085 171 p
+ 1088 171 p
+ 1087 171 p
+ 266 171 p
+ 254 171 p
+ 1084 170 p
+ 1044 170 p
+ 1085 170 p
+ 266 170 p
+ 253 170 p
+ 1086 169 p
+ 1048 169 p
+ 1087 169 p
+ 1091 169 p
+ 1090 169 p
+ 267 169 p
+ 255 169 p
+ 1086 168 p
+ 1048 168 p
+ 1087 168 p
+ 1088 168 p
+ 1084 168 p
+ 267 168 p
+ 254 168 p
+ 1088 167 p
+ 1087 167 p
+ 1084 167 p
+ 1122 167 p
+ 1123 167 p
+ 266 167 p
+ 267 167 p
+ 1089 166 p
+ 1051 166 p
+ 1090 166 p
+ 1094 166 p
+ 1093 166 p
+ 268 166 p
+ 256 166 p
+ 1089 165 p
+ 1051 165 p
+ 1090 165 p
+ 1091 165 p
+ 1086 165 p
+ 268 165 p
+ 255 165 p
+ 1091 164 p
+ 1090 164 p
+ 1086 164 p
+ 1124 164 p
+ 1125 164 p
+ 267 164 p
+ 268 164 p
+ 1092 163 p
+ 1054 163 p
+ 1093 163 p
+ 1097 163 p
+ 1096 163 p
+ 269 163 p
+ 257 163 p
+ 1092 162 p
+ 1054 162 p
+ 1093 162 p
+ 1094 162 p
+ 1089 162 p
+ 269 162 p
+ 256 162 p
+ 1094 161 p
+ 1093 161 p
+ 1089 161 p
+ 1127 161 p
+ 1128 161 p
+ 268 161 p
+ 269 161 p
+ 1095 160 p
+ 1057 160 p
+ 1096 160 p
+ 1100 160 p
+ 1099 160 p
+ 270 160 p
+ 258 160 p
+ 1095 159 p
+ 1057 159 p
+ 1096 159 p
+ 1097 159 p
+ 1092 159 p
+ 270 159 p
+ 257 159 p
+ 1097 158 p
+ 1096 158 p
+ 1092 158 p
+ 1130 158 p
+ 1131 158 p
+ 269 158 p
+ 270 158 p
+ 1098 157 p
+ 1060 157 p
+ 1099 157 p
+ 1103 157 p
+ 1102 157 p
+ 271 157 p
+ 259 157 p
+ 1098 156 p
+ 1060 156 p
+ 1099 156 p
+ 1100 156 p
+ 1095 156 p
+ 271 156 p
+ 258 156 p
+ 1100 155 p
+ 1099 155 p
+ 1095 155 p
+ 1133 155 p
+ 1134 155 p
+ 270 155 p
+ 271 155 p
+ 1101 154 p
+ 1063 154 p
+ 1102 154 p
+ 1106 154 p
+ 1104 154 p
+ 272 154 p
+ 260 154 p
+ 1101 153 p
+ 1063 153 p
+ 1102 153 p
+ 1103 153 p
+ 1098 153 p
+ 272 153 p
+ 259 153 p
+ 1103 152 p
+ 1102 152 p
+ 1098 152 p
+ 1136 152 p
+ 1137 152 p
+ 271 152 p
+ 272 152 p
+ 1104 151 p
+ 1105 151 p
+ 1065 151 p
+ 1101 151 p
+ 1106 151 p
+ 260 151 p
+ 273 151 p
+ 1104 150 p
+ 1105 150 p
+ 1065 150 p
+ 1107 150 p
+ 1108 150 p
+ 273 150 p
+ 261 150 p
+ 1101 149 p
+ 1106 149 p
+ 1104 149 p
+ 1139 149 p
+ 1140 149 p
+ 272 149 p
+ 273 149 p
+ 1107 148 p
+ 1105 148 p
+ 1108 148 p
+ 1068 148 p
+ 1109 148 p
+ 274 148 p
+ 261 148 p
+ 1107 147 p
+ 1105 147 p
+ 1108 147 p
+ 1142 147 p
+ 1143 147 p
+ 274 147 p
+ 273 147 p
+ 1068 146 p
+ 1107 146 p
+ 1109 146 p
+ 1110 146 p
+ 1111 146 p
+ 262 146 p
+ 274 146 p
+ 1110 145 p
+ 1109 145 p
+ 1111 145 p
+ 1071 145 p
+ 1112 145 p
+ 275 145 p
+ 262 145 p
+ 1110 144 p
+ 1109 144 p
+ 1111 144 p
+ 1145 144 p
+ 1146 144 p
+ 275 144 p
+ 274 144 p
+ 1071 143 p
+ 1110 143 p
+ 1112 143 p
+ 1113 143 p
+ 1114 143 p
+ 263 143 p
+ 275 143 p
+ 1113 142 p
+ 1112 142 p
+ 1114 142 p
+ 1074 142 p
+ 1115 142 p
+ 276 142 p
+ 263 142 p
+ 1113 141 p
+ 1112 141 p
+ 1114 141 p
+ 1148 141 p
+ 1149 141 p
+ 276 141 p
+ 275 141 p
+ 1074 140 p
+ 1113 140 p
+ 1115 140 p
+ 1116 140 p
+ 1117 140 p
+ 264 140 p
+ 276 140 p
+ 1116 139 p
+ 1115 139 p
+ 1117 139 p
+ 1077 139 p
+ 1118 139 p
+ 277 139 p
+ 264 139 p
+ 1116 138 p
+ 1115 138 p
+ 1117 138 p
+ 1151 138 p
+ 1153 138 p
+ 277 138 p
+ 276 138 p
+ 1077 137 p
+ 1116 137 p
+ 1118 137 p
+ 1119 137 p
+ 1120 137 p
+ 265 137 p
+ 277 137 p
+ 1118 136 p
+ 1119 136 p
+ 1120 136 p
+ 1156 136 p
+ 1158 136 p
+ 277 136 p
+ 278 136 p
+ 1118 135 p
+ 1119 135 p
+ 1120 135 p
+ 265 135 p
+ 278 135 p
+ 337 134 p
+ 1080 134 p
+ 1121 134 p
+ 1163 134 p
+ 1164 134 p
+ 5 134 p
+ 324 134 p
+ 1122 133 p
+ 1088 133 p
+ 1123 133 p
+ 1126 133 p
+ 1125 133 p
+ 279 133 p
+ 267 133 p
+ 1122 132 p
+ 1088 132 p
+ 1123 132 p
+ 279 132 p
+ 266 132 p
+ 1124 131 p
+ 1091 131 p
+ 1125 131 p
+ 1129 131 p
+ 1128 131 p
+ 280 131 p
+ 268 131 p
+ 1124 130 p
+ 1091 130 p
+ 1125 130 p
+ 1126 130 p
+ 1122 130 p
+ 280 130 p
+ 267 130 p
+ 1126 129 p
+ 1125 129 p
+ 1122 129 p
+ 1168 129 p
+ 1169 129 p
+ 279 129 p
+ 280 129 p
+ 1127 128 p
+ 1094 128 p
+ 1128 128 p
+ 1132 128 p
+ 1131 128 p
+ 281 128 p
+ 269 128 p
+ 1127 127 p
+ 1094 127 p
+ 1128 127 p
+ 1129 127 p
+ 1124 127 p
+ 281 127 p
+ 268 127 p
+ 1129 126 p
+ 1128 126 p
+ 1124 126 p
+ 1170 126 p
+ 1171 126 p
+ 280 126 p
+ 281 126 p
+ 1130 125 p
+ 1097 125 p
+ 1131 125 p
+ 1135 125 p
+ 1134 125 p
+ 282 125 p
+ 270 125 p
+ 1130 124 p
+ 1097 124 p
+ 1131 124 p
+ 1132 124 p
+ 1127 124 p
+ 282 124 p
+ 269 124 p
+ 1132 123 p
+ 1131 123 p
+ 1127 123 p
+ 1173 123 p
+ 1174 123 p
+ 281 123 p
+ 282 123 p
+ 1133 122 p
+ 1100 122 p
+ 1134 122 p
+ 1138 122 p
+ 1137 122 p
+ 283 122 p
+ 271 122 p
+ 1133 121 p
+ 1100 121 p
+ 1134 121 p
+ 1135 121 p
+ 1130 121 p
+ 283 121 p
+ 270 121 p
+ 1135 120 p
+ 1134 120 p
+ 1130 120 p
+ 1176 120 p
+ 1177 120 p
+ 282 120 p
+ 283 120 p
+ 1136 119 p
+ 1103 119 p
+ 1137 119 p
+ 1141 119 p
+ 1140 119 p
+ 284 119 p
+ 272 119 p
+ 1136 118 p
+ 1103 118 p
+ 1137 118 p
+ 1138 118 p
+ 1133 118 p
+ 284 118 p
+ 271 118 p
+ 1138 117 p
+ 1137 117 p
+ 1133 117 p
+ 1179 117 p
+ 1180 117 p
+ 283 117 p
+ 284 117 p
+ 1139 116 p
+ 1106 116 p
+ 1140 116 p
+ 1144 116 p
+ 1143 116 p
+ 285 116 p
+ 273 116 p
+ 1139 115 p
+ 1106 115 p
+ 1140 115 p
+ 1141 115 p
+ 1136 115 p
+ 285 115 p
+ 272 115 p
+ 1141 114 p
+ 1140 114 p
+ 1136 114 p
+ 1182 114 p
+ 1183 114 p
+ 284 114 p
+ 285 114 p
+ 1142 113 p
+ 1108 113 p
+ 1143 113 p
+ 1147 113 p
+ 1145 113 p
+ 286 113 p
+ 274 113 p
+ 1142 112 p
+ 1108 112 p
+ 1143 112 p
+ 1144 112 p
+ 1139 112 p
+ 286 112 p
+ 273 112 p
+ 1144 111 p
+ 1143 111 p
+ 1139 111 p
+ 1185 111 p
+ 1186 111 p
+ 285 111 p
+ 286 111 p
+ 1145 110 p
+ 1146 110 p
+ 1111 110 p
+ 1142 110 p
+ 1147 110 p
+ 274 110 p
+ 287 110 p
+ 1145 109 p
+ 1146 109 p
+ 1111 109 p
+ 1150 109 p
+ 1148 109 p
+ 287 109 p
+ 275 109 p
+ 1142 108 p
+ 1147 108 p
+ 1145 108 p
+ 1188 108 p
+ 1189 108 p
+ 286 108 p
+ 287 108 p
+ 1148 107 p
+ 1149 107 p
+ 1114 107 p
+ 1146 107 p
+ 1150 107 p
+ 275 107 p
+ 288 107 p
+ 1148 106 p
+ 1149 106 p
+ 1114 106 p
+ 1151 106 p
+ 1152 106 p
+ 288 106 p
+ 276 106 p
+ 1146 105 p
+ 1150 105 p
+ 1148 105 p
+ 1191 105 p
+ 1192 105 p
+ 287 105 p
+ 288 105 p
+ 1151 104 p
+ 1149 104 p
+ 1152 104 p
+ 1117 104 p
+ 1153 104 p
+ 289 104 p
+ 276 104 p
+ 1151 103 p
+ 1149 103 p
+ 1152 103 p
+ 1196 103 p
+ 1194 103 p
+ 289 103 p
+ 288 103 p
+ 1117 102 p
+ 1151 102 p
+ 1153 102 p
+ 1154 102 p
+ 1155 102 p
+ 277 102 p
+ 289 102 p
+ 1154 101 p
+ 1153 101 p
+ 1155 101 p
+ 1156 101 p
+ 1157 101 p
+ 290 101 p
+ 277 101 p
+ 1154 100 p
+ 1153 100 p
+ 1155 100 p
+ 1194 100 p
+ 1195 100 p
+ 290 100 p
+ 289 100 p
+ 1156 99 p
+ 1154 99 p
+ 1157 99 p
+ 1119 99 p
+ 1158 99 p
+ 291 99 p
+ 277 99 p
+ 1156 98 p
+ 1154 98 p
+ 1157 98 p
+ 1200 98 p
+ 1198 98 p
+ 291 98 p
+ 290 98 p
+ 1119 97 p
+ 1156 97 p
+ 1158 97 p
+ 1159 97 p
+ 1162 97 p
+ 278 97 p
+ 291 97 p
+ 1159 96 p
+ 1160 96 p
+ 1161 96 p
+ 1158 96 p
+ 1162 96 p
+ 292 96 p
+ 291 96 p
+ 1159 95 p
+ 1160 95 p
+ 1161 95 p
+ 1198 95 p
+ 1199 95 p
+ 291 95 p
+ 1 95 p
+ 1159 94 p
+ 1160 94 p
+ 1161 94 p
+ 292 94 p
+ 1 94 p
+ 1158 93 p
+ 1159 93 p
+ 1162 93 p
+ 278 93 p
+ 292 93 p
+ 1121 92 p
+ 1163 92 p
+ 1164 92 p
+ 1165 92 p
+ 1166 92 p
+ 324 92 p
+ 323 92 p
+ 1121 91 p
+ 1163 91 p
+ 1164 91 p
+ 332 91 p
+ 1202 91 p
+ 5 91 p
+ 323 91 p
+ 1163 90 p
+ 1165 90 p
+ 1166 90 p
+ 1082 90 p
+ 1167 90 p
+ 324 90 p
+ 316 90 p
+ 1163 89 p
+ 1165 89 p
+ 1166 89 p
+ 1243 89 p
+ 1234 89 p
+ 323 89 p
+ 316 89 p
+ 1082 88 p
+ 1167 88 p
+ 1165 88 p
+ 1245 88 p
+ 1241 88 p
+ 317 88 p
+ 316 88 p
+ 1168 87 p
+ 1126 87 p
+ 1169 87 p
+ 1172 87 p
+ 1171 87 p
+ 293 87 p
+ 280 87 p
+ 1168 86 p
+ 1126 86 p
+ 1169 86 p
+ 293 86 p
+ 279 86 p
+ 1170 85 p
+ 1129 85 p
+ 1171 85 p
+ 1175 85 p
+ 1174 85 p
+ 294 85 p
+ 281 85 p
+ 1170 84 p
+ 1129 84 p
+ 1171 84 p
+ 1172 84 p
+ 1168 84 p
+ 294 84 p
+ 280 84 p
+ 1172 83 p
+ 1171 83 p
+ 1168 83 p
+ 1203 83 p
+ 1204 83 p
+ 293 83 p
+ 294 83 p
+ 1173 82 p
+ 1132 82 p
+ 1174 82 p
+ 1178 82 p
+ 1177 82 p
+ 295 82 p
+ 282 82 p
+ 1173 81 p
+ 1132 81 p
+ 1174 81 p
+ 1175 81 p
+ 1170 81 p
+ 295 81 p
+ 281 81 p
+ 1175 80 p
+ 1174 80 p
+ 1170 80 p
+ 1205 80 p
+ 1206 80 p
+ 294 80 p
+ 295 80 p
+ 1176 79 p
+ 1135 79 p
+ 1177 79 p
+ 1181 79 p
+ 1180 79 p
+ 296 79 p
+ 283 79 p
+ 1176 78 p
+ 1135 78 p
+ 1177 78 p
+ 1178 78 p
+ 1173 78 p
+ 296 78 p
+ 282 78 p
+ 1178 77 p
+ 1177 77 p
+ 1173 77 p
+ 1208 77 p
+ 1209 77 p
+ 295 77 p
+ 296 77 p
+ 1179 76 p
+ 1138 76 p
+ 1180 76 p
+ 1184 76 p
+ 1183 76 p
+ 297 76 p
+ 284 76 p
+ 1179 75 p
+ 1138 75 p
+ 1180 75 p
+ 1181 75 p
+ 1176 75 p
+ 297 75 p
+ 283 75 p
+ 1181 74 p
+ 1180 74 p
+ 1176 74 p
+ 1211 74 p
+ 1212 74 p
+ 296 74 p
+ 297 74 p
+ 1182 73 p
+ 1141 73 p
+ 1183 73 p
+ 1187 73 p
+ 1186 73 p
+ 298 73 p
+ 285 73 p
+ 1182 72 p
+ 1141 72 p
+ 1183 72 p
+ 1184 72 p
+ 1179 72 p
+ 298 72 p
+ 284 72 p
+ 1184 71 p
+ 1183 71 p
+ 1179 71 p
+ 1214 71 p
+ 1215 71 p
+ 297 71 p
+ 298 71 p
+ 1185 70 p
+ 1144 70 p
+ 1186 70 p
+ 1190 70 p
+ 1189 70 p
+ 299 70 p
+ 286 70 p
+ 1185 69 p
+ 1144 69 p
+ 1186 69 p
+ 1187 69 p
+ 1182 69 p
+ 299 69 p
+ 285 69 p
+ 1187 68 p
+ 1186 68 p
+ 1182 68 p
+ 1217 68 p
+ 1218 68 p
+ 298 68 p
+ 299 68 p
+ 1188 67 p
+ 1147 67 p
+ 1189 67 p
+ 1193 67 p
+ 1191 67 p
+ 300 67 p
+ 287 67 p
+ 1188 66 p
+ 1147 66 p
+ 1189 66 p
+ 1190 66 p
+ 1185 66 p
+ 300 66 p
+ 286 66 p
+ 1190 65 p
+ 1189 65 p
+ 1185 65 p
+ 1220 65 p
+ 1221 65 p
+ 299 65 p
+ 300 65 p
+ 1191 64 p
+ 1192 64 p
+ 1150 64 p
+ 1188 64 p
+ 1193 64 p
+ 287 64 p
+ 301 64 p
+ 1191 63 p
+ 1192 63 p
+ 1150 63 p
+ 1197 63 p
+ 1196 63 p
+ 301 63 p
+ 288 63 p
+ 1188 62 p
+ 1193 62 p
+ 1191 62 p
+ 1223 62 p
+ 1224 62 p
+ 300 62 p
+ 301 62 p
+ 1194 61 p
+ 1195 61 p
+ 1155 61 p
+ 1196 61 p
+ 1152 61 p
+ 289 61 p
+ 302 61 p
+ 1194 60 p
+ 1195 60 p
+ 1155 60 p
+ 1201 60 p
+ 1200 60 p
+ 302 60 p
+ 290 60 p
+ 1196 59 p
+ 1194 59 p
+ 1152 59 p
+ 1192 59 p
+ 1197 59 p
+ 288 59 p
+ 302 59 p
+ 1192 58 p
+ 1197 58 p
+ 1196 58 p
+ 1226 58 p
+ 1227 58 p
+ 301 58 p
+ 302 58 p
+ 1198 57 p
+ 1199 57 p
+ 1160 57 p
+ 1200 57 p
+ 1157 57 p
+ 291 57 p
+ 303 57 p
+ 1198 56 p
+ 1199 56 p
+ 1160 56 p
+ 303 56 p
+ 1 56 p
+ 1200 55 p
+ 1198 55 p
+ 1157 55 p
+ 1195 55 p
+ 1201 55 p
+ 290 55 p
+ 303 55 p
+ 1195 54 p
+ 1201 54 p
+ 1200 54 p
+ 1229 54 p
+ 1230 54 p
+ 302 54 p
+ 303 54 p
+ 332 53 p
+ 1164 53 p
+ 1202 53 p
+ 1232 53 p
+ 1233 53 p
+ 4 53 p
+ 323 53 p
+ 1203 52 p
+ 1172 52 p
+ 1204 52 p
+ 1207 52 p
+ 1206 52 p
+ 304 52 p
+ 294 52 p
+ 1203 51 p
+ 1172 51 p
+ 1204 51 p
+ 304 51 p
+ 293 51 p
+ 1205 50 p
+ 1175 50 p
+ 1206 50 p
+ 1210 50 p
+ 1209 50 p
+ 305 50 p
+ 295 50 p
+ 1205 49 p
+ 1175 49 p
+ 1206 49 p
+ 1207 49 p
+ 1203 49 p
+ 305 49 p
+ 294 49 p
+ 1207 48 p
+ 1206 48 p
+ 1203 48 p
+ 1236 48 p
+ 1237 48 p
+ 304 48 p
+ 305 48 p
+ 1208 47 p
+ 1178 47 p
+ 1209 47 p
+ 1213 47 p
+ 1212 47 p
+ 306 47 p
+ 296 47 p
+ 1208 46 p
+ 1178 46 p
+ 1209 46 p
+ 1210 46 p
+ 1205 46 p
+ 306 46 p
+ 295 46 p
+ 1210 45 p
+ 1209 45 p
+ 1205 45 p
+ 1238 45 p
+ 1239 45 p
+ 305 45 p
+ 306 45 p
+ 1211 44 p
+ 1181 44 p
+ 1212 44 p
+ 1216 44 p
+ 1215 44 p
+ 307 44 p
+ 297 44 p
+ 1211 43 p
+ 1181 43 p
+ 1212 43 p
+ 1213 43 p
+ 1208 43 p
+ 307 43 p
+ 296 43 p
+ 1213 42 p
+ 1212 42 p
+ 1208 42 p
+ 1241 42 p
+ 1242 42 p
+ 306 42 p
+ 307 42 p
+ 1214 41 p
+ 1184 41 p
+ 1215 41 p
+ 1219 41 p
+ 1218 41 p
+ 308 41 p
+ 298 41 p
+ 1214 40 p
+ 1184 40 p
+ 1215 40 p
+ 1216 40 p
+ 1211 40 p
+ 308 40 p
+ 297 40 p
+ 1216 39 p
+ 1215 39 p
+ 1211 39 p
+ 1244 39 p
+ 1245 39 p
+ 307 39 p
+ 308 39 p
+ 1217 38 p
+ 1187 38 p
+ 1218 38 p
+ 1222 38 p
+ 1221 38 p
+ 309 38 p
+ 299 38 p
+ 1217 37 p
+ 1187 37 p
+ 1218 37 p
+ 1219 37 p
+ 1214 37 p
+ 309 37 p
+ 298 37 p
+ 1219 36 p
+ 1218 36 p
+ 1214 36 p
+ 1246 36 p
+ 1247 36 p
+ 308 36 p
+ 309 36 p
+ 1220 35 p
+ 1190 35 p
+ 1221 35 p
+ 1225 35 p
+ 1223 35 p
+ 310 35 p
+ 300 35 p
+ 1220 34 p
+ 1190 34 p
+ 1221 34 p
+ 1222 34 p
+ 1217 34 p
+ 310 34 p
+ 299 34 p
+ 1222 33 p
+ 1221 33 p
+ 1217 33 p
+ 1248 33 p
+ 1249 33 p
+ 309 33 p
+ 310 33 p
+ 1223 32 p
+ 1224 32 p
+ 1193 32 p
+ 1220 32 p
+ 1225 32 p
+ 300 32 p
+ 311 32 p
+ 1223 31 p
+ 1224 31 p
+ 1193 31 p
+ 1228 31 p
+ 1226 31 p
+ 311 31 p
+ 301 31 p
+ 1220 30 p
+ 1225 30 p
+ 1223 30 p
+ 1250 30 p
+ 1251 30 p
+ 310 30 p
+ 311 30 p
+ 1226 29 p
+ 1227 29 p
+ 1197 29 p
+ 1224 29 p
+ 1228 29 p
+ 301 29 p
+ 312 29 p
+ 1226 28 p
+ 1227 28 p
+ 1197 28 p
+ 1231 28 p
+ 1229 28 p
+ 312 28 p
+ 302 28 p
+ 1224 27 p
+ 1228 27 p
+ 1226 27 p
+ 1254 27 p
+ 1253 27 p
+ 311 27 p
+ 312 27 p
+ 1229 26 p
+ 1230 26 p
+ 1201 26 p
+ 1227 26 p
+ 1231 26 p
+ 302 26 p
+ 313 26 p
+ 1229 25 p
+ 1230 25 p
+ 1201 25 p
+ 313 25 p
+ 303 25 p
+ 1227 24 p
+ 1231 24 p
+ 1229 24 p
+ 1252 24 p
+ 1253 24 p
+ 312 24 p
+ 313 24 p
+ 1202 23 p
+ 1232 23 p
+ 1233 23 p
+ 1234 23 p
+ 1235 23 p
+ 323 23 p
+ 322 23 p
+ 1202 22 p
+ 1232 22 p
+ 1233 22 p
+ 4 22 p
+ 322 22 p
+ 1232 21 p
+ 1234 21 p
+ 1235 21 p
+ 1166 21 p
+ 1243 21 p
+ 323 21 p
+ 315 21 p
+ 1232 20 p
+ 1234 20 p
+ 1235 20 p
+ 1240 20 p
+ 1255 20 p
+ 322 20 p
+ 315 20 p
+ 1236 19 p
+ 1207 19 p
+ 1237 19 p
+ 1240 19 p
+ 1239 19 p
+ 314 19 p
+ 305 19 p
+ 1236 18 p
+ 1207 18 p
+ 1237 18 p
+ 314 18 p
+ 304 18 p
+ 1238 17 p
+ 1210 17 p
+ 1239 17 p
+ 1243 17 p
+ 1242 17 p
+ 315 17 p
+ 306 17 p
+ 1238 16 p
+ 1210 16 p
+ 1239 16 p
+ 1240 16 p
+ 1236 16 p
+ 315 16 p
+ 305 16 p
+ 1240 15 p
+ 1239 15 p
+ 1236 15 p
+ 1235 15 p
+ 1255 15 p
+ 314 15 p
+ 315 15 p
+ 1241 14 p
+ 1213 14 p
+ 1242 14 p
+ 1167 14 p
+ 1245 14 p
+ 316 14 p
+ 307 14 p
+ 1241 13 p
+ 1213 13 p
+ 1242 13 p
+ 1243 13 p
+ 1238 13 p
+ 316 13 p
+ 306 13 p
+ 1243 12 p
+ 1242 12 p
+ 1238 12 p
+ 1166 12 p
+ 1234 12 p
+ 315 12 p
+ 316 12 p
+ 1244 11 p
+ 1216 11 p
+ 1245 11 p
+ 1083 11 p
+ 1247 11 p
+ 317 11 p
+ 308 11 p
+ 1244 10 p
+ 1216 10 p
+ 1245 10 p
+ 1167 10 p
+ 1241 10 p
+ 317 10 p
+ 307 10 p
+ 1246 9 p
+ 1219 9 p
+ 1247 9 p
+ 1040 9 p
+ 1249 9 p
+ 318 9 p
+ 309 9 p
+ 1246 8 p
+ 1219 8 p
+ 1247 8 p
+ 1083 8 p
+ 1244 8 p
+ 318 8 p
+ 308 8 p
+ 1248 7 p
+ 1222 7 p
+ 1249 7 p
+ 960 7 p
+ 1251 7 p
+ 319 7 p
+ 310 7 p
+ 1248 6 p
+ 1222 6 p
+ 1249 6 p
+ 1040 6 p
+ 1246 6 p
+ 319 6 p
+ 309 6 p
+ 1250 5 p
+ 1225 5 p
+ 1251 5 p
+ 848 5 p
+ 1254 5 p
+ 320 5 p
+ 311 5 p
+ 1250 4 p
+ 1225 4 p
+ 1251 4 p
+ 960 4 p
+ 1248 4 p
+ 320 4 p
+ 310 4 p
+ 1252 3 p
+ 1231 3 p
+ 1253 3 p
+ 321 3 p
+ 313 3 p
+ 1252 2 p
+ 1231 2 p
+ 1253 2 p
+ 1254 2 p
+ 1228 2 p
+ 321 2 p
+ 312 2 p
+ 1254 1 p
+ 1253 1 p
+ 1228 1 p
+ 1250 1 p
+ 848 1 p
+ 311 1 p
+ 321 1 p
+ 1235 0 p
+ 1240 0 p
+ 1255 0 p
+ 322 0 p
+ 314 0 p
+showpage
diff --git a/DOC/mat9.pdf b/DOC/mat9.pdf
new file mode 100644
index 0000000..ca136b7
--- /dev/null
+++ b/DOC/mat9.pdf
Binary files differ
diff --git a/DOC/mat9.ps b/DOC/mat9.ps
new file mode 100644
index 0000000..0bae0f3
--- /dev/null
+++ b/DOC/mat9.ps
@@ -0,0 +1,7332 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: PSPLTM routine
+%%BoundingBox: 100 50 510 500
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 16.9700 cm moveto
+(Assembled Matrix) Cshow
+ 3.81000 cm 2.00000 cm translate
+ 13.9700 cm 1081 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 1081 0 lineto
+ 1081 1081 lineto
+ 0 1081 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 1079 p
+ 801 1079 p
+ 802 1079 p
+ 825 1079 p
+ 827 1079 p
+ 1 1078 p
+ 501 1078 p
+ 500 1078 p
+ 603 1078 p
+ 2 1077 p
+ 352 1077 p
+ 351 1077 p
+ 398 1077 p
+ 3 1076 p
+ 599 1076 p
+ 600 1076 p
+ 626 1076 p
+ 629 1076 p
+ 4 1075 p
+ 288 1075 p
+ 287 1075 p
+ 290 1075 p
+ 1037 1075 p
+ 1039 1075 p
+ 5 1074 p
+ 287 1074 p
+ 286 1074 p
+ 293 1074 p
+ 292 1074 p
+ 1038 1074 p
+ 1043 1074 p
+ 6 1073 p
+ 292 1073 p
+ 291 1073 p
+ 297 1073 p
+ 296 1073 p
+ 1044 1073 p
+ 1046 1073 p
+ 7 1072 p
+ 296 1072 p
+ 295 1072 p
+ 301 1072 p
+ 300 1072 p
+ 1047 1072 p
+ 1052 1072 p
+ 8 1071 p
+ 300 1071 p
+ 299 1071 p
+ 305 1071 p
+ 304 1071 p
+ 1053 1071 p
+ 1058 1071 p
+ 9 1070 p
+ 304 1070 p
+ 303 1070 p
+ 309 1070 p
+ 308 1070 p
+ 1059 1070 p
+ 1061 1070 p
+ 10 1069 p
+ 308 1069 p
+ 307 1069 p
+ 313 1069 p
+ 312 1069 p
+ 1062 1069 p
+ 1065 1069 p
+ 11 1068 p
+ 312 1068 p
+ 311 1068 p
+ 317 1068 p
+ 316 1068 p
+ 1066 1068 p
+ 1070 1068 p
+ 12 1067 p
+ 316 1067 p
+ 315 1067 p
+ 321 1067 p
+ 320 1067 p
+ 1071 1067 p
+ 1075 1067 p
+ 13 1066 p
+ 320 1066 p
+ 319 1066 p
+ 325 1066 p
+ 324 1066 p
+ 1076 1066 p
+ 1079 1066 p
+ 14 1065 p
+ 324 1065 p
+ 323 1065 p
+ 330 1065 p
+ 331 1065 p
+ 933 1065 p
+ 993 1065 p
+ 15 1064 p
+ 327 1064 p
+ 329 1064 p
+ 331 1064 p
+ 932 1064 p
+ 16 1063 p
+ 329 1063 p
+ 328 1063 p
+ 333 1063 p
+ 335 1063 p
+ 901 1063 p
+ 927 1063 p
+ 17 1062 p
+ 335 1062 p
+ 334 1062 p
+ 338 1062 p
+ 339 1062 p
+ 341 1062 p
+ 776 1062 p
+ 777 1062 p
+ 18 1061 p
+ 341 1061 p
+ 340 1061 p
+ 343 1061 p
+ 345 1061 p
+ 650 1061 p
+ 669 1061 p
+ 710 1061 p
+ 19 1060 p
+ 345 1060 p
+ 344 1060 p
+ 347 1060 p
+ 349 1060 p
+ 502 1060 p
+ 552 1060 p
+ 20 1059 p
+ 349 1059 p
+ 348 1059 p
+ 354 1059 p
+ 356 1059 p
+ 404 1059 p
+ 499 1059 p
+ 21 1058 p
+ 356 1058 p
+ 355 1058 p
+ 403 1058 p
+ 22 1057 p
+ 289 1057 p
+ 290 1057 p
+ 358 1057 p
+ 23 1056 p
+ 286 1056 p
+ 288 1056 p
+ 289 1056 p
+ 294 1056 p
+ 357 1056 p
+ 360 1056 p
+ 24 1055 p
+ 291 1055 p
+ 293 1055 p
+ 294 1055 p
+ 298 1055 p
+ 359 1055 p
+ 363 1055 p
+ 25 1054 p
+ 295 1054 p
+ 297 1054 p
+ 298 1054 p
+ 302 1054 p
+ 362 1054 p
+ 366 1054 p
+ 26 1053 p
+ 299 1053 p
+ 301 1053 p
+ 302 1053 p
+ 306 1053 p
+ 365 1053 p
+ 369 1053 p
+ 27 1052 p
+ 303 1052 p
+ 305 1052 p
+ 306 1052 p
+ 310 1052 p
+ 368 1052 p
+ 372 1052 p
+ 28 1051 p
+ 307 1051 p
+ 309 1051 p
+ 310 1051 p
+ 314 1051 p
+ 371 1051 p
+ 375 1051 p
+ 29 1050 p
+ 311 1050 p
+ 313 1050 p
+ 314 1050 p
+ 318 1050 p
+ 374 1050 p
+ 378 1050 p
+ 30 1049 p
+ 315 1049 p
+ 317 1049 p
+ 318 1049 p
+ 322 1049 p
+ 377 1049 p
+ 381 1049 p
+ 31 1048 p
+ 319 1048 p
+ 321 1048 p
+ 322 1048 p
+ 326 1048 p
+ 380 1048 p
+ 384 1048 p
+ 32 1047 p
+ 323 1047 p
+ 325 1047 p
+ 326 1047 p
+ 332 1047 p
+ 383 1047 p
+ 387 1047 p
+ 33 1046 p
+ 328 1046 p
+ 327 1046 p
+ 330 1046 p
+ 332 1046 p
+ 336 1046 p
+ 386 1046 p
+ 390 1046 p
+ 34 1045 p
+ 334 1045 p
+ 333 1045 p
+ 336 1045 p
+ 337 1045 p
+ 389 1045 p
+ 393 1045 p
+ 35 1044 p
+ 338 1044 p
+ 337 1044 p
+ 342 1044 p
+ 392 1044 p
+ 396 1044 p
+ 36 1043 p
+ 340 1043 p
+ 339 1043 p
+ 342 1043 p
+ 346 1043 p
+ 395 1043 p
+ 401 1043 p
+ 37 1042 p
+ 344 1042 p
+ 343 1042 p
+ 346 1042 p
+ 350 1042 p
+ 400 1042 p
+ 38 1041 p
+ 348 1041 p
+ 347 1041 p
+ 350 1041 p
+ 351 1041 p
+ 353 1041 p
+ 399 1041 p
+ 39 1040 p
+ 353 1040 p
+ 352 1040 p
+ 355 1040 p
+ 354 1040 p
+ 40 1039 p
+ 357 1039 p
+ 358 1039 p
+ 361 1039 p
+ 406 1039 p
+ 408 1039 p
+ 41 1038 p
+ 359 1038 p
+ 360 1038 p
+ 361 1038 p
+ 364 1038 p
+ 405 1038 p
+ 410 1038 p
+ 42 1037 p
+ 362 1037 p
+ 363 1037 p
+ 364 1037 p
+ 367 1037 p
+ 409 1037 p
+ 413 1037 p
+ 43 1036 p
+ 365 1036 p
+ 366 1036 p
+ 367 1036 p
+ 370 1036 p
+ 412 1036 p
+ 416 1036 p
+ 44 1035 p
+ 368 1035 p
+ 369 1035 p
+ 370 1035 p
+ 373 1035 p
+ 415 1035 p
+ 419 1035 p
+ 45 1034 p
+ 371 1034 p
+ 372 1034 p
+ 373 1034 p
+ 376 1034 p
+ 418 1034 p
+ 423 1034 p
+ 46 1033 p
+ 374 1033 p
+ 375 1033 p
+ 376 1033 p
+ 379 1033 p
+ 422 1033 p
+ 47 1032 p
+ 377 1032 p
+ 378 1032 p
+ 379 1032 p
+ 382 1032 p
+ 421 1032 p
+ 426 1032 p
+ 428 1032 p
+ 48 1031 p
+ 380 1031 p
+ 381 1031 p
+ 382 1031 p
+ 385 1031 p
+ 427 1031 p
+ 431 1031 p
+ 49 1030 p
+ 383 1030 p
+ 384 1030 p
+ 385 1030 p
+ 388 1030 p
+ 430 1030 p
+ 434 1030 p
+ 50 1029 p
+ 386 1029 p
+ 387 1029 p
+ 388 1029 p
+ 391 1029 p
+ 433 1029 p
+ 51 1028 p
+ 389 1028 p
+ 390 1028 p
+ 391 1028 p
+ 394 1028 p
+ 436 1028 p
+ 440 1028 p
+ 52 1027 p
+ 392 1027 p
+ 393 1027 p
+ 394 1027 p
+ 397 1027 p
+ 438 1027 p
+ 53 1026 p
+ 395 1026 p
+ 396 1026 p
+ 397 1026 p
+ 402 1026 p
+ 437 1026 p
+ 54 1025 p
+ 398 1025 p
+ 399 1025 p
+ 400 1025 p
+ 401 1025 p
+ 402 1025 p
+ 439 1025 p
+ 55 1024 p
+ 407 1024 p
+ 408 1024 p
+ 443 1024 p
+ 445 1024 p
+ 56 1023 p
+ 405 1023 p
+ 406 1023 p
+ 407 1023 p
+ 411 1023 p
+ 442 1023 p
+ 447 1023 p
+ 57 1022 p
+ 409 1022 p
+ 410 1022 p
+ 411 1022 p
+ 414 1022 p
+ 446 1022 p
+ 450 1022 p
+ 58 1021 p
+ 412 1021 p
+ 413 1021 p
+ 414 1021 p
+ 417 1021 p
+ 449 1021 p
+ 453 1021 p
+ 59 1020 p
+ 415 1020 p
+ 416 1020 p
+ 417 1020 p
+ 420 1020 p
+ 452 1020 p
+ 456 1020 p
+ 60 1019 p
+ 418 1019 p
+ 419 1019 p
+ 420 1019 p
+ 424 1019 p
+ 455 1019 p
+ 460 1019 p
+ 61 1018 p
+ 421 1018 p
+ 422 1018 p
+ 423 1018 p
+ 424 1018 p
+ 425 1018 p
+ 459 1018 p
+ 62 1017 p
+ 426 1017 p
+ 425 1017 p
+ 429 1017 p
+ 458 1017 p
+ 463 1017 p
+ 63 1016 p
+ 427 1016 p
+ 428 1016 p
+ 429 1016 p
+ 432 1016 p
+ 462 1016 p
+ 466 1016 p
+ 64 1015 p
+ 430 1015 p
+ 431 1015 p
+ 432 1015 p
+ 435 1015 p
+ 465 1015 p
+ 469 1015 p
+ 65 1014 p
+ 433 1014 p
+ 434 1014 p
+ 435 1014 p
+ 436 1014 p
+ 441 1014 p
+ 468 1014 p
+ 66 1013 p
+ 437 1013 p
+ 438 1013 p
+ 439 1013 p
+ 440 1013 p
+ 441 1013 p
+ 471 1013 p
+ 67 1012 p
+ 444 1012 p
+ 445 1012 p
+ 473 1012 p
+ 475 1012 p
+ 68 1011 p
+ 442 1011 p
+ 443 1011 p
+ 444 1011 p
+ 448 1011 p
+ 472 1011 p
+ 69 1010 p
+ 446 1010 p
+ 447 1010 p
+ 448 1010 p
+ 451 1010 p
+ 476 1010 p
+ 478 1010 p
+ 481 1010 p
+ 70 1009 p
+ 449 1009 p
+ 450 1009 p
+ 451 1009 p
+ 454 1009 p
+ 480 1009 p
+ 71 1008 p
+ 452 1008 p
+ 453 1008 p
+ 454 1008 p
+ 457 1008 p
+ 479 1008 p
+ 484 1008 p
+ 72 1007 p
+ 455 1007 p
+ 456 1007 p
+ 457 1007 p
+ 461 1007 p
+ 483 1007 p
+ 487 1007 p
+ 73 1006 p
+ 458 1006 p
+ 459 1006 p
+ 460 1006 p
+ 461 1006 p
+ 464 1006 p
+ 486 1006 p
+ 490 1006 p
+ 493 1006 p
+ 74 1005 p
+ 462 1005 p
+ 463 1005 p
+ 464 1005 p
+ 467 1005 p
+ 492 1005 p
+ 75 1004 p
+ 465 1004 p
+ 466 1004 p
+ 467 1004 p
+ 470 1004 p
+ 491 1004 p
+ 495 1004 p
+ 76 1003 p
+ 468 1003 p
+ 469 1003 p
+ 470 1003 p
+ 471 1003 p
+ 497 1003 p
+ 77 1002 p
+ 474 1002 p
+ 475 1002 p
+ 504 1002 p
+ 506 1002 p
+ 78 1001 p
+ 472 1001 p
+ 473 1001 p
+ 474 1001 p
+ 476 1001 p
+ 477 1001 p
+ 503 1001 p
+ 79 1000 p
+ 478 1000 p
+ 477 1000 p
+ 482 1000 p
+ 507 1000 p
+ 509 1000 p
+ 80 999 p
+ 479 999 p
+ 480 999 p
+ 481 999 p
+ 482 999 p
+ 485 999 p
+ 508 999 p
+ 512 999 p
+ 81 998 p
+ 483 998 p
+ 484 998 p
+ 485 998 p
+ 488 998 p
+ 511 998 p
+ 515 998 p
+ 517 998 p
+ 82 997 p
+ 486 997 p
+ 487 997 p
+ 488 997 p
+ 489 997 p
+ 516 997 p
+ 520 997 p
+ 83 996 p
+ 490 996 p
+ 489 996 p
+ 494 996 p
+ 519 996 p
+ 524 996 p
+ 84 995 p
+ 491 995 p
+ 492 995 p
+ 493 995 p
+ 494 995 p
+ 496 995 p
+ 523 995 p
+ 85 994 p
+ 495 994 p
+ 496 994 p
+ 497 994 p
+ 522 994 p
+ 526 994 p
+ 86 993 p
+ 505 993 p
+ 506 993 p
+ 529 993 p
+ 87 992 p
+ 503 992 p
+ 504 992 p
+ 505 992 p
+ 507 992 p
+ 510 992 p
+ 528 992 p
+ 531 992 p
+ 88 991 p
+ 508 991 p
+ 509 991 p
+ 510 991 p
+ 513 991 p
+ 530 991 p
+ 534 991 p
+ 89 990 p
+ 511 990 p
+ 512 990 p
+ 513 990 p
+ 514 990 p
+ 533 990 p
+ 537 990 p
+ 539 990 p
+ 90 989 p
+ 515 989 p
+ 514 989 p
+ 518 989 p
+ 538 989 p
+ 542 989 p
+ 91 988 p
+ 516 988 p
+ 517 988 p
+ 518 988 p
+ 521 988 p
+ 541 988 p
+ 546 988 p
+ 92 987 p
+ 519 987 p
+ 520 987 p
+ 521 987 p
+ 525 987 p
+ 545 987 p
+ 93 986 p
+ 522 986 p
+ 523 986 p
+ 524 986 p
+ 525 986 p
+ 527 986 p
+ 544 986 p
+ 549 986 p
+ 94 985 p
+ 526 985 p
+ 527 985 p
+ 548 985 p
+ 95 984 p
+ 528 984 p
+ 529 984 p
+ 532 984 p
+ 554 984 p
+ 556 984 p
+ 96 983 p
+ 530 983 p
+ 531 983 p
+ 532 983 p
+ 535 983 p
+ 553 983 p
+ 558 983 p
+ 97 982 p
+ 533 982 p
+ 534 982 p
+ 535 982 p
+ 536 982 p
+ 557 982 p
+ 561 982 p
+ 98 981 p
+ 537 981 p
+ 536 981 p
+ 540 981 p
+ 560 981 p
+ 565 981 p
+ 99 980 p
+ 538 980 p
+ 539 980 p
+ 540 980 p
+ 543 980 p
+ 564 980 p
+ 100 979 p
+ 541 979 p
+ 542 979 p
+ 543 979 p
+ 547 979 p
+ 563 979 p
+ 568 979 p
+ 101 978 p
+ 544 978 p
+ 545 978 p
+ 546 978 p
+ 547 978 p
+ 550 978 p
+ 567 978 p
+ 571 978 p
+ 102 977 p
+ 548 977 p
+ 549 977 p
+ 550 977 p
+ 570 977 p
+ 573 977 p
+ 103 976 p
+ 555 976 p
+ 556 976 p
+ 576 976 p
+ 104 975 p
+ 553 975 p
+ 554 975 p
+ 555 975 p
+ 559 975 p
+ 575 975 p
+ 578 975 p
+ 105 974 p
+ 557 974 p
+ 558 974 p
+ 559 974 p
+ 562 974 p
+ 577 974 p
+ 581 974 p
+ 106 973 p
+ 560 973 p
+ 561 973 p
+ 562 973 p
+ 566 973 p
+ 580 973 p
+ 584 973 p
+ 107 972 p
+ 563 972 p
+ 564 972 p
+ 565 972 p
+ 566 972 p
+ 569 972 p
+ 583 972 p
+ 587 972 p
+ 108 971 p
+ 567 971 p
+ 568 971 p
+ 569 971 p
+ 572 971 p
+ 586 971 p
+ 590 971 p
+ 592 971 p
+ 109 970 p
+ 570 970 p
+ 571 970 p
+ 572 970 p
+ 574 970 p
+ 591 970 p
+ 595 970 p
+ 110 969 p
+ 573 969 p
+ 574 969 p
+ 594 969 p
+ 597 969 p
+ 111 968 p
+ 575 968 p
+ 576 968 p
+ 579 968 p
+ 605 968 p
+ 607 968 p
+ 112 967 p
+ 577 967 p
+ 578 967 p
+ 579 967 p
+ 582 967 p
+ 604 967 p
+ 609 967 p
+ 113 966 p
+ 580 966 p
+ 581 966 p
+ 582 966 p
+ 585 966 p
+ 608 966 p
+ 612 966 p
+ 114 965 p
+ 583 965 p
+ 584 965 p
+ 585 965 p
+ 588 965 p
+ 611 965 p
+ 615 965 p
+ 115 964 p
+ 586 964 p
+ 587 964 p
+ 588 964 p
+ 589 964 p
+ 614 964 p
+ 619 964 p
+ 116 963 p
+ 590 963 p
+ 589 963 p
+ 593 963 p
+ 618 963 p
+ 117 962 p
+ 591 962 p
+ 592 962 p
+ 593 962 p
+ 596 962 p
+ 617 962 p
+ 622 962 p
+ 118 961 p
+ 594 961 p
+ 595 961 p
+ 596 961 p
+ 598 961 p
+ 600 961 p
+ 621 961 p
+ 624 961 p
+ 119 960 p
+ 597 960 p
+ 598 960 p
+ 599 960 p
+ 120 959 p
+ 606 959 p
+ 607 959 p
+ 631 959 p
+ 121 958 p
+ 604 958 p
+ 605 958 p
+ 606 958 p
+ 610 958 p
+ 630 958 p
+ 633 958 p
+ 122 957 p
+ 608 957 p
+ 609 957 p
+ 610 957 p
+ 613 957 p
+ 632 957 p
+ 636 957 p
+ 638 957 p
+ 123 956 p
+ 611 956 p
+ 612 956 p
+ 613 956 p
+ 616 956 p
+ 637 956 p
+ 641 956 p
+ 124 955 p
+ 614 955 p
+ 615 955 p
+ 616 955 p
+ 620 955 p
+ 640 955 p
+ 645 955 p
+ 125 954 p
+ 617 954 p
+ 618 954 p
+ 619 954 p
+ 620 954 p
+ 623 954 p
+ 644 954 p
+ 126 953 p
+ 621 953 p
+ 622 953 p
+ 623 953 p
+ 625 953 p
+ 628 953 p
+ 643 953 p
+ 647 953 p
+ 127 952 p
+ 624 952 p
+ 625 952 p
+ 626 952 p
+ 627 952 p
+ 128 951 p
+ 627 951 p
+ 628 951 p
+ 629 951 p
+ 649 951 p
+ 129 950 p
+ 630 950 p
+ 631 950 p
+ 634 950 p
+ 652 950 p
+ 654 950 p
+ 130 949 p
+ 632 949 p
+ 633 949 p
+ 634 949 p
+ 635 949 p
+ 651 949 p
+ 656 949 p
+ 131 948 p
+ 636 948 p
+ 635 948 p
+ 639 948 p
+ 655 948 p
+ 660 948 p
+ 132 947 p
+ 637 947 p
+ 638 947 p
+ 639 947 p
+ 642 947 p
+ 659 947 p
+ 133 946 p
+ 640 946 p
+ 641 946 p
+ 642 946 p
+ 646 946 p
+ 658 946 p
+ 663 946 p
+ 134 945 p
+ 643 945 p
+ 644 945 p
+ 645 945 p
+ 646 945 p
+ 648 945 p
+ 662 945 p
+ 665 945 p
+ 135 944 p
+ 647 944 p
+ 648 944 p
+ 649 944 p
+ 667 944 p
+ 136 943 p
+ 653 943 p
+ 654 943 p
+ 671 943 p
+ 137 942 p
+ 651 942 p
+ 652 942 p
+ 653 942 p
+ 657 942 p
+ 670 942 p
+ 673 942 p
+ 138 941 p
+ 655 941 p
+ 656 941 p
+ 657 941 p
+ 661 941 p
+ 672 941 p
+ 676 941 p
+ 139 940 p
+ 658 940 p
+ 659 940 p
+ 660 940 p
+ 661 940 p
+ 664 940 p
+ 675 940 p
+ 679 940 p
+ 140 939 p
+ 662 939 p
+ 663 939 p
+ 664 939 p
+ 666 939 p
+ 678 939 p
+ 681 939 p
+ 141 938 p
+ 665 938 p
+ 666 938 p
+ 667 938 p
+ 683 938 p
+ 142 937 p
+ 670 937 p
+ 671 937 p
+ 674 937 p
+ 685 937 p
+ 687 937 p
+ 143 936 p
+ 672 936 p
+ 673 936 p
+ 674 936 p
+ 677 936 p
+ 684 936 p
+ 144 935 p
+ 675 935 p
+ 676 935 p
+ 677 935 p
+ 680 935 p
+ 688 935 p
+ 690 935 p
+ 693 935 p
+ 145 934 p
+ 678 934 p
+ 679 934 p
+ 680 934 p
+ 682 934 p
+ 692 934 p
+ 146 933 p
+ 681 933 p
+ 682 933 p
+ 683 933 p
+ 691 933 p
+ 695 933 p
+ 147 932 p
+ 686 932 p
+ 687 932 p
+ 698 932 p
+ 148 931 p
+ 684 931 p
+ 685 931 p
+ 686 931 p
+ 688 931 p
+ 689 931 p
+ 697 931 p
+ 700 931 p
+ 149 930 p
+ 690 930 p
+ 689 930 p
+ 694 930 p
+ 699 930 p
+ 703 930 p
+ 150 929 p
+ 691 929 p
+ 692 929 p
+ 693 929 p
+ 694 929 p
+ 696 929 p
+ 702 929 p
+ 705 929 p
+ 151 928 p
+ 695 928 p
+ 696 928 p
+ 707 928 p
+ 152 927 p
+ 697 927 p
+ 698 927 p
+ 701 927 p
+ 714 927 p
+ 153 926 p
+ 699 926 p
+ 700 926 p
+ 701 926 p
+ 704 926 p
+ 713 926 p
+ 716 926 p
+ 154 925 p
+ 702 925 p
+ 703 925 p
+ 704 925 p
+ 706 925 p
+ 715 925 p
+ 719 925 p
+ 721 925 p
+ 155 924 p
+ 705 924 p
+ 706 924 p
+ 707 924 p
+ 720 924 p
+ 723 924 p
+ 156 923 p
+ 713 923 p
+ 714 923 p
+ 717 923 p
+ 726 923 p
+ 157 922 p
+ 715 922 p
+ 716 922 p
+ 717 922 p
+ 718 922 p
+ 725 922 p
+ 728 922 p
+ 730 922 p
+ 158 921 p
+ 719 921 p
+ 718 921 p
+ 722 921 p
+ 729 921 p
+ 733 921 p
+ 159 920 p
+ 720 920 p
+ 721 920 p
+ 722 920 p
+ 724 920 p
+ 732 920 p
+ 736 920 p
+ 160 919 p
+ 723 919 p
+ 724 919 p
+ 735 919 p
+ 161 918 p
+ 725 918 p
+ 726 918 p
+ 727 918 p
+ 739 918 p
+ 162 917 p
+ 728 917 p
+ 727 917 p
+ 731 917 p
+ 738 917 p
+ 741 917 p
+ 163 916 p
+ 729 916 p
+ 730 916 p
+ 731 916 p
+ 734 916 p
+ 740 916 p
+ 744 916 p
+ 164 915 p
+ 732 915 p
+ 733 915 p
+ 734 915 p
+ 737 915 p
+ 743 915 p
+ 747 915 p
+ 749 915 p
+ 165 914 p
+ 735 914 p
+ 736 914 p
+ 737 914 p
+ 748 914 p
+ 751 914 p
+ 166 913 p
+ 738 913 p
+ 739 913 p
+ 742 913 p
+ 758 913 p
+ 760 913 p
+ 167 912 p
+ 740 912 p
+ 741 912 p
+ 742 912 p
+ 745 912 p
+ 759 912 p
+ 763 912 p
+ 168 911 p
+ 743 911 p
+ 744 911 p
+ 745 911 p
+ 746 911 p
+ 762 911 p
+ 766 911 p
+ 169 910 p
+ 747 910 p
+ 746 910 p
+ 750 910 p
+ 765 910 p
+ 769 910 p
+ 170 909 p
+ 748 909 p
+ 749 909 p
+ 750 909 p
+ 752 909 p
+ 768 909 p
+ 772 909 p
+ 171 908 p
+ 751 908 p
+ 752 908 p
+ 771 908 p
+ 774 908 p
+ 172 907 p
+ 761 907 p
+ 760 907 p
+ 778 907 p
+ 173 906 p
+ 759 906 p
+ 758 906 p
+ 761 906 p
+ 764 906 p
+ 779 906 p
+ 780 906 p
+ 174 905 p
+ 762 905 p
+ 763 905 p
+ 764 905 p
+ 767 905 p
+ 781 905 p
+ 783 905 p
+ 175 904 p
+ 765 904 p
+ 766 904 p
+ 767 904 p
+ 770 904 p
+ 784 904 p
+ 787 904 p
+ 176 903 p
+ 768 903 p
+ 769 903 p
+ 770 903 p
+ 773 903 p
+ 786 903 p
+ 790 903 p
+ 177 902 p
+ 771 902 p
+ 772 902 p
+ 773 902 p
+ 775 902 p
+ 789 902 p
+ 793 902 p
+ 795 902 p
+ 178 901 p
+ 774 901 p
+ 775 901 p
+ 794 901 p
+ 797 901 p
+ 179 900 p
+ 779 900 p
+ 778 900 p
+ 782 900 p
+ 803 900 p
+ 180 899 p
+ 781 899 p
+ 780 899 p
+ 782 899 p
+ 785 899 p
+ 804 899 p
+ 805 899 p
+ 181 898 p
+ 784 898 p
+ 783 898 p
+ 785 898 p
+ 788 898 p
+ 806 898 p
+ 808 898 p
+ 182 897 p
+ 786 897 p
+ 787 897 p
+ 788 897 p
+ 791 897 p
+ 809 897 p
+ 811 897 p
+ 183 896 p
+ 789 896 p
+ 790 896 p
+ 791 896 p
+ 792 896 p
+ 812 896 p
+ 814 896 p
+ 184 895 p
+ 793 895 p
+ 792 895 p
+ 796 895 p
+ 815 895 p
+ 817 895 p
+ 185 894 p
+ 794 894 p
+ 795 894 p
+ 796 894 p
+ 798 894 p
+ 800 894 p
+ 818 894 p
+ 820 894 p
+ 186 893 p
+ 799 893 p
+ 800 893 p
+ 802 893 p
+ 821 893 p
+ 823 893 p
+ 187 892 p
+ 797 892 p
+ 798 892 p
+ 799 892 p
+ 801 892 p
+ 188 891 p
+ 804 891 p
+ 803 891 p
+ 807 891 p
+ 831 891 p
+ 833 891 p
+ 189 890 p
+ 806 890 p
+ 805 890 p
+ 807 890 p
+ 810 890 p
+ 832 890 p
+ 835 890 p
+ 190 889 p
+ 809 889 p
+ 808 889 p
+ 810 889 p
+ 813 889 p
+ 836 889 p
+ 838 889 p
+ 191 888 p
+ 812 888 p
+ 811 888 p
+ 813 888 p
+ 816 888 p
+ 839 888 p
+ 841 888 p
+ 192 887 p
+ 815 887 p
+ 814 887 p
+ 816 887 p
+ 819 887 p
+ 842 887 p
+ 844 887 p
+ 193 886 p
+ 818 886 p
+ 817 886 p
+ 819 886 p
+ 822 886 p
+ 845 886 p
+ 849 886 p
+ 194 885 p
+ 821 885 p
+ 820 885 p
+ 822 885 p
+ 824 885 p
+ 847 885 p
+ 195 884 p
+ 823 884 p
+ 824 884 p
+ 825 884 p
+ 826 884 p
+ 848 884 p
+ 852 884 p
+ 196 883 p
+ 827 883 p
+ 826 883 p
+ 851 883 p
+ 197 882 p
+ 834 882 p
+ 833 882 p
+ 854 882 p
+ 198 881 p
+ 832 881 p
+ 831 881 p
+ 834 881 p
+ 837 881 p
+ 855 881 p
+ 856 881 p
+ 199 880 p
+ 836 880 p
+ 835 880 p
+ 837 880 p
+ 840 880 p
+ 857 880 p
+ 859 880 p
+ 200 879 p
+ 839 879 p
+ 838 879 p
+ 840 879 p
+ 843 879 p
+ 860 879 p
+ 862 879 p
+ 201 878 p
+ 842 878 p
+ 841 878 p
+ 843 878 p
+ 846 878 p
+ 863 878 p
+ 865 878 p
+ 202 877 p
+ 845 877 p
+ 844 877 p
+ 846 877 p
+ 850 877 p
+ 866 877 p
+ 869 877 p
+ 870 877 p
+ 203 876 p
+ 848 876 p
+ 847 876 p
+ 849 876 p
+ 850 876 p
+ 853 876 p
+ 871 876 p
+ 204 875 p
+ 851 875 p
+ 852 875 p
+ 853 875 p
+ 873 875 p
+ 875 875 p
+ 205 874 p
+ 855 874 p
+ 854 874 p
+ 858 874 p
+ 876 874 p
+ 206 873 p
+ 857 873 p
+ 856 873 p
+ 858 873 p
+ 861 873 p
+ 877 873 p
+ 878 873 p
+ 207 872 p
+ 860 872 p
+ 859 872 p
+ 861 872 p
+ 864 872 p
+ 879 872 p
+ 881 872 p
+ 208 871 p
+ 863 871 p
+ 862 871 p
+ 864 871 p
+ 867 871 p
+ 882 871 p
+ 884 871 p
+ 209 870 p
+ 866 870 p
+ 865 870 p
+ 867 870 p
+ 868 870 p
+ 885 870 p
+ 887 870 p
+ 210 869 p
+ 869 869 p
+ 868 869 p
+ 872 869 p
+ 888 869 p
+ 890 869 p
+ 211 868 p
+ 871 868 p
+ 870 868 p
+ 872 868 p
+ 873 868 p
+ 874 868 p
+ 891 868 p
+ 894 868 p
+ 895 868 p
+ 212 867 p
+ 875 867 p
+ 874 867 p
+ 896 867 p
+ 899 867 p
+ 213 866 p
+ 877 866 p
+ 876 866 p
+ 880 866 p
+ 902 866 p
+ 904 866 p
+ 214 865 p
+ 879 865 p
+ 878 865 p
+ 880 865 p
+ 883 865 p
+ 903 865 p
+ 906 865 p
+ 215 864 p
+ 882 864 p
+ 881 864 p
+ 883 864 p
+ 886 864 p
+ 907 864 p
+ 909 864 p
+ 216 863 p
+ 885 863 p
+ 884 863 p
+ 886 863 p
+ 889 863 p
+ 910 863 p
+ 912 863 p
+ 217 862 p
+ 888 862 p
+ 887 862 p
+ 889 862 p
+ 892 862 p
+ 913 862 p
+ 915 862 p
+ 218 861 p
+ 891 861 p
+ 890 861 p
+ 892 861 p
+ 893 861 p
+ 916 861 p
+ 918 861 p
+ 219 860 p
+ 894 860 p
+ 893 860 p
+ 897 860 p
+ 919 860 p
+ 921 860 p
+ 220 859 p
+ 896 859 p
+ 895 859 p
+ 897 859 p
+ 898 859 p
+ 922 859 p
+ 924 859 p
+ 221 858 p
+ 899 858 p
+ 898 858 p
+ 925 858 p
+ 222 857 p
+ 905 857 p
+ 904 857 p
+ 934 857 p
+ 936 857 p
+ 223 856 p
+ 903 856 p
+ 902 856 p
+ 905 856 p
+ 908 856 p
+ 935 856 p
+ 224 855 p
+ 907 855 p
+ 906 855 p
+ 908 855 p
+ 911 855 p
+ 938 855 p
+ 939 855 p
+ 225 854 p
+ 910 854 p
+ 909 854 p
+ 911 854 p
+ 914 854 p
+ 940 854 p
+ 942 854 p
+ 226 853 p
+ 913 853 p
+ 912 853 p
+ 914 853 p
+ 917 853 p
+ 943 853 p
+ 945 853 p
+ 227 852 p
+ 916 852 p
+ 915 852 p
+ 917 852 p
+ 920 852 p
+ 946 852 p
+ 948 852 p
+ 228 851 p
+ 919 851 p
+ 918 851 p
+ 920 851 p
+ 923 851 p
+ 949 851 p
+ 951 851 p
+ 229 850 p
+ 922 850 p
+ 921 850 p
+ 923 850 p
+ 926 850 p
+ 952 850 p
+ 955 850 p
+ 956 850 p
+ 230 849 p
+ 925 849 p
+ 924 849 p
+ 926 849 p
+ 957 849 p
+ 960 849 p
+ 231 848 p
+ 937 848 p
+ 936 848 p
+ 961 848 p
+ 232 847 p
+ 935 847 p
+ 934 847 p
+ 937 847 p
+ 938 847 p
+ 941 847 p
+ 962 847 p
+ 963 847 p
+ 233 846 p
+ 940 846 p
+ 939 846 p
+ 941 846 p
+ 944 846 p
+ 964 846 p
+ 967 846 p
+ 970 846 p
+ 234 845 p
+ 943 845 p
+ 942 845 p
+ 944 845 p
+ 947 845 p
+ 968 845 p
+ 235 844 p
+ 946 844 p
+ 945 844 p
+ 947 844 p
+ 950 844 p
+ 969 844 p
+ 972 844 p
+ 236 843 p
+ 949 843 p
+ 948 843 p
+ 950 843 p
+ 953 843 p
+ 973 843 p
+ 975 843 p
+ 237 842 p
+ 952 842 p
+ 951 842 p
+ 953 842 p
+ 954 842 p
+ 976 842 p
+ 978 842 p
+ 238 841 p
+ 955 841 p
+ 954 841 p
+ 958 841 p
+ 979 841 p
+ 981 841 p
+ 239 840 p
+ 957 840 p
+ 956 840 p
+ 958 840 p
+ 959 840 p
+ 982 840 p
+ 985 840 p
+ 987 840 p
+ 240 839 p
+ 960 839 p
+ 959 839 p
+ 986 839 p
+ 990 839 p
+ 992 839 p
+ 241 838 p
+ 962 838 p
+ 961 838 p
+ 965 838 p
+ 997 838 p
+ 242 837 p
+ 964 837 p
+ 963 837 p
+ 965 837 p
+ 966 837 p
+ 998 837 p
+ 999 837 p
+ 243 836 p
+ 967 836 p
+ 966 836 p
+ 971 836 p
+ 1000 836 p
+ 1002 836 p
+ 244 835 p
+ 969 835 p
+ 968 835 p
+ 970 835 p
+ 971 835 p
+ 974 835 p
+ 1003 835 p
+ 1006 835 p
+ 1007 835 p
+ 245 834 p
+ 973 834 p
+ 972 834 p
+ 974 834 p
+ 977 834 p
+ 1008 834 p
+ 1010 834 p
+ 246 833 p
+ 976 833 p
+ 975 833 p
+ 977 833 p
+ 980 833 p
+ 1011 833 p
+ 1013 833 p
+ 247 832 p
+ 979 832 p
+ 978 832 p
+ 980 832 p
+ 983 832 p
+ 1014 832 p
+ 1016 832 p
+ 248 831 p
+ 982 831 p
+ 981 831 p
+ 983 831 p
+ 984 831 p
+ 1017 831 p
+ 1019 831 p
+ 249 830 p
+ 985 830 p
+ 984 830 p
+ 988 830 p
+ 1020 830 p
+ 1022 830 p
+ 250 829 p
+ 986 829 p
+ 987 829 p
+ 988 829 p
+ 989 829 p
+ 1023 829 p
+ 1026 829 p
+ 251 828 p
+ 990 828 p
+ 989 828 p
+ 991 828 p
+ 1025 828 p
+ 1029 828 p
+ 252 827 p
+ 992 827 p
+ 991 827 p
+ 1028 827 p
+ 1030 827 p
+ 1031 827 p
+ 1032 827 p
+ 253 826 p
+ 998 826 p
+ 997 826 p
+ 1001 826 p
+ 1033 826 p
+ 254 825 p
+ 1000 825 p
+ 999 825 p
+ 1001 825 p
+ 1004 825 p
+ 1034 825 p
+ 1035 825 p
+ 255 824 p
+ 1003 824 p
+ 1002 824 p
+ 1004 824 p
+ 1005 824 p
+ 1036 824 p
+ 1041 824 p
+ 256 823 p
+ 1006 823 p
+ 1005 823 p
+ 1009 823 p
+ 1042 823 p
+ 1049 823 p
+ 1055 823 p
+ 257 822 p
+ 1008 822 p
+ 1007 822 p
+ 1009 822 p
+ 1012 822 p
+ 1050 822 p
+ 258 821 p
+ 1011 821 p
+ 1010 821 p
+ 1012 821 p
+ 1015 821 p
+ 1051 821 p
+ 1056 821 p
+ 259 820 p
+ 1014 820 p
+ 1013 820 p
+ 1015 820 p
+ 1018 820 p
+ 1057 820 p
+ 1064 820 p
+ 1068 820 p
+ 260 819 p
+ 1017 819 p
+ 1016 819 p
+ 1018 819 p
+ 1021 819 p
+ 1069 819 p
+ 1073 819 p
+ 261 818 p
+ 1020 818 p
+ 1019 818 p
+ 1021 818 p
+ 1024 818 p
+ 1074 818 p
+ 1078 818 p
+ 262 817 p
+ 996 817 p
+ 995 817 p
+ 1023 817 p
+ 1022 817 p
+ 1024 817 p
+ 1027 817 p
+ 263 816 p
+ 930 816 p
+ 929 816 p
+ 931 816 p
+ 1025 816 p
+ 1026 816 p
+ 1027 816 p
+ 264 815 p
+ 830 815 p
+ 829 815 p
+ 900 815 p
+ 931 815 p
+ 1028 815 p
+ 1029 815 p
+ 265 814 p
+ 756 814 p
+ 755 814 p
+ 757 814 p
+ 900 814 p
+ 1030 814 p
+ 266 813 p
+ 712 813 p
+ 711 813 p
+ 753 813 p
+ 757 813 p
+ 1031 813 p
+ 267 812 p
+ 601 812 p
+ 602 812 p
+ 603 812 p
+ 708 812 p
+ 753 812 p
+ 1032 812 p
+ 268 811 p
+ 1034 811 p
+ 1033 811 p
+ 1039 811 p
+ 1040 811 p
+ 269 810 p
+ 1036 810 p
+ 1035 810 p
+ 1037 810 p
+ 1038 810 p
+ 1040 810 p
+ 1045 810 p
+ 270 809 p
+ 1042 809 p
+ 1041 809 p
+ 1043 809 p
+ 1044 809 p
+ 1045 809 p
+ 1048 809 p
+ 271 808 p
+ 1046 808 p
+ 1047 808 p
+ 1048 808 p
+ 1049 808 p
+ 1054 808 p
+ 272 807 p
+ 1051 807 p
+ 1050 807 p
+ 1052 807 p
+ 1053 807 p
+ 1054 807 p
+ 1055 807 p
+ 1060 807 p
+ 273 806 p
+ 1057 806 p
+ 1056 806 p
+ 1058 806 p
+ 1059 806 p
+ 1060 806 p
+ 1063 806 p
+ 274 805 p
+ 1061 805 p
+ 1062 805 p
+ 1063 805 p
+ 1064 805 p
+ 1067 805 p
+ 275 804 p
+ 1065 804 p
+ 1066 804 p
+ 1067 804 p
+ 1069 804 p
+ 1068 804 p
+ 1072 804 p
+ 276 803 p
+ 1070 803 p
+ 1071 803 p
+ 1072 803 p
+ 1074 803 p
+ 1073 803 p
+ 1077 803 p
+ 277 802 p
+ 994 802 p
+ 996 802 p
+ 1075 802 p
+ 1076 802 p
+ 1077 802 p
+ 1078 802 p
+ 278 801 p
+ 928 801 p
+ 930 801 p
+ 993 801 p
+ 995 801 p
+ 994 801 p
+ 1079 801 p
+ 279 800 p
+ 828 800 p
+ 830 800 p
+ 927 800 p
+ 929 800 p
+ 928 800 p
+ 933 800 p
+ 932 800 p
+ 280 799 p
+ 754 799 p
+ 756 799 p
+ 777 799 p
+ 829 799 p
+ 828 799 p
+ 901 799 p
+ 281 798 p
+ 710 798 p
+ 709 798 p
+ 712 798 p
+ 755 798 p
+ 754 798 p
+ 776 798 p
+ 282 797 p
+ 669 797 p
+ 668 797 p
+ 708 797 p
+ 709 797 p
+ 711 797 p
+ 283 796 p
+ 552 796 p
+ 551 796 p
+ 601 796 p
+ 650 796 p
+ 668 796 p
+ 284 795 p
+ 499 795 p
+ 498 795 p
+ 501 795 p
+ 502 795 p
+ 551 795 p
+ 602 795 p
+ 285 794 p
+ 404 794 p
+ 403 794 p
+ 498 794 p
+ 500 794 p
+ 286 793 p
+ 287 793 p
+ 288 793 p
+ 294 793 p
+ 293 793 p
+ 23 793 p
+ 5 793 p
+ 286 792 p
+ 287 792 p
+ 288 792 p
+ 1037 792 p
+ 1038 792 p
+ 5 792 p
+ 4 792 p
+ 286 791 p
+ 287 791 p
+ 288 791 p
+ 289 791 p
+ 290 791 p
+ 23 791 p
+ 4 791 p
+ 289 790 p
+ 288 790 p
+ 290 790 p
+ 357 790 p
+ 358 790 p
+ 22 790 p
+ 23 790 p
+ 289 789 p
+ 288 789 p
+ 290 789 p
+ 22 789 p
+ 4 789 p
+ 291 788 p
+ 292 788 p
+ 293 788 p
+ 298 788 p
+ 297 788 p
+ 24 788 p
+ 6 788 p
+ 291 787 p
+ 292 787 p
+ 293 787 p
+ 1043 787 p
+ 1044 787 p
+ 6 787 p
+ 5 787 p
+ 291 786 p
+ 292 786 p
+ 293 786 p
+ 294 786 p
+ 286 786 p
+ 24 786 p
+ 5 786 p
+ 294 785 p
+ 293 785 p
+ 286 785 p
+ 359 785 p
+ 360 785 p
+ 23 785 p
+ 24 785 p
+ 295 784 p
+ 296 784 p
+ 297 784 p
+ 302 784 p
+ 301 784 p
+ 25 784 p
+ 7 784 p
+ 295 783 p
+ 296 783 p
+ 297 783 p
+ 1046 783 p
+ 1047 783 p
+ 7 783 p
+ 6 783 p
+ 295 782 p
+ 296 782 p
+ 297 782 p
+ 298 782 p
+ 291 782 p
+ 25 782 p
+ 6 782 p
+ 298 781 p
+ 297 781 p
+ 291 781 p
+ 362 781 p
+ 363 781 p
+ 24 781 p
+ 25 781 p
+ 299 780 p
+ 300 780 p
+ 301 780 p
+ 306 780 p
+ 305 780 p
+ 26 780 p
+ 8 780 p
+ 299 779 p
+ 300 779 p
+ 301 779 p
+ 1052 779 p
+ 1053 779 p
+ 8 779 p
+ 7 779 p
+ 299 778 p
+ 300 778 p
+ 301 778 p
+ 302 778 p
+ 295 778 p
+ 26 778 p
+ 7 778 p
+ 302 777 p
+ 301 777 p
+ 295 777 p
+ 365 777 p
+ 366 777 p
+ 25 777 p
+ 26 777 p
+ 303 776 p
+ 304 776 p
+ 305 776 p
+ 310 776 p
+ 309 776 p
+ 27 776 p
+ 9 776 p
+ 303 775 p
+ 304 775 p
+ 305 775 p
+ 1058 775 p
+ 1059 775 p
+ 9 775 p
+ 8 775 p
+ 303 774 p
+ 304 774 p
+ 305 774 p
+ 306 774 p
+ 299 774 p
+ 27 774 p
+ 8 774 p
+ 306 773 p
+ 305 773 p
+ 299 773 p
+ 368 773 p
+ 369 773 p
+ 26 773 p
+ 27 773 p
+ 307 772 p
+ 308 772 p
+ 309 772 p
+ 314 772 p
+ 313 772 p
+ 28 772 p
+ 10 772 p
+ 307 771 p
+ 308 771 p
+ 309 771 p
+ 1061 771 p
+ 1062 771 p
+ 10 771 p
+ 9 771 p
+ 307 770 p
+ 308 770 p
+ 309 770 p
+ 310 770 p
+ 303 770 p
+ 28 770 p
+ 9 770 p
+ 310 769 p
+ 309 769 p
+ 303 769 p
+ 371 769 p
+ 372 769 p
+ 27 769 p
+ 28 769 p
+ 311 768 p
+ 312 768 p
+ 313 768 p
+ 318 768 p
+ 317 768 p
+ 29 768 p
+ 11 768 p
+ 311 767 p
+ 312 767 p
+ 313 767 p
+ 1065 767 p
+ 1066 767 p
+ 11 767 p
+ 10 767 p
+ 311 766 p
+ 312 766 p
+ 313 766 p
+ 314 766 p
+ 307 766 p
+ 29 766 p
+ 10 766 p
+ 314 765 p
+ 313 765 p
+ 307 765 p
+ 374 765 p
+ 375 765 p
+ 28 765 p
+ 29 765 p
+ 315 764 p
+ 316 764 p
+ 317 764 p
+ 322 764 p
+ 321 764 p
+ 30 764 p
+ 12 764 p
+ 315 763 p
+ 316 763 p
+ 317 763 p
+ 1070 763 p
+ 1071 763 p
+ 12 763 p
+ 11 763 p
+ 315 762 p
+ 316 762 p
+ 317 762 p
+ 318 762 p
+ 311 762 p
+ 30 762 p
+ 11 762 p
+ 318 761 p
+ 317 761 p
+ 311 761 p
+ 377 761 p
+ 378 761 p
+ 29 761 p
+ 30 761 p
+ 319 760 p
+ 320 760 p
+ 321 760 p
+ 326 760 p
+ 325 760 p
+ 31 760 p
+ 13 760 p
+ 319 759 p
+ 320 759 p
+ 321 759 p
+ 1075 759 p
+ 1076 759 p
+ 13 759 p
+ 12 759 p
+ 319 758 p
+ 320 758 p
+ 321 758 p
+ 322 758 p
+ 315 758 p
+ 31 758 p
+ 12 758 p
+ 322 757 p
+ 321 757 p
+ 315 757 p
+ 380 757 p
+ 381 757 p
+ 30 757 p
+ 31 757 p
+ 323 756 p
+ 324 756 p
+ 325 756 p
+ 332 756 p
+ 330 756 p
+ 32 756 p
+ 14 756 p
+ 323 755 p
+ 324 755 p
+ 325 755 p
+ 1079 755 p
+ 993 755 p
+ 14 755 p
+ 13 755 p
+ 323 754 p
+ 324 754 p
+ 325 754 p
+ 326 754 p
+ 319 754 p
+ 32 754 p
+ 13 754 p
+ 326 753 p
+ 325 753 p
+ 319 753 p
+ 383 753 p
+ 384 753 p
+ 31 753 p
+ 32 753 p
+ 327 752 p
+ 328 752 p
+ 329 752 p
+ 330 752 p
+ 331 752 p
+ 15 752 p
+ 33 752 p
+ 327 751 p
+ 328 751 p
+ 329 751 p
+ 336 751 p
+ 333 751 p
+ 33 751 p
+ 16 751 p
+ 327 750 p
+ 328 750 p
+ 329 750 p
+ 927 750 p
+ 932 750 p
+ 15 750 p
+ 16 750 p
+ 330 749 p
+ 327 749 p
+ 331 749 p
+ 323 749 p
+ 332 749 p
+ 14 749 p
+ 33 749 p
+ 330 748 p
+ 327 748 p
+ 331 748 p
+ 932 748 p
+ 933 748 p
+ 14 748 p
+ 15 748 p
+ 323 747 p
+ 332 747 p
+ 330 747 p
+ 386 747 p
+ 387 747 p
+ 32 747 p
+ 33 747 p
+ 333 746 p
+ 334 746 p
+ 335 746 p
+ 328 746 p
+ 336 746 p
+ 16 746 p
+ 34 746 p
+ 333 745 p
+ 334 745 p
+ 335 745 p
+ 337 745 p
+ 338 745 p
+ 34 745 p
+ 17 745 p
+ 333 744 p
+ 334 744 p
+ 335 744 p
+ 777 744 p
+ 901 744 p
+ 16 744 p
+ 17 744 p
+ 328 743 p
+ 336 743 p
+ 333 743 p
+ 389 743 p
+ 390 743 p
+ 33 743 p
+ 34 743 p
+ 334 742 p
+ 337 742 p
+ 338 742 p
+ 392 742 p
+ 393 742 p
+ 34 742 p
+ 35 742 p
+ 334 741 p
+ 337 741 p
+ 338 741 p
+ 342 741 p
+ 339 741 p
+ 17 741 p
+ 35 741 p
+ 339 740 p
+ 340 740 p
+ 341 740 p
+ 338 740 p
+ 342 740 p
+ 17 740 p
+ 36 740 p
+ 339 739 p
+ 340 739 p
+ 341 739 p
+ 346 739 p
+ 343 739 p
+ 36 739 p
+ 18 739 p
+ 339 738 p
+ 340 738 p
+ 341 738 p
+ 710 738 p
+ 776 738 p
+ 17 738 p
+ 18 738 p
+ 338 737 p
+ 342 737 p
+ 339 737 p
+ 395 737 p
+ 396 737 p
+ 35 737 p
+ 36 737 p
+ 343 736 p
+ 344 736 p
+ 345 736 p
+ 340 736 p
+ 346 736 p
+ 18 736 p
+ 37 736 p
+ 343 735 p
+ 344 735 p
+ 345 735 p
+ 350 735 p
+ 347 735 p
+ 37 735 p
+ 19 735 p
+ 343 734 p
+ 344 734 p
+ 345 734 p
+ 552 734 p
+ 650 734 p
+ 18 734 p
+ 19 734 p
+ 340 733 p
+ 346 733 p
+ 343 733 p
+ 401 733 p
+ 400 733 p
+ 36 733 p
+ 37 733 p
+ 347 732 p
+ 348 732 p
+ 349 732 p
+ 344 732 p
+ 350 732 p
+ 19 732 p
+ 38 732 p
+ 347 731 p
+ 348 731 p
+ 349 731 p
+ 353 731 p
+ 354 731 p
+ 38 731 p
+ 20 731 p
+ 347 730 p
+ 348 730 p
+ 349 730 p
+ 499 730 p
+ 502 730 p
+ 19 730 p
+ 20 730 p
+ 344 729 p
+ 350 729 p
+ 347 729 p
+ 400 729 p
+ 399 729 p
+ 37 729 p
+ 38 729 p
+ 351 728 p
+ 352 728 p
+ 353 728 p
+ 398 728 p
+ 399 728 p
+ 38 728 p
+ 2 728 p
+ 351 727 p
+ 352 727 p
+ 353 727 p
+ 2 727 p
+ 39 727 p
+ 351 726 p
+ 352 726 p
+ 353 726 p
+ 348 726 p
+ 354 726 p
+ 38 726 p
+ 39 726 p
+ 354 725 p
+ 355 725 p
+ 356 725 p
+ 348 725 p
+ 353 725 p
+ 20 725 p
+ 39 725 p
+ 354 724 p
+ 355 724 p
+ 356 724 p
+ 39 724 p
+ 21 724 p
+ 354 723 p
+ 355 723 p
+ 356 723 p
+ 403 723 p
+ 404 723 p
+ 20 723 p
+ 21 723 p
+ 357 722 p
+ 289 722 p
+ 358 722 p
+ 361 722 p
+ 360 722 p
+ 40 722 p
+ 23 722 p
+ 357 721 p
+ 289 721 p
+ 358 721 p
+ 40 721 p
+ 22 721 p
+ 359 720 p
+ 294 720 p
+ 360 720 p
+ 364 720 p
+ 363 720 p
+ 41 720 p
+ 24 720 p
+ 359 719 p
+ 294 719 p
+ 360 719 p
+ 361 719 p
+ 357 719 p
+ 41 719 p
+ 23 719 p
+ 361 718 p
+ 360 718 p
+ 357 718 p
+ 405 718 p
+ 406 718 p
+ 40 718 p
+ 41 718 p
+ 362 717 p
+ 298 717 p
+ 363 717 p
+ 367 717 p
+ 366 717 p
+ 42 717 p
+ 25 717 p
+ 362 716 p
+ 298 716 p
+ 363 716 p
+ 364 716 p
+ 359 716 p
+ 42 716 p
+ 24 716 p
+ 364 715 p
+ 363 715 p
+ 359 715 p
+ 409 715 p
+ 410 715 p
+ 41 715 p
+ 42 715 p
+ 365 714 p
+ 302 714 p
+ 366 714 p
+ 370 714 p
+ 369 714 p
+ 43 714 p
+ 26 714 p
+ 365 713 p
+ 302 713 p
+ 366 713 p
+ 367 713 p
+ 362 713 p
+ 43 713 p
+ 25 713 p
+ 367 712 p
+ 366 712 p
+ 362 712 p
+ 412 712 p
+ 413 712 p
+ 42 712 p
+ 43 712 p
+ 368 711 p
+ 306 711 p
+ 369 711 p
+ 373 711 p
+ 372 711 p
+ 44 711 p
+ 27 711 p
+ 368 710 p
+ 306 710 p
+ 369 710 p
+ 370 710 p
+ 365 710 p
+ 44 710 p
+ 26 710 p
+ 370 709 p
+ 369 709 p
+ 365 709 p
+ 415 709 p
+ 416 709 p
+ 43 709 p
+ 44 709 p
+ 371 708 p
+ 310 708 p
+ 372 708 p
+ 376 708 p
+ 375 708 p
+ 45 708 p
+ 28 708 p
+ 371 707 p
+ 310 707 p
+ 372 707 p
+ 373 707 p
+ 368 707 p
+ 45 707 p
+ 27 707 p
+ 373 706 p
+ 372 706 p
+ 368 706 p
+ 418 706 p
+ 419 706 p
+ 44 706 p
+ 45 706 p
+ 374 705 p
+ 314 705 p
+ 375 705 p
+ 379 705 p
+ 378 705 p
+ 46 705 p
+ 29 705 p
+ 374 704 p
+ 314 704 p
+ 375 704 p
+ 376 704 p
+ 371 704 p
+ 46 704 p
+ 28 704 p
+ 376 703 p
+ 375 703 p
+ 371 703 p
+ 422 703 p
+ 423 703 p
+ 45 703 p
+ 46 703 p
+ 377 702 p
+ 318 702 p
+ 378 702 p
+ 382 702 p
+ 381 702 p
+ 47 702 p
+ 30 702 p
+ 377 701 p
+ 318 701 p
+ 378 701 p
+ 379 701 p
+ 374 701 p
+ 47 701 p
+ 29 701 p
+ 379 700 p
+ 378 700 p
+ 374 700 p
+ 421 700 p
+ 422 700 p
+ 46 700 p
+ 47 700 p
+ 380 699 p
+ 322 699 p
+ 381 699 p
+ 385 699 p
+ 384 699 p
+ 48 699 p
+ 31 699 p
+ 380 698 p
+ 322 698 p
+ 381 698 p
+ 382 698 p
+ 377 698 p
+ 48 698 p
+ 30 698 p
+ 382 697 p
+ 381 697 p
+ 377 697 p
+ 427 697 p
+ 428 697 p
+ 47 697 p
+ 48 697 p
+ 383 696 p
+ 326 696 p
+ 384 696 p
+ 388 696 p
+ 387 696 p
+ 49 696 p
+ 32 696 p
+ 383 695 p
+ 326 695 p
+ 384 695 p
+ 385 695 p
+ 380 695 p
+ 49 695 p
+ 31 695 p
+ 385 694 p
+ 384 694 p
+ 380 694 p
+ 430 694 p
+ 431 694 p
+ 48 694 p
+ 49 694 p
+ 386 693 p
+ 332 693 p
+ 387 693 p
+ 391 693 p
+ 390 693 p
+ 50 693 p
+ 33 693 p
+ 386 692 p
+ 332 692 p
+ 387 692 p
+ 388 692 p
+ 383 692 p
+ 50 692 p
+ 32 692 p
+ 388 691 p
+ 387 691 p
+ 383 691 p
+ 433 691 p
+ 434 691 p
+ 49 691 p
+ 50 691 p
+ 389 690 p
+ 336 690 p
+ 390 690 p
+ 394 690 p
+ 393 690 p
+ 51 690 p
+ 34 690 p
+ 389 689 p
+ 336 689 p
+ 390 689 p
+ 391 689 p
+ 386 689 p
+ 51 689 p
+ 33 689 p
+ 391 688 p
+ 390 688 p
+ 386 688 p
+ 436 688 p
+ 433 688 p
+ 50 688 p
+ 51 688 p
+ 392 687 p
+ 337 687 p
+ 393 687 p
+ 397 687 p
+ 396 687 p
+ 52 687 p
+ 35 687 p
+ 392 686 p
+ 337 686 p
+ 393 686 p
+ 394 686 p
+ 389 686 p
+ 52 686 p
+ 34 686 p
+ 394 685 p
+ 393 685 p
+ 389 685 p
+ 438 685 p
+ 440 685 p
+ 51 685 p
+ 52 685 p
+ 395 684 p
+ 342 684 p
+ 396 684 p
+ 402 684 p
+ 401 684 p
+ 53 684 p
+ 36 684 p
+ 395 683 p
+ 342 683 p
+ 396 683 p
+ 397 683 p
+ 392 683 p
+ 53 683 p
+ 35 683 p
+ 397 682 p
+ 396 682 p
+ 392 682 p
+ 437 682 p
+ 438 682 p
+ 52 682 p
+ 53 682 p
+ 398 681 p
+ 351 681 p
+ 399 681 p
+ 54 681 p
+ 2 681 p
+ 398 680 p
+ 351 680 p
+ 399 680 p
+ 400 680 p
+ 350 680 p
+ 54 680 p
+ 38 680 p
+ 400 679 p
+ 399 679 p
+ 350 679 p
+ 401 679 p
+ 346 679 p
+ 37 679 p
+ 54 679 p
+ 401 678 p
+ 400 678 p
+ 346 678 p
+ 395 678 p
+ 402 678 p
+ 36 678 p
+ 54 678 p
+ 395 677 p
+ 402 677 p
+ 401 677 p
+ 437 677 p
+ 439 677 p
+ 53 677 p
+ 54 677 p
+ 356 676 p
+ 403 676 p
+ 404 676 p
+ 21 676 p
+ 285 676 p
+ 356 675 p
+ 403 675 p
+ 404 675 p
+ 498 675 p
+ 499 675 p
+ 20 675 p
+ 285 675 p
+ 405 674 p
+ 361 674 p
+ 406 674 p
+ 411 674 p
+ 410 674 p
+ 56 674 p
+ 41 674 p
+ 405 673 p
+ 361 673 p
+ 406 673 p
+ 407 673 p
+ 408 673 p
+ 56 673 p
+ 40 673 p
+ 407 672 p
+ 406 672 p
+ 408 672 p
+ 442 672 p
+ 443 672 p
+ 55 672 p
+ 56 672 p
+ 407 671 p
+ 406 671 p
+ 408 671 p
+ 55 671 p
+ 40 671 p
+ 409 670 p
+ 364 670 p
+ 410 670 p
+ 414 670 p
+ 413 670 p
+ 57 670 p
+ 42 670 p
+ 409 669 p
+ 364 669 p
+ 410 669 p
+ 411 669 p
+ 405 669 p
+ 57 669 p
+ 41 669 p
+ 411 668 p
+ 410 668 p
+ 405 668 p
+ 446 668 p
+ 447 668 p
+ 56 668 p
+ 57 668 p
+ 412 667 p
+ 367 667 p
+ 413 667 p
+ 417 667 p
+ 416 667 p
+ 58 667 p
+ 43 667 p
+ 412 666 p
+ 367 666 p
+ 413 666 p
+ 414 666 p
+ 409 666 p
+ 58 666 p
+ 42 666 p
+ 414 665 p
+ 413 665 p
+ 409 665 p
+ 449 665 p
+ 450 665 p
+ 57 665 p
+ 58 665 p
+ 415 664 p
+ 370 664 p
+ 416 664 p
+ 420 664 p
+ 419 664 p
+ 59 664 p
+ 44 664 p
+ 415 663 p
+ 370 663 p
+ 416 663 p
+ 417 663 p
+ 412 663 p
+ 59 663 p
+ 43 663 p
+ 417 662 p
+ 416 662 p
+ 412 662 p
+ 452 662 p
+ 453 662 p
+ 58 662 p
+ 59 662 p
+ 418 661 p
+ 373 661 p
+ 419 661 p
+ 424 661 p
+ 423 661 p
+ 60 661 p
+ 45 661 p
+ 418 660 p
+ 373 660 p
+ 419 660 p
+ 420 660 p
+ 415 660 p
+ 60 660 p
+ 44 660 p
+ 420 659 p
+ 419 659 p
+ 415 659 p
+ 455 659 p
+ 456 659 p
+ 59 659 p
+ 60 659 p
+ 421 658 p
+ 379 658 p
+ 422 658 p
+ 425 658 p
+ 426 658 p
+ 61 658 p
+ 47 658 p
+ 421 657 p
+ 379 657 p
+ 422 657 p
+ 376 657 p
+ 423 657 p
+ 61 657 p
+ 46 657 p
+ 422 656 p
+ 376 656 p
+ 423 656 p
+ 424 656 p
+ 418 656 p
+ 61 656 p
+ 45 656 p
+ 424 655 p
+ 423 655 p
+ 418 655 p
+ 459 655 p
+ 460 655 p
+ 60 655 p
+ 61 655 p
+ 425 654 p
+ 426 654 p
+ 421 654 p
+ 458 654 p
+ 459 654 p
+ 61 654 p
+ 62 654 p
+ 425 653 p
+ 426 653 p
+ 421 653 p
+ 429 653 p
+ 428 653 p
+ 62 653 p
+ 47 653 p
+ 427 652 p
+ 382 652 p
+ 428 652 p
+ 432 652 p
+ 431 652 p
+ 63 652 p
+ 48 652 p
+ 427 651 p
+ 382 651 p
+ 428 651 p
+ 429 651 p
+ 426 651 p
+ 63 651 p
+ 47 651 p
+ 429 650 p
+ 428 650 p
+ 426 650 p
+ 462 650 p
+ 463 650 p
+ 62 650 p
+ 63 650 p
+ 430 649 p
+ 385 649 p
+ 431 649 p
+ 435 649 p
+ 434 649 p
+ 64 649 p
+ 49 649 p
+ 430 648 p
+ 385 648 p
+ 431 648 p
+ 432 648 p
+ 427 648 p
+ 64 648 p
+ 48 648 p
+ 432 647 p
+ 431 647 p
+ 427 647 p
+ 465 647 p
+ 466 647 p
+ 63 647 p
+ 64 647 p
+ 433 646 p
+ 388 646 p
+ 434 646 p
+ 436 646 p
+ 391 646 p
+ 65 646 p
+ 50 646 p
+ 433 645 p
+ 388 645 p
+ 434 645 p
+ 435 645 p
+ 430 645 p
+ 65 645 p
+ 49 645 p
+ 435 644 p
+ 434 644 p
+ 430 644 p
+ 468 644 p
+ 469 644 p
+ 64 644 p
+ 65 644 p
+ 436 643 p
+ 391 643 p
+ 433 643 p
+ 441 643 p
+ 440 643 p
+ 65 643 p
+ 51 643 p
+ 437 642 p
+ 397 642 p
+ 438 642 p
+ 402 642 p
+ 439 642 p
+ 66 642 p
+ 53 642 p
+ 437 641 p
+ 397 641 p
+ 438 641 p
+ 394 641 p
+ 440 641 p
+ 66 641 p
+ 52 641 p
+ 402 640 p
+ 437 640 p
+ 439 640 p
+ 54 640 p
+ 66 640 p
+ 438 639 p
+ 394 639 p
+ 440 639 p
+ 441 639 p
+ 436 639 p
+ 66 639 p
+ 51 639 p
+ 441 638 p
+ 440 638 p
+ 436 638 p
+ 468 638 p
+ 471 638 p
+ 65 638 p
+ 66 638 p
+ 442 637 p
+ 407 637 p
+ 443 637 p
+ 448 637 p
+ 447 637 p
+ 68 637 p
+ 56 637 p
+ 442 636 p
+ 407 636 p
+ 443 636 p
+ 444 636 p
+ 445 636 p
+ 68 636 p
+ 55 636 p
+ 444 635 p
+ 443 635 p
+ 445 635 p
+ 472 635 p
+ 473 635 p
+ 67 635 p
+ 68 635 p
+ 444 634 p
+ 443 634 p
+ 445 634 p
+ 67 634 p
+ 55 634 p
+ 446 633 p
+ 411 633 p
+ 447 633 p
+ 451 633 p
+ 450 633 p
+ 69 633 p
+ 57 633 p
+ 446 632 p
+ 411 632 p
+ 447 632 p
+ 448 632 p
+ 442 632 p
+ 69 632 p
+ 56 632 p
+ 448 631 p
+ 447 631 p
+ 442 631 p
+ 476 631 p
+ 472 631 p
+ 68 631 p
+ 69 631 p
+ 449 630 p
+ 414 630 p
+ 450 630 p
+ 454 630 p
+ 453 630 p
+ 70 630 p
+ 58 630 p
+ 449 629 p
+ 414 629 p
+ 450 629 p
+ 451 629 p
+ 446 629 p
+ 70 629 p
+ 57 629 p
+ 451 628 p
+ 450 628 p
+ 446 628 p
+ 480 628 p
+ 481 628 p
+ 69 628 p
+ 70 628 p
+ 452 627 p
+ 417 627 p
+ 453 627 p
+ 457 627 p
+ 456 627 p
+ 71 627 p
+ 59 627 p
+ 452 626 p
+ 417 626 p
+ 453 626 p
+ 454 626 p
+ 449 626 p
+ 71 626 p
+ 58 626 p
+ 454 625 p
+ 453 625 p
+ 449 625 p
+ 479 625 p
+ 480 625 p
+ 70 625 p
+ 71 625 p
+ 455 624 p
+ 420 624 p
+ 456 624 p
+ 461 624 p
+ 460 624 p
+ 72 624 p
+ 60 624 p
+ 455 623 p
+ 420 623 p
+ 456 623 p
+ 457 623 p
+ 452 623 p
+ 72 623 p
+ 59 623 p
+ 457 622 p
+ 456 622 p
+ 452 622 p
+ 483 622 p
+ 484 622 p
+ 71 622 p
+ 72 622 p
+ 458 621 p
+ 425 621 p
+ 459 621 p
+ 464 621 p
+ 463 621 p
+ 73 621 p
+ 62 621 p
+ 458 620 p
+ 425 620 p
+ 459 620 p
+ 424 620 p
+ 460 620 p
+ 73 620 p
+ 61 620 p
+ 459 619 p
+ 424 619 p
+ 460 619 p
+ 461 619 p
+ 455 619 p
+ 73 619 p
+ 60 619 p
+ 461 618 p
+ 460 618 p
+ 455 618 p
+ 486 618 p
+ 487 618 p
+ 72 618 p
+ 73 618 p
+ 462 617 p
+ 429 617 p
+ 463 617 p
+ 467 617 p
+ 466 617 p
+ 74 617 p
+ 63 617 p
+ 462 616 p
+ 429 616 p
+ 463 616 p
+ 464 616 p
+ 458 616 p
+ 74 616 p
+ 62 616 p
+ 464 615 p
+ 463 615 p
+ 458 615 p
+ 492 615 p
+ 493 615 p
+ 73 615 p
+ 74 615 p
+ 465 614 p
+ 432 614 p
+ 466 614 p
+ 470 614 p
+ 469 614 p
+ 75 614 p
+ 64 614 p
+ 465 613 p
+ 432 613 p
+ 466 613 p
+ 467 613 p
+ 462 613 p
+ 75 613 p
+ 63 613 p
+ 467 612 p
+ 466 612 p
+ 462 612 p
+ 491 612 p
+ 492 612 p
+ 74 612 p
+ 75 612 p
+ 468 611 p
+ 435 611 p
+ 469 611 p
+ 441 611 p
+ 471 611 p
+ 76 611 p
+ 65 611 p
+ 468 610 p
+ 435 610 p
+ 469 610 p
+ 470 610 p
+ 465 610 p
+ 76 610 p
+ 64 610 p
+ 470 609 p
+ 469 609 p
+ 465 609 p
+ 495 609 p
+ 497 609 p
+ 75 609 p
+ 76 609 p
+ 441 608 p
+ 468 608 p
+ 471 608 p
+ 66 608 p
+ 76 608 p
+ 472 607 p
+ 444 607 p
+ 473 607 p
+ 476 607 p
+ 448 607 p
+ 78 607 p
+ 68 607 p
+ 472 606 p
+ 444 606 p
+ 473 606 p
+ 474 606 p
+ 475 606 p
+ 78 606 p
+ 67 606 p
+ 474 605 p
+ 473 605 p
+ 475 605 p
+ 503 605 p
+ 504 605 p
+ 77 605 p
+ 78 605 p
+ 474 604 p
+ 473 604 p
+ 475 604 p
+ 77 604 p
+ 67 604 p
+ 476 603 p
+ 448 603 p
+ 472 603 p
+ 477 603 p
+ 478 603 p
+ 78 603 p
+ 69 603 p
+ 477 602 p
+ 478 602 p
+ 476 602 p
+ 507 602 p
+ 503 602 p
+ 78 602 p
+ 79 602 p
+ 477 601 p
+ 478 601 p
+ 476 601 p
+ 482 601 p
+ 481 601 p
+ 79 601 p
+ 69 601 p
+ 479 600 p
+ 454 600 p
+ 480 600 p
+ 485 600 p
+ 484 600 p
+ 80 600 p
+ 71 600 p
+ 479 599 p
+ 454 599 p
+ 480 599 p
+ 451 599 p
+ 481 599 p
+ 80 599 p
+ 70 599 p
+ 480 598 p
+ 451 598 p
+ 481 598 p
+ 482 598 p
+ 478 598 p
+ 80 598 p
+ 69 598 p
+ 482 597 p
+ 481 597 p
+ 478 597 p
+ 508 597 p
+ 509 597 p
+ 79 597 p
+ 80 597 p
+ 483 596 p
+ 457 596 p
+ 484 596 p
+ 488 596 p
+ 487 596 p
+ 81 596 p
+ 72 596 p
+ 483 595 p
+ 457 595 p
+ 484 595 p
+ 485 595 p
+ 479 595 p
+ 81 595 p
+ 71 595 p
+ 485 594 p
+ 484 594 p
+ 479 594 p
+ 511 594 p
+ 512 594 p
+ 80 594 p
+ 81 594 p
+ 486 593 p
+ 461 593 p
+ 487 593 p
+ 489 593 p
+ 490 593 p
+ 82 593 p
+ 73 593 p
+ 486 592 p
+ 461 592 p
+ 487 592 p
+ 488 592 p
+ 483 592 p
+ 82 592 p
+ 72 592 p
+ 488 591 p
+ 487 591 p
+ 483 591 p
+ 516 591 p
+ 517 591 p
+ 81 591 p
+ 82 591 p
+ 489 590 p
+ 490 590 p
+ 486 590 p
+ 519 590 p
+ 520 590 p
+ 82 590 p
+ 83 590 p
+ 489 589 p
+ 490 589 p
+ 486 589 p
+ 494 589 p
+ 493 589 p
+ 83 589 p
+ 73 589 p
+ 491 588 p
+ 467 588 p
+ 492 588 p
+ 495 588 p
+ 496 588 p
+ 84 588 p
+ 75 588 p
+ 491 587 p
+ 467 587 p
+ 492 587 p
+ 464 587 p
+ 493 587 p
+ 84 587 p
+ 74 587 p
+ 492 586 p
+ 464 586 p
+ 493 586 p
+ 494 586 p
+ 490 586 p
+ 84 586 p
+ 73 586 p
+ 494 585 p
+ 493 585 p
+ 490 585 p
+ 523 585 p
+ 524 585 p
+ 83 585 p
+ 84 585 p
+ 495 584 p
+ 491 584 p
+ 496 584 p
+ 470 584 p
+ 497 584 p
+ 85 584 p
+ 75 584 p
+ 495 583 p
+ 491 583 p
+ 496 583 p
+ 522 583 p
+ 523 583 p
+ 85 583 p
+ 84 583 p
+ 470 582 p
+ 495 582 p
+ 497 582 p
+ 76 582 p
+ 85 582 p
+ 404 581 p
+ 498 581 p
+ 499 581 p
+ 500 581 p
+ 501 581 p
+ 285 581 p
+ 284 581 p
+ 404 580 p
+ 498 580 p
+ 499 580 p
+ 349 580 p
+ 502 580 p
+ 20 580 p
+ 284 580 p
+ 498 579 p
+ 500 579 p
+ 501 579 p
+ 285 579 p
+ 1 579 p
+ 498 578 p
+ 500 578 p
+ 501 578 p
+ 602 578 p
+ 603 578 p
+ 284 578 p
+ 1 578 p
+ 349 577 p
+ 499 577 p
+ 502 577 p
+ 551 577 p
+ 552 577 p
+ 19 577 p
+ 284 577 p
+ 503 576 p
+ 474 576 p
+ 504 576 p
+ 507 576 p
+ 477 576 p
+ 87 576 p
+ 78 576 p
+ 503 575 p
+ 474 575 p
+ 504 575 p
+ 505 575 p
+ 506 575 p
+ 87 575 p
+ 77 575 p
+ 505 574 p
+ 504 574 p
+ 506 574 p
+ 528 574 p
+ 529 574 p
+ 86 574 p
+ 87 574 p
+ 505 573 p
+ 504 573 p
+ 506 573 p
+ 86 573 p
+ 77 573 p
+ 507 572 p
+ 477 572 p
+ 503 572 p
+ 510 572 p
+ 509 572 p
+ 87 572 p
+ 79 572 p
+ 508 571 p
+ 482 571 p
+ 509 571 p
+ 513 571 p
+ 512 571 p
+ 88 571 p
+ 80 571 p
+ 508 570 p
+ 482 570 p
+ 509 570 p
+ 510 570 p
+ 507 570 p
+ 88 570 p
+ 79 570 p
+ 510 569 p
+ 509 569 p
+ 507 569 p
+ 530 569 p
+ 531 569 p
+ 87 569 p
+ 88 569 p
+ 511 568 p
+ 485 568 p
+ 512 568 p
+ 514 568 p
+ 515 568 p
+ 89 568 p
+ 81 568 p
+ 511 567 p
+ 485 567 p
+ 512 567 p
+ 513 567 p
+ 508 567 p
+ 89 567 p
+ 80 567 p
+ 513 566 p
+ 512 566 p
+ 508 566 p
+ 533 566 p
+ 534 566 p
+ 88 566 p
+ 89 566 p
+ 514 565 p
+ 515 565 p
+ 511 565 p
+ 538 565 p
+ 539 565 p
+ 89 565 p
+ 90 565 p
+ 514 564 p
+ 515 564 p
+ 511 564 p
+ 518 564 p
+ 517 564 p
+ 90 564 p
+ 81 564 p
+ 516 563 p
+ 488 563 p
+ 517 563 p
+ 521 563 p
+ 520 563 p
+ 91 563 p
+ 82 563 p
+ 516 562 p
+ 488 562 p
+ 517 562 p
+ 518 562 p
+ 515 562 p
+ 91 562 p
+ 81 562 p
+ 518 561 p
+ 517 561 p
+ 515 561 p
+ 541 561 p
+ 542 561 p
+ 90 561 p
+ 91 561 p
+ 519 560 p
+ 489 560 p
+ 520 560 p
+ 525 560 p
+ 524 560 p
+ 92 560 p
+ 83 560 p
+ 519 559 p
+ 489 559 p
+ 520 559 p
+ 521 559 p
+ 516 559 p
+ 92 559 p
+ 82 559 p
+ 521 558 p
+ 520 558 p
+ 516 558 p
+ 545 558 p
+ 546 558 p
+ 91 558 p
+ 92 558 p
+ 522 557 p
+ 496 557 p
+ 523 557 p
+ 526 557 p
+ 527 557 p
+ 93 557 p
+ 85 557 p
+ 522 556 p
+ 496 556 p
+ 523 556 p
+ 494 556 p
+ 524 556 p
+ 93 556 p
+ 84 556 p
+ 523 555 p
+ 494 555 p
+ 524 555 p
+ 525 555 p
+ 519 555 p
+ 93 555 p
+ 83 555 p
+ 525 554 p
+ 524 554 p
+ 519 554 p
+ 544 554 p
+ 545 554 p
+ 92 554 p
+ 93 554 p
+ 526 553 p
+ 522 553 p
+ 527 553 p
+ 94 553 p
+ 85 553 p
+ 526 552 p
+ 522 552 p
+ 527 552 p
+ 548 552 p
+ 549 552 p
+ 94 552 p
+ 93 552 p
+ 528 551 p
+ 505 551 p
+ 529 551 p
+ 532 551 p
+ 531 551 p
+ 95 551 p
+ 87 551 p
+ 528 550 p
+ 505 550 p
+ 529 550 p
+ 95 550 p
+ 86 550 p
+ 530 549 p
+ 510 549 p
+ 531 549 p
+ 535 549 p
+ 534 549 p
+ 96 549 p
+ 88 549 p
+ 530 548 p
+ 510 548 p
+ 531 548 p
+ 532 548 p
+ 528 548 p
+ 96 548 p
+ 87 548 p
+ 532 547 p
+ 531 547 p
+ 528 547 p
+ 553 547 p
+ 554 547 p
+ 95 547 p
+ 96 547 p
+ 533 546 p
+ 513 546 p
+ 534 546 p
+ 536 546 p
+ 537 546 p
+ 97 546 p
+ 89 546 p
+ 533 545 p
+ 513 545 p
+ 534 545 p
+ 535 545 p
+ 530 545 p
+ 97 545 p
+ 88 545 p
+ 535 544 p
+ 534 544 p
+ 530 544 p
+ 557 544 p
+ 558 544 p
+ 96 544 p
+ 97 544 p
+ 536 543 p
+ 537 543 p
+ 533 543 p
+ 560 543 p
+ 561 543 p
+ 97 543 p
+ 98 543 p
+ 536 542 p
+ 537 542 p
+ 533 542 p
+ 540 542 p
+ 539 542 p
+ 98 542 p
+ 89 542 p
+ 538 541 p
+ 514 541 p
+ 539 541 p
+ 543 541 p
+ 542 541 p
+ 99 541 p
+ 90 541 p
+ 538 540 p
+ 514 540 p
+ 539 540 p
+ 540 540 p
+ 537 540 p
+ 99 540 p
+ 89 540 p
+ 540 539 p
+ 539 539 p
+ 537 539 p
+ 564 539 p
+ 565 539 p
+ 98 539 p
+ 99 539 p
+ 541 538 p
+ 518 538 p
+ 542 538 p
+ 547 538 p
+ 546 538 p
+ 100 538 p
+ 91 538 p
+ 541 537 p
+ 518 537 p
+ 542 537 p
+ 543 537 p
+ 538 537 p
+ 100 537 p
+ 90 537 p
+ 543 536 p
+ 542 536 p
+ 538 536 p
+ 563 536 p
+ 564 536 p
+ 99 536 p
+ 100 536 p
+ 544 535 p
+ 525 535 p
+ 545 535 p
+ 550 535 p
+ 549 535 p
+ 101 535 p
+ 93 535 p
+ 544 534 p
+ 525 534 p
+ 545 534 p
+ 521 534 p
+ 546 534 p
+ 101 534 p
+ 92 534 p
+ 545 533 p
+ 521 533 p
+ 546 533 p
+ 547 533 p
+ 541 533 p
+ 101 533 p
+ 91 533 p
+ 547 532 p
+ 546 532 p
+ 541 532 p
+ 567 532 p
+ 568 532 p
+ 100 532 p
+ 101 532 p
+ 548 531 p
+ 527 531 p
+ 549 531 p
+ 102 531 p
+ 94 531 p
+ 548 530 p
+ 527 530 p
+ 549 530 p
+ 550 530 p
+ 544 530 p
+ 102 530 p
+ 93 530 p
+ 550 529 p
+ 549 529 p
+ 544 529 p
+ 570 529 p
+ 571 529 p
+ 101 529 p
+ 102 529 p
+ 502 528 p
+ 551 528 p
+ 552 528 p
+ 601 528 p
+ 602 528 p
+ 284 528 p
+ 283 528 p
+ 502 527 p
+ 551 527 p
+ 552 527 p
+ 345 527 p
+ 650 527 p
+ 19 527 p
+ 283 527 p
+ 553 526 p
+ 532 526 p
+ 554 526 p
+ 559 526 p
+ 558 526 p
+ 104 526 p
+ 96 526 p
+ 553 525 p
+ 532 525 p
+ 554 525 p
+ 555 525 p
+ 556 525 p
+ 104 525 p
+ 95 525 p
+ 555 524 p
+ 554 524 p
+ 556 524 p
+ 575 524 p
+ 576 524 p
+ 103 524 p
+ 104 524 p
+ 555 523 p
+ 554 523 p
+ 556 523 p
+ 103 523 p
+ 95 523 p
+ 557 522 p
+ 535 522 p
+ 558 522 p
+ 562 522 p
+ 561 522 p
+ 105 522 p
+ 97 522 p
+ 557 521 p
+ 535 521 p
+ 558 521 p
+ 559 521 p
+ 553 521 p
+ 105 521 p
+ 96 521 p
+ 559 520 p
+ 558 520 p
+ 553 520 p
+ 577 520 p
+ 578 520 p
+ 104 520 p
+ 105 520 p
+ 560 519 p
+ 536 519 p
+ 561 519 p
+ 566 519 p
+ 565 519 p
+ 106 519 p
+ 98 519 p
+ 560 518 p
+ 536 518 p
+ 561 518 p
+ 562 518 p
+ 557 518 p
+ 106 518 p
+ 97 518 p
+ 562 517 p
+ 561 517 p
+ 557 517 p
+ 580 517 p
+ 581 517 p
+ 105 517 p
+ 106 517 p
+ 563 516 p
+ 543 516 p
+ 564 516 p
+ 569 516 p
+ 568 516 p
+ 107 516 p
+ 100 516 p
+ 563 515 p
+ 543 515 p
+ 564 515 p
+ 540 515 p
+ 565 515 p
+ 107 515 p
+ 99 515 p
+ 564 514 p
+ 540 514 p
+ 565 514 p
+ 566 514 p
+ 560 514 p
+ 107 514 p
+ 98 514 p
+ 566 513 p
+ 565 513 p
+ 560 513 p
+ 583 513 p
+ 584 513 p
+ 106 513 p
+ 107 513 p
+ 567 512 p
+ 547 512 p
+ 568 512 p
+ 572 512 p
+ 571 512 p
+ 108 512 p
+ 101 512 p
+ 567 511 p
+ 547 511 p
+ 568 511 p
+ 569 511 p
+ 563 511 p
+ 108 511 p
+ 100 511 p
+ 569 510 p
+ 568 510 p
+ 563 510 p
+ 586 510 p
+ 587 510 p
+ 107 510 p
+ 108 510 p
+ 570 509 p
+ 550 509 p
+ 571 509 p
+ 573 509 p
+ 574 509 p
+ 109 509 p
+ 102 509 p
+ 570 508 p
+ 550 508 p
+ 571 508 p
+ 572 508 p
+ 567 508 p
+ 109 508 p
+ 101 508 p
+ 572 507 p
+ 571 507 p
+ 567 507 p
+ 591 507 p
+ 592 507 p
+ 108 507 p
+ 109 507 p
+ 573 506 p
+ 570 506 p
+ 574 506 p
+ 110 506 p
+ 102 506 p
+ 573 505 p
+ 570 505 p
+ 574 505 p
+ 594 505 p
+ 595 505 p
+ 110 505 p
+ 109 505 p
+ 575 504 p
+ 555 504 p
+ 576 504 p
+ 579 504 p
+ 578 504 p
+ 111 504 p
+ 104 504 p
+ 575 503 p
+ 555 503 p
+ 576 503 p
+ 111 503 p
+ 103 503 p
+ 577 502 p
+ 559 502 p
+ 578 502 p
+ 582 502 p
+ 581 502 p
+ 112 502 p
+ 105 502 p
+ 577 501 p
+ 559 501 p
+ 578 501 p
+ 579 501 p
+ 575 501 p
+ 112 501 p
+ 104 501 p
+ 579 500 p
+ 578 500 p
+ 575 500 p
+ 604 500 p
+ 605 500 p
+ 111 500 p
+ 112 500 p
+ 580 499 p
+ 562 499 p
+ 581 499 p
+ 585 499 p
+ 584 499 p
+ 113 499 p
+ 106 499 p
+ 580 498 p
+ 562 498 p
+ 581 498 p
+ 582 498 p
+ 577 498 p
+ 113 498 p
+ 105 498 p
+ 582 497 p
+ 581 497 p
+ 577 497 p
+ 608 497 p
+ 609 497 p
+ 112 497 p
+ 113 497 p
+ 583 496 p
+ 566 496 p
+ 584 496 p
+ 588 496 p
+ 587 496 p
+ 114 496 p
+ 107 496 p
+ 583 495 p
+ 566 495 p
+ 584 495 p
+ 585 495 p
+ 580 495 p
+ 114 495 p
+ 106 495 p
+ 585 494 p
+ 584 494 p
+ 580 494 p
+ 611 494 p
+ 612 494 p
+ 113 494 p
+ 114 494 p
+ 586 493 p
+ 569 493 p
+ 587 493 p
+ 589 493 p
+ 590 493 p
+ 115 493 p
+ 108 493 p
+ 586 492 p
+ 569 492 p
+ 587 492 p
+ 588 492 p
+ 583 492 p
+ 115 492 p
+ 107 492 p
+ 588 491 p
+ 587 491 p
+ 583 491 p
+ 614 491 p
+ 615 491 p
+ 114 491 p
+ 115 491 p
+ 589 490 p
+ 590 490 p
+ 586 490 p
+ 618 490 p
+ 619 490 p
+ 115 490 p
+ 116 490 p
+ 589 489 p
+ 590 489 p
+ 586 489 p
+ 593 489 p
+ 592 489 p
+ 116 489 p
+ 108 489 p
+ 591 488 p
+ 572 488 p
+ 592 488 p
+ 596 488 p
+ 595 488 p
+ 117 488 p
+ 109 488 p
+ 591 487 p
+ 572 487 p
+ 592 487 p
+ 593 487 p
+ 590 487 p
+ 117 487 p
+ 108 487 p
+ 593 486 p
+ 592 486 p
+ 590 486 p
+ 617 486 p
+ 618 486 p
+ 116 486 p
+ 117 486 p
+ 594 485 p
+ 574 485 p
+ 595 485 p
+ 597 485 p
+ 598 485 p
+ 118 485 p
+ 110 485 p
+ 594 484 p
+ 574 484 p
+ 595 484 p
+ 596 484 p
+ 591 484 p
+ 118 484 p
+ 109 484 p
+ 596 483 p
+ 595 483 p
+ 591 483 p
+ 621 483 p
+ 622 483 p
+ 117 483 p
+ 118 483 p
+ 597 482 p
+ 594 482 p
+ 598 482 p
+ 119 482 p
+ 110 482 p
+ 597 481 p
+ 594 481 p
+ 598 481 p
+ 599 481 p
+ 600 481 p
+ 119 481 p
+ 118 481 p
+ 599 480 p
+ 598 480 p
+ 600 480 p
+ 3 480 p
+ 119 480 p
+ 599 479 p
+ 598 479 p
+ 600 479 p
+ 624 479 p
+ 626 479 p
+ 3 479 p
+ 118 479 p
+ 601 478 p
+ 551 478 p
+ 602 478 p
+ 708 478 p
+ 668 478 p
+ 267 478 p
+ 283 478 p
+ 601 477 p
+ 551 477 p
+ 602 477 p
+ 501 477 p
+ 603 477 p
+ 267 477 p
+ 284 477 p
+ 602 476 p
+ 501 476 p
+ 603 476 p
+ 267 476 p
+ 1 476 p
+ 604 475 p
+ 579 475 p
+ 605 475 p
+ 610 475 p
+ 609 475 p
+ 121 475 p
+ 112 475 p
+ 604 474 p
+ 579 474 p
+ 605 474 p
+ 606 474 p
+ 607 474 p
+ 121 474 p
+ 111 474 p
+ 606 473 p
+ 605 473 p
+ 607 473 p
+ 630 473 p
+ 631 473 p
+ 120 473 p
+ 121 473 p
+ 606 472 p
+ 605 472 p
+ 607 472 p
+ 120 472 p
+ 111 472 p
+ 608 471 p
+ 582 471 p
+ 609 471 p
+ 613 471 p
+ 612 471 p
+ 122 471 p
+ 113 471 p
+ 608 470 p
+ 582 470 p
+ 609 470 p
+ 610 470 p
+ 604 470 p
+ 122 470 p
+ 112 470 p
+ 610 469 p
+ 609 469 p
+ 604 469 p
+ 632 469 p
+ 633 469 p
+ 121 469 p
+ 122 469 p
+ 611 468 p
+ 585 468 p
+ 612 468 p
+ 616 468 p
+ 615 468 p
+ 123 468 p
+ 114 468 p
+ 611 467 p
+ 585 467 p
+ 612 467 p
+ 613 467 p
+ 608 467 p
+ 123 467 p
+ 113 467 p
+ 613 466 p
+ 612 466 p
+ 608 466 p
+ 637 466 p
+ 638 466 p
+ 122 466 p
+ 123 466 p
+ 614 465 p
+ 588 465 p
+ 615 465 p
+ 620 465 p
+ 619 465 p
+ 124 465 p
+ 115 465 p
+ 614 464 p
+ 588 464 p
+ 615 464 p
+ 616 464 p
+ 611 464 p
+ 124 464 p
+ 114 464 p
+ 616 463 p
+ 615 463 p
+ 611 463 p
+ 640 463 p
+ 641 463 p
+ 123 463 p
+ 124 463 p
+ 617 462 p
+ 593 462 p
+ 618 462 p
+ 623 462 p
+ 622 462 p
+ 125 462 p
+ 117 462 p
+ 617 461 p
+ 593 461 p
+ 618 461 p
+ 589 461 p
+ 619 461 p
+ 125 461 p
+ 116 461 p
+ 618 460 p
+ 589 460 p
+ 619 460 p
+ 620 460 p
+ 614 460 p
+ 125 460 p
+ 115 460 p
+ 620 459 p
+ 619 459 p
+ 614 459 p
+ 644 459 p
+ 645 459 p
+ 124 459 p
+ 125 459 p
+ 621 458 p
+ 596 458 p
+ 622 458 p
+ 624 458 p
+ 625 458 p
+ 126 458 p
+ 118 458 p
+ 621 457 p
+ 596 457 p
+ 622 457 p
+ 623 457 p
+ 617 457 p
+ 126 457 p
+ 117 457 p
+ 623 456 p
+ 622 456 p
+ 617 456 p
+ 643 456 p
+ 644 456 p
+ 125 456 p
+ 126 456 p
+ 624 455 p
+ 621 455 p
+ 625 455 p
+ 600 455 p
+ 626 455 p
+ 127 455 p
+ 118 455 p
+ 624 454 p
+ 621 454 p
+ 625 454 p
+ 627 454 p
+ 628 454 p
+ 127 454 p
+ 126 454 p
+ 600 453 p
+ 624 453 p
+ 626 453 p
+ 629 453 p
+ 627 453 p
+ 3 453 p
+ 127 453 p
+ 627 452 p
+ 625 452 p
+ 628 452 p
+ 629 452 p
+ 626 452 p
+ 128 452 p
+ 127 452 p
+ 627 451 p
+ 625 451 p
+ 628 451 p
+ 647 451 p
+ 649 451 p
+ 128 451 p
+ 126 451 p
+ 629 450 p
+ 626 450 p
+ 627 450 p
+ 128 450 p
+ 3 450 p
+ 630 449 p
+ 606 449 p
+ 631 449 p
+ 634 449 p
+ 633 449 p
+ 129 449 p
+ 121 449 p
+ 630 448 p
+ 606 448 p
+ 631 448 p
+ 129 448 p
+ 120 448 p
+ 632 447 p
+ 610 447 p
+ 633 447 p
+ 635 447 p
+ 636 447 p
+ 130 447 p
+ 122 447 p
+ 632 446 p
+ 610 446 p
+ 633 446 p
+ 634 446 p
+ 630 446 p
+ 130 446 p
+ 121 446 p
+ 634 445 p
+ 633 445 p
+ 630 445 p
+ 651 445 p
+ 652 445 p
+ 129 445 p
+ 130 445 p
+ 635 444 p
+ 636 444 p
+ 632 444 p
+ 655 444 p
+ 656 444 p
+ 130 444 p
+ 131 444 p
+ 635 443 p
+ 636 443 p
+ 632 443 p
+ 639 443 p
+ 638 443 p
+ 131 443 p
+ 122 443 p
+ 637 442 p
+ 613 442 p
+ 638 442 p
+ 642 442 p
+ 641 442 p
+ 132 442 p
+ 123 442 p
+ 637 441 p
+ 613 441 p
+ 638 441 p
+ 639 441 p
+ 636 441 p
+ 132 441 p
+ 122 441 p
+ 639 440 p
+ 638 440 p
+ 636 440 p
+ 659 440 p
+ 660 440 p
+ 131 440 p
+ 132 440 p
+ 640 439 p
+ 616 439 p
+ 641 439 p
+ 646 439 p
+ 645 439 p
+ 133 439 p
+ 124 439 p
+ 640 438 p
+ 616 438 p
+ 641 438 p
+ 642 438 p
+ 637 438 p
+ 133 438 p
+ 123 438 p
+ 642 437 p
+ 641 437 p
+ 637 437 p
+ 658 437 p
+ 659 437 p
+ 132 437 p
+ 133 437 p
+ 643 436 p
+ 623 436 p
+ 644 436 p
+ 647 436 p
+ 648 436 p
+ 134 436 p
+ 126 436 p
+ 643 435 p
+ 623 435 p
+ 644 435 p
+ 620 435 p
+ 645 435 p
+ 134 435 p
+ 125 435 p
+ 644 434 p
+ 620 434 p
+ 645 434 p
+ 646 434 p
+ 640 434 p
+ 134 434 p
+ 124 434 p
+ 646 433 p
+ 645 433 p
+ 640 433 p
+ 662 433 p
+ 663 433 p
+ 133 433 p
+ 134 433 p
+ 647 432 p
+ 643 432 p
+ 648 432 p
+ 628 432 p
+ 649 432 p
+ 135 432 p
+ 126 432 p
+ 647 431 p
+ 643 431 p
+ 648 431 p
+ 665 431 p
+ 667 431 p
+ 135 431 p
+ 134 431 p
+ 628 430 p
+ 647 430 p
+ 649 430 p
+ 128 430 p
+ 135 430 p
+ 345 429 p
+ 552 429 p
+ 650 429 p
+ 668 429 p
+ 669 429 p
+ 18 429 p
+ 283 429 p
+ 651 428 p
+ 634 428 p
+ 652 428 p
+ 657 428 p
+ 656 428 p
+ 137 428 p
+ 130 428 p
+ 651 427 p
+ 634 427 p
+ 652 427 p
+ 653 427 p
+ 654 427 p
+ 137 427 p
+ 129 427 p
+ 653 426 p
+ 652 426 p
+ 654 426 p
+ 670 426 p
+ 671 426 p
+ 136 426 p
+ 137 426 p
+ 653 425 p
+ 652 425 p
+ 654 425 p
+ 136 425 p
+ 129 425 p
+ 655 424 p
+ 635 424 p
+ 656 424 p
+ 661 424 p
+ 660 424 p
+ 138 424 p
+ 131 424 p
+ 655 423 p
+ 635 423 p
+ 656 423 p
+ 657 423 p
+ 651 423 p
+ 138 423 p
+ 130 423 p
+ 657 422 p
+ 656 422 p
+ 651 422 p
+ 672 422 p
+ 673 422 p
+ 137 422 p
+ 138 422 p
+ 658 421 p
+ 642 421 p
+ 659 421 p
+ 664 421 p
+ 663 421 p
+ 139 421 p
+ 133 421 p
+ 658 420 p
+ 642 420 p
+ 659 420 p
+ 639 420 p
+ 660 420 p
+ 139 420 p
+ 132 420 p
+ 659 419 p
+ 639 419 p
+ 660 419 p
+ 661 419 p
+ 655 419 p
+ 139 419 p
+ 131 419 p
+ 661 418 p
+ 660 418 p
+ 655 418 p
+ 675 418 p
+ 676 418 p
+ 138 418 p
+ 139 418 p
+ 662 417 p
+ 646 417 p
+ 663 417 p
+ 665 417 p
+ 666 417 p
+ 140 417 p
+ 134 417 p
+ 662 416 p
+ 646 416 p
+ 663 416 p
+ 664 416 p
+ 658 416 p
+ 140 416 p
+ 133 416 p
+ 664 415 p
+ 663 415 p
+ 658 415 p
+ 678 415 p
+ 679 415 p
+ 139 415 p
+ 140 415 p
+ 665 414 p
+ 662 414 p
+ 666 414 p
+ 648 414 p
+ 667 414 p
+ 141 414 p
+ 134 414 p
+ 665 413 p
+ 662 413 p
+ 666 413 p
+ 681 413 p
+ 683 413 p
+ 141 413 p
+ 140 413 p
+ 648 412 p
+ 665 412 p
+ 667 412 p
+ 135 412 p
+ 141 412 p
+ 650 411 p
+ 668 411 p
+ 669 411 p
+ 708 411 p
+ 601 411 p
+ 283 411 p
+ 282 411 p
+ 650 410 p
+ 668 410 p
+ 669 410 p
+ 709 410 p
+ 710 410 p
+ 18 410 p
+ 282 410 p
+ 670 409 p
+ 653 409 p
+ 671 409 p
+ 674 409 p
+ 673 409 p
+ 142 409 p
+ 137 409 p
+ 670 408 p
+ 653 408 p
+ 671 408 p
+ 142 408 p
+ 136 408 p
+ 672 407 p
+ 657 407 p
+ 673 407 p
+ 677 407 p
+ 676 407 p
+ 143 407 p
+ 138 407 p
+ 672 406 p
+ 657 406 p
+ 673 406 p
+ 674 406 p
+ 670 406 p
+ 143 406 p
+ 137 406 p
+ 674 405 p
+ 673 405 p
+ 670 405 p
+ 684 405 p
+ 685 405 p
+ 142 405 p
+ 143 405 p
+ 675 404 p
+ 661 404 p
+ 676 404 p
+ 679 404 p
+ 680 404 p
+ 144 404 p
+ 139 404 p
+ 675 403 p
+ 661 403 p
+ 676 403 p
+ 677 403 p
+ 672 403 p
+ 144 403 p
+ 138 403 p
+ 677 402 p
+ 676 402 p
+ 672 402 p
+ 688 402 p
+ 684 402 p
+ 143 402 p
+ 144 402 p
+ 678 401 p
+ 664 401 p
+ 679 401 p
+ 681 401 p
+ 682 401 p
+ 145 401 p
+ 140 401 p
+ 678 400 p
+ 664 400 p
+ 679 400 p
+ 675 400 p
+ 680 400 p
+ 145 400 p
+ 139 400 p
+ 679 399 p
+ 675 399 p
+ 680 399 p
+ 692 399 p
+ 693 399 p
+ 145 399 p
+ 144 399 p
+ 681 398 p
+ 678 398 p
+ 682 398 p
+ 666 398 p
+ 683 398 p
+ 146 398 p
+ 140 398 p
+ 681 397 p
+ 678 397 p
+ 682 397 p
+ 691 397 p
+ 692 397 p
+ 146 397 p
+ 145 397 p
+ 666 396 p
+ 681 396 p
+ 683 396 p
+ 141 396 p
+ 146 396 p
+ 684 395 p
+ 674 395 p
+ 685 395 p
+ 688 395 p
+ 677 395 p
+ 148 395 p
+ 143 395 p
+ 684 394 p
+ 674 394 p
+ 685 394 p
+ 686 394 p
+ 687 394 p
+ 148 394 p
+ 142 394 p
+ 686 393 p
+ 685 393 p
+ 687 393 p
+ 697 393 p
+ 698 393 p
+ 147 393 p
+ 148 393 p
+ 686 392 p
+ 685 392 p
+ 687 392 p
+ 147 392 p
+ 142 392 p
+ 688 391 p
+ 677 391 p
+ 684 391 p
+ 689 391 p
+ 690 391 p
+ 148 391 p
+ 144 391 p
+ 689 390 p
+ 690 390 p
+ 688 390 p
+ 699 390 p
+ 700 390 p
+ 148 390 p
+ 149 390 p
+ 689 389 p
+ 690 389 p
+ 688 389 p
+ 694 389 p
+ 693 389 p
+ 149 389 p
+ 144 389 p
+ 691 388 p
+ 682 388 p
+ 692 388 p
+ 695 388 p
+ 696 388 p
+ 150 388 p
+ 146 388 p
+ 691 387 p
+ 682 387 p
+ 692 387 p
+ 680 387 p
+ 693 387 p
+ 150 387 p
+ 145 387 p
+ 692 386 p
+ 680 386 p
+ 693 386 p
+ 694 386 p
+ 690 386 p
+ 150 386 p
+ 144 386 p
+ 694 385 p
+ 693 385 p
+ 690 385 p
+ 702 385 p
+ 703 385 p
+ 149 385 p
+ 150 385 p
+ 695 384 p
+ 691 384 p
+ 696 384 p
+ 151 384 p
+ 146 384 p
+ 695 383 p
+ 691 383 p
+ 696 383 p
+ 705 383 p
+ 707 383 p
+ 151 383 p
+ 150 383 p
+ 697 382 p
+ 686 382 p
+ 698 382 p
+ 701 382 p
+ 700 382 p
+ 152 382 p
+ 148 382 p
+ 697 381 p
+ 686 381 p
+ 698 381 p
+ 152 381 p
+ 147 381 p
+ 699 380 p
+ 689 380 p
+ 700 380 p
+ 704 380 p
+ 703 380 p
+ 153 380 p
+ 149 380 p
+ 699 379 p
+ 689 379 p
+ 700 379 p
+ 701 379 p
+ 697 379 p
+ 153 379 p
+ 148 379 p
+ 701 378 p
+ 700 378 p
+ 697 378 p
+ 713 378 p
+ 714 378 p
+ 152 378 p
+ 153 378 p
+ 702 377 p
+ 694 377 p
+ 703 377 p
+ 705 377 p
+ 706 377 p
+ 154 377 p
+ 150 377 p
+ 702 376 p
+ 694 376 p
+ 703 376 p
+ 704 376 p
+ 699 376 p
+ 154 376 p
+ 149 376 p
+ 704 375 p
+ 703 375 p
+ 699 375 p
+ 715 375 p
+ 716 375 p
+ 153 375 p
+ 154 375 p
+ 705 374 p
+ 702 374 p
+ 706 374 p
+ 696 374 p
+ 707 374 p
+ 155 374 p
+ 150 374 p
+ 705 373 p
+ 702 373 p
+ 706 373 p
+ 720 373 p
+ 721 373 p
+ 155 373 p
+ 154 373 p
+ 696 372 p
+ 705 372 p
+ 707 372 p
+ 151 372 p
+ 155 372 p
+ 708 371 p
+ 668 371 p
+ 601 371 p
+ 753 371 p
+ 711 371 p
+ 267 371 p
+ 282 371 p
+ 669 370 p
+ 709 370 p
+ 710 370 p
+ 711 370 p
+ 712 370 p
+ 282 370 p
+ 281 370 p
+ 669 369 p
+ 709 369 p
+ 710 369 p
+ 341 369 p
+ 776 369 p
+ 18 369 p
+ 281 369 p
+ 709 368 p
+ 711 368 p
+ 712 368 p
+ 708 368 p
+ 753 368 p
+ 282 368 p
+ 266 368 p
+ 709 367 p
+ 711 367 p
+ 712 367 p
+ 757 367 p
+ 755 367 p
+ 281 367 p
+ 266 367 p
+ 713 366 p
+ 701 366 p
+ 714 366 p
+ 717 366 p
+ 716 366 p
+ 156 366 p
+ 153 366 p
+ 713 365 p
+ 701 365 p
+ 714 365 p
+ 156 365 p
+ 152 365 p
+ 715 364 p
+ 704 364 p
+ 716 364 p
+ 718 364 p
+ 719 364 p
+ 157 364 p
+ 154 364 p
+ 715 363 p
+ 704 363 p
+ 716 363 p
+ 717 363 p
+ 713 363 p
+ 157 363 p
+ 153 363 p
+ 717 362 p
+ 716 362 p
+ 713 362 p
+ 725 362 p
+ 726 362 p
+ 156 362 p
+ 157 362 p
+ 718 361 p
+ 719 361 p
+ 715 361 p
+ 729 361 p
+ 730 361 p
+ 157 361 p
+ 158 361 p
+ 718 360 p
+ 719 360 p
+ 715 360 p
+ 722 360 p
+ 721 360 p
+ 158 360 p
+ 154 360 p
+ 720 359 p
+ 706 359 p
+ 721 359 p
+ 723 359 p
+ 724 359 p
+ 159 359 p
+ 155 359 p
+ 720 358 p
+ 706 358 p
+ 721 358 p
+ 722 358 p
+ 719 358 p
+ 159 358 p
+ 154 358 p
+ 722 357 p
+ 721 357 p
+ 719 357 p
+ 732 357 p
+ 733 357 p
+ 158 357 p
+ 159 357 p
+ 723 356 p
+ 720 356 p
+ 724 356 p
+ 160 356 p
+ 155 356 p
+ 723 355 p
+ 720 355 p
+ 724 355 p
+ 735 355 p
+ 736 355 p
+ 160 355 p
+ 159 355 p
+ 725 354 p
+ 717 354 p
+ 726 354 p
+ 727 354 p
+ 728 354 p
+ 161 354 p
+ 157 354 p
+ 725 353 p
+ 717 353 p
+ 726 353 p
+ 161 353 p
+ 156 353 p
+ 727 352 p
+ 728 352 p
+ 725 352 p
+ 738 352 p
+ 739 352 p
+ 161 352 p
+ 162 352 p
+ 727 351 p
+ 728 351 p
+ 725 351 p
+ 731 351 p
+ 730 351 p
+ 162 351 p
+ 157 351 p
+ 729 350 p
+ 718 350 p
+ 730 350 p
+ 734 350 p
+ 733 350 p
+ 163 350 p
+ 158 350 p
+ 729 349 p
+ 718 349 p
+ 730 349 p
+ 731 349 p
+ 728 349 p
+ 163 349 p
+ 157 349 p
+ 731 348 p
+ 730 348 p
+ 728 348 p
+ 740 348 p
+ 741 348 p
+ 162 348 p
+ 163 348 p
+ 732 347 p
+ 722 347 p
+ 733 347 p
+ 737 347 p
+ 736 347 p
+ 164 347 p
+ 159 347 p
+ 732 346 p
+ 722 346 p
+ 733 346 p
+ 734 346 p
+ 729 346 p
+ 164 346 p
+ 158 346 p
+ 734 345 p
+ 733 345 p
+ 729 345 p
+ 743 345 p
+ 744 345 p
+ 163 345 p
+ 164 345 p
+ 735 344 p
+ 724 344 p
+ 736 344 p
+ 165 344 p
+ 160 344 p
+ 735 343 p
+ 724 343 p
+ 736 343 p
+ 737 343 p
+ 732 343 p
+ 165 343 p
+ 159 343 p
+ 737 342 p
+ 736 342 p
+ 732 342 p
+ 748 342 p
+ 749 342 p
+ 164 342 p
+ 165 342 p
+ 738 341 p
+ 727 341 p
+ 739 341 p
+ 742 341 p
+ 741 341 p
+ 166 341 p
+ 162 341 p
+ 738 340 p
+ 727 340 p
+ 739 340 p
+ 166 340 p
+ 161 340 p
+ 740 339 p
+ 731 339 p
+ 741 339 p
+ 745 339 p
+ 744 339 p
+ 167 339 p
+ 163 339 p
+ 740 338 p
+ 731 338 p
+ 741 338 p
+ 742 338 p
+ 738 338 p
+ 167 338 p
+ 162 338 p
+ 742 337 p
+ 741 337 p
+ 738 337 p
+ 758 337 p
+ 759 337 p
+ 166 337 p
+ 167 337 p
+ 743 336 p
+ 734 336 p
+ 744 336 p
+ 746 336 p
+ 747 336 p
+ 168 336 p
+ 164 336 p
+ 743 335 p
+ 734 335 p
+ 744 335 p
+ 745 335 p
+ 740 335 p
+ 168 335 p
+ 163 335 p
+ 745 334 p
+ 744 334 p
+ 740 334 p
+ 762 334 p
+ 763 334 p
+ 167 334 p
+ 168 334 p
+ 746 333 p
+ 747 333 p
+ 743 333 p
+ 765 333 p
+ 766 333 p
+ 168 333 p
+ 169 333 p
+ 746 332 p
+ 747 332 p
+ 743 332 p
+ 750 332 p
+ 749 332 p
+ 169 332 p
+ 164 332 p
+ 748 331 p
+ 737 331 p
+ 749 331 p
+ 751 331 p
+ 752 331 p
+ 170 331 p
+ 165 331 p
+ 748 330 p
+ 737 330 p
+ 749 330 p
+ 750 330 p
+ 747 330 p
+ 170 330 p
+ 164 330 p
+ 750 329 p
+ 749 329 p
+ 747 329 p
+ 768 329 p
+ 769 329 p
+ 169 329 p
+ 170 329 p
+ 751 328 p
+ 748 328 p
+ 752 328 p
+ 171 328 p
+ 165 328 p
+ 751 327 p
+ 748 327 p
+ 752 327 p
+ 771 327 p
+ 772 327 p
+ 171 327 p
+ 170 327 p
+ 708 326 p
+ 753 326 p
+ 711 326 p
+ 1031 326 p
+ 1032 326 p
+ 267 326 p
+ 266 326 p
+ 754 325 p
+ 755 325 p
+ 756 325 p
+ 776 325 p
+ 777 325 p
+ 280 325 p
+ 281 325 p
+ 754 324 p
+ 755 324 p
+ 756 324 p
+ 712 324 p
+ 757 324 p
+ 281 324 p
+ 265 324 p
+ 754 323 p
+ 755 323 p
+ 756 323 p
+ 900 323 p
+ 829 323 p
+ 280 323 p
+ 265 323 p
+ 712 322 p
+ 757 322 p
+ 755 322 p
+ 1030 322 p
+ 1031 322 p
+ 266 322 p
+ 265 322 p
+ 758 321 p
+ 759 321 p
+ 742 321 p
+ 760 321 p
+ 761 321 p
+ 166 321 p
+ 173 321 p
+ 758 320 p
+ 759 320 p
+ 742 320 p
+ 764 320 p
+ 763 320 p
+ 173 320 p
+ 167 320 p
+ 760 319 p
+ 761 319 p
+ 758 319 p
+ 166 319 p
+ 172 319 p
+ 760 318 p
+ 761 318 p
+ 758 318 p
+ 778 318 p
+ 779 318 p
+ 172 318 p
+ 173 318 p
+ 762 317 p
+ 745 317 p
+ 763 317 p
+ 767 317 p
+ 766 317 p
+ 174 317 p
+ 168 317 p
+ 762 316 p
+ 745 316 p
+ 763 316 p
+ 764 316 p
+ 759 316 p
+ 174 316 p
+ 167 316 p
+ 764 315 p
+ 763 315 p
+ 759 315 p
+ 780 315 p
+ 781 315 p
+ 173 315 p
+ 174 315 p
+ 765 314 p
+ 746 314 p
+ 766 314 p
+ 770 314 p
+ 769 314 p
+ 175 314 p
+ 169 314 p
+ 765 313 p
+ 746 313 p
+ 766 313 p
+ 767 313 p
+ 762 313 p
+ 175 313 p
+ 168 313 p
+ 767 312 p
+ 766 312 p
+ 762 312 p
+ 783 312 p
+ 784 312 p
+ 174 312 p
+ 175 312 p
+ 768 311 p
+ 750 311 p
+ 769 311 p
+ 773 311 p
+ 772 311 p
+ 176 311 p
+ 170 311 p
+ 768 310 p
+ 750 310 p
+ 769 310 p
+ 770 310 p
+ 765 310 p
+ 176 310 p
+ 169 310 p
+ 770 309 p
+ 769 309 p
+ 765 309 p
+ 786 309 p
+ 787 309 p
+ 175 309 p
+ 176 309 p
+ 771 308 p
+ 752 308 p
+ 772 308 p
+ 774 308 p
+ 775 308 p
+ 177 308 p
+ 171 308 p
+ 771 307 p
+ 752 307 p
+ 772 307 p
+ 773 307 p
+ 768 307 p
+ 177 307 p
+ 170 307 p
+ 773 306 p
+ 772 306 p
+ 768 306 p
+ 789 306 p
+ 790 306 p
+ 176 306 p
+ 177 306 p
+ 774 305 p
+ 771 305 p
+ 775 305 p
+ 178 305 p
+ 171 305 p
+ 774 304 p
+ 771 304 p
+ 775 304 p
+ 794 304 p
+ 795 304 p
+ 178 304 p
+ 177 304 p
+ 341 303 p
+ 710 303 p
+ 776 303 p
+ 754 303 p
+ 777 303 p
+ 17 303 p
+ 281 303 p
+ 776 302 p
+ 754 302 p
+ 777 302 p
+ 335 302 p
+ 901 302 p
+ 17 302 p
+ 280 302 p
+ 778 301 p
+ 779 301 p
+ 761 301 p
+ 172 301 p
+ 179 301 p
+ 778 300 p
+ 779 300 p
+ 761 300 p
+ 782 300 p
+ 780 300 p
+ 179 300 p
+ 173 300 p
+ 780 299 p
+ 781 299 p
+ 764 299 p
+ 779 299 p
+ 782 299 p
+ 173 299 p
+ 180 299 p
+ 780 298 p
+ 781 298 p
+ 764 298 p
+ 785 298 p
+ 783 298 p
+ 180 298 p
+ 174 298 p
+ 779 297 p
+ 782 297 p
+ 780 297 p
+ 803 297 p
+ 804 297 p
+ 179 297 p
+ 180 297 p
+ 783 296 p
+ 784 296 p
+ 767 296 p
+ 781 296 p
+ 785 296 p
+ 174 296 p
+ 181 296 p
+ 783 295 p
+ 784 295 p
+ 767 295 p
+ 788 295 p
+ 787 295 p
+ 181 295 p
+ 175 295 p
+ 781 294 p
+ 785 294 p
+ 783 294 p
+ 805 294 p
+ 806 294 p
+ 180 294 p
+ 181 294 p
+ 786 293 p
+ 770 293 p
+ 787 293 p
+ 791 293 p
+ 790 293 p
+ 182 293 p
+ 176 293 p
+ 786 292 p
+ 770 292 p
+ 787 292 p
+ 788 292 p
+ 784 292 p
+ 182 292 p
+ 175 292 p
+ 788 291 p
+ 787 291 p
+ 784 291 p
+ 808 291 p
+ 809 291 p
+ 181 291 p
+ 182 291 p
+ 789 290 p
+ 773 290 p
+ 790 290 p
+ 792 290 p
+ 793 290 p
+ 183 290 p
+ 177 290 p
+ 789 289 p
+ 773 289 p
+ 790 289 p
+ 791 289 p
+ 786 289 p
+ 183 289 p
+ 176 289 p
+ 791 288 p
+ 790 288 p
+ 786 288 p
+ 811 288 p
+ 812 288 p
+ 182 288 p
+ 183 288 p
+ 792 287 p
+ 793 287 p
+ 789 287 p
+ 814 287 p
+ 815 287 p
+ 183 287 p
+ 184 287 p
+ 792 286 p
+ 793 286 p
+ 789 286 p
+ 796 286 p
+ 795 286 p
+ 184 286 p
+ 177 286 p
+ 794 285 p
+ 775 285 p
+ 795 285 p
+ 797 285 p
+ 798 285 p
+ 185 285 p
+ 178 285 p
+ 794 284 p
+ 775 284 p
+ 795 284 p
+ 796 284 p
+ 793 284 p
+ 185 284 p
+ 177 284 p
+ 796 283 p
+ 795 283 p
+ 793 283 p
+ 817 283 p
+ 818 283 p
+ 184 283 p
+ 185 283 p
+ 797 282 p
+ 794 282 p
+ 798 282 p
+ 187 282 p
+ 178 282 p
+ 797 281 p
+ 794 281 p
+ 798 281 p
+ 799 281 p
+ 800 281 p
+ 187 281 p
+ 185 281 p
+ 799 280 p
+ 798 280 p
+ 800 280 p
+ 801 280 p
+ 802 280 p
+ 186 280 p
+ 187 280 p
+ 799 279 p
+ 798 279 p
+ 800 279 p
+ 820 279 p
+ 821 279 p
+ 186 279 p
+ 185 279 p
+ 801 278 p
+ 799 278 p
+ 802 278 p
+ 0 278 p
+ 187 278 p
+ 801 277 p
+ 799 277 p
+ 802 277 p
+ 823 277 p
+ 825 277 p
+ 0 277 p
+ 186 277 p
+ 803 276 p
+ 804 276 p
+ 782 276 p
+ 179 276 p
+ 188 276 p
+ 803 275 p
+ 804 275 p
+ 782 275 p
+ 807 275 p
+ 805 275 p
+ 188 275 p
+ 180 275 p
+ 805 274 p
+ 806 274 p
+ 785 274 p
+ 804 274 p
+ 807 274 p
+ 180 274 p
+ 189 274 p
+ 805 273 p
+ 806 273 p
+ 785 273 p
+ 810 273 p
+ 808 273 p
+ 189 273 p
+ 181 273 p
+ 804 272 p
+ 807 272 p
+ 805 272 p
+ 831 272 p
+ 832 272 p
+ 188 272 p
+ 189 272 p
+ 808 271 p
+ 809 271 p
+ 788 271 p
+ 806 271 p
+ 810 271 p
+ 181 271 p
+ 190 271 p
+ 808 270 p
+ 809 270 p
+ 788 270 p
+ 813 270 p
+ 811 270 p
+ 190 270 p
+ 182 270 p
+ 806 269 p
+ 810 269 p
+ 808 269 p
+ 835 269 p
+ 836 269 p
+ 189 269 p
+ 190 269 p
+ 811 268 p
+ 812 268 p
+ 791 268 p
+ 809 268 p
+ 813 268 p
+ 182 268 p
+ 191 268 p
+ 811 267 p
+ 812 267 p
+ 791 267 p
+ 816 267 p
+ 814 267 p
+ 191 267 p
+ 183 267 p
+ 809 266 p
+ 813 266 p
+ 811 266 p
+ 838 266 p
+ 839 266 p
+ 190 266 p
+ 191 266 p
+ 814 265 p
+ 815 265 p
+ 792 265 p
+ 812 265 p
+ 816 265 p
+ 183 265 p
+ 192 265 p
+ 814 264 p
+ 815 264 p
+ 792 264 p
+ 819 264 p
+ 817 264 p
+ 192 264 p
+ 184 264 p
+ 812 263 p
+ 816 263 p
+ 814 263 p
+ 841 263 p
+ 842 263 p
+ 191 263 p
+ 192 263 p
+ 817 262 p
+ 818 262 p
+ 796 262 p
+ 815 262 p
+ 819 262 p
+ 184 262 p
+ 193 262 p
+ 817 261 p
+ 818 261 p
+ 796 261 p
+ 822 261 p
+ 820 261 p
+ 193 261 p
+ 185 261 p
+ 815 260 p
+ 819 260 p
+ 817 260 p
+ 844 260 p
+ 845 260 p
+ 192 260 p
+ 193 260 p
+ 820 259 p
+ 821 259 p
+ 800 259 p
+ 818 259 p
+ 822 259 p
+ 185 259 p
+ 194 259 p
+ 820 258 p
+ 821 258 p
+ 800 258 p
+ 823 258 p
+ 824 258 p
+ 194 258 p
+ 186 258 p
+ 818 257 p
+ 822 257 p
+ 820 257 p
+ 849 257 p
+ 847 257 p
+ 193 257 p
+ 194 257 p
+ 823 256 p
+ 821 256 p
+ 824 256 p
+ 802 256 p
+ 825 256 p
+ 195 256 p
+ 186 256 p
+ 823 255 p
+ 821 255 p
+ 824 255 p
+ 847 255 p
+ 848 255 p
+ 195 255 p
+ 194 255 p
+ 802 254 p
+ 823 254 p
+ 825 254 p
+ 826 254 p
+ 827 254 p
+ 0 254 p
+ 195 254 p
+ 825 253 p
+ 826 253 p
+ 827 253 p
+ 851 253 p
+ 852 253 p
+ 195 253 p
+ 196 253 p
+ 825 252 p
+ 826 252 p
+ 827 252 p
+ 0 252 p
+ 196 252 p
+ 828 251 p
+ 829 251 p
+ 830 251 p
+ 901 251 p
+ 927 251 p
+ 279 251 p
+ 280 251 p
+ 828 250 p
+ 829 250 p
+ 830 250 p
+ 756 250 p
+ 900 250 p
+ 280 250 p
+ 264 250 p
+ 828 249 p
+ 829 249 p
+ 830 249 p
+ 931 249 p
+ 929 249 p
+ 279 249 p
+ 264 249 p
+ 831 248 p
+ 832 248 p
+ 807 248 p
+ 833 248 p
+ 834 248 p
+ 188 248 p
+ 198 248 p
+ 831 247 p
+ 832 247 p
+ 807 247 p
+ 837 247 p
+ 835 247 p
+ 198 247 p
+ 189 247 p
+ 833 246 p
+ 834 246 p
+ 831 246 p
+ 188 246 p
+ 197 246 p
+ 833 245 p
+ 834 245 p
+ 831 245 p
+ 854 245 p
+ 855 245 p
+ 197 245 p
+ 198 245 p
+ 835 244 p
+ 836 244 p
+ 810 244 p
+ 832 244 p
+ 837 244 p
+ 189 244 p
+ 199 244 p
+ 835 243 p
+ 836 243 p
+ 810 243 p
+ 840 243 p
+ 838 243 p
+ 199 243 p
+ 190 243 p
+ 832 242 p
+ 837 242 p
+ 835 242 p
+ 856 242 p
+ 857 242 p
+ 198 242 p
+ 199 242 p
+ 838 241 p
+ 839 241 p
+ 813 241 p
+ 836 241 p
+ 840 241 p
+ 190 241 p
+ 200 241 p
+ 838 240 p
+ 839 240 p
+ 813 240 p
+ 843 240 p
+ 841 240 p
+ 200 240 p
+ 191 240 p
+ 836 239 p
+ 840 239 p
+ 838 239 p
+ 859 239 p
+ 860 239 p
+ 199 239 p
+ 200 239 p
+ 841 238 p
+ 842 238 p
+ 816 238 p
+ 839 238 p
+ 843 238 p
+ 191 238 p
+ 201 238 p
+ 841 237 p
+ 842 237 p
+ 816 237 p
+ 846 237 p
+ 844 237 p
+ 201 237 p
+ 192 237 p
+ 839 236 p
+ 843 236 p
+ 841 236 p
+ 862 236 p
+ 863 236 p
+ 200 236 p
+ 201 236 p
+ 844 235 p
+ 845 235 p
+ 819 235 p
+ 842 235 p
+ 846 235 p
+ 192 235 p
+ 202 235 p
+ 844 234 p
+ 845 234 p
+ 819 234 p
+ 850 234 p
+ 849 234 p
+ 202 234 p
+ 193 234 p
+ 842 233 p
+ 846 233 p
+ 844 233 p
+ 865 233 p
+ 866 233 p
+ 201 233 p
+ 202 233 p
+ 847 232 p
+ 848 232 p
+ 824 232 p
+ 849 232 p
+ 822 232 p
+ 194 232 p
+ 203 232 p
+ 847 231 p
+ 848 231 p
+ 824 231 p
+ 853 231 p
+ 852 231 p
+ 203 231 p
+ 195 231 p
+ 849 230 p
+ 847 230 p
+ 822 230 p
+ 845 230 p
+ 850 230 p
+ 193 230 p
+ 203 230 p
+ 845 229 p
+ 850 229 p
+ 849 229 p
+ 870 229 p
+ 871 229 p
+ 202 229 p
+ 203 229 p
+ 851 228 p
+ 826 228 p
+ 852 228 p
+ 204 228 p
+ 196 228 p
+ 851 227 p
+ 826 227 p
+ 852 227 p
+ 853 227 p
+ 848 227 p
+ 204 227 p
+ 195 227 p
+ 853 226 p
+ 852 226 p
+ 848 226 p
+ 871 226 p
+ 873 226 p
+ 203 226 p
+ 204 226 p
+ 854 225 p
+ 855 225 p
+ 834 225 p
+ 197 225 p
+ 205 225 p
+ 854 224 p
+ 855 224 p
+ 834 224 p
+ 858 224 p
+ 856 224 p
+ 205 224 p
+ 198 224 p
+ 856 223 p
+ 857 223 p
+ 837 223 p
+ 855 223 p
+ 858 223 p
+ 198 223 p
+ 206 223 p
+ 856 222 p
+ 857 222 p
+ 837 222 p
+ 861 222 p
+ 859 222 p
+ 206 222 p
+ 199 222 p
+ 855 221 p
+ 858 221 p
+ 856 221 p
+ 876 221 p
+ 877 221 p
+ 205 221 p
+ 206 221 p
+ 859 220 p
+ 860 220 p
+ 840 220 p
+ 857 220 p
+ 861 220 p
+ 199 220 p
+ 207 220 p
+ 859 219 p
+ 860 219 p
+ 840 219 p
+ 864 219 p
+ 862 219 p
+ 207 219 p
+ 200 219 p
+ 857 218 p
+ 861 218 p
+ 859 218 p
+ 878 218 p
+ 879 218 p
+ 206 218 p
+ 207 218 p
+ 862 217 p
+ 863 217 p
+ 843 217 p
+ 860 217 p
+ 864 217 p
+ 200 217 p
+ 208 217 p
+ 862 216 p
+ 863 216 p
+ 843 216 p
+ 867 216 p
+ 865 216 p
+ 208 216 p
+ 201 216 p
+ 860 215 p
+ 864 215 p
+ 862 215 p
+ 881 215 p
+ 882 215 p
+ 207 215 p
+ 208 215 p
+ 865 214 p
+ 866 214 p
+ 846 214 p
+ 863 214 p
+ 867 214 p
+ 201 214 p
+ 209 214 p
+ 865 213 p
+ 866 213 p
+ 846 213 p
+ 868 213 p
+ 869 213 p
+ 209 213 p
+ 202 213 p
+ 863 212 p
+ 867 212 p
+ 865 212 p
+ 884 212 p
+ 885 212 p
+ 208 212 p
+ 209 212 p
+ 866 211 p
+ 868 211 p
+ 869 211 p
+ 887 211 p
+ 888 211 p
+ 209 211 p
+ 210 211 p
+ 866 210 p
+ 868 210 p
+ 869 210 p
+ 872 210 p
+ 870 210 p
+ 202 210 p
+ 210 210 p
+ 870 209 p
+ 871 209 p
+ 850 209 p
+ 869 209 p
+ 872 209 p
+ 202 209 p
+ 211 209 p
+ 870 208 p
+ 871 208 p
+ 850 208 p
+ 873 208 p
+ 853 208 p
+ 211 208 p
+ 203 208 p
+ 869 207 p
+ 872 207 p
+ 870 207 p
+ 890 207 p
+ 891 207 p
+ 210 207 p
+ 211 207 p
+ 871 206 p
+ 873 206 p
+ 853 206 p
+ 874 206 p
+ 875 206 p
+ 211 206 p
+ 204 206 p
+ 873 205 p
+ 874 205 p
+ 875 205 p
+ 895 205 p
+ 896 205 p
+ 211 205 p
+ 212 205 p
+ 873 204 p
+ 874 204 p
+ 875 204 p
+ 204 204 p
+ 212 204 p
+ 876 203 p
+ 877 203 p
+ 858 203 p
+ 205 203 p
+ 213 203 p
+ 876 202 p
+ 877 202 p
+ 858 202 p
+ 880 202 p
+ 878 202 p
+ 213 202 p
+ 206 202 p
+ 878 201 p
+ 879 201 p
+ 861 201 p
+ 877 201 p
+ 880 201 p
+ 206 201 p
+ 214 201 p
+ 878 200 p
+ 879 200 p
+ 861 200 p
+ 883 200 p
+ 881 200 p
+ 214 200 p
+ 207 200 p
+ 877 199 p
+ 880 199 p
+ 878 199 p
+ 902 199 p
+ 903 199 p
+ 213 199 p
+ 214 199 p
+ 881 198 p
+ 882 198 p
+ 864 198 p
+ 879 198 p
+ 883 198 p
+ 207 198 p
+ 215 198 p
+ 881 197 p
+ 882 197 p
+ 864 197 p
+ 886 197 p
+ 884 197 p
+ 215 197 p
+ 208 197 p
+ 879 196 p
+ 883 196 p
+ 881 196 p
+ 906 196 p
+ 907 196 p
+ 214 196 p
+ 215 196 p
+ 884 195 p
+ 885 195 p
+ 867 195 p
+ 882 195 p
+ 886 195 p
+ 208 195 p
+ 216 195 p
+ 884 194 p
+ 885 194 p
+ 867 194 p
+ 889 194 p
+ 887 194 p
+ 216 194 p
+ 209 194 p
+ 882 193 p
+ 886 193 p
+ 884 193 p
+ 909 193 p
+ 910 193 p
+ 215 193 p
+ 216 193 p
+ 887 192 p
+ 888 192 p
+ 868 192 p
+ 885 192 p
+ 889 192 p
+ 209 192 p
+ 217 192 p
+ 887 191 p
+ 888 191 p
+ 868 191 p
+ 892 191 p
+ 890 191 p
+ 217 191 p
+ 210 191 p
+ 885 190 p
+ 889 190 p
+ 887 190 p
+ 912 190 p
+ 913 190 p
+ 216 190 p
+ 217 190 p
+ 890 189 p
+ 891 189 p
+ 872 189 p
+ 888 189 p
+ 892 189 p
+ 210 189 p
+ 218 189 p
+ 890 188 p
+ 891 188 p
+ 872 188 p
+ 893 188 p
+ 894 188 p
+ 218 188 p
+ 211 188 p
+ 888 187 p
+ 892 187 p
+ 890 187 p
+ 915 187 p
+ 916 187 p
+ 217 187 p
+ 218 187 p
+ 891 186 p
+ 893 186 p
+ 894 186 p
+ 918 186 p
+ 919 186 p
+ 218 186 p
+ 219 186 p
+ 891 185 p
+ 893 185 p
+ 894 185 p
+ 897 185 p
+ 895 185 p
+ 211 185 p
+ 219 185 p
+ 895 184 p
+ 896 184 p
+ 874 184 p
+ 894 184 p
+ 897 184 p
+ 211 184 p
+ 220 184 p
+ 895 183 p
+ 896 183 p
+ 874 183 p
+ 898 183 p
+ 899 183 p
+ 220 183 p
+ 212 183 p
+ 894 182 p
+ 897 182 p
+ 895 182 p
+ 921 182 p
+ 922 182 p
+ 219 182 p
+ 220 182 p
+ 896 181 p
+ 898 181 p
+ 899 181 p
+ 924 181 p
+ 925 181 p
+ 220 181 p
+ 221 181 p
+ 896 180 p
+ 898 180 p
+ 899 180 p
+ 212 180 p
+ 221 180 p
+ 756 179 p
+ 900 179 p
+ 829 179 p
+ 1028 179 p
+ 1030 179 p
+ 265 179 p
+ 264 179 p
+ 335 178 p
+ 777 178 p
+ 901 178 p
+ 828 178 p
+ 927 178 p
+ 16 178 p
+ 280 178 p
+ 902 177 p
+ 903 177 p
+ 880 177 p
+ 904 177 p
+ 905 177 p
+ 213 177 p
+ 223 177 p
+ 902 176 p
+ 903 176 p
+ 880 176 p
+ 908 176 p
+ 906 176 p
+ 223 176 p
+ 214 176 p
+ 904 175 p
+ 905 175 p
+ 902 175 p
+ 213 175 p
+ 222 175 p
+ 904 174 p
+ 905 174 p
+ 902 174 p
+ 934 174 p
+ 935 174 p
+ 222 174 p
+ 223 174 p
+ 906 173 p
+ 907 173 p
+ 883 173 p
+ 903 173 p
+ 908 173 p
+ 214 173 p
+ 224 173 p
+ 906 172 p
+ 907 172 p
+ 883 172 p
+ 911 172 p
+ 909 172 p
+ 224 172 p
+ 215 172 p
+ 903 171 p
+ 908 171 p
+ 906 171 p
+ 935 171 p
+ 938 171 p
+ 223 171 p
+ 224 171 p
+ 909 170 p
+ 910 170 p
+ 886 170 p
+ 907 170 p
+ 911 170 p
+ 215 170 p
+ 225 170 p
+ 909 169 p
+ 910 169 p
+ 886 169 p
+ 914 169 p
+ 912 169 p
+ 225 169 p
+ 216 169 p
+ 907 168 p
+ 911 168 p
+ 909 168 p
+ 939 168 p
+ 940 168 p
+ 224 168 p
+ 225 168 p
+ 912 167 p
+ 913 167 p
+ 889 167 p
+ 910 167 p
+ 914 167 p
+ 216 167 p
+ 226 167 p
+ 912 166 p
+ 913 166 p
+ 889 166 p
+ 917 166 p
+ 915 166 p
+ 226 166 p
+ 217 166 p
+ 910 165 p
+ 914 165 p
+ 912 165 p
+ 942 165 p
+ 943 165 p
+ 225 165 p
+ 226 165 p
+ 915 164 p
+ 916 164 p
+ 892 164 p
+ 913 164 p
+ 917 164 p
+ 217 164 p
+ 227 164 p
+ 915 163 p
+ 916 163 p
+ 892 163 p
+ 920 163 p
+ 918 163 p
+ 227 163 p
+ 218 163 p
+ 913 162 p
+ 917 162 p
+ 915 162 p
+ 945 162 p
+ 946 162 p
+ 226 162 p
+ 227 162 p
+ 918 161 p
+ 919 161 p
+ 893 161 p
+ 916 161 p
+ 920 161 p
+ 218 161 p
+ 228 161 p
+ 918 160 p
+ 919 160 p
+ 893 160 p
+ 923 160 p
+ 921 160 p
+ 228 160 p
+ 219 160 p
+ 916 159 p
+ 920 159 p
+ 918 159 p
+ 948 159 p
+ 949 159 p
+ 227 159 p
+ 228 159 p
+ 921 158 p
+ 922 158 p
+ 897 158 p
+ 919 158 p
+ 923 158 p
+ 219 158 p
+ 229 158 p
+ 921 157 p
+ 922 157 p
+ 897 157 p
+ 926 157 p
+ 924 157 p
+ 229 157 p
+ 220 157 p
+ 919 156 p
+ 923 156 p
+ 921 156 p
+ 951 156 p
+ 952 156 p
+ 228 156 p
+ 229 156 p
+ 924 155 p
+ 925 155 p
+ 898 155 p
+ 922 155 p
+ 926 155 p
+ 220 155 p
+ 230 155 p
+ 924 154 p
+ 925 154 p
+ 898 154 p
+ 230 154 p
+ 221 154 p
+ 922 153 p
+ 926 153 p
+ 924 153 p
+ 956 153 p
+ 957 153 p
+ 229 153 p
+ 230 153 p
+ 901 152 p
+ 828 152 p
+ 927 152 p
+ 329 152 p
+ 932 152 p
+ 16 152 p
+ 279 152 p
+ 928 151 p
+ 929 151 p
+ 930 151 p
+ 933 151 p
+ 993 151 p
+ 278 151 p
+ 279 151 p
+ 928 150 p
+ 929 150 p
+ 930 150 p
+ 830 150 p
+ 931 150 p
+ 279 150 p
+ 263 150 p
+ 928 149 p
+ 929 149 p
+ 930 149 p
+ 1027 149 p
+ 995 149 p
+ 278 149 p
+ 263 149 p
+ 830 148 p
+ 931 148 p
+ 929 148 p
+ 1029 148 p
+ 1025 148 p
+ 264 148 p
+ 263 148 p
+ 331 147 p
+ 932 147 p
+ 933 147 p
+ 329 147 p
+ 927 147 p
+ 15 147 p
+ 279 147 p
+ 331 146 p
+ 932 146 p
+ 933 146 p
+ 928 146 p
+ 993 146 p
+ 14 146 p
+ 279 146 p
+ 934 145 p
+ 935 145 p
+ 905 145 p
+ 936 145 p
+ 937 145 p
+ 222 145 p
+ 232 145 p
+ 934 144 p
+ 935 144 p
+ 905 144 p
+ 938 144 p
+ 908 144 p
+ 232 144 p
+ 223 144 p
+ 936 143 p
+ 937 143 p
+ 934 143 p
+ 222 143 p
+ 231 143 p
+ 936 142 p
+ 937 142 p
+ 934 142 p
+ 961 142 p
+ 962 142 p
+ 231 142 p
+ 232 142 p
+ 935 141 p
+ 938 141 p
+ 908 141 p
+ 941 141 p
+ 939 141 p
+ 232 141 p
+ 224 141 p
+ 939 140 p
+ 940 140 p
+ 911 140 p
+ 938 140 p
+ 941 140 p
+ 224 140 p
+ 233 140 p
+ 939 139 p
+ 940 139 p
+ 911 139 p
+ 944 139 p
+ 942 139 p
+ 233 139 p
+ 225 139 p
+ 938 138 p
+ 941 138 p
+ 939 138 p
+ 963 138 p
+ 964 138 p
+ 232 138 p
+ 233 138 p
+ 942 137 p
+ 943 137 p
+ 914 137 p
+ 940 137 p
+ 944 137 p
+ 225 137 p
+ 234 137 p
+ 942 136 p
+ 943 136 p
+ 914 136 p
+ 947 136 p
+ 945 136 p
+ 234 136 p
+ 226 136 p
+ 940 135 p
+ 944 135 p
+ 942 135 p
+ 970 135 p
+ 968 135 p
+ 233 135 p
+ 234 135 p
+ 945 134 p
+ 946 134 p
+ 917 134 p
+ 943 134 p
+ 947 134 p
+ 226 134 p
+ 235 134 p
+ 945 133 p
+ 946 133 p
+ 917 133 p
+ 950 133 p
+ 948 133 p
+ 235 133 p
+ 227 133 p
+ 943 132 p
+ 947 132 p
+ 945 132 p
+ 968 132 p
+ 969 132 p
+ 234 132 p
+ 235 132 p
+ 948 131 p
+ 949 131 p
+ 920 131 p
+ 946 131 p
+ 950 131 p
+ 227 131 p
+ 236 131 p
+ 948 130 p
+ 949 130 p
+ 920 130 p
+ 953 130 p
+ 951 130 p
+ 236 130 p
+ 228 130 p
+ 946 129 p
+ 950 129 p
+ 948 129 p
+ 972 129 p
+ 973 129 p
+ 235 129 p
+ 236 129 p
+ 951 128 p
+ 952 128 p
+ 923 128 p
+ 949 128 p
+ 953 128 p
+ 228 128 p
+ 237 128 p
+ 951 127 p
+ 952 127 p
+ 923 127 p
+ 954 127 p
+ 955 127 p
+ 237 127 p
+ 229 127 p
+ 949 126 p
+ 953 126 p
+ 951 126 p
+ 975 126 p
+ 976 126 p
+ 236 126 p
+ 237 126 p
+ 952 125 p
+ 954 125 p
+ 955 125 p
+ 978 125 p
+ 979 125 p
+ 237 125 p
+ 238 125 p
+ 952 124 p
+ 954 124 p
+ 955 124 p
+ 958 124 p
+ 956 124 p
+ 229 124 p
+ 238 124 p
+ 956 123 p
+ 957 123 p
+ 926 123 p
+ 955 123 p
+ 958 123 p
+ 229 123 p
+ 239 123 p
+ 956 122 p
+ 957 122 p
+ 926 122 p
+ 959 122 p
+ 960 122 p
+ 239 122 p
+ 230 122 p
+ 955 121 p
+ 958 121 p
+ 956 121 p
+ 981 121 p
+ 982 121 p
+ 238 121 p
+ 239 121 p
+ 957 120 p
+ 959 120 p
+ 960 120 p
+ 986 120 p
+ 987 120 p
+ 239 120 p
+ 240 120 p
+ 957 119 p
+ 959 119 p
+ 960 119 p
+ 230 119 p
+ 240 119 p
+ 961 118 p
+ 962 118 p
+ 937 118 p
+ 231 118 p
+ 241 118 p
+ 961 117 p
+ 962 117 p
+ 937 117 p
+ 965 117 p
+ 963 117 p
+ 241 117 p
+ 232 117 p
+ 963 116 p
+ 964 116 p
+ 941 116 p
+ 962 116 p
+ 965 116 p
+ 232 116 p
+ 242 116 p
+ 963 115 p
+ 964 115 p
+ 941 115 p
+ 966 115 p
+ 967 115 p
+ 242 115 p
+ 233 115 p
+ 962 114 p
+ 965 114 p
+ 963 114 p
+ 997 114 p
+ 998 114 p
+ 241 114 p
+ 242 114 p
+ 964 113 p
+ 966 113 p
+ 967 113 p
+ 999 113 p
+ 1000 113 p
+ 242 113 p
+ 243 113 p
+ 964 112 p
+ 966 112 p
+ 967 112 p
+ 971 112 p
+ 970 112 p
+ 233 112 p
+ 243 112 p
+ 968 111 p
+ 969 111 p
+ 947 111 p
+ 970 111 p
+ 944 111 p
+ 234 111 p
+ 244 111 p
+ 968 110 p
+ 969 110 p
+ 947 110 p
+ 974 110 p
+ 972 110 p
+ 244 110 p
+ 235 110 p
+ 970 109 p
+ 968 109 p
+ 944 109 p
+ 967 109 p
+ 971 109 p
+ 233 109 p
+ 244 109 p
+ 967 108 p
+ 971 108 p
+ 970 108 p
+ 1002 108 p
+ 1003 108 p
+ 243 108 p
+ 244 108 p
+ 972 107 p
+ 973 107 p
+ 950 107 p
+ 969 107 p
+ 974 107 p
+ 235 107 p
+ 245 107 p
+ 972 106 p
+ 973 106 p
+ 950 106 p
+ 977 106 p
+ 975 106 p
+ 245 106 p
+ 236 106 p
+ 969 105 p
+ 974 105 p
+ 972 105 p
+ 1007 105 p
+ 1008 105 p
+ 244 105 p
+ 245 105 p
+ 975 104 p
+ 976 104 p
+ 953 104 p
+ 973 104 p
+ 977 104 p
+ 236 104 p
+ 246 104 p
+ 975 103 p
+ 976 103 p
+ 953 103 p
+ 980 103 p
+ 978 103 p
+ 246 103 p
+ 237 103 p
+ 973 102 p
+ 977 102 p
+ 975 102 p
+ 1010 102 p
+ 1011 102 p
+ 245 102 p
+ 246 102 p
+ 978 101 p
+ 979 101 p
+ 954 101 p
+ 976 101 p
+ 980 101 p
+ 237 101 p
+ 247 101 p
+ 978 100 p
+ 979 100 p
+ 954 100 p
+ 983 100 p
+ 981 100 p
+ 247 100 p
+ 238 100 p
+ 976 99 p
+ 980 99 p
+ 978 99 p
+ 1013 99 p
+ 1014 99 p
+ 246 99 p
+ 247 99 p
+ 981 98 p
+ 982 98 p
+ 958 98 p
+ 979 98 p
+ 983 98 p
+ 238 98 p
+ 248 98 p
+ 981 97 p
+ 982 97 p
+ 958 97 p
+ 984 97 p
+ 985 97 p
+ 248 97 p
+ 239 97 p
+ 979 96 p
+ 983 96 p
+ 981 96 p
+ 1016 96 p
+ 1017 96 p
+ 247 96 p
+ 248 96 p
+ 984 95 p
+ 985 95 p
+ 982 95 p
+ 1019 95 p
+ 1020 95 p
+ 248 95 p
+ 249 95 p
+ 984 94 p
+ 985 94 p
+ 982 94 p
+ 988 94 p
+ 987 94 p
+ 249 94 p
+ 239 94 p
+ 986 93 p
+ 959 93 p
+ 987 93 p
+ 989 93 p
+ 990 93 p
+ 250 93 p
+ 240 93 p
+ 986 92 p
+ 959 92 p
+ 987 92 p
+ 988 92 p
+ 985 92 p
+ 250 92 p
+ 239 92 p
+ 988 91 p
+ 987 91 p
+ 985 91 p
+ 1022 91 p
+ 1023 91 p
+ 249 91 p
+ 250 91 p
+ 986 90 p
+ 989 90 p
+ 990 90 p
+ 1025 90 p
+ 1026 90 p
+ 250 90 p
+ 251 90 p
+ 986 89 p
+ 989 89 p
+ 990 89 p
+ 991 89 p
+ 992 89 p
+ 240 89 p
+ 251 89 p
+ 990 88 p
+ 991 88 p
+ 992 88 p
+ 1028 88 p
+ 1029 88 p
+ 251 88 p
+ 252 88 p
+ 990 87 p
+ 991 87 p
+ 992 87 p
+ 240 87 p
+ 252 87 p
+ 933 86 p
+ 928 86 p
+ 993 86 p
+ 1079 86 p
+ 324 86 p
+ 14 86 p
+ 278 86 p
+ 994 85 p
+ 995 85 p
+ 996 85 p
+ 1076 85 p
+ 1079 85 p
+ 277 85 p
+ 278 85 p
+ 994 84 p
+ 995 84 p
+ 996 84 p
+ 930 84 p
+ 1027 84 p
+ 278 84 p
+ 262 84 p
+ 994 83 p
+ 995 83 p
+ 996 83 p
+ 1078 83 p
+ 1024 83 p
+ 277 83 p
+ 262 83 p
+ 997 82 p
+ 998 82 p
+ 965 82 p
+ 241 82 p
+ 253 82 p
+ 997 81 p
+ 998 81 p
+ 965 81 p
+ 1001 81 p
+ 999 81 p
+ 253 81 p
+ 242 81 p
+ 999 80 p
+ 1000 80 p
+ 966 80 p
+ 998 80 p
+ 1001 80 p
+ 242 80 p
+ 254 80 p
+ 999 79 p
+ 1000 79 p
+ 966 79 p
+ 1004 79 p
+ 1002 79 p
+ 254 79 p
+ 243 79 p
+ 998 78 p
+ 1001 78 p
+ 999 78 p
+ 1033 78 p
+ 1034 78 p
+ 253 78 p
+ 254 78 p
+ 1002 77 p
+ 1003 77 p
+ 971 77 p
+ 1000 77 p
+ 1004 77 p
+ 243 77 p
+ 255 77 p
+ 1002 76 p
+ 1003 76 p
+ 971 76 p
+ 1005 76 p
+ 1006 76 p
+ 255 76 p
+ 244 76 p
+ 1000 75 p
+ 1004 75 p
+ 1002 75 p
+ 1035 75 p
+ 1036 75 p
+ 254 75 p
+ 255 75 p
+ 1003 74 p
+ 1005 74 p
+ 1006 74 p
+ 1041 74 p
+ 1042 74 p
+ 255 74 p
+ 256 74 p
+ 1003 73 p
+ 1005 73 p
+ 1006 73 p
+ 1009 73 p
+ 1007 73 p
+ 244 73 p
+ 256 73 p
+ 1007 72 p
+ 1008 72 p
+ 974 72 p
+ 1006 72 p
+ 1009 72 p
+ 244 72 p
+ 257 72 p
+ 1007 71 p
+ 1008 71 p
+ 974 71 p
+ 1012 71 p
+ 1010 71 p
+ 257 71 p
+ 245 71 p
+ 1006 70 p
+ 1009 70 p
+ 1007 70 p
+ 1055 70 p
+ 1050 70 p
+ 256 70 p
+ 257 70 p
+ 1010 69 p
+ 1011 69 p
+ 977 69 p
+ 1008 69 p
+ 1012 69 p
+ 245 69 p
+ 258 69 p
+ 1010 68 p
+ 1011 68 p
+ 977 68 p
+ 1015 68 p
+ 1013 68 p
+ 258 68 p
+ 246 68 p
+ 1008 67 p
+ 1012 67 p
+ 1010 67 p
+ 1050 67 p
+ 1051 67 p
+ 257 67 p
+ 258 67 p
+ 1013 66 p
+ 1014 66 p
+ 980 66 p
+ 1011 66 p
+ 1015 66 p
+ 246 66 p
+ 259 66 p
+ 1013 65 p
+ 1014 65 p
+ 980 65 p
+ 1018 65 p
+ 1016 65 p
+ 259 65 p
+ 247 65 p
+ 1011 64 p
+ 1015 64 p
+ 1013 64 p
+ 1056 64 p
+ 1057 64 p
+ 258 64 p
+ 259 64 p
+ 1016 63 p
+ 1017 63 p
+ 983 63 p
+ 1014 63 p
+ 1018 63 p
+ 247 63 p
+ 260 63 p
+ 1016 62 p
+ 1017 62 p
+ 983 62 p
+ 1021 62 p
+ 1019 62 p
+ 260 62 p
+ 248 62 p
+ 1014 61 p
+ 1018 61 p
+ 1016 61 p
+ 1068 61 p
+ 1069 61 p
+ 259 61 p
+ 260 61 p
+ 1019 60 p
+ 1020 60 p
+ 984 60 p
+ 1017 60 p
+ 1021 60 p
+ 248 60 p
+ 261 60 p
+ 1019 59 p
+ 1020 59 p
+ 984 59 p
+ 1024 59 p
+ 1022 59 p
+ 261 59 p
+ 249 59 p
+ 1017 58 p
+ 1021 58 p
+ 1019 58 p
+ 1073 58 p
+ 1074 58 p
+ 260 58 p
+ 261 58 p
+ 1022 57 p
+ 1023 57 p
+ 988 57 p
+ 1020 57 p
+ 1024 57 p
+ 249 57 p
+ 262 57 p
+ 1022 56 p
+ 1023 56 p
+ 988 56 p
+ 1027 56 p
+ 1026 56 p
+ 262 56 p
+ 250 56 p
+ 1020 55 p
+ 1024 55 p
+ 1022 55 p
+ 1078 55 p
+ 996 55 p
+ 261 55 p
+ 262 55 p
+ 1025 54 p
+ 989 54 p
+ 1026 54 p
+ 931 54 p
+ 1029 54 p
+ 263 54 p
+ 251 54 p
+ 1025 53 p
+ 989 53 p
+ 1026 53 p
+ 1027 53 p
+ 1023 53 p
+ 263 53 p
+ 250 53 p
+ 1027 52 p
+ 1026 52 p
+ 1023 52 p
+ 930 52 p
+ 995 52 p
+ 262 52 p
+ 263 52 p
+ 1028 51 p
+ 991 51 p
+ 1029 51 p
+ 900 51 p
+ 1030 51 p
+ 264 51 p
+ 252 51 p
+ 1028 50 p
+ 991 50 p
+ 1029 50 p
+ 931 50 p
+ 1025 50 p
+ 264 50 p
+ 251 50 p
+ 1028 49 p
+ 900 49 p
+ 1030 49 p
+ 757 49 p
+ 1031 49 p
+ 252 49 p
+ 265 49 p
+ 1030 48 p
+ 757 48 p
+ 1031 48 p
+ 753 48 p
+ 1032 48 p
+ 252 48 p
+ 266 48 p
+ 1031 47 p
+ 753 47 p
+ 1032 47 p
+ 252 47 p
+ 267 47 p
+ 1033 46 p
+ 1034 46 p
+ 1001 46 p
+ 253 46 p
+ 268 46 p
+ 1033 45 p
+ 1034 45 p
+ 1001 45 p
+ 1040 45 p
+ 1035 45 p
+ 268 45 p
+ 254 45 p
+ 1035 44 p
+ 1036 44 p
+ 1004 44 p
+ 1034 44 p
+ 1040 44 p
+ 254 44 p
+ 269 44 p
+ 1035 43 p
+ 1036 43 p
+ 1004 43 p
+ 1045 43 p
+ 1041 43 p
+ 269 43 p
+ 255 43 p
+ 1037 42 p
+ 287 42 p
+ 1038 42 p
+ 1039 42 p
+ 1040 42 p
+ 269 42 p
+ 4 42 p
+ 1037 41 p
+ 287 41 p
+ 1038 41 p
+ 1043 41 p
+ 1045 41 p
+ 269 41 p
+ 5 41 p
+ 1039 40 p
+ 1037 40 p
+ 1040 40 p
+ 268 40 p
+ 4 40 p
+ 1039 39 p
+ 1037 39 p
+ 1040 39 p
+ 1034 39 p
+ 1035 39 p
+ 268 39 p
+ 269 39 p
+ 1041 38 p
+ 1042 38 p
+ 1005 38 p
+ 1036 38 p
+ 1045 38 p
+ 255 38 p
+ 270 38 p
+ 1041 37 p
+ 1042 37 p
+ 1005 37 p
+ 1048 37 p
+ 1049 37 p
+ 270 37 p
+ 256 37 p
+ 1043 36 p
+ 292 36 p
+ 1044 36 p
+ 1038 36 p
+ 1045 36 p
+ 270 36 p
+ 5 36 p
+ 1043 35 p
+ 292 35 p
+ 1044 35 p
+ 1046 35 p
+ 1048 35 p
+ 270 35 p
+ 6 35 p
+ 1038 34 p
+ 1043 34 p
+ 1045 34 p
+ 1036 34 p
+ 1041 34 p
+ 269 34 p
+ 270 34 p
+ 1046 33 p
+ 296 33 p
+ 1047 33 p
+ 1044 33 p
+ 1048 33 p
+ 271 33 p
+ 6 33 p
+ 1046 32 p
+ 296 32 p
+ 1047 32 p
+ 1052 32 p
+ 1054 32 p
+ 271 32 p
+ 7 32 p
+ 1044 31 p
+ 1046 31 p
+ 1048 31 p
+ 1042 31 p
+ 1049 31 p
+ 270 31 p
+ 271 31 p
+ 1042 30 p
+ 1048 30 p
+ 1049 30 p
+ 1054 30 p
+ 1055 30 p
+ 256 30 p
+ 271 30 p
+ 1050 29 p
+ 1051 29 p
+ 1012 29 p
+ 1055 29 p
+ 1009 29 p
+ 257 29 p
+ 272 29 p
+ 1050 28 p
+ 1051 28 p
+ 1012 28 p
+ 1060 28 p
+ 1056 28 p
+ 272 28 p
+ 258 28 p
+ 1052 27 p
+ 300 27 p
+ 1053 27 p
+ 1047 27 p
+ 1054 27 p
+ 272 27 p
+ 7 27 p
+ 1052 26 p
+ 300 26 p
+ 1053 26 p
+ 1058 26 p
+ 1060 26 p
+ 272 26 p
+ 8 26 p
+ 1047 25 p
+ 1052 25 p
+ 1054 25 p
+ 1049 25 p
+ 1055 25 p
+ 271 25 p
+ 272 25 p
+ 1055 24 p
+ 1050 24 p
+ 1009 24 p
+ 1049 24 p
+ 1054 24 p
+ 256 24 p
+ 272 24 p
+ 1056 23 p
+ 1057 23 p
+ 1015 23 p
+ 1051 23 p
+ 1060 23 p
+ 258 23 p
+ 273 23 p
+ 1056 22 p
+ 1057 22 p
+ 1015 22 p
+ 1063 22 p
+ 1064 22 p
+ 273 22 p
+ 259 22 p
+ 1058 21 p
+ 304 21 p
+ 1059 21 p
+ 1053 21 p
+ 1060 21 p
+ 273 21 p
+ 8 21 p
+ 1058 20 p
+ 304 20 p
+ 1059 20 p
+ 1061 20 p
+ 1063 20 p
+ 273 20 p
+ 9 20 p
+ 1053 19 p
+ 1058 19 p
+ 1060 19 p
+ 1051 19 p
+ 1056 19 p
+ 272 19 p
+ 273 19 p
+ 1061 18 p
+ 308 18 p
+ 1062 18 p
+ 1059 18 p
+ 1063 18 p
+ 274 18 p
+ 9 18 p
+ 1061 17 p
+ 308 17 p
+ 1062 17 p
+ 1065 17 p
+ 1067 17 p
+ 274 17 p
+ 10 17 p
+ 1059 16 p
+ 1061 16 p
+ 1063 16 p
+ 1057 16 p
+ 1064 16 p
+ 273 16 p
+ 274 16 p
+ 1057 15 p
+ 1063 15 p
+ 1064 15 p
+ 1067 15 p
+ 1068 15 p
+ 259 15 p
+ 274 15 p
+ 1065 14 p
+ 312 14 p
+ 1066 14 p
+ 1062 14 p
+ 1067 14 p
+ 275 14 p
+ 10 14 p
+ 1065 13 p
+ 312 13 p
+ 1066 13 p
+ 1070 13 p
+ 1072 13 p
+ 275 13 p
+ 11 13 p
+ 1062 12 p
+ 1065 12 p
+ 1067 12 p
+ 1064 12 p
+ 1068 12 p
+ 274 12 p
+ 275 12 p
+ 1068 11 p
+ 1069 11 p
+ 1018 11 p
+ 1064 11 p
+ 1067 11 p
+ 259 11 p
+ 275 11 p
+ 1068 10 p
+ 1069 10 p
+ 1018 10 p
+ 1072 10 p
+ 1073 10 p
+ 275 10 p
+ 260 10 p
+ 1070 9 p
+ 316 9 p
+ 1071 9 p
+ 1066 9 p
+ 1072 9 p
+ 276 9 p
+ 11 9 p
+ 1070 8 p
+ 316 8 p
+ 1071 8 p
+ 1075 8 p
+ 1077 8 p
+ 276 8 p
+ 12 8 p
+ 1066 7 p
+ 1070 7 p
+ 1072 7 p
+ 1069 7 p
+ 1073 7 p
+ 275 7 p
+ 276 7 p
+ 1073 6 p
+ 1074 6 p
+ 1021 6 p
+ 1069 6 p
+ 1072 6 p
+ 260 6 p
+ 276 6 p
+ 1073 5 p
+ 1074 5 p
+ 1021 5 p
+ 1077 5 p
+ 1078 5 p
+ 276 5 p
+ 261 5 p
+ 1075 4 p
+ 320 4 p
+ 1076 4 p
+ 1071 4 p
+ 1077 4 p
+ 277 4 p
+ 12 4 p
+ 1075 3 p
+ 320 3 p
+ 1076 3 p
+ 1079 3 p
+ 994 3 p
+ 277 3 p
+ 13 3 p
+ 1071 2 p
+ 1075 2 p
+ 1077 2 p
+ 1074 2 p
+ 1078 2 p
+ 276 2 p
+ 277 2 p
+ 1078 1 p
+ 996 1 p
+ 1024 1 p
+ 1074 1 p
+ 1077 1 p
+ 261 1 p
+ 277 1 p
+ 1079 0 p
+ 324 0 p
+ 993 0 p
+ 1076 0 p
+ 994 0 p
+ 278 0 p
+ 13 0 p
+showpage
diff --git a/DOC/msh8.pdf b/DOC/msh8.pdf
new file mode 100644
index 0000000..ec0f6b2
--- /dev/null
+++ b/DOC/msh8.pdf
Binary files differ
diff --git a/DOC/msh8.ps b/DOC/msh8.ps
new file mode 100644
index 0000000..2b15651
--- /dev/null
+++ b/DOC/msh8.ps
@@ -0,0 +1,10937 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: PSPLTM routine
+%%BoundingBox: 80 0 530 450
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 8.33333E-02 cm scalefont setfont
+ 10.7950 cm 0.500000 cm moveto
+( ) Cshow
+ 3.17500 cm 0.333333 cm translate
+ 15.2400 cm 6.00000 div dup scale
+ 0.01 setlinewidth
+ 0.00 0.00 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 5.80 5.77 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.66 3.05 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.66 3.05 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.80 5.77 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.54 2.83 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.77 2.78 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.54 2.83 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.13 2.72 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.77 2.78 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.46 2.76 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.13 2.72 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.46 2.76 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.68 3.00 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.68 3.00 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.59 3.03 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.65 3.08 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.65 3.08 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 4.83 3.00 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.83 3.00 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.81 3.11 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.81 3.11 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.01 3.00 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.01 3.00 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 4.98 3.15 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.98 3.15 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.20 3.00 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.20 3.00 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.16 3.18 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.16 3.18 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.41 3.00 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.41 3.00 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.36 3.23 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.36 3.23 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 5.76 3.00 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 5.76 3.00 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.59 3.28 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.59 3.28 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.70 3.13 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.70 3.13 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.56 3.09 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.60 3.15 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.60 3.15 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.77 3.17 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.77 3.17 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.85 3.18 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.85 3.18 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.74 3.21 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.74 3.21 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.93 3.22 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 4.93 3.22 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 5.02 3.24 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.02 3.24 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 4.89 3.28 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.89 3.28 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 5.10 3.28 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.10 3.28 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.20 3.30 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.20 3.30 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.06 3.35 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 5.06 3.35 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 5.30 3.34 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.30 3.34 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.41 3.36 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.41 3.36 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.24 3.44 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.24 3.44 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.51 3.41 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.51 3.41 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.63 3.44 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.63 3.44 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 5.45 3.53 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.45 3.53 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.85 3.49 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 5.85 3.49 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.78 3.63 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.78 3.63 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.61 3.21 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.61 3.21 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.49 3.14 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.51 3.21 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.51 3.21 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.68 3.26 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.68 3.26 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.75 3.29 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.75 3.29 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.63 3.29 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.63 3.29 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.82 3.34 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.82 3.34 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.90 3.37 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.90 3.37 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 4.76 3.39 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.76 3.39 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.97 3.43 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 4.97 3.43 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 5.06 3.47 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.06 3.47 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 4.90 3.49 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.90 3.49 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 5.14 3.53 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.14 3.53 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.24 3.57 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.24 3.57 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.06 3.61 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 5.06 3.61 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 5.33 3.64 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.33 3.64 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.44 3.69 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.44 3.69 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.23 3.73 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.23 3.73 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.54 3.76 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 5.54 3.76 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.76 3.81 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.76 3.81 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.42 3.87 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.42 3.87 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.87 3.89 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 5.87 3.89 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.45 3.23 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.45 3.23 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.55 3.33 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.49 3.35 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.49 3.35 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.67 3.43 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.60 3.46 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.60 3.46 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.80 3.55 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.80 3.55 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.87 3.60 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.87 3.60 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 4.71 3.59 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.71 3.59 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.94 3.67 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 4.94 3.67 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 5.02 3.73 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.02 3.73 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 4.83 3.73 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.83 3.73 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 5.09 3.81 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.09 3.81 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.18 3.88 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.18 3.88 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 4.97 3.88 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 4.97 3.88 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 5.26 3.97 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.26 3.97 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.36 4.04 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.36 4.04 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.12 4.05 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 5.12 4.05 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.45 4.14 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.45 4.14 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.56 4.22 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.56 4.22 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.29 4.23 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 5.29 4.23 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.65 4.32 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 5.65 4.32 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.78 4.32 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 5.78 4.32 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 5.47 4.43 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.47 4.43 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.34 3.26 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.34 3.26 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.41 3.37 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.35 3.39 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.35 3.39 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.50 3.49 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.42 3.51 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.42 3.51 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.60 3.62 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.50 3.65 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.50 3.65 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.70 3.77 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.59 3.80 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.59 3.80 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 4.82 3.93 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.69 3.97 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.69 3.97 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 4.95 4.11 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.79 4.15 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.79 4.15 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 5.09 4.30 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.09 4.30 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 5.17 4.40 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.17 4.40 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 4.91 4.36 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.91 4.36 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 5.24 4.51 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.24 4.51 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.33 4.62 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.33 4.62 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.04 4.58 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 5.04 4.58 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.41 4.75 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.41 4.75 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.49 4.89 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 5.49 4.89 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.71 5.00 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.71 5.00 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.34 5.10 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.34 5.10 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 6.00 5.39 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.80 5.16 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.51 5.39 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 5.51 5.39 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.80 6.00 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 5.77 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.60 5.77 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.22 3.28 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.22 3.28 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.27 3.40 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.21 3.40 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.21 3.40 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.33 3.53 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.25 3.53 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.25 3.53 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.39 3.67 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.29 3.68 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.29 3.68 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.46 3.82 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.35 3.84 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.35 3.84 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.53 3.99 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.40 4.01 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.40 4.01 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.62 4.18 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.47 4.21 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.47 4.21 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.71 4.39 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.53 4.42 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.53 4.42 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 4.81 4.62 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.61 4.65 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.61 4.65 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 4.92 4.87 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.69 4.91 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.69 4.91 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 5.12 5.29 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.04 5.14 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.78 5.19 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.78 5.19 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 5.27 5.77 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 5.27 5.77 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.88 5.67 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.88 5.67 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.10 3.29 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.10 3.29 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.13 3.41 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.07 3.41 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 4.07 3.41 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.16 3.54 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.08 3.54 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 4.08 3.54 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.19 3.68 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.10 3.69 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 4.10 3.69 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.22 3.84 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.11 3.85 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 4.11 3.85 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.26 4.02 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.13 4.02 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 4.13 4.02 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.30 4.21 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.15 4.22 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 4.15 4.22 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.34 4.43 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.17 4.43 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 4.17 4.43 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.39 4.66 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.20 4.67 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 4.20 4.67 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.45 4.92 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.23 4.93 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 4.23 4.93 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.50 5.20 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.26 5.21 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 4.26 5.21 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.62 6.00 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.57 5.67 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.29 5.68 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 4.29 5.68 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.00 3.34 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.95 3.29 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.95 3.29 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.00 3.47 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.93 3.41 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.93 3.41 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.00 3.61 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.92 3.54 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.92 3.54 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.00 3.76 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.90 3.69 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.90 3.69 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.00 3.93 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.89 3.85 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.89 3.85 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.00 4.12 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.87 4.02 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.87 4.02 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.00 4.32 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.85 4.22 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.85 4.22 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.00 4.54 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.83 4.43 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.83 4.43 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.00 4.79 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.80 4.67 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.80 4.67 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.00 5.06 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.77 4.93 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.77 4.93 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 4.00 5.36 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.74 5.21 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.74 5.21 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 4.00 6.00 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.71 5.68 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.71 5.68 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.88 3.35 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.83 3.29 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.83 3.29 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.85 3.47 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.79 3.41 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.79 3.41 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.82 3.61 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.75 3.54 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.75 3.54 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.79 3.77 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.70 3.69 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.70 3.69 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.75 3.94 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.65 3.85 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.65 3.85 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.71 4.12 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.59 4.03 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.59 4.03 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.66 4.33 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.53 4.23 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.53 4.23 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.62 4.55 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.46 4.44 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.46 4.44 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.56 4.80 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.38 4.68 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 3.38 4.68 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.50 5.07 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.29 4.94 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 3.29 4.94 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.44 5.37 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.20 5.23 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 3.20 5.23 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.37 6.00 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.10 5.69 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 3.10 5.69 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.74 3.35 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.69 3.29 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.69 3.29 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.68 3.48 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.62 3.42 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.62 3.42 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.61 3.62 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.54 3.55 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.54 3.55 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.54 3.78 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.46 3.70 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.46 3.70 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.47 3.95 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.36 3.87 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.36 3.87 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.38 4.14 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.26 4.05 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.26 4.05 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.29 4.34 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.14 4.25 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 3.14 4.25 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.18 4.57 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.02 4.47 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 3.02 4.47 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.07 4.82 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.88 4.71 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.88 4.71 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.95 5.10 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.72 4.98 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.72 4.98 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.81 5.40 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.55 5.27 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.55 5.27 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.66 6.00 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.37 5.71 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 2.37 5.71 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.56 3.36 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.51 3.30 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.51 3.30 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.46 3.49 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.40 3.43 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.40 3.43 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.31 3.71 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.31 3.71 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.36 3.63 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.28 3.56 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.28 3.56 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.26 3.80 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.26 3.80 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.19 3.88 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.14 3.72 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.14 3.72 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 3.06 4.06 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 2.99 3.88 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.99 3.88 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.91 4.26 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.82 4.07 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.82 4.07 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.75 4.48 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.64 4.27 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.64 4.27 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.57 4.72 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.44 4.49 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.44 4.49 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 2.37 4.99 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.22 4.74 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 2.22 4.74 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 2.16 5.29 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 2.16 5.29 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 2.02 5.44 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.71 5.31 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.71 5.31 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.77 6.00 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.41 5.73 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 1.41 5.73 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 3.41 3.30 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.41 3.30 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.35 3.36 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.35 3.36 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.27 3.42 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.27 3.29 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.27 3.29 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 3.11 3.56 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.10 3.42 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.10 3.42 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.94 3.71 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 2.91 3.55 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.91 3.55 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.75 3.88 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.71 3.70 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.71 3.70 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.55 4.06 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.48 3.87 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.48 3.87 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 2.32 4.26 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.23 4.05 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 2.23 4.05 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 2.07 4.48 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 1.96 4.25 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.96 4.25 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.80 4.72 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.66 4.47 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.66 4.47 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.50 4.99 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.33 4.71 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 1.33 4.71 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 1.17 5.29 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 0.96 4.97 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.96 4.97 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.63 6.00 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.39 5.56 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 0.39 5.56 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.00 5.71 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.39 5.26 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.39 5.26 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 3.13 3.28 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.13 3.28 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.04 3.35 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 3.04 3.35 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.92 3.40 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 2.95 3.26 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.95 3.26 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.70 3.53 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.70 3.37 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.70 3.37 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.45 3.67 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.43 3.49 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.43 3.49 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 2.17 3.82 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.14 3.62 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 2.14 3.62 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.87 3.99 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.81 3.77 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.81 3.77 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.54 4.18 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.45 3.93 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.45 3.93 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 1.00 4.51 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.18 4.39 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.06 4.10 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 1.06 4.10 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.39 4.75 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.39 4.75 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 0.43 4.30 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 0.43 4.30 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 2.77 3.22 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.77 3.22 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.64 3.28 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.64 3.28 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.48 3.32 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.54 3.17 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.54 3.17 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 2.16 3.42 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.20 3.24 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.20 3.24 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.81 3.53 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 1.83 3.32 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.83 3.32 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 1.42 3.65 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.42 3.41 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.42 3.41 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 1.00 3.78 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 0.96 3.51 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.96 3.51 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.00 4.03 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.43 3.93 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.36 3.61 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 0.36 3.61 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 2.33 3.10 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.33 3.10 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.15 3.14 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.15 3.14 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.94 3.14 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.06 3.00 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 2.06 3.00 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 1.50 3.18 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.61 3.00 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.61 3.00 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 1.03 3.23 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.12 3.00 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 1.12 3.00 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 0.00 3.33 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.36 3.28 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.43 3.00 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.43 3.00 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 6.00 2.85 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.85 2.70 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 5.85 2.70 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 2.15 2.86 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.20 2.76 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.20 2.76 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.74 2.82 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.83 2.68 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.83 2.68 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 1.29 2.77 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.42 2.59 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.42 2.59 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.79 2.72 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 0.96 2.49 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 0.96 2.49 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 0.00 2.67 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.36 2.39 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.36 2.39 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 6.00 2.51 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 5.85 2.51 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.85 2.51 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.61 2.85 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.61 2.85 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.89 2.83 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.95 2.74 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 2.95 2.74 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 2.64 2.72 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.64 2.72 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.70 2.63 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.70 2.63 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.48 2.68 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.48 2.68 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 2.34 2.62 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.43 2.51 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.43 2.51 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 2.00 2.51 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.14 2.38 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.14 2.38 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.64 2.40 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.81 2.23 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 1.81 2.23 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 1.23 2.27 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.45 2.07 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.45 2.07 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.79 2.12 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.06 1.90 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 1.06 1.90 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 0.00 1.97 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.43 1.70 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.43 1.70 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.49 2.87 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.63 2.56 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.63 2.56 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.51 2.59 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.51 2.59 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.78 2.37 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.78 2.37 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.21 2.78 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.27 2.71 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.27 2.71 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.04 2.65 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.04 2.65 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 3.10 2.58 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.10 2.58 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 2.92 2.60 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.92 2.60 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.53 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.53 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.91 2.45 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 2.91 2.45 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 2.70 2.47 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.70 2.47 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.59 2.40 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.59 2.40 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.71 2.30 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.71 2.30 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.45 2.33 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.45 2.33 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.33 2.25 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.33 2.25 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 2.48 2.13 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.48 2.13 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.17 2.18 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 2.17 2.18 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.04 2.08 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.04 2.08 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 2.23 1.95 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.23 1.95 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 1.87 2.01 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.87 2.01 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.73 1.90 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.96 1.75 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 1.96 1.75 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.38 1.70 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.66 1.53 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 1.66 1.53 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 1.33 1.29 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.33 1.29 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.81 1.35 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 0.96 1.03 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 0.96 1.03 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 0.00 1.09 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.39 0.74 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.39 0.74 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.00 0.29 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.39 0.44 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 0.39 0.44 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 5.38 2.87 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.38 2.87 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 3.46 2.76 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.46 2.76 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.41 2.70 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.41 2.70 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.35 2.64 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.35 2.64 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.27 2.58 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.27 2.58 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.40 2.57 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.40 2.57 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.20 2.51 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.20 2.51 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.28 2.44 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.28 2.44 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.11 2.44 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 3.11 2.44 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.04 2.36 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.04 2.36 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 3.14 2.28 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.14 2.28 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 2.94 2.29 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.94 2.29 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.86 2.20 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.86 2.20 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.99 2.12 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 2.99 2.12 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 2.75 2.12 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.75 2.12 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.67 2.03 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.67 2.03 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.82 1.93 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 2.82 1.93 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 2.55 1.94 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.55 1.94 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.45 1.83 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.45 1.83 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.64 1.73 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.64 1.73 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.32 1.74 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 2.32 1.74 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.22 1.62 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.22 1.62 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 2.44 1.51 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.44 1.51 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.07 1.52 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 2.07 1.52 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 1.96 1.39 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 1.96 1.39 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 2.22 1.26 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.22 1.26 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 1.80 1.28 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.80 1.28 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.67 1.13 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.67 1.13 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.97 0.99 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 1.97 0.99 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.50 1.01 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 1.50 1.01 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.36 0.85 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.36 0.85 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 1.71 0.69 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.71 0.69 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 1.17 0.71 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 1.17 0.71 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.02 0.44 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.02 0.44 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 1.41 0.27 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 1.41 0.27 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.28 2.90 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.41 2.64 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.41 2.64 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.30 2.66 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.30 2.66 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.56 2.64 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.56 2.64 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.65 2.76 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.69 2.71 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.69 2.71 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.52 2.58 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.52 2.58 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.46 2.51 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.46 2.51 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.62 2.58 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.62 2.58 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.42 2.44 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.42 2.44 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.36 2.37 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.36 2.37 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.54 2.45 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.54 2.45 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.46 2.30 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.46 2.30 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.26 2.20 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.26 2.20 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.36 2.13 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.36 2.13 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.19 2.12 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 3.19 2.12 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.13 2.03 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.13 2.03 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 3.26 1.95 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.26 1.95 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.06 1.94 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 3.06 1.94 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.00 1.84 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.00 1.84 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 3.14 1.75 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.14 1.75 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 2.91 1.74 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.91 1.74 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.84 1.63 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.84 1.63 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 3.02 1.53 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.02 1.53 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 2.75 1.52 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.75 1.52 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.67 1.39 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.67 1.39 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.88 1.29 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 2.88 1.29 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 2.57 1.28 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.57 1.28 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.49 1.14 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.49 1.14 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.72 1.02 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 2.72 1.02 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 2.37 1.01 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.37 1.01 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.02 0.56 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.02 0.56 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 2.28 0.86 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.55 0.73 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.55 0.73 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 1.92 0.27 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 1.92 0.27 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.37 0.29 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.37 0.29 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 5.45 2.47 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.45 2.47 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.18 2.90 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.18 2.90 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.08 2.92 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.74 2.65 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.74 2.65 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.79 2.77 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.83 2.71 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.83 2.71 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.72 2.59 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.79 2.59 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.79 2.59 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.65 2.45 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.75 2.46 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.75 2.46 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.59 2.30 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.70 2.31 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.70 2.31 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.52 2.14 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.52 2.14 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.65 2.15 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.65 2.15 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.47 2.05 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.47 2.05 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.44 1.96 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.44 1.96 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.59 1.97 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.59 1.97 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.38 1.86 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.38 1.86 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.35 1.76 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.35 1.76 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.53 1.77 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.53 1.77 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.29 1.66 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.29 1.66 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.25 1.54 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.25 1.54 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 3.46 1.56 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.46 1.56 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.18 1.43 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 3.18 1.43 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.14 1.31 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.14 1.31 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 3.38 1.32 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.38 1.32 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.07 1.18 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 3.07 1.18 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.03 1.04 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.03 1.04 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 3.29 1.06 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.29 1.06 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 2.95 0.90 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.95 0.90 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 2.90 0.75 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 2.90 0.75 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 3.20 0.77 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.20 0.77 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 2.81 0.60 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.81 0.60 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 2.76 0.29 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 2.76 0.29 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.10 0.31 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.10 0.31 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 5.20 2.70 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.20 2.70 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.10 2.72 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 5.10 2.72 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.89 2.71 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.89 2.71 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.87 2.59 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.93 2.59 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 3.93 2.59 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.84 2.46 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.92 2.46 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 3.92 2.46 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.81 2.31 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.90 2.31 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 3.90 2.31 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.78 2.15 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.89 2.15 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 3.89 2.15 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 3.74 1.97 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.74 1.97 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.71 1.88 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.71 1.88 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.87 1.98 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 3.87 1.98 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 3.70 1.78 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.70 1.78 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.85 1.78 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 3.85 1.78 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 3.66 1.67 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.66 1.67 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.65 1.56 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.65 1.56 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.83 1.57 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 3.83 1.57 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 3.62 1.45 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.62 1.45 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.60 1.33 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.60 1.33 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.80 1.33 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 3.80 1.33 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 3.56 1.20 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.56 1.20 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.55 1.07 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.55 1.07 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.77 1.07 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 3.77 1.07 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 3.50 0.93 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.50 0.93 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.49 0.78 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.49 0.78 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.74 0.79 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 3.74 0.79 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 3.44 0.63 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.44 0.63 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.42 0.31 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.42 0.31 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.71 0.32 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 3.71 0.32 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 5.24 2.56 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.24 2.56 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 4.99 2.92 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 4.99 2.92 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.01 2.71 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.01 2.71 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.01 2.59 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.07 2.59 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.07 2.59 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.01 2.46 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.08 2.46 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.08 2.46 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.01 2.31 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.10 2.31 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.10 2.31 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.01 2.15 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.11 2.15 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.11 2.15 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 4.01 1.98 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.13 1.98 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.13 1.98 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.01 1.78 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 4.01 1.78 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.00 1.68 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 4.00 1.68 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.15 1.78 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.15 1.78 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.01 1.57 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.01 1.57 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 4.17 1.57 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.17 1.57 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.00 1.46 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 4.00 1.46 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.01 1.33 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.01 1.33 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 4.20 1.33 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.20 1.33 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.00 1.21 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 4.00 1.21 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.01 1.07 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.01 1.07 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 4.23 1.07 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.23 1.07 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.00 0.94 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 4.00 0.94 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.02 0.79 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.02 0.79 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 4.26 0.79 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.26 0.79 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.00 0.64 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 4.00 0.64 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.02 0.32 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.02 0.32 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.29 0.32 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.29 0.32 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.90 2.94 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 5.02 2.76 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 5.02 2.76 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 4.93 2.78 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.93 2.78 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 5.06 2.65 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.06 2.65 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.12 2.66 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.17 2.72 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.17 2.72 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.15 2.53 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.21 2.60 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.21 2.60 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.18 2.39 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.25 2.47 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.25 2.47 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.21 2.24 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.29 2.32 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.29 2.32 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.25 2.07 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.35 2.16 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.35 2.16 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.29 1.89 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.40 1.99 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.40 1.99 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.33 1.69 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.33 1.69 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.34 1.57 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.34 1.57 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.47 1.79 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.47 1.79 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.38 1.46 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.38 1.46 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.53 1.58 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.53 1.58 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.39 1.34 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.39 1.34 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.43 1.22 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.43 1.22 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.61 1.35 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.61 1.35 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.45 1.08 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.45 1.08 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.49 0.95 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.49 0.95 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.69 1.09 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.69 1.09 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.50 0.80 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.50 0.80 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.55 0.65 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.55 0.65 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.78 0.81 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.78 0.81 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 4.57 0.33 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.57 0.33 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 4.82 2.94 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.82 2.94 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.25 2.67 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.28 2.73 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.28 2.73 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.30 2.54 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.35 2.61 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.35 2.61 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.36 2.41 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.42 2.49 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.42 2.49 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.43 2.26 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.50 2.35 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.50 2.35 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.50 2.10 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.59 2.20 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.59 2.20 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.58 1.92 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.69 2.03 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.69 2.03 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.67 1.72 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.79 1.85 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 4.79 1.85 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.77 1.50 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.77 1.50 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.81 1.38 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.81 1.38 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.91 1.64 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 4.91 1.64 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.88 1.27 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.88 1.27 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.92 1.13 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.92 1.13 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.04 1.42 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.04 1.42 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.00 1.00 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.00 1.00 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 5.18 1.17 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.18 1.17 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.04 0.86 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 5.04 0.86 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.34 0.90 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.34 0.90 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.21 0.56 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.21 0.56 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 5.51 0.61 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.51 0.61 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.27 0.23 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.27 0.23 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.74 2.95 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.85 2.82 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.85 2.82 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.77 2.83 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.77 2.83 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.89 2.72 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.89 2.72 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.38 2.69 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.40 2.75 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.40 2.75 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.46 2.57 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.49 2.65 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.49 2.65 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.55 2.45 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.60 2.54 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.60 2.54 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.66 2.31 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.71 2.41 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.71 2.41 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.77 2.16 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.83 2.27 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.83 2.27 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.89 1.99 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.97 2.12 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 4.97 2.12 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.02 1.81 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.12 1.95 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.12 1.95 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.17 1.60 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.17 1.60 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.24 1.49 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.24 1.49 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.29 1.77 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.29 1.77 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.41 1.25 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.41 1.25 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.49 1.11 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.49 1.11 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.33 1.38 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.47 1.57 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.47 1.57 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.80 0.84 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 5.80 0.84 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.71 1.00 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.78 1.34 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 5.78 1.34 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 4.66 2.95 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.66 2.95 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.50 2.73 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.51 2.79 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.51 2.79 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.62 2.63 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.63 2.71 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.63 2.71 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.74 2.52 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.76 2.61 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.76 2.61 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 4.87 2.40 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.90 2.51 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.90 2.51 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.02 2.27 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 5.06 2.39 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.06 2.39 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.18 2.12 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.23 2.27 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.23 2.27 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.36 1.96 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.36 1.96 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.45 1.86 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.45 1.86 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.42 2.13 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.42 2.13 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.56 1.78 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.56 1.78 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.65 1.68 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.65 1.68 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 5.63 1.98 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 5.63 1.98 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 5.78 1.68 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 5.78 1.68 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.87 1.90 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 5.87 1.90 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.70 2.87 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.70 2.87 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.62 2.88 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.62 2.88 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.61 2.79 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.60 2.85 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.82 2.66 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.82 2.66 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.75 2.71 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.97 2.57 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.97 2.57 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.47 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.47 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.33 2.36 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.33 2.36 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.54 2.24 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.54 2.24 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 6.00 2.11 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 5.87 2.11 moveto
+ 5.76 2.19 lineto
+closepath stroke
+showpage
diff --git a/DOC/msh9.pdf b/DOC/msh9.pdf
new file mode 100644
index 0000000..3500508
--- /dev/null
+++ b/DOC/msh9.pdf
Binary files differ
diff --git a/DOC/msh9.ps b/DOC/msh9.ps
new file mode 100644
index 0000000..df375bb
--- /dev/null
+++ b/DOC/msh9.ps
@@ -0,0 +1,9353 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: PSPLTM routine
+%%BoundingBox: 80 0 530 230
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 4.54545E-02 cm scalefont setfont
+ 10.7950 cm 0.272727 cm moveto
+( ) Cshow
+ 3.17500 cm 0.181818 cm translate
+ 15.2400 cm 11.0000 div dup scale
+ 0.01 setlinewidth
+ 0.00 0.00 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 10.06 4.93 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.29 2.83 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.51 2.86 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.75 2.88 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.01 2.91 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.30 2.94 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.62 2.97 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.97 3.01 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.36 3.05 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.78 3.09 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.25 3.14 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.76 3.20 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.29 2.83 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.51 2.86 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.75 2.88 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 3.01 2.91 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.30 2.94 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.62 2.97 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.97 3.01 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.36 3.05 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.78 3.09 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.25 3.14 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.76 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 10.06 4.93 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.97 2.01 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.46 1.91 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 4.97 2.01 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.99 1.80 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.46 1.91 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.58 1.67 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 5.99 1.80 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.58 1.67 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.19 2.83 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.19 2.83 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.40 2.86 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.39 2.94 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.39 2.94 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.63 2.88 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.62 2.99 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.62 2.99 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.88 2.91 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.86 3.04 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.86 3.04 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.15 2.94 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.14 3.10 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 3.14 3.10 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.46 2.97 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.44 3.16 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.44 3.16 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.79 3.01 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.77 3.23 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.77 3.23 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.16 3.05 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 4.13 3.31 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 4.13 3.31 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.57 3.09 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.53 3.39 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.53 3.39 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.01 3.14 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.97 3.49 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 4.97 3.49 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.09 2.75 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 6.09 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.50 3.20 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.50 3.20 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.55 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.55 2.75 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.46 3.59 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 5.46 3.59 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.69 2.75 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.69 2.75 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 5.99 3.70 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 5.99 3.70 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.94 3.32 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 6.94 3.32 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 7.35 2.75 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 7.35 2.75 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.22 3.97 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 7.22 3.97 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 8.07 2.75 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.07 2.75 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 7.93 4.12 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.93 4.12 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 8.87 2.75 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 8.87 2.75 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 8.71 4.28 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 8.71 4.28 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 11.00 5.03 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 10.06 4.47 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 10.14 3.66 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 10.14 3.66 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 11.00 3.66 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 10.14 2.75 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 10.14 2.75 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.26 3.00 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.14 3.03 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.14 3.03 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.46 3.06 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.33 3.12 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.33 3.12 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 2.69 3.14 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.54 3.21 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.54 3.21 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 2.95 3.22 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.77 3.32 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.77 3.32 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.22 3.31 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.03 3.43 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 3.03 3.43 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 3.53 3.41 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.31 3.56 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.31 3.56 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 3.86 3.52 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.62 3.69 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.62 3.69 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.23 3.64 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 3.96 3.85 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 3.96 3.85 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 4.64 3.77 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.33 4.01 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.33 4.01 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.08 3.91 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.74 4.19 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 4.74 4.19 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 5.57 4.07 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.20 4.40 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 5.20 4.40 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 6.11 4.25 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.69 4.62 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 5.69 4.62 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 6.71 4.44 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.24 4.86 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 6.24 4.86 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 9.08 5.50 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 8.14 4.93 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 7.73 4.85 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.36 4.77 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 6.84 5.24 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 6.84 5.24 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 11.00 1.84 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 10.14 1.84 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 10.14 1.84 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.10 3.11 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 2.10 3.11 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.28 3.21 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.24 3.28 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.24 3.28 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.48 3.33 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.42 3.42 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.42 3.42 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 2.69 3.46 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.63 3.57 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.63 3.57 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 2.93 3.60 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.85 3.73 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.85 3.73 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.35 3.82 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.20 3.75 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.10 3.92 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.10 3.92 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.65 3.99 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.65 3.99 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 3.81 4.11 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.68 4.33 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.68 4.33 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.16 4.31 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 4.01 4.57 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 4.01 4.57 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 4.76 4.63 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.76 4.63 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 4.55 4.54 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.37 4.84 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.37 4.84 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 5.00 4.74 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 5.00 4.74 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.76 5.24 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 5.76 5.24 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 5.47 5.12 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.21 5.00 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.77 5.24 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.77 5.24 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.01 3.22 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 2.01 3.22 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.16 3.36 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.11 3.43 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 2.11 3.43 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.33 3.52 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.26 3.60 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.26 3.60 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.52 3.69 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.43 3.79 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.43 3.79 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.73 3.88 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.62 3.99 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.62 3.99 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.08 4.18 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.95 4.08 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.83 4.22 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.83 4.22 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.35 4.41 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.05 4.47 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.05 4.47 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 3.63 4.67 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.30 4.75 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 3.30 4.75 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 4.14 5.24 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 4.14 5.24 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 3.95 5.10 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.58 5.20 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.58 5.20 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 1.97 3.39 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.97 3.39 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 1.90 3.32 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.90 3.32 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 2.04 3.48 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 2.04 3.48 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 2.10 3.57 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.10 3.57 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.24 3.77 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.16 3.68 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.07 3.74 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 2.07 3.74 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.39 3.98 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.20 3.96 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 2.20 3.96 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.56 4.22 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.34 4.20 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.34 4.20 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.75 4.47 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.75 4.47 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.96 4.76 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 2.84 4.63 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.66 4.76 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.66 4.76 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 3.19 5.20 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 3.19 5.20 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 2.85 5.21 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.85 5.21 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 9.20 1.94 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 11.00 0.47 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 10.06 0.57 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 10.06 0.57 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 8.79 1.94 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 8.79 1.94 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 1.82 3.48 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.82 3.48 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.77 3.39 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.77 3.39 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.88 3.57 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.88 3.57 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 1.91 3.68 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.78 3.62 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.78 3.62 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 2.01 3.90 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.85 3.84 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.85 3.84 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 2.12 4.14 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.12 4.14 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.16 4.28 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.02 4.34 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 2.02 4.34 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.29 4.56 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.11 4.64 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.11 4.64 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.51 5.02 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.42 4.87 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.22 4.96 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 2.22 4.96 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.61 5.50 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.31 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 2.27 5.31 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.67 3.53 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.57 3.45 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.57 3.45 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.71 3.74 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.60 3.66 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.60 3.66 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.76 3.98 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.76 3.98 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.77 4.11 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.65 4.14 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.65 4.14 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.83 4.38 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.68 4.42 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.68 4.42 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.94 4.83 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.89 4.68 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.71 4.72 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.71 4.72 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 2.02 5.50 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 2.02 5.31 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.74 5.19 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.74 5.19 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 8.38 2.03 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.49 3.45 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.49 3.45 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.49 3.66 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.40 3.66 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.40 3.66 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.49 3.88 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.38 3.88 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.38 3.88 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.50 4.27 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.49 4.14 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.35 4.14 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.35 4.14 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.50 4.56 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.32 4.42 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.32 4.42 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.50 4.88 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.29 4.72 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 1.29 4.72 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.50 5.50 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.26 5.19 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 1.26 5.19 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.33 3.53 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.28 3.42 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.28 3.42 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.29 3.74 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.22 3.62 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 1.22 3.62 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.24 3.98 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.15 3.84 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 1.15 3.84 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 1.18 4.24 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.07 4.08 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 1.07 4.08 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 1.12 4.52 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 1.12 4.52 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.07 4.67 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.89 4.64 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.89 4.64 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 1.00 5.00 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.78 4.96 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.78 4.96 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.98 5.50 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.31 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 0.73 5.31 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.36 5.50 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.36 5.31 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.36 5.31 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 8.14 0.57 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.21 3.38 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.21 3.38 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.12 3.57 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.04 3.54 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 1.04 3.54 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 1.03 3.78 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.93 3.74 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.93 3.74 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.92 4.01 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.80 3.96 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.80 3.96 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.76 4.40 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.81 4.27 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.66 4.20 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.66 4.20 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.63 4.70 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.51 4.47 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.51 4.47 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.49 5.02 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.49 5.02 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.34 4.76 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.34 4.76 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.13 5.21 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.13 5.21 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.13 4.91 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.13 4.91 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.21 4.76 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.21 4.76 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 1.03 3.39 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.03 3.27 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 1.03 3.27 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.90 3.57 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.90 3.57 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.82 3.66 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.74 3.60 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.74 3.60 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.67 3.86 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.57 3.79 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.57 3.79 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.44 4.22 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.51 4.09 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.38 3.99 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.38 3.99 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.21 4.47 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.21 4.47 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 0.14 4.22 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.14 4.22 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 8.00 2.03 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 8.00 2.03 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.98 3.21 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 0.98 3.21 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.82 3.35 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.76 3.28 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.76 3.28 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.57 3.59 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.65 3.50 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.58 3.42 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.58 3.42 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.37 3.77 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.37 3.57 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.37 3.57 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.14 3.88 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.14 3.88 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 0.13 3.65 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.13 3.65 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 7.93 1.38 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.93 1.38 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.63 2.11 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 7.63 2.11 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.81 3.15 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.86 3.03 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.86 3.03 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.62 3.26 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.67 3.12 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.67 3.12 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.41 3.38 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.46 3.21 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.46 3.21 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.13 3.51 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.13 3.51 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.17 3.32 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.17 3.32 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.74 3.00 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.74 3.00 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.83 2.96 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.83 2.96 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.64 3.04 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.64 3.04 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.54 3.06 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.54 3.06 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.31 3.14 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.42 3.09 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.38 2.99 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.38 2.99 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.00 3.19 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.13 3.01 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.13 3.01 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.71 2.83 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.80 2.75 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.80 2.75 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.49 2.86 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.59 2.75 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.59 2.75 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.13 2.88 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.13 2.88 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.24 2.75 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.24 2.75 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 7.36 0.73 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 7.36 0.73 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 7.29 2.18 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.04 0.99 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 7.04 0.99 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 6.71 1.06 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.71 1.06 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.71 2.67 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.82 2.60 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.82 2.60 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.49 2.64 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.49 2.64 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.37 2.62 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.38 2.51 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.38 2.51 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.00 2.62 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.13 2.49 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.13 2.49 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.74 2.50 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.74 2.50 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.64 2.46 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.67 2.38 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.67 2.38 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.42 2.39 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.46 2.29 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.46 2.29 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.00 2.31 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.13 2.31 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.17 2.18 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.17 2.18 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.81 2.35 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.93 2.34 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 0.93 2.34 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.62 2.24 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.76 2.22 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.76 2.22 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.41 2.12 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.41 2.12 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.31 2.04 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.37 1.93 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.37 1.93 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.00 1.99 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.13 1.85 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.13 1.85 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 6.84 0.26 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 6.84 0.26 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.42 1.19 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.42 1.19 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.11 1.25 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 6.11 1.25 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 6.24 0.64 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.24 0.64 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 0.91 2.22 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.91 2.22 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 1.06 2.35 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 1.03 2.23 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 1.03 2.23 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.84 2.14 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.89 2.07 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 0.89 2.07 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.67 1.98 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.74 1.90 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.74 1.90 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.48 1.81 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.57 1.71 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.57 1.71 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.27 1.62 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.38 1.51 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.38 1.51 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.00 1.50 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.14 1.28 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.14 1.28 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 6.94 2.18 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.64 2.24 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 1.15 2.27 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 1.08 2.19 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.08 2.19 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 1.03 2.11 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 1.03 2.11 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 0.96 2.02 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.96 2.02 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 1.15 2.14 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.15 2.14 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 0.90 1.93 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.90 1.93 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.82 1.84 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.82 1.84 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 1.05 1.96 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.05 1.96 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.76 1.73 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.93 1.76 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 0.93 1.76 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.61 1.52 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.80 1.54 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 0.80 1.54 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.44 1.28 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.44 1.28 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.35 1.15 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.51 1.03 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.51 1.03 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.00 0.87 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.21 0.74 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.21 0.74 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.34 0.74 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.34 0.74 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.00 0.29 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.13 0.29 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.13 0.29 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 1.26 2.20 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.21 2.12 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.21 2.12 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.18 2.02 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 1.18 2.02 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.12 1.93 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.12 1.93 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 1.28 2.08 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.28 2.08 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.09 1.82 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 1.09 1.82 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.03 1.72 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.03 1.72 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 1.22 1.88 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.22 1.88 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 0.99 1.60 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.99 1.60 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 0.92 1.49 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 0.92 1.49 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 1.15 1.66 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.15 1.66 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 0.88 1.36 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.88 1.36 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 0.81 1.23 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.81 1.23 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 1.07 1.42 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.07 1.42 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 0.76 1.10 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.76 1.10 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.68 0.96 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.68 0.96 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.98 1.16 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 0.98 1.16 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 0.63 0.80 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.63 0.80 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.54 0.65 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.54 0.65 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.89 0.86 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 0.89 0.86 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.49 0.48 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.49 0.48 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.78 0.54 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.78 0.54 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 0.36 0.19 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.36 0.19 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 5.85 1.37 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.85 1.37 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.57 1.43 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.57 1.43 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.33 1.97 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.33 1.97 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.38 2.17 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.43 2.05 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.43 2.05 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.32 1.86 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.32 1.86 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.29 1.76 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.29 1.76 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.40 1.84 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.40 1.84 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.28 1.64 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.28 1.64 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.24 1.52 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.24 1.52 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.38 1.62 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.38 1.62 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.23 1.39 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.23 1.39 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.18 1.26 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.18 1.26 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 1.35 1.36 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.35 1.36 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.17 1.12 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 1.17 1.12 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.12 0.98 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.12 0.98 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.32 1.08 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.32 1.08 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.06 0.67 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 1.06 0.67 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.00 0.50 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.00 0.50 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 1.11 0.82 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.29 0.78 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.29 0.78 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 0.98 0.00 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 0.98 0.19 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.26 0.31 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.26 0.31 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.50 2.15 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.49 2.05 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.49 2.05 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.50 1.95 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.50 1.95 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.49 1.84 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.49 1.84 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.57 2.05 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.57 2.05 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.50 1.74 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.50 1.74 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.49 1.62 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.49 1.62 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.60 1.84 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.60 1.84 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.50 1.49 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.50 1.49 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.49 1.36 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.49 1.36 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.62 1.62 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.62 1.62 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.50 1.23 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.50 1.23 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.48 1.08 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.48 1.08 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.65 1.36 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.65 1.36 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.50 0.94 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.50 0.94 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.52 0.78 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.52 0.78 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.50 0.62 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.71 0.78 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.71 0.78 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.48 0.31 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.48 0.31 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 1.62 2.17 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.63 2.07 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.63 2.07 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.67 1.97 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.67 1.97 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.68 1.86 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.68 1.86 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.72 2.08 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.72 2.08 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.71 1.76 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.71 1.76 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.72 1.64 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.72 1.64 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.78 1.88 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.78 1.88 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.76 1.52 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.76 1.52 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.77 1.39 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.77 1.39 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.85 1.66 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.85 1.66 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.82 1.26 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.82 1.26 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.83 1.12 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.83 1.12 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.93 1.42 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 1.93 1.42 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 1.88 0.98 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.88 0.98 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.89 0.82 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 1.89 0.82 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.02 1.16 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.02 1.16 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 1.94 0.67 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 1.94 0.67 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 2.00 0.50 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 2.00 0.50 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.02 0.19 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.02 0.19 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.22 0.54 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.22 0.54 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 5.69 0.88 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 5.69 0.88 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.32 2.24 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.82 2.02 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.82 2.02 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.74 2.20 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.85 2.14 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 1.85 2.14 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.88 1.93 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.88 1.93 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.91 1.82 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 1.91 1.82 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.96 1.96 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.96 1.96 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 1.97 1.72 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.97 1.72 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.01 1.60 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.01 1.60 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 2.07 1.76 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.07 1.76 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.08 1.49 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 2.08 1.49 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.12 1.36 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.12 1.36 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.20 1.54 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.20 1.54 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.19 1.23 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.19 1.23 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.24 1.10 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.24 1.10 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.34 1.30 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.34 1.30 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.32 0.96 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.32 0.96 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.37 0.80 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.37 0.80 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.49 1.03 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.49 1.03 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.46 0.65 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.46 0.65 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.51 0.48 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.51 0.48 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.66 0.74 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.66 0.74 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.61 0.19 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 2.61 0.19 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.85 0.29 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 2.85 0.29 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 6.04 2.30 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.34 1.53 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.34 1.53 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.08 1.59 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.08 1.59 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 5.20 1.10 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.20 1.10 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 5.76 2.30 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.50 2.30 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.97 2.11 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 1.85 2.27 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.97 2.23 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 1.97 2.23 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.02 2.01 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.02 2.01 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.10 1.93 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.10 1.93 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.16 1.82 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.16 1.82 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.11 2.07 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.11 2.07 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.24 1.73 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.24 1.73 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.30 1.62 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.30 1.62 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.26 1.90 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.26 1.90 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.39 1.52 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.39 1.52 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.47 1.39 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.47 1.39 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.43 1.71 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.43 1.71 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.56 1.28 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.56 1.28 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.65 1.15 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.65 1.15 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.62 1.51 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.62 1.51 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.75 1.03 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.75 1.03 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.84 0.87 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 2.84 0.87 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 2.83 1.28 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.83 1.28 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 2.96 0.74 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 2.96 0.74 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 3.09 0.60 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 3.09 0.60 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.19 0.30 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.19 0.30 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.30 0.75 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.30 0.75 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 1.94 2.35 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.01 2.28 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.01 2.28 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.09 2.22 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.09 2.22 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.16 2.14 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.16 2.14 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.07 2.34 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.07 2.34 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.25 2.07 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.25 2.07 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.43 1.91 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.43 1.91 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.52 1.81 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.52 1.81 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.35 2.00 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.42 2.08 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.42 2.08 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.63 1.73 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.63 1.73 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.73 1.62 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.73 1.62 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.63 1.93 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.63 1.93 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.85 1.54 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.85 1.54 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 2.85 1.77 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.85 1.77 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 3.08 1.32 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.08 1.32 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 3.20 1.19 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.20 1.19 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.10 1.58 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.10 1.58 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.35 1.09 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.35 1.09 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.48 0.94 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.48 0.94 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.38 1.39 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.38 1.39 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.63 0.83 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 3.63 0.83 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 3.81 0.70 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 4.01 0.93 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.01 0.93 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.14 0.26 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.14 0.26 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.25 2.36 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.87 1.68 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.87 1.68 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.64 1.73 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.64 1.73 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 2.02 2.45 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.10 2.39 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.10 2.39 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.19 2.35 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.19 2.35 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.28 2.29 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.28 2.29 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.14 2.47 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.14 2.47 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.38 2.24 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.38 2.24 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.48 2.17 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.48 2.17 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.33 2.38 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.33 2.38 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.59 2.12 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.59 2.12 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.71 2.07 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.71 2.07 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.82 1.99 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 2.82 1.99 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.77 2.18 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.77 2.18 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 2.95 1.93 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 2.95 1.93 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 3.07 1.84 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.07 1.84 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.03 2.07 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 3.03 2.07 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 3.22 1.78 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.22 1.78 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.35 1.68 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.35 1.68 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.31 1.94 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.31 1.94 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.51 1.61 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.51 1.61 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.65 1.51 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.65 1.51 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.62 1.81 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.62 1.81 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.83 1.43 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.83 1.43 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.99 1.31 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 3.99 1.31 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 3.96 1.65 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 3.96 1.65 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.18 1.23 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.18 1.23 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.36 1.10 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.36 1.10 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.33 1.49 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.76 0.87 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.76 0.87 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 4.57 1.01 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.21 0.50 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.21 0.50 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 5.47 0.38 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 5.76 0.26 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.07 2.57 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.16 2.52 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.16 2.52 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.26 2.50 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.26 2.50 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.36 2.46 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.36 2.46 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.29 2.67 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.29 2.67 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.09 2.69 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.46 2.44 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.46 2.44 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.58 2.39 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.58 2.39 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.40 2.64 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.40 2.64 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.51 2.64 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.51 2.64 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.63 2.62 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.63 2.62 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.75 2.62 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.75 2.62 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.62 2.51 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.69 2.36 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.69 2.36 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.95 2.28 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 2.95 2.28 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 3.08 2.22 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.08 2.22 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 2.88 2.59 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.88 2.59 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 3.01 2.59 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.01 2.59 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 2.86 2.46 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 3.22 2.19 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.22 2.19 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.37 2.12 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.37 2.12 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.15 2.56 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.15 2.56 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.30 2.56 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.30 2.56 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.46 2.53 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.46 2.53 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.62 2.53 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.62 2.53 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.44 2.34 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.53 2.09 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.53 2.09 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.79 2.49 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.79 2.49 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.97 2.49 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 3.97 2.49 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 3.77 2.27 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.70 2.05 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.86 1.98 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 3.86 1.98 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.16 2.45 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.16 2.45 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.36 2.45 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.36 2.45 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.13 2.19 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.05 1.94 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.23 1.86 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.23 1.86 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.57 2.41 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.57 2.41 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.78 2.41 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.53 2.11 moveto
+ 4.44 1.82 lineto
+closepath stroke
+showpage
diff --git a/DOC/paper.pdf b/DOC/paper.pdf
new file mode 100644
index 0000000..787c0cc
--- /dev/null
+++ b/DOC/paper.pdf
Binary files differ
diff --git a/DOC/paper.ps b/DOC/paper.ps
new file mode 100644
index 0000000..422ad97
--- /dev/null
+++ b/DOC/paper.ps
@@ -0,0 +1,46661 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.495 Copyright 1986, 1992 Radical Eye Software
+%%Pages: 36
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSCommandLine: dvips
+%DVIPSSource: TeX output 1994.06.05:2110
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255
+{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76
+div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N
+/ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{
+pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4
+getinterval(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{
+gsave transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N
+/tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
+B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B
+/w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{
+p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save
+N}B /eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 () @start /Fa
+70 123 df<1800C03C01E07E01E07E03E0E703C0E703C0E707C0E70780E70F80E70F00E70F007E
+1F007E1E003C1E00183E00003C00007C0000780000780000F80000F00000F00001F00001E00003
+E00003C00003C0C007C3F00783F00787380F87380F07381F07381E07381E07383E07383C03F03C
+03F01800C015277EA21A>37 D<0038007800F001E003C007800F000E001C001C00380038007000
+70007000E000E000E000E000E000E000E000E000E000E000700070007000380038001C001C000E
+000F00078003C001E000F8007800380D2878A21A>40 D<6000F00078003C001E000F0007800380
+01C001C000E000E000700070007000380038003800380038003800380038003800380070007000
+7000E000E001C001C0038007800F001E003C007800F00060000D287CA21A>I<00E00000E00000
+E00000E00040E040F0E1E0F8E3E07EEFC01FFF0007FC0003F80007FC001FFF007EEFC0F8E3E0F0
+E1E040E04000E00000E00000E00000E00013157D991A>I<003000007800007800007800007800
+0078000078000078000078007FFFF0FFFFF8FFFFF87FFFF0007800007800007800007800007800
+00780000780000780000300015167E991A>I<183E7E7F3F1F070E0E1CFCF8E0080D77851A>I<7F
+FFC0FFFFE0FFFFE07FFFC013047D901A>I<3078FCFC7830060676851A>I<0000C00001E00001E0
+0003E00003C00007C0000780000F80000F00000F00001F00001E00003E00003C00007C00007800
+00780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00001F0000
+1E00001E00003E00003C00007C0000780000F80000F00000F0000060000013277DA21A>I<01F0
+0007FC000FFE001F1F001C07003803803803807001C07001C07001C0E000E0E000E0E000E0E000
+E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803803C07801C07001F1F
+000FFE0007FC0001F000131E7D9D1A>I<00C001C001C003C007C00FC07FC0FDC071C001C001C0
+01C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C07FFF7FFF7FFF10
+1E7B9D1A>I<03F0000FFC001FFF003C0F807803C07001C0E000E0F000E0F000E06000E00000E0
+0000E00001C00001C0000380000780000F00000E00003C00007C0000F00001E00003C000078000
+0F00001E00E03C00E07FFFE0FFFFE07FFFE0131E7D9D1A>I<01FC0007FF001FFF801E03C03C01
+C03C00E03C00E00000E00000E00001C00003C000078001FF0001FF0001FFC00003E00000F00000
+70000078000038000038600038F00038F00078E000707000F07E03E03FFFC00FFF0001FC00151E
+7E9D1A>I<000F80001F80003B80003B8000738000F38000E38001C38003C3800383800783800F
+03800E03801E03803C0380380380780380F00380FFFFFEFFFFFEFFFFFE00038000038000038000
+0380000380000380003FF8007FFC003FF8171E7F9D1A>I<3FFFC07FFFC07FFFC0700000700000
+70000070000070000070000070000070000071F8007FFE007FFF007E07807803C03001C00001C0
+0000E00000E00000E06000E0F000E0F001C0E001C07003807C0F803FFF000FFC0003F000131E7D
+9D1A>I<007E0001FF8003FFC00781E00F01E01E01E03C00C0380000700000700000700000E1F8
+00E7FE00FFFF00FE0780F803C0F001C0F000E0F000E0E000E0F000E07000E07000E07001C03801
+C03C03801E0F800FFF0007FC0001F000131E7D9D1A>I<E00000FFFFF8FFFFF8FFFFF0E000E0E0
+01C00003C0000780000F00000E00001C00001C0000380000380000700000700000E00000E00000
+E00001C00001C00001C00001C00003800003800003800003800003800003800003800003800015
+1F7E9E1A>I<01FC0007FF001FFFC01F07C03C01E07800F07000707000707000707800F03800E0
+1E03C00FFF8003FE0007FF001F8FC03C01E07800F0700070E00038E00038E00038E00038F00078
+7000707800F03E03E01FFFC007FF0001FC00151E7E9D1A>I<01F00007FC001FFE003E0F003807
+807003807001C0E001C0E001C0E001E0E000E0E000E0E001E07001E07803E03C0FE01FFFE00FFC
+E003F0E00001C00001C00001C0000380600380F00700F00F00F03E007FFC003FF0000FC000131E
+7D9D1A>I<3078FCFC78300000000000000000003078FCFC7830061576941A>I<0000C00003E000
+07E0000FC0003F80007E0000FC0003F80007E0000FC0003F80007E0000FC0000FC00007E00003F
+80000FC00007E00003F80000FC00007E00003F80000FC00007E00003E00000C0131A7D9B1A>60
+D<7FFFF0FFFFF8FFFFF87FFFF00000000000000000000000007FFFF0FFFFF8FFFFF87FFFF0150C
+7E941A>I<600000F80000FC00007E00003F80000FC00007E00003F80000FC00007E00003F8000
+0FC00007E00007E0000FC0003F80007E0000FC0003F80007E0000FC0003F80007E0000FC0000F8
+0000600000131A7D9B1A>I<003800007C00007C00006C0000EE0000EE0000EE0000C60000C600
+01C70001C70001C70001C7000383800383800383800383800701C00701C007FFC007FFC00FFFE0
+0E00E00E00E00E00E00E00E01C00707F01FCFF83FE7F01FC171E7F9D1A>65
+D<FFFE00FFFF80FFFFC01C03E01C00E01C00F01C00701C00701C00701C00701C00E01C01E01C07
+C01FFF801FFF801FFFC01C01E01C00F01C00701C00381C00381C00381C00381C00381C00781C00
+F01C01F0FFFFE0FFFFC0FFFF00151E7E9D1A>I<007C3801FF3807FFF80F83F81E00F81C007838
+0078380038700038700038700000E00000E00000E00000E00000E00000E00000E00000E0000070
+00007000387000383800383800381C00701E00F00F83E007FFC001FF80007C00151E7E9D1A>I<
+7FFE00FFFF007FFF801C07C01C01E01C00F01C00701C00781C00381C00381C003C1C001C1C001C
+1C001C1C001C1C001C1C001C1C001C1C001C1C003C1C00381C00381C00781C00701C00F01C01E0
+1C07C07FFFC0FFFF007FFE00161E7F9D1A>I<FFFFF8FFFFF8FFFFF81C00381C00381C00381C00
+381C00001C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00
+001C00001C00001C001C1C001C1C001C1C001C1C001CFFFFFCFFFFFCFFFFFC161E7E9D1A>I<7F
+FFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E00000E00000E00000E03800E03800E03800F
+FF800FFF800FFF800E03800E03800E03800E00000E00000E00000E00000E00000E00000E00000E
+00007FE000FFE0007FE000161E7F9D1A>I<FF83FEFF83FEFF83FE1C00701C00701C00701C0070
+1C00701C00701C00701C00701C00701C00701FFFF01FFFF01FFFF01C00701C00701C00701C0070
+1C00701C00701C00701C00701C00701C00701C0070FF83FEFF83FEFF83FE171E7F9D1A>72
+D<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C000FFFF80FFFF80FFFF80111E7C9D1A>I<01FFC003FFC001FFC0000E00000E00000E0000
+0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
+0E00000E00000E00000E00600E00F00E00F01E00F03C007FF8003FF0000FC000121E7C9D1A>I<
+7F03F8FF87FC7F03F81C01E01C03C01C03801C07001C0F001C1E001C1C001C38001C78001CF000
+1CF8001DF8001FDC001F9C001F0E001E0F001E07001C07801C03801C01C01C01C01C00E01C00E0
+1C00707F00FCFF81FE7F00FC171E7F9D1A>I<7FE000FFF0007FE0000E00000E00000E00000E00
+000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
+000E00000E00000E001C0E001C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC161E7F9D1A>I<7E
+003F00FF007F807F007F001D80DC001D80DC001D80DC001DC1DC001DC1DC001CC19C001CC19C00
+1CE39C001CE39C001C631C001C771C001C771C001C361C001C361C001C3E1C001C1C1C001C1C1C
+001C001C001C001C001C001C001C001C001C001C001C001C001C001C007F007F00FF80FF807F00
+7F00191E809D1A>I<FE03FEFF03FEFF03FE1D80701D80701DC0701CC0701CC0701CE0701CE070
+1C60701C70701C70701C30701C38701C38701C18701C1C701C1C701C0C701C0E701C0E701C0670
+1C06701C07701C03701C0370FF81F0FF81F0FF80F0171E7F9D1A>I<0FFE003FFF807FFFC07C07
+C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000
+E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF800FFE
+00131E7D9D1A>I<FFFE00FFFF80FFFFC01C03E01C00F01C00701C00781C00381C00381C00381C
+00381C00781C00701C00F01C03E01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C
+00001C00001C00001C0000FF8000FF8000FF8000151E7E9D1A>I<FFFC00FFFF00FFFF801C07C0
+1C01E01C00F01C00701C00701C00701C00701C00F01C01E01C07C01FFF801FFF001FFF801C07C0
+1C01C01C00E01C00E01C00E01C00E01C00E01C00E21C00E71C00E71C00E7FF807EFF807EFF8038
+181E7F9D1A>82 D<03F1C00FFDC03FFFC07C0FC07003C0E003C0E001C0E001C0E001C0E0000070
+00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E0
+00E0E001C0F001C0FC0780FFFF80EFFE00E3F800131E7D9D1A>I<7FFFFEFFFFFEFFFFFEE0380E
+E0380EE0380EE0380E003800003800003800003800003800003800003800003800003800003800
+00380000380000380000380000380000380000380000380000380000380003FF8003FF8003FF80
+171E7F9D1A>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C00
+701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00700E00
+E00E00E00701C00783C003FF8001FF00007C00171E7F9D1A>I<FE00FEFF01FEFE00FE70001C78
+003C380038380038380038380038380038380038380038387C381C7C701CEE701CEE701CEE701C
+EE701CEE701CC6701CC6700DC7600DC7600DC7600D83600D83600D83600F83E00F83E00701C017
+1E7F9D1A>87 D<7F87F87F87F87F87F80F01C007038007838003870003C70001CE0001EE0000FC
+0000FC00007800007800007800007C00007C0000FE0000EE0001CF0001C7000387800383800703
+C00701C00E00E00E00E07F01FCFF83FE7F01FC171E7F9D1A>I<FF01FEFF01FEFF01FE1C00700E
+00E00E00E00701C00701C00783C003838003C78001C70001C70000EE0000EE00007C00007C0000
+380000380000380000380000380000380000380000380000380000380001FF0001FF0001FF0017
+1E7F9D1A>I<1FF0003FFC007FFE00780F00300700000380000380007F8007FF801FFF803F8380
+780380700380E00380E00380E00380700780780F803FFFFC1FFDFC07F0FC16157D941A>97
+D<FE0000FE0000FE00000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FC1
+F00F80700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80
+F00FC1E00FFFC00EFF80063E00161E7F9D1A>I<00FF8003FFC00FFFE01F01E03C00C078000070
+0000700000E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003
+FFC000FE0014157D941A>I<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C0
+01F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0
+E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<01F80007FF000FFF
+801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000007800
+703C00701F01F00FFFE003FFC000FE0014157D941A>I<0007E0001FF0003FF800787800F03000
+E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000E00000E00000E00000
+E00000E00000E00000E00000E00000E00000E00000E00000E0003FFF807FFFC03FFF80151E7F9D
+1A>I<01F87C07FFFE0FFFFE1E078C1C03803801C03801C03801C03801C03801C01C03801E0780
+1FFF001FFE0039F8003800003800001C00001FFF801FFFE03FFFF878007C70001CE0000EE0000E
+E0000EE0000E70001C78003C3E00F81FFFF007FFC001FF0017217F941A>I<FE0000FE0000FE00
+000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00
+E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7
+FEFFE3FE171E7F9D1A>I<00C00001E00001E00000C00000000000000000000000000000000000
+00007FE0007FE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
+E00000E00000E00000E00000E00000E0007FFF80FFFFC07FFF80121F7C9E1A>I<000C001E001E
+000C0000000000000000000000000FFE0FFE0FFE000E000E000E000E000E000E000E000E000E00
+0E000E000E000E000E000E000E000E000E000E000E000E000E000E001C601CF038FFF87FF01FC0
+0F2A7E9E1A>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E00000E0FFC0E1F
+FE0E0FFC0E03C00E07800E0F000E1E000E3C000E78000EFC000FFC000FDE000F8F000E07800E03
+800E01C00E01E00E00F0FFE3FEFFE3FFFFE3FE181E7F9D1A>I<FFE000FFE000FFE00000E00000
+E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
+E00000E00000E00000E00000E00000E00000E00000E00000E00000E000FFFFE0FFFFE0FFFFE013
+1E7D9D1A>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C
+1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
+7F1F1F00FF9F9F807F1F1F00191580941A>I<FE3E00FEFF80FFFFC00FC1C00F80E00F00E00E00
+E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7
+FEFFE3FE17157F941A>I<01F00007FC001FFF003E0F803C07807803C07001C0E000E0E000E0E0
+00E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC0001F00013157D94
+1A>I<FE3E00FEFF80FFFFE00FC1F00F80700F00380E00380E001C0E001C0E001C0E001C0E001C
+0E001C0E001C0F00380F00780F80F00FC1E00FFFC00EFF800E3E000E00000E00000E00000E0000
+0E00000E00000E00000E0000FFE000FFE000FFE00016207F941A>I<7F83F0FF8FF87FBFFC03FC
+3C03F01803E00003C00003C0000380000380000380000380000380000380000380000380000380
+000380007FFF00FFFF007FFF0016157E941A>114 D<07FB801FFF807FFF80780780E00380E003
+80E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780FFFF
+00EFFE00E3F80012157C941A>I<00C00001C00001C00001C00001C00001C00001C0007FFFE0FF
+FFE0FFFFE001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C07001
+C07001C07001C07000E0E000FFE0007FC0001F00141C7F9B1A>I<FE0FE0FE0FE0FE0FE00E00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E0
+0F03E007FFFE03FFFE00FCFE17157F941A>I<7F83FCFFC7FE7F83FC0E00E00E00E00E00E00701
+C00701C00701C003838003838003838001C70001C70001C70000EE0000EE0000EE00007C00007C
+0000380017157F941A>I<FF83FEFFC7FEFF83FE3800383800381C00701C00701C00701C38701C
+7C701C7C700E6CE00E6CE00EEEE00EEEE00EEEE00EC6E006C6C007C7C007C7C003838017157F94
+1A>I<7FC7F87FCFFC7FC7F80703C003838003C70001EF0000FE00007C00007800003800007C00
+00EE0001EE0001C7000383800783C00F01C07FC7FCFFC7FE7FC7FC17157F941A>I<7FC3FCFFC7
+FE7FC3FC0E00E00E00E00700E00701C00781C00381C003838003C38001C38001C70000E70000E7
+0000E600006600006E00003C00003C00003C0000380000380000380000700000700030700078E0
+0071E0007FC0003F80001E000017207F941A>I<7FFFF0FFFFF0FFFFF0E001E0E003C0E0078000
+0F00001E00003C0000780000F00001E00003C0000780000F00381E00383C0038780038FFFFF8FF
+FFF8FFFFF815157E941A>I E /Fb 2 50 df<060F0F0E1E1E1C3C383830707060E0C04008117F
+910A>48 D<0F8007C019E01C202070301040184008C00C80048007800480070004800380048007
+80048004C00C400860082030381010E01E600F8007C01E0E7E8D23>I E
+/Fc 2 51 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C
+000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070006000C001C001800200
+04000810101020207FE0FFE00C137E9211>I E /Fd 5 51 df<0102040C1818303070606060E0
+E0E0E0E0E0E0E0E0E060606070303018180C04020108227D980E>40 D<8040203018180C0C0E06
+0606070707070707070707070606060E0C0C18183020408008227E980E>I<0030000030000030
+00003000003000003000003000003000003000003000003000FFFFFCFFFFFC0030000030000030
+0000300000300000300000300000300000300000300000300016187E931B>43
+D<03000700FF000700070007000700070007000700070007000700070007000700070007000700
+07007FF00C157E9412>49 D<0F8030E040708030C038E0384038003800700070006000C0018003
+0006000C08080810183FF07FF0FFF00D157E9412>I E /Fe 2 51 df<0C003C00CC000C000C00
+0C000C000C000C000C000C000C000C000C000C00FF8009107E8F0F>49 D<1F00618040C08060C0
+600060006000C00180030006000C00102020207FC0FFC00B107F8F0F>I
+E /Ff 8 112 df<60F0F070101020204040040A7D830A>59 D<1FFFFE381C0E201C04601C0440
+1C0440380480380400380000380000700000700000700000700000E00000E00000E00000E00001
+C00001C00001C00001C00003C0007FFC0017177F9615>84 D<000E001300370036006000600060
+0060006007FC00C000C000C000C000C001800180018001800180018003000300030003006600E6
+00CC007800101D7E9611>102 D<0300038003000000000000000000000000001C002400460046
+008C000C0018001800180031003100320032001C0009177F960C>105 D<001800380010000000
+00000000000000000001C0022004300430086000600060006000C000C000C000C0018001800180
+01806300E300C60078000D1D80960E>I<1F0006000600060006000C000C000C000C00181C1866
+188E190C32003C003F00318060C060C460C460C8C0C8C0700F177E9612>I<383C0044C6004702
+004602008E06000C06000C06000C0C00180C00180C40181840181880300880300F00120E7F8D15
+>110 D<07C00C20101020186018C018C018C01880308030C060C0C061803E000D0E7E8D11>I
+E /Fg 9 115 df<FFFFFFFCFFFFFFFC1E027C8C27>0 D<800002C0000660000C3000181800300C
+00600600C003018001830000C600006C00003800003800006C0000C6000183000301800600C00C
+006018003030001860000CC000068000021718789727>2 D<00C00000C00000C00000C00000C0
+00C0C0C0F0C3C038C7000EDC0003F00000C00003F0000EDC0038C700F0C3C0C0C0C000C00000C0
+0000C00000C00000C00012157D9619>I<00008000000180000001800000018000000180000001
+800000018000000180000001800000018000000180000001800000018000000180000001800000
+018000FFFFFFFFFFFFFFFF00018000000180000001800000018000000180000001800000018000
+00018000000180000001800000018000000180000001800000018000FFFFFFFFFFFFFFFF20227D
+A027>6 D<000FF00000700E000180018002000040040000200800001010000008100000082000
+000420000004400000024000000240000002800000018003C0018007E0018007E0018007E00180
+07E0018003C0018000000140000002400000024000000220000004200000041000000810000008
+0800001004000020020000400180018000700E00000FF00020227D9C27>12
+D<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFF
+C0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012147D9519>15 D<000003000003000006
+00000600000C00000C0000180000180000300000300000600000600000C00000C00000C0000180
+000180000300000300000600000600000C00000C00001800001800003000003000006000006000
+00C00000C0000180000180000300000300000300000600000600000C00000C0000180000180000
+300000300000600000600000C00000400000183079A300>54 D<8010C030C030C030C030C030C0
+30C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030
+C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C0
+30C030C030C03080100C327AA419>107 D<FFFFFFFFF87FFFFFFFF07FFFFFFFF03C000000203E
+000000201E000000401F000000C00F000000800F80000180078000010007C000030003C0000200
+03E000060001E000040001F0000C0000F000080000F80018000078001000003C002000003E0020
+00001E004000001F004000000F008000000F80800000078100000007C100000003C200000003E2
+00000001E400000001F400000000F800000000F800000000700000000070000000002000002523
+7EA12A>114 D E /Fh 65 122 df<00180030006000C001C00380070007000E001E001C003C00
+3C003C007800780078007800F800F000F000F000F000F000F000F000F000F000F000F000F80078
+007800780078003C003C003C001C001E000E0007000700038001C000C00060003000180D317BA4
+16>40 D<C0006000300018001C000E0007000700038003C001C001E001E001E000F000F000F000
+F000F80078007800780078007800780078007800780078007800F800F000F000F000F001E001E0
+01E001C003C00380070007000E001C00180030006000C0000D317DA416>I<387CFEFFFF7F3B03
+030706060C1C18702008117C8610>44 D<FFFCFFFCFFFCFFFC0E047F8C13>I<387CFEFEFE7C38
+07077C8610>I<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC00
+7EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C00
+7C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>48
+D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007E07C
+07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F8000
+1F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FF
+FFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F8
+1F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE
+7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000
+E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307
+E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007
+E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF001F
+FE001FF8001BC00018000018000018000018000019FC001FFF001E0FC01807E01803E00003F000
+03F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003
+F80015207D9F1C>I<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C0000
+7C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E
+7C007E7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800
+007FFFFE7FFFFE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C
+00001C0000180000380000780000780000F00000F00000F00001F00001F00001F00003F00003F0
+0003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E00E00F01C
+00F01C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E
+7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01F00F
+FFC001FF0017207E9F1C>I<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC007C
+FC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C
+00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F80017207E9F1C>I<387C
+FEFEFE7C380000000000000000387CFEFEFE7C3807167C9510>I<000070000000007000000000
+F800000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE000000
+06FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE000
+00300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC
+00018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00F
+FFF825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E
+0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000
+FC0007F003F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0
+001F8007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007
+F0003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF
+818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F800007803F000003803F00
+0003807F000001807E000001807E00000180FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE000000007E000000007E000001807F000001803F00000180
+3F000003801F800003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0
+000003FE000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007
+F0001F8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F00003F0
+07F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003
+F807F00003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC007F000
+1F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFF
+FFFFFC07F000FC07F0003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F01806
+07F0180607F0180007F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F018
+0007F0180307F0180307F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0
+003E07F001FCFFFFFFFCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0
+003807F0001807F0001C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007
+F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180007F01800
+07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0
+001E227EA123>I<0003FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00F
+C00003C01F800003C03F000001C03F000001C07F000000C07E000000C07E000000C0FE00000000
+FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFF
+FC7F00001FC07F00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F000
+1FC001FC003FC0007F80E7C0001FFFC3C00003FF00C026227DA12C>I<FFFF83FFFEFFFF83FFFE
+07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F
+C007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007FFFFFFC007FFFFFFC007F000
+1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
+001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0FFFF83FFFEFF
+FF83FFFE27227EA12C>I<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003
+F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
+F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013227FA1
+15>I<03FFFF03FFFF0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F01807F0
+7E07F0FF07F0FF07F0FF07F0FF07E07E0FE07C1FC01FFF0007F80018227FA11D>I<FFFF803FFC
+FFFF803FFC07F000038007F000070007F0000E0007F000180007F000300007F000E00007F001C0
+0007F003800007F007000007F00E000007F018000007F038000007F0FC000007F1FE000007F3FE
+000007F77F000007FE7F800007F83F800007F01FC00007F01FE00007F00FE00007F007F00007F0
+07F80007F003F80007F001FC0007F001FE0007F000FF0007F0007F0007F0007F8007F0003FC0FF
+FF83FFFCFFFF83FFFC26227EA12C>I<FFFFE000FFFFE00007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
+000007F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807
+F0003807F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA1
+22>I<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0
+067E000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC0
+0307E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E0
+0601F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E
+6007E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0
+FFF00F00FFFFFFF00600FFFF30227EA135>I<FFF8001FFEFFFC001FFE07FC0000C007FE0000C0
+06FF0000C0067F8000C0063FC000C0061FE000C0060FE000C0060FF000C00607F800C00603FC00
+C00601FE00C00600FE00C00600FF00C006007F80C006003FC0C006001FE0C006000FF0C0060007
+F0C0060007F8C0060003FCC0060001FEC0060000FFC00600007FC00600007FC00600003FC00600
+001FC00600000FC006000007C006000003C006000003C0FFF00001C0FFF00000C027227EA12C>
+I<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F8000
+3F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00
+000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F
+00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F800
+00FC07E000003FFF80000007FC000023227DA12A>I<FFFFFF00FFFFFFE007F007F007F001FC07
+F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E
+07F000FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF
+800020227EA126>I<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E00
+1F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000F
+E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE0000
+0FE07E00000FC07F00001FC07F00001FC03F00001F803F81F03F801F83F83F000FC70C7E0007E6
+06FC0003F607F80000FF07E000003FFF80000007FF80200000038020000001C020000001E0E000
+0001FFE0000001FFC0000000FFC0000000FFC00000007F800000007F000000001E00232C7DA12A
+>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F0007F0
+007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007F001F80007
+F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001FC0007F001FC00
+07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0607F000FE
+0607F000FF0CFFFF803FF8FFFF800FF027227EA12A>I<01FC0407FF8C1F03FC3C007C7C003C78
+001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03
+FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF
+00F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803
+806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F8
+00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
+03F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF80
+3FFCFFFF803FFC07F000018007F000018007F000018007F000018007F000018007F000018007F0
+00018007F000018007F000018007F000018007F000018007F000018007F000018007F000018007
+F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
+07F000018007F000018003F000030003F800030001F800060000FC000E00007E001C00003F80F8
+00000FFFE0000001FF000026227EA12B>I<FFFF800FFEFFFF800FFE07F00000C007F80000C003
+F800018003F800018001FC00030001FC00030001FE00070000FE00060000FF000600007F000C00
+007F800C00003F801800003F801800003FC03800001FC03000001FE03000000FE06000000FF060
+000007F0C0000007F0C0000007F9C0000003F980000003FD80000001FF00000001FF00000000FE
+00000000FE00000000FE000000007C000000007C00000000380000000038000027227FA12A>I<
+FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000C003F8007F
+80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE007FE0060000
+FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00003F8183F8
+1800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600FE6000000F
+E600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F80000003F8003F80
+000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E00000000E0
+000E000037227FA13A>I<7FFFC1FFF07FFFC1FFF003FC000C0001FE00180000FE00380000FF00
+7000007F806000003F80C000003FC1C000001FE38000000FE30000000FF700000007FE00000003
+FC00000003FC00000001FE00000000FE00000000FF00000000FF80000001FFC0000001BFC00000
+031FE00000070FF000000E0FF000000C07F800001803FC00003803FC00003001FE00006000FF00
+00E000FF0001C0007F800180003FC0FFFC03FFFEFFFC03FFFE27227FA12A>I<FFFF800FFEFFFF
+800FFE07F80000C007F80001C003FC00018001FE00030001FE00070000FF00060000FF000C0000
+7F801C00003FC01800003FC03000001FE07000000FF06000000FF0E0000007F8C0000003FD8000
+0003FF80000001FF00000001FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000001FFF
+F000001FFFF00027227FA12A>I<3FFFFFE03FFFFFE03F801FC03E003FC03C003F8038007F0070
+00FF007000FE007001FE006003FC006003F8006007F8000007F000000FE000001FE000001FC000
+003FC000007F8000007F000000FF000000FE006001FC006003FC006003F8006007F800E00FF000
+E00FE000E01FE001C01FC001C03F8003C07F8007C07F003FC0FFFFFFC0FFFFFFC01B227DA122>
+I<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
+F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
+D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
+00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
+000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
+1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
+F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
+007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
+003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
+01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
+00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
+BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
+00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
+FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
+0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
+0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
+13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
+C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
+3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
+FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
+3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
+003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003F007F007F007F003F001C
+000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF0000001F000000
+1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00001F1C00001F7E
+00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00F8001F007C001F
+003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F303E303E001F40
+3E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530
+>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
+003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
+1F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C00
+7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83
+E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F
+001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F80
+1F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<00FE030007FF87
+000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F00FC001F00FC001F00FC00
+1F00FC001F00FC001F00FC001F007E001F007E001F003E003F001F007F000FC1DF0007FF9F0001
+FC1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000FFE0
+0000FFE01B207E951E>I<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F
+00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00013
+167E9517>I<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE00
+0FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>
+I<0180000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80
+000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81
+800F81800F81800F830007C30003FE0000F80011207F9F16>I<FF01FE00FF01FE001F003E001F
+003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
+1F003E001F003E001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E
+951F>I<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E018
+0001F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000001F
+0000001F0000000E0000000E00001B167F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F8078
+01800F807C01800F807C018007C07E030007C0DE030007E0DE070003E0DF060003E18F060001F1
+8F0C0001F38F8C0001FB079C0000FB07D80000FE03D800007E03F000007E03F000007C01F00000
+3C01E000003800E000001800C00025167F9528>I<FFE01FE0FFE01FE00F8006000F8006000FC0
+0E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC00000
+7CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C0000
+0018000078180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>
+121 D E /Fi 49 121 df<0001FF81FE00001FFFEFFF80007F80FF87C000FC00FE0FE001F801FE
+0FE003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007F001FC000007F001FC000007
+F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF800FFFFFFFFF800FFFFFFFF
+F80007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007
+F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
+000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007
+F001FC000007F001FC00007FFF1FFFE0007FFF1FFFE0007FFF1FFFE0002B2A7FA928>11
+D<1C003E007F00FF80FF80FF807F003E001C0009097B8813>46 D<003F800001FFF00007E0FC00
+0FC07E001F803F001F803F003F001F803F001F807F001FC07F001FC07F001FC07F001FC0FF001F
+E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF00
+1FE0FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F001FC07F001FC07F001FC03F001F803F
+001F801F803F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48
+D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF
+FE17277BA622>I<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003F
+C0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F800000
+7F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00E000
+7000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80
+FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF00
+3F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC000001F8
+000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC00000
+3FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F003F
+01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E0000
+00FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E00
+00E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E
+00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000
+FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFF
+FE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000000E
+0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001FC0
+00001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001F
+C078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<380000
+003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E007000
+0E0070001C00E0003800E0007000E000E0000000E0000001C00000038000000780000007800000
+0F0000000F0000001F0000001F0000003F0000003E0000003E0000007E0000007E0000007E0000
+007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007C00
+00003800001C297CA822>55 D<000003800000000007C00000000007C0000000000FE000000000
+0FE0000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8000000003FF800
+00000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001
+C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0
+00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8000078
+0007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF
+0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65
+D<FFFFFFF80000FFFFFFFF8000FFFFFFFFC00003F8001FF00003F8000FF80003F80007FC0003F8
+0003FC0003F80003FC0003F80003FE0003F80001FE0003F80001FE0003F80001FE0003F80003FE
+0003F80003FC0003F80003FC0003F80007F80003F8000FF00003F8001FE00003F800FFC00003FF
+FFFE000003FFFFFFE00003F80007F00003F80003FC0003F80001FE0003F80001FE0003F80000FF
+0003F80000FF0003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F8
+0000FF8003F80000FF0003F80001FF0003F80003FE0003F80007FC0003F8001FF800FFFFFFFFF0
+00FFFFFFFFC000FFFFFFFE000029297DA831>I<00003FF001800003FFFE0380000FFFFF878000
+3FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF000000F801FE00000
+07801FE0000007803FC0000007803FC0000003807FC0000003807F80000003807F8000000000FF
+8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
+0000FF8000000000FF80000000007F80000000007F80000000007FC0000003803FC0000003803F
+C0000003801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE0000
+3C0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF8000029297CA832>I<
+FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE0003FC00
+00FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF0
+03FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00
+000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF8
+03FC00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00
+003FC003FC00007F8003FC00007F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFFFFE000
+FFFFFFFF8000FFFFFFFC00002D297DA835>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE0
+03FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00007003FC00007003FC01C0
+7803FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFF
+C00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC
+01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803
+FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297DA82D>I<FFFFFF
+FFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E003FC0001E003FC
+0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003FC03807003FC03800003
+FC07800003FC07800003FC1F800003FFFF800003FFFF800003FFFF800003FC1F800003FC078000
+03FC07800003FC03800003FC03800003FC03800003FC03800003FC00000003FC00000003FC0000
+0003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC
+0000FFFFFC000024297DA82B>I<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001
+FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
+FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
+FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A>73 D<FFFFF001FFFCFFFFF001FF
+FCFFFFF001FFFC03FC00001E0003FC00003C0003FC0000780003FC0000F00003FC0001E00003FC
+0003C00003FC0007000003FC001E000003FC003C000003FC0078000003FC00F0000003FC01E000
+0003FC0380000003FC07C0000003FC1FC0000003FC3FE0000003FC7FF0000003FCFFF8000003FD
+E7F8000003FF83FC000003FF01FE000003FE01FF000003FC00FF000003FC007F800003FC003FC0
+0003FC003FC00003FC001FE00003FC000FF00003FC000FF80003FC0007F80003FC0003FC0003FC
+0001FE0003FC0001FF0003FC0000FF0003FC00007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFF
+FE2F297DA836>75 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC000000
+03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC
+00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003
+FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>I<FFFE0000001FFFC0FFFE000000
+1FFFC0FFFF0000003FFFC003FF0000003FF00003FF0000003FF00003BF80000077F00003BF8000
+0077F000039FC00000E7F000039FC00000E7F000038FE00001C7F000038FE00001C7F0000387F0
+000387F0000387F0000387F0000387F0000387F0000383F8000707F0000383F8000707F0000381
+FC000E07F0000381FC000E07F0000380FE001C07F0000380FE001C07F0000380FF003807F00003
+807F003807F00003807F003807F00003803F807007F00003803F807007F00003801FC0E007F000
+03801FC0E007F00003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F0
+00038007F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007
+F000038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE007801
+FFFFC03A297DA841>I<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FF800003
+8003BFC0000380039FE0000380039FF0000380038FF80003800387F80003800383FC0003800381
+FE0003800381FF0003800380FF80038003807FC0038003803FC0038003801FE0038003800FF003
+8003800FF80380038007FC0380038003FC0380038001FE0380038000FF0380038000FF83800380
+007FC3800380003FE3800380001FE3800380000FF38003800007FB8003800007FF8003800003FF
+8003800001FF8003800000FF80038000007F80038000007F80038000003F80038000001F800380
+00000F80FFFE00000780FFFE00000380FFFE000003802F297DA836>I<0000FFE000000007FFFC
+0000003FC07F8000007F001FC00001FC0007F00003F80003F80007F00001FC000FF00001FE001F
+E00000FF001FE00000FF003FC000007F803FC000007F807FC000007FC07F8000003FC07F800000
+3FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF
+8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07FC00000
+7FC07FC000007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000FF00001FE0007
+F00001FC0003F80003F80001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE0
+00002B297CA834>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F8
+03FC0007FC03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003
+FE03FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FFFF
+FE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
+00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
+FC000000FFFFF00000FFFFF00000FFFFF0000027297DA82F>I<FFFFFFE00000FFFFFFFE0000FF
+FFFFFF800003FC007FE00003FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003
+FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003
+FC0007F80003FC0007F80003FC001FE00003FC007FC00003FFFFFE000003FFFFF0000003FC00FC
+000003FC007F000003FC003F800003FC003F800003FC001FC00003FC001FE00003FC001FE00003
+FC001FE00003FC001FE00003FC001FE00003FC001FF00003FC001FF00003FC001FF00003FC001F
+F00703FC001FF80703FC000FF80703FC0007F80EFFFFF003FE1CFFFFF001FFF8FFFFF0003FF030
+297DA834>82 D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0
+FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC
+001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F80000
+03F8600001F8E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FF
+E01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFF
+C07F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F000
+3FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>I<FFFFF001
+FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC0000070003FC0000070003
+FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000
+070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003
+FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000
+070003FC0000070003FC0000070003FC0000070003FC0000070001FC00000E0001FE00000E0000
+FE00001C00007E00001C00007F00003800003FC000F000000FF007E0000007FFFFC0000001FFFF
+000000001FF800002E297DA835>I<FFFFF0003FFF80FFFFF0003FFF80FFFFF0003FFF8003FE00
+0001E00001FE000001C00001FF000003C00000FF000003800000FF0000038000007F8000070000
+007F8000070000007FC0000F0000003FC0000E0000003FE0001E0000001FE0001C0000001FF000
+1C0000000FF000380000000FF0003800000007F8007000000007F8007000000007FC00F0000000
+03FC00E000000003FE01E000000001FE01C000000001FF01C000000000FF038000000000FF0380
+00000000FF8780000000007F8700000000007FCF00000000003FCE00000000003FFE0000000000
+1FFC00000000001FFC00000000000FF800000000000FF800000000000FF8000000000007F00000
+00000007F0000000000003E0000000000003E0000000000001C000000031297FA834>I<FFFFF0
+003FFF80FFFFF0003FFF80FFFFF0003FFF8003FF000001E00001FF000003C00000FF8000038000
+007FC000078000007FE0000F0000003FE0000E0000001FF0001E0000001FF8003C0000000FF800
+3800000007FC007800000007FE00F000000003FE00E000000001FF01E000000001FF83C0000000
+00FF8380000000007FC780000000007FEF00000000003FEE00000000001FFE00000000000FFC00
+000000000FF8000000000007F8000000000007F8000000000007F8000000000007F80000000000
+07F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80000
+00000007F8000000000007F8000000000007F8000000000007F80000000001FFFFE000000001FF
+FFE000000001FFFFE0000031297FA834>89 D<01FF800007FFF0000F81F8001FC07E001FC07E00
+1FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F
+803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F83
+9FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F
+803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000
+FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E
+0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8000000
+03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F800
+1F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F8
+00FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003
+F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<
+003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007
+E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F00
+00003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007
+F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F0
+0007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF
+807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F007E107F
+007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC000FC1F800
+1FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF800FFFFF
+C007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F03C00
+01E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>I<FFE0000000FFE0000000FFE00000
+000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE07F00000FE1FFC0000FE787E0000FEE
+03F0000FF803F0000FF803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF
+80212A7DA926>I<07000FC01FE03FE03FE03FE01FE00FC0070000000000000000000000000000
+00FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
+0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<FFE00000FFE00000FFE000000FE00000
+0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
+000FE000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000FE0
+E0000FE3C0000FE7C0000FEFE0000FFFE0000FFFF0000FF3F8000FE3F8000FC1FC000FC0FE000F
+C07F000FC07F000FC03F800FC01FC00FC00FC00FC00FE0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA9
+24>107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
+0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE0FFFEFFFEFFFE0F2A7DA914>I<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E00
+0FC603F8C07F000FCC01F9803F000FD801FF003F800FF001FE003F800FF001FE003F800FE001FC
+003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
+E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
+3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE
+1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F000
+0FD803F0000FD803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B
+7D9A26>I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F00
+07F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F
+0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A
+22>I<FFE1FE0000FFE7FF8000FFFE07E0000FF803F0000FF001F8000FE000FC000FE000FE000F
+E000FF000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F80
+0FE0007F800FE0007F800FE0007F000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8
+000FF803F0000FFE0FE0000FE7FF80000FE1FC00000FE00000000FE00000000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE
+00000021277E9A26>I<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+000FE000FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F000
+70F00070F80070FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC6000
+7CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000
+700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007
+F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807
+F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>I<FFE03F
+F800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F80007E007F80007E00FF800
+03F03BFF8001FFF3FF80003FC3FF80211B7D9A26>I<FFFE03FF80FFFE03FF80FFFE03FF8007F0
+00700007F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C00000FE03800000
+FE038000007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000
+000FF80000000FF80000000FF800000007F000000007F000000003E000000003E000000001C000
+00211B7F9A24>I<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007
+F003F001C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC
+0F0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB80000
+3FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E000000FC007
+E00000078003C00000078003C0002F1B7F9A32>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003
+C00003F807800001FC07800000FE0F000000FF1E0000007F3C0000003FF80000001FF00000000F
+F00000000FF000000007F000000007F80000000FFC0000001FFE0000001EFE0000003C7F000000
+783F800000F01FC00001E01FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80
+211B7F9A24>I E /Fj 54 123 df<003F000000E180000380C020070060400E0070401C007040
+3C0070803C003880780039007800390078003A00F0003A00F0003C00F0003800F0003800700038
+00700078003000B800380338401C1C188007E00F001B157E941F>11 D<00007C00000183000002
+018000040180000801C0001001C0002001C0002001C0004001C000400380008003800080030000
+80070001000E000107FC0001083800010FDC0002000E0002000E0002000F0002000F0004000F00
+04000F0004000F0004000F0008001E0008001E0008001C0008003C0014003800140070001400E0
+001201C00021838000207C00002000000020000000400000004000000040000000400000008000
+00008000000080000000800000001A2D7EA21C>I<01F00107F8010FFC021FFC02380E04600204
+4003088001088001080000900000900000A00000A00000A00000C00000C00000C0000080000080
+000080000180000180000180000300000300000300000300000600000600000600000400000400
+18207F9419>I<007FFF8001FFFF8003FFFF800783C0000E01C0001C00E0003800E0003800E000
+7000E0007000E0007000E000E001C000E001C000E001C000E0038000E003000060070000600E00
+00301800001870000007C0000019157E941C>27 D<000020000040000040000040000040000080
+000080000080000080000100000100000100000100000200001FC000F27001821807040C0E0406
+1C0406180407380807700807700807700807E0100EE0100EE0100C60101C6020387020303020E0
+1821C00E470003F800004000004000008000008000008000008000010000010000010000010000
+182D7DA21D>30 D<70F8F8F87005057C840E>58 D<70F8FCFC7404040404080810102040060F7C
+840E>I<0000001800000078000001E00000078000001E00000078000003E000000F8000003C00
+0000F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F0
+0000003C0000000F80000003E0000000780000001E0000000780000001E000000078000000181D
+1C7C9926>I<000080000180000180000300000300000300000600000600000600000C00000C00
+000C0000180000180000180000300000300000300000600000600000600000C00000C00000C000
+0180000180000180000180000300000300000300000600000600000600000C00000C00000C0000
+180000180000180000300000300000300000600000600000600000C00000C00000C0000011317D
+A418>I<000FC000003030000040180000800C000100060001C0070003C0070003C00300018003
+8000000380000003800000038000000380001F87800070478001C0278003801780070017800E00
+1F001E001F001C001F003C001F0038001E0078001E0078001E0078003C00F0003C00F0003800F0
+007800F00070007000E0007000E0007001C00038038000180700000C1C000003F0000019257EA3
+1A>64 D<00000080000000018000000001C000000003C000000003C000000007C00000000BC000
+00000BC000000013C000000033C000000023C000000043C000000043E000000081E000000181E0
+00000101E000000201E000000201E000000401E000000C01E000000801E000001001E000001FFF
+F000002000F000006000F000004000F000008000F000008000F000010000F000030000F0000200
+00F000040000F8000C0000F8001E0000F800FF800FFF8021237EA225>I<007FFFF8000007800F
+00000780078000078003C0000F0001C0000F0001C0000F0001E0000F0001E0001E0001C0001E00
+03C0001E0003C0001E000780003C000F00003C001E00003C003C00003C01F000007FFFE0000078
+0078000078003C000078001E0000F0001E0000F0000E0000F0000F0000F0000F0001E0001E0001
+E0001E0001E0001E0001E0003C0003C0003C0003C000780003C000F00003C001C00007C00F8000
+FFFFFC000023227EA125>I<00007F00800003808100000E00630000380027000070001F0000E0
+000E0001C0000E000380000E000700000E000F000004000E000004001E000004003C000004003C
+00000800780000000078000000007800000000F000000000F000000000F000000000F000000000
+F000000000E000000000E000002000E000002000E000004000E000004000F00000800070000080
+007000010000380002000018000400001C0008000006003000000381C0000000FE00000021247D
+A223>I<007FFFF8000007801E0000078007000007800380000F0001C0000F0001C0000F0000E0
+000F0000E0001E0000E0001E0000F0001E0000F0001E0000F0003C0000F0003C0000F0003C0000
+F0003C0000F000780001E000780001E000780001E000780001E000F00003C000F00003C000F000
+038000F000078001E000070001E0000E0001E0001E0001E0001C0003C000380003C000700003C0
+00E00003C003800007C00E0000FFFFF8000024227EA128>I<007FFFFFC000078003C000078000
+C000078000C0000F0000C0000F0000C0000F000080000F000080001E000080001E000080001E00
+8080001E008000003C010000003C010000003C030000003C070000007FFE000000780600000078
+060000007806000000F004000000F004000000F004010000F000020001E000020001E000020001
+E000040001E0000C0003C000080003C000180003C000300003C000700007C003F000FFFFFFE000
+22227EA124>I<007FFFFFC000078003C000078000C000078000C0000F0000C0000F0000C0000F
+000080000F000080001E000080001E000080001E008080001E008000003C010000003C01000000
+3C030000003C070000007FFE000000780600000078060000007806000000F004000000F0040000
+00F004000000F000000001E000000001E000000001E000000001E000000003C000000003C00000
+0003C000000003C000000007C0000000FFFE00000022227EA120>I<00007F00400003C0C08000
+0E002180001C0013800070000F8000E000070001C0000700038000070007000007000F00000200
+0E000002001E000002003C000002003C00000400780000000078000000007800000000F0000000
+00F000000000F000000000F000000000F0003FFF00E00000F000E00000F000E00000F000E00001
+E000F00001E000F00001E000700001E000700003C000380003C000180007C0000C0009C0000600
+1180000380E08000007F00000022247DA226>I<00FFFC0007C0000780000780000F00000F0000
+0F00000F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000
+780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C00007
+C000FFFC0016227EA116>73 D<0007FFE000001E0000001E0000001E0000003C0000003C000000
+3C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000F00000
+01E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000
+3807800078078000F80F0000F80F0000F01E0000401C00004038000030E000000F8000001B237D
+A11B>I<007FFC01FF0007800078000780006000078000C0000F000180000F000200000F000400
+000F000800001E001000001E004000001E008000001E010000003C020000003C040000003C1E00
+00003C3E000000785F000000788F0000007A0F0000007C07800000F807800000F007C00000F003
+C00000F003C00001E001E00001E001E00001E001E00001E000F00003C000F00003C000F80003C0
+00780003C000780007C000FC00FFFC07FF8028227EA129>I<007FFE000007C000000780000007
+8000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C000000
+3C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F00010
+00F0001001E0002001E0002001E0004001E0004003C000C003C0008003C0018003C0078007C01F
+00FFFFFF001C227EA121>I<007FC00001FF0007C00003E00007C00005E00007C00005E00009E0
+000BC00009E0000BC00009E00013C00009E00023C00011E00027800011E00047800011E0004780
+0011E00087800021E0010F000020F0010F000020F0020F000020F0040F000040F0041E000040F0
+081E000040F0081E000040F0101E000080F0203C00008078203C00008078403C00008078803C00
+01007880780001007900780001007900780001007A00780002007C00F00002007C00F000020038
+00F00006003800F0000F003001F000FFE0203FFF0030227EA12F>I<007FC003FF0007C0007800
+07C000600005E000200009E000400009E000400008F000400008F000400010F800800010780080
+001078008000103C008000203C010000203E010000201E010000201E010000400F020000400F02
+0000400F020000400782000080078400008007C400008003C400008003C400010001E800010001
+E800010001F800010000F800020000F0000200007000020000700006000070000F00002000FFE0
+00200028227EA127>I<00007F00000381C0000E0060003800380070003800E0001C01C0001E03
+80000E0700000E0F00000F0E00000F1C00000F3C00000F3C00000F7800000F7800000F7800000F
+F000001EF000001EF000001EF000003CF000003CF000003CE0000078E0000078E00000F0F00000
+E0F00001E0F00003C0700007807800070038000E001C0038000E0070000783C00000FE00002024
+7DA225>I<007FFFF0000007801C000007800F000007800700000F000380000F000380000F0003
+80000F000380001E000780001E000780001E000780001E000F00003C000F00003C001E00003C00
+3C00003C007000007801E000007FFF00000078000000007800000000F000000000F000000000F0
+00000000F000000001E000000001E000000001E000000001E000000003C000000003C000000003
+C000000003C000000007C0000000FFFC00000021227EA11F>I<00007F00000381C0000E006000
+3800380070003800E0001C01C0001E0380000E0700000E0F00000F0E00000F1E00000F3C00000F
+3C00000F7800000F7800000F7800000FF000001EF000001EF000001EF000001CF000003CE00000
+3CE0000078E0000078E00000F0E00000E0F00001E0F01E03C0702103807840870038408E001C40
+B8000E40F00007C1C02000FE80200000802000018040000180C00001C0800001C3800001FF0000
+00FF000000FE0000007800202D7DA227>I<007FFFE0000007803C000007800E00000780070000
+0F000780000F000380000F0003C0000F0003C0001E000780001E000780001E000780001E000F00
+003C001E00003C003C00003C007000003C01C000007FFE00000078078000007801C000007801E0
+0000F000F00000F000F00000F000F00000F000F00001E001E00001E001E00001E001E00001E001
+E00003C003C00003C003C04003C003C04003C001C08007C001C080FFFC00E3000000003C002223
+7EA125>I<0003F010000E0C2000180260002001E0004000E000C000C0008000C0018000C00180
+00C00380008003800080038000000380000003C0000001F0000001FE000000FFE000007FF00000
+1FF8000001FC0000003C0000001C0000000E0000000E0000000E0020000C0020000C0020000C00
+2000080060001800600010007000200070004000C8008000C603000081FC00001C247DA21E>I<
+1FFFFFFE1E01E00E1801E0063001E0062003C0062003C0064003C0044003C00440078004800780
+048007800400078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E
+0000003C0000003C0000003C0000003C00000078000000780000007800000078000000F0000000
+F0000000F0000000F0000001F00000FFFFC0001F227EA11D>I<3FFE01FF8003C0003C0003C000
+300003C000100007800020000780002000078000200007800020000F000040000F000040000F00
+0040000F000040001E000080001E000080001E000080001E000080003C000100003C000100003C
+000100003C0001000078000200007800020000780002000078000200007000040000F000040000
+F000080000700008000070001000007000200000380040000038008000001C0100000006060000
+0001F800000021237DA121>I<007FFFFE007E001E0070003C00E0007800C000F0008001E00180
+03E0010003C00100078002000F0002001E0000003C0000007C00000078000000F0000001E00000
+03C00000078000000F8000000F0000001E0000003C00200078002000F0004001F0004001E00040
+03C00080078000800F0001801E0003001E0007003C000F0078007E00FFFFFE001F227DA121>90
+D<00786001C4E00302E00601C00E01C01C01C03C01C0380380780380780380780380F00700F007
+00F00700F00708F00E10700E10701E1030262018C6200F01C015157E941A>97
+D<03C0003F80000380000380000380000700000700000700000700000E00000E00000E00000E00
+001C00001C78001D8E001E07003C0700380380380380380780700780700780700780700780E00F
+00E00F00E00F00E01E00E01C00601C0060380030700030C0000F000011237DA215>I<003F0000
+E0800380C00701C00E03C01C03C03C00003C0000780000780000780000F00000F00000F00000F0
+00007000407000403001803802001C1C0007E00012157E9415>I<00001E0001FC00001C00001C
+00001C0000380000380000380000380000700000700000700000700000E00078E001C4E00302E0
+0601C00E01C01C01C03C01C0380380780380780380780380F00700F00700F00700F00708F00E10
+700E10701E1030262018C6200F01C017237EA219>I<007C000382000701000E01001C01003801
+00780200700400FFF800F00000F00000E00000E00000E00000E00000E00080E000807003003004
+001838000FC00011157D9417>I<00001E00000063800000C7800001C7800001C3000001800000
+0380000003800000038000000380000007000000070000000700000007000000FFF800000E0000
+000E0000000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000001C00
+000038000000380000003800000038000000380000007000000070000000700000007000000060
+000000E0000000E0000000E0000000C0000070C00000F1800000F1000000620000003C00000019
+2D7EA218>I<000F0C00389C00605C00C03801C0380380380780380700700F00700F00700F0070
+1E00E01E00E01E00E01E00E01E01C00E01C00E03C00605C0031B8001E380000380000380000700
+000700000700700E00F00C00F018006070003FC000161F809417>I<00F0000FE00000E00000E0
+0000E00001C00001C00001C00001C000038000038000038000038000070000071F0007218007C0
+C00F00E00F00E00E00E00E00E01C01C01C01C01C01C01C01C03803803803803807003807047007
+08700E08700E08700610E006206003C016237DA21C>I<00E000E001E000C00000000000000000
+000000000000000000001E0023004380438083808380870007000E000E000E001C001C00380038
+20384070407040308031001E000B227EA111>I<0000E00001E00001E00000C000000000000000
+0000000000000000000000000000000000000000001E0000230000438000838001038001038001
+0380000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0000
+380000380000380000380000700000700000700070E000F0C000F180006300003E0000132C81A1
+14>I<00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000038000038000
+0380000700000700F00703080704380E08780E10780E20300E40001C80001F00001FC0001C7000
+383800383800381C00381C10703820703820703820701840E00C8060070015237DA219>I<3C07
+E01F00461830618047201880C087401D00E087801E00E087801C00E087001C00E00E003801C00E
+003801C00E003801C00E003801C01C007003801C007003801C007007001C007007043800E00708
+3800E00E083800E00E083800E006107001C006203000C003C026157E942B>109
+D<3C07C04618604720308740388780388700388700380E00700E00700E00700E00701C00E01C00
+E01C01C01C01C13801C23803823803823801847001883000F018157E941D>I<03C0F004631C04
+740E08780E08700708700708700F00E00F00E00F00E00F00E00F01C01E01C01E01C01E01C03C03
+803803803803C07003C0E0072180071E000700000700000E00000E00000E00000E00001C00001C
+00001C0000FFC000181F819418>112 D<3C0F004630C04741C08783C08783C08701808700000E
+00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070000030
+000012157E9416>114 D<007E0000810003008002018006038006030006000007000007F80003
+FE0001FF00003F00000780000380700380F00300F00300E002004004003018000FE00011157E94
+17>I<006000E000E000E000E001C001C001C001C00380FFFC0380038007000700070007000E00
+0E000E000E001C001C001C001C08381038103820182018C007000E1F7F9E12>I<1E0018230038
+4380384380708380708380708700700700E00E00E00E00E00E00E01C01C01C01C01C01C01C01C2
+1C03841C03841C07840C09880E118803E07017157E941C>I<1E00C02301E04381F04380F08380
+708380308700300700200E00200E00200E00201C00401C00401C00801C00801C01001C01001C02
+000C040006080003F00014157E9418>I<1E0018182300383C4380383E4380701E8380700E8380
+7006870070060700E0040E00E0040E00E0040E00E0041C01C0081C01C0081C01C0081C01C0101C
+01C0101C01C0201C03C0400C04C0C00708E10001F03E001F157E9423>I<01E0F006310C081A1C
+101A3C201C3C201C18201C0000380000380000380000380000700000700000700000700860E010
+F0E010F0E020E170404230803C1F0016157E941C>I<1E00302300704380704380E08380E08380
+E08700E00701C00E01C00E01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F
+000C3E0003CE00000E00000E00001C00601C00F03800F03000E0600080C0004180003E0000141F
+7E9418>I<00E01003F02007F860060FC008008008010000020000040000080000100000200000
+C0000100000200000400400800801001803F830061FE0040FC0080780014157E9417>I
+E /Fk 49 122 df<FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF014077F921B>45
+D<000000380000007C0000007C000000FC000000F8000000F8000001F8000001F0000001F00000
+03F0000003E0000007E0000007C0000007C000000FC000000F8000000F8000001F8000001F0000
+003F0000003E0000003E0000007E0000007C0000007C000000FC000000F8000001F8000001F000
+0001F0000003F0000003E0000003E0000007E0000007C000000FC000000F8000000F8000001F80
+00001F0000001F0000003F0000003E0000003E0000007E0000007C000000FC000000F8000000F8
+000001F8000001F0000001F0000003F0000003E0000007E0000007C0000007C000000FC000000F
+8000000F8000001F8000001F0000003F0000003E0000003E0000007E0000007C0000007C000000
+FC000000F8000000F8000000700000001E487BB529>47 D<000FFC0000007FFF800001FFFFE000
+03FC0FF00007F003F8000FE001FC000FE001FC001FC000FE003FC000FF003FC000FF003F80007F
+007F80007F807F80007F807F80007F807F80007F80FF80007FC0FF80007FC0FF80007FC0FF8000
+7FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC0FF80
+007FC0FF80007FC0FF80007FC0FF80007FC0FF80007FC07F80007F807F80007F807F80007F807F
+80007F803F80007F003FC000FF003FC000FF001FC000FE001FE001FE000FE001FC0007F807F800
+03FC0FF00001FFFFE000007FFF8000000FFC0000222E7DAD29>I<0001E0000003E000000FE000
+007FE0001FFFE000FFFFE000FFBFE000E03FE000003FE000003FE000003FE000003FE000003FE0
+00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F
+E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00000
+3FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000
+003FE0007FFFFFF07FFFFFF07FFFFFF01C2E7AAD29>I<003FF00001FFFE0007FFFF800FC07FE0
+1E001FF03C000FF87F0007FC7F8007FEFFC007FEFFC003FEFFC003FFFFC003FF7F8003FF7F8003
+FF3F0003FF000003FF000003FE000003FE000007FC000007FC00000FF800000FF000001FE00000
+1FC000003F8000007F000000FE000001F8000001F0000003E00000078007000F0007001E000700
+3C000F0078000E00F0000E01C0001E03FFFFFE07FFFFFE0FFFFFFE1FFFFFFE3FFFFFFE7FFFFFFC
+FFFFFFFCFFFFFFFCFFFFFFFC202E7CAD29>I<000FFC0000007FFF800001F01FE00003C00FF000
+070007F8000FE007FC000FF007FC001FF007FE001FF807FE001FF807FE001FF807FE001FF807FE
+000FF007FC0007E007FC00018007FC0000000FF80000000FF00000001FE00000001FC00000007F
+8000001FFE0000001FFC0000001FFF800000001FF000000007F800000003FC00000003FE000000
+03FF00000001FF80000001FF800E0001FFC03F8001FFC07FC001FFC07FC001FFC0FFE001FFC0FF
+E001FFC0FFE001FF80FFE001FF80FFC003FF007F8003FF003F0003FE001F0007FC000FE01FF800
+07FFFFE00001FFFF8000001FFC0000222E7DAD29>I<0000007800000000F800000001F8000000
+03F800000007F800000007F80000000FF80000001FF80000003FF80000007FF800000077F80000
+00F7F8000001E7F8000003C7F800000787F800000707F800000F07F800001E07F800003C07F800
+007807F800007007F80000F007F80001E007F80003C007F800078007F8000F0007F8000F0007F8
+001E0007F8003C0007F800780007F800F00007F800FFFFFFFFF0FFFFFFFFF0FFFFFFFFF000000F
+F80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000000
+0FF800000FFFFFF0000FFFFFF0000FFFFFF0242E7EAD29>I<0C0000380FC003F80FFFFFF80FFF
+FFF00FFFFFE00FFFFFC00FFFFF800FFFFE000FFFFC000FFFF0000FFF00000F0000000F0000000F
+0000000F0000000F0000000F0000000F0000000F0FF8000F7FFF000FFFFFC00FF01FE00F800FF0
+0F0007F80E0007FC000003FC000003FE000003FE000003FF000003FF1E0003FF3F0003FF7F8003
+FFFF8003FFFFC003FFFFC003FEFF8003FEFF8003FE7F0007FC7C0007F83C000FF01E001FE00FC0
+7FC007FFFF8001FFFE00003FE000202E7CAD29>I<00007F80000007FFF000001FC07800007F00
+1C0000FC001E0001F8007E0003F800FF0007F001FF000FF001FF000FE001FF001FE001FF003FE0
+00FE003FE0007C003FC00000007FC00000007FC00000007FC0000000FFC3FF8000FFC7FFE000FF
+CFBFF000FFDC03F800FFF801FC00FFF001FE00FFF000FF00FFE000FF80FFE000FF80FFE000FF80
+FFC000FFC0FFC000FFC0FFC000FFC07FC000FFC07FC000FFC07FC000FFC07FC000FFC03FC000FF
+C03FC000FF803FC000FF801FE000FF801FE000FF000FE001FE0007F001FC0003F803F80001FC0F
+F00000FFFFE000003FFF80000007FC0000222E7DAD29>I<38000000003E000000003FFFFFFFC0
+3FFFFFFFC03FFFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF8007FFFFFF0
+00780001F000700003E000700007C000F0000F8000E0000F0000E0001E0000E0003E000000007C
+00000000F800000000F800000001F000000001F000000003F000000003E000000007E000000007
+E00000000FE00000000FE00000001FC00000001FC00000001FC00000003FC00000003FC0000000
+3FC00000003FC00000003FC00000007FC00000007FC00000007FC00000007FC00000007FC00000
+007FC00000007FC00000007FC00000003F800000003F800000000E00000022307BAF29>I<0007
+FC0000003FFF800000F80FE00001E003F00003C001F800078000FC000F8000FC000F80007E000F
+80007E001F80007E001FC0007E001FC0007E001FE0007E001FF800FC001FFE00FC000FFF81F800
+0FFFE1F0000FFFF7E00007FFFFC00003FFFF800001FFFFC00000FFFFE000007FFFF80001FFFFFC
+0003F7FFFE000FE1FFFF001F807FFF003F003FFF803F000FFF807E0003FFC07E0000FFC0FC0000
+7FC0FC00001FC0FC00001FC0FC00000FC0FC00000FC0FC00000F807E00000F807E00000F007F00
+001F003F00001E001FC0007C000FF803F80003FFFFE00000FFFF8000001FFC0000222E7DAD29>
+I<000FFC0000007FFF000001FC0FC00003F003E00007E003F0000FE001F8001FE001FC003FC001
+FE007FC000FE007FC000FF00FFC000FF00FFC000FF80FFC000FF80FFC000FF80FFC000FF80FFC0
+00FFC0FFC000FFC0FFC000FFC0FFC000FFC07FC001FFC07FC001FFC03FC001FFC03FC003FFC01F
+E003FFC00FE007FFC007F00EFFC003FF7CFFC001FFF8FFC0007FF0FF80000000FF80000000FF80
+000000FF80000000FF000F8001FF001FC001FF003FE001FE003FE001FC003FE003FC003FE003F8
+003FC007F0001F800FE0001E001FC0000F807F800007FFFE000001FFF80000007FC00000222E7D
+AD29>I<FFFFFFFFF80000FFFFFFFFFF0000FFFFFFFFFFE00000FF80003FF00000FF80000FF800
+00FF800007FC0000FF800007FE0000FF800003FF0000FF800003FF0000FF800001FF8000FF8000
+01FF8000FF800001FF8000FF800001FF8000FF800001FF8000FF800001FF8000FF800003FF0000
+FF800003FF0000FF800007FF0000FF800007FE0000FF80000FFC0000FF80001FF80000FF8000FF
+E00000FFFFFFFF800000FFFFFFFF000000FFFFFFFFE00000FF80001FF80000FF800007FC0000FF
+800003FF0000FF800001FF0000FF800001FF8000FF800000FFC000FF800000FFC000FF800000FF
+E000FF800000FFE000FF800000FFE000FF800000FFE000FF800000FFE000FF800000FFE000FF80
+0000FFE000FF800000FFC000FF800001FFC000FF800001FF8000FF800003FF8000FF800007FF00
+00FF80000FFE0000FF80003FFC00FFFFFFFFFFF000FFFFFFFFFFC000FFFFFFFFFE000033317EB0
+3B>66 D<000003FF80018000003FFFF003800001FFFFFC0F800007FF007F1F80001FF8000FBF80
+003FE00003FF8000FF800000FF8001FF0000007F8003FE0000003F8007FC0000003F8007FC0000
+001F800FF80000001F801FF80000000F801FF00000000F803FF000000007803FF000000007807F
+F000000007807FE000000007807FE000000000007FE00000000000FFE00000000000FFE0000000
+0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0
+0000000000FFE000000000007FE000000000007FE000000000007FE000000000007FF000000003
+803FF000000003803FF000000003801FF000000003801FF800000007800FF8000000070007FC00
+0000070007FC0000000E0003FE0000001E0001FF0000003C0000FF8000007800003FE00000F000
+001FF80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317BB0
+3C>I<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FFC0000FFC0000
+FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003FE000FFC00000
+3FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FFC000000FFC00FF
+C000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC000000FFE00FFC000000F
+FE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC0
+00000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFC00FFC000000FFC00FFC000000FFC
+00FFC000000FFC00FFC000000FF800FFC000001FF800FFC000001FF800FFC000001FF000FFC000
+003FE000FFC000003FE000FFC000007FC000FFC00000FF8000FFC00001FF0000FFC00003FE0000
+FFC0000FFC0000FFC0007FF000FFFFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF0000037317EB03F
+>I<FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFFFFF00000FFC0003FF00000FFC00007F80000FF
+C00003F80000FFC00000F80000FFC00000F80000FFC00000780000FFC00000780000FFC0000038
+0000FFC00000380000FFC00000380000FFC000001C0000FFC007001C0000FFC007001C0000FFC0
+07001C0000FFC00700000000FFC00700000000FFC00F00000000FFC01F00000000FFC03F000000
+00FFFFFF00000000FFFFFF00000000FFFFFF00000000FFC03F00000000FFC01F00000000FFC00F
+00000000FFC00700000000FFC00700000000FFC00700038000FFC00700038000FFC00700038000
+FFC00000070000FFC00000070000FFC00000070000FFC00000070000FFC000000F0000FFC00000
+0F0000FFC000001E0000FFC000001E0000FFC000003E0000FFC000007E0000FFC00000FE0000FF
+C00003FE0000FFC0001FFE00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0031317EB036>
+I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FFC0003FF000FFC00007F800FFC00003F800FF
+C00000F800FFC00000F800FFC000007800FFC000007800FFC000003800FFC000003800FFC00000
+3800FFC000001C00FFC000001C00FFC007001C00FFC007001C00FFC007000000FFC007000000FF
+C007000000FFC00F000000FFC01F000000FFC03F000000FFFFFF000000FFFFFF000000FFFFFF00
+0000FFC03F000000FFC01F000000FFC00F000000FFC007000000FFC007000000FFC007000000FF
+C007000000FFC007000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C0000000FFFFFFF00000FFFFFFF00000FFFFFFF000002E317EB034>I<000003FF80018000003F
+FFF003800001FFFFFC0F800007FF007F1F80001FF8000FBF80003FE00003FF8000FF800000FF80
+01FF0000007F8003FE0000003F8007FC0000003F8007FC0000001F800FF80000001F801FF80000
+000F801FF00000000F803FF000000007803FF000000007807FF000000007807FE000000007807F
+E000000000007FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000000
+0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00007FFFFFE7FE0
+0007FFFFFE7FE00007FFFFFE7FE0000001FF807FF0000001FF803FF0000001FF803FF0000001FF
+801FF0000001FF801FF8000001FF800FF8000001FF8007FC000001FF8007FC000001FF8003FE00
+0001FF8001FF000001FF8000FF800001FF80003FE00003FF80001FF80007FF800007FF803F3F80
+0001FFFFFE1F8000003FFFF80780000003FFC0018037317BB041>I<FFFFFFC0FFFFFFC0FFFFFF
+C000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FF
+C00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000
+FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC000
+00FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC00000FFC00000FFC00000FFC000FFFFFFC0FFFFFFC0FFFFFFC01A317EB01F>73
+D<FFFFFFF00000FFFFFFF00000FFFFFFF0000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000007000FFC000007000FF
+C000007000FFC00000F000FFC00000F000FFC00000E000FFC00000E000FFC00001E000FFC00001
+E000FFC00003E000FFC00003E000FFC00007E000FFC0000FE000FFC0001FE000FFC0007FC000FF
+C003FFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02C317EB032>76 D<FFFF8000000001FFFF
+80FFFFC000000003FFFF80FFFFE000000007FFFF8000FFE000000007FF800000EFF00000000EFF
+800000EFF00000000EFF800000EFF00000000EFF800000E7F80000001CFF800000E7F80000001C
+FF800000E3FC00000038FF800000E3FC00000038FF800000E1FE00000070FF800000E1FE000000
+70FF800000E0FF000000E0FF800000E0FF000000E0FF800000E07F800001C0FF800000E07F8000
+01C0FF800000E03FC0000380FF800000E03FC0000380FF800000E03FC0000380FF800000E01FE0
+000700FF800000E01FE0000700FF800000E00FF0000E00FF800000E00FF0000E00FF800000E007
+F8001C00FF800000E007F8001C00FF800000E003FC003800FF800000E003FC003800FF800000E0
+01FE007000FF800000E001FE007000FF800000E000FF00E000FF800000E000FF00E000FF800000
+E000FF00E000FF800000E0007F81C000FF800000E0007F81C000FF800000E0003FC38000FF8000
+00E0003FC38000FF800000E0001FE70000FF800000E0001FE70000FF800000E0000FFE0000FF80
+0000E0000FFE0000FF800000E00007FC0000FF800000E00007FC0000FF800000E00007FC0000FF
+800000E00003F80000FF800001F00003F80000FF8000FFFFE001F000FFFFFF80FFFFE001F000FF
+FFFF80FFFFE000E000FFFFFF8049317EB04E>I<FFFFC000007FFFF0FFFFE000007FFFF0FFFFF0
+00007FFFF000FFF8000000F80000FFFC000000700000FFFE000000700000EFFF000000700000E7
+FF800000700000E3FF800000700000E1FFC00000700000E0FFE00000700000E07FF00000700000
+E07FF80000700000E03FFC0000700000E01FFE0000700000E00FFF0000700000E007FF80007000
+00E003FF8000700000E001FFC000700000E000FFE000700000E0007FF000700000E0007FF80070
+0000E0003FFC00700000E0001FFE00700000E0000FFF00700000E00007FF80700000E00003FF80
+700000E00001FFC0700000E00000FFE0700000E000007FF0700000E000007FF8700000E000003F
+FC700000E000001FFE700000E000000FFF700000E0000007FFF00000E0000003FFF00000E00000
+01FFF00000E0000000FFF00000E00000007FF00000E00000007FF00000E00000003FF00000E000
+00001FF00000E00000000FF00000E000000007F00000E000000003F00001F000000001F000FFFF
+E0000000F000FFFFE00000007000FFFFE000000070003C317EB041>I<00000FFE0000000000FF
+FFE000000007FFFFFC0000001FFC07FF0000003FE000FF800000FF80003FE00001FF00001FF000
+03FE00000FF80007FC000007FC0007FC000007FC000FF8000003FE001FF8000003FF001FF00000
+01FF003FF0000001FF803FF0000001FF803FF0000001FF807FE0000000FFC07FE0000000FFC07F
+E0000000FFC0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000
+FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0
+000000FFE07FE0000000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001FF
+803FF0000001FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE00
+000FFC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF0000
+0007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E>I<FFFFFFFFE000FFFFFFFFFE
+00FFFFFFFFFF8000FFC001FFE000FFC0003FF000FFC0001FF800FFC0000FFC00FFC0000FFC00FF
+C00007FE00FFC00007FE00FFC00007FF00FFC00007FF00FFC00007FF00FFC00007FF00FFC00007
+FF00FFC00007FF00FFC00007FF00FFC00007FE00FFC00007FE00FFC0000FFC00FFC0000FFC00FF
+C0001FF800FFC0003FF000FFC001FFE000FFFFFFFF8000FFFFFFFE0000FFFFFFE00000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000FFFFFFC00000FFFF
+FFC00000FFFFFFC0000030317EB038>I<FFFFFFFFC0000000FFFFFFFFFC000000FFFFFFFFFF80
+000000FFC001FFE0000000FFC0003FF0000000FFC0000FFC000000FFC00007FC000000FFC00007
+FE000000FFC00003FF000000FFC00003FF000000FFC00003FF800000FFC00003FF800000FFC000
+03FF800000FFC00003FF800000FFC00003FF800000FFC00003FF800000FFC00003FF000000FFC0
+0003FF000000FFC00007FE000000FFC00007FC000000FFC0000FFC000000FFC0003FF0000000FF
+C001FFE0000000FFFFFFFF80000000FFFFFFFC00000000FFFFFFFE00000000FFC003FF00000000
+FFC000FFC0000000FFC0007FE0000000FFC0003FE0000000FFC0003FF0000000FFC0001FF00000
+00FFC0001FF8000000FFC0001FF8000000FFC0001FF8000000FFC0001FF8000000FFC0001FF800
+0000FFC0001FFC000000FFC0001FFC000000FFC0001FFC000000FFC0001FFC004000FFC0001FFC
+00E000FFC0001FFE00E000FFC0000FFE00E000FFC0000FFF01C000FFC00007FF83C0FFFFFFC003
+FFFF80FFFFFFC000FFFF00FFFFFFC0000FFC003B317EB03E>82 D<001FF0018000FFFF038003FF
+FFC78007F00FFF800F8001FF801F00007F803F00001F803E00000F807E00000F807E00000780FE
+00000780FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC000000
+7FFFE000007FFFFE00003FFFFFC0001FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001FFFFFF
+00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000003FE00000003FE0000000
+1FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F000000FC0F000000FC0F800
+001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF000023
+317BB02E>I<3FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF003FE00FFC01FF007F000FFC00
+3F807E000FFC001F807C000FFC000F8078000FFC00078078000FFC00078070000FFC0003807000
+0FFC00038070000FFC00038070000FFC000380E0000FFC0001C0E0000FFC0001C0E0000FFC0001
+C0E0000FFC0001C000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000F
+FC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000
+00000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC
+00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000
+000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00
+000000000FFC000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF800032307DAF39>I<FFFF
+FFC003FFFFC0FFFFFFC003FFFFC0FFFFFFC003FFFFC000FFC0000007E00000FFC0000003C00000
+FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C000
+00FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C0
+0000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003
+C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC00000
+03C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC000
+0003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0000003C00000FFC0
+000003C00000FFC0000003C000007FC00000038000007FC00000078000007FE00000078000003F
+E000000F0000003FE000000F0000001FF000001E0000000FF800003E00000007FC00007C000000
+03FE0001F800000000FFC00FE0000000003FFFFF80000000000FFFFE000000000000FFF0000000
+3A317EB03F>I<007FF8000003FFFF000007FFFFC0000FE01FE0001FF007F0001FF003F8001FF0
+03FC001FF001FE000FE001FE0007C001FE00010001FE00000001FE00000001FE000001FFFE0000
+3FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F8001FE007F8001FE00FF0001FE00
+FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007FC00EFE003FF03CFF000FFFF87F
+F807FFF03FF800FF800FF825207E9F28>97 D<01F8000000FFF8000000FFF8000000FFF8000000
+0FF800000007F800000007F800000007F800000007F800000007F800000007F800000007F80000
+0007F800000007F800000007F800000007F800000007F800000007F800000007F80FF00007F87F
+FE0007F9FFFF8007FFE03FC007FF000FE007FE0007F007F80003F807F80003FC07F80003FC07F8
+0001FE07F80001FE07F80001FE07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07
+F80001FF07F80001FF07F80001FF07F80001FE07F80001FE07F80001FE07F80003FC07F80003FC
+07FC0007F807FE0007F007F7001FE007E3E07FC007C1FFFF0007807FFE0007001FE00028327EB1
+2E>I<0007FF00007FFFE000FFFFF003FC03F807F007FC0FE007FC1FE007FC3FC007FC3FC003F8
+7FC001F07F8000407F800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
+00FF8000007F8000007FC000007FC000003FC0000E3FE0000E1FE0001C0FF0001C07F8007803FF
+01F000FFFFE0007FFF800007FC001F207D9F25>I<00000007E0000003FFE0000003FFE0000003
+FFE00000003FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000
+001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000FF81FE000
+7FFF1FE001FFFFDFE003FE03FFE007F800FFE00FE0003FE01FE0001FE03FC0001FE03FC0001FE0
+7F80001FE07F80001FE07F80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001F
+E0FF80001FE0FF80001FE0FF80001FE07F80001FE07F80001FE07F80001FE03FC0001FE03FC000
+1FE01FC0003FE00FE0007FE007F001FFE003FC07DFF001FFFF9FFF007FFE1FFF000FF01FFF2832
+7DB12E>I<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E
+003FC0007E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FFFFFF
+FF80FFFFFFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F800000003FC0
+0000003FC00003801FC00003801FE00007800FF0000F0007F8001E0003FE00FC0000FFFFF80000
+3FFFE0000003FF000021207E9F26>I<0000FF000007FFC0001FFFE0003FC7F0007F0FF800FE0F
+F801FE0FF801FC0FF803FC07F003FC03E003FC01C003FC000003FC000003FC000003FC000003FC
+000003FC000003FC0000FFFFF800FFFFF800FFFFF80003FC000003FC000003FC000003FC000003
+FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
+03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
+0003FC000003FC00007FFFF0007FFFF0007FFFF0001D327EB119>I<001FF007E000FFFE3FF001
+FFFF7FF807F83FF1F80FE00FE1F80FE00FE0F01FC007F0601FC007F0003FC007F8003FC007F800
+3FC007F8003FC007F8003FC007F8001FC007F0001FC007F0000FE00FE0000FE00FE00007F83FC0
+0007FFFF000006FFFE00000E1FF000000E000000001E000000001E000000001F000000001F8000
+00001FFFFFC0000FFFFFF8000FFFFFFE0007FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00
+007FE07E00000FF0FC000007F0FC000003F0FC000003F0FC000003F0FC000003F07E000007E03F
+00000FC01FC0003F800FF801FF0007FFFFFE0000FFFFF000001FFF8000252F7E9F29>I<01F800
+000000FFF800000000FFF800000000FFF8000000000FF80000000007F80000000007F800000000
+07F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F807F8000007F83FFF0000
+07F87FFF800007F8F03FC00007F9C01FE00007FB000FE00007FE000FF00007FE000FF00007FC00
+0FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
+07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
+07F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029327DB12E>I<03C0000FF0000FF0
+001FF8001FF8001FFC001FF8001FF8000FF0000FF00003C0000000000000000000000000000000
+0000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<01F800FF
+F800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
+F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
+F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
+F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>108
+D<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE380
+3FC007F3000FE6001FC007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8
+001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000F
+F0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
+0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8
+000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FF
+FFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03F
+FF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF000
+07FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
+07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000
+003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003F
+C07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000
+1FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0
+003FC01FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024
+207E9F29>I<01F80FF000FFF87FFE00FFF9FFFF80FFFFE07FC00FFF001FE007FE000FF007F800
+07F807F80007FC07F80003FC07F80003FE07F80003FE07F80001FE07F80001FF07F80001FF07F8
+0001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FE07F80003FE07
+F80003FE07F80003FC07F80007FC07FC0007F807FE000FF007FF001FE007FBE07FC007F9FFFF00
+07F87FFE0007F81FE00007F800000007F800000007F800000007F800000007F800000007F80000
+0007F800000007F800000007F800000007F800000007F8000000FFFFC00000FFFFC00000FFFFC0
+0000282E7E9F2E>I<03F03F00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE
+0FF807FC07F007FC03E007FC008007F8000007F8000007F8000007F8000007F8000007F8000007
+F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000
+07F8000007F80000FFFFE000FFFFE000FFFFE0001D207E9F22>114 D<00FF870007FFEF001FFF
+FF003F007F003C001F0078000F00F8000700F8000700F8000700FC000700FF000000FFF800007F
+FFC0003FFFF0003FFFFC000FFFFE0007FFFF0001FFFF80001FFF800000FFC000001FC060000FC0
+E00007C0E00007C0F00007C0F8000780F8000F80FE000F00FF803E00FFFFFC00F3FFF800C07FC0
+001A207D9F21>I<00380000380000380000380000380000780000780000780000F80000F80001
+F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07F80007F80007F80007F80007F80007F80007
+F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80707F80707F80707
+F80707F80707F80707F80703F80E03FC0E01FE1C00FFF8007FF0000FE0182E7EAD20>I<01F800
+03F000FFF801FFF000FFF801FFF000FFF801FFF0000FF8001FF00007F8000FF00007F8000FF000
+07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
+0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
+07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8001FF00007F8001FF00003F800
+3FF00003F8006FF00001FE03CFF80000FFFF8FFF80007FFF0FFF80000FFC0FFF8029207D9F2E>
+I<FFFF801FFEFFFF801FFEFFFF801FFE07F80003E007F80001C007FC0003C003FC00038003FE00
+078001FE00070001FF000F0000FF000E0000FF801E00007F801C00007FC03C00003FC03800003F
+E03800001FE07000001FE07000000FF0E000000FF0E000000FF9E0000007F9C0000007FFC00000
+03FF80000003FF80000001FF00000001FF00000000FE00000000FE000000007C000000007C0000
+000038000027207E9F2C>I<FFFF00FFFCFFFF00FFFCFFFF00FFFC07F8001F8003FC001E0001FE
+003C0000FF00780000FF80F000007FC1E000003FC1E000001FE3C000000FF780000007FF000000
+07FE00000003FE00000001FE00000000FF00000001FF80000001FFC0000003FFE00000079FF000
+000F0FF000001E07F800003C03FC00007801FE0000F001FF0001E000FF8001E0007FC007E0003F
+C0FFF801FFFEFFF801FFFEFFF801FFFE27207E9F2C>120 D<FFFF801FFEFFFF801FFEFFFF801F
+FE07F80003E007F80001C007FC0003C003FC00038003FE00078001FE00070001FF000F0000FF00
+0E0000FF801E00007F801C00007FC03C00003FC03800003FE03800001FE07000001FE07000000F
+F0E000000FF0E000000FF9E0000007F9C0000007FFC0000003FF80000003FF80000001FF000000
+01FF00000000FE00000000FE000000007C000000007C0000000038000000003800000000700000
+00007000000000F000003C00E000007E01E00000FF01C00000FF03800000FF07800000FF0F0000
+007A3E0000007FFC0000003FF80000000FC0000000272E7E9F2C>I E /Fl
+85 124 df<001F83E000706E3000C07C780180F8780380F0780700700007007000070070000700
+70000700700007007000070070000700700007007000FFFFFFC007007000070070000700700007
+007000070070000700700007007000070070000700700007007000070070000700700007007000
+0700700007007000070070000700700007007000070078007FE3FF801D2380A21C>11
+D<001FC0000070200000C010000180380003807800070078000700300007000000070000000700
+000007000000070000000700000007000000FFFFF8000700780007003800070038000700380007
+003800070038000700380007003800070038000700380007003800070038000700380007003800
+07003800070038000700380007003800070038007FE1FF80192380A21B>I<001FD80000703800
+00C078000180780003807800070038000700380007003800070038000700380007003800070038
+000700380007003800FFFFF8000700380007003800070038000700380007003800070038000700
+380007003800070038000700380007003800070038000700380007003800070038000700380007
+00380007003800070038007FF3FF80192380A21B>I<000FC07F00007031C08000E00B00400180
+1E00E003803E01E007003C01E007001C00C007001C000007001C000007001C000007001C000007
+001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00E007001C00E007001C00E0
+07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00
+E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E07FF1FF
+CFFE272380A229>I<7038F87CFC7EFC7E743A0402040204020402080408041008100820104020
+0F0F7EA218>34 D<70F8FCFC7404040404080810102040060F7CA20E>39
+D<00200040008001000300060004000C000C00180018003000300030007000600060006000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000300030
+00180018000C000C0004000600030001000080004000200B327CA413>I<800040002000100018
+000C000400060006000300030001800180018001C000C000C000C000E000E000E000E000E000E0
+00E000E000E000E000E000E000E000E000C000C000C001C0018001800180030003000600060004
+000C00180010002000400080000B327DA413>I<00018000000180000001800000018000000180
+000001800000018000000180000001800000018000000180000001800000018000000180000001
+800000018000FFFFFFFEFFFFFFFE00018000000180000001800000018000000180000001800000
+018000000180000001800000018000000180000001800000018000000180000001800000018000
+1F227D9C26>43 D<70F8FCFC7404040404080810102040060F7C840E>I<FFE0FFE00B027F8B10>
+I<70F8F8F87005057C840E>I<0000800001800001800003000003000003000006000006000006
+00000C00000C00000C0000180000180000180000300000300000300000600000600000600000C0
+0000C00000C0000180000180000180000180000300000300000300000600000600000600000C00
+000C00000C0000180000180000180000300000300000300000600000600000600000C00000C000
+00C0000011317DA418>I<01F000071C000C06001803003803803803807001C07001C07001C070
+01C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
+01E0F001E07001C07001C07001C07803C03803803803801C07000C0600071C0001F00013227EA0
+18>I<008003800F80F38003800380038003800380038003800380038003800380038003800380
+038003800380038003800380038003800380038003800380038007C0FFFE0F217CA018>I<03F0
+000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003
+C00003C0000780000700000E00001C0000180000300000600000C0000180000100000200200400
+200800201800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E0010070020078040
+07C07807C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C0000
+0F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C040078020
+0780100F000C1C0003F00013227EA018>I<000200000600000E00000E00001E00001E00002E00
+004E00004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00
+200E00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF0
+15217FA018>I<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000
+0010000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001
+E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<00
+7E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000F0F800F3
+0C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E070
+01E03801C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000007FFFE0
+7FFFC07FFFC0400080C00100800100800200800200000400000800000800001000003000002000
+00600000600000600000E00000C00000C00001C00001C00001C00001C00003C00003C00003C000
+03C00003C00003C00003C00003C00001800013237DA118>I<01F800060E000803001001802001
+802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F
+00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C03000
+801803000E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F0
+01C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E006
+19E003E1E00001C00001C00001C0000380000380300300780700780600700C002018001030000F
+C00013227EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C940E>I<70F8F8
+F870000000000000000000000070F8F8F87808080808101010204040051F7C940E>I<FFFFFFFE
+FFFFFFFE0000000000000000000000000000000000000000000000000000000000000000FFFFFF
+FEFFFFFFFE1F0C7D9126>61 D<07E01838201C400E800FF00FF00FF00F000F000E001C00380030
+006000C000C000800080018001000100010001000100010000000000000000000000038007C007
+C007C0038010237DA217>63 D<000FE00000701C00008002000300018004000040080000200800
+00201007C01020183008203008084060040440C0078441C0038481C00382838003828380038283
+8003828380038283800382838003828380038281C0038241C0038240C007824060078420300B84
+201831881007C0F00800000008000000040000000300000E00800078007007C0000FFC001F237D
+A226>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000000DF0
+000008F0000008F0000010F800001078000010780000203C0000203C0000203C0000401E000040
+1E0000401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0020003C004
+0003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>I<FFFFF8000F
+800E0007800780078003C0078003E0078001E0078001F0078001F0078001F0078001F0078001F0
+078001E0078003E0078007C007800F8007803E0007FFFE0007800780078003C0078001E0078001
+F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078001F0078001F00780
+03E0078007C00F800F00FFFFFC001D227EA123>I<0007E0100038183000E0063001C001700380
+00F0070000F00E0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8
+000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800000078000010
+7C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000E002
+0000381C000007E0001C247DA223>I<FFFFF0000F801E0007800700078003C0078001C0078000
+E0078000F007800078078000780780007C0780003C0780003C0780003C0780003E0780003E0780
+003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C0780007C07
+80007807800078078000F0078000E0078001E0078003C0078007000F801E00FFFFF8001F227EA1
+25>I<FFFFFFC00F8007C0078001C0078000C00780004007800040078000600780002007800020
+0780002007802020078020000780200007802000078060000780E00007FFE0000780E000078060
+000780200007802000078020000780200807800008078000080780001007800010078000100780
+00300780003007800070078000E00F8003E0FFFFFFE01D227EA121>I<FFFFFFC00F8007C00780
+01C0078000C0078000400780004007800060078000200780002007800020078020200780200007
+80200007802000078060000780E00007FFE0000780E00007806000078020000780200007802000
+078020000780000007800000078000000780000007800000078000000780000007800000078000
+000FC00000FFFE00001B227EA120>I<0007F008003C0C1800E0021801C001B8038000F8070000
+780F0000381E0000381E0000183C0000183C0000187C0000087800000878000008F8000000F800
+0000F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C0000783C
+0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C08
+0007F00020247DA226>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E0
+078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FFFF
+E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
+01E0078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF20227EA125>I<FFFC
+0FC007800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800FC0FFFC0E227EA112>I<03FFF0001F
+00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
+00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F
+00F80F00F80E00F01E00401C0020380018700007C00014237EA119>I<FFFC03FF000FC000F800
+078000600007800040000780008000078001000007800200000780040000078008000007801000
+0007802000000780400000078080000007818000000783C000000787E000000789E000000788F0
+00000790F0000007A078000007C03C000007803C000007801E000007800F000007800F00000780
+078000078007C000078003C000078001E000078001E000078000F000078000F8000FC000FC00FF
+FC07FF8021227EA126>I<FFFE00000FC000000780000007800000078000000780000007800000
+078000000780000007800000078000000780000007800000078000000780000007800000078000
+000780000007800000078000000780000007800000078000800780008007800080078000800780
+01800780018007800100078003000780030007800F000F803F00FFFFFF0019227EA11E>I<FFC0
+0003FF0FC00003F007C00003E005E00005E005E00005E004F00009E004F00009E004F00009E004
+780011E004780011E004780011E0043C0021E0043C0021E0043C0021E0041E0041E0041E0041E0
+040F0081E0040F0081E0040F0081E004078101E004078101E004078101E00403C201E00403C201
+E00401E401E00401E401E00401E401E00400F801E00400F801E00400F801E004007001E00E0070
+01E01F007003F0FFE0203FFF28227EA12D>I<FF8007FF07C000F807C0007005E0002004F00020
+04F0002004780020047C0020043C0020041E0020041F0020040F002004078020040780200403C0
+200401E0200401E0200400F0200400F8200400782004003C2004003E2004001E2004000F200400
+0F20040007A0040003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020
+227EA125>I<000FE00000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03C
+0000783C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003E
+F800003EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783E0000
+F81E0000F00F0001E00F0001E0078003C003C0078000E00E0000783C00000FE0001F247DA226>
+I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E0078003E0078003E00780
+03E0078003E0078003E0078003C0078007C00780078007800F0007803C0007FFF0000780000007
+800000078000000780000007800000078000000780000007800000078000000780000007800000
+0780000007800000078000000FC00000FFFC00001B227EA121>I<000FE00000783C0000E00E00
+03C00780078003C00F0001E00E0000E01E0000F03E0000F83C0000787C00007C7C00007C780000
+3C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
+003E7800003C7C00007C7C00007C3C0000783C0000781E0380F00E0420E00F0801E0078813C003
+C8178000E80E00007C3C02000FEC0200000C0200000C0200000E0600000F0E000007FC000007FC
+000007F8000003F8000001E01F2D7DA226>I<FFFFE000000F803C000007800E00000780078000
+078007C000078003C000078003E000078003E000078003E000078003E000078003E000078003C0
+00078007C000078007800007800E000007803C000007FFE000000780700000078038000007801C
+000007801E000007800E000007800F000007800F000007800F000007800F000007800F80000780
+0F800007800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C0021
+237EA124>I<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020
+F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F0
+000070800070800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247D
+A21B>I<7FFFFFF87807807860078018400780084007800840078008C007800C80078004800780
+048007800480078004000780000007800000078000000780000007800000078000000780000007
+800000078000000780000007800000078000000780000007800000078000000780000007800000
+078000000780000007800000078000000FC00003FFFF001E227EA123>I<FFFC07FF0FC000F807
+800070078000200780002007800020078000200780002007800020078000200780002007800020
+078000200780002007800020078000200780002007800020078000200780002007800020078000
+20078000200780002007800020078000200380004003C0004003C0004001C0008000E000800060
+010000300600001C08000003F00020237EA125>I<FFF0007FC01F80001F000F00000C00078000
+0C000780000800078000080003C000100003C000100003E000300001E000200001E000200000F0
+00400000F000400000F000400000780080000078008000007C018000003C010000003C01000000
+1E020000001E020000001F020000000F040000000F040000000F8C000000078800000007880000
+0003D000000003D000000003F000000001E000000001E000000000C000000000C000000000C000
+0022237FA125>I<FFF03FFC03FE1F8007E000F80F0003C000700F0003C000200F0003C0002007
+8001E00040078001E00040078001E0004003C002F0008003C002F0008003C002F0008001E00478
+010001E00478010001E00478010000F0083C020000F0083C020000F0083C020000F8183E060000
+78101E04000078101E0400007C101E0400003C200F0800003C200F0800003C200F0800001E4007
+9000001E40079000001E40079000000F8003E000000F8003E000000F8003E00000070001C00000
+070001C00000070001C0000003000180000002000080002F237FA132>I<7FF807FF0007E001F8
+0003C000E00003E000C00001E000800000F001000000F80300000078020000007C040000003E0C
+0000001E080000001F100000000FB000000007A000000007C000000003E000000001E000000001
+F000000003F80000000278000000047C0000000C3E000000081E000000101F000000300F800000
+20078000004007C00000C003E000008001E000010001F000030000F000070000F8001F8001FC00
+FFE007FFC022227FA125>I<FFF0007FC01F80001F000F80000C00078000080007C000180003E0
+00100001E000200001F000200000F000400000F800C000007C008000003C010000003E01000000
+1E020000001F040000000F84000000078800000007D800000003D000000003E000000001E00000
+0001E000000001E000000001E000000001E000000001E000000001E000000001E000000001E000
+000001E000000001E000000001E000000003E00000003FFF000022227FA125>I<7FFFFE7E003E
+78003C7000786000784000F0C000F0C001E08003C08003C0800780000780000F00001F00001E00
+003C00003C0000780000780000F00001F00001E00103C00103C0010780010780030F00031E0002
+1E00023C00063C000E78001EF8007EFFFFFE18227DA11E>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA4
+0E>I<0804100820102010402040208040804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>I<
+FEFE06060606060606060606060606060606060606060606060606060606060606060606060606
+0606060606060606FEFE07317FA40E>I<08102020404080808080B8FCFC7C38060F7DA20E>96
+D<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7001E07003C07007807
+00700700F00708F00708F00708F00F087817083C23900FC1E015157E9418>I<0E0000FE00001E
+00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E
+61C00E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E
+001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780
+380300780000700000F00000F00000F00000F00000F00000F00000F00000700000780040380040
+1C00800C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000
+E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800
+E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02
+E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0FF
+FFE0F00000F00000F00000F00000F000007000007800203800201C00400E008007030000FC0013
+157F9416>I<003C00C6018F038F030F070007000700070007000700070007000700FFF8070007
+00070007000700070007000700070007000700070007000700070007000700070007807FF81023
+80A20F>I<00007001F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C
+07000E0E000F1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F060003040
+0018C00018C00018C000186000306000303800E00E038003FE0015217F9518>I<0E0000FE0000
+1E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F80
+0E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
+0E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000
+0000000000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E000E00
+0E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E001C000000000
+00000000000000000000000001E00FE001E000E000E000E000E000E000E000E000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F18061803E000B2C82A1
+0F>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
+0E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C00
+0E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00
+FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC0
+7F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E003800E00E00
+3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
+003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80
+E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
+700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E070
+0070700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E01C01C00E
+038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E
+0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F00
+0E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<01F8
+200704600E02601C01603801E07800E07800E0F000E0F000E0F000E0F000E0F000E0F000E0F000
+E07000E07800E03801E01C01E00C02E0070CE001F0E00000E00000E00000E00000E00000E00000
+E00000E00000E00000E0000FFE171F7E941A>I<0E3CFE461E8F0F0F0F060F000E000E000E000E
+000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>I<0F8830786018C018C0
+08C008E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>
+I<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E00
+0E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00
+F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
+700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E00780E00300E00200E002007
+004007004003808003808003808001C10001C10000E20000E20000E20000740000740000380000
+380000380000100017157F941A>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010
+07026020070270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D
+0000F00F0000F00F0000600600006006000060060020157F9423>I<FF83FE1F01F00E00C00700
+8003810003830001C20000E400007800007800003800003C00004E00008E000187000103800201
+C00401E00C00E03E01F0FF03FE17157F941A>I<FFC1FE1E00780E00300E00200E002007004007
+004003808003808003808001C10001C10000E20000E20000E20000740000740000380000380000
+3800001000001000002000002000002000004000F04000F08000F180004300003C0000171F7F94
+1A>I<3FFFC0380380300780200700600E00401C00403C0040380000700000E00001E00001C000
+0380400700400F00400E00C01C0080380080780180700780FFFF8012157F9416>I<FFFFFE1701
+808C18>I E /Fm 7 85 df<0000040000000006000000000E000000001E000000001E00000000
+3E000000003F000000004F000000004F000000008F000000008F000000010F0000000107800000
+02078000000207800000040780000004078000000807C000000803C000001003C000001003C000
+002003C000003FFFE000004001E000004001E000008001E000008001E000010001E000010000F0
+00020000F000060000F000040000F0000C0000F0003E0001F800FF800FFF8021237EA225>65
+D<03FFF0003E00003C00003C00003C00003C00003C000078000078000078000078000078000078
+0000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003C0
+0003C00003C00003C00003C00003C00007800007C000FFFC0014227EA112>73
+D<03FFE00FF8003E0007E0003C000380003C000200003C000400003C000800003C001000007800
+20000078008000007801000000780200000078040000007808000000F018000000F038000000F0
+7C000000F13C000000F23E000000F41E000001E81F000001F00F000001E00F000001E007800001
+E007800001E003C00003C003C00003C001E00003C001E00003C000F00003C000F00003C000F800
+078000F80007C000FC00FFFC07FF8025227EA126>75 D<03FFFFC0003E00F0003C0078003C003C
+003C003E003C001E003C003E0078003E0078003E0078003E0078003E0078003C0078007C00F000
+7800F000F000F001E000F0078000FFFE0000F0000001E0000001E0000001E0000001E0000001E0
+000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FF
+FC00001F227EA121>80 D<03FFFF0000003E01E000003C007800003C003C00003C003C00003C00
+3E00003C003E000078003E000078003E000078003E000078003E000078007C00007800780000F0
+00F00000F001E00000F007800000FFFC000000F00C000000F007000001E007000001E003800001
+E003800001E003C00001E003C00001E003C00003C007C00003C007C00003C007C00003C007C000
+03C007C04003C007C080078007C08007C003E100FFFC01E3000000007C0022237EA124>82
+D<000FC0800030318000C00B0001800700038007000300030007000300070003000E0002000E00
+02000F0002000F0000000F0000000F80000007E0000007FE000003FFC00001FFE000007FF00000
+0FF8000000F8000000780000003C0000003C0000003C0020003C00400038004000380040003800
+600030006000700060006000F000C000E8018000C607000081FC000019247DA21B>I<1FFFFFFE
+3C03E03E3803C00C3003C0042003C0046003C0044003C00440078004C007800480078004800780
+040007800000078000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E
+0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C000000
+3C0000007C000000FC00003FFFF0001F227AA123>I E /Fn 1 4 df<040004000400C460E4E03F
+800E003F80E4E0C4600400040004000B0D7E8D11>3 D E /Fo 56 122 df<007E0001C1800301
+800703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87
+F8151D809C17>12 D<004000800100020006000C000C0018001800300030007000600060006000
+E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030003000180018
+000C000C00060002000100008000400A2A7D9E10>40 D<800040002000100018000C000C000600
+060003000300038001800180018001C001C001C001C001C001C001C001C001C001C001C001C001
+8001800180038003000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F0
+701010101020204080040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00
+010003000600060006000C000C000C0018001800180030003000300060006000C000C000C00180
+01800180030003000300060006000C000C000C00180018001800300030003000600060006000C0
+00C00010297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E0
+07E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007
+003F00C70007000700070007000700070007000700070007000700070007000700070007000700
+070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F807
+7007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE10
+1C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C00
+1C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C0000
+1C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C0030
+1C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC012
+1C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E00
+0F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<4000007FFF807F
+FF007FFF0040020080040080040080080000100000100000200000600000400000C00000C00001
+C00001800001800003800003800003800003800007800007800007800007800007800007800003
+0000111D7E9B15>55 D<03E00C301008200C20066006600660067006780C3E083FB01FE007F007
+F818FC307E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<60F0F0
+600000000000000000000060F0F06004127C910C>58 D<000600000006000000060000000F0000
+000F0000000F00000017800000178000001780000023C0000023C0000023C0000041E0000041E0
+000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C000600
+3E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F0038
+0F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C
+0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E
+9B1D>I<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000
+0000700000807800008078000080380000801C0001001C0001000E000200070004000180080000
+E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F
+0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E0
+0F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C
+000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00
+020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02010F00010F00
+020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F
+00080F00080F000C0F00040F00040F02040F02000F02000F02000F06000FFE000F06000F02000F
+02000F02000F02000F00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B
+1B>I<001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080
+7800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F
+80700007807800078078000780380007801C0007801C0007800E00078007000B800180118000E0
+6080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F00
+3C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F
+003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
+0F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F000F000F000F000F000F00
+0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<
+FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E00278
+0008F004780008F004780008F0047800087808780008780878000878087800083C107800083C10
+7800083C107800081E207800081E207800081E207800080F407800080F40780008078078000807
+807800080780780008030078001C03007800FF8307FF80211C7E9B26>77
+D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400083C
+0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E40008
+00F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B
+1F>I<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C0
+780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0
+E000003F80001B1E7E9C20>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F00
+1E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F
+00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F003810
+0F003C20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E0
+0080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C000
+03C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<
+7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
+0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E
+>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F
+0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
+0F0004000F0004000F0004000700080007800800038010000180100000C020000070C000001F00
+001A1D7E9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007
+801F00200780278020078027802003C027804003C043C04003C043C04003E043C04001E081E080
+01E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A
+00003E007C00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F
+9B2B>87 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C0060
+1C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00
+001C00001C00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00
+C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D
+7F9C17>I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C30
+07C00E127E9112>I<003F00000700000700000700000700000700000700000700000700000700
+00070003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E00700
+600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006
+FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C
+0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E
+000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C
+00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001
+C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00001C
+00001C00001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03801C
+03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014
+1D7F9C17>I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC00001C00001C
+00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C001C08001C
+10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF
+9FE0131D7F9C16>107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C00
+1C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC7E
+07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C
+01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
+1C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C03801C03801C
+03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<
+03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C0600180
+7003803003001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00
+C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00
+001C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<FCE01D301E781E781C30
+1C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>114
+D<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D12
+7F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C00
+1C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C03801C03
+801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1B8003E3
+F014127F9117>I<FF07E03C03801C01001C01000E02000E020007040007040007040003880003
+880003D80001D00001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C
+0701801C0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E800
+03A0E80003C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F03
+0007020003840001C80001D80000F00000700000780000F800009C00010E00020E000607000403
+801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E020007040007040007
+040003880003880003D80001D00001D00000E00000E00000E000004000004000008000008000F0
+8000F10000F300006600003C0000131A7F9116>I E /Fp 8 117 df<78FCFCFCFC7806067D850D
+>46 D<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF000
+001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF
+0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C
+7E9B24>65 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C0
+7C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F
+00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1E01F80701F00781F003C1F
+003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00781F80701EC1E01C3F0017
+1D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000
+F800007800007801803C01801C03000E0E0003F80011127E9115>I<FE3E00FE47001E8F801E8F
+801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF0
+00FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01C
+C01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F00
+1F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>I
+E /Fq 38 122 df<0E1E1E1E1E02020404080810204080070F7D840F>44
+D<70F8F8F0E005057A840F>46 D<0001000300030006001E002E03CE001C001C001C001C003800
+3800380038007000700070007000E000E000E000E001C001C001C001C003800380038003800780
+FFFC10217AA019>49 D<0000180000380000380000700000700000700000E00000E00000E00000
+C00001C0000180000380000300000300000600000600000C00000C000018000010000031800061
+C00043800083800183800303800207000407000807003FC700403E00800FF0000E00000E00001C
+00001C00001C00001C00003800003800003800003000152B7EA019>52 D<00400400703800FFF0
+00FFE000BF80008000010000010000010000010000020000020000023E0002C3000501800601C0
+0401C00001E00001E00001E00001E00001E00001E07003C0F003C0F003C0E00780800700800F00
+800E00401C0040380030E0000F800016227BA019>I<0003E0000C1000380800603800C07801C0
+780380300700000700000E00001E00001E00001C7C003C86003D03007A03807C03807801C07803
+C0F803C0F003C0F003C0F003C0E00780E00780E00780E00700E00F00E00E00E01C006018006030
+0030E0000F800015227AA019>I<000FC000386000703000E03001C0380380380780380700380F
+00380F00380F00381E00781E00781E00781E00F81E00F01C00F00E01F00E02F00605E00309E001
+F1E00003C00003C0000380000700000700600E00F00C00F01800E0300080600041C0003F000015
+227BA019>57 D<0000030000000300000007000000070000000F0000000F0000001F0000002F00
+00002F0000004F0000004F80000087800000878000010780000207800002078000040780000407
+800008078000080780001007800030078000200780007FFF80004007C0008007C0008003C00100
+03C0030003C0020003C0040003C0040003C00C0003C03C0007C0FF003FFC1E237DA224>65
+D<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E00038000
+0E000700000E000F000004000E000004001E000004003C000004003C0000080078000000007800
+0000007800000000F000000000F000000000F000000000F000000000F000000000E000000000E0
+00002000E000002000E000004000E000004000F000008000700000800070000100003800020000
+18000400001C0008000006003000000381C0000000FE000000212479A223>67
+D<00FFFFF000000F003C00000F000E00000F000700001E000380001E000380001E0001C0001E00
+01C0003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001E000780001E00078
+0001E000F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001
+E0000F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078001C000
+07800700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F000180000F
+000180001E000180001E000180001E000100001E000100003C000100003C000100003C01010000
+3C01000000780200000078020000007806000000780E000000FFFC000000F00C000000F00C0000
+00F00C000001E008000001E008000001E008040001E000080003C000080003C000080003C00010
+0003C000100007800020000780006000078000C000078001C0000F8007C000FFFFFF800021227D
+A121>I<00FFF8000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C
+0000780000780000780000780000F00000F00000F00000F00001E00001E00001E00001E00003C0
+0003C00003C00003C0000780000780000780000780000F8000FFF80015227DA113>73
+D<0007FFC000003C0000003C0000003C00000078000000780000007800000078000000F0000000
+F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C00000
+03C00000078000000780000007800000078000000F0000000F0000380F0000780F0000F81E0000
+F81E0000F03C0000403800004070000021E000001F8000001A237CA11A>I<00FFF807FC000F00
+01E0000F0001C0000F000100001E000200001E000400001E001000001E002000003C004000003C
+008000003C010000003C04000000780800000078180000007838000000787C000000F0BC000000
+F23C000000F41E000000F81E000001F01F000001E00F000001E00F000001E00F800003C0078000
+03C007800003C003C00003C003C000078003C000078001E000078001E000078001E0000F8001F0
+00FFF80FFE0026227DA125>I<00FF800007FC000F80000F80000F80001780000F800017800017
+80002F000013C0002F000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E
+000023C0021E000043C0043C000043C0043C000043C0083C000041E0083C000081E01078000081
+E02078000081E02078000081E04078000101E040F0000101E080F0000101E100F0000101E100F0
+000200F201E0000200F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400
+F003C0000C00E003C0001E00C007C000FFC0C07FFC002E227DA12C>77 D<00FFFFE0000F003800
+0F001E000F000E001E0007001E0007001E0007001E0007003C000F003C000F003C000F003C001E
+0078001E0078003C00780078007800E000F003C000FFFE0000F0000000F0000001E0000001E000
+0001E0000001E0000003C0000003C0000003C0000003C000000780000007800000078000000780
+00000F800000FFF8000020227DA121>80 D<00FFFFC0000F0070000F003C000F001C001E000E00
+1E000E001E000F001E000F003C001E003C001E003C001E003C003C0078003800780070007801E0
+0078078000FFFC0000F00E0000F0070000F0038001E003C001E003C001E003C001E003C003C007
+8003C0078003C0078003C0078007800F0007800F0107800F01078007020F800702FFF8038C0000
+00F020237DA124>82 D<0001F020000E0C40001802C0003001C0006001C000E0018000C0018001
+C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF000000FFE000
+007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020001C0020001C
+0020001C00200018006000380060003000700060007000C000C8018000C607000081FC00001B24
+7DA21B>I<1FFFFFF81E03C0381803C0183003C01820078018200780184007801040078010400F
+0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C0000003C000000
+3C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000F00000
+01E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I<FFF001FF1F800078
+0F0000600F0000600F0000400F0000800F0000800F0001000F0003000F0002000F8004000F8004
+0007800800078008000780100007802000078020000780400007804000078080000781000007C1
+000003C2000003C2000003C4000003C8000003C8000003D0000003D0000003E0000003C0000003
+C00000038000000180000001000000202376A124>86 D<00F8C00185C00705C00E03800E03801C
+03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C2030
+5C40308C400F078014157B9419>97 D<007E0001C1000301800703800E07801C07803C00003800
+00780000780000780000F00000F00000F00000F00000F00100700100700200300C001830000FC0
+0011157B9416>99 D<00003C0003F80000380000380000380000700000700000700000700000E0
+0000E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C0380380700780700
+780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F078016237B
+A219>I<00F803840E021C023C0238027804F018FFE0F000F000E000E000E000E000E002E00260
+04701830600F800F157A9416>I<00003E0000470000CF00018F00018600038000038000038000
+0700000700000700000700000700000E0000FFF0000E00000E00000E00001C00001C00001C0000
+1C00001C0000380000380000380000380000380000700000700000700000700000700000E00000
+E00000E00000E00000C00001C00001C000718000F18000F300006200003C0000182D82A20F>I<
+001F180030B800E0B801C07001C0700380700780700700E00F00E00F00E00F00E01E01C01E01C0
+1E01C01E01C01E03800E03800E0780060B8006170001E700000700000700000E00000E00000E00
+701C00F01800F0300060E0003F8000151F7E9416>I<00F0000FE00000E00000E00000E00001C0
+0001C00001C00001C000038000038000038000038000070000071F0007218007C0C00F00E00F00
+E00E00E00E00E01C01C01C01C01C01C01C01C0380380380380380380380704700708700E08700E
+10700610E006206003C016237DA219>I<00C001E001C001C00000000000000000000000000000
+00001C002300430043008700870087000E000E001C001C001C0038003800384070807080708071
+0032001C000B217BA00F>I<01E01FC001C001C001C0038003800380038007000700070007000E
+000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E200E200
+640038000B237CA20C>108 D<1C0F80F8002610C10C0047606606008780780700878078070087
+0070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01C01C00
+1C01C01C001C01C03820380380384038038070403803807080380380308070070031003003001E
+0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E01C00E01C00E
+01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016157B941B>I<
+007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003C0
+F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1F00262180474
+1C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0780380
+7003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C00
+001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C08701808700000E00000E
+00000E00000E00001C00001C00001C00001C000038000038000038000038000070000030000012
+157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00000FF00007FC0003
+FE00003E00000F00000700700700F00600F00600E004004008002030001FC00011157D9414>I<
+00C001C001C001C001C003800380038003800700FFF8070007000E000E000E000E001C001C001C
+001C003800380038003810702070207040708031001E000D1F7C9E10>I<1E00602300E04380E0
+4381C08381C08701C08701C00703800E03800E03800E03801C07001C07001C07001C07081C0E10
+180E101C0E101C1E200C262007C3C015157B941A>I<1E00302300704380704380E08380E08700
+E08700E00701C00E01C00E01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F
+000C3E0003CE00000E00000E00001C00601C00F03800F03000E0600080C0004380003E0000141F
+7B9418>121 D E /Fr 1 4 df<01800180018001804182F18F399C0FF003C003C00FF0399CF18F
+4182018001800180018010127E9215>3 D E /Fs 16 118 df<00FE0007FF800E07E01803F020
+01F82000F840007C40007CF8007EFC007EFC003EFC003EFC003E78007E00007E00007C00007C00
+00F80000F80001F00001E00003C0000780000700000E00001C0000380000700000600000C00001
+80020300020600040C000418000410000C3FFFFC7FFFF8FFFFF8FFFFF817287DA71E>50
+D<FFFFFFFF80FFFFFFFF8007E0001F8003E000078003E00001C003E00000C003E00000C003E000
+004003E000004003E000004003E000004003E000002003E001002003E001002003E001000003E0
+01000003E003000003E003000003E00F000003FFFF000003FFFF000003E00F000003E003000003
+E003000003E001000003E001001003E001001003E001001003E000001003E000002003E0000020
+03E000002003E000002003E000006003E000006003E00000E003E00001E003E00003C007E0001F
+C0FFFFFFFFC0FFFFFFFFC024297EA829>69 D<FFFF80FFFF8007F00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00007F000FFFF80FFFF8011297EA816>73
+D<FFE0001FFFFFF0001FFF03F80001F002F80000E0027C000040027E000040023E000040021F00
+0040021F800040020F8000400207C000400207E000400203E000400201F000400201F800400200
+F8004002007C004002007E004002003E004002001F004002001F804002000F8040020007C04002
+0003E040020003E040020001F040020000F840020000F8400200007C400200003E400200003E40
+0200001F400200000FC00200000FC002000007C002000003C002000003C007000001C00F800000
+C0FFF80000C0FFF800004028297EA82D>78 D<0001FF0000000F01E000003C0078000078003C00
+00E0000E0001E0000F0003C000078007800003C00F800003E01F000001F01F000001F03E000000
+F83E000000F87E000000FC7E000000FC7C0000007C7C0000007CFC0000007EFC0000007EFC0000
+007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007E7C0000007C7E00
+0000FC7E000000FC7E000000FC3E000000F83F000001F81F000001F01F000001F00F800003E007
+800003C007C00007C003E0000F8000F0001E000078003C00003C007800000F01E0000001FF0000
+272B7DA92E>I<FFFFFE000000FFFFFFC0000007E003F0000003E000FC000003E0003E000003E0
+001F000003E0001F800003E0000F800003E0000FC00003E0000FC00003E0000FC00003E0000FC0
+0003E0000FC00003E0000FC00003E0000F800003E0001F000003E0001E000003E0003C000003E0
+00F8000003E003E0000003FFFE00000003E00780000003E001E0000003E000F0000003E0007800
+0003E0007C000003E0003C000003E0003E000003E0003E000003E0003E000003E0003E000003E0
+003F000003E0003F000003E0003F000003E0003F000003E0003F008003E0003F808003E0001F80
+8007F0000F8100FFFF8007C100FFFF8003C20000000000FC00292A7EA82C>82
+D<00FE010003FF83000F81E3001E0037003C001F0038000F007800070070000700F0000300F000
+0300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003FE000001FFF00000F
+FFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F80000007C0000007C0
+800003C0800003C0800003C0800003C0C00003C0C0000380C0000380E0000780F0000700F8000E
+00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>I<FFFF0003FFC0FFFF0003FFC007F000
+007E0003E00000380003E00000100001F00000200001F00000200001F00000200000F800004000
+00F80000400000FC0000C000007C00008000007C00008000003E00010000003E00010000003F00
+010000001F00020000001F00020000001F80060000000F80040000000F800400000007C0080000
+0007C00800000007E00800000003E01000000003E01000000001F02000000001F02000000001F0
+2000000000F84000000000F84000000000FCC0000000007C80000000007C80000000003F000000
+00003F00000000003F00000000001E00000000001E00000000000C00000000000C00000000000C
+0000002A2A7FA82D>86 D<FFFF0001FFC0FFFF0001FFC007F000007E0003F00000380001F00000
+300001F80000200000F80000400000FC00004000007E00008000003E00018000003F0001000000
+1F80020000000F80020000000FC00400000007C00400000007E00800000003F01800000001F010
+00000001F82000000000FC2000000000FC40000000007EC0000000003E80000000003F00000000
+001F00000000001F00000000001F00000000001F00000000001F00000000001F00000000001F00
+000000001F00000000001F00000000001F00000000001F00000000001F00000000001F00000000
+001F00000000003F0000000007FFFC00000007FFFC00002A297FA82D>89
+D<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078000000
+780000007800007FF80003E078000F8078001F0078003E0078007C00780078007820F8007820F8
+007820F8007820F800F8207C00F8203C013C401F063FC007F80F001B1A7E991E>97
+D<007F8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000F80000F80000F800
+00F80000F80000F80000F800007800007C00003C00043C00041E00080F001007802001C0C0007F
+00161A7E991B>99 D<00000F000001FF000001FF0000001F0000000F0000000F0000000F000000
+0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00003F0F0001
+C0CF0003802F000F001F001E001F001C000F003C000F007C000F0078000F0078000F00F8000F00
+F8000F00F8000F00F8000F00F8000F00F8000F00F8000F0078000F0078000F003C000F003C000F
+001E001F000E002F0007004F8001C18FF8007E0FF81D2A7EA921>I<007E0003C3800700E00E00
+F01C00703C00783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F800
+007800007C00003C00043C00041E00080E001007002001C0C0007F00161A7E991B>I<001F0000
+70C000E1E001C3E003C3E00381C007808007800007800007800007800007800007800007800007
+8000078000FFFE00FFFE0007800007800007800007800007800007800007800007800007800007
+800007800007800007800007800007800007800007800007800007800007800007800007C000FF
+FE00FFFE00132A7FA912>I<007F000001C1C000070070000E0038001C001C003C001E003C001E
+0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F800
+0F8078000F0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F000019
+1A7E991E>111 D<07800780FF80FF80FF80FF800F800F80078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007800780
+0780078007800780078007800F8007800F800380178001C027C000E047FC003F87FC1E1A7F9921
+>117 D E /Ft 25 121 df<1C003E007F00FF80FF80FF807F003E001C00000000000000000000
+00000000000000000000000000000000000000000000000000000000001C003E007F00FF80FF80
+FF807F003E001C00092579A418>58 D<0000000C000000000000001E000000000000001E000000
+000000001E000000000000003F000000000000003F000000000000003F000000000000007F8000
+00000000007F800000000000007F80000000000000FFC0000000000000FFC0000000000000FFC0
+0000000000019FE00000000000019FE00000000000039FF00000000000030FF00000000000030F
+F00000000000070FF800000000000607F800000000000607F800000000000C07FC00000000000C
+03FC00000000000C03FC00000000001803FE00000000001801FE00000000001801FE0000000000
+3000FF00000000003000FF00000000003000FF000000000060007F800000000060007F80000000
+00E0007F8000000000C0003FC000000000C0003FC000000001C0003FE00000000180001FE00000
+000180001FE00000000380001FF000000003FFFFFFF000000003FFFFFFF000000007FFFFFFF800
+000006000007F800000006000007F80000000C000007FC0000000C000003FC0000000C000003FC
+00000018000001FE00000018000001FE00000018000001FE00000030000000FF00000030000000
+FF00000070000000FF800000600000007F800000600000007F800000F00000007FC00003F80000
+007FC0000FFC000001FFE000FFFFC0003FFFFFC0FFFFC0003FFFFFC0FFFFC0003FFFFFC03A3D7D
+BC41>65 D<FFFFFFC0FFFFFFC0FFFFFFC000FFC000007F8000007F8000007F8000007F8000007F
+8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800000
+7F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000
+007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F
+8000007F8000007F8000007F8000007F8000007F8000007F8000007F800000FFC000FFFFFFC0FF
+FFFFC0FFFFFFC01A3B7EBA1F>73 D<FFFFFFC0007FFFE0FFFFFFC0007FFFE0FFFFFFC0007FFFE0
+00FFC000000FFE00007F80000007F000007F80000003C000007F800000078000007F8000000600
+00007F8000000C0000007F800000180000007F800000300000007F800000600000007F800000C0
+0000007F800001800000007F800003000000007F800006000000007F80000C000000007F800018
+000000007F800030000000007F800060000000007F8000C0000000007F800180000000007F8003
+00000000007F800F00000000007F801F80000000007F803F80000000007F807FC0000000007F80
+FFE0000000007F819FE0000000007F830FF0000000007F860FF8000000007F8C07F8000000007F
+9803FC000000007FB003FE000000007FE001FE000000007FC000FF000000007F8000FF80000000
+7F80007F800000007F80003FC00000007F80003FE00000007F80001FE00000007F80000FF00000
+007F80000FF80000007F800007F80000007F800003FC0000007F800003FE0000007F800001FE00
+00007F800000FF0000007F800000FF8000007F8000007F8000007F8000003FC000007F8000003F
+E000007F8000001FE000007F8000001FF000007F8000001FF80000FFC000003FFE00FFFFFFC003
+FFFFF0FFFFFFC003FFFFF0FFFFFFC003FFFFF03C3B7EBA43>75 D<FFFFFFFFF00000FFFFFFFFFF
+0000FFFFFFFFFFC00000FFC0003FF000007F800007F800007F800003FC00007F800001FE00007F
+800000FF00007F8000007F80007F8000007F80007F8000007FC0007F8000003FC0007F8000003F
+E0007F8000003FE0007F8000003FE0007F8000003FE0007F8000003FE0007F8000003FE0007F80
+00003FE0007F8000003FC0007F8000003FC0007F8000007FC0007F8000007F80007F8000007F80
+007F800000FF00007F800001FE00007F800003FC00007F80000FF000007F80003FE000007FFFFF
+FF8000007FFFFFFC0000007F8000000000007F8000000000007F8000000000007F800000000000
+7F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F
+8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F800000000000FFC000000000FFFFFFC0000000FFFFFF
+C0000000FFFFFFC0000000333B7EBA3B>80 D<FFFFFFFF80000000FFFFFFFFF8000000FFFFFFFF
+FE00000000FFC001FF800000007F80003FE00000007F80000FF00000007F800007F80000007F80
+0003FC0000007F800001FE0000007F800001FE0000007F800001FF0000007F800000FF0000007F
+800000FF8000007F800000FF8000007F800000FF8000007F800000FF8000007F800000FF800000
+7F800000FF8000007F800000FF8000007F800000FF0000007F800001FF0000007F800001FE0000
+007F800001FC0000007F800003F80000007F800007F00000007F80000FE00000007F80003F8000
+00007F8001FE000000007FFFFFF8000000007FFFFFE0000000007F8003F8000000007F8000FE00
+0000007F80003F000000007F80001F800000007F80001FC00000007F80000FE00000007F80000F
+F00000007F800007F00000007F800007F80000007F800007F80000007F800007F80000007F8000
+07F80000007F800007F80000007F800007F80000007F800007FC0000007F800007FC0000007F80
+0007FC0000007F800007FC0000007F800007FC0000007F800007FC0000007F800007FC0030007F
+800007FC0030007F800003FE0030007F800003FE0030007F800001FE006000FFC00000FF0060FF
+FFFFC0007F00C0FFFFFFC0003F8380FFFFFFC0000FFF00000000000001FC003C3C7EBA3F>82
+D<000FF80060003FFF006000FFFFC0E001F807E1E007E000F1E00F80003BE00F00001FE01F0000
+0FE03E000007E03E000003E07C000001E07C000001E0FC000001E0FC000000E0FC000000E0FC00
+0000E0FC00000060FE00000060FE00000060FF000000607F000000007F800000007FE00000003F
+F80000003FFF8000001FFFF800000FFFFF800007FFFFE00003FFFFF80001FFFFFC0000FFFFFE00
+003FFFFF000007FFFF8000007FFFC0000007FFE00000007FE00000001FF00000000FF000000007
+F000000007F800000003F840000003F8C0000003F8C0000001F8C0000001F8C0000001F8E00000
+01F8E0000001F8E0000001F0F0000001F0F0000003F0F8000003E0F8000003E0FC000007C0FF00
+000F80FB80000F00F1F0003E00F0FE00FC00E03FFFF800C00FFFE000C001FF8000253D7BBB30>
+I<3FFFFFFFFFFFF83FFFFFFFFFFFF83FFFFFFFFFFFF83FE001FF8007F83F0000FF0001F87C0000
+FF00007C780000FF00003C780000FF00003C700000FF00001C700000FF00001C600000FF00000C
+600000FF00000C600000FF00000C600000FF00000C600000FF00000CE00000FF00000EC00000FF
+000006C00000FF000006C00000FF000006C00000FF000006000000FF000000000000FF00000000
+0000FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF00
+0000000000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000
+00FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF0000
+00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000
+FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000
+000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000000003FF
+C00000001FFFFFFFF800001FFFFFFFF800001FFFFFFFF800373B7DBA3E>I<003FC0000001FFF8
+000007C07E00000E001F00001E000F80001F8007C0003FC003E0003FC003F0003FC003F0003FC0
+01F0001F8001F8000F0001F800000001F800000001F800000001F800000001F80000001FF80000
+07FFF800003FF9F80000FF01F80003F801F80007F001F8000FC001F8001F8001F8003F8001F800
+7F0001F8007F0001F8007E0001F80CFE0001F80CFE0001F80CFE0001F80CFE0003F80CFE0003F8
+0C7E0006F80C7F0006F80C3F000C7C181F80187E380FE0703FF003FFE01FE0007F800F8026287C
+A62B>97 D<01F800000000FFF800000000FFF800000000FFF80000000007F80000000001F80000
+000001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
+F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001F80000
+000001F80000000001F80000000001F80000000001F80FF0000001F83FFE000001F8F01F000001
+F9C007C00001FB0003E00001FE0001F00001FC0000F80001FC00007C0001F800007E0001F80000
+3E0001F800003F0001F800003F0001F800003F8001F800001F8001F800001F8001F800001FC001
+F800001FC001F800001FC001F800001FC001F800001FC001F800001FC001F800001FC001F80000
+1FC001F800001FC001F800001F8001F800001F8001F800003F8001F800003F0001F800003F0001
+F800007E0001F800007C0001FC0000FC0001FC0000F80001F60001F00001E30003E00001E1C00F
+C00001C0F03F000001803FFC000000000FE000002A3D7EBB30>I<0003FE00001FFFC0003E01F0
+00F8003801F0003C03E000FC07C001FE0FC001FE0F8001FE1F8001FE3F0000FC3F0000787F0000
+007F0000007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE0000007E0000007F0000007F0000003F0000033F0000031F8000031F8000060F
+C0000607C0000C03E0001801F0003000F800E0007E03C0001FFF000003FC0020287DA626>I<00
+03FC0000001FFF0000007E07C00000F801E00001E000F00003E000780007C0007C000F80003E00
+1F80003E001F00003F003F00001F003F00001F007F00001F007E00001F807E00001F80FE00001F
+80FE00001F80FFFFFFFF80FFFFFFFF80FE00000000FE00000000FE00000000FE00000000FE0000
+00007E000000007E000000007F000000007F000000003F000001803F000001801F800001800F80
+0003000FC000030007C000060003E0000C0001F00018000078007000003F01E000000FFF800000
+01FE000021287EA626>101 D<00003F000001FFC00003E0E0000781F0000F83F8001F07F8003E
+07F8007E07F8007E03F0007C01E000FC000000FC000000FC000000FC000000FC000000FC000000
+FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000FFFFFC00FFFFFC00
+FFFFFC0000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
+0000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
+000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000
+FC000000FC000001FE00007FFFFC007FFFFC007FFFFC001D3D7FBC1A>I<01C00003F00007F800
+0FF8000FF8000FF80007F80003F00001C000000000000000000000000000000000000000000000
+00000000000000000000000001F8007FF8007FF8007FF80007F80001F80001F80001F80001F800
+01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
+01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80003FC00
+FFFFE0FFFFE0FFFFE0133A7FB917>105 D<01F800000000FFF800000000FFF800000000FFF800
+00000007F80000000001F80000000001F80000000001F80000000001F80000000001F800000000
+01F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001F800
+00000001F80000000001F80000000001F80000000001F80000000001F80000000001F800000000
+01F800FFFE0001F800FFFE0001F800FFFE0001F8007FE00001F8003F800001F8003E000001F800
+38000001F80030000001F800E0000001F801C0000001F80300000001F80600000001F80C000000
+01F81800000001F83C00000001F87E00000001F8FF00000001FB9F00000001FF1F80000001FC0F
+C0000001F807C0000001F807E0000001F803F0000001F801F0000001F801F8000001F800FC0000
+01F8007C000001F8007E000001F8003F000001F8001F800001F8001F800001F8000FC00001F800
+0FE00003FC001FF800FFFFF07FFF80FFFFF07FFF80FFFFF07FFF80293C7EBB2D>107
+D<01F800FFF800FFF800FFF80007F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80003FC00FFFFF0FFFFF0FFFFF0143C7FBB17>I<01F803F80003F8
+0000FFF81FFF001FFF0000FFF83C0F803C0F8000FFF8E007C0E007C00007F9C003E1C003E00001
+FB0003F30003F00001FB0001F30001F00001FE0001FE0001F80001FE0001FE0001F80001FC0001
+FC0001F80001FC0001FC0001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80003FC0003FC0003FC00FFFFF0FF
+FFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF044267EA549>I<01F807F80000FFF81F
+FE0000FFF8781F0000FFF8E00F800007F98007C00001FB0007E00001FB0003E00001FE0003F000
+01FC0003F00001FC0003F00001FC0003F00001F80003F00001F80003F00001F80003F00001F800
+03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F000
+01F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800
+03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F000
+03FC0007F800FFFFF1FFFFE0FFFFF1FFFFE0FFFFF1FFFFE02B267EA530>I<0001FE0000000FFF
+C000003F03F00000F8007C0001F0003E0003E0001F0007C0000F800F800007C00F800007C01F00
+0003E03F000003F03F000003F03F000003F07E000001F87E000001F87E000001F8FE000001FCFE
+000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FC
+7E000001F87E000001F87F000003F83F000003F03F000003F01F000003E01F800007E00F800007
+C007C0000F8003E0001F0001F0003E0000F8007C00003F03F000000FFFC0000001FE000026287E
+A62B>I<01F80FF00000FFF83FFE0000FFF8F01F0000FFF9C007C00003FB0003E00001FE0001F0
+0001FC0000F80001FC0000FC0001F800007E0001F800007E0001F800007F0001F800003F0001F8
+00003F8001F800003F8001F800001F8001F800001FC001F800001FC001F800001FC001F800001F
+C001F800001FC001F800001FC001F800001FC001F800001FC001F800001FC001F800001F8001F8
+00003F8001F800003F8001F800003F0001F800007F0001F800007E0001F80000FC0001FC0000FC
+0001FC0001F80001FE0003F00001FB0007E00001F9C00FC00001F8F03F000001F83FFC000001F8
+0FE0000001F80000000001F80000000001F80000000001F80000000001F80000000001F8000000
+0001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000003FC
+00000000FFFFF0000000FFFFF0000000FFFFF00000002A377EA530>I<03F00F80FFF03FE0FFF0
+70F0FFF0C1F807F183F801F303F801F603F801F601F001F6004001FC000001FC000001FC000001
+FC000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
+01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
+0001F8000001F8000003FC0000FFFFF800FFFFF800FFFFF8001D267EA522>114
+D<007F818003FFE3800F807F801E001F8038000780380007807000038070000380F0000180F000
+0180F0000180F8000180F8000180FE0000007F8000007FFC00003FFFC0001FFFF0000FFFFC0003
+FFFE0001FFFF00001FFF800000FF8000001FC040000FC0C00007E0C00003E0E00001E0E00001E0
+E00001E0E00001E0F00001E0F00001C0F80003C0FC000380FC000700F7000E00E3C03C00C0FFF8
+00C03FC0001B287DA622>I<001800000018000000180000001800000018000000380000003800
+000038000000380000007800000078000000F8000000F8000001F8000003F8000007F800001FFF
+FF00FFFFFF00FFFFFF0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001
+F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
+01F8000001F8018001F8018001F8018001F8018001F8018001F8018001F8018001F8018001F801
+8000F8018000F8030000FC0300007C0300003E0600001F0C00000FF8000003F00019367EB421>
+I<01F80003F000FFF801FFF000FFF801FFF000FFF801FFF00007F8000FF00001F80003F00001F8
+0003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F0
+0001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F8
+0003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F0
+0001F80003F00001F80003F00001F80007F00001F80007F00001F80007F00000F8000FF00000F8
+000FF00000FC001BF000007C001BFC00003E0073FFE0001F81E3FFE0000FFF83FFE00001FE03F0
+002B277EA530>I<FFFFC07FFF80FFFFC07FFF80FFFFC07FFF8003FF001FF00000FE000FC00000
+7E000F0000007F000E0000003F001C0000001F80180000001FC0300000000FC07000000007E0E0
+00000003F0C000000003F98000000001FB8000000000FF00000000007E00000000007F00000000
+003F00000000003F80000000007FC0000000006FE000000000C7E000000001C3F00000000381F8
+0000000301FC0000000600FC0000000E007E0000001C007F00000018003F00000038001F800000
+70000FC00001F8000FE0000FFC001FF000FFFE007FFFC0FFFE007FFFC0FFFE007FFFC02A257FA4
+2D>120 D E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 390 293 a Ft(SP)-7 b(ARSKIT:)31 b(a)h(basic)h(to)r(ol)g(kit)h(for)390
+397 y(sparse)28 b(matrix)i(computations)390 557 y Fs(VERSION)20
+b(2)390 632 y(Y)-5 b(oucef)19 b(Saad)710 610 y Fr(\003)844
+1247 y Fq(June)f(6,)f(1994)120 1447 y Fp(Abstract.)24 b Fo(This)15
+b(pap)q(er)g(presen)o(ts)i(the)f(main)d(features)j(of)e(a)h(to)q(ol)f(pac)o
+(k)n(age)h(for)f(manipulating)e(and)j(w)o(orking)60 1497 y(with)h(sparse)h
+(matrices.)25 b(One)16 b(of)g(the)h(goals)e(of)h(the)g(pac)o(k)n(age)g(is)g
+(to)g(pro)o(vide)g(basic)g(to)q(ols)g(to)g(facilitate)f(exc)o(hange)60
+1547 y(of)j(soft)o(w)o(are)g(and)g(data)g(b)q(et)o(w)o(een)i(researc)o(hers)h
+(in)d(sparse)i(matrix)c(computations.)30 b(Our)19 b(starting)f(p)q(oin)o(t)g
+(is)g(the)60 1597 y(Harw)o(ell/Bo)q(eing)f(collection)g(of)g(matrices)g(for)g
+(whic)o(h)h(w)o(e)g(pro)o(vide)f(a)g(n)o(um)o(b)q(er)g(of)g(to)q(ols.)29
+b(Among)16 b(other)i(things)60 1647 y(the)f(pac)o(k)n(age)f(pro)o(vides)h
+(programs)e(for)i(con)o(v)o(erting)f(data)g(structures,)k(prin)o(ting)15
+b(simple)g(statistics)j(on)e(a)g(matrix,)60 1696 y(plotting)d(a)g(matrix)f
+(pro\014le,)i(p)q(erforming)e(basic)i(linear)g(algebra)f(op)q(erations)h
+(with)g(sparse)h(matrices)e(and)h(so)g(on.)p 60 2455 744 2
+v 116 2486 a Fn(\003)135 2501 y Fo(W)m(ork)j(done)i(partly)f(at)h(CSRD,)e
+(univ)o(ersit)o(y)i(of)f(Illinois)e(and)j(partly)f(at)g(RIA)o(CS)h(\(NASA)g
+(Ames)f(Researc)o(h)60 2550 y(Cen)o(ter\).)i(Curren)o(t)15
+b(address:)k(Computer)13 b(Science)j(Dept.,)d(Univ)o(ersit)o(y)h(of)f
+(Minnesota,)h(Minneap)q(olis,)f(MN)h(55455.)60 2600 y(This)e(w)o(ork)g(w)o
+(as)g(supp)q(orted)h(in)f(part)h(b)o(y)e(the)i(NAS)g(Systems)f(Division,)e
+(via)h(Co)q(op)q(erativ)o(e)i(Agreemen)o(t)f(NCC)g(2-387)60
+2650 y(b)q(et)o(w)o(een)h(NASA)g(and)f(the)h(Univ)o(ersit)o(y)f(Space)h
+(Researc)o(h)g(Asso)q(ciation)f(\(USRA\))g(and)g(in)g(part)g(b)o(y)g(the)h
+(Departmen)o(t)60 2700 y(of)g(Energy)i(under)g(gran)o(t)e(DE-F)o
+(G02-85ER25001.)p eop
+%%Page: 2 2
+2 1 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(2)60
+140 y Fk(1)83 b(In)n(tro)r(duction)60 249 y Fl(Researc)o(h)12
+b(on)h(sparse)g(matrix)e(tec)o(hniques)g(has)i(b)q(ecome)e(increasingly)h
+(complex,)e(and)j(this)g(trend)f(is)60 310 y(lik)o(ely)g(to)k(accen)o(tuate)e
+(if)h(only)f(b)q(ecause)i(of)f(the)g(gro)o(wing)g(need)g(to)g(design)g
+(e\016cien)o(t)e(sparse)j(matrix)60 370 y(algorithms)e(for)g(mo)q(dern)g(sup)
+q(ercomputers.)19 b(While)14 b(there)f(are)i(a)g(n)o(um)o(b)q(er)d(of)j(pac)o
+(k)m(ages)g(and)f(`user)60 430 y(friendly')k(to)q(ols,)j(for)f(p)q(erforming)
+f(computations)g(with)h(small)e(dense)h(matrices)f(there)h(is)h(a)g(lac)o(k)
+60 490 y(of)g(an)o(y)g(similar)e(to)q(ol)j(or)g(in)e(fact)h(of)h(an)o(y)f
+(general-purp)q(ose)h(libraries)e(for)h(w)o(orking)g(with)g(sparse)60
+550 y(matrices.)36 b(Y)l(et)21 b(a)h(collection)f(of)h(a)g(few)g(basic)g
+(programs)g(to)g(p)q(erform)f(some)g(elemen)n(tary)e(and)60
+610 y(common)e(tasks)j(ma)o(y)d(b)q(e)i(v)o(ery)f(useful)h(in)f(reducing)h
+(the)g(t)o(ypical)f(time)e(to)k(implem)o(en)n(t)c(and)k(test)60
+671 y(sparse)14 b(matrix)d(algorithms.)19 b(That)14 b(a)f(common)e(set)i(of)h
+(routines)f(shared)g(among)g(researc)o(hers)f(do)q(es)60 731
+y(not)g(y)o(et)f(exist)g(for)g(sparse)i(matrix)d(computation)g(is)i(rather)g
+(surprising.)19 b(Consider)12 b(the)g(con)o(trasting)60 791
+y(situation)18 b(in)f(dense)g(matrix)f(computations.)24 b(The)18
+b(Linpac)o(k)f(and)h(Eispac)o(k)f(pac)o(k)m(ages)h(dev)o(elop)q(ed)60
+851 y(in)f(the)g(70's)h(ha)o(v)o(e)f(b)q(een)g(of)h(tremendous)e(help)h(in)g
+(v)m(arious)h(areas)g(of)g(scien)o(ti\014c)e(computing.)23
+b(One)60 911 y(migh)o(t)13 b(sp)q(eculate)h(on)h(the)f(n)o(um)o(b)q(er)f(of)i
+(hours)g(of)g(programming)e(e\013orts)j(sa)o(v)o(ed)d(w)o(orldwide)h(thanks)
+60 972 y(to)20 b(the)f(widespread)h(a)o(v)m(ailabilit)o(y)d(of)j(these)f(pac)
+o(k)m(ages.)32 b(In)19 b(con)o(trast,)i(it)e(is)g(often)h(the)f(case)h(that)
+60 1032 y(researc)o(hers)d(in)g(sparse)i(matrix)d(computation)h(co)q(de)h
+(their)f(o)o(wn)h(subroutine)g(for)g(suc)o(h)f(things)h(as)60
+1092 y(con)o(v)o(erting)12 b(the)h(storage)h(mo)q(de)e(of)h(a)h(matrix)d(or)j
+(for)f(reordering)g(a)g(matrix)f(according)h(to)g(a)h(certain)60
+1152 y(p)q(erm)o(utation.)19 b(One)14 b(of)h(the)e(reasons)i(for)g(this)f
+(situation)g(migh)o(t)e(b)q(e)j(the)e(absence)h(of)h(an)o(y)f(standard)60
+1212 y(for)19 b(sparse)h(matrix)d(computations.)28 b(F)l(or)19
+b(instance,)g(the)f(n)o(um)o(b)q(er)f(of)i(di\013eren)o(t)f(data)i
+(structures)60 1273 y(used)e(to)h(store)g(sparse)g(matrices)d(in)i(v)m
+(arious)h(applications)g(is)f(staggering.)28 b(F)l(or)19 b(the)f(same)f
+(basic)60 1333 y(data)j(structure)e(there)g(often)h(exist)e(a)i(large)g(n)o
+(um)o(b)q(er)e(of)i(v)m(ariations)g(in)g(use.)28 b(As)18 b(sparse)i(matrix)60
+1393 y(computation)14 b(tec)o(hnology)h(is)f(maturing)g(there)h(is)f(a)i
+(desp)q(erate)f(need)f(for)h(some)f(standard)i(for)f(the)60
+1453 y(basic)21 b(storage)h(sc)o(hemes)d(and)i(p)q(ossibly)l(,)h(although)g
+(this)f(is)g(more)f(con)o(tro)o(v)o(ersial,)g(for)h(the)g(basic)60
+1513 y(linear)15 b(algebra)i(op)q(erations.)120 1574 y(An)22
+b(imp)q(ortan)o(t)f(example)f(where)i(a)h(pac)o(k)m(age)g(suc)o(h)f(as)h(SP)l
+(ARSKIT)e(can)i(b)q(e)f(helpful)g(is)g(for)60 1634 y(exc)o(hanging)e
+(matrices)d(for)k(researc)o(h)e(or)h(other)g(purp)q(oses.)33
+b(In)19 b(this)h(situation,)h(one)f(m)o(ust)e(often)60 1694
+y(translate)j(the)f(matrix)f(from)h(some)f(initial)h(data)h(structure)f(in)h
+(whic)o(h)f(it)g(is)g(generated,)h(in)o(to)g(a)60 1754 y(di\013eren)o(t)13
+b(desired)h(data)h(structure.)20 b(One)14 b(w)o(a)o(y)g(around)h(this)g
+(di\016cult)o(y)d(is)i(to)g(restrict)g(the)g(n)o(um)o(b)q(er)60
+1814 y(of)24 b(sc)o(hemes)d(that)j(can)g(b)q(e)f(used)h(and)g(set)g(some)e
+(standards.)45 b(Ho)o(w)o(ev)o(er,)23 b(this)g(is)g(not)h(enough)60
+1874 y(b)q(ecause)16 b(often)f(the)h(data)g(structures)g(are)g(c)o(hosen)f
+(for)h(their)f(e\016ciency)e(and)j(con)o(v)o(enience,)d(and)j(it)60
+1935 y(is)h(not)g(reasonable)h(to)f(ask)h(practitioners)e(to)i(abandon)g
+(their)f(fa)o(v)o(orite)f(storage)i(sc)o(hemes.)j(What)60 1995
+y(is)16 b(needed)f(is)h(a)g(large)g(set)g(of)g(programs)g(to)h(translate)f
+(one)g(data)h(structure)e(in)o(to)h(another.)22 b(In)15 b(the)60
+2055 y(same)k(v)o(ein,)g(subroutines)h(that)h(generate)f(test)f(matrices)f(w)
+o(ould)i(b)q(e)g(extremely)d(v)m(aluable)j(since)60 2115 y(they)14
+b(w)o(ould)h(allo)o(w)g(users)g(to)h(ha)o(v)o(e)e(access)h(to)g(a)g(large)g
+(n)o(um)o(b)q(er)f(of)h(matrices)e(without)i(the)g(burden)60
+2175 y(of)i(actually)e(passing)i(large)g(sets)f(of)h(data.)120
+2236 y(A)e(useful)g(collection)f(of)h(sparse)h(matrices)e(kno)o(wn)i(as)g
+(the)f(Harw)o(ell/Bo)q(eing)f(collection,)g(whic)o(h)60 2296
+y(is)e(publically)e(a)o(v)m(ailable)h([4],)h(has)h(b)q(een)f(widely)f(used)h
+(in)f(recen)o(t)g(y)o(ears)h(for)g(testing)g(and)h(comparison)60
+2356 y(purp)q(oses.)22 b(Because)15 b(of)i(the)e(imp)q(ortance)g(of)h(this)g
+(collection)e(man)o(y)g(of)j(the)e(to)q(ols)i(in)e(SP)l(ARSKIT)60
+2416 y(can)k(b)q(e)g(considered)g(as)g(companion)f(to)q(ols)i(to)g(it.)28
+b(F)l(or)19 b(example,)e(SP)l(ARSKIT)i(supplies)f(simple)60
+2476 y(routines)h(to)g(create)g(a)g(Harw)o(ell/Bo)q(eing)f(\(H/B\))g(\014le)h
+(from)e(a)j(matrix)d(in)i(an)o(y)f(format,)h(to)q(ols)h(for)60
+2537 y(creating)14 b(pic)g(\014les)g(in)g(order)g(to)h(plot)f(a)h(H/B)e
+(matrix,)g(a)i(few)f(routines)g(that)h(will)e(deliv)o(er)f(statistics)60
+2597 y(for)20 b(an)o(y)f(H/B)h(matrix,)e(etc..)30 b(Ho)o(w)o(ev)o(er,)18
+b(SP)l(ARSKIT)i(is)f(not)h(limited)d(to)j(b)q(eing)g(a)g(set)f(of)h(to)q(ols)
+60 2657 y(to)e(w)o(ork)f(with)g(H/B)g(matrices.)22 b(Since)17
+b(one)g(of)h(our)g(main)e(motiv)m(ations)g(is)h(researc)o(h)g(on)h(iterativ)o
+(e)p eop
+%%Page: 3 3
+3 2 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(3)60
+132 y(metho)q(ds,)21 b(w)o(e)f(pro)o(vide)g(n)o(umerous)g(subroutines)h(that)
+h(ma)o(y)d(help)h(researc)o(hers)g(in)h(this)g(sp)q(eci\014c)60
+192 y(area.)g(SP)l(ARSKIT)16 b(will)e(hop)q(efully)h(b)q(e)h(an)g(ev)o
+(olving)f(pac)o(k)m(age)g(that)i(will)d(b)q(ene\014t)i(from)e(con)o(tribu-)60
+252 y(tions)i(from)e(other)h(researc)o(hers.)20 b(This)c(rep)q(ort)g(is)f(a)h
+(succinct)e(description)h(of)g(the)g(pac)o(k)m(age)h(in)f(this)60
+312 y(release.)60 1045 y @beginspecial 75 @vscale 75 @hscale
+0 @hoffset -30 @voffset @setspecial
+%%BeginDocument: dir.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /tmp/xfig-fig024490
+%%Creator: fig2dev
+%%CreationDate: Thu Aug 19 20:24:55 1993
+%%For: dsu@unity (Dongli Su,2-209 EECS,626-7512,378-3764)
+%%BoundingBox: 0 0 567 259
+%%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
+ end
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+0 setlinecap 0 setlinejoin
+-18.0 328.0 translate 0.900 -0.900 scale
+0.500 setlinewidth
+% Polyline
+n 49 244 m 319 99 l gs col-1 s gr
+% Polyline
+n 319 99 m 134 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 204 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 264 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 324 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 394 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 484 244 l gs col-1 s gr
+% Polyline
+n 319 99 m 569 244 l gs col-1 s gr
+% Polyline
+n 544 304 m 564 264 l gs col-1 s gr
+% Polyline
+n 564 264 m 614 304 l gs col-1 s gr
+% Polyline
+n 344 304 m 389 264 l gs col-1 s gr
+% Polyline
+n 389 264 m 399 304 l gs col-1 s gr
+% Polyline
+n 389 264 m 454 304 l gs col-1 s gr
+% Polyline
+n 319 99 m 319 99 l 634 244 l 634 244 l gs col-1 s gr
+/Times-Roman findfont 14.00 scalefont setfont
+19 259 m
+gs 1 -1 scale (BLASSM) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+99 259 m
+gs 1 -1 scale (FORMATS) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+189 259 m
+gs 1 -1 scale (INFO) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+239 259 m
+gs 1 -1 scale (INOUT) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+304 259 m
+gs 1 -1 scale (ITSOL) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+359 259 m
+gs 1 -1 scale (MATGEN) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+439 259 m
+gs 1 -1 scale (ORDERINGS) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+539 259 m
+gs 1 -1 scale (UNSUPP) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+519 319 m
+gs 1 -1 scale (MATEXP) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+329 319 m
+gs 1 -1 scale (FDIF) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+384 319 m
+gs 1 -1 scale (FEM) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+439 319 m
+gs 1 -1 scale (MISC) col-1 show gr
+/Times-Roman findfont 18.00 scalefont setfont
+279 89 m
+gs 1 -1 scale (SPARSKIT) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+599 319 m
+gs 1 -1 scale (PLOTS) col-1 show gr
+%%/Times-Roman findfont 20.00 scalefont setfont
+%%199 364 m
+%%gs 1 -1 scale (General organization of SPARSKIT) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+619 259 m
+gs 1 -1 scale (DOC) col-1 show gr
+$F2psEnd
+%%EndDocument
+ @endspecial 495 1121 a(Figure)h(1:)21 b(General)16 b(organization)h(of)g(SP)
+l(ARSKIT.)60 1399 y Fk(2)83 b(Data)25 b(structures)d(for)j(sparse)e(matrices)
+h(and)g(the)g(con-)184 1490 y(v)n(ersion)i(routines)60 1599
+y Fl(One)16 b(of)h(the)g(di\016culties)d(in)i(sparse)i(matrix)c(computations)
+j(is)f(the)g(v)m(ariet)o(y)g(of)h(t)o(yp)q(es)f(of)h(matrices)60
+1660 y(that)g(are)g(encoun)o(tered)e(in)i(practical)e(applications.)23
+b(The)16 b(purp)q(ose)i(of)f(eac)o(h)f(of)g(these)h(sc)o(hemes)d(is)60
+1720 y(to)k(gain)g(e\016ciency)d(b)q(oth)j(in)f(terms)f(of)h(memory)e
+(utilization)h(and)i(arithmetic)d(op)q(erations.)25 b(As)18
+b(a)60 1780 y(result)11 b(man)o(y)f(di\013eren)o(t)h(w)o(a)o(ys)h(of)g
+(storing)g(sparse)h(matrices)c(ha)o(v)o(e)i(b)q(een)h(devised)f(to)h(tak)o(e)
+f(adv)m(an)o(tage)60 1840 y(of)17 b(the)f(structure)g(of)g(the)g(matrices)f
+(or)i(the)f(sp)q(eci\014cit)o(y)e(of)j(the)f(problem)f(from)g(whic)o(h)h
+(they)g(arise.)60 1900 y(F)l(or)21 b(example)d(if)i(it)g(is)g(kno)o(wn)g
+(that)h(a)g(matrix)e(consists)i(of)f(a)h(few)f(diagonals)i(one)e(ma)o(y)f
+(simply)60 1961 y(store)j(these)g(diagonals)i(as)e(v)o(ectors)g(and)h(the)f
+(o\013sets)h(of)f(eac)o(h)g(diagonal)h(with)f(resp)q(ect)g(to)g(the)60
+2021 y(main)15 b(diagonal.)23 b(If)16 b(the)g(matrix)f(is)h(not)h(regularly)f
+(structured,)g(then)h(one)f(of)h(the)f(most)g(common)60 2081
+y(storage)d(sc)o(hemes)d(in)i(use)g(to)q(da)o(y)h(is)f(what)h(w)o(e)f(refer)f
+(to)i(in)f(SP)l(ARSKIT)f(as)i(the)f(Compressed)g(Sparse)60
+2141 y(Ro)o(w)18 b(\(CSR\))h(sc)o(heme.)24 b(In)18 b(this)g(sc)o(heme)e(all)i
+(the)g(nonzero)g(en)o(tries)f(are)i(stored)f(ro)o(w)h(b)o(y)e(ro)o(w)i(in)f
+(a)60 2201 y(one-dimensional)13 b(real)h(arra)o(y)g Fj(A)g
+Fl(together)g(with)g(an)h(arra)o(y)f Fj(J)5 b(A)14 b Fl(con)o(taining)g
+(their)f(column)g(indices)60 2261 y(and)k(a)f(p)q(oin)o(ter)g(arra)o(y)g
+(whic)o(h)g(con)o(tains)g(the)g(addresses)h(in)f Fj(A)f Fl(and)i
+Fj(J)5 b(A)15 b Fl(of)i(the)f(b)q(eginning)g(of)h(eac)o(h)60
+2322 y(ro)o(w.)29 b(The)19 b(order)g(of)g(the)f(elemen)o(ts)e(within)i(eac)o
+(h)h(ro)o(w)g(do)q(es)g(not)g(matter.)28 b(Also)18 b(of)h(imp)q(ortance)60
+2382 y(b)q(ecause)f(of)h(its)e(simplicit)o(y)e(is)j(the)f(co)q(ordinate)i
+(storage)g(sc)o(heme)d(in)i(whic)o(h)f(the)h(nonzero)g(en)o(tries)60
+2442 y(of)g Fj(A)g Fl(are)g(stored)g(in)f(an)o(y)h(order)g(together)g(with)g
+(their)f(ro)o(w)h(and)g(column)f(indices.)25 b(Man)o(y)17 b(of)h(the)60
+2502 y(other)c(existing)f(sc)o(hemes)e(are)j(sp)q(ecialized)e(to)i(some)f
+(exten)o(t.)19 b(The)14 b(reader)f(is)h(referred)e(to)i(the)g(b)q(o)q(ok)60
+2562 y(b)o(y)i(Du\013)h(et)f(al.)21 b([3])16 b(for)g(more)f(details.)p
+eop
+%%Page: 4 4
+4 3 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(4)60
+132 y Fi(2.1)70 b(Storage)23 b(F)-6 b(ormats)60 224 y Fl(Curren)o(tly)l(,)18
+b(the)g(con)o(v)o(ersion)g(routines)h(of)g(SP)l(ARSKIT)g(can)g(handle)f
+(thirteen)g(di\013eren)o(t)g(storage)60 284 y(formats.)28 b(These)19
+b(include)f(some)g(of)h(the)f(most)g(commonly)e(used)j(sc)o(hemes)e(but)i
+(they)f(are)h(b)o(y)g(no)60 344 y(means)14 b(exhaustiv)o(e.)20
+b(W)l(e)14 b(found)i(it)e(particularly)g(useful)g(to)i(ha)o(v)o(e)e(all)g
+(these)h(storage)h(mo)q(des)e(when)60 404 y(trying)k(to)h(extract)f(a)h
+(matrix)d(from)i(someone)f(else's)g(application)i(co)q(de)f(in)g(order,)h
+(for)g(example,)60 465 y(to)e(analyze)g(it)f(with)h(the)g(to)q(ols)h(describ)
+q(ed)e(in)h(the)g(next)f(sections)h(or,)g(more)f(commonly)l(,)e(to)j(try)g(a)
+60 525 y(giv)o(en)f(solution)h(metho)q(d)f(whic)o(h)h(requires)f(a)h
+(di\013eren)o(t)f(data)i(structure)e(than)i(the)f(one)g(originally)60
+585 y(used)h(in)g(the)g(application.)27 b(Often)18 b(the)g(matrix)e(is)i
+(stored)h(in)e(one)i(of)f(these)g(mo)q(des)g(or)g(a)h(v)m(arian)o(t)60
+645 y(that)e(is)g(v)o(ery)f(close)g(to)i(it.)23 b(W)l(e)16
+b(hop)q(e)i(to)f(add)h(man)o(y)d(more)h(con)o(v)o(ersion)g(routines)h(as)g
+(SP)l(ARSKIT)60 705 y(ev)o(olv)o(es.)120 766 y(In)23 b(this)f(section)h(w)o
+(e)g(describ)q(e)f(in)g(detail)h(the)f(storage)i(sc)o(hemes)d(that)j(are)f
+(handled)g(in)f(the)60 826 y(F)o(ORMA)l(TS)12 b(mo)q(dule.)18
+b(F)l(or)13 b(con)o(v)o(enience)e(w)o(e)h(ha)o(v)o(e)g(decided)g(to)h(lab)q
+(el)f(b)o(y)h(a)g(three)f(c)o(haracter)g(name)60 886 y(eac)o(h)18
+b(format)f(used.)27 b(W)l(e)18 b(start)h(b)o(y)e(listing)h(the)g(formats)f
+(and)i(then)f(describ)q(e)g(them)e(in)i(detail)f(in)60 946
+y(separate)g(subsections)f(\(except)f(for)h(the)g(dense)g(format)g(whic)o(h)f
+(needs)h(no)h(detailed)e(description\).)84 1050 y Fh(DNS)i
+Fl(Dense)f(format)84 1149 y Fh(BND)g Fl(Linpac)o(k)g(Banded)g(format)84
+1248 y Fh(CSR)h Fl(Compressed)f(Sparse)g(Ro)o(w)h(format)84
+1347 y Fh(CSC)h Fl(Compressed)d(Sparse)i(Column)e(format)84
+1446 y Fh(COO)i Fl(Co)q(ordinate)h(format)84 1545 y Fh(ELL)e
+Fl(Ellpac)o(k-Itpac)o(k)e(generalized)h(diagonal)i(format)84
+1644 y Fh(DIA)g Fl(Diagonal)g(format)84 1743 y Fh(BSR)f Fl(Blo)q(c)o(k)g
+(Sparse)g(Ro)o(w)h(format)84 1843 y Fh(MSR)g Fl(Mo)q(di\014ed)f(Compressed)f
+(Sparse)i(Ro)o(w)g(format)84 1942 y Fh(SSK)g Fl(Symmetri)o(c)c(Skyline)i
+(format)84 2041 y Fh(NSK)h Fl(Nonsymmetric)d(Skyline)i(format)84
+2140 y Fh(LNK)h Fl(Link)o(ed)g(list)f(storage)i(format)84 2239
+y Fh(JAD)g Fl(The)f(Jagged)h(Diagonal)h(format)84 2338 y Fh(SSS)f
+Fl(The)f(Symmetric)d(Sparse)j(Skyline)f(format)84 2437 y Fh(USS)i
+Fl(The)f(Unsymmetri)o(c)d(Sparse)k(Skyline)e(format)84 2536
+y Fh(VBR)i Fl(V)l(ariable)e(Blo)q(c)o(k)g(Ro)o(w)i(format)120
+2640 y(In)h(the)g(follo)o(wing)h(sections)f(w)o(e)g(denote)g(b)o(y)g
+Fj(A)h Fl(the)f(matrix)f(under)h(consideration)h(and)g(b)o(y)f
+Fj(N)60 2700 y Fl(its)e(ro)o(w)g(dimension)f(and)i Fj(N)5 b(N)g(Z)21
+b Fl(the)16 b(n)o(um)o(b)q(er)e(of)j(its)f(nonzero)g(elemen)o(ts.)p
+eop
+%%Page: 5 5
+5 4 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(5)60
+132 y Fh(2.1.1)55 b(Compressed)18 b(Sparse)g(Ro)n(w)i(and)f(related)e
+(formats)h(\(CSR,)g(CSC)i(and)f(MSR\))60 224 y Fl(The)g(Compressed)g(Sparse)h
+(Ro)o(w)f(format)g(is)g(the)g(basic)g(format)f(used)i(in)f(SP)l(ARSKIT.)f
+(Its)h(data)60 284 y(structure)d(consists)h(of)f(three)g(arra)o(ys.)133
+398 y Fg(\017)24 b Fl(A)15 b(real)h(arra)o(y)g Fj(A)g Fl(con)o(taining)f(the)
+h(real)g(v)m(alues)g Fj(a)1095 405 y Ff(ij)1141 398 y Fl(stored)g(ro)o(w)g(b)
+o(y)g(ro)o(w,)f(from)g(ro)o(w)h(1)h(to)f Fj(N)5 b Fl(.)182
+458 y(The)16 b(length)g(of)h Fj(A)f Fl(is)g(NNZ.)133 560 y
+Fg(\017)24 b Fl(An)18 b(in)o(teger)g(arra)o(y)h Fj(J)5 b(A)18
+b Fl(con)o(taining)g(the)h(column)e(indices)g(of)i(the)g(elemen)o(ts)d
+Fj(a)1679 567 y Ff(ij)1727 560 y Fl(as)k(stored)182 620 y(in)c(the)g(arra)o
+(y)g Fj(A)p Fl(.)21 b(The)16 b(length)g(of)h Fj(J)5 b(A)15
+b Fl(is)h(NNZ.)133 722 y Fg(\017)24 b Fl(An)18 b(in)o(teger)g(arra)o(y)g
+Fj(I)t(A)g Fl(con)o(taining)g(the)h(p)q(oin)o(ters)f(to)h(the)f(b)q(eginning)
+h(of)g(eac)o(h)f(ro)o(w)h(in)f(the)182 782 y(arra)o(ys)g Fj(A)g
+Fl(and)h Fj(J)5 b(A)p Fl(.)26 b(Th)o(us)18 b(the)g(con)o(ten)o(t)f(of)h
+Fj(I)t(A)p Fl(\()p Fj(i)p Fl(\))f(is)h(the)g(p)q(osition)g(in)g(arra)o(ys)h
+Fj(A)e Fl(and)i Fj(J)5 b(A)182 842 y Fl(where)17 b(the)g Fj(i)p
+Fl(-th)g(ro)o(w)g(starts.)25 b(The)17 b(length)g(of)g Fj(I)t(A)f
+Fl(is)h Fj(N)g Fl(+)12 b(1)17 b(with)g Fj(I)t(A)p Fl(\()p Fj(N)f
+Fl(+)c(1\))17 b(con)o(taining)182 903 y(the)i(n)o(um)o(b)q(er)f
+Fj(I)t(A)p Fl(\(1\))13 b(+)g Fj(N)5 b(N)g(Z)t Fl(,)21 b(i.e.,)d(the)i
+(address)g(in)g Fj(A)f Fl(and)h Fj(J)5 b(A)19 b Fl(of)h(the)g(b)q(eginning)g
+(of)g(a)182 963 y(\014ctitious)c(ro)o(w)g Fj(N)h Fl(+)11 b(1.)60
+1077 y(The)16 b(order)h(of)g(the)f(nonzero)g(elemen)o(ts)e(within)i(the)g
+(same)f(ro)o(w)i(are)f(not)h(imp)q(ortan)o(t.)k(A)16 b(v)m(ariation)60
+1137 y(to)23 b(this)f(sc)o(heme)e(is)i(to)h(sort)g(the)f(elemen)o(ts)e(in)i
+(eac)o(h)g(ro)o(w)h(in)f(suc)o(h)g(a)h(w)o(a)o(y)f(that)h(their)f(column)60
+1197 y(p)q(ositions)d(are)f(in)g(increasing)g(order.)27 b(When)18
+b(this)g(sorting)g(in)g(enforced,)g(it)f(is)h(often)g(p)q(ossible)h(to)60
+1257 y(mak)o(e)e(substan)o(tial)j(sa)o(vings)g(in)f(the)g(n)o(um)o(b)q(er)f
+(of)h(op)q(erations)i(of)e(some)g(w)o(ell-kno)o(wn)f(algorithms.)60
+1318 y(The)h(Compressed)f(Sparse)i(Column)e(format)g(is)h(iden)o(tical)e
+(with)h(the)h(Compressed)f(Sparse)i(Ro)o(w)60 1378 y(format)15
+b(except)g(that)i(the)f(columns)e(of)j Fj(A)e Fl(are)h(stored)h(instead)f(of)
+g(the)g(ro)o(ws.)22 b(In)15 b(other)i(w)o(ords)f(the)60 1438
+y(Compressed)d(Sparse)g(Column)g(format)f(is)h(simply)e(the)i(Compressed)g
+(Sparse)h(Ro)o(w)f(format)g(for)g(the)60 1498 y(matrix)i Fj(A)256
+1480 y Ff(T)283 1498 y Fl(.)120 1558 y(The)j(Mo)q(di\014ed)f(Sparse)i(Ro)o(w)
+f(\(MSR\))f(format)g(is)g(a)i(rather)e(common)f(v)m(ariation)i(of)g(the)f
+(Com-)60 1619 y(pressed)e(Sparse)g(Ro)o(w)g(format)f(whic)o(h)g(consists)h
+(of)g(k)o(eeping)e(the)i(main)e(diagonal)j(of)f Fj(A)f Fl(separately)l(.)60
+1679 y(The)19 b(corresp)q(onding)i(data)f(structure)f(consists)g(of)h(a)g
+(real)f(arra)o(y)g Fj(A)g Fl(and)h(an)g(in)o(teger)e(arra)o(y)h
+Fj(J)5 b(A)p Fl(.)60 1739 y(The)18 b(\014rst)h Fj(N)k Fl(p)q(ositions)c(in)f
+Fj(A)g Fl(con)o(tain)g(the)g(diagonal)h(elemen)o(ts)d(of)i(the)g(matrix,)f
+(in)h(order.)27 b(The)60 1799 y(p)q(osition)19 b Fj(N)f Fl(+)13
+b(1)19 b(of)g(the)f(arra)o(y)h Fj(A)f Fl(is)g(not)h(used.)29
+b(Starting)19 b(from)e(p)q(osition)j Fj(N)e Fl(+)12 b(2,)19
+b(the)g(nonzero)60 1859 y(elemen)o(ts)d(of)i Fj(A)p Fl(,)g(excluding)f(its)h
+(diagonal)i(elemen)o(t)o(s,)c(are)i(stored)h(ro)o(w-wise.)28
+b(Corresp)q(onding)20 b(to)60 1920 y(eac)o(h)g(elemen)o(t)d
+Fj(A)p Fl(\()p Fj(k)r Fl(\))j(the)g(in)o(teger)f Fj(J)5 b(A)p
+Fl(\()p Fj(k)r Fl(\))19 b(is)i(the)f(column)e(index)i(of)g(the)g(elemen)o(t)e
+Fj(A)p Fl(\()p Fj(k)r Fl(\))h(in)h(the)60 1980 y(matrix)14
+b Fj(A)p Fl(.)21 b(The)16 b Fj(N)h Fl(+)10 b(1)17 b(\014rst)f(p)q(ositions)h
+(of)g Fj(J)5 b(A)15 b Fl(con)o(tain)h(the)g(p)q(oin)o(ter)g(to)h(the)f(b)q
+(eginning)g(of)h(eac)o(h)60 2040 y(ro)o(w)j(in)f Fj(A)g Fl(and)h
+Fj(J)5 b(A)p Fl(.)30 b(The)19 b(adv)m(an)o(tage)i(of)f(this)f(storage)i(mo)q
+(de)d(is)h(that)h(man)o(y)e(matrices)g(ha)o(v)o(e)h(a)60 2100
+y(full)f(main)g(diagonal,)i(i.e.,)d Fj(a)606 2107 y Ff(ii)650
+2100 y Fg(6)p Fl(=)h(0)p Fj(;)8 b(i)19 b Fl(=)f(1)p Fj(;)8
+b(:)g(:)g(:)g(;)g(N)d Fl(,)19 b(and)g(this)g(diagonal)h(is)f(b)q(est)g
+(represen)o(ted)f(b)o(y)60 2160 y(an)h(arra)o(y)g(of)g(length)f
+Fj(N)5 b Fl(.)29 b(This)18 b(storage)i(mo)q(de)e(is)g(particularly)g(useful)g
+(for)h(triangular)g(matrices)60 2221 y(with)f(non-unit)h(diagonals.)27
+b(Often)18 b(the)g(diagonal)h(is)f(then)g(stored)g(in)g(in)o(v)o(erted)e
+(form)h(\(i.e.)26 b(1)p Fj(=a)1894 2228 y Ff(ii)60 2281 y Fl(is)15
+b(stored)g(in)g(place)f(of)i Fj(a)513 2288 y Ff(ii)538 2281
+y Fl(\))f(b)q(ecause)h(triangular)f(systems)f(are)h(often)g(solv)o(ed)f(rep)q
+(eatedly)g(with)h(the)60 2341 y(same)i(matrix)f(man)o(y)g(times,)g(as)j(is)e
+(the)h(case)g(for)g(example)d(in)j(preconditioned)f(Conjugate)i(Gra-)60
+2401 y(dien)o(t)d(metho)q(ds.)22 b(The)16 b(column)f(orien)o(ted)h(analogue)i
+(of)f(the)f(MSR)g(format,)g(called)g(MSC)g(format,)60 2461
+y(is)f(also)h(used)g(in)f(some)g(of)h(the)f(other)h(mo)q(dules,)e(but)i(no)g
+(transformation)f(to/from)g(it)g(to)h(the)f(CSC)60 2522 y(format)h(is)h
+(necessary:)23 b(for)18 b(example)d(to)i(pass)h(from)e(CSC)i(to)g(MSC)f(one)g
+(can)h(use)f(the)g(routine)g(to)60 2582 y(pass)k(from)d(the)i(CSR)g(to)g(the)
+g(MSR)f(formats,)h(since)f(the)h(data)g(structures)g(are)g(iden)o(tical.)30
+b(The)60 2642 y(ab)q(o)o(v)o(e)16 b(three)g(storage)h(mo)q(des)f(are)g(used)g
+(in)g(man)o(y)f(w)o(ell-kno)o(wn)g(pac)o(k)m(ages.)p eop
+%%Page: 6 6
+6 5 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(6)60
+132 y Fh(2.1.2)55 b(The)19 b(banded)g(Linpac)n(k)f(format)f(\(BND\))60
+224 y Fl(Banded)h(matrices)d(represen)o(t)i(the)h(simplest)d(form)i(of)h
+(sparse)g(matrices)e(and)i(they)g(often)f(con)o(v)o(ey)60 284
+y(the)e(easiest)g(w)o(a)o(y)f(of)i(exploiting)e(sparsit)o(y)l(.)21
+b(There)14 b(are)h(man)o(y)f(w)o(a)o(ys)h(of)g(storing)h(a)g(banded)f
+(matrix.)60 344 y(The)f(one)g(w)o(e)f(adopted)i(here)e(follo)o(ws)g(the)h
+(data)h(structure)e(used)h(in)f(the)h(Linpac)o(k)f(banded)i(solution)60
+404 y(routines.)24 b(Our)18 b(motiv)m(ation)e(is)h(that)h(one)g(can)f(easily)
+g(tak)o(e)f(adv)m(an)o(tage)j(of)e(this)h(widely)e(a)o(v)m(ailable)60
+465 y(pac)o(k)m(age)h(if)f(the)h(matrices)e(are)i(banded.)23
+b(F)l(or)17 b(fairly)f(small)f(matrices)g(\(sa)o(y)l(,)h Fj(N)k(<)15
+b Fl(2000)j(on)f(sup)q(er-)60 529 y(computers,)f Fj(N)22 b(<)16
+b Fl(200)j(on)f(fast)h(w)o(orkstations,)f(and)g(with)g(a)g(bandwidth)g(of)g
+Fj(O)q Fl(\()p Fj(N)1642 497 y Fe(1)p 1642 503 16 2 v 1642
+524 a(2)1664 529 y Fl(\)\),)g(this)g(ma)o(y)60 589 y(represen)o(t)g(a)g
+(viable)g(and)h(simple)d(w)o(a)o(y)j(of)f(solving)h(linear)f(systems.)26
+b(One)19 b(m)o(ust)e(\014rst)h(transform)60 650 y(the)d(initial)g(data)h
+(structure)f(in)o(to)h(the)f(banded)h(Linpac)o(k)g(format)e(and)j(then)e
+(call)g(the)g(appropriate)60 710 y(band)k(solv)o(er.)27 b(F)l(or)18
+b(large)h(problems)e(it)h(is)g(clear)g(that)h(a)f(b)q(etter)g(alternativ)o(e)
+f(w)o(ould)i(b)q(e)f(to)h(use)g(a)60 770 y(sparse)i(solv)o(er)f(suc)o(h)g(as)
+h(MA28,)g(whic)o(h)f(requires)f(the)h(input)g(matrix)f(to)i(b)q(e)f(in)g(the)
+g(co)q(ordinate)60 830 y(format.)120 890 y(In)14 b(the)g(BND)g(format)f(the)h
+(nonzero)h(elemen)o(ts)c(of)k Fj(A)f Fl(are)g(stored)h(in)f(a)g(rectangular)h
+(arra)o(y)f Fj(AB)s(D)60 951 y Fl(with)22 b(the)h(nonzero)g(elemen)o(ts)c(of)
+k(the)g Fj(j)s Fl(-th)g(column)e(b)q(eing)h(stored)h(in)g(the)f
+Fj(j)c Fg(\000)d Fj(th)23 b Fl(column)e(of)60 1011 y Fj(AB)s(D)q
+Fl(.)30 b(W)l(e)19 b(also)h(need)f(to)h(kno)o(w)f(the)g(n)o(um)o(b)q(er)f
+Fj(M)5 b(L)20 b Fl(of)f(diagonals)i(b)q(elo)o(w)e(the)g(main)f(diagonals)60
+1071 y(and)f(the)g(n)o(um)o(b)q(er)d Fj(M)5 b(U)23 b Fl(of)17
+b(diagonals)g(ab)q(o)o(v)o(e)g(the)f(main)g(diagonals.)23 b(Th)o(us)17
+b(the)f(bandwidth)i(of)e Fj(A)60 1131 y Fl(is)j Fj(M)5 b(L)14
+b Fl(+)f Fj(M)5 b(U)18 b Fl(+)c(1)19 b(whic)o(h)g(is)g(the)g(minim)n(um)c(n)o
+(um)o(b)q(er)i(of)j(ro)o(ws)f(required)f(in)h(the)g(arra)o(y)g
+Fj(AB)s(D)q Fl(.)60 1191 y(An)e(additional)h(in)o(teger)f(parameter)f(is)i
+(needed)e(to)j(indicate)d(whic)o(h)h(ro)o(w)h(of)g Fj(AB)s(D)h
+Fl(con)o(tains)e(the)60 1252 y(lo)o(w)o(est)f(diagonal.)60
+1381 y Fh(2.1.3)55 b(The)19 b(co)r(ordinate)e(format)h(\(COO\))60
+1474 y Fl(The)g(co)q(ordinate)h(format)f(is)g(certainly)f(the)h(simplest)e
+(storage)j(sc)o(heme)d(for)j(sparse)g(matrices.)25 b(It)60
+1534 y(consists)17 b(of)f(three)g(arra)o(ys:)21 b(a)c(real)f(arra)o(y)g(of)h
+(size)e Fj(N)5 b(N)g(Z)21 b Fl(con)o(taining)16 b(the)g(real)g(v)m(alues)g
+(of)h(nonzero)60 1594 y(elemen)o(ts)e(of)j Fj(A)f Fl(in)g(an)o(y)h(order,)g
+(an)g(in)o(teger)f(arra)o(y)g(con)o(taining)h(their)f(ro)o(w)h(indices)e(and)
+j(a)f(second)60 1654 y(in)o(teger)c(arra)o(y)g(con)o(taining)h(their)f
+(column)f(indices.)19 b(Note)14 b(that)h(this)g(sc)o(heme)d(is)i(as)i
+(general)e(as)h(the)60 1715 y(CSR)20 b(format,)f(but)h(from)f(the)g(p)q(oin)o
+(t)h(of)g(view)f(of)h(memory)d(requiremen)o(t)f(it)j(is)h(not)g(as)h
+(e\016cien)o(t.)60 1775 y(On)d(the)g(other)g(hand)h(it)e(is)h(attractiv)o(e)f
+(b)q(ecause)h(of)g(its)g(simplicit)o(y)c(and)19 b(the)f(fact)g(that)g(it)f
+(is)h(v)o(ery)60 1835 y(commonly)i(used.)43 b(Inciden)o(tally)l(,)22
+b(w)o(e)h(should)h(men)o(tion)d(a)j(v)m(ariation)f(to)h(this)f(mo)q(de)g
+(whic)o(h)f(is)60 1895 y(p)q(erhaps)17 b(the)g(most)e(economical)g(in)h
+(terms)f(of)i(memory)d(usage.)22 b(The)17 b(mo)q(di\014ed)e(v)o(ersion)h
+(requires)60 1955 y(only)f(a)h(real)f(arra)o(y)h Fj(A)f Fl(con)o(taining)g
+(the)h(real)f(v)m(alues)g Fj(a)1063 1962 y Ff(ij)1109 1955
+y Fl(along)h(with)f(only)h(one)f(in)o(teger)g(arra)o(y)h(that)60
+2016 y(con)o(tains)e(the)g(in)o(teger)f(v)m(alues)h(\()p Fj(i)7
+b Fg(\000)g Fl(1\))p Fj(N)12 b Fl(+)7 b Fj(j)16 b Fl(for)f(eac)o(h)e(corresp)
+q(onding)j(nonzero)e(elemen)o(t)d Fj(a)1772 2023 y Ff(ij)1802
+2016 y Fl(.)20 b(It)14 b(is)60 2076 y(clear)f(that)i(this)f(is)f(an)i(unam)o
+(biguous)f(represen)o(tation)f(of)h(all)g(the)g(nonzero)g(elemen)o(ts)d(of)j
+Fj(A)p Fl(.)20 b(There)60 2136 y(are)d(t)o(w)o(o)g(dra)o(wbac)o(ks)h(to)f
+(this)g(sc)o(heme.)22 b(First,)17 b(it)g(requires)f(some)g(in)o(teger)g
+(arithmetic)f(to)j(extract)60 2196 y(the)h(column)f(and)j(ro)o(w)f(indices)e
+(of)i(eac)o(h)f(elemen)o(t)e(when)j(they)f(are)g(needed.)31
+b(Second,)20 b(for)g(large)60 2256 y(matrices)13 b(it)i(ma)o(y)f(lead)h(to)h
+(in)o(teger)e(o)o(v)o(er\015o)o(w)h(b)q(ecause)g(of)h(the)f(need)f(to)i(deal)
+f(with)g(in)o(tegers)g(whic)o(h)60 2316 y(ma)o(y)e(b)q(e)i(v)o(ery)e(large)h
+(\(of)h(the)f(order)h(of)g Fj(N)830 2298 y Fd(2)850 2316 y
+Fl(\).)20 b(Because)14 b(of)h(these)f(t)o(w)o(o)g(dra)o(wbac)o(ks)h(this)f
+(sc)o(heme)e(has)60 2377 y(seldom)j(b)q(een)h(used)g(in)g(practice.)60
+2507 y Fh(2.1.4)55 b(The)19 b(diagonal)f(format)g(\(DIA\))60
+2599 y Fl(The)k(matrices)e(that)j(arise)f(in)f(man)o(y)g(applications)h
+(often)g(consist)g(of)h(a)f(few)g(diagonals.)40 b(This)60 2659
+y(structure)18 b(has)g(probably)g(b)q(een)g(the)g(\014rst)g(one)g(to)g(b)q(e)
+g(exploited)f(for)h(the)g(purp)q(ose)h(of)f(impro)o(ving)p
+eop
+%%Page: 7 7
+7 6 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(7)60
+132 y(p)q(erformance)16 b(of)i(matrix)e(b)o(y)g(v)o(ector)h(pro)q(ducts)h(on)
+g(sup)q(ercomputers,)e(see)h(references)f(in)h([9].)24 b(T)l(o)60
+192 y(store)17 b(these)e(matrices)g(w)o(e)h(ma)o(y)e(store)j(the)f(diagonals)
+h(in)f(a)h(rectangular)f(arra)o(y)h Fj(D)q(I)t(AG)p Fl(\(1)d(:)g
+Fj(N)r(;)8 b Fl(1)14 b(:)60 252 y Fj(N)5 b(D)q(I)t(AG)p Fl(\))17
+b(where)e Fj(N)5 b(D)q(I)t(AG)17 b Fl(is)f(the)f(n)o(um)o(b)q(er)g(of)h
+(diagonals.)22 b(W)l(e)16 b(also)g(need)g(to)g(kno)o(w)g(the)g(o\013sets)60
+312 y(of)i(eac)o(h)f(of)i(the)e(diagonals)i(with)f(resp)q(ect)f(to)h(the)g
+(main)f(diagonal.)26 b(These)18 b(will)f(b)q(e)h(stored)g(in)g(an)60
+372 y(arra)o(y)h Fj(I)t(O)q(F)7 b(F)g Fl(\(1)19 b(:)f Fj(N)5
+b(D)q(I)t(AG)p Fl(\).)32 b(Th)o(us,)20 b(in)f(p)q(osition)h(\()p
+Fj(i;)8 b(k)r Fl(\))19 b(of)g(the)g(arra)o(y)h Fj(D)q(I)t(AG)g
+Fl(is)f(lo)q(cated)g(the)60 432 y(elemen)o(t)11 b Fj(a)264
+440 y Ff(i;i)p Fd(+)p Ff(iof)t(f)t Fd(\()p Ff(k)q Fd(\))458
+432 y Fl(of)k(the)f(original)g(matrix.)19 b(The)14 b(order)h(in)f(whic)o(h)f
+(the)h(diagonals)h(are)g(stored)f(in)60 493 y(the)h(columns)f(of)i
+Fj(D)q(I)t(AG)g Fl(is)f(unimp)q(ortan)o(t.)20 b(Note)15 b(also)h(that)g(all)f
+(the)g(diagonals)i(except)d(the)h(main)60 553 y(diagonal)j(ha)o(v)o(e)f(few)o
+(er)f(than)i Fj(N)23 b Fl(elemen)o(ts,)14 b(so)k(there)f(are)g(p)q(ositions)h
+(in)f Fj(D)q(I)t(AG)h Fl(that)g(will)e(not)i(b)q(e)60 613 y(used.)120
+673 y(In)13 b(man)o(y)f(applications)h(there)g(is)g(a)g(small)f(n)o(um)o(b)q
+(er)g(of)h(non-empt)o(y)f(diagonals)i(and)g(this)f(sc)o(heme)60
+733 y(is)19 b(enough.)29 b(In)19 b(general)f(ho)o(w)o(ev)o(er,)g(it)g(ma)o(y)
+g(b)q(e)h(desirable)f(to)h(supplemen)o(t)d(this)j(data)h(structure,)60
+794 y(e.g.,)e(b)o(y)g(a)h(compressed)f(sparse)h(ro)o(w)g(format.)28
+b(A)18 b(general)g(matrix)f(is)i(therefore)f(represen)o(ted)f(as)60
+854 y(the)i(sum)f(of)h(a)g(diagonal-structured)h(matrix)d(and)j(a)f(general)g
+(sparse)g(matrix.)28 b(The)19 b(con)o(v)o(ersion)60 914 y(routine)14
+b(CSRDIA)g(whic)o(h)g(con)o(v)o(erts)f(from)g(the)h(compressed)f(sparse)i(ro)
+o(w)g(format)e(to)i(the)f(diagonal)60 974 y(format)h(has)h(an)g(option)g(to)g
+(this)f(e\013ect.)21 b(If)15 b(the)g(user)h(w)o(an)o(ts)f(to)h(con)o(v)o(ert)
+e(a)i(general)g(sparse)g(matrix)60 1034 y(to)e(one)g(with,)f(sa)o(y)l(,)h(5)g
+(diagonals,)h(and)f(if)f(the)h(input)f(matrix)f(has)i(more)f(than)h(5)g
+(diagonals,)h(the)e(rest)60 1095 y(of)k(the)g(matrix)e(\(after)h(extraction)g
+(of)i(the)e(5)h(desired)f(diagonals\))i(will)e(b)q(e)h(put,)f(if)g(desired,)g
+(in)o(to)h(a)60 1155 y(matrix)c(in)i(the)g(CSR)h(format.)k(In)15
+b(addition,)g(the)g(co)q(de)g(ma)o(y)f(also)i(compute)e(the)g(most)h(imp)q
+(ortan)o(t)60 1215 y(5)f(diagonals)g(if)f(w)o(an)o(ted,)h(or)f(it)g(can)h
+(get)g(those)f(indicated)g(b)o(y)g(the)g(user)g(through)i(the)e(arra)o(y)h
+Fj(I)t(O)q(F)7 b(F)g Fl(.)60 1345 y Fh(2.1.5)55 b(The)19 b(Ellpac)n(k-Itpac)n
+(k)e(format)h(\(ELL\))60 1437 y Fl(The)g(Ellpac)o(k-Itpac)o(k)e(format)h([6,)
+h(11,)g(5])g(is)f(a)i(generalization)e(of)h(the)g(diagonal)g(storage)h(sc)o
+(heme)60 1497 y(whic)o(h)13 b(is)h(in)o(tended)f(for)i(general)e(sparse)i
+(matrices)d(with)i(a)h(limited)c(maxim)n(um)f(n)o(um)o(b)q(er)i(of)j(nonze-)
+60 1558 y(ros)21 b(p)q(er)g(ro)o(w.)35 b(Tw)o(o)21 b(rectangular)g(arra)o(ys)
+g(of)g(the)g(same)e(size)h(are)h(required,)f(one)h(real)g(and)g(one)60
+1618 y(in)o(teger.)32 b(The)21 b(\014rst,)g Fj(C)t(O)q(E)s(F)7
+b Fl(,)20 b(is)h(similar)d(to)i Fj(D)q(I)t(AG)h Fl(and)g(con)o(tains)f(the)h
+(nonzero)f(elemen)o(ts)e(of)60 1678 y Fj(A)p Fl(.)44 b(Assuming)23
+b(that)h(there)g(are)g(at)g(most)f Fj(N)5 b(D)q(I)t(AG)25 b
+Fl(nonzero)f(elemen)o(ts)d(in)j(eac)o(h)f(ro)o(w)i(of)f Fj(A)p
+Fl(,)60 1738 y(w)o(e)f(can)g(store)g(the)g(nonzero)g(elemen)o(ts)e(of)i(eac)o
+(h)f(ro)o(w)i(of)f(the)g(matrix)e(in)i(a)g(ro)o(w)h(of)f(the)g(arra)o(y)60
+1798 y Fj(C)t(O)q(E)s(F)7 b Fl(\(1)21 b(:)g Fj(N)r(;)8 b Fl(1)22
+b(:)f Fj(N)5 b(D)q(I)t(AG)p Fl(\))21 b(completing)e(the)h(ro)o(w)h(b)o(y)f
+(zeros)h(if)f(necessary)l(.)34 b(T)l(ogether)21 b(with)60 1859
+y Fj(C)t(O)q(E)s(F)k Fl(w)o(e)17 b(need)h(to)h(store)f(an)h(in)o(teger)e
+(arra)o(y)h Fj(J)5 b(C)t(O)q(E)s(F)i Fl(\(1)17 b(:)f Fj(N)r(;)8
+b Fl(1)18 b(:)f Fj(N)5 b(D)q(I)t(AG)p Fl(\))18 b(whic)o(h)g(con)o(tains)60
+1919 y(the)e(column)f(p)q(ositions)i(of)f(eac)o(h)g(en)o(try)f(in)h
+Fj(C)t(O)q(E)s(F)7 b Fl(.)60 2049 y Fh(2.1.6)55 b(The)19 b(Blo)r(c)n(k)e
+(Sparse)i(Ro)n(w)g(format)f(\(BSR\))60 2141 y Fl(Blo)q(c)o(k)12
+b(matrices)e(are)j(common)d(in)j(all)f(areas)h(of)g(scien)o(ti\014c)e
+(computing.)19 b(The)12 b(b)q(est)h(w)o(a)o(y)g(to)g(describ)q(e)60
+2201 y(blo)q(c)o(k)k(matrices)e(is)j(b)o(y)e(viewing)h(them)f(as)i(sparse)g
+(matrices)d(whose)k(nonzero)e(en)o(tries)f(are)i(square)60
+2261 y(dense)12 b(blo)q(c)o(ks.)19 b(Blo)q(c)o(k)11 b(matrices)f(arise)i
+(from)f(the)g(discretization)g(of)h(partial)g(di\013eren)o(tial)f(equations)
+60 2322 y(when)17 b(there)f(are)h(sev)o(eral)f(degrees)g(of)h(freedom)f(p)q
+(er)h(grid)f(p)q(oin)o(t.)23 b(There)17 b(are)g(restrictions)f(to)h(this)60
+2382 y(sc)o(heme.)h(Eac)o(h)d(of)g(the)f(blo)q(c)o(ks)g(is)g(treated)h(as)g
+(a)g(dense)f(blo)q(c)o(k.)20 b(If)14 b(there)g(are)h(zero)f(elemen)o(ts)e
+(within)60 2442 y(eac)o(h)k(blo)q(c)o(k)f(they)h(m)o(ust)f(b)q(e)h(treated)g
+(as)h(nonzero)g(elemen)o(ts)c(with)j(the)g(v)m(alue)g(zero.)120
+2502 y(There)23 b(are)h(sev)o(eral)e(v)m(ariations)i(to)g(the)f(metho)q(d)g
+(used)h(for)f(storing)h(sparse)h(matrices)c(with)60 2562 y(blo)q(c)o(k)f
+(structure.)35 b(The)21 b(one)h(considered)e(here,)h(the)g(Blo)q(c)o(k)f
+(Sparse)h(Ro)o(w)g(format,)g(is)g(a)g(simple)60 2623 y(generalization)16
+b(of)g(the)g(Compressed)g(Sparse)g(Ro)o(w)h(format.)p eop
+%%Page: 8 8
+8 7 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(8)120
+132 y(W)l(e)19 b(denote)f(here)h(b)o(y)f Fj(N)5 b(B)s(LK)23
+b Fl(the)c(dimension)e(of)i(eac)o(h)f(blo)q(c)o(k,)h(b)o(y)f
+Fj(N)5 b(N)g(Z)t(R)20 b Fl(the)f(n)o(um)o(b)q(er)e(of)60 192
+y(nonzero)f(blo)q(c)o(ks)f(in)g Fj(A)g Fl(\(i.e.,)e Fj(N)5
+b(N)g(Z)t(R)15 b Fl(=)f Fj(N)5 b(N)g(Z)q(=)p Fl(\()p Fj(N)g(B)s(LK)1162
+174 y Fd(2)1183 192 y Fl(\)\))15 b(and)h(b)o(y)f Fj(N)5 b(R)17
+b Fl(the)e(blo)q(c)o(k)g(dimension)60 252 y(of)h Fj(A)p Fl(,)f(\(i.e.,)e
+Fj(N)5 b(R)15 b Fl(=)f Fj(N)q(=)m(N)5 b(B)s(LK)t Fl(\),)16
+b(the)f(letter)g Fj(R)h Fl(standing)g(for)g(`reduced'.)k(Lik)o(e)14
+b(the)i(Compressed)60 312 y(Sparse)21 b(Ro)o(w)f(format)f(w)o(e)h(need)g
+(three)f(arra)o(ys.)33 b(A)20 b(rectangular)g(real)g(arra)o(y)g
+Fj(A)p Fl(\(1)h(:)f Fj(N)5 b(N)g(Z)t(R;)j Fl(1)21 b(:)60 372
+y Fj(N)5 b(B)s(LK)q(;)j Fl(1)24 b(:)e Fj(N)5 b(B)s(LK)t Fl(\))22
+b(con)o(tains)g(the)f(nonzero)h(blo)q(c)o(ks)g(listed)e(\(blo)q(c)o(k\)-ro)o
+(w-wise.)38 b(Asso)q(ciated)60 432 y(with)18 b(this)f(real)g(arra)o(y)h(is)g
+(an)g(in)o(teger)e(arra)o(y)i Fj(J)5 b(A)p Fl(\(1)16 b(:)g
+Fj(N)5 b(N)g(Z)t(R)p Fl(\))18 b(whic)o(h)f(holds)h(the)g(actual)g(column)60
+493 y(p)q(ositions)e(in)f(the)f(original)h(matrix)f(of)h(the)g(\(1)p
+Fj(;)8 b Fl(1\))15 b(elemen)o(ts)e(of)i(the)g(nonzero)g(blo)q(c)o(ks.)21
+b(Finally)l(,)13 b(the)60 553 y(p)q(oin)o(ter)j(arra)o(y)g
+Fj(I)t(A)p Fl(\(1)e(:)f Fj(N)5 b(R)12 b Fl(+)f(1\))16 b(p)q(oin)o(ts)h(to)g
+(the)f(b)q(eginning)g(of)h(eac)o(h)e(blo)q(c)o(k)h(ro)o(w)h(in)f
+Fj(A)f Fl(and)i Fj(J)5 b(A)p Fl(.)120 613 y(The)18 b(sa)o(vings)h(in)f
+(memory)e(and)j(in)f(the)g(use)h(of)g(indirect)e(addressing)i(with)f(this)h
+(sc)o(heme)d(o)o(v)o(er)60 673 y(Compressed)g(Sparse)g(Ro)o(w)h(can)f(b)q(e)g
+(substan)o(tial)h(for)f(large)h(v)m(alues)f(of)g Fj(N)5 b(B)s(LK)t
+Fl(.)60 803 y Fh(2.1.7)55 b(The)19 b(Symme)o(tric)c(Skyline)i(format)g
+(\(SSK\))60 895 y Fl(A)h(skyline)f(matrix)g(is)h(often)h(referred)f(to)g(as)i
+(a)f(v)m(ariable)f(band)h(matrix)e(or)i(a)g(pro\014le)f(matrix)f([3].)60
+956 y(The)f(main)e(attraction)j(of)f(skyline)e(matrices)g(is)i(that)g(when)g
+(piv)o(oting)f(is)h(not)g(necessary)g(then)f(the)60 1016 y(skyline)h
+(structure)g(of)i(the)f(matrix)e(is)i(preserv)o(ed)f(during)h(Gaussian)h
+(elimination.)j(If)c(the)g(matrix)60 1076 y(is)22 b(symmetri)o(c)d(w)o(e)i
+(only)h(need)g(to)g(store)g(its)g(lo)o(w)o(er)f(triangular)h(part.)39
+b(This)22 b(is)g(a)g(collection)f(of)60 1136 y(ro)o(ws)d(whose)h(length)f(v)m
+(aries.)26 b(A)18 b(simple)e(metho)q(d)h(used)h(to)h(store)f(a)g(Symmetric)c
+(Skyline)j(matrix)60 1196 y(is)24 b(to)h(place)e(all)h(the)g(ro)o(ws)h(in)f
+(order)g(from)g(1)g(to)h Fj(N)30 b Fl(in)23 b(a)i(real)f(arra)o(y)g
+Fj(A)g Fl(and)h(then)f(k)o(eep)g(an)60 1257 y(in)o(teger)13
+b(arra)o(y)i(whic)o(h)e(holds)i(the)f(p)q(oin)o(ters)h(to)f(the)g(b)q
+(eginning)h(of)g(eac)o(h)f(ro)o(w,)g(see)g([2].)20 b(The)15
+b(column)60 1317 y(p)q(ositions)21 b(of)f(the)g(nonzero)g(elemen)o(ts)d
+(stored)k(in)e Fj(A)h Fl(can)g(easily)f(b)q(e)i(deriv)o(ed)d(and)j(are)f
+(therefore)60 1377 y(not)h(needed.)35 b(Ho)o(w)o(ev)o(er,)19
+b(there)h(are)h(sev)o(eral)f(v)m(ariations)h(to)h(this)e(sc)o(heme)f(that)i
+(are)g(commonly)60 1437 y(used)e(is)g(commercial)d(soft)o(w)o(are)j(pac)o(k)m
+(ages.)31 b(F)l(or)19 b(example,)e(w)o(e)i(found)h(that)f(in)g(man)o(y)f
+(instances)60 1497 y(the)h(p)q(oin)o(ter)g(is)h(to)f(the)h(diagonal)g(elemen)
+o(t)c(rather)k(than)g(to)g(the)f(\014rst)h(elemen)o(t)c(in)j(the)g(ro)o(w.)31
+b(In)60 1558 y(some)17 b(cases)i(\(e.g.,)e(IBM's)g(ISSL)h(library\))g(b)q
+(oth)h(are)f(supp)q(orted.)28 b(Giv)o(en)17 b(that)i(these)e(v)m(ariations)60
+1618 y(are)f(commonly)e(used)i(it)g(is)g(a)h(go)q(o)q(d)h(idea)e(to)g(pro)o
+(vide)g(at)g(least)g(a)h(few)f(of)h(them.)60 1748 y Fh(2.1.8)55
+b(The)19 b(Non)f(Symmetri)o(c)e(Skyline)h(format)g(\(NSK\))60
+1840 y Fl(Conceptually)l(,)e(the)h(data)h(structure)f(of)g(a)h(nonsymmetric)c
+(skyline)i(matrix)f(consists)j(of)f(t)o(w)o(o)g(sub-)60 1900
+y(structures.)32 b(The)20 b(\014rst)h(consists)f(of)g(the)g(lo)o(w)o(er)f
+(part)i(of)f Fj(A)g Fl(stored)g(in)g(skyline)e(format)i(and)g(the)60
+1960 y(second)d(of)f(its)h(upp)q(er)f(triangular)h(part)g(stored)g(in)f(a)h
+(column)e(orien)o(ted)g(skyline)g(format)h(\(i.e.,)e(the)60
+2021 y(transp)q(ose)20 b(is)e(stored)g(in)g(standard)i(ro)o(w)e(skyline)f(mo)
+q(de\).)26 b(Sev)o(eral)17 b(w)o(a)o(ys)h(of)h(putting)f(these)g(sub-)60
+2081 y(structures)e(together)h(ma)o(y)d(b)q(e)j(used)f(and)h(there)e(are)i
+(no)f(comp)q(elling)f(reasons)i(for)f(preferring)g(one)60 2141
+y(strategy)g(o)o(v)o(er)f(another)h(one.)21 b(One)15 b(p)q(ossibilit)o(y)g
+(is)g(to)h(use)g(t)o(w)o(o)f(separate)h(arra)o(ys)g Fj(AL)f
+Fl(and)h Fj(AU)21 b Fl(for)60 2201 y(the)14 b(lo)o(w)o(er)g(part)g(and)h(upp)
+q(er)g(part)g(resp)q(ectiv)o(ely)l(,)c(with)k(the)f(diagonal)h(elemen)o(t)c
+(in)j(the)g(upp)q(er)h(part.)60 2261 y(The)h(data)h(structures)g(for)f(eac)o
+(h)g(of)g(t)o(w)o(o)g(parts)h(is)f(similar)f(to)h(that)h(used)f(for)h(the)f
+(SSK)g(storage.)60 2391 y Fh(2.1.9)55 b(The)19 b(link)n(ed)e(list)h(storage)g
+(format)g(\(LNK\))60 2484 y Fl(This)13 b(is)g(one)h(of)f(the)g(oldest)h(data)
+g(structures)f(used)g(for)h(sparse)g(matrix)d(computations.)20
+b(It)13 b(consists)60 2544 y(of)k(four)g(arra)o(ys:)k Fj(A)p
+Fl(,)16 b Fj(J)5 b(C)t(O)q(L)p Fl(,)16 b Fj(LI)t(N)5 b(K)20
+b Fl(and)d Fj(J)5 b(S)s(T)i(ART)g Fl(.)20 b(The)d(arra)o(ys)g
+Fj(A)f Fl(and)h Fj(J)5 b(C)t(O)q(L)16 b Fl(con)o(tain)g(the)60
+2604 y(nonzero)d(elemen)o(ts)e(and)i(their)g(corresp)q(onding)h(column)d
+(indices)h(resp)q(ectiv)o(ely)l(.)18 b(The)13 b(in)o(teger)f(arra)o(y)60
+2664 y Fj(LI)t(N)5 b(K)19 b Fl(is)c(the)g(usual)g(link)f(p)q(oin)o(ter)h
+(arra)o(y)g(in)g(link)o(ed)e(list)i(data)h(structures:)k Fj(LI)t(N)5
+b(K)t Fl(\()p Fj(k)r Fl(\))15 b(p)q(oin)o(ts)h(to)p eop
+%%Page: 9 9
+9 8 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1589 w Fl(9)60
+132 y(the)15 b(p)q(osition)h(of)g(the)f(nonzero)h(elemen)o(t)d(next)i(to)h
+Fj(A)p Fl(\()p Fj(k)r Fl(\))p Fj(;)8 b(J)d(C)t(O)q(L)p Fl(\()p
+Fj(k)r Fl(\))14 b(in)i(the)f(same)f(ro)o(w.)21 b(Note)16 b(that)60
+192 y(the)d(order)h(of)g(the)g(elemen)o(ts)c(within)k(eac)o(h)f(ro)o(w)h(is)f
+(unimp)q(ortan)o(t.)20 b(If)13 b Fj(LI)t(N)5 b(K)t Fl(\()p
+Fj(k)r Fl(\))14 b(=)g(0)g(then)f(there)g(is)60 252 y(no)18
+b(next)e(elemen)o(t,)e(i.e.,)h Fj(A)p Fl(\()p Fj(k)r Fl(\))p
+Fj(;)8 b(J)d(C)t(O)q(L)p Fl(\()p Fj(k)r Fl(\))17 b(is)g(the)g(last)g(elemen)o
+(t)d(of)j(the)g(ro)o(w.)24 b(Finally)l(,)16 b Fj(I)t(S)s(T)7
+b(ART)60 312 y Fl(p)q(oin)o(ts)15 b(to)g(the)f(\014rst)h(elemen)o(t)c(of)k
+(eac)o(h)f(ro)o(w)h(in)f(in)h(the)f(previous)g(arra)o(ys.)21
+b(Th)o(us,)15 b Fj(k)h Fl(=)e Fj(I)t(S)s(T)7 b(ART)g Fl(\(1\))60
+372 y(p)q(oin)o(ts)23 b(to)g(the)g(\014rst)g(elemen)o(t)d(of)j(the)f(\014rst)
+h(ro)o(w,)h(in)f Fj(A;)8 b(I)t(C)t(O)q(L)p Fl(,)23 b Fj(I)t(S)s(T)7
+b(ART)g Fl(\(2\))21 b(to)i(the)g(second)60 432 y(elemen)o(t,)13
+b(etc..)20 b(As)c(a)h(con)o(v)o(en)o(tion)d Fj(I)t(S)s(T)7
+b(ART)g Fl(\()p Fj(i)p Fl(\))12 b(=)i(0,)i(means)f(that)i(the)f
+Fj(i)p Fl(-th)g(ro)o(w)h(is)f(empt)o(y)l(.)60 562 y Fh(2.1.10)55
+b(The)19 b(Jagged)f(Diagonal)h(format)e(\(JAD\))60 655 y Fl(This)j(storage)g
+(mo)q(de)e(is)i(v)o(ery)e(useful)h(for)g(the)h(e\016cien)o(t)d(implem)o(en)o
+(tati)o(on)g(of)j(iterativ)o(e)e(metho)q(ds)60 715 y(on)f(parallel)f(and)h(v)
+o(ector)e(pro)q(cessors)j([9].)j(Starting)c(from)e(the)h(CSR)h(format,)e(the)
+i(idea)f(is)g(to)h(\014rst)60 775 y(reorder)11 b(the)h(ro)o(ws)g(of)g(the)f
+(matrix)f(decreasingly)g(according)i(to)g(their)f(n)o(um)o(b)q(er)f(of)i
+(nonzeros)g(en)o(tries.)60 835 y(Then,)k(a)g(new)g(data)h(structure)e(is)h
+(built)f(b)o(y)h(constructing)g(what)h(w)o(e)e(call)g(\\jagged)i(diagonals")h
+(\(j-)60 895 y(diagonals\).)24 b(W)l(e)16 b(store)h(as)g(a)g(dense)g(v)o
+(ector,)e(the)h(v)o(ector)g(consisting)h(of)g(all)f(the)h(\014rst)g(elemen)n
+(ts)d(in)60 956 y Fj(A;)8 b(J)d(A)12 b Fl(from)h(eac)o(h)h(ro)o(w,)g
+(together)g(with)g(an)g(in)o(teger)f(v)o(ector)g(con)o(taining)h(the)g
+(column)e(p)q(ositions)j(of)60 1016 y(the)f(corresp)q(onding)h(elemen)o(ts.)i
+(This)d(is)g(follo)o(w)o(ed)f(b)o(y)g(the)h(second)g(jagged)h(diagonal)g
+(consisting)f(of)60 1076 y(the)i(elemen)o(ts)d(in)j(the)g(second)g(p)q
+(ositions)h(from)e(the)h(left.)k(As)c(w)o(e)g(build)g(more)e(and)j(more)e(of)
+h(these)60 1136 y(diagonals,)i(their)f(length)g(decreases.)25
+b(The)17 b(n)o(um)o(b)q(er)f(of)i(j-diagonals)h(is)e(equal)g(to)h(the)f(n)o
+(um)o(b)q(er)f(of)60 1196 y(nonzero)d(elemen)o(ts)d(of)j(the)f(\014rst)h(ro)o
+(w,)h(i.e.,)d(to)i(the)g(largest)f(n)o(um)o(b)q(er)f(of)i(nonzero)g(elemen)o
+(ts)d(p)q(er)j(ro)o(w.)60 1257 y(The)j(data)h(structure)e(to)h(represen)o(t)f
+(a)i(general)e(matrix)f(in)i(this)g(form)f(consists,)h(b)q(efore)f(an)o
+(ything,)60 1317 y(of)g(the)g(p)q(erm)o(utation)e(arra)o(y)i(whic)o(h)f
+(reorders)h(the)f(ro)o(ws.)22 b(Then)15 b(the)f(real)g(arra)o(y)h
+Fj(A)g Fl(con)o(taining)f(the)60 1377 y(jagged)j(diagonals)h(in)e(succession)
+g(and)h(the)f(arra)o(y)h Fj(J)5 b(A)15 b Fl(of)i(the)f(corresp)q(onding)h
+(column)e(p)q(ositions)60 1437 y(are)e(stored,)g(together)f(with)h(a)g(p)q
+(oin)o(ter)f(arra)o(y)h Fj(I)t(A)e Fl(whic)o(h)h(p)q(oin)o(ts)h(to)g(the)f(b)
+q(eginning)h(of)g(eac)o(h)f(jagged)60 1497 y(diagonal)18 b(in)g(the)f(arra)o
+(ys)h Fj(A;)8 b(J)d(A)p Fl(.)24 b(The)17 b(adv)m(an)o(tage)i(of)f(this)f(sc)o
+(heme)e(for)j(matrix)e(m)o(ultiplic)o(ations)60 1558 y(has)h(b)q(een)f
+(illustrated)f(in)h([9])g(and)h(in)f([1])g(in)f(the)h(con)o(text)g(of)g
+(triangular)h(system)e(solutions.)60 1687 y Fh(2.1.11)55 b(The)15
+b(Symmetr)o(ic)d(and)k(Unsymme)o(tric)c(Sparse)j(Skyline)e(format)h(\(SSS,)h
+(USS\))60 1780 y Fl(This)f(is)g(an)h(extension)f(of)h(the)f(CSR-t)o(yp)q(e)g
+(format)f(describ)q(ed)h(ab)q(o)o(v)o(e.)21 b(In)14 b(the)g(symmetri)o(c)d(v)
+o(ersion,)60 1840 y(the)i(follo)o(wing)f(arra)o(ys)h(are)g(used:)20
+b Fj(D)q(I)t(AG)13 b Fl(stores)g(the)g(diagonal,)h Fj(AL;)8
+b(J)d(AL;)j(I)t(AL)j Fl(stores)i(the)g(strict)60 1900 y(lo)o(w)o(er)19
+b(part)i(in)f(CSR)g(format,)g(and)g Fj(AU)25 b Fl(stores)c(the)f(v)m(alues)g
+(of)g(the)g(strict)g(upp)q(er)g(part)h(in)e(CSC)60 1960 y(format.)h(In)14
+b(the)g(unsymmetric)c(v)o(ersion,)k(instead)g(of)h Fj(AU)k
+Fl(alone,)c(the)f(strict)f(upp)q(er)i(part)g(is)f(stored)60
+2021 y(in)i Fj(AU;)8 b(J)d(AU;)j(I)t(AU)19 b Fl(in)d(CSC)g(format.)60
+2151 y Fh(2.1.12)55 b(The)19 b(V)-5 b(ariable)18 b(Blo)r(c)n(k)g(Ro)n(w)h
+(format)f(\(VBR\))60 2243 y Fl(In)i(man)o(y)f(applications,)i(matrices)e(are)
+i(blo)q(c)o(k)o(ed,)f(but)g(the)h(blo)q(c)o(ks)f(are)h(not)g(all)f(the)g
+(same)f(size.)60 2303 y(These)13 b(so-called)h(v)m(ariable)f(blo)q(c)o(k)g
+(matrices)e(arise)j(from)e(the)h(discretization)f(of)i(systems)e(of)i
+(partial)60 2363 y(di\013eren)o(tial)j(equations)h(where)g(there)f(is)h(a)g
+(v)m(arying)h(n)o(um)o(b)q(er)d(of)i(equations)g(at)h(eac)o(h)e(grid)h(p)q
+(oin)o(t.)60 2423 y(Lik)o(e)d(in)g(the)g(Blo)q(c)o(k)f(Sparse)i(Ro)o(w)g
+(\(BSR\))e(format,)h(all)g(en)o(tries)f(of)i(nonzero)f(blo)q(c)o(ks)h(\(blo)q
+(c)o(ks)f(whic)o(h)60 2484 y(con)o(tain)i(an)o(y)g(nonzeros\))g(are)g
+(stored,)g(ev)o(en)f(if)g(their)h(v)m(alue)f(is)h(zero.)23
+b(Also)17 b(lik)o(e)e(the)i(BSR)f(format,)60 2544 y(there)g(is)g
+(signi\014can)o(t)g(sa)o(vings)g(in)g(in)o(teger)f(p)q(oin)o(ter)h(o)o(v)o
+(erhead)g(in)g(the)g(data)h(structure.)120 2604 y(V)l(ariable)j(blo)q(c)o(k)h
+(generalizations)f(can)i(b)q(e)f(made)f(to)h(man)o(y)f(matrix)f(storage)j
+(formats.)35 b(The)60 2664 y(V)l(ariable)19 b(Blo)q(c)o(k)f(Ro)o(w)i(\(VBR\))
+e(format)h(is)h(a)g(generalization)f(of)h(the)f(Compressed)g(Sparse)h(Ro)o(w)
+p eop
+%%Page: 10 10
+10 9 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(10)60
+132 y(\(CSR\))23 b(format,)f(and)i(is)e(similar)e(to)j(the)f(v)m(ariable)g
+(blo)q(c)o(k)g(format)g(used)h(at)g(the)f(Univ)o(ersit)o(y)e(of)60
+192 y(W)l(aterlo)q(o,)d(and)f(one)h(curren)o(tly)d(prop)q(osed)k(in)e(the)g
+(Sparse)h(BLAS)f(to)q(olkit.)120 252 y(In)22 b(the)g(VBR)f(format,)h(the)g
+Fj(I)t(A)f Fl(and)i Fj(J)5 b(A)21 b Fl(arra)o(ys)i(of)f(the)g(CSR)g(format)g
+(store)g(the)g(sparsit)o(y)60 312 y(structure)14 b(of)h(the)f(blo)q(c)o(ks.)
+20 b(The)15 b(en)o(tries)e(in)h(eac)o(h)g(blo)q(c)o(k)g(are)h(stored)f(in)h
+Fj(A)f Fl(in)g(column-ma)s(jor)e(order)60 372 y(so)i(that)g(eac)o(h)g(blo)q
+(c)o(k)f(ma)o(y)f(b)q(e)i(passed)g(as)g(a)h(small)d(dense)h(matrix)f(to)i(a)g
+(F)l(ortran)g(subprogram.)21 b(The)60 432 y(blo)q(c)o(k)12
+b(ro)o(w)h(and)h(blo)q(c)o(k)e(column)f(partitionings)i(are)g(stored)g(in)f
+(the)h(v)o(ectors)f Fq(KVSTR)h Fl(and)h Fq(KVSTC)p Fl(,)60
+493 y(b)o(y)i(storing)h(the)f(\014rst)g(ro)o(w)h(or)f(column)f(n)o(um)o(b)q
+(er)g(of)h(eac)o(h)g(blo)q(c)o(k)g(ro)o(w)g(or)h(column)e(resp)q(ectiv)o(ely)
+l(.)j(In)60 553 y(most)g(applications,)i(the)f(blo)q(c)o(k)f(ro)o(w)h(and)h
+(column)e(partitionings)h(will)f(b)q(e)h(conformal,)g(and)g(the)60
+613 y(same)e(arra)o(y)g(ma)o(y)f(b)q(e)i(used)g(in)f(the)h(programs.)25
+b(Finally)l(,)16 b(in)o(teger)h(p)q(oin)o(ters)g(to)h(the)g(b)q(eginning)g
+(of)60 673 y(eac)o(h)e(blo)q(c)o(k)f(in)h Fj(A)g Fl(are)g(stored)h(in)f(the)g
+(arra)o(y)g Fj(K)t(A)p Fl(.)120 733 y Fj(I)t(A)i Fl(con)o(tains)h(p)q(oin)o
+(ters)h(to)f(the)g(b)q(eginning)h(of)f(eac)o(h)g(blo)q(c)o(k)f(ro)o(w)i(in)f
+Fj(J)5 b(A)18 b Fl(and)i Fj(K)t(A)p Fl(.)30 b(Th)o(us)19 b
+Fj(I)t(A)60 794 y Fl(has)d(length)g(equal)f(to)h(the)f(n)o(um)o(b)q(er)f(of)i
+(blo)q(c)o(k)f(ro)o(ws)h(\(plus)g(one)g(to)g(mark)e(the)h(end)h(of)g(the)f
+(matrix\),)60 854 y(and)i Fj(J)5 b(A)16 b Fl(has)h(length)g(equal)f(to)h(the)
+f(n)o(um)o(b)q(er)f(of)i(nonzero)g(blo)q(c)o(ks.)22 b Fj(K)t(A)17
+b Fl(has)g(the)f(same)g(length)g(as)60 914 y Fj(J)5 b(A)19
+b Fl(plus)h(one)g(to)g(mark)e(the)i(end)g(of)g(the)f(matrix.)31
+b Fq(KVSTR)20 b Fl(and)g Fq(KVSTC)h Fl(ha)o(v)o(e)e(length)h(equal)60
+974 y(to)f(the)g(n)o(um)o(b)q(er)e(of)j(blo)q(c)o(k)e(ro)o(ws)i(and)f
+(columns)f(resp)q(ectiv)o(ely)l(,)f(and)i Fj(A)g Fl(has)h(length)e(equal)h
+(to)g(the)60 1034 y(n)o(um)o(b)q(er)c(of)i(nonzeros)g(in)f(the)h(matrix.)j
+(The)d(follo)o(wing)f(\014gure)h(sho)o(ws)h(the)e(VBR)g(format)g(applied)60
+1095 y(to)h(a)f(small)f(matrix.)120 1155 y(This)e(v)o(ersion)f(of)h(Sparskit)
+g(has)g(a)g(n)o(um)o(b)q(er)e(of)i(routines)g(to)g(supp)q(ort)h(the)e(v)m
+(ariable)h(blo)q(c)o(k)f(matrix)60 1215 y(format.)19 b(CSR)-5
+b(VBR)10 b(and)j(VBR)o(CSR)d(con)o(v)o(ert)g(b)q(et)o(w)o(een)h(the)h(VBR)e
+(and)i(CSR)g(formats;)g(VBRINF)o(O)60 1275 y(prin)o(ts)f(some)f(elemen)o
+(tary)e(information)i(ab)q(out)i(the)f(blo)q(c)o(k)f(structure)h(of)h(a)f
+(matrix)e(in)i(VBR)f(format;)60 1335 y(AMUXV)j(p)q(erforms)h(a)i(matrix-v)o
+(ector)d(pro)q(duct)i(with)g(a)h(matrix)d(in)i(VBR)f(format;)g(CSRKVSTR)60
+1396 y(and)i(CSRKVSTC)f(are)g(used)g(to)h(determine)c(ro)o(w)k(and)f(column)f
+(blo)q(c)o(k)g(partitionings)i(of)f(a)h(matrix)60 1456 y(in)f(CSR)g(format,)f
+(and)h(KVSTMER)o(GE)g(is)g(used)g(to)g(com)o(bine)e(ro)o(w)i(and)h(column)d
+(partitionings)j(to)60 1516 y(ac)o(hiev)o(e)e(a)j(conformal)e(partitioning.)
+60 1660 y Fi(2.2)70 b(The)22 b(F)n(ORMA)-6 b(TS)23 b(con)n(v)n(ersion)g(mo)r
+(dule)60 1753 y Fl(It)16 b(is)h(imp)q(ortan)o(t)f(to)h(note)g(that)g(there)f
+(is)h(no)g(need)g(to)g(ha)o(v)o(e)f(a)h(subroutine)g(for)g(eac)o(h)f(pair)h
+(of)g(data)60 1813 y(structures,)i(since)f(all)h(w)o(e)f(need)h(is)g(to)g(b)q
+(e)g(able)g(to)g(con)o(v)o(ert)f(an)o(y)h(format)f(to)i(the)e(standard)j(ro)o
+(w-)60 1873 y(compressed)15 b(format)g(and)h(then)g(bac)o(k)f(to)h(an)o(y)g
+(other)g(format.)21 b(There)15 b(are)h(curren)o(tly)e(32)j(di\013eren)o(t)60
+1933 y(con)o(v)o(ersion)e(routines)g(in)g(this)h(mo)q(dule)e(all)h(of)h(whic)
+o(h)f(are)g(dev)o(oted)g(to)h(con)o(v)o(erting)e(from)g(one)i(data)60
+1993 y(structure)g(in)o(to)g(another.)120 2054 y(The)k(naming)g(mec)o(hanism)
+d(adopted)k(is)f(to)h(use)f(a)h(6-c)o(haracter)g(name)e(for)i(eac)o(h)e(of)i
+(the)f(sub-)60 2114 y(routines,)h(the)f(\014rst)g(3)h(for)f(the)g(input)g
+(format)g(and)g(the)g(last)h(3)f(for)h(the)f(output)g(format.)33
+b(Th)o(us)60 2174 y(COOCSR)13 b(p)q(erforms)f(the)g(con)o(v)o(ersion)f(from)h
+(the)g(co)q(ordinate)h(format)f(to)h(the)f(Compressed)g(Sparse)60
+2234 y(Ro)o(w)17 b(format.)24 b(Ho)o(w)o(ev)o(er)15 b(it)i(w)o(as)h
+(necessary)f(to)g(break)g(the)g(naming)g(rule)f(in)h(one)g(exception.)23
+b(W)l(e)60 2294 y(needed)13 b(a)i(v)o(ersion)e(of)i(COOCSR)f(that)h(is)e
+(in-place,)h(i.e.,)e(whic)o(h)i(can)g(tak)o(e)f(the)h(input)g(matrix,)e(and)
+60 2355 y(con)o(v)o(ert)17 b(it)h(directly)f(in)o(to)h(a)h(CSR)g(format)f(b)o
+(y)g(using)h(v)o(ery)e(little)g(additional)h(w)o(ork)h(space.)28
+b(This)60 2415 y(routine)16 b(is)g(called)f(COICSR.)h(Eac)o(h)g(of)g(the)g
+(formats)g(has)g(a)h(routine)f(to)g(translate)h(it)e(to)i(the)f(CSR)60
+2475 y(format)i(and)i(a)f(routine)f(to)i(con)o(v)o(ert)d(bac)o(k)i(to)g(it)f
+(from)g(the)g(CSR)h(format.)29 b(The)19 b(only)f(exception)60
+2535 y(is)i(that)h(a)g(CSCCSR)g(routine)f(is)g(not)h(necessary)f(since)g(the)
+g(con)o(v)o(ersion)g(from)f(Column)h(Sparse)60 2595 y(format)d(to)i(Sparse)g
+(Ro)o(w)f(format)f(can)i(b)q(e)f(p)q(erformed)f(with)h(the)g(same)f(routine)h
+(CSR)o(CSC.)g(This)60 2656 y(is)e(essen)o(tially)f(a)h(transp)q(osition)i(op)
+q(eration.)p eop
+%%Page: 11 11
+11 10 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(11)60
+90 y
+ 29364963 25841160 0 0 26510049 23352524 startTexFig
+ 60 90 a
+%%BeginDocument: vbrpic.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /tmp/xfig-fig009549
+%%Creator: fig2dev
+%%CreationDate: Sun May 1 19:21:40 1994
+%%For: chow@mega (Edmond Chow,EE/CS 6-210,626-0071,625-3031)
+%%BoundingBox: 0 0 403 355
+%%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
+ end
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+0 setlinecap 0 setlinejoin
+-58.0 414.0 translate 0.900 -0.900 scale
+0.500 setlinewidth
+% Polyline
+n 99 439 m 479 439 l 479 459 l 99 459 l 99 439 l clp gs col-1 s gr
+% Polyline
+n 119 439 m 119 459 l gs col-1 s gr
+% Polyline
+n 139 439 m 139 459 l gs col-1 s gr
+% Polyline
+n 159 439 m 159 459 l gs col-1 s gr
+% Polyline
+n 179 439 m 179 459 l gs col-1 s gr
+% Polyline
+n 199 439 m 199 459 l gs col-1 s gr
+% Polyline
+n 219 439 m 219 459 l gs col-1 s gr
+% Polyline
+n 239 439 m 239 459 l gs col-1 s gr
+% Polyline
+n 259 439 m 259 459 l gs col-1 s gr
+n 279 439 m 279 439 l gs col-1 s gr
+% Polyline
+n 279 439 m 279 459 l gs col-1 s gr
+% Polyline
+n 299 439 m 299 459 l gs col-1 s gr
+% Polyline
+n 319 439 m 319 459 l gs col-1 s gr
+% Polyline
+n 339 439 m 339 459 l gs col-1 s gr
+% Polyline
+n 359 439 m 359 459 l gs col-1 s gr
+% Polyline
+n 379 439 m 379 459 l gs col-1 s gr
+% Polyline
+n 399 439 m 399 459 l gs col-1 s gr
+% Polyline
+n 419 439 m 419 459 l gs col-1 s gr
+% Polyline
+n 459 439 m 459 459 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 434 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 454 m
+gs 1 -1 scale (A) col-1 show gr
+% Polyline
+n 399 79 m 499 79 l 499 99 l 399 99 l 399 79 l clp gs col-1 s gr
+% Polyline
+n 419 79 m 419 99 l gs col-1 s gr
+% Polyline
+n 439 79 m 439 99 l gs col-1 s gr
+% Polyline
+n 459 79 m 459 99 l gs col-1 s gr
+% Polyline
+n 479 79 m 479 99 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+404 74 m
+gs 1 -1 scale ( 1 2 3 4 5) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+339 94 m
+gs 1 -1 scale (KVSTC) col-1 show gr
+% Polyline
+n 199 79 m 279 79 l 279 99 l 199 99 l 199 79 l clp gs col-1 s gr
+% Polyline
+n 219 79 m 219 99 l gs col-1 s gr
+% Polyline
+n 239 79 m 239 99 l gs col-1 s gr
+% Polyline
+n 259 79 m 259 99 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+209 94 m
+gs 1 -1 scale (1 3 4 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+204 74 m
+gs 1 -1 scale ( 1 2 3 4) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+139 94 m
+gs 1 -1 scale (KVSTR) col-1 show gr
+% Polyline
+n 99 219 m 179 219 l 179 239 l 99 239 l 99 219 l clp gs col-1 s gr
+% Polyline
+n 99 279 m 219 279 l 219 299 l 99 299 l 99 279 l clp gs col-1 s gr
+% Polyline
+n 99 339 m 239 339 l 239 359 l 99 359 l 99 339 l clp gs col-1 s gr
+% Polyline
+n 119 219 m 119 239 l gs col-1 s gr
+% Polyline
+n 139 219 m 139 239 l gs col-1 s gr
+% Polyline
+n 159 219 m 159 239 l gs col-1 s gr
+% Polyline
+n 119 279 m 119 299 l gs col-1 s gr
+% Polyline
+n 139 279 m 139 299 l gs col-1 s gr
+% Polyline
+n 159 279 m 159 299 l gs col-1 s gr
+% Polyline
+n 179 279 m 179 299 l gs col-1 s gr
+% Polyline
+n 199 279 m 199 299 l gs col-1 s gr
+% Polyline
+n 119 339 m 119 359 l gs col-1 s gr
+% Polyline
+n 139 339 m 139 359 l gs col-1 s gr
+% Polyline
+n 159 339 m 159 359 l gs col-1 s gr
+% Polyline
+n 179 339 m 179 359 l gs col-1 s gr
+% Polyline
+n 199 339 m 199 359 l gs col-1 s gr
+% Polyline
+n 219 339 m 219 359 l gs col-1 s gr
+% Polyline
+n 109 239 m 109 259 l gs col-1 s gr
+n 111.000 251.000 m 109.000 259.000 l 107.000 251.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 124 239 m 144 259 l gs col-1 s gr
+n 139.757 251.929 m 144.000 259.000 l 136.929 254.757 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 149 239 m 184 259 l gs col-1 s gr
+n 178.046 253.294 m 184.000 259.000 l 176.062 256.767 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 169 239 m 224 259 l gs col-1 s gr
+n 217.165 254.386 m 224.000 259.000 l 215.798 258.146 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 439 439 m 439 459 l gs col-1 s gr
+% Polyline
+n 109 359 m 109 419 l gs col-1 s gr
+n 111.000 411.000 m 109.000 419.000 l 107.000 411.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 129 359 m 184 419 l gs col-1 s gr
+n 180.069 411.751 m 184.000 419.000 l 177.120 414.454 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 144 359 m 224 419 l gs col-1 s gr
+n 218.800 412.600 m 224.000 419.000 l 216.400 415.800 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 169 359 m 279 419 l gs col-1 s gr
+n 272.935 413.413 m 279.000 419.000 l 271.019 416.925 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 189 359 m 299 419 l gs col-1 s gr
+n 292.935 413.413 m 299.000 419.000 l 291.019 416.925 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 209 359 m 364 419 l gs col-1 s gr
+n 357.261 414.247 m 364.000 419.000 l 355.817 417.977 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 229 359 m 484 419 l gs col-1 s gr
+n 476.671 415.221 m 484.000 419.000 l 475.755 419.115 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 379 159 m 379 279 l gs col-1 s gr
+% Polyline
+n 439 159 m 439 279 l gs col-1 s gr
+% Polyline
+n 499 279 m 499 159 l 339 159 l 339 279 l clp gs col-1 s gr
+% Polyline
+n 459 159 m 459 279 l gs col-1 s gr
+% Polyline
+n 339 199 m 499 199 l gs col-1 s gr
+% Polyline
+n 339 219 m 499 219 l gs col-1 s gr
+% Polyline
+n 409 99 m 354 139 l gs col-1 s gr
+n 361.646 135.912 m 354.000 139.000 l 359.294 132.677 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 429 99 m 389 139 l gs col-1 s gr
+n 396.071 134.757 m 389.000 139.000 l 393.243 131.929 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 449 99 m 449 139 l gs col-1 s gr
+n 451.000 131.000 m 449.000 139.000 l 447.000 131.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 469 99 m 469 139 l gs col-1 s gr
+n 471.000 131.000 m 469.000 139.000 l 467.000 131.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 489 99 m 504 139 l gs col-1 s gr
+n 503.064 130.807 m 504.000 139.000 l 499.318 132.212 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 269 99 m 319 284 l gs col-1 s gr
+n 318.843 275.755 m 319.000 284.000 l 314.982 276.799 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 249 99 m 319 224 l gs col-1 s gr
+n 316.836 216.043 m 319.000 224.000 l 313.346 217.997 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 224 99 m 319 204 l gs col-1 s gr
+n 315.116 196.726 m 319.000 204.000 l 312.150 199.410 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 209 99 m 319 169 l gs col-1 s gr
+n 313.324 163.018 m 319.000 169.000 l 311.177 166.392 l gs 2 setlinejoin col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 294 m
+gs 1 -1 scale ( 1 3 2 3 3 4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 354 m
+gs 1 -1 scale ( 1 5 7 10 11 14 20) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 334 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 234 m
+gs 1 -1 scale (IA) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 294 m
+gs 1 -1 scale (JA) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+64 354 m
+gs 1 -1 scale (KA) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 234 m
+gs 1 -1 scale ( 1 3 5 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 214 m
+gs 1 -1 scale ( 1 2 3 4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 274 m
+gs 1 -1 scale ( 1 2 3 4 5 6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+224 274 m
+gs 1 -1 scale ( 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 454 m
+gs 1 -1 scale ( 1 4 2 5 3 6 7 8 9 10 11 14 17 12 15 18 13 16 19) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+404 94 m
+gs 1 -1 scale ( 1 3 6 7 9 ) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 174 m
+gs 1 -1 scale ( 1 2 3) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 194 m
+gs 1 -1 scale ( 4 5 6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+384 214 m
+gs 1 -1 scale ( 7 8 9 10) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 234 m
+gs 1 -1 scale (11 12 13) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 254 m
+gs 1 -1 scale (14 15 16) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 274 m
+gs 1 -1 scale (17 18 19) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 174 m
+gs 1 -1 scale (1) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 194 m
+gs 1 -1 scale (2) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 214 m
+gs 1 -1 scale (3) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 234 m
+gs 1 -1 scale (4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 254 m
+gs 1 -1 scale (5) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 274 m
+gs 1 -1 scale (6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 154 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7 8) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 294 m
+gs 1 -1 scale (7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+494 154 m
+gs 1 -1 scale ( 9) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+259 344 m
+gs 1 -1 scale (IA also indexes into KA) col-1 show gr
+$F2psEnd
+%%EndDocument
+
+ endTexFig
+ 394 1829 a Fl(Figure)16 b(2:)22 b(A)15 b(6)d Fg(\002)f Fl(8)16
+b(sparse)h(matrix)e(and)i(its)f(storage)h(v)o(ectors.)120 1963
+y(Considerable)h(e\013ort)h(has)g(b)q(een)g(put)f(at)h(attempting)e(to)i(mak)
+o(e)d(the)i(con)o(v)o(ersion)g(routines)g(in-)60 2023 y(place,)12
+b(i.e.,)g(in)g(allo)o(wing)g(some)g(or)h(all)f(of)h(the)f(output)h(arra)o(ys)
+g(to)g(b)q(e)g(the)f(same)g(as)h(the)g(input)f(arra)o(ys.)60
+2083 y(The)17 b(purp)q(ose)g(is)g(to)g(sa)o(v)o(e)f(storage)i(whenev)o(er)d
+(p)q(ossible)i(without)g(sacri\014cing)g(p)q(erformance.)k(The)60
+2143 y(added)15 b(\015exibilit)o(y)d(can)i(b)q(e)h(v)o(ery)e(con)o(v)o(enien)
+o(t)f(in)j(some)e(situations.)21 b(When)15 b(the)f(additional)g(co)q(ding)60
+2203 y(complexit)o(y)f(to)k(p)q(ermit)d(the)i(routine)h(to)f(b)q(e)h
+(in-place)e(w)o(as)i(not)g(to)q(o)g(high)g(this)f(w)o(as)h(alw)o(a)o(ys)f
+(done.)60 2264 y(If)c(the)h(subroutine)g(is)g(in-place)f(this)g(is)h(clearly)
+e(indicated)h(in)h(the)f(do)q(cumen)o(tation.)20 b(As)12 b(men)o(tioned)60
+2324 y(ab)q(o)o(v)o(e,)i(w)o(e)h(found)g(it)f(necessary)h(in)f(one)h
+(instance)f(to)h(pro)o(vide)f(b)q(oth)i(the)e(in-place)g(v)o(ersion)g(as)h(w)
+o(ell)60 2384 y(as)22 b(the)f(regular)g(v)o(ersion:)30 b(COICSR)21
+b(is)g(an)g(in-place)g(v)o(ersion)f(of)i(the)e(COOCSR)i(routine.)35
+b(W)l(e)60 2444 y(w)o(ould)19 b(also)h(lik)o(e)d(to)i(add)h(that)f(other)g
+(routines)g(that)h(a)o(v)o(oid)e(the)h(CSR)g(format)g(for)g(some)f(of)h(the)
+60 2504 y(more)14 b(imp)q(ortan)o(t)h(data)i(structures)e(ma)o(y)f(ev)o(en)o
+(tually)g(b)q(e)i(included.)j(F)l(or)d(no)o(w,)g(there)f(is)g(only)h(one)60
+2565 y(suc)o(h)g(routine)338 2547 y Fd(1)374 2565 y Fl(namely)l(,)e(COOELL.)p
+60 2608 744 2 v 116 2639 a Fc(1)135 2654 y Fo(Con)o(tributed)g(b)o(y)g(E.)f
+(Rothman)f(from)g(Cornell)h(Univ)o(ersit)o(y)m(.)p eop
+%%Page: 12 12
+12 11 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(12)60
+132 y Fi(2.3)70 b(In)n(ternal)22 b(format)h(used)g(in)f(SP)-6
+b(ARSKIT)60 224 y Fl(Most)17 b(of)h(the)f(routines)g(in)f(SP)l(ARSKIT)h(use)g
+(in)o(ternally)e(the)i(Compressed)f(Sparse)i(Ro)o(w)f(format.)60
+284 y(The)d(selection)e(of)i(the)g(CSR)g(mo)q(de)f(has)h(b)q(een)g(motiv)m
+(ated)e(b)o(y)i(sev)o(eral)e(factors.)21 b(Simplicit)n(y)l(,)11
+b(gener-)60 344 y(alit)o(y)l(,)k(and)j(widespread)f(use)g(are)g(certainly)e
+(the)i(most)f(imp)q(ortan)o(t)g(ones.)24 b(Ho)o(w)o(ev)o(er,)15
+b(it)h(has)i(often)60 404 y(b)q(een)f(argued)h(that)f(the)g(column)f(sc)o
+(heme)e(ma)o(y)i(ha)o(v)o(e)g(b)q(een)h(a)g(b)q(etter)g(c)o(hoice.)23
+b(One)16 b(argumen)o(t)g(in)60 465 y(this)g(fa)o(v)o(or)f(is)h(that)g(v)o
+(ector)f(mac)o(hines)f(usually)h(giv)o(e)g(a)h(b)q(etter)g(p)q(erformance)e
+(for)i(suc)o(h)g(op)q(erations)60 525 y(as)f(matrix)e(v)o(ector)g(b)o(y)h(m)o
+(ultipli)o(cations)e(for)j(matrices)d(stored)j(in)f(CSC)h(format.)k(In)14
+b(fact)h(for)f(paral-)60 585 y(lel)h(mac)o(hines)f(whic)o(h)h(ha)o(v)o(e)h(a)
+g(lo)o(w)g(o)o(v)o(erhead)f(in)h(lo)q(op)h(sync)o(hronization)e(\(e.g.,)g
+(the)h(Allian)o(ts\),)e(the)60 645 y(situation)h(is)g(rev)o(ersed,)e(see)h
+([9])h(for)g(details.)20 b(F)l(or)15 b(almost)f(an)o(y)h(argumen)o(t)e(in)i
+(fa)o(v)o(or)f(of)h(one)g(sc)o(heme)60 705 y(there)e(seems)e(to)j(b)q(e)f(an)
+h(argumen)o(t)e(in)g(fa)o(v)o(or)h(of)h(the)f(other.)20 b(F)l(ortunately)l(,)
+13 b(the)g(di\013erence)f(pro)o(vided)60 766 y(in)i(functionalit)o(y)g(is)g
+(rather)h(minor.)k(F)l(or)c(example)e(the)h(subroutine)h(APLB)g(to)g(add)g(t)
+o(w)o(o)g(matrices)60 826 y(in)h(CSR)h(format,)e(describ)q(ed)h(in)h(Section)
+f(5.1,)g(can)h(actually)f(b)q(e)h(also)g(used)f(to)h(add)g(t)o(w)o(o)g
+(matrices)60 886 y(in)f(CSC)h(format,)e(since)g(the)h(data)h(structures)f
+(are)h(iden)o(tical.)i(Sev)o(eral)c(suc)o(h)h(subroutines)g(can)h(b)q(e)60
+946 y(used)h(for)f(b)q(oth)i(sc)o(hemes,)c(b)o(y)i(pretending)g(that)h(the)g
+(input)f(matrices)e(are)j(stored)g(in)f(CSR)h(mo)q(de)60 1006
+y(whereas)f(in)e(fact)i(they)e(are)i(stored)f(in)g(CSC)h(mo)q(de.)60
+1173 y Fk(3)83 b(Manipulation)27 b(routines)60 1282 y Fl(The)16
+b(mo)q(dule)f(UNAR)l(Y)f(of)i(SP)l(ARSKIT)g(consists)g(of)g(a)h(n)o(um)o(b)q
+(er)d(of)i(utilities)f(to)h(manipulate)e(and)60 1342 y(p)q(erform)i(basic)g
+(op)q(erations)i(with)e(sparse)h(matrices.)j(The)d(follo)o(wing)f(sections)g
+(giv)o(e)g(an)h(o)o(v)o(erview)60 1403 y(of)g(this)f(part)g(of)h(the)f(pac)o
+(k)m(age.)60 1547 y Fi(3.1)70 b(Miscell)o(aneous)21 b(op)r(erations)i(with)f
+(sparse)h(matrices)60 1639 y Fl(There)e(are)h(a)g(large)f(n)o(um)o(b)q(er)f
+(of)i(non-algebraic)g(op)q(erations)g(that)g(are)g(commonly)c(used)k(when)60
+1700 y(w)o(orking)g(with)f(sparse)i(matrices.)36 b(A)21 b(t)o(ypical)g
+(example)e(is)j(to)g(transform)g Fj(A)f Fl(in)o(to)g Fj(B)26
+b Fl(=)e Fj(P)7 b(AQ)60 1760 y Fl(where)16 b Fj(P)23 b Fl(and)16
+b Fj(Q)g Fl(are)g(t)o(w)o(o)g(p)q(erm)o(utation)e(matrices.)20
+b(Another)15 b(example)f(is)i(to)g(extract)f(the)h(lo)o(w)o(er)60
+1820 y(triangular)h(part)h(of)f Fj(A)f Fl(or)i(a)f(giv)o(en)f(diagonal)i
+(from)d Fj(A)p Fl(.)23 b(Sev)o(eral)16 b(other)h(suc)o(h)f(`extraction')g(op)
+q(era-)60 1880 y(tions)f(are)g(supplied)f(in)h(SP)l(ARSKIT.)f(Also)g(pro)o
+(vided)h(is)f(the)h(transp)q(osition)h(function.)21 b(This)15
+b(ma)o(y)60 1940 y(seem)h(as)j(an)g(unnecessary)f(addition)g(since)g(the)g
+(routine)f(CSR)o(CSC)i(already)f(do)q(es)h(p)q(erform)e(this)60
+2001 y(function)i(economically)l(.)26 b(Ho)o(w)o(ev)o(er,)18
+b(the)h(new)g(transp)q(osition)h(pro)o(vided)e(is)h(in-place,)f(in)h(that)g
+(it)60 2061 y(ma)o(y)e(transp)q(ose)i(the)f(matrix)f(and)h(o)o(v)o(erwrite)f
+(the)h(result)g(on)g(the)g(original)g(matrix,)f(th)o(us)h(sa)o(ving)60
+2121 y(memory)e(usage.)29 b(Since)18 b(man)o(y)g(of)h(these)f(manipulation)g
+(routines)g(in)o(v)o(olv)o(e)f(one)i(matrix)e(\(as)i(op-)60
+2181 y(p)q(osed)g(to)f(t)o(w)o(o)g(in)g(the)f(basic)h(linear)g(algebra)g
+(routines\))g(w)o(e)f(created)h(a)g(mo)q(dule)f(called)g(UNAR)l(Y)60
+2241 y(to)g(include)e(these)h(subroutines.)120 2302 y(Another)k(set)g(of)g
+(subroutines)g(that)h(are)f(sometime)o(s)e(useful)h(are)h(those)h(in)o(v)o
+(olving)d(a)i(`mask'.)60 2362 y(A)c(mask)f(de\014nes)h(a)h(giv)o(en)e
+(nonzero)i(pattern)f(and)h(for)f(all)g(practical)f(purp)q(oses)j(a)e(mask)g
+(matrix)e(is)60 2422 y(a)19 b(sparse)g(matrix)e(whose)i(nonzero)g(en)o(tries)
+e(are)h(all)g(ones)h(\(therefore)f(there)g(is)g(no)h(need)f(to)h(store)60
+2482 y(its)g(real)f(v)m(alues\).)29 b(Sometime)o(s)16 b(it)j(is)f(useful)h
+(to)g(extract)f(from)g(a)h(giv)o(en)f(matrix)f Fj(A)h Fl(the)g(`mask)o(ed')60
+2542 y(matrix)e(according)i(to)h(a)f(mask)f Fj(M)5 b Fl(,)18
+b(i.e.,)f(to)h(compute)f(the)g(matrix)f Fj(A)c Fg(\014)g Fj(M)24
+b Fl(,)18 b(where)f Fg(\014)h Fl(denotes)60 2602 y(the)e(elemen)o(t-wise)d
+(matrix)i(pro)q(duct,)h(and)h Fj(M)22 b Fl(is)16 b(some)f(mask)g(matrix.)p
+eop
+%%Page: 13 13
+13 12 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(13)60
+132 y Fi(3.2)70 b(The)22 b(mo)r(dule)f(UNAR)-6 b(Y)60 224 y
+Fl(This)23 b(mo)q(dule)f(of)i(SP)l(ARSKIT)e(consists)i(of)g(a)f(n)o(um)o(b)q
+(er)f(of)h(routines)g(to)h(p)q(erform)e(some)g(basic)60 284
+y(non-algebraic)d(op)q(erations)h(on)g(a)f(matrix.)27 b(The)19
+b(follo)o(wing)g(is)f(a)i(list)e(of)h(the)g(routines)g(curren)o(tly)60
+344 y(supp)q(orted)e(with)f(a)h(brief)e(explanation.)120 554
+y Fh(SUBMA)-5 b(T)147 b Fl(Extracts)15 b(a)g(square)g(or)g(rectangular)g
+(submatrix)f(from)g(a)h(sparse)g(matrix.)510 615 y(Both)23
+b(the)h(input)f(and)h(output)g(matrices)e(are)h(in)g(CSR)h(format.)42
+b(The)510 675 y(routine)16 b(is)g(in-place.)120 783 y Fh(FIL)-5
+b(TER)187 b Fl(Filters)15 b(out)h(elemen)o(ts)d(from)i(a)i(matrix)d
+(according)i(to)g(their)g(magnitude.)510 843 y(Both)g(the)h(input)f(and)h
+(the)f(output)h(matrices)e(are)h(in)g(CSR)h(format.)k(The)510
+904 y(output)i(matrix,)e(is)h(obtained)g(from)f(the)h(input)g(matrix)e(b)o(y)
+i(remo)o(ving)510 964 y(all)e(the)f(elemen)o(ts)e(that)k(are)f(smaller)e
+(than)j(a)f(certain)f(threshold.)33 b(The)510 1024 y(threshold)15
+b(is)g(computed)e(for)i(eac)o(h)g(ro)o(w)g(according)g(to)g(one)g(of)g(three)
+f(pro-)510 1084 y(vided)h(options.)22 b(The)17 b(algorithm)e(is)h(in-place.)
+120 1193 y Fh(FIL)-5 b(TERM)134 b Fl(Same)15 b(as)i(ab)q(o)o(v)o(e,)f(but)g
+(for)h(the)f(MSR)g(format.)120 1313 y Fh(CSOR)-5 b(T)201 b
+Fl(Sorts)15 b(the)f(elemen)o(ts)d(of)k(a)g(matrix)d(stored)j(in)e(CSR)i
+(format)e(in)h(increasing)510 1373 y(order)i(of)h(the)f(column)f(n)o(um)o(b)q
+(ers.)120 1472 y Fh(TRANSP)154 b Fl(This)16 b(is)g(an)h(in-place)f(transp)q
+(osition)h(routine,)f(i.e.,)e(it)i(can)g(b)q(e)g(view)o(ed)f(as)510
+1532 y(an)21 b(in-place)e(v)o(ersion)h(of)g(the)g(CSR)o(CSC)h(routine)f(in)g
+(F)o(ORMA)l(TS.)e(One)510 1592 y(notable)e(disadv)m(an)o(tage)g(of)g(TRANSP)g
+(is)f(that)h(unlik)o(e)e(CSR)o(CSC)i(it)f(do)q(es)510 1652
+y(not)g(sort)g(the)f(nonzero)g(elemen)o(ts)e(in)i(increasing)f(n)o(um)o(b)q
+(er)g(of)i(the)f(column)510 1713 y(p)q(ositions.)120 1824 y
+Fh(COPMA)-5 b(T)141 b Fl(Cop)o(y)16 b(of)h(a)g(matrix)d(in)o(to)i(another)h
+(matrix)d(\(b)q(oth)j(stored)g(CSR\).)120 1944 y Fh(MSR)n(COP)146
+b Fl(Copies)16 b(a)h(matrix)e(in)h(MSR)f(format)h(in)o(to)g(a)h(matrix)d(in)i
+(MSR)g(format.)120 2064 y Fh(GETELM)146 b Fl(F)l(unction)13
+b(returning)g(the)f(v)m(alue)h(of)g Fj(a)1203 2071 y Ff(ij)1246
+2064 y Fl(for)h(an)o(y)f(pair)g(\()p Fj(i;)8 b(j)s Fl(\).)19
+b(Also)13 b(returns)510 2124 y(address)k(of)g(the)f(elemen)n(t)e(in)i(arra)o
+(ys)g Fj(A;)8 b(J)d(A)p Fl(.)120 2233 y Fh(GETDIA)164 b Fl(Extracts)12
+b(a)g(sp)q(eci\014ed)f(diagonal)i(from)d(a)j(matrix.)18 b(An)11
+b(option)h(is)g(pro)o(vided)510 2293 y(to)20 b(transform)g(the)g(input)f
+(matrix)g(so)h(that)h(the)e(extracted)g(diagonal)i(is)510 2353
+y(zero)q(ed)d(out)h(in)f(input)g(matrix.)26 b(Otherwise)18
+b(the)g(diagonal)i(is)e(extracted)510 2413 y(and)f(the)f(input)g(matrix)e
+(remains)h(un)o(touc)o(hed.)120 2522 y Fh(GETL)236 b Fl(This)22
+b(subroutine)g(extracts)g(the)f(lo)o(w)o(er)g(triangular)h(part)h(of)f(a)g
+(matrix,)510 2582 y(including)15 b(the)h(main)f(diagonal.)22
+b(The)17 b(algorithm)e(is)h(in-place.)120 2690 y Fh(GETU)227
+b Fl(Extracts)14 b(the)g(upp)q(er)g(triangular)h(part)f(of)h(a)f(matrix.)19
+b(Similar)12 b(to)i(GETL.)p eop
+%%Page: 14 14
+14 13 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(14)120
+132 y Fh(LEVELS)175 b Fl(Computes)14 b(the)h(lev)o(el)e(sc)o(heduling)h(data)
+i(structure)e(for)i(lo)o(w)o(er)e(triangular)510 192 y(matrices,)g(see)i
+([1].)120 303 y Fh(AMASK)178 b Fl(Extracts)21 b Fj(C)k Fl(=)d
+Fj(A)14 b Fg(\014)g Fj(M)5 b Fl(,)22 b(i.e.,)e(p)q(erforms)g(the)h(mask)f(op)
+q(eration.)36 b(This)510 363 y(routine)16 b(computes)f(a)h(sparse)h(matrix)e
+(from)g(an)h(input)g(matrix)f Fj(A)h Fl(b)o(y)f(ex-)510 423
+y(tracting)d(only)h(the)f(elemen)o(ts)e(in)i Fj(A)p Fl(,)g(where)g(the)g
+(corresp)q(onding)i(elemen)o(ts)510 483 y(of)f Fj(M)19 b Fl(are)13
+b(nonzero.)21 b(The)13 b(mask)f(matrix)g Fj(M)5 b Fl(,)13 b(is)g(a)h(sparse)g
+(matrix)d(in)i(CSR)510 544 y(format)i(without)h(the)f(real)h(v)m(alues,)f
+(i.e.,)f(only)h(the)h(in)o(teger)e(arra)o(ys)i(of)g(the)510
+604 y(CSR)g(format)g(are)g(passed.)120 712 y Fh(CPERM)180 b
+Fl(P)o(erm)o(utes)13 b(the)h(columns)g(of)h(a)g(matrix,)e(i.e.,)g(computes)g
+(the)i(matrix)e Fj(B)j Fl(=)510 772 y Fj(AQ)f Fl(where)h Fj(Q)g
+Fl(is)g(a)h(p)q(erm)o(utation)e(matrix.)120 881 y Fh(RPERM)178
+b Fl(P)o(erm)o(utes)11 b(the)j(ro)o(ws)g(of)g(a)g(matrix,)d(i.e.,)h(computes)
+h(the)g(matrix)f Fj(B)k Fl(=)e Fj(P)7 b(A)510 941 y Fl(where)16
+b Fj(P)23 b Fl(is)16 b(a)h(p)q(erm)o(utation)e(matrix.)120
+1050 y Fh(DPERM)177 b Fl(P)o(erm)o(utes)16 b(the)h(ro)o(ws)i(and)f(columns)f
+(of)h(a)h(matrix,)d(i.e.,)g(computes)h Fj(B)i Fl(=)510 1110
+y Fj(P)7 b(AQ)23 b Fl(giv)o(en)f(t)o(w)o(o)h(p)q(erm)o(utation)f(matrices)f
+Fj(P)31 b Fl(and)23 b Fj(Q)p Fl(.)42 b(This)23 b(routine)510
+1170 y(giv)o(es)15 b(a)i(sp)q(ecial)f(treatmen)o(t)e(to)j(the)f(common)e
+(case)i(where)g Fj(Q)e Fl(=)f Fj(P)1780 1152 y Ff(T)1808 1170
+y Fl(.)120 1281 y Fh(DPERM2)149 b Fl(General)16 b(submatrix)f(p)q(erm)o
+(utation/extraction)g(routine.)120 1401 y Fh(DMPERM)124 b Fl(Symmetri)o(c)19
+b(p)q(erm)o(utation)h(of)i(ro)o(w)g(and)g(column)e(\(B=P)l(AP'\))h(in)g(MSR)
+510 1461 y(format)120 1560 y Fh(D)n(VPERM)137 b Fl(P)o(erforms)17
+b(an)i(in-place)f(p)q(erm)o(utation)f(of)i(a)f(real)g(v)o(ector,)g(i.e.,)f(p)
+q(erforms)510 1620 y Fj(x)d Fl(:=)f Fj(P)7 b(x)p Fl(,)16 b(where)g
+Fj(P)23 b Fl(is)16 b(a)h(p)q(erm)o(utation)e(matrix.)120 1729
+y Fh(IVPERM)157 b Fl(P)o(erforms)15 b(an)i(in-place)e(p)q(erm)o(utation)g(of)
+i(an)g(in)o(teger)e(v)o(ector.)120 1849 y Fh(RETMX)177 b Fl(Returns)24
+b(the)f(maxim)n(um)d(absolute)k(v)m(alue)f(in)g(eac)o(h)g(ro)o(w)h(of)g(an)g
+(input)510 1909 y(matrix.)120 2008 y Fh(DIAPOS)173 b Fl(Returns)23
+b(the)g(p)q(ositions)g(in)g(the)g(arra)o(ys)g Fj(A)g Fl(and)g
+Fj(J)5 b(A)22 b Fl(of)h(the)g(diagonal)510 2068 y(elemen)o(ts,)13
+b(for)k(a)f(matrix)f(stored)h(in)g(CSR)h(format.)120 2177 y
+Fh(EXTBDG)145 b Fl(Extracts)22 b(the)h(main)e(diagonal)i(blo)q(c)o(ks)f(of)g
+(a)h(matrix.)38 b(The)22 b(output)h(is)510 2237 y(a)e(rectangular)h(matrix)d
+(of)i(dimension)f Fj(N)f Fg(\002)14 b Fj(N)5 b(B)s(LK)t Fl(,)22
+b(con)o(taining)f(the)510 2297 y Fj(N)q(=)m(N)5 b(B)s(LK)21
+b Fl(blo)q(c)o(ks,)16 b(in)g(whic)o(h)f Fj(N)5 b(B)s(LK)21
+b Fl(is)16 b(the)g(blo)q(c)o(k-size)f(\(input\).)120 2408 y
+Fh(GETBWD)129 b Fl(Returns)24 b(bandwidth)h(information)e(on)h(a)h(matrix.)43
+b(This)24 b(subroutine)510 2468 y(returns)17 b(the)g(bandwidth)h(of)g(the)f
+(lo)o(w)o(er)g(part)g(and)h(the)g(upp)q(er)f(part)h(of)g(a)510
+2529 y(giv)o(en)13 b(matrix.)19 b(Ma)o(y)13 b(b)q(e)h(used)h(to)f(determine)d
+(these)j(t)o(w)o(o)g(parameters)f(for)510 2589 y(con)o(v)o(erting)i(a)i
+(matrix)d(in)o(to)i(the)g(BND)g(format.)p eop
+%%Page: 15 15
+15 14 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(15)120
+132 y Fh(BLKFND)150 b Fl(A)o(ttempts)12 b(to)j(\014nd)f(the)g(blo)q(c)o
+(k-size)f(of)i(a)g(matrix)d(stored)j(in)f(CSR)g(format.)510
+192 y(One)21 b(restriction)g(is)h(that)g(the)f(zero)h(elemen)o(ts)d(in)i(eac)
+o(h)g(blo)q(c)o(k)g(if)h(there)510 252 y(are)15 b(an)o(y)g(are)g(assumed)f
+(to)h(b)q(e)g(represen)o(ted)f(as)h(nonzero)h(elemen)o(ts)c(in)i(the)510
+312 y(data)j(structure)f(for)h(the)f Fj(A)f Fl(matrix,)f(with)j(zero)e(v)m
+(alues.)120 421 y Fh(BLK)n(CHK)146 b Fl(Chec)o(ks)13 b(whether)g(a)g(giv)o
+(en)g(in)o(teger)f(is)h(the)g(blo)q(c)o(k)g(size)g(of)g(A.)g(This)g(routine)
+510 481 y(is)j(called)f(b)o(y)h(BLKFND.)f(Same)g(restriction)h(as)h(ab)q(o)o
+(v)o(e.)120 589 y Fh(INFDIA)184 b Fl(Computes)17 b(the)g(n)o(um)o(b)q(er)f
+(of)h(nonzero)h(elemen)o(ts)d(of)j(eac)o(h)f(of)g(the)h(2)p
+Fj(n)12 b Fg(\000)g Fl(1)510 649 y(diagonals)k(of)f(a)g(matrix.)k(Note)14
+b(that)h(the)f(\014rst)h(diagonal)g(is)g(the)f(diagonal)510
+710 y(with)h(o\013set)h Fg(\000)p Fj(n)g Fl(whic)o(h)f(consists)g(of)h(the)f
+(en)o(try)g Fj(a)1440 717 y Ff(n;)p Fd(1)1506 710 y Fl(and)h(the)f(last)h
+(one)f(is)510 770 y(the)h(diagonal)h(with)f(o\013set)h Fj(n)g
+Fl(whic)o(h)e(consists)i(of)f(the)g(elemen)o(t)e Fj(a)1740
+777 y Fd(1)p Ff(;n)1790 770 y Fl(.)120 882 y Fh(AMUBDG)125
+b Fl(Computes)23 b(the)g(n)o(um)o(b)q(er)f(of)i(nonzero)g(elemen)o(ts)d(in)i
+(eac)o(h)g(ro)o(w)h(of)g(the)510 943 y(pro)q(duct)19 b(of)g(t)o(w)o(o)f
+(sparse)h(matrices)e Fj(A)h Fl(and)h Fj(B)s Fl(.)27 b(Also)18
+b(returns)h(the)f(total)510 1003 y(n)o(um)o(b)q(er)c(of)j(nonzero)g(elemen)o
+(ts.)120 1102 y Fh(APLBDG)149 b Fl(Computes)13 b(the)g(n)o(um)o(b)q(er)f(of)i
+(nonzero)g(elemen)o(ts)d(in)i(eac)o(h)g(ro)o(w)h(of)g(the)f(sum)510
+1162 y(of)19 b(t)o(w)o(o)g(sparse)g(matrices)e Fj(A)i Fl(and)g
+Fj(B)s Fl(.)29 b(Also)18 b(returns)h(the)g(total)g(n)o(um)o(b)q(er)510
+1222 y(of)e(nonzero)f(elemen)o(ts.)120 1321 y Fh(RNRMS)178
+b Fl(Computes)20 b(the)h(norms)g(of)g(the)g(ro)o(ws)g(of)h(a)f(matrix.)34
+b(The)21 b(usual)h(three)510 1381 y(norms)16 b Fg(k)p Fj(:)p
+Fg(k)721 1388 y Fd(1)740 1381 y Fj(;)8 b Fg(k)p Fj(:)p Fg(k)826
+1388 y Fd(2)845 1381 y Fj(;)15 b Fl(and)i Fg(k)p Fj(:)p Fg(k)1033
+1388 y Fb(1)1086 1381 y Fl(are)g(supp)q(orted.)120 1492 y Fh(CNRMS)180
+b Fl(Computes)16 b(the)g(norms)g(of)h(the)g(columns)e(of)i(a)g(matrix.)k
+(Similar)14 b(to)j(RN-)510 1552 y(RMS.)120 1651 y Fh(R)n(OSCAL)161
+b Fl(Scales)13 b(the)f(ro)o(ws)i(of)f(a)h(matrix)d(b)o(y)h(their)h(norms.)19
+b(The)13 b(same)f(three)h(norms)510 1711 y(as)k(in)f(RNRMS)f(are)h(a)o(v)m
+(ailable.)120 1810 y Fh(COSCAL)161 b Fl(Scales)18 b(the)h(columns)e(of)i(a)h
+(matrix)d(b)o(y)h(their)g(norms.)28 b(The)19 b(same)f(three)510
+1870 y(norms)e(as)g(in)g(RNRMS)g(are)g(a)o(v)m(ailable.)120
+1969 y Fh(ADDBLK)144 b Fl(Adds)16 b(a)h(matrix)d(B)i(in)o(to)g(a)h(blo)q(c)o
+(k)e(of)i(A.)120 2089 y Fh(GET1UP)161 b Fl(Collects)22 b(the)h(\014rst)h
+(elemen)o(t)o(s)d(of)i(eac)o(h)g(ro)o(w)g(of)g(the)g(upp)q(er)h(triangular)
+510 2149 y(p)q(ortion)17 b(of)g(the)f(matrix.)120 2258 y Fh(XTR)n(O)n(WS)140
+b Fl(Extracts)16 b(giv)o(en)g(ro)o(ws)g(from)g(a)g(matrix)f(in)h(CSR)g
+(format.)120 2378 y Fh(CSRKVSTR)79 b Fl(Finds)16 b(blo)q(c)o(k)g
+(partitioning)g(of)h(matrix)d(in)i(CSR)g(format.)120 2498 y
+Fh(CSRKVSTC)81 b Fl(Finds)16 b(blo)q(c)o(k)g(column)e(partitioning)j(of)f
+(matrix)f(in)h(CSR)g(format.)120 2618 y Fh(KVSTMER)n(GE)23
+b Fl(Merges)16 b(blo)q(c)o(k)g(partitionings)g(for)h(conformal)e(ro)o
+(w/column)g(pattern.)p eop
+%%Page: 16 16
+16 15 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(16)60
+144 y Fk(4)83 b(Input/Output)27 b(routines)60 253 y Fl(The)19
+b(INOUT)e(mo)q(dule)g(of)i(SP)l(ARSKIT)f(comprises)f(a)i(few)g(routines)f
+(for)h(reading,)g(writing,)f(and)60 314 y(for)d(plotting)h(and)f(visualizing)
+g(the)f(structure)h(of)h(sparse)g(matrices.)j(Man)o(y)14 b(of)i(these)f
+(routines)g(are)60 374 y(essen)o(tially)h(geared)j(to)o(w)o(ards)f(the)g
+(utilization)f(of)h(the)g(Harw)o(ell/Bo)q(eing)f(collection)g(of)h(matrices.)
+60 434 y(There)e(are)g(curren)o(tly)f(elev)o(en)f(subroutines)j(in)f(this)g
+(mo)q(dule.)120 644 y Fh(READMT)134 b Fl(Reads)17 b(a)f(matrix)f(in)h(the)g
+(Harw)o(ell/Bo)q(eing)f(format.)120 764 y Fh(PR)-5 b(TMT)184
+b Fl(Creates)15 b(a)g(Harw)o(ell)f(Bo)q(eing)h(\014le)f(from)g(an)h
+(arbitrary)g(matrix)e(in)i(CSR)g(or)510 824 y(CSC)i(format.)120
+923 y Fh(DUMP)213 b Fl(DUMP)21 b(prin)o(ts)f(the)g(ro)o(ws)i(of)f(a)g(matrix)
+e(in)i(a)g(\014le,)g(in)f(a)h(nice)f(readable)510 983 y(format.)39
+b(The)22 b(b)q(est)h(format)e(is)h(in)o(ternally)f(calculated)g(dep)q(ending)
+i(on)510 1044 y(the)18 b(n)o(um)o(b)q(er)f(of)h(nonzero)h(elemen)o(ts.)24
+b(This)19 b(is)f(a)h(simple)d(routine)i(whic)o(h)510 1104 y(migh)o(t)d(b)q(e)
+h(helpful)f(for)i(debugging)g(purp)q(oses.)120 1212 y Fh(PSPL)-5
+b(TM)162 b Fl(Generates)16 b(a)h(p)q(ost-script)g(plot)f(of)h(the)f(non-zero)
+h(pattern)f(of)h(A.)120 1332 y Fh(PL)-5 b(TMT)192 b Fl(Creates)16
+b(a)h(pic)f(\014le)f(for)i(plotting)f(the)g(pattern)g(of)h(a)g(matrix.)120
+1453 y Fh(SMMS)222 b Fl(W)l(rite)15 b(the)h(matrx)f(in)h(a)h(format)f(used)g
+(in)g(SMMS)g(pac)o(k)m(age.)120 1573 y Fh(READSM)142 b Fl(Reads)17
+b(matrices)d(in)i(co)q(ordinate)h(format)e(\(as)i(in)f(SMMS)g(pac)o(k)m
+(age\).)120 1693 y Fh(READSK)151 b Fl(Reads)17 b(matrices)d(in)i(CSR)g
+(format)g(\(simpli\014ed)e(H/B)h(format\).)120 1813 y Fh(SKIT)255
+b Fl(W)l(rites)16 b(matrices)e(to)j(a)f(\014le,)f(format)h(same)f(as)i(ab)q
+(o)o(v)o(e.)120 1933 y Fh(PR)-5 b(TUNF)154 b Fl(W)l(rites)16
+b(matrices)e(\(in)i(CSR)g(format\))g(in)g(unformatted)f(\014les.)120
+2054 y Fh(READUNF)104 b Fl(Reads)17 b(unformatted)e(\014le)h(con)o(taining)g
+(matrices)e(in)i(CSR)g(format.)120 2264 y(The)22 b(routines)f(readm)o(t)f
+(and)j(prtm)o(t)d(allo)o(w)h(to)h(read)g(and)g(create)f(\014les)g(con)o
+(taining)h(matrices)60 2324 y(stored)d(in)f(the)h(H/B)f(format.)27
+b(F)l(or)19 b(details)f(concerning)g(this)h(format)f(the)g(reader)h(is)f
+(referred)g(to)60 2384 y([4])d(or)h(the)f(summary)e(giv)o(en)i(in)g(the)g(do)
+q(cumen)o(tation)g(of)h(the)f(subroutine)h(READMT.)f(While)f(the)60
+2444 y(purp)q(ose)g(of)f(readm)o(t)e(is)i(clear,)f(it)g(is)h(not)g(ob)o
+(vious)g(that)g(one)g(single)f(subroutine)h(can)g(write)g(a)g(matrix)60
+2504 y(in)19 b(H/B)g(format)g(and)h(still)e(satisfy)i(the)f(needs)g(of)h(all)
+f(users.)31 b(F)l(or)19 b(example)f(for)h(some)g(matrices)60
+2565 y(all)c(nonzero)h(en)o(tries)e(are)i(actually)f(in)o(tegers)g(and)h(a)g
+(format)f(using)h(sa)o(y)f(a)h(10)h(digit)e(man)o(tissa)g(ma)o(y)60
+2625 y(en)o(tail)21 b(an)h(enormous)f(w)o(aste)h(of)g(storage)h(if)e(the)g
+(matrix)f(is)i(large.)37 b(The)22 b(solution)g(pro)o(vided)f(is)60
+2685 y(to)e(compute)e(in)o(ternally)g(the)h(b)q(est)h(formats)f(for)h(the)f
+(in)o(teger)g(arra)o(ys)h(IA)f(and)h(JA.)f(A)g(little)f(help)p
+eop
+%%Page: 17 17
+17 16 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(17)60
+132 y(is)17 b(required)g(from)f(the)i(user)f(for)h(the)g(real)f(v)m(alues)h
+(in)f(the)g(arra)o(ys)h(A)f(and)i(RHS.)d(Sp)q(eci\014cally)l(,)g(the)60
+192 y(desired)11 b(format)g(is)g(obtained)h(from)f(a)h(parameter)f(of)h(the)f
+(subroutine)h(b)o(y)f(using)h(a)g(simple)e(notation,)60 252
+y(whic)o(h)16 b(is)g(explained)f(in)h(detail)f(in)h(the)g(do)q(cumen)o
+(tation)f(of)i(the)f(routine.)120 312 y(Besides)i(the)h(pair)g(of)g(routines)
+h(that)f(can)g(read/write)g(matrices)f(in)g(H/B)h(format,)f(there)h(are)60
+372 y(three)e(other)h(pairs)f(whic)o(h)g(can)h(b)q(e)f(used)h(to)g(input)f
+(and)h(output)h(matrices)c(in)i(di\013eren)o(t)g(formats.)60
+432 y(The)12 b(SMMS)f(and)i(READSM)e(pair)h(write)f(and)i(read)f(matrices)e
+(in)h(the)h(format)f(used)h(in)f(the)h(pac)o(k)m(age)60 493
+y(SMMS.)j(Sp)q(eci\014cally)l(,)f(READSM)i(reads)g(a)h(matrix)d(in)i(SMMS)f
+(format)h(from)f(a)h(\014le)g(and)g(outputs)60 553 y(it)21
+b(in)g(CSR)g(format.)36 b(SMMS)21 b(accepts)g(a)g(matrix)f(in)h(CSR)g(format)
+g(and)h(writes)f(it)f(to)i(a)g(\014le)e(in)60 613 y(SMMS)c(format.)21
+b(The)16 b(SMMS)g(format)g(is)g(essen)o(tially)e(a)j(COO)f(format.)21
+b(The)c(size)e(of)i(the)f(matrix)60 673 y(app)q(ears)f(in)e(the)g(\014rst)h
+(line)e(of)h(the)h(\014le.)19 b(Eac)o(h)14 b(other)f(line)f(of)i(the)f
+(\014le)g(con)o(tains)g(triplets)g(in)g(the)g(form)60 733 y(of)i(\()p
+Fj(i)p Fl(,)f Fj(j)s Fl(,)h Fj(a)256 740 y Ff(ij)286 733 y
+Fl(\))f(whic)o(h)g(denote)h(the)g(non-zero)g(elemen)o(ts)d(of)j(the)f
+(matrix.)19 b(Similarly)l(,)12 b(READSK)i(and)60 794 y(SKIT)f(read)f(and)i
+(write)e(matrices)e(in)j(CSR)g(format.)19 b(This)13 b(pair)f(is)h(v)o(ery)e
+(similar)g(to)i(READMT)f(and)60 854 y(PR)l(TMT,)k(only)h(that)g(the)g
+(\014les)f(read/written)h(b)o(y)f(READSK)h(and)g(SKIT)g(do)g(not)g(ha)o(v)o
+(e)f(headers.)60 914 y(The)g(pair)f(READUNF)g(and)h(PR)l(TUNF)f(reads)h(and)h
+(writes)e(the)g(matrices)f(\(stored)i(as)h Fj(ia)p Fl(,)d Fj(j)s(a)h
+Fl(and)60 974 y Fj(a)p Fl(\))k(in)g(binary)g(form,)g(i.e.)f(the)h(n)o(um)o(b)
+q(er)e(in)i(the)g(\014le)g(written)g(b)o(y)g(PR)l(TUNF)f(will)h(b)q(e)g(in)g
+(mac)o(hine)60 1034 y(represen)o(tations.)26 b(The)18 b(primary)e(motiv)m
+(ation)h(for)h(this)g(is)f(that)i(handling)f(the)f(arra)o(ys)i(in)e(binary)60
+1095 y(form)c(tak)o(es)g(less)g(space)h(than)g(in)g(the)f(usual)h(ASCI)q(I)f
+(form,)g(and)h(is)f(usually)h(faster.)20 b(If)13 b(the)h(matrices)60
+1155 y(are)i(large)h(and)g(they)f(are)g(only)h(used)f(on)h(compatible)d
+(computers,)h(it)h(migh)o(t)f(b)q(e)i(desirable)e(to)i(use)60
+1215 y(unformatted)e(\014les.)120 1275 y(W)l(e)22 b(found)h(it)f(extremel)o
+(y)d(useful)j(to)h(b)q(e)f(able)g(to)h(visualize)d(a)j(sparse)g(matrix,)e
+(notably)i(for)60 1335 y(debugging)15 b(purp)q(oses.)21 b(A)14
+b(simple)e(lo)q(ok)i(at)g(the)g(plot)g(can)g(sometimes)d(rev)o(eal)h(whether)
+i(the)g(matrix)60 1396 y(obtained)j(from)f(some)f(reordering)i(tec)o(hnique)e
+(do)q(es)i(indeed)f(ha)o(v)o(e)g(the)h(exp)q(ected)f(structure.)22
+b(F)l(or)60 1456 y(no)o(w)16 b(t)o(w)o(o)f(simple)e(plotting)j(mec)o(hanisms)
+c(are)k(pro)o(vided.)k(First,)15 b(a)h(prepro)q(cessor)g(called)e(PL)l(TMT)60
+1516 y(to)20 b(the)f(Unix)g(utilit)o(y)e(`Pic')h(allo)o(ws)i(one)f(to)h
+(generate)f(a)h(pic)f(\014le)g(from)f(a)i(matrix)e(that)i(is)f(in)g(the)60
+1576 y(Harw)o(ell/Bo)q(eing)d(format)g(or)h(an)o(y)g(other)g(format.)23
+b(F)l(or)17 b(example)d(for)k(a)f(Harw)o(ell/Bo)q(eing)f(matrix)60
+1636 y(\014le,)f(the)h(command)e(is)i(of)h(the)f(form)737 1738
+y Fa(hb2pic.ex)23 b(<)i(HB)p 1100 1738 16 2 v 18 w(file.)60
+1840 y Fl(The)13 b(output)g(\014le)f(is)h(then)f(prin)o(ted)g(b)o(y)g(the)h
+(usual)g(tro\013)g(or)g(T)l(eX)f(commands.)19 b(A)12 b(translation)h(of)g
+(this)60 1900 y(routine)j(in)o(to)g(one)g(that)h(generates)g(a)f(p)q
+(ost-script)h(\014le)f(is)g(also)h(a)o(v)m(ailable)e(\(called)h(PSPL)l(TM\).)
+g(W)l(e)60 1960 y(should)g(p)q(oin)o(t)g(out)g(that)g(the)g(plotting)g
+(routines)f(are)h(v)o(ery)e(simple)g(in)h(nature)h(and)h(should)f(not)g(b)q
+(e)60 2020 y(used)c(to)h(plot)f(large)g(matrices.)18 b(F)l(or)12
+b(example)e(the)i(pltm)o(t)e(routine)i(outputs)h(one)g(pic)e(command)f(line)
+60 2080 y(for)16 b(ev)o(ery)d(nonzero)j(elemen)o(t.)i(This)d(constitutes)h(a)
+f(con)o(v)o(enien)o(t)f(to)q(ol)i(for)f(do)q(cumen)o(t)f(preparation)60
+2141 y(for)g(example.)k(Matrices)12 b(of)i(size)e(just)h(up)h(to)g(a)f(few)g
+(thousands)i(can)f(b)q(e)f(prin)o(ted)f(this)h(w)o(a)o(y)l(.)20
+b(Sev)o(eral)60 2201 y(options)d(concerning)f(the)g(size)f(of)i(the)f(plot)g
+(and)h(caption)f(generation)h(are)f(a)o(v)m(ailable.)120 2261
+y(There)h(is)g(also)h(a)g(simple)d(utilit)o(y)g(program)i(called)f(\\h)o
+(b2ps")j(whic)o(h)d(tak)o(es)h(a)h(matrix)e(\014le)g(with)60
+2321 y(HB)21 b(format)g(and)i(translates)f(it)f(in)o(to)h(a)g(p)q(ost-script)
+h(\014le.)37 b(The)22 b(usage)h(of)f(this)g(program)g(is)f(as)60
+2381 y(follo)o(ws:)523 2483 y Fa(hb2ps.ex)i(<)i(HB)p 860 2483
+V 18 w(file)f(>)h(Postscript)p 1316 2483 V 15 w(file.)60 2585
+y Fl(The)17 b(\014le)f(can)i(b)q(e)f(preview)o(ed)e(with)i(ghostscript.)24
+b(The)17 b(follo)o(wing)g(graph)h(sho)o(ws)g(a)f(pattern)g(of)h(an)60
+2645 y(unsymmetric)13 b(matrix.)p eop
+%%Page: 18 18
+18 17 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(18)240
+90 y
+ 23681433 20366028 0 0 34666987 29864919 startTexFig
+ 240 90 a
+%%BeginDocument: jpwh.ps
+%!
+%%Creator: PSPLTM routine
+%%309.92 133.88 1244.56 1165.72
+%%74 94 527 454
+%%BoundingBox: 0 0 527 454
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+/Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 2.15000 cm moveto
+(AN UNSYMMETRIC MATRIX FROM PHILIPS LTD, J.P.WHELAN,1978.) Cshow
+ 4.44500 cm 3.35000 cm translate
+ 12.7000 cm 992 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 992 0 lineto
+ 992 992 lineto
+ 0 992 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 990 p
+ 83 990 p
+ 1 989 p
+ 84 989 p
+ 121 989 p
+ 146 989 p
+ 164 989 p
+ 2 988 p
+ 121 988 p
+ 3 987 p
+ 121 987 p
+ 122 987 p
+ 140 987 p
+ 4 986 p
+ 84 986 p
+ 122 986 p
+ 5 985 p
+ 6 984 p
+ 100 984 p
+ 123 984 p
+ 7 983 p
+ 106 983 p
+ 123 983 p
+ 124 983 p
+ 8 982 p
+ 106 982 p
+ 111 982 p
+ 123 982 p
+ 9 981 p
+ 10 980 p
+ 95 980 p
+ 11 979 p
+ 106 979 p
+ 125 979 p
+ 138 979 p
+ 152 979 p
+ 12 978 p
+ 85 978 p
+ 95 978 p
+ 125 978 p
+ 13 977 p
+ 119 977 p
+ 14 976 p
+ 119 976 p
+ 126 976 p
+ 15 975 p
+ 119 975 p
+ 158 975 p
+ 16 974 p
+ 93 974 p
+ 126 974 p
+ 17 973 p
+ 93 973 p
+ 18 972 p
+ 93 972 p
+ 19 971 p
+ 101 971 p
+ 113 971 p
+ 20 970 p
+ 101 970 p
+ 139 970 p
+ 21 969 p
+ 82 969 p
+ 98 969 p
+ 101 969 p
+ 22 968 p
+ 98 968 p
+ 23 967 p
+ 98 967 p
+ 24 966 p
+ 25 965 p
+ 114 965 p
+ 139 965 p
+ 141 965 p
+ 153 965 p
+ 163 965 p
+ 26 964 p
+ 127 964 p
+ 139 964 p
+ 141 964 p
+ 27 963 p
+ 114 963 p
+ 28 962 p
+ 115 962 p
+ 143 962 p
+ 155 962 p
+ 165 962 p
+ 194 962 p
+ 29 961 p
+ 114 961 p
+ 143 961 p
+ 30 960 p
+ 128 960 p
+ 143 960 p
+ 31 959 p
+ 105 959 p
+ 117 959 p
+ 129 959 p
+ 166 959 p
+ 32 958 p
+ 105 958 p
+ 33 957 p
+ 83 957 p
+ 105 957 p
+ 34 956 p
+ 83 956 p
+ 94 956 p
+ 35 955 p
+ 94 955 p
+ 102 955 p
+ 36 954 p
+ 94 954 p
+ 37 953 p
+ 91 953 p
+ 128 953 p
+ 38 952 p
+ 39 951 p
+ 103 951 p
+ 112 951 p
+ 116 951 p
+ 128 951 p
+ 154 951 p
+ 156 951 p
+ 159 951 p
+ 167 951 p
+ 40 950 p
+ 91 950 p
+ 104 950 p
+ 41 949 p
+ 92 949 p
+ 103 949 p
+ 42 948 p
+ 104 948 p
+ 43 947 p
+ 44 946 p
+ 92 946 p
+ 108 946 p
+ 130 946 p
+ 45 945 p
+ 92 945 p
+ 130 945 p
+ 46 944 p
+ 47 943 p
+ 102 943 p
+ 131 943 p
+ 48 942 p
+ 102 942 p
+ 107 942 p
+ 132 942 p
+ 49 941 p
+ 108 941 p
+ 132 941 p
+ 50 940 p
+ 107 940 p
+ 51 939 p
+ 111 939 p
+ 161 939 p
+ 168 939 p
+ 180 939 p
+ 52 938 p
+ 107 938 p
+ 53 937 p
+ 54 936 p
+ 100 936 p
+ 110 936 p
+ 111 936 p
+ 55 935 p
+ 82 935 p
+ 56 934 p
+ 84 934 p
+ 100 934 p
+ 110 934 p
+ 57 933 p
+ 95 933 p
+ 58 932 p
+ 85 932 p
+ 108 932 p
+ 59 931 p
+ 85 931 p
+ 109 931 p
+ 60 930 p
+ 91 930 p
+ 109 930 p
+ 61 929 p
+ 99 929 p
+ 131 929 p
+ 133 929 p
+ 62 928 p
+ 131 928 p
+ 63 927 p
+ 103 927 p
+ 64 926 p
+ 99 926 p
+ 65 925 p
+ 127 925 p
+ 66 924 p
+ 109 924 p
+ 126 924 p
+ 67 923 p
+ 115 923 p
+ 68 922 p
+ 82 922 p
+ 113 922 p
+ 118 922 p
+ 69 921 p
+ 113 921 p
+ 134 921 p
+ 158 921 p
+ 169 921 p
+ 178 921 p
+ 188 921 p
+ 212 921 p
+ 70 920 p
+ 134 920 p
+ 71 919 p
+ 134 919 p
+ 72 918 p
+ 73 917 p
+ 135 917 p
+ 74 916 p
+ 117 916 p
+ 75 915 p
+ 117 915 p
+ 136 915 p
+ 76 914 p
+ 136 914 p
+ 77 913 p
+ 116 913 p
+ 136 913 p
+ 144 913 p
+ 147 913 p
+ 78 912 p
+ 96 912 p
+ 79 911 p
+ 112 911 p
+ 116 911 p
+ 144 911 p
+ 145 911 p
+ 187 911 p
+ 80 910 p
+ 96 910 p
+ 124 910 p
+ 81 909 p
+ 112 909 p
+ 124 909 p
+ 140 909 p
+ 145 909 p
+ 170 909 p
+ 82 908 p
+ 118 908 p
+ 168 908 p
+ 181 908 p
+ 195 908 p
+ 83 907 p
+ 171 907 p
+ 182 907 p
+ 190 907 p
+ 84 906 p
+ 146 906 p
+ 151 906 p
+ 172 906 p
+ 213 906 p
+ 85 905 p
+ 120 905 p
+ 160 905 p
+ 173 905 p
+ 197 905 p
+ 86 904 p
+ 99 904 p
+ 159 904 p
+ 82 903 p
+ 87 903 p
+ 118 903 p
+ 88 902 p
+ 164 902 p
+ 174 902 p
+ 89 901 p
+ 129 901 p
+ 90 900 p
+ 96 900 p
+ 138 900 p
+ 158 900 p
+ 175 900 p
+ 91 899 p
+ 104 899 p
+ 115 899 p
+ 154 899 p
+ 155 899 p
+ 176 899 p
+ 92 898 p
+ 133 898 p
+ 177 898 p
+ 93 897 p
+ 127 897 p
+ 178 897 p
+ 193 897 p
+ 220 897 p
+ 94 896 p
+ 179 896 p
+ 189 896 p
+ 95 895 p
+ 125 895 p
+ 173 895 p
+ 180 895 p
+ 183 895 p
+ 96 894 p
+ 144 894 p
+ 152 894 p
+ 175 894 p
+ 203 894 p
+ 97 893 p
+ 122 893 p
+ 140 893 p
+ 98 892 p
+ 153 892 p
+ 184 892 p
+ 195 892 p
+ 99 891 p
+ 150 891 p
+ 170 891 p
+ 221 891 p
+ 100 890 p
+ 110 890 p
+ 172 890 p
+ 186 890 p
+ 101 889 p
+ 181 889 p
+ 209 889 p
+ 264 889 p
+ 102 888 p
+ 148 888 p
+ 157 888 p
+ 163 888 p
+ 179 888 p
+ 198 888 p
+ 214 888 p
+ 103 887 p
+ 133 887 p
+ 159 887 p
+ 162 887 p
+ 200 887 p
+ 91 886 p
+ 104 886 p
+ 120 886 p
+ 154 886 p
+ 162 886 p
+ 176 886 p
+ 105 885 p
+ 129 885 p
+ 149 885 p
+ 182 885 p
+ 106 884 p
+ 183 884 p
+ 192 884 p
+ 107 883 p
+ 157 883 p
+ 184 883 p
+ 108 882 p
+ 120 882 p
+ 130 882 p
+ 161 882 p
+ 173 882 p
+ 177 882 p
+ 222 882 p
+ 109 881 p
+ 176 881 p
+ 100 880 p
+ 110 880 p
+ 172 880 p
+ 185 880 p
+ 111 879 p
+ 168 879 p
+ 180 879 p
+ 183 879 p
+ 186 879 p
+ 223 879 p
+ 247 879 p
+ 112 878 p
+ 145 878 p
+ 167 878 p
+ 170 878 p
+ 187 878 p
+ 113 877 p
+ 178 877 p
+ 181 877 p
+ 188 877 p
+ 114 876 p
+ 141 876 p
+ 149 876 p
+ 189 876 p
+ 91 875 p
+ 115 875 p
+ 142 875 p
+ 116 874 p
+ 147 874 p
+ 187 874 p
+ 207 874 p
+ 117 873 p
+ 135 873 p
+ 147 873 p
+ 169 873 p
+ 224 873 p
+ 82 872 p
+ 118 872 p
+ 151 872 p
+ 188 872 p
+ 225 872 p
+ 119 871 p
+ 138 871 p
+ 160 871 p
+ 226 871 p
+ 85 870 p
+ 104 870 p
+ 108 870 p
+ 120 870 p
+ 197 870 p
+ 199 870 p
+ 121 869 p
+ 150 869 p
+ 171 869 p
+ 190 869 p
+ 191 869 p
+ 227 869 p
+ 122 868 p
+ 146 868 p
+ 186 868 p
+ 191 868 p
+ 210 868 p
+ 219 868 p
+ 227 868 p
+ 123 867 p
+ 192 867 p
+ 124 866 p
+ 152 866 p
+ 192 866 p
+ 203 866 p
+ 219 866 p
+ 228 866 p
+ 95 865 p
+ 125 865 p
+ 196 865 p
+ 217 865 p
+ 229 865 p
+ 126 864 p
+ 142 864 p
+ 160 864 p
+ 193 864 p
+ 93 863 p
+ 127 863 p
+ 142 863 p
+ 194 863 p
+ 209 863 p
+ 218 863 p
+ 220 863 p
+ 230 863 p
+ 128 862 p
+ 155 862 p
+ 156 862 p
+ 208 862 p
+ 211 862 p
+ 105 861 p
+ 129 861 p
+ 166 861 p
+ 174 861 p
+ 224 861 p
+ 231 861 p
+ 108 860 p
+ 130 860 p
+ 132 860 p
+ 148 860 p
+ 177 860 p
+ 232 860 p
+ 131 859 p
+ 171 859 p
+ 215 859 p
+ 232 859 p
+ 233 859 p
+ 130 858 p
+ 132 858 p
+ 148 858 p
+ 161 858 p
+ 92 857 p
+ 103 857 p
+ 133 857 p
+ 200 857 p
+ 221 857 p
+ 234 857 p
+ 134 856 p
+ 135 856 p
+ 151 856 p
+ 235 856 p
+ 117 855 p
+ 134 855 p
+ 135 855 p
+ 169 855 p
+ 174 855 p
+ 235 855 p
+ 136 854 p
+ 175 854 p
+ 212 854 p
+ 121 853 p
+ 137 853 p
+ 150 853 p
+ 119 852 p
+ 138 852 p
+ 196 852 p
+ 139 851 p
+ 153 851 p
+ 140 850 p
+ 191 850 p
+ 114 849 p
+ 141 849 p
+ 165 849 p
+ 218 849 p
+ 115 848 p
+ 126 848 p
+ 127 848 p
+ 142 848 p
+ 194 848 p
+ 206 848 p
+ 283 848 p
+ 143 847 p
+ 149 847 p
+ 165 847 p
+ 201 847 p
+ 211 847 p
+ 96 846 p
+ 144 846 p
+ 207 846 p
+ 236 846 p
+ 112 845 p
+ 145 845 p
+ 203 845 p
+ 84 844 p
+ 122 844 p
+ 146 844 p
+ 164 844 p
+ 227 844 p
+ 116 843 p
+ 117 843 p
+ 147 843 p
+ 236 843 p
+ 237 843 p
+ 244 843 p
+ 265 843 p
+ 102 842 p
+ 130 842 p
+ 132 842 p
+ 148 842 p
+ 157 842 p
+ 238 842 p
+ 105 841 p
+ 114 841 p
+ 143 841 p
+ 149 841 p
+ 166 841 p
+ 99 840 p
+ 121 840 p
+ 150 840 p
+ 215 840 p
+ 84 839 p
+ 118 839 p
+ 134 839 p
+ 151 839 p
+ 185 839 p
+ 213 839 p
+ 225 839 p
+ 266 839 p
+ 96 838 p
+ 124 838 p
+ 152 838 p
+ 196 838 p
+ 98 837 p
+ 139 837 p
+ 153 837 p
+ 163 837 p
+ 205 837 p
+ 209 837 p
+ 251 837 p
+ 267 837 p
+ 91 836 p
+ 104 836 p
+ 154 836 p
+ 156 836 p
+ 162 836 p
+ 91 835 p
+ 128 835 p
+ 155 835 p
+ 204 835 p
+ 211 835 p
+ 239 835 p
+ 256 835 p
+ 263 835 p
+ 273 835 p
+ 128 834 p
+ 154 834 p
+ 156 834 p
+ 208 834 p
+ 250 834 p
+ 256 834 p
+ 257 834 p
+ 102 833 p
+ 107 833 p
+ 148 833 p
+ 157 833 p
+ 184 833 p
+ 158 832 p
+ 252 832 p
+ 268 832 p
+ 103 831 p
+ 159 831 p
+ 167 831 p
+ 250 831 p
+ 85 830 p
+ 119 830 p
+ 126 830 p
+ 160 830 p
+ 193 830 p
+ 206 830 p
+ 217 830 p
+ 242 830 p
+ 108 829 p
+ 132 829 p
+ 161 829 p
+ 222 829 p
+ 241 829 p
+ 245 829 p
+ 269 829 p
+ 103 828 p
+ 104 828 p
+ 154 828 p
+ 162 828 p
+ 200 828 p
+ 102 827 p
+ 153 827 p
+ 163 827 p
+ 179 827 p
+ 189 827 p
+ 198 827 p
+ 214 827 p
+ 251 827 p
+ 146 826 p
+ 164 826 p
+ 190 826 p
+ 213 826 p
+ 141 825 p
+ 143 825 p
+ 165 825 p
+ 218 825 p
+ 239 825 p
+ 240 825 p
+ 129 824 p
+ 149 824 p
+ 166 824 p
+ 201 824 p
+ 237 824 p
+ 258 824 p
+ 270 824 p
+ 288 824 p
+ 112 823 p
+ 159 823 p
+ 167 823 p
+ 208 823 p
+ 216 823 p
+ 82 822 p
+ 111 822 p
+ 168 822 p
+ 202 822 p
+ 247 822 p
+ 269 822 p
+ 271 822 p
+ 117 821 p
+ 135 821 p
+ 169 821 p
+ 212 821 p
+ 99 820 p
+ 112 820 p
+ 170 820 p
+ 216 820 p
+ 259 820 p
+ 262 820 p
+ 83 819 p
+ 121 819 p
+ 131 819 p
+ 171 819 p
+ 215 819 p
+ 84 818 p
+ 100 818 p
+ 110 818 p
+ 172 818 p
+ 185 818 p
+ 202 818 p
+ 210 818 p
+ 85 817 p
+ 95 817 p
+ 108 817 p
+ 173 817 p
+ 197 817 p
+ 217 817 p
+ 241 817 p
+ 129 816 p
+ 135 816 p
+ 174 816 p
+ 224 816 p
+ 231 816 p
+ 272 816 p
+ 96 815 p
+ 136 815 p
+ 175 815 p
+ 236 815 p
+ 252 815 p
+ 91 814 p
+ 104 814 p
+ 109 814 p
+ 176 814 p
+ 199 814 p
+ 204 814 p
+ 206 814 p
+ 263 814 p
+ 273 814 p
+ 297 814 p
+ 310 814 p
+ 92 813 p
+ 108 813 p
+ 130 813 p
+ 177 813 p
+ 199 813 p
+ 222 813 p
+ 93 812 p
+ 113 812 p
+ 178 812 p
+ 264 812 p
+ 268 812 p
+ 274 812 p
+ 285 812 p
+ 94 811 p
+ 102 811 p
+ 163 811 p
+ 179 811 p
+ 182 811 p
+ 198 811 p
+ 95 810 p
+ 111 810 p
+ 180 810 p
+ 223 810 p
+ 241 810 p
+ 82 809 p
+ 101 809 p
+ 113 809 p
+ 181 809 p
+ 195 809 p
+ 261 809 p
+ 264 809 p
+ 275 809 p
+ 83 808 p
+ 105 808 p
+ 179 808 p
+ 182 808 p
+ 233 808 p
+ 249 808 p
+ 276 808 p
+ 95 807 p
+ 106 807 p
+ 111 807 p
+ 183 807 p
+ 223 807 p
+ 229 807 p
+ 98 806 p
+ 107 806 p
+ 157 806 p
+ 184 806 p
+ 205 806 p
+ 110 805 p
+ 151 805 p
+ 172 805 p
+ 185 805 p
+ 202 805 p
+ 100 804 p
+ 111 804 p
+ 122 804 p
+ 186 804 p
+ 210 804 p
+ 112 803 p
+ 116 803 p
+ 187 803 p
+ 207 803 p
+ 216 803 p
+ 113 802 p
+ 118 802 p
+ 188 802 p
+ 225 802 p
+ 260 802 p
+ 94 801 p
+ 114 801 p
+ 163 801 p
+ 189 801 p
+ 201 801 p
+ 249 801 p
+ 83 800 p
+ 121 800 p
+ 164 800 p
+ 190 800 p
+ 254 800 p
+ 277 800 p
+ 121 799 p
+ 122 799 p
+ 140 799 p
+ 191 799 p
+ 219 799 p
+ 278 799 p
+ 106 798 p
+ 123 798 p
+ 124 798 p
+ 192 798 p
+ 228 798 p
+ 243 798 p
+ 93 797 p
+ 126 797 p
+ 160 797 p
+ 193 797 p
+ 220 797 p
+ 242 797 p
+ 127 796 p
+ 142 796 p
+ 194 796 p
+ 204 796 p
+ 230 796 p
+ 82 795 p
+ 98 795 p
+ 181 795 p
+ 195 795 p
+ 205 795 p
+ 275 795 p
+ 125 794 p
+ 138 794 p
+ 152 794 p
+ 196 794 p
+ 226 794 p
+ 228 794 p
+ 252 794 p
+ 255 794 p
+ 279 794 p
+ 85 793 p
+ 120 793 p
+ 173 793 p
+ 197 793 p
+ 248 793 p
+ 280 793 p
+ 311 793 p
+ 326 793 p
+ 102 792 p
+ 163 792 p
+ 179 792 p
+ 198 792 p
+ 214 792 p
+ 233 792 p
+ 281 792 p
+ 294 792 p
+ 302 792 p
+ 120 791 p
+ 176 791 p
+ 177 791 p
+ 199 791 p
+ 234 791 p
+ 248 791 p
+ 310 791 p
+ 103 790 p
+ 133 790 p
+ 162 790 p
+ 200 790 p
+ 234 790 p
+ 143 789 p
+ 166 789 p
+ 189 789 p
+ 201 789 p
+ 249 789 p
+ 258 789 p
+ 270 789 p
+ 300 789 p
+ 303 789 p
+ 331 789 p
+ 168 788 p
+ 172 788 p
+ 185 788 p
+ 202 788 p
+ 247 788 p
+ 261 788 p
+ 304 788 p
+ 333 788 p
+ 96 787 p
+ 124 787 p
+ 145 787 p
+ 203 787 p
+ 259 787 p
+ 279 787 p
+ 282 787 p
+ 155 786 p
+ 176 786 p
+ 194 786 p
+ 204 786 p
+ 239 786 p
+ 283 786 p
+ 153 785 p
+ 184 785 p
+ 195 785 p
+ 205 785 p
+ 238 785 p
+ 267 785 p
+ 271 785 p
+ 294 785 p
+ 307 785 p
+ 142 784 p
+ 160 784 p
+ 176 784 p
+ 206 784 p
+ 280 784 p
+ 297 784 p
+ 116 783 p
+ 144 783 p
+ 187 783 p
+ 207 783 p
+ 257 783 p
+ 282 783 p
+ 128 782 p
+ 156 782 p
+ 167 782 p
+ 208 782 p
+ 101 781 p
+ 127 781 p
+ 153 781 p
+ 209 781 p
+ 267 781 p
+ 122 780 p
+ 172 780 p
+ 186 780 p
+ 210 780 p
+ 284 780 p
+ 289 780 p
+ 308 780 p
+ 128 779 p
+ 143 779 p
+ 155 779 p
+ 211 779 p
+ 256 779 p
+ 270 779 p
+ 136 778 p
+ 169 778 p
+ 212 778 p
+ 244 778 p
+ 285 778 p
+ 293 778 p
+ 298 778 p
+ 312 778 p
+ 84 777 p
+ 151 777 p
+ 164 777 p
+ 213 777 p
+ 254 777 p
+ 266 777 p
+ 102 776 p
+ 163 776 p
+ 198 776 p
+ 214 776 p
+ 238 776 p
+ 131 775 p
+ 150 775 p
+ 171 775 p
+ 215 775 p
+ 221 775 p
+ 286 775 p
+ 167 774 p
+ 170 774 p
+ 187 774 p
+ 216 774 p
+ 257 774 p
+ 125 773 p
+ 160 773 p
+ 173 773 p
+ 217 773 p
+ 226 773 p
+ 246 773 p
+ 280 773 p
+ 313 773 p
+ 127 772 p
+ 141 772 p
+ 165 772 p
+ 218 772 p
+ 230 772 p
+ 240 772 p
+ 122 771 p
+ 124 771 p
+ 191 771 p
+ 219 771 p
+ 243 771 p
+ 259 771 p
+ 287 771 p
+ 93 770 p
+ 127 770 p
+ 193 770 p
+ 220 770 p
+ 268 770 p
+ 314 770 p
+ 322 770 p
+ 334 770 p
+ 99 769 p
+ 133 769 p
+ 215 769 p
+ 221 769 p
+ 232 769 p
+ 262 769 p
+ 315 769 p
+ 108 768 p
+ 161 768 p
+ 177 768 p
+ 222 768 p
+ 245 768 p
+ 248 768 p
+ 291 768 p
+ 316 768 p
+ 111 767 p
+ 180 767 p
+ 183 767 p
+ 223 767 p
+ 117 766 p
+ 129 766 p
+ 174 766 p
+ 224 766 p
+ 231 766 p
+ 237 766 p
+ 253 766 p
+ 288 766 p
+ 118 765 p
+ 151 765 p
+ 188 765 p
+ 225 765 p
+ 235 765 p
+ 260 765 p
+ 261 765 p
+ 119 764 p
+ 196 764 p
+ 217 764 p
+ 226 764 p
+ 242 764 p
+ 255 764 p
+ 121 763 p
+ 122 763 p
+ 146 763 p
+ 227 763 p
+ 254 763 p
+ 277 763 p
+ 284 763 p
+ 289 763 p
+ 124 762 p
+ 192 762 p
+ 196 762 p
+ 228 762 p
+ 229 762 p
+ 243 762 p
+ 290 762 p
+ 296 762 p
+ 317 762 p
+ 125 761 p
+ 183 761 p
+ 228 761 p
+ 229 761 p
+ 246 761 p
+ 290 761 p
+ 325 761 p
+ 127 760 p
+ 194 760 p
+ 218 760 p
+ 230 760 p
+ 240 760 p
+ 283 760 p
+ 314 760 p
+ 129 759 p
+ 174 759 p
+ 224 759 p
+ 231 759 p
+ 276 759 p
+ 318 759 p
+ 130 758 p
+ 131 758 p
+ 221 758 p
+ 232 758 p
+ 281 758 p
+ 286 758 p
+ 291 758 p
+ 315 758 p
+ 319 758 p
+ 131 757 p
+ 182 757 p
+ 198 757 p
+ 233 757 p
+ 286 757 p
+ 292 757 p
+ 302 757 p
+ 133 756 p
+ 199 756 p
+ 200 756 p
+ 234 756 p
+ 250 756 p
+ 315 756 p
+ 320 756 p
+ 336 756 p
+ 134 755 p
+ 135 755 p
+ 225 755 p
+ 235 755 p
+ 253 755 p
+ 260 755 p
+ 272 755 p
+ 293 755 p
+ 321 755 p
+ 144 754 p
+ 147 754 p
+ 175 754 p
+ 236 754 p
+ 282 754 p
+ 312 754 p
+ 147 753 p
+ 166 753 p
+ 224 753 p
+ 237 753 p
+ 244 753 p
+ 265 753 p
+ 288 753 p
+ 148 752 p
+ 205 752 p
+ 214 752 p
+ 238 752 p
+ 245 752 p
+ 281 752 p
+ 294 752 p
+ 307 752 p
+ 155 751 p
+ 165 751 p
+ 204 751 p
+ 239 751 p
+ 263 751 p
+ 303 751 p
+ 165 750 p
+ 218 750 p
+ 230 750 p
+ 240 750 p
+ 251 750 p
+ 300 750 p
+ 314 750 p
+ 358 750 p
+ 161 749 p
+ 173 749 p
+ 180 749 p
+ 241 749 p
+ 246 749 p
+ 299 749 p
+ 311 749 p
+ 316 749 p
+ 160 748 p
+ 193 748 p
+ 226 748 p
+ 242 748 p
+ 322 748 p
+ 192 747 p
+ 219 747 p
+ 228 747 p
+ 243 747 p
+ 284 747 p
+ 290 747 p
+ 309 747 p
+ 317 747 p
+ 359 747 p
+ 147 746 p
+ 212 746 p
+ 237 746 p
+ 244 746 p
+ 253 746 p
+ 265 746 p
+ 312 746 p
+ 323 746 p
+ 161 745 p
+ 222 745 p
+ 238 745 p
+ 245 745 p
+ 269 745 p
+ 316 745 p
+ 324 745 p
+ 217 744 p
+ 229 744 p
+ 241 744 p
+ 246 744 p
+ 255 744 p
+ 299 744 p
+ 311 744 p
+ 313 744 p
+ 325 744 p
+ 342 744 p
+ 354 744 p
+ 360 744 p
+ 388 744 p
+ 403 744 p
+ 111 743 p
+ 168 743 p
+ 202 743 p
+ 247 743 p
+ 299 743 p
+ 197 742 p
+ 199 742 p
+ 222 742 p
+ 248 742 p
+ 291 742 p
+ 326 742 p
+ 357 742 p
+ 182 741 p
+ 189 741 p
+ 201 741 p
+ 249 741 p
+ 258 741 p
+ 156 740 p
+ 159 740 p
+ 234 740 p
+ 250 740 p
+ 310 740 p
+ 327 740 p
+ 347 740 p
+ 153 739 p
+ 163 739 p
+ 240 739 p
+ 251 739 p
+ 300 739 p
+ 158 738 p
+ 175 738 p
+ 196 738 p
+ 252 738 p
+ 279 738 p
+ 328 738 p
+ 335 738 p
+ 345 738 p
+ 356 738 p
+ 224 737 p
+ 235 737 p
+ 244 737 p
+ 253 737 p
+ 272 737 p
+ 323 737 p
+ 329 737 p
+ 338 737 p
+ 190 736 p
+ 213 736 p
+ 227 736 p
+ 254 736 p
+ 277 736 p
+ 289 736 p
+ 301 736 p
+ 318 736 p
+ 330 736 p
+ 196 735 p
+ 226 735 p
+ 246 735 p
+ 255 735 p
+ 296 735 p
+ 328 735 p
+ 354 735 p
+ 422 735 p
+ 155 734 p
+ 156 734 p
+ 211 734 p
+ 256 734 p
+ 327 734 p
+ 348 734 p
+ 350 734 p
+ 156 733 p
+ 207 733 p
+ 216 733 p
+ 257 733 p
+ 295 733 p
+ 332 733 p
+ 347 733 p
+ 361 733 p
+ 166 732 p
+ 201 732 p
+ 249 732 p
+ 258 732 p
+ 276 732 p
+ 306 732 p
+ 331 732 p
+ 362 732 p
+ 170 731 p
+ 203 731 p
+ 219 731 p
+ 259 731 p
+ 262 731 p
+ 295 731 p
+ 317 731 p
+ 353 731 p
+ 363 731 p
+ 188 730 p
+ 225 730 p
+ 235 730 p
+ 260 730 p
+ 274 730 p
+ 285 730 p
+ 293 730 p
+ 321 730 p
+ 181 729 p
+ 202 729 p
+ 225 729 p
+ 261 729 p
+ 266 729 p
+ 275 729 p
+ 333 729 p
+ 341 729 p
+ 364 729 p
+ 170 728 p
+ 221 728 p
+ 259 728 p
+ 262 728 p
+ 278 728 p
+ 287 728 p
+ 320 728 p
+ 361 728 p
+ 363 728 p
+ 365 728 p
+ 375 728 p
+ 155 727 p
+ 176 727 p
+ 239 727 p
+ 263 727 p
+ 273 727 p
+ 327 727 p
+ 344 727 p
+ 350 727 p
+ 366 727 p
+ 101 726 p
+ 178 726 p
+ 181 726 p
+ 264 726 p
+ 274 726 p
+ 305 726 p
+ 334 726 p
+ 147 725 p
+ 237 725 p
+ 244 725 p
+ 265 725 p
+ 323 725 p
+ 332 725 p
+ 348 725 p
+ 367 725 p
+ 151 724 p
+ 213 724 p
+ 261 724 p
+ 266 724 p
+ 301 724 p
+ 321 724 p
+ 333 724 p
+ 153 723 p
+ 205 723 p
+ 209 723 p
+ 267 723 p
+ 305 723 p
+ 358 723 p
+ 368 723 p
+ 370 723 p
+ 158 722 p
+ 178 722 p
+ 220 722 p
+ 268 722 p
+ 298 722 p
+ 328 722 p
+ 369 722 p
+ 374 722 p
+ 387 722 p
+ 405 722 p
+ 161 721 p
+ 168 721 p
+ 245 721 p
+ 269 721 p
+ 271 721 p
+ 307 721 p
+ 349 721 p
+ 166 720 p
+ 201 720 p
+ 211 720 p
+ 270 720 p
+ 303 720 p
+ 331 720 p
+ 348 720 p
+ 355 720 p
+ 168 719 p
+ 205 719 p
+ 269 719 p
+ 271 719 p
+ 304 719 p
+ 370 719 p
+ 174 718 p
+ 235 718 p
+ 253 718 p
+ 272 718 p
+ 318 718 p
+ 338 718 p
+ 155 717 p
+ 176 717 p
+ 263 717 p
+ 273 717 p
+ 178 716 p
+ 260 716 p
+ 264 716 p
+ 274 716 p
+ 334 716 p
+ 341 716 p
+ 369 716 p
+ 371 716 p
+ 181 715 p
+ 195 715 p
+ 261 715 p
+ 275 715 p
+ 305 715 p
+ 182 714 p
+ 231 714 p
+ 258 714 p
+ 276 714 p
+ 306 714 p
+ 362 714 p
+ 372 714 p
+ 190 713 p
+ 227 713 p
+ 254 713 p
+ 277 713 p
+ 278 713 p
+ 292 713 p
+ 330 713 p
+ 191 712 p
+ 262 712 p
+ 277 712 p
+ 278 712 p
+ 287 712 p
+ 337 712 p
+ 343 712 p
+ 352 712 p
+ 196 711 p
+ 203 711 p
+ 252 711 p
+ 279 711 p
+ 296 711 p
+ 335 711 p
+ 353 711 p
+ 197 710 p
+ 206 710 p
+ 217 710 p
+ 280 710 p
+ 313 710 p
+ 198 709 p
+ 232 709 p
+ 238 709 p
+ 281 709 p
+ 319 709 p
+ 324 709 p
+ 339 709 p
+ 203 708 p
+ 207 708 p
+ 236 708 p
+ 282 708 p
+ 295 708 p
+ 335 708 p
+ 353 708 p
+ 142 707 p
+ 204 707 p
+ 230 707 p
+ 283 707 p
+ 297 707 p
+ 210 706 p
+ 227 706 p
+ 243 706 p
+ 284 706 p
+ 308 706 p
+ 343 706 p
+ 359 706 p
+ 377 706 p
+ 178 705 p
+ 212 705 p
+ 260 705 p
+ 285 705 p
+ 298 705 p
+ 215 704 p
+ 232 704 p
+ 233 704 p
+ 286 704 p
+ 292 704 p
+ 302 704 p
+ 337 704 p
+ 346 704 p
+ 351 704 p
+ 219 703 p
+ 262 703 p
+ 278 703 p
+ 287 703 p
+ 343 703 p
+ 166 702 p
+ 224 702 p
+ 237 702 p
+ 288 702 p
+ 338 702 p
+ 355 702 p
+ 210 701 p
+ 227 701 p
+ 254 701 p
+ 289 701 p
+ 301 701 p
+ 308 701 p
+ 330 701 p
+ 228 700 p
+ 229 700 p
+ 243 700 p
+ 290 700 p
+ 309 700 p
+ 222 699 p
+ 232 699 p
+ 248 699 p
+ 291 699 p
+ 319 699 p
+ 336 699 p
+ 233 698 p
+ 277 698 p
+ 286 698 p
+ 292 698 p
+ 337 698 p
+ 346 698 p
+ 212 697 p
+ 235 697 p
+ 260 697 p
+ 293 697 p
+ 329 697 p
+ 198 696 p
+ 205 696 p
+ 238 696 p
+ 294 696 p
+ 370 696 p
+ 373 696 p
+ 376 696 p
+ 390 696 p
+ 257 695 p
+ 259 695 p
+ 282 695 p
+ 295 695 p
+ 228 694 p
+ 255 694 p
+ 279 694 p
+ 296 694 p
+ 325 694 p
+ 345 694 p
+ 354 694 p
+ 406 694 p
+ 427 694 p
+ 428 694 p
+ 176 693 p
+ 206 693 p
+ 283 693 p
+ 297 693 p
+ 322 693 p
+ 344 693 p
+ 407 693 p
+ 212 692 p
+ 268 692 p
+ 285 692 p
+ 298 692 p
+ 369 692 p
+ 374 692 p
+ 395 692 p
+ 241 691 p
+ 246 691 p
+ 247 691 p
+ 299 691 p
+ 304 691 p
+ 309 691 p
+ 388 691 p
+ 408 691 p
+ 201 690 p
+ 240 690 p
+ 251 690 p
+ 300 690 p
+ 306 690 p
+ 358 690 p
+ 384 690 p
+ 386 690 p
+ 393 690 p
+ 400 690 p
+ 254 689 p
+ 266 689 p
+ 289 689 p
+ 301 689 p
+ 409 689 p
+ 430 689 p
+ 198 688 p
+ 233 688 p
+ 286 688 p
+ 302 688 p
+ 373 688 p
+ 201 687 p
+ 239 687 p
+ 270 687 p
+ 303 687 p
+ 350 687 p
+ 202 686 p
+ 271 686 p
+ 299 686 p
+ 304 686 p
+ 340 686 p
+ 264 685 p
+ 267 685 p
+ 275 685 p
+ 305 685 p
+ 341 685 p
+ 368 685 p
+ 258 684 p
+ 276 684 p
+ 300 684 p
+ 306 684 p
+ 362 684 p
+ 384 684 p
+ 401 684 p
+ 205 683 p
+ 238 683 p
+ 269 683 p
+ 307 683 p
+ 349 683 p
+ 210 682 p
+ 284 682 p
+ 289 682 p
+ 308 682 p
+ 340 682 p
+ 410 682 p
+ 447 682 p
+ 243 681 p
+ 290 681 p
+ 299 681 p
+ 309 681 p
+ 388 681 p
+ 402 681 p
+ 176 680 p
+ 199 680 p
+ 250 680 p
+ 310 680 p
+ 326 680 p
+ 336 680 p
+ 344 680 p
+ 404 680 p
+ 411 680 p
+ 197 679 p
+ 241 679 p
+ 246 679 p
+ 311 679 p
+ 342 679 p
+ 212 678 p
+ 236 678 p
+ 244 678 p
+ 312 678 p
+ 329 678 p
+ 332 678 p
+ 356 678 p
+ 367 678 p
+ 394 678 p
+ 217 677 p
+ 246 677 p
+ 280 677 p
+ 313 677 p
+ 360 677 p
+ 220 676 p
+ 230 676 p
+ 240 676 p
+ 314 676 p
+ 382 676 p
+ 391 676 p
+ 412 676 p
+ 413 676 p
+ 457 676 p
+ 221 675 p
+ 232 675 p
+ 234 675 p
+ 315 675 p
+ 320 675 p
+ 351 675 p
+ 222 674 p
+ 241 674 p
+ 245 674 p
+ 316 674 p
+ 324 674 p
+ 342 674 p
+ 349 674 p
+ 228 673 p
+ 243 673 p
+ 259 673 p
+ 317 673 p
+ 359 673 p
+ 398 673 p
+ 406 673 p
+ 231 672 p
+ 254 672 p
+ 272 672 p
+ 318 672 p
+ 372 672 p
+ 232 671 p
+ 281 671 p
+ 291 671 p
+ 319 671 p
+ 339 671 p
+ 351 671 p
+ 383 671 p
+ 392 671 p
+ 399 671 p
+ 234 670 p
+ 262 670 p
+ 315 670 p
+ 320 670 p
+ 365 670 p
+ 235 669 p
+ 260 669 p
+ 266 669 p
+ 321 669 p
+ 364 669 p
+ 371 669 p
+ 378 669 p
+ 220 668 p
+ 242 668 p
+ 297 668 p
+ 322 668 p
+ 387 668 p
+ 413 668 p
+ 458 668 p
+ 244 667 p
+ 253 667 p
+ 265 667 p
+ 323 667 p
+ 367 667 p
+ 379 667 p
+ 245 666 p
+ 281 666 p
+ 316 666 p
+ 324 666 p
+ 339 666 p
+ 229 665 p
+ 246 665 p
+ 296 665 p
+ 325 665 p
+ 197 664 p
+ 248 664 p
+ 310 664 p
+ 326 664 p
+ 357 664 p
+ 407 664 p
+ 411 664 p
+ 414 664 p
+ 250 663 p
+ 256 663 p
+ 263 663 p
+ 327 663 p
+ 347 663 p
+ 366 663 p
+ 252 662 p
+ 255 662 p
+ 268 662 p
+ 328 662 p
+ 345 662 p
+ 387 662 p
+ 253 661 p
+ 293 661 p
+ 312 661 p
+ 329 661 p
+ 378 661 p
+ 379 661 p
+ 395 661 p
+ 415 661 p
+ 451 661 p
+ 254 660 p
+ 277 660 p
+ 289 660 p
+ 330 660 p
+ 352 660 p
+ 409 660 p
+ 426 660 p
+ 201 659 p
+ 258 659 p
+ 270 659 p
+ 331 659 p
+ 384 659 p
+ 386 659 p
+ 389 659 p
+ 257 658 p
+ 265 658 p
+ 312 658 p
+ 332 658 p
+ 380 658 p
+ 396 658 p
+ 416 658 p
+ 439 658 p
+ 202 657 p
+ 261 657 p
+ 266 657 p
+ 333 657 p
+ 340 657 p
+ 220 656 p
+ 264 656 p
+ 274 656 p
+ 334 656 p
+ 368 656 p
+ 405 656 p
+ 417 656 p
+ 459 656 p
+ 252 655 p
+ 279 655 p
+ 282 655 p
+ 335 655 p
+ 356 655 p
+ 380 655 p
+ 234 654 p
+ 291 654 p
+ 310 654 p
+ 336 654 p
+ 383 654 p
+ 418 654 p
+ 463 654 p
+ 278 653 p
+ 286 653 p
+ 292 653 p
+ 337 653 p
+ 346 653 p
+ 375 653 p
+ 385 653 p
+ 253 652 p
+ 272 652 p
+ 288 652 p
+ 338 652 p
+ 379 652 p
+ 381 652 p
+ 397 652 p
+ 281 651 p
+ 319 651 p
+ 324 651 p
+ 339 651 p
+ 373 651 p
+ 376 651 p
+ 392 651 p
+ 304 650 p
+ 308 650 p
+ 333 650 p
+ 340 650 p
+ 402 650 p
+ 419 650 p
+ 261 649 p
+ 274 649 p
+ 305 649 p
+ 341 649 p
+ 364 649 p
+ 417 649 p
+ 419 649 p
+ 420 649 p
+ 438 649 p
+ 246 648 p
+ 311 648 p
+ 316 648 p
+ 342 648 p
+ 357 648 p
+ 360 648 p
+ 421 648 p
+ 456 648 p
+ 278 647 p
+ 284 647 p
+ 287 647 p
+ 343 647 p
+ 352 647 p
+ 363 647 p
+ 377 647 p
+ 263 646 p
+ 297 646 p
+ 310 646 p
+ 344 646 p
+ 412 646 p
+ 443 646 p
+ 252 645 p
+ 296 645 p
+ 328 645 p
+ 345 645 p
+ 422 645 p
+ 427 645 p
+ 431 645 p
+ 435 645 p
+ 286 644 p
+ 292 644 p
+ 337 644 p
+ 346 644 p
+ 401 644 p
+ 423 644 p
+ 454 644 p
+ 250 643 p
+ 257 643 p
+ 327 643 p
+ 347 643 p
+ 361 643 p
+ 396 643 p
+ 404 643 p
+ 460 643 p
+ 256 642 p
+ 265 642 p
+ 270 642 p
+ 348 642 p
+ 355 642 p
+ 396 642 p
+ 425 642 p
+ 269 641 p
+ 307 641 p
+ 316 641 p
+ 349 641 p
+ 421 641 p
+ 424 641 p
+ 256 640 p
+ 263 640 p
+ 303 640 p
+ 350 640 p
+ 366 640 p
+ 391 640 p
+ 425 640 p
+ 461 640 p
+ 286 639 p
+ 315 639 p
+ 319 639 p
+ 351 639 p
+ 383 639 p
+ 278 638 p
+ 330 638 p
+ 343 638 p
+ 352 638 p
+ 375 638 p
+ 385 638 p
+ 426 638 p
+ 259 637 p
+ 279 637 p
+ 282 637 p
+ 353 637 p
+ 398 637 p
+ 416 637 p
+ 427 637 p
+ 246 636 p
+ 255 636 p
+ 296 636 p
+ 354 636 p
+ 403 636 p
+ 428 636 p
+ 442 636 p
+ 270 635 p
+ 288 635 p
+ 348 635 p
+ 355 635 p
+ 381 635 p
+ 389 635 p
+ 429 635 p
+ 441 635 p
+ 452 635 p
+ 462 635 p
+ 252 634 p
+ 312 634 p
+ 335 634 p
+ 356 634 p
+ 374 634 p
+ 380 634 p
+ 248 633 p
+ 326 633 p
+ 342 633 p
+ 357 633 p
+ 392 633 p
+ 411 633 p
+ 414 633 p
+ 421 633 p
+ 463 633 p
+ 478 633 p
+ 240 632 p
+ 267 632 p
+ 300 632 p
+ 358 632 p
+ 382 632 p
+ 400 632 p
+ 434 632 p
+ 464 632 p
+ 243 631 p
+ 284 631 p
+ 317 631 p
+ 359 631 p
+ 377 631 p
+ 410 631 p
+ 246 630 p
+ 313 630 p
+ 342 630 p
+ 360 630 p
+ 403 630 p
+ 414 630 p
+ 456 630 p
+ 257 629 p
+ 262 629 p
+ 347 629 p
+ 361 629 p
+ 365 629 p
+ 416 629 p
+ 446 629 p
+ 465 629 p
+ 258 628 p
+ 276 628 p
+ 306 628 p
+ 362 628 p
+ 372 628 p
+ 397 628 p
+ 437 628 p
+ 259 627 p
+ 262 627 p
+ 343 627 p
+ 363 627 p
+ 398 627 p
+ 261 626 p
+ 321 626 p
+ 341 626 p
+ 364 626 p
+ 430 626 p
+ 438 626 p
+ 262 625 p
+ 320 625 p
+ 361 625 p
+ 365 625 p
+ 418 625 p
+ 263 624 p
+ 327 624 p
+ 350 624 p
+ 366 624 p
+ 391 624 p
+ 404 624 p
+ 461 624 p
+ 474 624 p
+ 265 623 p
+ 312 623 p
+ 323 623 p
+ 367 623 p
+ 394 623 p
+ 429 623 p
+ 267 622 p
+ 305 622 p
+ 334 622 p
+ 368 622 p
+ 382 622 p
+ 420 622 p
+ 268 621 p
+ 274 621 p
+ 298 621 p
+ 369 621 p
+ 371 621 p
+ 415 621 p
+ 445 621 p
+ 267 620 p
+ 271 620 p
+ 294 620 p
+ 370 620 p
+ 420 620 p
+ 424 620 p
+ 434 620 p
+ 436 620 p
+ 274 619 p
+ 321 619 p
+ 369 619 p
+ 371 619 p
+ 378 619 p
+ 415 619 p
+ 417 619 p
+ 438 619 p
+ 445 619 p
+ 276 618 p
+ 318 618 p
+ 362 618 p
+ 372 618 p
+ 423 618 p
+ 294 617 p
+ 302 617 p
+ 339 617 p
+ 373 617 p
+ 376 617 p
+ 390 617 p
+ 399 617 p
+ 268 616 p
+ 298 616 p
+ 356 616 p
+ 374 616 p
+ 395 616 p
+ 431 616 p
+ 444 616 p
+ 488 616 p
+ 262 615 p
+ 337 615 p
+ 352 615 p
+ 375 615 p
+ 385 615 p
+ 446 615 p
+ 467 615 p
+ 487 615 p
+ 294 614 p
+ 339 614 p
+ 373 614 p
+ 376 614 p
+ 390 614 p
+ 436 614 p
+ 466 614 p
+ 471 614 p
+ 284 613 p
+ 343 613 p
+ 359 613 p
+ 377 613 p
+ 426 613 p
+ 467 613 p
+ 321 612 p
+ 329 612 p
+ 371 612 p
+ 378 612 p
+ 451 612 p
+ 455 612 p
+ 485 612 p
+ 323 611 p
+ 329 611 p
+ 338 611 p
+ 379 611 p
+ 381 611 p
+ 394 611 p
+ 449 611 p
+ 452 611 p
+ 332 610 p
+ 335 610 p
+ 356 610 p
+ 380 610 p
+ 431 610 p
+ 439 610 p
+ 338 609 p
+ 355 609 p
+ 379 609 p
+ 381 609 p
+ 397 609 p
+ 449 609 p
+ 452 609 p
+ 314 608 p
+ 358 608 p
+ 368 608 p
+ 382 608 p
+ 434 608 p
+ 457 608 p
+ 503 608 p
+ 517 608 p
+ 319 607 p
+ 336 607 p
+ 351 607 p
+ 383 607 p
+ 418 607 p
+ 468 607 p
+ 300 606 p
+ 306 606 p
+ 331 606 p
+ 384 606 p
+ 386 606 p
+ 393 606 p
+ 433 606 p
+ 437 606 p
+ 441 606 p
+ 337 605 p
+ 352 605 p
+ 375 605 p
+ 385 605 p
+ 432 605 p
+ 468 605 p
+ 487 605 p
+ 498 605 p
+ 300 604 p
+ 331 604 p
+ 384 604 p
+ 386 604 p
+ 389 604 p
+ 400 604 p
+ 268 603 p
+ 322 603 p
+ 328 603 p
+ 387 603 p
+ 405 603 p
+ 435 603 p
+ 246 602 p
+ 299 602 p
+ 309 602 p
+ 388 602 p
+ 402 602 p
+ 408 602 p
+ 442 602 p
+ 469 602 p
+ 331 601 p
+ 355 601 p
+ 386 601 p
+ 389 601 p
+ 425 601 p
+ 433 601 p
+ 462 601 p
+ 470 601 p
+ 294 600 p
+ 373 600 p
+ 376 600 p
+ 390 600 p
+ 393 600 p
+ 314 599 p
+ 350 599 p
+ 366 599 p
+ 391 599 p
+ 470 599 p
+ 496 599 p
+ 497 599 p
+ 526 599 p
+ 319 598 p
+ 339 598 p
+ 357 598 p
+ 392 598 p
+ 399 598 p
+ 466 598 p
+ 300 597 p
+ 384 597 p
+ 390 597 p
+ 393 597 p
+ 401 597 p
+ 437 597 p
+ 454 597 p
+ 464 597 p
+ 471 597 p
+ 484 597 p
+ 486 597 p
+ 312 596 p
+ 367 596 p
+ 379 596 p
+ 394 596 p
+ 444 596 p
+ 481 596 p
+ 298 595 p
+ 329 595 p
+ 374 595 p
+ 395 595 p
+ 332 594 p
+ 347 594 p
+ 348 594 p
+ 396 594 p
+ 429 594 p
+ 461 594 p
+ 465 594 p
+ 482 594 p
+ 489 594 p
+ 545 594 p
+ 338 593 p
+ 362 593 p
+ 381 593 p
+ 397 593 p
+ 409 593 p
+ 317 592 p
+ 353 592 p
+ 363 592 p
+ 398 592 p
+ 406 592 p
+ 440 592 p
+ 450 592 p
+ 494 592 p
+ 319 591 p
+ 373 591 p
+ 392 591 p
+ 399 591 p
+ 468 591 p
+ 300 590 p
+ 358 590 p
+ 386 590 p
+ 400 590 p
+ 433 590 p
+ 457 590 p
+ 493 590 p
+ 306 589 p
+ 346 589 p
+ 393 589 p
+ 401 589 p
+ 423 589 p
+ 454 589 p
+ 309 588 p
+ 340 588 p
+ 388 588 p
+ 402 588 p
+ 408 588 p
+ 410 588 p
+ 419 588 p
+ 447 588 p
+ 448 588 p
+ 469 588 p
+ 472 588 p
+ 492 588 p
+ 504 588 p
+ 546 588 p
+ 568 588 p
+ 570 588 p
+ 246 587 p
+ 354 587 p
+ 360 587 p
+ 403 587 p
+ 407 587 p
+ 422 587 p
+ 453 587 p
+ 458 587 p
+ 473 587 p
+ 505 587 p
+ 310 586 p
+ 347 586 p
+ 366 586 p
+ 404 586 p
+ 460 586 p
+ 474 586 p
+ 268 585 p
+ 334 585 p
+ 387 585 p
+ 405 585 p
+ 413 585 p
+ 458 585 p
+ 488 585 p
+ 506 585 p
+ 296 584 p
+ 317 584 p
+ 398 584 p
+ 406 584 p
+ 440 584 p
+ 442 584 p
+ 448 584 p
+ 450 584 p
+ 507 584 p
+ 297 583 p
+ 326 583 p
+ 403 583 p
+ 407 583 p
+ 412 583 p
+ 443 583 p
+ 473 583 p
+ 475 583 p
+ 299 582 p
+ 388 582 p
+ 402 582 p
+ 408 582 p
+ 301 581 p
+ 330 581 p
+ 397 581 p
+ 409 581 p
+ 430 581 p
+ 432 581 p
+ 449 581 p
+ 479 581 p
+ 508 581 p
+ 308 580 p
+ 359 580 p
+ 402 580 p
+ 410 580 p
+ 440 580 p
+ 447 580 p
+ 448 580 p
+ 500 580 p
+ 310 579 p
+ 326 579 p
+ 357 579 p
+ 411 579 p
+ 443 579 p
+ 463 579 p
+ 491 579 p
+ 314 578 p
+ 344 578 p
+ 407 578 p
+ 412 578 p
+ 475 578 p
+ 314 577 p
+ 322 577 p
+ 405 577 p
+ 413 577 p
+ 509 577 p
+ 516 577 p
+ 326 576 p
+ 357 576 p
+ 360 576 p
+ 414 576 p
+ 456 576 p
+ 473 576 p
+ 329 575 p
+ 369 575 p
+ 371 575 p
+ 415 575 p
+ 451 575 p
+ 476 575 p
+ 332 574 p
+ 353 574 p
+ 361 574 p
+ 416 574 p
+ 439 574 p
+ 465 574 p
+ 520 574 p
+ 547 574 p
+ 334 573 p
+ 341 573 p
+ 371 573 p
+ 417 573 p
+ 445 573 p
+ 459 573 p
+ 336 572 p
+ 365 572 p
+ 383 572 p
+ 418 572 p
+ 446 572 p
+ 460 572 p
+ 477 572 p
+ 499 572 p
+ 340 571 p
+ 341 571 p
+ 402 571 p
+ 419 571 p
+ 424 571 p
+ 483 571 p
+ 492 571 p
+ 510 571 p
+ 531 571 p
+ 341 570 p
+ 368 570 p
+ 370 570 p
+ 420 570 p
+ 459 570 p
+ 483 570 p
+ 511 570 p
+ 517 570 p
+ 342 569 p
+ 349 569 p
+ 357 569 p
+ 421 569 p
+ 466 569 p
+ 469 569 p
+ 478 569 p
+ 255 568 p
+ 345 568 p
+ 403 568 p
+ 422 568 p
+ 428 568 p
+ 435 568 p
+ 346 567 p
+ 372 567 p
+ 401 567 p
+ 423 567 p
+ 432 567 p
+ 349 566 p
+ 370 566 p
+ 419 566 p
+ 424 566 p
+ 483 566 p
+ 492 566 p
+ 534 566 p
+ 348 565 p
+ 350 565 p
+ 389 565 p
+ 425 565 p
+ 462 565 p
+ 470 565 p
+ 330 564 p
+ 352 564 p
+ 377 564 p
+ 426 564 p
+ 479 564 p
+ 296 563 p
+ 345 563 p
+ 353 563 p
+ 427 563 p
+ 450 563 p
+ 480 563 p
+ 296 562 p
+ 354 562 p
+ 422 562 p
+ 428 562 p
+ 453 562 p
+ 355 561 p
+ 367 561 p
+ 396 561 p
+ 429 561 p
+ 482 561 p
+ 548 561 p
+ 562 561 p
+ 301 560 p
+ 364 560 p
+ 409 560 p
+ 430 560 p
+ 472 560 p
+ 485 560 p
+ 345 559 p
+ 374 559 p
+ 380 559 p
+ 431 559 p
+ 444 559 p
+ 480 559 p
+ 490 559 p
+ 501 559 p
+ 385 558 p
+ 409 558 p
+ 423 558 p
+ 432 558 p
+ 384 557 p
+ 389 557 p
+ 400 557 p
+ 433 557 p
+ 464 557 p
+ 484 557 p
+ 493 557 p
+ 358 556 p
+ 370 556 p
+ 382 556 p
+ 434 556 p
+ 436 556 p
+ 503 556 p
+ 345 555 p
+ 387 555 p
+ 422 555 p
+ 435 555 p
+ 480 555 p
+ 490 555 p
+ 370 554 p
+ 376 554 p
+ 434 554 p
+ 436 554 p
+ 471 554 p
+ 519 554 p
+ 530 554 p
+ 362 553 p
+ 384 553 p
+ 393 553 p
+ 437 553 p
+ 441 553 p
+ 484 553 p
+ 486 553 p
+ 508 553 p
+ 341 552 p
+ 364 552 p
+ 371 552 p
+ 438 552 p
+ 455 552 p
+ 510 552 p
+ 511 552 p
+ 332 551 p
+ 380 551 p
+ 416 551 p
+ 439 551 p
+ 482 551 p
+ 398 550 p
+ 406 550 p
+ 410 550 p
+ 440 550 p
+ 512 550 p
+ 535 550 p
+ 355 549 p
+ 384 549 p
+ 437 549 p
+ 441 549 p
+ 513 549 p
+ 354 548 p
+ 388 548 p
+ 406 548 p
+ 442 548 p
+ 453 548 p
+ 502 548 p
+ 504 548 p
+ 344 547 p
+ 407 547 p
+ 411 547 p
+ 443 547 p
+ 496 547 p
+ 518 547 p
+ 374 546 p
+ 394 546 p
+ 431 546 p
+ 444 546 p
+ 476 546 p
+ 481 546 p
+ 549 546 p
+ 558 546 p
+ 369 545 p
+ 371 545 p
+ 417 545 p
+ 445 545 p
+ 455 545 p
+ 476 545 p
+ 495 545 p
+ 361 544 p
+ 375 544 p
+ 418 544 p
+ 446 544 p
+ 467 544 p
+ 494 544 p
+ 540 544 p
+ 543 544 p
+ 550 544 p
+ 308 543 p
+ 402 543 p
+ 410 543 p
+ 447 543 p
+ 472 543 p
+ 479 543 p
+ 500 543 p
+ 402 542 p
+ 406 542 p
+ 410 542 p
+ 448 542 p
+ 500 542 p
+ 514 542 p
+ 379 541 p
+ 381 541 p
+ 409 541 p
+ 449 541 p
+ 485 541 p
+ 508 541 p
+ 537 541 p
+ 398 540 p
+ 406 540 p
+ 427 540 p
+ 450 540 p
+ 501 540 p
+ 514 540 p
+ 329 539 p
+ 378 539 p
+ 415 539 p
+ 451 539 p
+ 481 539 p
+ 355 538 p
+ 379 538 p
+ 381 538 p
+ 452 538 p
+ 513 538 p
+ 548 538 p
+ 403 537 p
+ 428 537 p
+ 442 537 p
+ 453 537 p
+ 507 537 p
+ 539 537 p
+ 565 537 p
+ 346 536 p
+ 393 536 p
+ 401 536 p
+ 454 536 p
+ 378 535 p
+ 438 535 p
+ 445 535 p
+ 455 535 p
+ 515 535 p
+ 524 535 p
+ 529 535 p
+ 342 534 p
+ 360 534 p
+ 414 534 p
+ 456 534 p
+ 478 534 p
+ 502 534 p
+ 314 533 p
+ 382 533 p
+ 400 533 p
+ 457 533 p
+ 509 533 p
+ 516 533 p
+ 525 533 p
+ 541 533 p
+ 575 533 p
+ 579 533 p
+ 587 533 p
+ 322 532 p
+ 403 532 p
+ 405 532 p
+ 458 532 p
+ 475 532 p
+ 505 532 p
+ 506 532 p
+ 536 532 p
+ 557 532 p
+ 597 532 p
+ 334 531 p
+ 417 531 p
+ 420 531 p
+ 459 531 p
+ 506 531 p
+ 509 531 p
+ 511 531 p
+ 517 531 p
+ 551 531 p
+ 347 530 p
+ 404 530 p
+ 418 530 p
+ 460 530 p
+ 474 530 p
+ 518 530 p
+ 533 530 p
+ 543 530 p
+ 545 530 p
+ 350 529 p
+ 366 529 p
+ 396 529 p
+ 461 529 p
+ 489 529 p
+ 355 528 p
+ 389 528 p
+ 425 528 p
+ 462 528 p
+ 489 528 p
+ 513 528 p
+ 336 527 p
+ 357 527 p
+ 411 527 p
+ 463 527 p
+ 477 527 p
+ 491 527 p
+ 533 527 p
+ 358 526 p
+ 393 526 p
+ 433 526 p
+ 464 526 p
+ 503 526 p
+ 519 526 p
+ 532 526 p
+ 361 525 p
+ 396 525 p
+ 416 525 p
+ 465 525 p
+ 520 525 p
+ 543 525 p
+ 552 525 p
+ 376 524 p
+ 392 524 p
+ 421 524 p
+ 466 524 p
+ 530 524 p
+ 534 524 p
+ 542 524 p
+ 553 524 p
+ 559 524 p
+ 591 524 p
+ 375 523 p
+ 377 523 p
+ 446 523 p
+ 467 523 p
+ 494 523 p
+ 498 523 p
+ 512 523 p
+ 528 523 p
+ 550 523 p
+ 383 522 p
+ 385 522 p
+ 399 522 p
+ 468 522 p
+ 477 522 p
+ 487 522 p
+ 554 522 p
+ 388 521 p
+ 402 521 p
+ 421 521 p
+ 469 521 p
+ 502 521 p
+ 538 521 p
+ 568 521 p
+ 389 520 p
+ 391 520 p
+ 425 520 p
+ 470 520 p
+ 493 520 p
+ 376 519 p
+ 393 519 p
+ 436 519 p
+ 471 519 p
+ 553 519 p
+ 555 519 p
+ 582 519 p
+ 402 518 p
+ 430 518 p
+ 447 518 p
+ 472 518 p
+ 510 518 p
+ 522 518 p
+ 523 518 p
+ 546 518 p
+ 403 517 p
+ 407 517 p
+ 414 517 p
+ 473 517 p
+ 505 517 p
+ 527 517 p
+ 556 517 p
+ 602 517 p
+ 366 516 p
+ 404 516 p
+ 460 516 p
+ 474 516 p
+ 496 516 p
+ 497 516 p
+ 544 516 p
+ 407 515 p
+ 412 515 p
+ 458 515 p
+ 475 515 p
+ 516 515 p
+ 526 515 p
+ 556 515 p
+ 557 515 p
+ 592 515 p
+ 617 515 p
+ 415 514 p
+ 444 514 p
+ 445 514 p
+ 476 514 p
+ 488 514 p
+ 495 514 p
+ 558 514 p
+ 418 513 p
+ 463 513 p
+ 468 513 p
+ 477 513 p
+ 499 513 p
+ 533 513 p
+ 553 513 p
+ 559 513 p
+ 357 512 p
+ 421 512 p
+ 456 512 p
+ 478 512 p
+ 491 512 p
+ 527 512 p
+ 560 512 p
+ 409 511 p
+ 426 511 p
+ 447 511 p
+ 479 511 p
+ 521 511 p
+ 427 510 p
+ 431 510 p
+ 435 510 p
+ 480 510 p
+ 501 510 p
+ 507 510 p
+ 394 509 p
+ 444 509 p
+ 451 509 p
+ 481 509 p
+ 515 509 p
+ 537 509 p
+ 548 509 p
+ 561 509 p
+ 396 508 p
+ 429 508 p
+ 439 508 p
+ 482 508 p
+ 547 508 p
+ 549 508 p
+ 552 508 p
+ 562 508 p
+ 419 507 p
+ 420 507 p
+ 424 507 p
+ 483 507 p
+ 530 507 p
+ 531 507 p
+ 566 507 p
+ 593 507 p
+ 595 507 p
+ 604 507 p
+ 393 506 p
+ 433 506 p
+ 437 506 p
+ 484 506 p
+ 486 506 p
+ 532 506 p
+ 583 506 p
+ 378 505 p
+ 430 505 p
+ 449 505 p
+ 485 505 p
+ 515 505 p
+ 563 505 p
+ 393 504 p
+ 437 504 p
+ 484 504 p
+ 486 504 p
+ 554 504 p
+ 555 504 p
+ 594 504 p
+ 616 504 p
+ 375 503 p
+ 385 503 p
+ 468 503 p
+ 487 503 p
+ 498 503 p
+ 499 503 p
+ 540 503 p
+ 374 502 p
+ 405 502 p
+ 476 502 p
+ 488 502 p
+ 490 502 p
+ 495 502 p
+ 536 502 p
+ 558 502 p
+ 396 501 p
+ 461 501 p
+ 462 501 p
+ 489 501 p
+ 497 501 p
+ 584 501 p
+ 586 501 p
+ 431 500 p
+ 435 500 p
+ 488 500 p
+ 490 500 p
+ 539 500 p
+ 569 500 p
+ 411 499 p
+ 463 499 p
+ 478 499 p
+ 491 499 p
+ 518 499 p
+ 560 499 p
+ 402 498 p
+ 419 498 p
+ 424 498 p
+ 492 498 p
+ 546 498 p
+ 568 498 p
+ 595 498 p
+ 400 497 p
+ 433 497 p
+ 470 497 p
+ 493 497 p
+ 532 497 p
+ 575 497 p
+ 584 497 p
+ 605 497 p
+ 398 496 p
+ 446 496 p
+ 467 496 p
+ 494 496 p
+ 520 496 p
+ 535 496 p
+ 550 496 p
+ 445 495 p
+ 476 495 p
+ 488 495 p
+ 495 495 p
+ 524 495 p
+ 574 495 p
+ 391 494 p
+ 443 494 p
+ 474 494 p
+ 496 494 p
+ 526 494 p
+ 544 494 p
+ 391 493 p
+ 474 493 p
+ 489 493 p
+ 497 493 p
+ 385 492 p
+ 467 492 p
+ 487 492 p
+ 498 492 p
+ 528 492 p
+ 576 492 p
+ 620 492 p
+ 418 491 p
+ 477 491 p
+ 487 491 p
+ 499 491 p
+ 540 491 p
+ 589 491 p
+ 410 490 p
+ 447 490 p
+ 448 490 p
+ 500 490 p
+ 512 490 p
+ 431 489 p
+ 450 489 p
+ 480 489 p
+ 501 489 p
+ 547 489 p
+ 564 489 p
+ 569 489 p
+ 572 489 p
+ 442 488 p
+ 456 488 p
+ 469 488 p
+ 502 488 p
+ 504 488 p
+ 527 488 p
+ 538 488 p
+ 565 488 p
+ 382 487 p
+ 434 487 p
+ 464 487 p
+ 503 487 p
+ 519 487 p
+ 541 487 p
+ 566 487 p
+ 571 487 p
+ 402 486 p
+ 442 486 p
+ 502 486 p
+ 504 486 p
+ 596 486 p
+ 606 486 p
+ 618 486 p
+ 643 486 p
+ 403 485 p
+ 458 485 p
+ 473 485 p
+ 505 485 p
+ 597 485 p
+ 405 484 p
+ 458 484 p
+ 459 484 p
+ 506 484 p
+ 536 484 p
+ 551 484 p
+ 581 484 p
+ 598 484 p
+ 406 483 p
+ 453 483 p
+ 480 483 p
+ 507 483 p
+ 514 483 p
+ 409 482 p
+ 437 482 p
+ 449 482 p
+ 508 482 p
+ 521 482 p
+ 563 482 p
+ 594 482 p
+ 413 481 p
+ 457 481 p
+ 459 481 p
+ 509 481 p
+ 525 481 p
+ 419 480 p
+ 438 480 p
+ 472 480 p
+ 510 480 p
+ 529 480 p
+ 531 480 p
+ 593 480 p
+ 420 479 p
+ 438 479 p
+ 459 479 p
+ 511 479 p
+ 524 479 p
+ 593 479 p
+ 440 478 p
+ 467 478 p
+ 500 478 p
+ 512 478 p
+ 521 478 p
+ 522 478 p
+ 528 478 p
+ 596 478 p
+ 603 478 p
+ 441 477 p
+ 452 477 p
+ 462 477 p
+ 513 477 p
+ 583 477 p
+ 584 477 p
+ 599 477 p
+ 619 477 p
+ 633 477 p
+ 448 476 p
+ 450 476 p
+ 507 476 p
+ 514 476 p
+ 535 476 p
+ 564 476 p
+ 596 476 p
+ 455 475 p
+ 481 475 p
+ 485 475 p
+ 515 475 p
+ 537 475 p
+ 561 475 p
+ 563 475 p
+ 590 475 p
+ 600 475 p
+ 413 474 p
+ 457 474 p
+ 475 474 p
+ 516 474 p
+ 557 474 p
+ 581 474 p
+ 587 474 p
+ 382 473 p
+ 420 473 p
+ 459 473 p
+ 517 473 p
+ 525 473 p
+ 551 473 p
+ 443 472 p
+ 460 472 p
+ 491 472 p
+ 518 472 p
+ 544 472 p
+ 556 472 p
+ 588 472 p
+ 436 471 p
+ 464 471 p
+ 503 471 p
+ 519 471 p
+ 580 471 p
+ 416 470 p
+ 465 470 p
+ 494 470 p
+ 520 470 p
+ 567 470 p
+ 578 470 p
+ 479 469 p
+ 508 469 p
+ 512 469 p
+ 521 469 p
+ 522 469 p
+ 523 469 p
+ 603 469 p
+ 620 469 p
+ 627 469 p
+ 644 469 p
+ 651 469 p
+ 472 468 p
+ 512 468 p
+ 521 468 p
+ 522 468 p
+ 523 468 p
+ 570 468 p
+ 577 468 p
+ 472 467 p
+ 521 467 p
+ 522 467 p
+ 523 467 p
+ 577 467 p
+ 627 467 p
+ 628 467 p
+ 644 467 p
+ 455 466 p
+ 495 466 p
+ 511 466 p
+ 524 466 p
+ 529 466 p
+ 590 466 p
+ 624 466 p
+ 645 466 p
+ 457 465 p
+ 509 465 p
+ 517 465 p
+ 525 465 p
+ 579 465 p
+ 391 464 p
+ 475 464 p
+ 496 464 p
+ 526 464 p
+ 587 464 p
+ 601 464 p
+ 473 463 p
+ 478 463 p
+ 502 463 p
+ 527 463 p
+ 538 463 p
+ 565 463 p
+ 573 463 p
+ 602 463 p
+ 467 462 p
+ 498 462 p
+ 512 462 p
+ 528 462 p
+ 585 462 p
+ 603 462 p
+ 620 462 p
+ 639 462 p
+ 455 461 p
+ 510 461 p
+ 524 461 p
+ 529 461 p
+ 590 461 p
+ 624 461 p
+ 628 461 p
+ 436 460 p
+ 466 460 p
+ 483 460 p
+ 530 460 p
+ 534 460 p
+ 582 460 p
+ 604 460 p
+ 419 459 p
+ 483 459 p
+ 510 459 p
+ 531 459 p
+ 595 459 p
+ 464 458 p
+ 484 458 p
+ 493 458 p
+ 532 458 p
+ 541 458 p
+ 571 458 p
+ 583 458 p
+ 605 458 p
+ 630 458 p
+ 632 458 p
+ 460 457 p
+ 463 457 p
+ 477 457 p
+ 533 457 p
+ 559 457 p
+ 588 457 p
+ 589 457 p
+ 629 457 p
+ 424 456 p
+ 466 456 p
+ 530 456 p
+ 534 456 p
+ 542 456 p
+ 440 455 p
+ 494 455 p
+ 514 455 p
+ 535 455 p
+ 567 455 p
+ 458 454 p
+ 488 454 p
+ 506 454 p
+ 536 454 p
+ 539 454 p
+ 574 454 p
+ 598 454 p
+ 622 454 p
+ 659 454 p
+ 449 453 p
+ 481 453 p
+ 515 453 p
+ 537 453 p
+ 469 452 p
+ 502 452 p
+ 527 452 p
+ 538 452 p
+ 542 452 p
+ 606 452 p
+ 453 451 p
+ 490 451 p
+ 536 451 p
+ 539 451 p
+ 564 451 p
+ 607 451 p
+ 659 451 p
+ 446 450 p
+ 487 450 p
+ 499 450 p
+ 540 450 p
+ 576 450 p
+ 585 450 p
+ 608 450 p
+ 457 449 p
+ 503 449 p
+ 532 449 p
+ 541 449 p
+ 575 449 p
+ 609 449 p
+ 466 448 p
+ 534 448 p
+ 538 448 p
+ 542 448 p
+ 591 448 p
+ 621 448 p
+ 626 448 p
+ 446 447 p
+ 460 447 p
+ 465 447 p
+ 543 447 p
+ 589 447 p
+ 610 447 p
+ 613 447 p
+ 665 447 p
+ 474 446 p
+ 496 446 p
+ 518 446 p
+ 544 446 p
+ 545 446 p
+ 588 446 p
+ 592 446 p
+ 610 446 p
+ 635 446 p
+ 637 446 p
+ 396 445 p
+ 460 445 p
+ 544 445 p
+ 545 445 p
+ 586 445 p
+ 610 445 p
+ 402 444 p
+ 472 444 p
+ 492 444 p
+ 546 444 p
+ 570 444 p
+ 577 444 p
+ 618 444 p
+ 416 443 p
+ 482 443 p
+ 501 443 p
+ 547 443 p
+ 549 443 p
+ 552 443 p
+ 611 443 p
+ 429 442 p
+ 452 442 p
+ 481 442 p
+ 548 442 p
+ 562 442 p
+ 599 442 p
+ 612 442 p
+ 444 441 p
+ 482 441 p
+ 547 441 p
+ 549 441 p
+ 572 441 p
+ 611 441 p
+ 446 440 p
+ 467 440 p
+ 494 440 p
+ 550 440 p
+ 578 440 p
+ 585 440 p
+ 459 439 p
+ 506 439 p
+ 517 439 p
+ 551 439 p
+ 566 439 p
+ 579 439 p
+ 581 439 p
+ 631 439 p
+ 645 439 p
+ 646 439 p
+ 691 439 p
+ 716 439 p
+ 465 438 p
+ 482 438 p
+ 547 438 p
+ 552 438 p
+ 611 438 p
+ 613 438 p
+ 638 438 p
+ 647 438 p
+ 466 437 p
+ 471 437 p
+ 477 437 p
+ 553 437 p
+ 554 437 p
+ 582 437 p
+ 614 437 p
+ 468 436 p
+ 486 436 p
+ 553 436 p
+ 554 436 p
+ 555 436 p
+ 576 436 p
+ 615 436 p
+ 616 436 p
+ 471 435 p
+ 486 435 p
+ 554 435 p
+ 555 435 p
+ 580 435 p
+ 615 435 p
+ 616 435 p
+ 473 434 p
+ 475 434 p
+ 518 434 p
+ 556 434 p
+ 573 434 p
+ 592 434 p
+ 602 434 p
+ 617 434 p
+ 625 434 p
+ 648 434 p
+ 692 434 p
+ 458 433 p
+ 475 433 p
+ 516 433 p
+ 557 433 p
+ 597 433 p
+ 598 433 p
+ 617 433 p
+ 660 433 p
+ 444 432 p
+ 476 432 p
+ 488 432 p
+ 558 432 p
+ 561 432 p
+ 569 432 p
+ 574 432 p
+ 466 431 p
+ 477 431 p
+ 533 431 p
+ 559 431 p
+ 560 431 p
+ 629 431 p
+ 649 431 p
+ 478 430 p
+ 491 430 p
+ 559 430 p
+ 560 430 p
+ 573 430 p
+ 626 430 p
+ 481 429 p
+ 515 429 p
+ 558 429 p
+ 561 429 p
+ 612 429 p
+ 623 429 p
+ 650 429 p
+ 429 428 p
+ 482 428 p
+ 548 428 p
+ 562 428 p
+ 640 428 p
+ 485 427 p
+ 508 427 p
+ 515 427 p
+ 563 427 p
+ 600 427 p
+ 619 427 p
+ 651 427 p
+ 501 426 p
+ 514 426 p
+ 539 426 p
+ 564 426 p
+ 567 426 p
+ 607 426 p
+ 652 426 p
+ 653 426 p
+ 658 426 p
+ 664 426 p
+ 686 426 p
+ 693 426 p
+ 453 425 p
+ 502 425 p
+ 527 425 p
+ 565 425 p
+ 606 425 p
+ 607 425 p
+ 625 425 p
+ 483 424 p
+ 503 424 p
+ 551 424 p
+ 566 424 p
+ 571 424 p
+ 609 424 p
+ 642 424 p
+ 520 423 p
+ 535 423 p
+ 564 423 p
+ 567 423 p
+ 578 423 p
+ 641 423 p
+ 652 423 p
+ 653 423 p
+ 686 423 p
+ 690 423 p
+ 694 423 p
+ 402 422 p
+ 469 422 p
+ 492 422 p
+ 568 422 p
+ 618 422 p
+ 490 421 p
+ 501 421 p
+ 558 421 p
+ 569 421 p
+ 572 421 p
+ 622 421 p
+ 402 420 p
+ 522 420 p
+ 546 420 p
+ 570 420 p
+ 503 419 p
+ 532 419 p
+ 566 419 p
+ 571 419 p
+ 580 419 p
+ 630 419 p
+ 642 419 p
+ 501 418 p
+ 549 418 p
+ 569 418 p
+ 572 418 p
+ 652 418 p
+ 654 418 p
+ 527 417 p
+ 556 417 p
+ 560 417 p
+ 573 417 p
+ 648 417 p
+ 495 416 p
+ 536 416 p
+ 558 416 p
+ 574 416 p
+ 622 416 p
+ 645 416 p
+ 650 416 p
+ 457 415 p
+ 493 415 p
+ 541 415 p
+ 575 415 p
+ 632 415 p
+ 498 414 p
+ 540 414 p
+ 554 414 p
+ 576 414 p
+ 614 414 p
+ 634 414 p
+ 655 414 p
+ 695 414 p
+ 522 413 p
+ 523 413 p
+ 546 413 p
+ 577 413 p
+ 627 413 p
+ 643 413 p
+ 656 413 p
+ 669 413 p
+ 670 413 p
+ 696 413 p
+ 520 412 p
+ 550 412 p
+ 567 412 p
+ 578 412 p
+ 608 412 p
+ 613 412 p
+ 641 412 p
+ 457 411 p
+ 525 411 p
+ 551 411 p
+ 579 411 p
+ 609 411 p
+ 519 410 p
+ 555 410 p
+ 571 410 p
+ 580 410 p
+ 636 410 p
+ 506 409 p
+ 516 409 p
+ 551 409 p
+ 581 409 p
+ 631 409 p
+ 471 408 p
+ 530 408 p
+ 553 408 p
+ 582 408 p
+ 591 408 p
+ 615 408 p
+ 636 408 p
+ 657 408 p
+ 484 407 p
+ 513 407 p
+ 532 407 p
+ 583 407 p
+ 594 407 p
+ 630 407 p
+ 633 407 p
+ 671 407 p
+ 489 406 p
+ 493 406 p
+ 513 406 p
+ 584 406 p
+ 586 406 p
+ 599 406 p
+ 601 406 p
+ 605 406 p
+ 633 406 p
+ 640 406 p
+ 680 406 p
+ 697 406 p
+ 528 405 p
+ 540 405 p
+ 550 405 p
+ 585 405 p
+ 639 405 p
+ 641 405 p
+ 489 404 p
+ 545 404 p
+ 584 404 p
+ 586 404 p
+ 637 404 p
+ 638 404 p
+ 640 404 p
+ 683 404 p
+ 457 403 p
+ 516 403 p
+ 526 403 p
+ 587 403 p
+ 601 403 p
+ 631 403 p
+ 667 403 p
+ 518 402 p
+ 533 402 p
+ 544 402 p
+ 588 402 p
+ 648 402 p
+ 676 402 p
+ 698 402 p
+ 739 402 p
+ 499 401 p
+ 533 401 p
+ 543 401 p
+ 589 401 p
+ 608 401 p
+ 614 401 p
+ 629 401 p
+ 668 401 p
+ 698 401 p
+ 699 401 p
+ 715 401 p
+ 515 400 p
+ 524 400 p
+ 529 400 p
+ 590 400 p
+ 628 400 p
+ 677 400 p
+ 685 400 p
+ 733 400 p
+ 466 399 p
+ 542 399 p
+ 582 399 p
+ 591 399 p
+ 626 399 p
+ 657 399 p
+ 662 399 p
+ 663 399 p
+ 682 399 p
+ 740 399 p
+ 475 398 p
+ 544 398 p
+ 556 398 p
+ 592 398 p
+ 483 397 p
+ 510 397 p
+ 511 397 p
+ 593 397 p
+ 624 397 p
+ 656 397 p
+ 486 396 p
+ 508 396 p
+ 583 396 p
+ 594 396 p
+ 619 396 p
+ 655 396 p
+ 483 395 p
+ 492 395 p
+ 531 395 p
+ 595 395 p
+ 604 395 p
+ 621 395 p
+ 656 395 p
+ 662 395 p
+ 504 394 p
+ 512 394 p
+ 514 394 p
+ 596 394 p
+ 653 394 p
+ 658 394 p
+ 661 394 p
+ 670 394 p
+ 672 394 p
+ 458 393 p
+ 505 393 p
+ 557 393 p
+ 597 393 p
+ 659 393 p
+ 660 393 p
+ 506 392 p
+ 536 392 p
+ 557 392 p
+ 598 392 p
+ 660 392 p
+ 681 392 p
+ 684 392 p
+ 700 392 p
+ 513 391 p
+ 548 391 p
+ 584 391 p
+ 599 391 p
+ 600 391 p
+ 612 391 p
+ 697 391 p
+ 701 391 p
+ 712 391 p
+ 722 391 p
+ 515 390 p
+ 563 390 p
+ 599 390 p
+ 600 390 p
+ 677 390 p
+ 687 390 p
+ 702 390 p
+ 526 389 p
+ 584 389 p
+ 587 389 p
+ 601 389 p
+ 635 389 p
+ 637 389 p
+ 666 389 p
+ 674 389 p
+ 728 389 p
+ 743 389 p
+ 473 388 p
+ 527 388 p
+ 556 388 p
+ 602 388 p
+ 512 387 p
+ 521 387 p
+ 528 387 p
+ 603 387 p
+ 661 387 p
+ 670 387 p
+ 675 387 p
+ 703 387 p
+ 483 386 p
+ 530 386 p
+ 595 386 p
+ 604 386 p
+ 646 386 p
+ 662 386 p
+ 682 386 p
+ 704 386 p
+ 713 386 p
+ 493 385 p
+ 532 385 p
+ 584 385 p
+ 605 385 p
+ 632 385 p
+ 674 385 p
+ 504 384 p
+ 538 384 p
+ 565 384 p
+ 606 384 p
+ 658 384 p
+ 663 384 p
+ 688 384 p
+ 705 384 p
+ 735 384 p
+ 764 384 p
+ 539 383 p
+ 564 383 p
+ 565 383 p
+ 607 383 p
+ 625 383 p
+ 664 383 p
+ 706 383 p
+ 540 382 p
+ 578 382 p
+ 589 382 p
+ 608 382 p
+ 665 382 p
+ 678 382 p
+ 541 381 p
+ 566 381 p
+ 579 381 p
+ 609 381 p
+ 642 381 p
+ 666 381 p
+ 679 381 p
+ 689 381 p
+ 543 380 p
+ 544 380 p
+ 545 380 p
+ 610 380 p
+ 638 380 p
+ 698 380 p
+ 707 380 p
+ 547 379 p
+ 549 379 p
+ 552 379 p
+ 611 379 p
+ 623 379 p
+ 647 379 p
+ 701 379 p
+ 708 379 p
+ 548 378 p
+ 561 378 p
+ 599 378 p
+ 612 378 p
+ 623 378 p
+ 543 377 p
+ 552 377 p
+ 578 377 p
+ 613 377 p
+ 647 377 p
+ 665 377 p
+ 553 376 p
+ 576 376 p
+ 589 376 p
+ 614 376 p
+ 634 376 p
+ 657 376 p
+ 668 376 p
+ 554 375 p
+ 555 375 p
+ 582 375 p
+ 615 375 p
+ 634 375 p
+ 636 375 p
+ 486 374 p
+ 554 374 p
+ 555 374 p
+ 616 374 p
+ 711 374 p
+ 475 373 p
+ 556 373 p
+ 557 373 p
+ 617 373 p
+ 635 373 p
+ 667 373 p
+ 673 373 p
+ 504 372 p
+ 546 372 p
+ 568 372 p
+ 618 372 p
+ 621 372 p
+ 643 372 p
+ 513 371 p
+ 563 371 p
+ 594 371 p
+ 619 371 p
+ 651 371 p
+ 671 371 p
+ 702 371 p
+ 498 370 p
+ 521 370 p
+ 528 370 p
+ 620 370 p
+ 639 370 p
+ 695 370 p
+ 703 370 p
+ 542 369 p
+ 595 369 p
+ 618 369 p
+ 621 369 p
+ 663 369 p
+ 705 369 p
+ 536 368 p
+ 569 368 p
+ 574 368 p
+ 622 368 p
+ 650 368 p
+ 654 368 p
+ 664 368 p
+ 709 368 p
+ 718 368 p
+ 561 367 p
+ 611 367 p
+ 612 367 p
+ 623 367 p
+ 654 367 p
+ 687 367 p
+ 708 367 p
+ 524 366 p
+ 529 366 p
+ 593 366 p
+ 624 366 p
+ 685 366 p
+ 691 366 p
+ 556 365 p
+ 565 365 p
+ 607 365 p
+ 625 365 p
+ 673 365 p
+ 688 365 p
+ 706 365 p
+ 710 365 p
+ 542 364 p
+ 560 364 p
+ 591 364 p
+ 626 364 p
+ 521 363 p
+ 523 363 p
+ 577 363 p
+ 627 363 p
+ 644 363 p
+ 675 363 p
+ 523 362 p
+ 529 362 p
+ 590 362 p
+ 628 362 p
+ 669 362 p
+ 685 362 p
+ 533 361 p
+ 559 361 p
+ 589 361 p
+ 629 361 p
+ 649 361 p
+ 532 360 p
+ 571 360 p
+ 583 360 p
+ 630 360 p
+ 679 360 p
+ 711 360 p
+ 551 359 p
+ 581 359 p
+ 587 359 p
+ 631 359 p
+ 681 359 p
+ 684 359 p
+ 716 359 p
+ 741 359 p
+ 753 359 p
+ 532 358 p
+ 575 358 p
+ 605 358 p
+ 632 358 p
+ 666 358 p
+ 679 358 p
+ 513 357 p
+ 583 357 p
+ 584 357 p
+ 633 357 p
+ 671 357 p
+ 697 357 p
+ 576 356 p
+ 614 356 p
+ 615 356 p
+ 634 356 p
+ 655 356 p
+ 668 356 p
+ 723 356 p
+ 724 356 p
+ 730 356 p
+ 738 356 p
+ 742 356 p
+ 787 356 p
+ 831 356 p
+ 544 355 p
+ 601 355 p
+ 617 355 p
+ 635 355 p
+ 667 355 p
+ 676 355 p
+ 728 355 p
+ 580 354 p
+ 582 354 p
+ 615 354 p
+ 636 354 p
+ 723 354 p
+ 544 353 p
+ 586 353 p
+ 601 353 p
+ 637 353 p
+ 676 353 p
+ 680 353 p
+ 707 353 p
+ 743 353 p
+ 552 352 p
+ 586 352 p
+ 610 352 p
+ 638 352 p
+ 683 352 p
+ 707 352 p
+ 528 351 p
+ 585 351 p
+ 620 351 p
+ 639 351 p
+ 678 351 p
+ 562 350 p
+ 584 350 p
+ 586 350 p
+ 640 350 p
+ 680 350 p
+ 683 350 p
+ 567 349 p
+ 578 349 p
+ 585 349 p
+ 641 349 p
+ 661 349 p
+ 694 349 p
+ 566 348 p
+ 571 348 p
+ 609 348 p
+ 642 348 p
+ 646 348 p
+ 689 348 p
+ 713 348 p
+ 504 347 p
+ 577 347 p
+ 618 347 p
+ 643 347 p
+ 672 347 p
+ 521 346 p
+ 523 346 p
+ 627 346 p
+ 644 346 p
+ 669 346 p
+ 677 346 p
+ 744 346 p
+ 524 345 p
+ 551 345 p
+ 574 345 p
+ 645 345 p
+ 681 345 p
+ 551 344 p
+ 604 344 p
+ 642 344 p
+ 646 344 p
+ 689 344 p
+ 691 344 p
+ 704 344 p
+ 714 344 p
+ 745 344 p
+ 552 343 p
+ 611 343 p
+ 613 343 p
+ 647 343 p
+ 690 343 p
+ 719 343 p
+ 727 343 p
+ 746 343 p
+ 767 343 p
+ 556 342 p
+ 573 342 p
+ 588 342 p
+ 648 342 p
+ 649 342 p
+ 688 342 p
+ 559 341 p
+ 629 341 p
+ 648 341 p
+ 649 341 p
+ 724 341 p
+ 739 341 p
+ 740 341 p
+ 747 341 p
+ 754 341 p
+ 785 341 p
+ 561 340 p
+ 574 340 p
+ 622 340 p
+ 650 340 p
+ 687 340 p
+ 718 340 p
+ 732 340 p
+ 521 339 p
+ 563 339 p
+ 619 339 p
+ 651 339 p
+ 744 339 p
+ 748 339 p
+ 758 339 p
+ 564 338 p
+ 567 338 p
+ 572 338 p
+ 652 338 p
+ 690 338 p
+ 564 337 p
+ 567 337 p
+ 596 337 p
+ 653 337 p
+ 686 337 p
+ 572 336 p
+ 622 336 p
+ 623 336 p
+ 654 336 p
+ 708 336 p
+ 709 336 p
+ 720 336 p
+ 749 336 p
+ 576 335 p
+ 594 335 p
+ 634 335 p
+ 655 335 p
+ 695 335 p
+ 577 334 p
+ 593 334 p
+ 595 334 p
+ 656 334 p
+ 696 334 p
+ 704 334 p
+ 725 334 p
+ 582 333 p
+ 591 333 p
+ 614 333 p
+ 657 333 p
+ 564 332 p
+ 596 332 p
+ 606 332 p
+ 658 332 p
+ 672 332 p
+ 693 332 p
+ 706 332 p
+ 735 332 p
+ 750 332 p
+ 762 332 p
+ 792 332 p
+ 536 331 p
+ 539 331 p
+ 597 331 p
+ 659 331 p
+ 700 331 p
+ 557 330 p
+ 597 330 p
+ 598 330 p
+ 660 330 p
+ 673 330 p
+ 684 330 p
+ 596 329 p
+ 603 329 p
+ 641 329 p
+ 661 329 p
+ 678 329 p
+ 750 329 p
+ 751 329 p
+ 770 329 p
+ 795 329 p
+ 591 328 p
+ 595 328 p
+ 604 328 p
+ 662 328 p
+ 682 328 p
+ 752 328 p
+ 591 327 p
+ 606 327 p
+ 621 327 p
+ 663 327 p
+ 740 327 p
+ 752 327 p
+ 764 327 p
+ 765 327 p
+ 564 326 p
+ 607 326 p
+ 622 326 p
+ 664 326 p
+ 693 326 p
+ 709 326 p
+ 543 325 p
+ 608 325 p
+ 613 325 p
+ 665 325 p
+ 699 325 p
+ 601 324 p
+ 609 324 p
+ 632 324 p
+ 666 324 p
+ 674 324 p
+ 741 324 p
+ 587 323 p
+ 617 323 p
+ 635 323 p
+ 667 323 p
+ 728 323 p
+ 753 323 p
+ 589 322 p
+ 614 322 p
+ 634 322 p
+ 668 322 p
+ 715 322 p
+ 729 322 p
+ 754 322 p
+ 577 321 p
+ 628 321 p
+ 644 321 p
+ 669 321 p
+ 717 321 p
+ 726 321 p
+ 769 321 p
+ 577 320 p
+ 596 320 p
+ 603 320 p
+ 670 320 p
+ 675 320 p
+ 726 320 p
+ 751 320 p
+ 776 320 p
+ 583 319 p
+ 619 319 p
+ 633 319 p
+ 671 319 p
+ 711 319 p
+ 734 319 p
+ 738 319 p
+ 755 319 p
+ 825 319 p
+ 596 318 p
+ 643 318 p
+ 658 318 p
+ 672 318 p
+ 696 318 p
+ 705 318 p
+ 750 318 p
+ 776 318 p
+ 617 317 p
+ 625 317 p
+ 660 317 p
+ 673 317 p
+ 700 317 p
+ 753 317 p
+ 756 317 p
+ 768 317 p
+ 771 317 p
+ 784 317 p
+ 601 316 p
+ 605 316 p
+ 666 316 p
+ 674 316 p
+ 755 316 p
+ 603 315 p
+ 627 315 p
+ 670 315 p
+ 675 315 p
+ 588 314 p
+ 635 314 p
+ 637 314 p
+ 676 314 p
+ 692 314 p
+ 757 314 p
+ 772 314 p
+ 798 314 p
+ 803 314 p
+ 590 313 p
+ 600 313 p
+ 644 313 p
+ 677 313 p
+ 702 313 p
+ 744 313 p
+ 758 313 p
+ 763 313 p
+ 769 313 p
+ 814 313 p
+ 608 312 p
+ 639 312 p
+ 661 312 p
+ 678 312 p
+ 742 312 p
+ 759 312 p
+ 770 312 p
+ 777 312 p
+ 609 311 p
+ 630 311 p
+ 632 311 p
+ 679 311 p
+ 731 311 p
+ 584 310 p
+ 637 310 p
+ 640 310 p
+ 680 310 p
+ 734 310 p
+ 743 310 p
+ 757 310 p
+ 778 310 p
+ 799 310 p
+ 598 309 p
+ 631 309 p
+ 645 309 p
+ 681 309 p
+ 718 309 p
+ 732 309 p
+ 760 309 p
+ 786 309 p
+ 800 309 p
+ 847 309 p
+ 591 308 p
+ 604 308 p
+ 662 308 p
+ 682 308 p
+ 713 308 p
+ 723 308 p
+ 737 308 p
+ 761 308 p
+ 783 308 p
+ 586 307 p
+ 638 307 p
+ 640 307 p
+ 683 307 p
+ 701 307 p
+ 721 307 p
+ 767 307 p
+ 598 306 p
+ 631 306 p
+ 660 306 p
+ 684 306 p
+ 760 306 p
+ 590 305 p
+ 624 305 p
+ 628 305 p
+ 685 305 p
+ 717 305 p
+ 733 305 p
+ 769 305 p
+ 564 304 p
+ 567 304 p
+ 653 304 p
+ 686 304 p
+ 694 304 p
+ 762 304 p
+ 801 304 p
+ 600 303 p
+ 623 303 p
+ 650 303 p
+ 687 303 p
+ 712 303 p
+ 720 303 p
+ 722 303 p
+ 763 303 p
+ 606 302 p
+ 625 302 p
+ 648 302 p
+ 688 302 p
+ 692 302 p
+ 736 302 p
+ 747 302 p
+ 764 302 p
+ 768 302 p
+ 781 302 p
+ 802 302 p
+ 609 301 p
+ 642 301 p
+ 646 301 p
+ 689 301 p
+ 716 301 p
+ 731 301 p
+ 745 301 p
+ 567 300 p
+ 647 300 p
+ 652 300 p
+ 690 300 p
+ 719 300 p
+ 551 299 p
+ 624 299 p
+ 646 299 p
+ 691 299 p
+ 717 299 p
+ 793 299 p
+ 800 299 p
+ 556 298 p
+ 676 298 p
+ 688 298 p
+ 692 298 p
+ 739 298 p
+ 756 298 p
+ 768 298 p
+ 803 298 p
+ 564 297 p
+ 658 297 p
+ 664 297 p
+ 693 297 p
+ 762 297 p
+ 773 297 p
+ 567 296 p
+ 641 296 p
+ 686 296 p
+ 694 296 p
+ 746 296 p
+ 576 295 p
+ 620 295 p
+ 655 295 p
+ 695 295 p
+ 703 295 p
+ 577 294 p
+ 656 294 p
+ 672 294 p
+ 696 294 p
+ 725 294 p
+ 726 294 p
+ 789 294 p
+ 804 294 p
+ 584 293 p
+ 599 293 p
+ 633 293 p
+ 697 293 p
+ 734 293 p
+ 588 292 p
+ 589 292 p
+ 610 292 p
+ 698 292 p
+ 699 292 p
+ 715 292 p
+ 772 292 p
+ 589 291 p
+ 665 291 p
+ 698 291 p
+ 699 291 p
+ 727 291 p
+ 729 291 p
+ 598 290 p
+ 659 290 p
+ 673 290 p
+ 700 290 p
+ 710 290 p
+ 760 290 p
+ 771 290 p
+ 775 290 p
+ 599 289 p
+ 611 289 p
+ 683 289 p
+ 701 289 p
+ 721 289 p
+ 600 288 p
+ 619 288 p
+ 677 288 p
+ 702 288 p
+ 712 288 p
+ 758 288 p
+ 603 287 p
+ 620 287 p
+ 695 287 p
+ 703 287 p
+ 748 287 p
+ 751 287 p
+ 759 287 p
+ 604 286 p
+ 646 286 p
+ 656 286 p
+ 704 286 p
+ 714 286 p
+ 737 286 p
+ 793 286 p
+ 606 285 p
+ 621 285 p
+ 672 285 p
+ 705 285 p
+ 725 285 p
+ 735 285 p
+ 752 285 p
+ 765 285 p
+ 789 285 p
+ 607 284 p
+ 625 284 p
+ 658 284 p
+ 706 284 p
+ 710 284 p
+ 610 283 p
+ 637 283 p
+ 638 283 p
+ 707 283 p
+ 727 283 p
+ 757 283 p
+ 611 282 p
+ 623 282 p
+ 654 282 p
+ 708 282 p
+ 719 282 p
+ 720 282 p
+ 721 282 p
+ 766 282 p
+ 622 281 p
+ 654 281 p
+ 664 281 p
+ 709 281 p
+ 749 281 p
+ 773 281 p
+ 775 281 p
+ 625 280 p
+ 700 280 p
+ 706 280 p
+ 710 280 p
+ 736 280 p
+ 771 280 p
+ 773 280 p
+ 616 279 p
+ 630 279 p
+ 671 279 p
+ 711 279 p
+ 730 279 p
+ 738 279 p
+ 599 278 p
+ 687 278 p
+ 702 278 p
+ 712 278 p
+ 722 278 p
+ 774 278 p
+ 604 277 p
+ 642 277 p
+ 682 277 p
+ 713 277 p
+ 714 277 p
+ 731 277 p
+ 646 276 p
+ 704 276 p
+ 713 276 p
+ 714 276 p
+ 737 276 p
+ 790 276 p
+ 805 276 p
+ 589 275 p
+ 668 275 p
+ 698 275 p
+ 715 275 p
+ 729 275 p
+ 551 274 p
+ 631 274 p
+ 689 274 p
+ 716 274 p
+ 745 274 p
+ 786 274 p
+ 669 273 p
+ 685 273 p
+ 691 273 p
+ 717 273 p
+ 817 273 p
+ 870 273 p
+ 622 272 p
+ 650 272 p
+ 681 272 p
+ 718 272 p
+ 732 272 p
+ 775 272 p
+ 647 271 p
+ 690 271 p
+ 708 271 p
+ 719 271 p
+ 746 271 p
+ 749 271 p
+ 779 271 p
+ 654 270 p
+ 687 270 p
+ 708 270 p
+ 720 270 p
+ 782 270 p
+ 806 270 p
+ 683 269 p
+ 701 269 p
+ 708 269 p
+ 721 269 p
+ 766 269 p
+ 767 269 p
+ 599 268 p
+ 687 268 p
+ 712 268 p
+ 722 268 p
+ 766 268 p
+ 774 268 p
+ 634 267 p
+ 636 267 p
+ 682 267 p
+ 723 267 p
+ 724 267 p
+ 730 267 p
+ 783 267 p
+ 634 266 p
+ 649 266 p
+ 723 266 p
+ 724 266 p
+ 754 266 p
+ 783 266 p
+ 785 266 p
+ 807 266 p
+ 842 266 p
+ 656 265 p
+ 696 265 p
+ 705 265 p
+ 725 265 p
+ 789 265 p
+ 804 265 p
+ 808 265 p
+ 669 264 p
+ 670 264 p
+ 696 264 p
+ 726 264 p
+ 794 264 p
+ 817 264 p
+ 849 264 p
+ 860 264 p
+ 647 263 p
+ 699 263 p
+ 707 263 p
+ 727 263 p
+ 772 263 p
+ 829 263 p
+ 852 263 p
+ 601 262 p
+ 635 262 p
+ 667 262 p
+ 728 262 p
+ 741 262 p
+ 756 262 p
+ 798 262 p
+ 668 261 p
+ 699 261 p
+ 715 261 p
+ 729 261 p
+ 742 261 p
+ 777 261 p
+ 809 261 p
+ 829 261 p
+ 846 261 p
+ 634 260 p
+ 711 260 p
+ 723 260 p
+ 730 260 p
+ 755 260 p
+ 791 260 p
+ 807 260 p
+ 825 260 p
+ 850 260 p
+ 857 260 p
+ 679 259 p
+ 689 259 p
+ 713 259 p
+ 731 259 p
+ 790 259 p
+ 791 259 p
+ 650 258 p
+ 681 258 p
+ 718 258 p
+ 732 258 p
+ 733 258 p
+ 806 258 p
+ 816 258 p
+ 590 257 p
+ 685 257 p
+ 732 257 p
+ 733 257 p
+ 763 257 p
+ 800 257 p
+ 671 256 p
+ 680 256 p
+ 697 256 p
+ 734 256 p
+ 774 256 p
+ 778 256 p
+ 823 256 p
+ 868 256 p
+ 882 256 p
+ 606 255 p
+ 658 255 p
+ 705 255 p
+ 735 255 p
+ 736 255 p
+ 810 255 p
+ 688 254 p
+ 710 254 p
+ 735 254 p
+ 736 254 p
+ 821 254 p
+ 822 254 p
+ 830 254 p
+ 853 254 p
+ 682 253 p
+ 704 253 p
+ 714 253 p
+ 737 253 p
+ 808 253 p
+ 634 252 p
+ 671 252 p
+ 711 252 p
+ 738 252 p
+ 831 252 p
+ 854 252 p
+ 855 252 p
+ 588 251 p
+ 649 251 p
+ 692 251 p
+ 739 251 p
+ 781 251 p
+ 803 251 p
+ 809 251 p
+ 811 251 p
+ 832 251 p
+ 591 250 p
+ 649 250 p
+ 663 250 p
+ 740 250 p
+ 747 250 p
+ 761 250 p
+ 785 250 p
+ 788 250 p
+ 631 249 p
+ 666 249 p
+ 728 249 p
+ 741 249 p
+ 786 249 p
+ 813 249 p
+ 824 249 p
+ 833 249 p
+ 843 249 p
+ 851 249 p
+ 866 249 p
+ 634 248 p
+ 678 248 p
+ 729 248 p
+ 742 248 p
+ 777 248 p
+ 787 248 p
+ 812 248 p
+ 834 248 p
+ 601 247 p
+ 637 247 p
+ 680 247 p
+ 743 247 p
+ 798 247 p
+ 799 247 p
+ 644 246 p
+ 651 246 p
+ 677 246 p
+ 744 246 p
+ 748 246 p
+ 794 246 p
+ 814 246 p
+ 646 245 p
+ 689 245 p
+ 716 245 p
+ 745 245 p
+ 790 245 p
+ 793 245 p
+ 845 245 p
+ 647 244 p
+ 694 244 p
+ 719 244 p
+ 746 244 p
+ 770 244 p
+ 779 244 p
+ 835 244 p
+ 841 244 p
+ 875 244 p
+ 649 243 p
+ 688 243 p
+ 740 243 p
+ 747 243 p
+ 781 243 p
+ 788 243 p
+ 802 243 p
+ 844 243 p
+ 651 242 p
+ 703 242 p
+ 744 242 p
+ 748 242 p
+ 794 242 p
+ 812 242 p
+ 654 241 p
+ 709 241 p
+ 719 241 p
+ 749 241 p
+ 782 241 p
+ 796 241 p
+ 797 241 p
+ 835 241 p
+ 658 240 p
+ 661 240 p
+ 672 240 p
+ 750 240 p
+ 776 240 p
+ 792 240 p
+ 819 240 p
+ 661 239 p
+ 670 239 p
+ 703 239 p
+ 751 239 p
+ 759 239 p
+ 795 239 p
+ 662 238 p
+ 663 238 p
+ 705 238 p
+ 752 238 p
+ 761 238 p
+ 808 238 p
+ 631 237 p
+ 667 237 p
+ 673 237 p
+ 753 237 p
+ 784 237 p
+ 649 236 p
+ 668 236 p
+ 724 236 p
+ 754 236 p
+ 787 236 p
+ 809 236 p
+ 846 236 p
+ 671 235 p
+ 674 235 p
+ 730 235 p
+ 755 235 p
+ 799 235 p
+ 825 235 p
+ 833 235 p
+ 673 234 p
+ 692 234 p
+ 728 234 p
+ 756 234 p
+ 784 234 p
+ 813 234 p
+ 676 233 p
+ 680 233 p
+ 707 233 p
+ 757 233 p
+ 836 233 p
+ 852 233 p
+ 651 232 p
+ 677 232 p
+ 702 232 p
+ 758 232 p
+ 814 232 p
+ 823 232 p
+ 837 232 p
+ 678 231 p
+ 703 231 p
+ 751 231 p
+ 759 231 p
+ 812 231 p
+ 681 230 p
+ 684 230 p
+ 700 230 p
+ 760 230 p
+ 682 229 p
+ 740 229 p
+ 752 229 p
+ 761 229 p
+ 788 229 p
+ 838 229 p
+ 658 228 p
+ 686 228 p
+ 693 228 p
+ 762 228 p
+ 792 228 p
+ 797 228 p
+ 821 228 p
+ 677 227 p
+ 687 227 p
+ 733 227 p
+ 763 227 p
+ 780 227 p
+ 806 227 p
+ 606 226 p
+ 663 226 p
+ 688 226 p
+ 764 226 p
+ 765 226 p
+ 663 225 p
+ 705 225 p
+ 764 225 p
+ 765 225 p
+ 802 225 p
+ 810 225 p
+ 828 225 p
+ 708 224 p
+ 721 224 p
+ 722 224 p
+ 766 224 p
+ 778 224 p
+ 796 224 p
+ 827 224 p
+ 647 223 p
+ 683 223 p
+ 721 223 p
+ 767 223 p
+ 779 223 p
+ 673 222 p
+ 688 222 p
+ 692 222 p
+ 768 222 p
+ 815 222 p
+ 822 222 p
+ 848 222 p
+ 669 221 p
+ 677 221 p
+ 685 221 p
+ 769 221 p
+ 780 221 p
+ 661 220 p
+ 678 220 p
+ 746 220 p
+ 770 220 p
+ 801 220 p
+ 673 219 p
+ 700 219 p
+ 710 219 p
+ 771 219 p
+ 822 219 p
+ 826 219 p
+ 676 218 p
+ 698 218 p
+ 727 218 p
+ 772 218 p
+ 829 218 p
+ 693 217 p
+ 709 217 p
+ 710 217 p
+ 773 217 p
+ 797 217 p
+ 839 217 p
+ 853 217 p
+ 869 217 p
+ 712 216 p
+ 722 216 p
+ 734 216 p
+ 774 216 p
+ 780 216 p
+ 827 216 p
+ 840 216 p
+ 868 216 p
+ 700 215 p
+ 709 215 p
+ 718 215 p
+ 775 215 p
+ 782 215 p
+ 826 215 p
+ 839 215 p
+ 872 215 p
+ 670 214 p
+ 672 214 p
+ 750 214 p
+ 776 214 p
+ 795 214 p
+ 819 214 p
+ 678 213 p
+ 729 213 p
+ 742 213 p
+ 777 213 p
+ 834 213 p
+ 841 213 p
+ 905 213 p
+ 680 212 p
+ 734 212 p
+ 766 212 p
+ 778 212 p
+ 827 212 p
+ 836 212 p
+ 868 212 p
+ 879 212 p
+ 719 211 p
+ 746 211 p
+ 767 211 p
+ 779 211 p
+ 796 211 p
+ 763 210 p
+ 769 210 p
+ 774 210 p
+ 780 210 p
+ 816 210 p
+ 823 210 p
+ 876 210 p
+ 887 210 p
+ 911 210 p
+ 928 210 p
+ 932 210 p
+ 688 209 p
+ 739 209 p
+ 747 209 p
+ 781 209 p
+ 815 209 p
+ 720 208 p
+ 749 208 p
+ 775 208 p
+ 782 208 p
+ 880 208 p
+ 682 207 p
+ 723 207 p
+ 724 207 p
+ 783 207 p
+ 805 207 p
+ 807 207 p
+ 838 207 p
+ 842 207 p
+ 850 207 p
+ 673 206 p
+ 753 206 p
+ 756 206 p
+ 784 206 p
+ 826 206 p
+ 843 206 p
+ 848 206 p
+ 858 206 p
+ 649 205 p
+ 724 205 p
+ 740 205 p
+ 785 205 p
+ 811 205 p
+ 842 205 p
+ 844 205 p
+ 681 204 p
+ 716 204 p
+ 741 204 p
+ 786 204 p
+ 824 204 p
+ 843 204 p
+ 845 204 p
+ 847 204 p
+ 634 203 p
+ 742 203 p
+ 754 203 p
+ 787 203 p
+ 834 203 p
+ 846 203 p
+ 863 203 p
+ 877 203 p
+ 902 203 p
+ 740 202 p
+ 747 202 p
+ 761 202 p
+ 788 202 p
+ 696 201 p
+ 705 201 p
+ 725 201 p
+ 789 201 p
+ 804 201 p
+ 810 201 p
+ 828 201 p
+ 849 201 p
+ 862 201 p
+ 867 201 p
+ 714 200 p
+ 731 200 p
+ 745 200 p
+ 790 200 p
+ 791 200 p
+ 805 200 p
+ 824 200 p
+ 856 200 p
+ 730 199 p
+ 731 199 p
+ 790 199 p
+ 791 199 p
+ 833 199 p
+ 864 199 p
+ 658 198 p
+ 750 198 p
+ 762 198 p
+ 792 198 p
+ 691 197 p
+ 704 197 p
+ 745 197 p
+ 793 197 p
+ 818 197 p
+ 856 197 p
+ 870 197 p
+ 726 196 p
+ 744 196 p
+ 748 196 p
+ 794 196 p
+ 817 196 p
+ 837 196 p
+ 860 196 p
+ 661 195 p
+ 751 195 p
+ 776 195 p
+ 795 195 p
+ 801 195 p
+ 819 195 p
+ 820 195 p
+ 867 195 p
+ 894 195 p
+ 900 195 p
+ 749 194 p
+ 766 194 p
+ 779 194 p
+ 796 194 p
+ 879 194 p
+ 880 194 p
+ 749 193 p
+ 762 193 p
+ 773 193 p
+ 797 193 p
+ 835 193 p
+ 839 193 p
+ 676 192 p
+ 728 192 p
+ 743 192 p
+ 798 192 p
+ 813 192 p
+ 851 192 p
+ 874 192 p
+ 881 192 p
+ 680 191 p
+ 743 191 p
+ 755 191 p
+ 799 191 p
+ 836 191 p
+ 874 191 p
+ 882 191 p
+ 885 191 p
+ 681 190 p
+ 691 190 p
+ 733 190 p
+ 800 190 p
+ 816 190 p
+ 847 190 p
+ 870 190 p
+ 876 190 p
+ 686 189 p
+ 770 189 p
+ 795 189 p
+ 801 189 p
+ 820 189 p
+ 841 189 p
+ 883 189 p
+ 688 188 p
+ 747 188 p
+ 765 188 p
+ 802 188 p
+ 815 188 p
+ 830 188 p
+ 676 187 p
+ 692 187 p
+ 739 187 p
+ 803 187 p
+ 832 187 p
+ 848 187 p
+ 881 187 p
+ 884 187 p
+ 886 187 p
+ 696 186 p
+ 725 186 p
+ 789 186 p
+ 804 186 p
+ 818 186 p
+ 849 186 p
+ 714 185 p
+ 783 185 p
+ 790 185 p
+ 805 185 p
+ 720 184 p
+ 732 184 p
+ 763 184 p
+ 806 184 p
+ 840 184 p
+ 724 183 p
+ 730 183 p
+ 783 183 p
+ 807 183 p
+ 831 183 p
+ 850 183 p
+ 861 183 p
+ 725 182 p
+ 737 182 p
+ 752 182 p
+ 808 182 p
+ 818 182 p
+ 838 182 p
+ 729 181 p
+ 739 181 p
+ 754 181 p
+ 809 181 p
+ 811 181 p
+ 832 181 p
+ 735 180 p
+ 765 180 p
+ 789 180 p
+ 810 180 p
+ 821 180 p
+ 828 180 p
+ 739 179 p
+ 785 179 p
+ 809 179 p
+ 811 179 p
+ 844 179 p
+ 742 178 p
+ 748 178 p
+ 759 178 p
+ 812 178 p
+ 854 178 p
+ 865 178 p
+ 741 177 p
+ 756 177 p
+ 798 177 p
+ 813 177 p
+ 851 177 p
+ 677 176 p
+ 744 176 p
+ 758 176 p
+ 814 176 p
+ 837 176 p
+ 768 175 p
+ 781 175 p
+ 802 175 p
+ 815 175 p
+ 871 175 p
+ 884 175 p
+ 732 174 p
+ 780 174 p
+ 800 174 p
+ 816 174 p
+ 872 174 p
+ 888 174 p
+ 912 174 p
+ 928 174 p
+ 934 174 p
+ 717 173 p
+ 726 173 p
+ 794 173 p
+ 817 173 p
+ 860 173 p
+ 909 173 p
+ 910 173 p
+ 911 173 p
+ 793 172 p
+ 804 172 p
+ 808 172 p
+ 818 172 p
+ 862 172 p
+ 750 171 p
+ 776 171 p
+ 795 171 p
+ 819 171 p
+ 820 171 p
+ 795 170 p
+ 801 170 p
+ 819 170 p
+ 820 170 p
+ 894 170 p
+ 899 170 p
+ 913 170 p
+ 929 170 p
+ 736 169 p
+ 762 169 p
+ 810 169 p
+ 821 169 p
+ 873 169 p
+ 913 169 p
+ 930 169 p
+ 736 168 p
+ 768 168 p
+ 771 168 p
+ 822 168 p
+ 853 168 p
+ 914 168 p
+ 919 168 p
+ 734 167 p
+ 758 167 p
+ 780 167 p
+ 823 167 p
+ 859 167 p
+ 741 166 p
+ 786 166 p
+ 790 166 p
+ 824 166 p
+ 845 166 p
+ 856 166 p
+ 866 166 p
+ 906 166 p
+ 915 166 p
+ 671 165 p
+ 730 165 p
+ 755 165 p
+ 825 165 p
+ 882 165 p
+ 890 165 p
+ 771 164 p
+ 775 164 p
+ 784 164 p
+ 826 164 p
+ 869 164 p
+ 872 164 p
+ 895 164 p
+ 914 164 p
+ 917 164 p
+ 766 163 p
+ 774 163 p
+ 778 163 p
+ 827 163 p
+ 840 163 p
+ 765 162 p
+ 789 162 p
+ 810 162 p
+ 828 162 p
+ 830 162 p
+ 727 161 p
+ 729 161 p
+ 772 161 p
+ 829 161 p
+ 852 161 p
+ 881 161 p
+ 886 161 p
+ 889 161 p
+ 905 161 p
+ 944 161 p
+ 736 160 p
+ 802 160 p
+ 828 160 p
+ 830 160 p
+ 871 160 p
+ 892 160 p
+ 896 160 p
+ 919 160 p
+ 925 160 p
+ 930 160 p
+ 634 159 p
+ 738 159 p
+ 807 159 p
+ 831 159 p
+ 854 159 p
+ 857 159 p
+ 861 159 p
+ 907 159 p
+ 739 158 p
+ 803 158 p
+ 809 158 p
+ 832 158 p
+ 886 158 p
+ 741 157 p
+ 755 157 p
+ 791 157 p
+ 833 157 p
+ 885 157 p
+ 890 157 p
+ 906 157 p
+ 920 157 p
+ 926 157 p
+ 742 156 p
+ 777 156 p
+ 787 156 p
+ 834 156 p
+ 863 156 p
+ 865 156 p
+ 902 156 p
+ 746 155 p
+ 749 155 p
+ 797 155 p
+ 835 155 p
+ 875 155 p
+ 880 155 p
+ 883 155 p
+ 891 155 p
+ 899 155 p
+ 901 155 p
+ 757 154 p
+ 778 154 p
+ 799 154 p
+ 836 154 p
+ 874 154 p
+ 893 154 p
+ 908 154 p
+ 758 153 p
+ 794 153 p
+ 814 153 p
+ 837 153 p
+ 855 153 p
+ 859 153 p
+ 878 153 p
+ 761 152 p
+ 783 152 p
+ 808 152 p
+ 838 152 p
+ 896 152 p
+ 773 151 p
+ 775 151 p
+ 797 151 p
+ 839 151 p
+ 869 151 p
+ 873 151 p
+ 903 151 p
+ 774 150 p
+ 806 150 p
+ 827 150 p
+ 840 150 p
+ 888 150 p
+ 746 149 p
+ 777 149 p
+ 801 149 p
+ 841 149 p
+ 875 149 p
+ 883 149 p
+ 894 149 p
+ 901 149 p
+ 929 149 p
+ 724 148 p
+ 783 148 p
+ 785 148 p
+ 842 148 p
+ 877 148 p
+ 896 148 p
+ 741 147 p
+ 784 147 p
+ 786 147 p
+ 843 147 p
+ 866 147 p
+ 747 146 p
+ 785 146 p
+ 811 146 p
+ 844 146 p
+ 871 146 p
+ 745 145 p
+ 786 145 p
+ 824 145 p
+ 845 145 p
+ 729 144 p
+ 754 144 p
+ 787 144 p
+ 846 144 p
+ 863 144 p
+ 877 144 p
+ 681 143 p
+ 786 143 p
+ 800 143 p
+ 847 143 p
+ 895 143 p
+ 912 143 p
+ 768 142 p
+ 784 142 p
+ 803 142 p
+ 848 142 p
+ 858 142 p
+ 884 142 p
+ 726 141 p
+ 789 141 p
+ 804 141 p
+ 849 141 p
+ 862 141 p
+ 730 140 p
+ 783 140 p
+ 807 140 p
+ 850 140 p
+ 857 140 p
+ 861 140 p
+ 864 140 p
+ 898 140 p
+ 741 139 p
+ 798 139 p
+ 813 139 p
+ 851 139 p
+ 858 139 p
+ 920 139 p
+ 922 139 p
+ 727 138 p
+ 757 138 p
+ 829 138 p
+ 852 138 p
+ 736 137 p
+ 773 137 p
+ 822 137 p
+ 853 137 p
+ 873 137 p
+ 738 136 p
+ 812 136 p
+ 831 136 p
+ 854 136 p
+ 855 136 p
+ 865 136 p
+ 878 136 p
+ 907 136 p
+ 973 136 p
+ 738 135 p
+ 837 135 p
+ 854 135 p
+ 855 135 p
+ 859 135 p
+ 790 134 p
+ 793 134 p
+ 824 134 p
+ 856 134 p
+ 864 134 p
+ 906 134 p
+ 915 134 p
+ 730 133 p
+ 831 133 p
+ 850 133 p
+ 857 133 p
+ 898 133 p
+ 784 132 p
+ 848 132 p
+ 851 132 p
+ 858 132 p
+ 914 132 p
+ 922 132 p
+ 931 132 p
+ 823 131 p
+ 837 131 p
+ 855 131 p
+ 859 131 p
+ 878 131 p
+ 887 131 p
+ 897 131 p
+ 726 130 p
+ 794 130 p
+ 817 130 p
+ 860 130 p
+ 867 130 p
+ 909 130 p
+ 910 130 p
+ 923 130 p
+ 807 129 p
+ 831 129 p
+ 850 129 p
+ 861 129 p
+ 898 129 p
+ 907 129 p
+ 924 129 p
+ 789 128 p
+ 818 128 p
+ 849 128 p
+ 862 128 p
+ 925 128 p
+ 787 127 p
+ 834 127 p
+ 846 127 p
+ 863 127 p
+ 889 127 p
+ 902 127 p
+ 905 127 p
+ 791 126 p
+ 850 126 p
+ 856 126 p
+ 864 126 p
+ 924 126 p
+ 926 126 p
+ 812 125 p
+ 834 125 p
+ 854 125 p
+ 865 125 p
+ 900 125 p
+ 927 125 p
+ 973 125 p
+ 741 124 p
+ 824 124 p
+ 843 124 p
+ 866 124 p
+ 895 124 p
+ 920 124 p
+ 789 123 p
+ 795 123 p
+ 860 123 p
+ 867 123 p
+ 909 123 p
+ 913 123 p
+ 923 123 p
+ 734 122 p
+ 774 122 p
+ 778 122 p
+ 868 122 p
+ 879 122 p
+ 887 122 p
+ 897 122 p
+ 773 121 p
+ 826 121 p
+ 839 121 p
+ 869 121 p
+ 717 120 p
+ 793 120 p
+ 800 120 p
+ 870 120 p
+ 876 120 p
+ 911 120 p
+ 815 119 p
+ 830 119 p
+ 844 119 p
+ 871 119 p
+ 892 119 p
+ 904 119 p
+ 775 118 p
+ 816 118 p
+ 826 118 p
+ 872 118 p
+ 903 118 p
+ 917 118 p
+ 821 117 p
+ 839 117 p
+ 853 117 p
+ 873 117 p
+ 899 117 p
+ 930 117 p
+ 798 116 p
+ 799 116 p
+ 836 116 p
+ 874 116 p
+ 885 116 p
+ 893 116 p
+ 746 115 p
+ 835 115 p
+ 841 115 p
+ 875 115 p
+ 901 115 p
+ 944 115 p
+ 780 114 p
+ 800 114 p
+ 870 114 p
+ 876 114 p
+ 912 114 p
+ 928 114 p
+ 787 113 p
+ 842 113 p
+ 846 113 p
+ 877 113 p
+ 889 113 p
+ 837 112 p
+ 854 112 p
+ 859 112 p
+ 878 112 p
+ 910 112 p
+ 927 112 p
+ 973 112 p
+ 778 111 p
+ 796 111 p
+ 868 111 p
+ 879 111 p
+ 891 111 p
+ 782 110 p
+ 796 110 p
+ 835 110 p
+ 880 110 p
+ 888 110 p
+ 891 110 p
+ 903 110 p
+ 798 109 p
+ 803 109 p
+ 829 109 p
+ 881 109 p
+ 922 109 p
+ 931 109 p
+ 734 108 p
+ 799 108 p
+ 825 108 p
+ 882 108 p
+ 890 108 p
+ 908 108 p
+ 801 107 p
+ 835 107 p
+ 841 107 p
+ 883 107 p
+ 803 106 p
+ 815 106 p
+ 848 106 p
+ 884 106 p
+ 892 106 p
+ 904 106 p
+ 799 105 p
+ 833 105 p
+ 874 105 p
+ 885 105 p
+ 893 105 p
+ 939 105 p
+ 803 104 p
+ 829 104 p
+ 832 104 p
+ 886 104 p
+ 904 104 p
+ 780 103 p
+ 859 103 p
+ 868 103 p
+ 887 103 p
+ 897 103 p
+ 961 103 p
+ 816 102 p
+ 840 102 p
+ 880 102 p
+ 888 102 p
+ 829 101 p
+ 863 101 p
+ 877 101 p
+ 889 101 p
+ 825 100 p
+ 833 100 p
+ 882 100 p
+ 890 100 p
+ 939 100 p
+ 835 99 p
+ 879 99 p
+ 880 99 p
+ 891 99 p
+ 830 98 p
+ 871 98 p
+ 884 98 p
+ 892 98 p
+ 919 98 p
+ 836 97 p
+ 874 97 p
+ 885 97 p
+ 893 97 p
+ 908 97 p
+ 939 97 p
+ 795 96 p
+ 820 96 p
+ 841 96 p
+ 894 96 p
+ 900 96 p
+ 826 95 p
+ 847 95 p
+ 866 95 p
+ 895 95 p
+ 830 94 p
+ 838 94 p
+ 842 94 p
+ 896 94 p
+ 924 94 p
+ 859 93 p
+ 868 93 p
+ 887 93 p
+ 897 93 p
+ 850 92 p
+ 857 92 p
+ 861 92 p
+ 898 92 p
+ 926 92 p
+ 820 91 p
+ 835 91 p
+ 873 91 p
+ 899 91 p
+ 795 90 p
+ 865 90 p
+ 894 90 p
+ 900 90 p
+ 923 90 p
+ 835 89 p
+ 841 89 p
+ 875 89 p
+ 901 89 p
+ 929 89 p
+ 787 88 p
+ 834 88 p
+ 863 88 p
+ 902 88 p
+ 839 87 p
+ 872 87 p
+ 880 87 p
+ 903 87 p
+ 871 86 p
+ 884 86 p
+ 886 86 p
+ 904 86 p
+ 931 86 p
+ 777 85 p
+ 829 85 p
+ 863 85 p
+ 905 85 p
+ 824 84 p
+ 833 84 p
+ 856 84 p
+ 906 84 p
+ 915 84 p
+ 831 83 p
+ 854 83 p
+ 861 83 p
+ 907 83 p
+ 836 82 p
+ 882 82 p
+ 893 82 p
+ 908 82 p
+ 817 81 p
+ 860 81 p
+ 867 81 p
+ 909 81 p
+ 817 80 p
+ 860 80 p
+ 878 80 p
+ 910 80 p
+ 932 80 p
+ 961 80 p
+ 780 79 p
+ 817 79 p
+ 870 79 p
+ 911 79 p
+ 932 79 p
+ 816 78 p
+ 847 78 p
+ 876 78 p
+ 912 78 p
+ 917 78 p
+ 934 78 p
+ 820 77 p
+ 821 77 p
+ 867 77 p
+ 913 77 p
+ 925 77 p
+ 822 76 p
+ 826 76 p
+ 858 76 p
+ 914 76 p
+ 824 75 p
+ 856 75 p
+ 906 75 p
+ 915 75 p
+ 825 74 p
+ 859 74 p
+ 890 74 p
+ 916 74 p
+ 826 73 p
+ 872 73 p
+ 912 73 p
+ 917 73 p
+ 934 73 p
+ 829 72 p
+ 836 72 p
+ 881 72 p
+ 918 72 p
+ 822 71 p
+ 830 71 p
+ 892 71 p
+ 919 71 p
+ 833 70 p
+ 851 70 p
+ 866 70 p
+ 920 70 p
+ 856 69 p
+ 864 69 p
+ 870 69 p
+ 921 69 p
+ 851 68 p
+ 858 68 p
+ 881 68 p
+ 922 68 p
+ 860 67 p
+ 867 67 p
+ 900 67 p
+ 923 67 p
+ 927 67 p
+ 861 66 p
+ 864 66 p
+ 896 66 p
+ 924 66 p
+ 830 65 p
+ 862 65 p
+ 913 65 p
+ 925 65 p
+ 833 64 p
+ 864 64 p
+ 898 64 p
+ 926 64 p
+ 865 63 p
+ 878 63 p
+ 923 63 p
+ 927 63 p
+ 780 62 p
+ 816 62 p
+ 876 62 p
+ 928 62 p
+ 820 61 p
+ 841 61 p
+ 901 61 p
+ 929 61 p
+ 821 60 p
+ 830 60 p
+ 873 60 p
+ 930 60 p
+ 858 59 p
+ 881 59 p
+ 904 59 p
+ 931 59 p
+ 780 58 p
+ 910 58 p
+ 911 58 p
+ 932 58 p
+ 961 58 p
+ 868 57 p
+ 887 57 p
+ 897 57 p
+ 933 57 p
+ 816 56 p
+ 912 56 p
+ 917 56 p
+ 934 56 p
+ 780 55 p
+ 911 55 p
+ 928 55 p
+ 935 55 p
+ 865 54 p
+ 900 54 p
+ 905 54 p
+ 936 54 p
+ 912 53 p
+ 928 53 p
+ 937 53 p
+ 830 52 p
+ 871 52 p
+ 896 52 p
+ 938 52 p
+ 885 51 p
+ 890 51 p
+ 893 51 p
+ 939 51 p
+ 881 50 p
+ 886 50 p
+ 931 50 p
+ 940 50 p
+ 875 49 p
+ 879 49 p
+ 901 49 p
+ 941 49 p
+ 944 49 p
+ 879 48 p
+ 888 48 p
+ 942 48 p
+ 882 47 p
+ 890 47 p
+ 908 47 p
+ 943 47 p
+ 829 46 p
+ 875 46 p
+ 944 46 p
+ 880 45 p
+ 899 45 p
+ 901 45 p
+ 945 45 p
+ 826 44 p
+ 858 44 p
+ 895 44 p
+ 946 44 p
+ 898 43 p
+ 907 43 p
+ 947 43 p
+ 893 42 p
+ 922 42 p
+ 948 42 p
+ 864 41 p
+ 898 41 p
+ 926 41 p
+ 949 41 p
+ 904 40 p
+ 914 40 p
+ 931 40 p
+ 950 40 p
+ 895 39 p
+ 906 39 p
+ 920 39 p
+ 951 39 p
+ 826 38 p
+ 873 38 p
+ 903 38 p
+ 952 38 p
+ 920 37 p
+ 939 37 p
+ 953 37 p
+ 829 36 p
+ 889 36 p
+ 954 36 p
+ 889 35 p
+ 896 35 p
+ 924 35 p
+ 955 35 p
+ 841 34 p
+ 901 34 p
+ 944 34 p
+ 956 34 p
+ 892 33 p
+ 919 33 p
+ 957 33 p
+ 820 32 p
+ 867 32 p
+ 913 32 p
+ 958 32 p
+ 894 31 p
+ 900 31 p
+ 959 31 p
+ 861 30 p
+ 902 30 p
+ 960 30 p
+ 887 29 p
+ 910 29 p
+ 932 29 p
+ 961 29 p
+ 870 28 p
+ 915 28 p
+ 962 28 p
+ 820 27 p
+ 873 27 p
+ 913 27 p
+ 963 27 p
+ 829 26 p
+ 889 26 p
+ 964 26 p
+ 833 25 p
+ 906 25 p
+ 926 25 p
+ 965 25 p
+ 858 24 p
+ 895 24 p
+ 920 24 p
+ 966 24 p
+ 859 23 p
+ 878 23 p
+ 961 23 p
+ 967 23 p
+ 862 22 p
+ 867 22 p
+ 909 22 p
+ 968 22 p
+ 865 21 p
+ 902 21 p
+ 905 21 p
+ 969 21 p
+ 862 20 p
+ 870 20 p
+ 911 20 p
+ 970 20 p
+ 871 19 p
+ 904 19 p
+ 971 19 p
+ 873 18 p
+ 903 18 p
+ 972 18 p
+ 854 17 p
+ 865 17 p
+ 878 17 p
+ 973 17 p
+ 879 16 p
+ 880 16 p
+ 974 16 p
+ 880 15 p
+ 888 15 p
+ 903 15 p
+ 975 15 p
+ 895 14 p
+ 917 14 p
+ 976 14 p
+ 862 13 p
+ 896 13 p
+ 925 13 p
+ 977 13 p
+ 899 12 p
+ 929 12 p
+ 978 12 p
+ 900 11 p
+ 927 11 p
+ 979 11 p
+ 903 10 p
+ 917 10 p
+ 980 10 p
+ 910 9 p
+ 981 9 p
+ 870 8 p
+ 911 8 p
+ 982 8 p
+ 895 7 p
+ 912 7 p
+ 983 7 p
+ 922 6 p
+ 931 6 p
+ 984 6 p
+ 910 5 p
+ 911 5 p
+ 932 5 p
+ 985 5 p
+ 833 4 p
+ 986 4 p
+ 858 3 p
+ 922 3 p
+ 987 3 p
+ 862 2 p
+ 925 2 p
+ 988 2 p
+ 858 1 p
+ 914 1 p
+ 989 1 p
+ 862 0 p
+ 990 0 p
+showpage
+%%EndDocument
+
+ endTexFig
+ 60 1513 a Fk(5)83 b(Basic)26 b(algebraic)h(op)r(erations)60
+1622 y Fl(The)14 b(usual)g(algebraic)f(op)q(erations)i(in)o(v)o(olving)d(t)o
+(w)o(o)i(matrices,)e(suc)o(h)h(as)h Fj(C)k Fl(=)c Fj(A)6 b
+Fl(+)g Fj(B)s Fl(,)12 b Fj(C)18 b Fl(=)13 b Fj(A)6 b Fl(+)g
+Fj(\014)s(B)s Fl(,)60 1683 y Fj(C)21 b Fl(=)c Fj(AB)s Fl(,)h(etc..,)f(are)h
+(fairly)g(common)e(in)i(sparse)h(matrix)e(computations.)27
+b(These)18 b(basic)h(matrix)60 1743 y(op)q(erations)25 b(are)e(included)f(in)
+i(the)f(mo)q(dule)f(called)h(BLASSM.)f(In)h(addition)h(there)f(is)g(a)h
+(large)60 1803 y(n)o(um)o(b)q(er)10 b(of)i(basic)g(op)q(erations,)i(in)o(v)o
+(olving)c(a)i(sparse)h(matrix)d(and)i(a)h(v)o(ector,)e(suc)o(h)h(as)g
+(matrix-v)o(ector)60 1863 y(pro)q(ducts)18 b(and)g(triangular)g(system)e
+(solutions)i(that)g(are)g(v)o(ery)e(commonly)e(used.)25 b(Some)17
+b(of)g(these)60 1923 y(are)c(included)f(in)h(the)g(mo)q(dule)f(MA)l(TVEC.)g
+(Sometimes)e(it)j(is)g(desirable)f(to)i(compute)e(the)h(patterns)60
+1984 y(of)i(the)g(matrices)e Fj(A)8 b Fl(+)g Fj(B)18 b Fl(and)d
+Fj(AB)s Fl(,)f(or)h(in)g(fact)g(of)g(an)o(y)g(result)f(of)h(the)g(basic)g
+(algebraic)f(op)q(erations.)60 2044 y(This)j(can)g(b)q(e)h(implem)o(e)o(n)o
+(ted)c(b)o(y)j(w)o(a)o(y)f(of)i(job)f(options)h(whic)o(h)e(will)g(determine)f
+(whether)h(to)i(\014ll-in)60 2104 y(the)e(real)h(v)m(alues)f(or)h(not)h
+(during)f(the)f(computation.)22 b(W)l(e)16 b(no)o(w)h(brie\015y)f(describ)q
+(e)g(the)h(con)o(ten)o(ts)f(of)60 2164 y(eac)o(h)g(of)g(the)g(t)o(w)o(o)g(mo)
+q(dules)g(BLASSM)f(and)i(MA)l(TVEC.)60 2308 y Fi(5.1)70 b(The)22
+b(BLASSM)i(mo)r(dule)60 2401 y Fl(Curren)o(tly)l(,)12 b(the)h(mo)q(dule)g
+(BLASSM)f(\(Basic)h(Linear)h(Algebra)f(Subroutines)g(for)h(Sparse)g
+(Matrices\))60 2461 y(con)o(tains)i(the)g(follo)o(wing)g(nine)g(subroutines:)
+120 2611 y Fh(AMUB)212 b Fl(P)o(erforms)19 b(the)i(pro)q(duct)g(of)g(t)o(w)o
+(o)g(matrices,)e(i.e.,)h(computes)f Fj(C)25 b Fl(=)c Fj(AB)s
+Fl(,)510 2671 y(where)16 b Fj(A)g Fl(and)h Fj(B)h Fl(are)f(b)q(oth)g(in)f
+(CSR)g(format.)p eop
+%%Page: 19 19
+19 18 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(19)120
+132 y Fh(APLB)236 b Fl(P)o(erforms)13 b(the)i(addition)g(of)g(t)o(w)o(o)g
+(matrices,)d(i.e.,)h(computes)h Fj(C)j Fl(=)d Fj(A)8 b Fl(+)g
+Fj(B)s Fl(,)510 192 y(where)16 b Fj(A)g Fl(and)h Fj(B)h Fl(are)f(b)q(oth)g
+(in)f(CSR)g(format.)120 290 y Fh(APLSB)205 b Fl(P)o(erforms)12
+b(the)g(op)q(eration)i Fj(C)k Fl(=)13 b Fj(A)5 b Fl(+)g Fj(\033)r(B)s
+Fl(,)11 b(where)i Fj(\033)i Fl(is)d(a)i(scalar,)f(and)h Fj(A;)8
+b(B)510 351 y Fl(are)16 b(t)o(w)o(o)g(matrices)f(in)h(CSR)g(format.)120
+456 y Fh(APMBT)178 b Fl(P)o(erforms)23 b(either)g(the)h(addition)h
+Fj(C)31 b Fl(=)d Fj(A)16 b Fl(+)g Fj(B)1443 437 y Ff(T)1495
+456 y Fl(or)24 b(the)h(subtraction)510 516 y Fj(C)17 b Fl(=)d
+Fj(A)d Fg(\000)g Fj(B)752 498 y Ff(T)779 516 y Fl(.)120 625
+y Fh(APLSBT)166 b Fl(P)o(erforms)15 b(the)h(op)q(eration)h
+Fj(C)g Fl(=)d Fj(A)d Fl(+)g Fj(sB)1283 607 y Ff(T)1310 625
+y Fl(.)120 745 y Fh(DIAMUA)146 b Fl(Computes)22 b(the)h(pro)q(duct)g(of)g
+(diagonal)h(matrix)d(\(from)g(the)i(left\))e(b)o(y)i(a)510
+805 y(sparse)g(matrix,)e(i.e.,)h(computes)f Fj(C)27 b Fl(=)d
+Fj(D)q(A)p Fl(,)g(where)e Fj(D)i Fl(is)e(a)g(diagonal)510 865
+y(matrix)15 b(and)h Fj(A)g Fl(is)g(a)h(general)f(sparse)h(matrix)d(stored)j
+(in)f(CSR)g(format.)120 974 y Fh(AMUDIA)146 b Fl(Computes)20
+b(the)g(pro)q(duct)h(of)g(a)f(sparse)h(matrix)e(b)o(y)h(a)h(diagonal)g
+(matrix)510 1034 y(from)f(the)h(righ)o(t,)g(i.e.,)f(computes)g
+Fj(C)25 b Fl(=)d Fj(AD)q Fl(,)g(where)e Fj(D)j Fl(is)e(a)g(diagonal)510
+1094 y(matrix)15 b(and)h Fj(A)g Fl(is)g(a)h(general)f(sparse)h(matrix)d
+(stored)j(in)f(CSR)g(format.)120 1203 y Fh(APLDIA)170 b Fl(Computes)24
+b(the)g(sum)f(of)h(a)h(sparse)g(matrix)e(and)h(a)h(diagonal)g(matrix,)510
+1263 y Fj(C)17 b Fl(=)d Fj(A)d Fl(+)g Fj(D)q Fl(.)120 1365
+y Fh(APLSCA)163 b Fl(P)o(erforms)17 b(an)i(in-place)f(addition)h(of)g(a)g
+(scalar)g(to)g(the)g(diagonal)g(en)o(tries)510 1426 y(of)e(a)f(sparse)h
+(matrix,)d(i.e.,)g(p)q(erforms)i(the)g(op)q(eration)h Fj(A)c
+Fl(:=)h Fj(A)c Fl(+)h Fj(\033)r(I)t Fl(.)120 1624 y(Missing)j(from)f(this)h
+(list)g(are)g(the)g(routines)g Fh(AMUBT)h Fl(whic)o(h)e(m)o(ultiplies)e
+Fj(A)j Fl(b)o(y)g(the)g(transp)q(ose)60 1684 y(of)j Fj(B)s
+Fl(,)e Fj(C)i Fl(=)d Fj(AB)366 1666 y Ff(T)393 1684 y Fl(,)h(and)i
+Fh(A)-5 b(TMUB)36 b Fl(whic)o(h)15 b(m)o(ultiplies)e(the)j(transp)q(ose)i(of)
+f Fj(A)e Fl(b)o(y)h Fj(B)s Fl(,)f Fj(C)j Fl(=)c Fj(A)1818 1666
+y Ff(T)1845 1684 y Fj(B)s Fl(.)120 1834 y(These)j(are)h(v)o(ery)e(di\016cult)
+f(to)j(implem)o(en)o(t)c(and)k(w)o(e)f(found)g(it)g(b)q(etter)g(to)h(p)q
+(erform)e(it)h(with)g(t)o(w)o(o)60 1895 y(passes.)22 b(Op)q(erations)16
+b(of)g(the)g(form)e Fj(tA)9 b Fl(+)h Fj(sB)18 b Fl(ha)o(v)o(e)d(b)q(een)h(a)o
+(v)o(oided)f(as)h(their)f(o)q(ccurrence)g(do)q(es)i(not)60
+1955 y(w)o(arran)o(t)22 b(additional)f(subroutines.)37 b(Sev)o(eral)21
+b(other)g(op)q(erations)i(similar)c(to)j(those)g(de\014ned)f(for)60
+2015 y(v)o(ectors)15 b(ha)o(v)o(e)g(not)h(b)q(een)g(included.)k(F)l(or)c
+(example)e(the)h(scaling)h(of)g(a)g(matrix)e(in)i(sparse)g(format)f(is)60
+2075 y(simply)i(a)i(scaling)g(of)g(its)g(real)f(arra)o(y)h
+Fj(A)p Fl(,)g(whic)o(h)f(can)h(b)q(e)g(done)g(with)g(the)g(usual)g(BLAS1)g
+(scaling)60 2135 y(routine,)d(on)g(the)g(arra)o(y)h Fj(A)p
+Fl(.)60 2280 y Fi(5.2)70 b(The)22 b(MA)-6 b(TVEC)23 b(mo)r(dule)60
+2372 y Fl(In)14 b(its)h(curren)o(t)e(status,)j(this)e(mo)q(dule)f(con)o
+(tains)i(matrix)e(b)o(y)h(v)o(ector)g(pro)q(ducts)h(and)g(v)m(arious)g
+(sparse)60 2432 y(triangular)i(solution)f(metho)q(ds.)21 b(The)16
+b(con)o(ten)o(ts)g(are)g(as)h(follo)o(ws.)120 2582 y Fh(AMUX)210
+b Fl(P)o(erforms)17 b(the)i(pro)q(duct)h(of)f(a)g(matrix)e(b)o(y)i(a)g(v)o
+(ector.)28 b(Matrix)18 b(stored)h(in)510 2643 y(Compressed)d(Sparse)g(Ro)o(w)
+h(\(CSR\))f(format.)p eop
+%%Page: 20 20
+20 19 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(20)120
+132 y Fh(A)-5 b(TMUX)176 b Fl(P)o(erforms)19 b(the)h(pro)q(duct)i(of)f(the)f
+(transp)q(ose)i(of)f(a)g(matrix)d(b)o(y)i(a)h(v)o(ector.)510
+192 y(Matrix)h Fj(A)g Fl(stored)h(in)f(Compressed)g(Sparse)g(Ro)o(w)h
+(format.)39 b(Can)23 b(also)510 252 y(b)q(e)c(view)o(ed)e(as)j(the)e(pro)q
+(duct)h(of)h(a)f(matrix)e(in)h(the)h(Compressed)f(Sparse)510
+312 y(Column)d(format)h(b)o(y)g(a)g(v)o(ector.)120 421 y Fh(AMUXE)173
+b Fl(P)o(erforms)17 b(the)i(pro)q(duct)h(of)f(a)g(matrix)e(b)o(y)i(a)g(v)o
+(ector.)28 b(Matrix)18 b(stored)h(in)510 481 y(Ellpac)o(k/Itpac)o(k)c
+(\(ELL\))i(format.)120 592 y Fh(AMUXD)167 b Fl(P)o(erforms)17
+b(the)i(pro)q(duct)h(of)f(a)g(matrix)e(b)o(y)i(a)g(v)o(ector.)28
+b(Matrix)18 b(stored)h(in)510 652 y(Diagonal)e(\(DIA\))f(format.)120
+763 y Fh(AMUXJ)181 b Fl(P)o(erforms)17 b(the)i(pro)q(duct)h(of)f(a)g(matrix)e
+(b)o(y)i(a)g(v)o(ector.)28 b(Matrix)18 b(stored)h(in)510 823
+y(Jagged)e(Diagonal)h(\(JAD\))e(format.)120 935 y Fh(VBRMV)171
+b Fl(Sparse)17 b(matrix)d(-)j(full)e(v)o(ector)g(pro)q(duct)i(in)f(VBR)g
+(format.)120 1055 y Fh(LSOL)265 b Fl(Unit)23 b(lo)o(w)o(er)f(triangular)i
+(system)e(solution.)42 b(Matrix)23 b(stored)h(in)f(Com-)526
+1115 y(pressed)17 b(Sparse)f(Ro)o(w)h(\(CSR\))f(format.)120
+1226 y Fh(LDSOL)206 b Fl(Lo)o(w)o(er)27 b(triangular)g(system)f(solution.)53
+b(Matrix)26 b(stored)h(in)g(Mo)q(di\014ed)510 1286 y(Sparse)17
+b(Ro)o(w)f(\(MSR\))g(format.)21 b(Diagonal)c(elemen)o(ts)c(in)o(v)o(erted.)
+120 1398 y Fh(LSOLC)209 b Fl(Unit)23 b(lo)o(w)o(er)f(triangular)i(system)d
+(solution.)43 b(Matrix)23 b(stored)h(in)e(Com-)510 1458 y(pressed)16
+b(Sparse)h(Column)e(\(CSC\))i(format.)120 1569 y Fh(LDSOLC)166
+b Fl(Lo)o(w)o(er)27 b(triangular)g(system)f(solution.)53 b(Matrix)26
+b(stored)h(in)g(Mo)q(di\014ed)510 1629 y(Sparse)17 b(Column)e(\(MSC\))h
+(format)g(with)g(diagonal)h(elemen)o(ts)c(in)o(v)o(erted.)120
+1740 y Fh(LDSOLL)172 b Fl(Unit)21 b(lo)o(w)o(er)g(triangular)h(system)f
+(solution)h(with)g(the)f(lev)o(el)f(sc)o(heduling)510 1801
+y(approac)o(h.)38 b(Matrix)21 b(stored)h(in)g(Mo)q(di\014ed)f(Sparse)h(Ro)o
+(w)g(format,)g(with)510 1861 y(diagonal)17 b(elemen)o(ts)d(in)o(v)o(erted.)
+120 1969 y Fh(USOL)240 b Fl(Unit)21 b(upp)q(er)i(triangular)f(system)f
+(solution.)39 b(Matrix)21 b(stored)i(in)e(Com-)510 2029 y(pressed)16
+b(Sparse)h(Ro)o(w)f(\(CSR\))h(format.)120 2141 y Fh(UDSOL)197
+b Fl(Upp)q(er)26 b(triangular)h(system)e(solution.)52 b(Matrix)25
+b(stored)i(in)f(Mo)q(di\014ed)510 2201 y(Sparse)17 b(Ro)o(w)f(\(MSR\))g
+(format.)21 b(Diagonal)c(elemen)o(ts)c(in)o(v)o(erted.)120
+2312 y Fh(USOLC)200 b Fl(Unit)21 b(upp)q(er)i(triangular)f(system)f
+(solution.)39 b(Matrix)21 b(stored)i(in)e(Com-)510 2372 y(pressed)16
+b(Sparse)h(Column)e(\(CSC\))i(format.)120 2483 y Fh(UDSOLC)157
+b Fl(Upp)q(er)26 b(triangular)h(system)e(solution.)52 b(Matrix)25
+b(stored)i(in)f(Mo)q(di\014ed)510 2544 y(Sparse)17 b(Column)e(\(MSC\))h
+(format)g(with)g(diagonal)h(elemen)o(ts)c(in)o(v)o(erted.)p
+eop
+%%Page: 21 21
+21 20 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(21)120
+132 y(Most)21 b(of)f(the)g(ab)q(o)o(v)o(e)h(routines)f(are)h(short)g(and)g
+(rather)f(straigh)o(tforw)o(ard.)34 b(A)20 b(long)h(test)f(pro-)60
+192 y(gram)e(is)h(pro)o(vided)f(to)h(run)g(all)g(of)g(the)g(subroutines)g(on)
+g(a)h(large)e(n)o(um)o(b)q(er)f(of)j(matrices)d(that)i(are)60
+252 y(dynamically)14 b(generated)i(using)h(the)f(MA)l(TGEN)f(mo)q(dule.)60
+416 y Fk(6)83 b(The)27 b(basic)g(statistics)f(and)h(information)h(routines)60
+526 y Fl(It)14 b(is)h(sometimes)d(v)o(ery)i(informativ)o(e)e(when)j
+(analyzing)g(solution)g(metho)q(ds,)f(to)h(b)q(e)g(able)g(in)f(a)h(short)60
+586 y(amoun)o(t)23 b(of)h(time)e(to)i(obtain)h(some)d(statistical)i
+(information)f(ab)q(out)i(a)f(sparse)h(matrix.)42 b(The)60
+646 y(purp)q(ose)22 b(of)f(the)g(subroutine)h(info1,)g(is)f(to)g(prin)o(t)g
+(out)g(suc)o(h)g(information.)35 b(The)21 b(\014rst)g(question)60
+706 y(w)o(e)i(had)i(to)f(address)h(w)o(as)f(to)g(determine)e(the)h(t)o(yp)q
+(e)h(of)g(information)f(that)h(is)g(inexp)q(ensiv)o(e)e(to)60
+766 y(obtain)i(and)f(y)o(et)f(practical)h(and)g(useful.)42
+b(The)23 b(simplest)e(and)i(most)g(common)e(statistics)h(are:)60
+826 y(total)d(n)o(um)o(b)q(er)f(of)h(nonzero)g(elemen)o(ts,)e(a)o(v)o(erage)h
+(n)o(um)o(b)q(er)g(of)h(nonzero)g(elemen)o(ts)e(p)q(er)i(ro)o(w)g(\(with)60
+887 y(standard)c(deviation\),)f(band)h(size.)20 b(Our)14 b(preliminary)d(pac)
+o(k)m(age)k(Info1)f(con)o(tains)h(the)f(ab)q(o)o(v)o(e)g(and)h(a)60
+947 y(n)o(um)o(b)q(er)e(of)j(other)f(features.)21 b(F)l(or)16
+b(example)d(it)h(answ)o(ers)i(the)f(follo)o(wing)g(questions:)21
+b(Is)15 b(the)g(matrix)60 1007 y(lo)o(w)o(er)21 b(triangular,)i(upp)q(er)f
+(triangular?)38 b(do)q(es)23 b(it)e(ha)o(v)o(e)g(a)h(symmetri)o(c)d
+(structure?)37 b(If)21 b(not)i(ho)o(w)60 1067 y(close)f(is)f(it)h(from)f(ha)o
+(ving)h(this)g(prop)q(ert)o(y?)39 b(Is)21 b(it)h(w)o(eakly)f(ro)o
+(w-diagonally)i(dominan)o(t?)37 b(What)60 1127 y(p)q(ercen)o(tage)21
+b(of)h(the)f(ro)o(ws)h(are)g(w)o(eakly)e(diagonally)i(dominan)o(t?)36
+b(Same)20 b(questions)i(for)g(column)60 1188 y(diagonal)f(dominance.)30
+b(A)19 b(sample)f(output)j(from)d(info1)i(is)g(listed)e(in)i(Figure3.)31
+b(This)20 b(prin)o(t-out)60 1248 y(w)o(as)d(generated)f(b)o(y)g(t)o(yping)763
+1336 y Fa(info1.ex)23 b(<)i(pores)p 1178 1336 16 2 v 16 w(2)60
+1425 y Fl(where)16 b Fa(pores)p 334 1425 V 17 w(2)f Fl(is)h(a)h(\014le)f(con)
+o(taining)g(a)g(matrix)f(in)h(H/B)g(format.)120 1485 y(If)g(the)g(Harw)o
+(ell-Bo)q(eing)f(matrix)f(is)i(symmetri)o(c)d(then)j(Info1)h(tak)o(es)f(this)
+g(information)f(in)o(to)h(ac-)60 1545 y(coun)o(t)c(to)g(obtain)g(the)f
+(correct)g(information)g(instead)h(of)g(the)f(information)g(on)h(the)g(lo)o
+(w)o(er)f(triangular)60 1606 y(part)18 b(only)l(.)24 b(Moreo)o(v)o(er,)15
+b(in)i(cases)h(where)f(only)g(the)g(pattern)g(is)g(pro)o(vided)g(\(no)g(real)
+g(v)m(alues\),)g(then)60 1666 y(info1)d(will)e(prin)o(t)h(a)h(message)f(to)g
+(this)h(e\013ect)f(and)h(will)e(then)h(giv)o(e)g(information)f(related)h
+(only)g(to)h(the)60 1726 y(structure)k(of)g(the)g(matrix.)25
+b(The)19 b(output)f(for)h(an)g(example)d(of)i(this)g(t)o(yp)q(e)g(is)g(sho)o
+(wn)h(in)e(Figure)h(4.)60 1786 y(W)l(e)d(should)h(p)q(oin)o(t)g(out)g(that)g
+(the)g(runs)g(for)g(these)f(t)o(w)o(o)h(tests)f(w)o(ere)g(basically)g(instan)
+o(taneous)h(on)h(a)60 1846 y(Sun-4)g(w)o(orkstation.)120 1906
+y(Curren)o(tly)l(,)e(this)h(mo)q(dule)f(con)o(tains)h(the)g(follo)o(wing)g
+(subroutines:)120 2057 y Fh(N)p 167 2057 17 2 v 20 w(IMP)p
+299 2057 V 20 w(DIA)n(G)46 b Fl(Computes)16 b(the)g(most)f(imp)q(ortan)o(t)g
+(diagonals.)120 2177 y Fh(DIA)n(G)p 271 2177 V 21 w(DOMI)62
+b Fl(Computes)45 b(the)g(p)q(ercen)o(tage)g(of)g(w)o(eakly)g(diagonally)g
+(dominan)o(t)510 2237 y(ro)o(ws/columns.)120 2348 y Fh(BAND)n(WIDTH)18
+b Fl(Computes)e(the)g(lo)o(w)o(er,)f(upp)q(er,)h(maxim)n(um)o(,)d(and)k(a)o
+(v)o(erage)e(bandwidths.)120 2468 y Fh(NONZ)226 b Fl(Computes)35
+b(maxim)n(um)c(n)o(um)o(b)q(ers)j(of)i(nonzero)f(elemen)o(ts)e(p)q(er)i(col-)
+510 2529 y(umn/ro)o(w,)13 b(min)f(n)o(um)o(b)q(ers)g(of)i(nonzero)f(elemen)o
+(ts)e(p)q(er)j(column/ro)o(w,)e(and)510 2589 y(n)o(um)o(b)q(ers)j(of)h(zero)g
+(columns/ro)o(ws.)120 2700 y Fh(FR)n(OBNORM)52 b Fl(Computes)16
+b(the)g(F)l(rob)q(enius)g(norm)f(of)i(A.)p eop
+%%Page: 22 22
+22 21 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(22)120
+132 y Fh(ANSYM)178 b Fl(Computes)35 b(the)g(F)l(rob)q(enius)g(norm)g(of)h
+(the)f(symmetri)o(c)d(and)k(non-)510 192 y(symmetri)o(c)10
+b(parts)k(of)f(A,)g(computes)f(the)g(n)o(um)o(b)q(er)g(of)h(matc)o(hing)f
+(elemen)o(ts)510 252 y(in)k(symme)o(try)d(and)j(the)g(relativ)o(e)e(symmetry)
+f(matc)o(h.)19 b(The)d(routine)g(AN-)510 312 y(SYM)22 b(pro)o(vides)g(some)f
+(information)h(on)h(the)f(degree)g(of)h(symmetr)o(y)d(of)510
+372 y(A.)120 474 y Fh(DIST)-5 b(AIJ)169 b Fl(Computes)19 b(the)g(a)o(v)o
+(erage)g(distance)g(of)g(a\(i,j\))g(from)f(diag)i(and)g(standard)510
+534 y(deviation)c(for)g(this)g(a)o(v)o(erage.)120 642 y Fh(SKYLINE)137
+b Fl(Computes)16 b(the)g(n)o(um)o(b)q(er)e(of)j(nonzeros)f(in)g(the)g
+(skyline)f(storage.)120 763 y Fh(DISTDIA)n(G)108 b Fl(Computes)16
+b(the)g(n)o(um)o(b)q(ers)e(of)j(elemen)o(ts)c(in)j(eac)o(h)g(diagonal.)120
+883 y Fh(BANDP)-5 b(AR)g(T)70 b Fl(Computes)19 b(the)h(bandwidth)h(of)f(the)g
+(banded)g(matrix,)f(whic)o(h)g(con)o(tains)510 943 y('np)q(er')d(p)q(ercen)o
+(t)f(of)i(the)f(original)g(matrix.)120 1051 y Fh(NONZ)p 287
+1051 17 2 v 20 w(LUD)86 b Fl(Computes)20 b(the)h(n)o(um)o(b)q(er)e(of)j
+(nonzero)f(elemen)o(ts)d(in)j(strict)f(lo)o(w)o(er)g(part,)510
+1112 y(strict)c(upp)q(er)g(part,)g(and)h(main)e(diagonal.)120
+1223 y Fh(A)-6 b(VNZ)p 279 1223 V 21 w(COL)97 b Fl(Computes)14
+b(a)o(v)o(erage)g(n)o(um)o(b)q(er)e(of)j(nonzero)g(elemen)o(ts/colum)o(n)c
+(and)k(stan-)510 1283 y(dard)i(deviation)f(for)g(the)g(a)o(v)o(erage.)120
+1391 y Fh(VBRINF)n(O)126 b Fl(Prin)o(ts)16 b(information)f(ab)q(out)j
+(matrices)c(in)i(v)m(ariable)g(blo)q(c)o(k)g(ro)o(w)g(format.)60
+1618 y Fk(7)83 b(Matrix)27 b(generation)g(routines)60 1727
+y Fl(One)c(of)h(the)g(di\016culties)d(encoun)o(tered)i(when)h(testing)f(and)h
+(comparing)f(n)o(umerical)e(metho)q(ds,)60 1788 y(is)h(that)h(it)g(is)f
+(sometimes)e(di\016cult)h(to)i(guaran)o(tee)g(that)g(the)f(matrices)f
+(compared)g(are)i(indeed)60 1848 y(iden)o(tical.)28 b(Ev)o(en)18
+b(though)i(a)g(pap)q(er)f(ma)o(y)f(giv)o(e)g(full)g(details)g(on)i(the)e
+(test)h(problems)f(considered,)60 1908 y(programming)d(errors)h(or)g
+(di\013erences)f(in)h(co)q(ding)h(ma)o(y)d(lead)i(to)h(the)e(incorrect)g
+(matrices)g(and)h(the)60 1968 y(incorrect)h(conclusions.)28
+b(This)18 b(has)h(often)g(happ)q(ened)g(in)f(the)g(past)h(and)g(is)f(lik)o
+(ely)e(to)i(b)q(e)h(a)o(v)o(oided)60 2028 y(if)f(the)h(matrices)d(w)o(ere)i
+(generated)h(with)f(exactly)g(the)g(same)g(co)q(de.)28 b(The)19
+b(mo)q(dule)f(MA)l(TGEN)g(of)60 2088 y(SP)l(ARSKIT)e(includes)f(sev)o(eral)g
+(matrix)g(generation)h(routines.)60 2233 y Fi(7.1)70 b(Finite)20
+b(Di\013erence)h(Matrices)120 2325 y Fl(1.)j(Scalar)16 b(5-p)q(oin)o(t)h(and)
+g(7-p)q(oin)o(t)g(matrices)d(arising)i(from)f(discretization)g(of)i(the)f
+(elliptic)e(t)o(yp)q(e)182 2385 y(equation:)182 2517 y Fj(Lu)g
+Fl(=)327 2484 y Fj(@)p 313 2506 57 2 v 313 2552 a(@)s(x)375
+2517 y Fl(\()p Fj(a)438 2484 y(@)p 425 2506 V 425 2552 a(@)s(x)485
+2517 y(u)p Fl(\))8 b(+)603 2484 y Fj(@)p 590 2506 55 2 v 590
+2552 a(@)s(y)649 2517 y Fl(\()p Fj(b)707 2484 y(@)p 694 2506
+V 694 2552 a(@)s(y)753 2517 y(u)p Fl(\))g(+)870 2484 y Fj(@)p
+857 2506 54 2 v 857 2552 a(@)s(z)916 2517 y Fl(\()p Fj(c)973
+2484 y(@)p 961 2506 V 961 2552 a(@)s(z)1019 2517 y(u)p Fl(\))g(+)1138
+2484 y Fj(@)p 1124 2506 57 2 v 1124 2552 a(@)s(x)1185 2517
+y Fl(\()p Fj(du)p Fl(\))g(+)1347 2484 y Fj(@)p 1334 2506 55
+2 v 1334 2552 a(@)s(y)1393 2517 y Fl(\()p Fj(eu)p Fl(\))g(+)1552
+2484 y Fj(@)p 1539 2506 54 2 v 1539 2552 a(@)s(z)1598 2517
+y Fl(\()p Fj(f)d(u)p Fl(\))j(+)g Fj(g)r(u)k Fl(=)i Fj(hu)1858
+2603 y Fl(\(1\))p eop
+%%Page: 23 23
+23 22 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(23)60
+204 y Fa(*)25 b(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g
+(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)h(*)f(*)g(*)g
+(*)h(*)f(*)60 264 y(*)g(UNSYMMETRIC)d(MATRIX)h(FROM)h(PORES)1101
+b(*)60 325 y(*)512 b(Key)25 b(=)g(PORES)f(2)51 b(,)25 b(Type)f(=)h(RUA)666
+b(*)60 385 y(*)25 b(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f
+(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)h(*)f(*)g
+(*)g(*)h(*)f(*)163 445 y(*)50 b(Dimension)23 b(N)973 b(=)180
+b(1224)49 b(*)163 505 y(*)h(Number)24 b(of)h(nonzero)e(elements)586
+b(=)180 b(9613)49 b(*)163 565 y(*)h(Average)23 b(number)h(of)h(nonzero)e
+(elements/C)o(ol)o(umn)201 b(=)128 b(7.8538)49 b(*)163 625
+y(*)h(Standard)23 b(deviation)f(for)j(above)f(average)330 b(=)128
+b(5.4337)49 b(*)163 686 y(*)h(Nonzero)23 b(elements)g(in)i(strict)f(lower)f
+(part)306 b(=)180 b(4384)49 b(*)163 746 y(*)h(Nonzero)23 b(elements)g(in)i
+(strict)f(upper)f(part)306 b(=)180 b(4005)49 b(*)163 806 y(*)h(Nonzero)23
+b(elements)g(in)i(main)f(diagonal)407 b(=)180 b(1224)49 b(*)163
+866 y(*)h(Weight)24 b(of)h(longest)e(column)638 b(=)231 b(30)50
+b(*)163 926 y(*)g(Weight)24 b(of)h(shortest)d(column)613 b(=)256
+b(2)51 b(*)163 987 y(*)f(Weight)24 b(of)h(longest)e(row)716
+b(=)231 b(16)50 b(*)163 1047 y(*)g(Weight)24 b(of)h(shortest)d(row)691
+b(=)256 b(5)51 b(*)163 1107 y(*)f(Matching)23 b(elements)g(in)i(symmetry)509
+b(=)180 b(6358)49 b(*)163 1167 y(*)h(Relative)23 b(Symmetry)g(Match)h
+(\(symmetry)o(=1\))329 b(=)128 b(0.6614)49 b(*)163 1227 y(*)h(Average)23
+b(distance)g(of)i(a\(i,j\))49 b(from)24 b(diag.)280 b(=)51
+b(0.615E+02)d(*)163 1288 y(*)i(Standard)23 b(deviation)f(for)j(above)f
+(average)330 b(=)51 b(0.103E+03)d(*)163 1348 y(*--------)o(--)o(---)o(---)o
+(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o
+(---)o(---)o(---)o(--)o(---)o(*)163 1408 y(*)i(Frobenius)23
+b(norm)h(of)h(A)768 b(=)51 b(0.150E+09)d(*)163 1468 y(*)i(Frobenius)23
+b(norm)h(of)h(symmetric)d(part)434 b(=)51 b(0.103E+09)d(*)163
+1528 y(*)i(Frobenius)23 b(norm)h(of)h(nonsymmetr)o(ic)d(part)357
+b(=)51 b(0.980E+08)d(*)163 1589 y(*)i(Maximum)23 b(element)h(in)g(A)743
+b(=)51 b(0.378E+08)d(*)163 1649 y(*)i(Percentage)22 b(of)j(weakly)f
+(diagonall)o(y)f(dominant)f(rows)101 b(=)51 b(0.490E-02)d(*)163
+1709 y(*)i(Percentage)22 b(of)j(weakly)f(diagonall)o(y)f(dominant)f(columns)h
+(=)51 b(0.481E+00)d(*)163 1769 y(*--------)o(--)o(---)o(---)o(---)o(--)o(---)
+o(---)o(---)o(--)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o
+(--)o(---)o(*)163 1829 y(*)i(Lower)24 b(bandwidth)48 b(\(max:)24
+b(i-j,)g(a\(i,j\))g(.ne.)g(0\))178 b(=)205 b(470)50 b(*)163
+1890 y(*)g(Upper)24 b(bandwidth)48 b(\(max:)24 b(j-i,)g(a\(i,j\))g(.ne.)g
+(0\))178 b(=)205 b(471)50 b(*)163 1950 y(*)g(Maximum)23 b(Bandwidth)817
+b(=)205 b(736)50 b(*)163 2010 y(*)g(Average)23 b(Bandwidth)817
+b(=)51 b(0.190E+03)d(*)163 2070 y(*)i(Number)24 b(of)h(nonzeros)d(in)j
+(skyline)e(storage)305 b(=)128 b(342833)49 b(*)163 2130 y(*)h(90\045)25
+b(of)g(matrix)e(is)i(in)g(the)g(band)f(of)h(width)305 b(=)205
+b(527)50 b(*)163 2190 y(*)g(80\045)25 b(of)g(matrix)e(is)i(in)g(the)g(band)f
+(of)h(width)305 b(=)205 b(145)50 b(*)163 2251 y(*)g(The)25
+b(total)f(number)f(of)i(nonvoid)e(diagonals)f(is)230 b(=)205
+b(367)50 b(*)163 2311 y(*)g(The)25 b(10)g(most)f(important)e(diagonals)h(are)
+h(\(offsets\))99 b(:)333 b(*)163 2371 y(*)127 b(0)102 b(-1)128
+b(1)g(2)102 b(-2)127 b(3)102 b(32)77 b(264)50 b(-264)75 b(-32)127
+b(*)163 2431 y(*)50 b(The)25 b(accumulate)o(d)e(percentag)o(es)f(they)i
+(represent)f(are)75 b(:)333 b(*)163 2491 y(*)50 b(12.7)g(24.6)g(31.7)g(37.9)g
+(43.6)f(49.0)h(52.4)g(55.7)g(58.6)g(61.4)126 b(*)163 2552 y(*--------)o(--)o
+(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(--)o(---)o(---)o
+(---)o(--)o(---)o(---)o(---)o(--)o(---)o(*)163 2612 y(*)50
+b(The)25 b(matrix)e(does)i(not)f(have)g(a)i(block)d(structure)535
+b(*)163 2672 y(*--------)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o
+(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(*)568
+2828 y Fl(Figure)15 b(3:)22 b(Sample)15 b(output)i(from)e(Info1.ex)p
+eop
+%%Page: 24 24
+24 23 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(24)60
+376 y Fa(*)25 b(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g
+(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)h(*)f(*)g(*)g
+(*)h(*)f(*)60 436 y(*)g(SYMMETRIC)e(PATTERN)g(FROM)h(CANNES,LUC)o(IE)o(N)f
+(MARRO,JUN)o(E)g(1981.)485 b(*)60 497 y(*)512 b(Key)25 b(=)g(CAN)g(1072)f(,)h
+(Type)f(=)h(PSA)666 b(*)60 557 y(*)25 b(No)g(values)f(provided)e(-)k
+(Informati)o(on)c(on)j(pattern)e(only)614 b(*)60 617 y(*)25
+b(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)h(*)f(*)g(*)g
+(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)g(*)h(*)f(*)g(*)g(*)h(*)f(*)163
+677 y(*)50 b(Dimension)23 b(N)973 b(=)180 b(1072)49 b(*)163
+737 y(*)h(Number)24 b(of)h(nonzero)e(elements)586 b(=)180 b(6758)49
+b(*)163 798 y(*)h(Average)23 b(number)h(of)h(nonzero)e(elements/C)o(ol)o(umn)
+201 b(=)128 b(6.3041)49 b(*)163 858 y(*)h(Standard)23 b(deviation)f(for)j
+(above)f(average)330 b(=)128 b(6.2777)49 b(*)163 918 y(*)h(Nonzero)23
+b(elements)g(in)i(strict)f(lower)f(part)306 b(=)180 b(5686)49
+b(*)163 978 y(*)h(Nonzero)23 b(elements)g(in)i(strict)f(upper)f(part)306
+b(=)180 b(5686)49 b(*)163 1038 y(*)h(Nonzero)23 b(elements)g(in)i(main)f
+(diagonal)407 b(=)180 b(1072)49 b(*)163 1099 y(*)h(Weight)24
+b(of)h(longest)e(column)638 b(=)231 b(39)50 b(*)163 1159 y(*)g(Weight)24
+b(of)h(shortest)d(column)613 b(=)256 b(4)51 b(*)163 1219 y(*)f(Matching)23
+b(elements)g(in)i(symmetry)509 b(=)180 b(6758)49 b(*)163 1279
+y(*)h(Relative)23 b(Symmetry)g(Match)h(\(symmetry)o(=1\))329
+b(=)128 b(1.0000)49 b(*)163 1339 y(*)h(Average)23 b(distance)g(of)i(a\(i,j\))
+49 b(from)24 b(diag.)280 b(=)51 b(0.110E+03)d(*)163 1399 y(*)i(Standard)23
+b(deviation)f(for)j(above)f(average)330 b(=)51 b(0.174E+03)d(*)163
+1460 y(*--------)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o
+(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(*)163
+1520 y(*)i(Lower)24 b(bandwidth)48 b(\(max:)24 b(i-j,)g(a\(i,j\))g(.ne.)g
+(0\))178 b(=)256 b(0)51 b(*)163 1580 y(*)f(Upper)24 b(bandwidth)48
+b(\(max:)24 b(j-i,)g(a\(i,j\))g(.ne.)g(0\))178 b(=)i(1048)49
+b(*)163 1640 y(*)h(Maximum)23 b(Bandwidth)817 b(=)180 b(1049)49
+b(*)163 1700 y(*)h(Average)23 b(Bandwidth)817 b(=)51 b(0.117E+03)d(*)163
+1761 y(*)i(Number)24 b(of)h(nonzeros)d(in)j(skyline)e(storage)305
+b(=)128 b(278320)49 b(*)163 1821 y(*)h(90\045)25 b(of)g(matrix)e(is)i(in)g
+(the)g(band)f(of)h(width)305 b(=)205 b(639)50 b(*)163 1881
+y(*)g(80\045)25 b(of)g(matrix)e(is)i(in)g(the)g(band)f(of)h(width)305
+b(=)205 b(343)50 b(*)163 1941 y(*)g(The)25 b(total)f(number)f(of)i(nonvoid)e
+(diagonals)f(is)230 b(=)205 b(627)50 b(*)163 2001 y(*)g(The)h(5)25
+b(most)f(important)e(diagonals)h(are)h(\(offsets\))99 b(:)333
+b(*)163 2062 y(*)127 b(0)h(1)g(2)g(3)g(4)896 b(*)163 2122 y(*)50
+b(The)25 b(accumulate)o(d)e(percentag)o(es)f(they)i(represent)f(are)75
+b(:)333 b(*)163 2182 y(*)50 b(15.9)g(24.7)g(29.7)g(33.9)g(36.3)895
+b(*)163 2242 y(*--------)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o
+(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(*)163
+2302 y(*)50 b(The)25 b(matrix)e(does)i(not)f(have)g(a)i(block)d(structure)535
+b(*)163 2363 y(*--------)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o
+(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(--)o(---)o(*)255
+2518 y Fl(Figure)16 b(4:)22 b(Sample)14 b(output)j(from)e(Info1.ex)h(for)h
+(matrix)d(with)i(pattern)h(only)p eop
+%%Page: 25 25
+25 24 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(25)182
+132 y(on)15 b(rectangular)g(regions)f(with)h(general)f(mixed)e(t)o(yp)q(e)i
+(b)q(oundary)i(conditions)e(of)h(the)f(follo)o(w-)182 192 y(ing)i(form)896
+274 y Fj(\013)933 240 y(@)s(u)p 932 262 58 2 v 932 308 a(@)s(n)1006
+274 y Fl(+)11 b Fj(\014)s(u)h Fl(=)i Fj(\015)182 374 y Fl(The)e(user)g(pro)o
+(vides)f(the)h(functions)g Fj(a;)c(b;)g(c;)g(:::;)g(h)p Fl(,)i
+Fj(\014)s(;)e(\015)14 b Fl(and)f Fj(\013)f Fl(is)g(a)g(constan)o(t)h(on)f
+(eac)o(h)g(b)q(ound-)182 434 y(ary)18 b(surface.)25 b(The)18
+b(resulting)f(matrix)f(is)h(in)g(general)h(sparse)g(format,)f(p)q(ossibly)h
+(prin)o(ted)e(in)182 494 y(a)h(\014le)e(in)h(the)g(H/B)g(format.)182
+575 y(There)i(is)g(a)h(switc)o(h)e(in)h(the)h(subroutine)f(whic)o(h)g(mak)o
+(es)e(it)i(p)q(ossible)h(to)f(c)o(ho)q(ose)h(b)q(et)o(w)o(een)f(a)182
+635 y(strict)e(cen)o(tered)g(di\013erence)g(t)o(yp)q(e)g(of)i
+(discretization,)d(or)j(an)f(up)o(wind)g(sc)o(heme)e(for)i(the)g(\014rst)182
+695 y(order)f(deriv)m(ativ)o(es.)120 797 y(2.)24 b(Blo)q(c)o(k)16
+b(5-p)q(oin)o(t)i(and)f(7-p)q(oin)o(t)h(matrices)d(arising)j(from)e
+(discretization)g(of)h(the)g(elliptic)e(t)o(yp)q(e)182 857
+y(equation)h(\(1\))h(in)g(whic)o(h)e Fj(u)i Fl(is)f(no)o(w)h(a)g(v)o(ector)f
+(of)h Fj(nf)5 b(r)q(ee)16 b Fl(comp)q(onen)o(ts,)g(and)h Fj(a;)8
+b(b;)g(c;)g(:::;)g(g)16 b Fl(are)182 918 y Fj(nf)5 b(r)q(ee)11
+b Fg(\002)g Fj(nf)5 b(r)q(ee)16 b Fl(matrices)e(pro)o(vided)i(b)o(y)g(the)g
+(user.)60 1062 y Fi(7.2)70 b(Finite)20 b(Elemen)n(t)h(Matrices)60
+1154 y Fl(Finite)15 b(elemen)o(t)e(matrices)h(created)i(from)f(the)h(con)o(v)
+o(ection-di\013usion)g(t)o(yp)q(e)g(problem)736 1264 y Fg(\000)10
+b(r)p Fj(:)p Fl(\()p Fj(K)t Fg(r)p Fj(u)o Fl(\))h(+)g Fj(C)t
+Fg(r)p Fj(u)h Fl(=)i Fj(f)608 b Fl(\(2\))60 1374 y(on)15 b(a)f(domain)f
+Fj(D)j Fl(with)e(Diric)o(hlet)e(b)q(oundary)k(conditions.)k(A)14
+b(coarse)h(initial)d(domain)i(is)g(describ)q(ed)60 1435 y(b)o(y)j(the)g(user)
+g(and)h(the)f(co)q(de)g(do)q(es)h(an)g(arbitrary)f(user-sp)q(eci\014ed)g(n)o
+(um)o(b)q(er)e(of)j(re\014nemen)o(ts)d(of)i(the)60 1495 y(grid)g(and)h(assem)
+o(bles)d(the)i(matrix,)e(in)i(CSR)g(format.)23 b(Linear)18
+b(triangular)f(elemen)o(ts)d(are)k(used.)23 b(If)60 1555 y(only)17
+b(the)f(matrix)f(is)i(desired)f(the)g(heat)h(source)g Fj(f)22
+b Fl(can)17 b(b)q(e)g(zero.)22 b(Arbitrary)16 b(grids)h(can)g(b)q(e)g(input,)
+60 1615 y(but)i(the)f(user)h(ma)o(y)e(also)j(tak)o(e)e(adv)m(an)o(tage)i(of)f
+(nine)f(initial)g(grids)h(supplied)f(b)o(y)g(the)h(pac)o(k)m(age)g(for)60
+1675 y(simple)14 b(test)i(problems.)120 1735 y(Tw)o(o)i(examples)d(of)j
+(meshes)e(and)i(the)g(corresp)q(onding)g(assem)o(ble)e(matrices)f(are)j(sho)o
+(wn)g(in)f(the)60 1796 y(follo)o(wing)c(t)o(w)o(o)h(pairs)g(of)f(\014gures:)
+21 b(the)13 b(\014rst)h(pair)g(of)f(\014gures)i(are)e(the)g(mesh)g(and)h
+(assem)o(bled)e(matrix)60 1856 y(with)22 b(mesh)f(n)o(um)o(b)q(er)g(8)i(and)g
+(re\014nemen)o(t)d(1;)26 b(the)c(second)g(pair)h(of)g(\014gures)g(are)f(the)g
+(mesh)f(and)60 1916 y(assem)o(bled)15 b(matrix)f(with)i(mesh)f(n)o(um)o(b)q
+(er)g(9)h(and)h(re\014nemen)o(t)d(1.)60 1974 y @beginspecial
+40 @vscale 40 @hscale -20 @hoffset -220 @voffset @setspecial
+%%BeginDocument: msh.ps.8
+%!
+%%Creator: PSPLTM routine
+%%BoundingBox: 214.79 10.19 1339.69 1151.29
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 8.33333E-02 cm scalefont setfont
+ 10.7950 cm 0.500000 cm moveto
+(Finite element mesh) Cshow
+ 3.17500 cm 0.333333 cm translate
+ 15.2400 cm 6.00000 div dup scale
+ 0.01 setlinewidth
+ 0.00 0.00 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 6.00 0.00 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 5.80 5.77 lineto
+closepath stroke
+ 6.00 6.00 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.00 6.00 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.66 3.05 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.60 3.00 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.75 3.00 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 4.91 3.00 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.10 3.00 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.30 3.00 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.52 3.00 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 6.00 3.00 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.58 3.06 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.66 3.05 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.73 3.09 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.89 3.13 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 5.06 3.16 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.26 3.21 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.47 3.25 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.70 3.30 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 6.00 3.30 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.53 3.12 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.66 3.18 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.81 3.24 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.97 3.31 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 5.15 3.39 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.34 3.48 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.55 3.57 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 6.00 3.68 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.45 3.16 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.57 3.25 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.69 3.34 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.83 3.44 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.98 3.55 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 5.14 3.67 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.32 3.80 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.52 3.94 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.74 4.10 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 6.00 4.10 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.36 3.20 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.44 3.30 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.54 3.40 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.65 3.52 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.77 3.66 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.90 3.80 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 5.04 3.96 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 5.20 4.13 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.37 4.33 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.56 4.54 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 6.00 4.77 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.25 3.22 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.31 3.33 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.38 3.45 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.46 3.58 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.54 3.72 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.64 3.88 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.74 4.06 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.85 4.25 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.97 4.46 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 5.11 4.70 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 5.25 4.95 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.42 5.24 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.80 5.77 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 5.60 5.55 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 6.00 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.15 3.23 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.18 3.34 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.23 3.47 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.27 3.60 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.32 3.75 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.37 3.92 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.43 4.10 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.50 4.31 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.57 4.53 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.65 4.77 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.74 5.04 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.83 5.33 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.94 6.00 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.23 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 4.06 3.34 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 4.07 3.47 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 4.09 3.61 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 4.10 3.76 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 4.12 3.93 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 4.14 4.12 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 4.16 4.32 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 4.19 4.54 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 4.21 4.79 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 4.24 5.06 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 4.27 5.36 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 4.31 6.00 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.95 3.23 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.94 3.35 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.93 3.47 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.91 3.61 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.90 3.76 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.88 3.93 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.86 4.12 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.84 4.32 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.81 4.55 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.79 4.79 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.76 5.06 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.73 5.36 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.69 6.00 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.85 3.23 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.81 3.35 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.77 3.47 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.72 3.61 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.67 3.77 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.62 3.94 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.56 4.13 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.49 4.33 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.42 4.56 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 3.34 4.80 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 3.25 5.08 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 3.15 5.38 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 3.04 6.00 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.73 3.24 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.66 3.35 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.58 3.48 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.50 3.63 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.41 3.78 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.31 3.96 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.20 4.15 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 3.08 4.35 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 2.95 4.58 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.80 4.84 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.64 5.12 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 2.47 5.42 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 2.27 6.00 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.57 3.24 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.46 3.36 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.34 3.49 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.21 3.64 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.07 3.80 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.91 3.97 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.73 4.17 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.54 4.38 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.33 4.61 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 2.10 4.87 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.85 5.15 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.57 5.46 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 1.26 6.00 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.35 3.24 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.19 3.35 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.01 3.48 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.82 3.62 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.60 3.78 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.36 3.95 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 2.10 4.14 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.82 4.35 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.50 4.58 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 1.15 4.83 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.77 5.11 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.00 5.42 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 3.07 3.21 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.83 3.31 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.58 3.43 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.29 3.55 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 1.98 3.69 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.64 3.84 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.26 4.01 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 0.85 4.19 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 0.00 4.40 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.70 3.14 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.38 3.21 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.02 3.28 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.63 3.37 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.20 3.46 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.73 3.56 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.00 3.67 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.28 3.00 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 1.85 3.00 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.38 3.00 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 0.86 3.00 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.00 3.00 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.54 2.83 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.77 2.78 lineto
+closepath stroke
+ 2.70 2.86 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.54 2.83 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.38 2.79 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.02 2.72 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.63 2.63 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.20 2.54 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 0.73 2.44 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.00 2.33 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.13 2.72 lineto
+closepath stroke
+ 3.07 2.79 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.77 2.78 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 2.83 2.69 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.58 2.57 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.29 2.45 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 1.98 2.31 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 1.64 2.16 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.26 1.99 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 0.85 1.81 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.00 1.60 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.46 2.76 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.35 2.76 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.13 2.72 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.19 2.65 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.01 2.52 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 2.82 2.38 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.60 2.22 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.36 2.05 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.10 1.86 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 1.82 1.65 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 1.50 1.42 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.15 1.17 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 0.77 0.89 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.00 0.58 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.46 2.76 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.57 2.76 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.46 2.64 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.34 2.51 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.21 2.36 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.07 2.20 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 2.91 2.03 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 2.73 1.83 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.54 1.62 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.33 1.39 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.10 1.13 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.85 0.85 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 1.57 0.54 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 1.26 0.00 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.73 2.76 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.66 2.65 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.58 2.52 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.50 2.37 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.41 2.22 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.31 2.04 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.20 1.85 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.08 1.65 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 2.80 1.16 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 2.64 0.88 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 2.47 0.58 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.85 2.77 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.81 2.65 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.77 2.53 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.72 2.39 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.67 2.23 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.62 2.06 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.56 1.87 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.49 1.67 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.42 1.44 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.34 1.20 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.25 0.92 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.15 0.62 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.04 0.00 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 3.95 2.77 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 3.94 2.65 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 3.93 2.53 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 3.91 2.39 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 3.90 2.24 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 3.88 2.07 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 3.86 1.88 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 3.84 1.68 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 3.81 1.45 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 3.79 1.21 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 3.76 0.94 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 3.73 0.64 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.69 0.00 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.77 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.06 2.66 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.07 2.53 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.09 2.39 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.10 2.24 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.12 2.07 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.14 1.88 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.16 1.68 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.19 1.46 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.21 1.21 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.24 0.94 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.27 0.64 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.31 0.00 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.15 2.77 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.18 2.66 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.23 2.53 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.27 2.40 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.32 2.25 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.37 2.08 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.43 1.90 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.50 1.69 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.57 1.47 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.65 1.23 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.74 0.96 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 4.83 0.67 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 4.94 0.00 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.25 2.78 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.31 2.67 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.38 2.55 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.46 2.42 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.54 2.28 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.64 2.12 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.74 1.94 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 4.85 1.75 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 4.97 1.54 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.11 1.30 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.25 1.05 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.42 0.76 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.60 0.45 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.60 0.00 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.36 2.80 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.44 2.70 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.54 2.60 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.65 2.48 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.77 2.34 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.90 2.20 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 5.04 2.04 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.20 1.87 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.37 1.67 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.56 1.46 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 6.00 1.23 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.45 2.84 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.57 2.75 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.69 2.66 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.83 2.56 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.98 2.45 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.14 2.33 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.32 2.20 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.52 2.06 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.74 1.90 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 6.00 1.90 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.53 2.88 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.66 2.82 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.81 2.76 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.97 2.69 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.15 2.61 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.34 2.52 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.55 2.43 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 6.00 2.32 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.58 2.94 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.73 2.91 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.89 2.87 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 5.06 2.84 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.26 2.79 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.47 2.75 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.70 2.70 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 6.00 2.70 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.74 3.05 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.59 3.03 lineto
+closepath stroke
+ 4.66 3.05 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.68 3.00 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.74 3.05 moveto
+ 4.82 3.06 lineto
+closepath stroke
+ 4.68 3.00 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.68 3.00 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.59 3.03 moveto
+ 4.65 3.08 lineto
+closepath stroke
+ 4.65 3.08 moveto
+ 4.62 3.12 lineto
+closepath stroke
+ 4.65 3.08 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.90 3.06 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.82 3.06 moveto
+ 4.81 3.11 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.83 3.00 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 4.90 3.06 moveto
+ 4.99 3.08 lineto
+closepath stroke
+ 4.83 3.00 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.83 3.00 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 4.81 3.11 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.81 3.11 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 5.08 3.08 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 4.99 3.08 moveto
+ 4.98 3.15 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.01 3.00 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.08 3.08 moveto
+ 5.18 3.10 lineto
+closepath stroke
+ 5.01 3.00 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.01 3.00 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 4.98 3.15 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.98 3.15 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.28 3.10 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.18 3.10 moveto
+ 5.16 3.18 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.20 3.00 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.28 3.10 moveto
+ 5.38 3.13 lineto
+closepath stroke
+ 5.20 3.00 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.20 3.00 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.16 3.18 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 5.16 3.18 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.49 3.13 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.38 3.13 moveto
+ 5.36 3.23 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.41 3.00 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.49 3.13 moveto
+ 5.61 3.15 lineto
+closepath stroke
+ 5.41 3.00 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.41 3.00 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.36 3.23 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.36 3.23 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.85 3.15 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.61 3.15 moveto
+ 5.59 3.28 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 5.76 3.00 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 5.85 3.30 lineto
+closepath stroke
+ 5.85 3.15 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 5.76 3.00 moveto
+ 5.85 2.85 lineto
+closepath stroke
+ 5.76 3.00 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 5.59 3.28 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.59 3.28 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 6.00 3.15 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 5.85 3.30 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.70 3.13 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.56 3.09 lineto
+closepath stroke
+ 4.62 3.12 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.70 3.13 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.70 3.13 moveto
+ 4.77 3.17 lineto
+closepath stroke
+ 4.56 3.09 moveto
+ 4.60 3.15 lineto
+closepath stroke
+ 4.60 3.15 moveto
+ 4.55 3.18 lineto
+closepath stroke
+ 4.60 3.15 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.77 3.17 moveto
+ 4.85 3.18 lineto
+closepath stroke
+ 4.77 3.17 moveto
+ 4.74 3.21 lineto
+closepath stroke
+ 4.85 3.18 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 4.85 3.18 moveto
+ 4.93 3.22 lineto
+closepath stroke
+ 4.74 3.21 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.74 3.21 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.93 3.22 moveto
+ 5.02 3.24 lineto
+closepath stroke
+ 4.93 3.22 moveto
+ 4.89 3.28 lineto
+closepath stroke
+ 5.02 3.24 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.02 3.24 moveto
+ 5.10 3.28 lineto
+closepath stroke
+ 4.89 3.28 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.89 3.28 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 5.10 3.28 moveto
+ 5.20 3.30 lineto
+closepath stroke
+ 5.10 3.28 moveto
+ 5.06 3.35 lineto
+closepath stroke
+ 5.20 3.30 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.20 3.30 moveto
+ 5.30 3.34 lineto
+closepath stroke
+ 5.06 3.35 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 5.06 3.35 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 5.30 3.34 moveto
+ 5.41 3.36 lineto
+closepath stroke
+ 5.30 3.34 moveto
+ 5.24 3.44 lineto
+closepath stroke
+ 5.41 3.36 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.41 3.36 moveto
+ 5.51 3.41 lineto
+closepath stroke
+ 5.24 3.44 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 5.24 3.44 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.51 3.41 moveto
+ 5.63 3.44 lineto
+closepath stroke
+ 5.51 3.41 moveto
+ 5.45 3.53 lineto
+closepath stroke
+ 5.63 3.44 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.63 3.44 moveto
+ 5.85 3.49 lineto
+closepath stroke
+ 5.45 3.53 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.45 3.53 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.85 3.49 moveto
+ 6.00 3.49 lineto
+closepath stroke
+ 5.85 3.49 moveto
+ 5.78 3.63 lineto
+closepath stroke
+ 5.78 3.63 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.78 3.63 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.61 3.21 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.49 3.14 lineto
+closepath stroke
+ 4.55 3.18 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.61 3.21 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.61 3.21 moveto
+ 4.68 3.26 lineto
+closepath stroke
+ 4.49 3.14 moveto
+ 4.51 3.21 lineto
+closepath stroke
+ 4.51 3.21 moveto
+ 4.50 3.27 lineto
+closepath stroke
+ 4.51 3.21 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.68 3.26 moveto
+ 4.75 3.29 lineto
+closepath stroke
+ 4.68 3.26 moveto
+ 4.63 3.29 lineto
+closepath stroke
+ 4.75 3.29 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.75 3.29 moveto
+ 4.82 3.34 lineto
+closepath stroke
+ 4.63 3.29 moveto
+ 4.62 3.37 lineto
+closepath stroke
+ 4.63 3.29 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.82 3.34 moveto
+ 4.90 3.37 lineto
+closepath stroke
+ 4.82 3.34 moveto
+ 4.76 3.39 lineto
+closepath stroke
+ 4.90 3.37 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 4.90 3.37 moveto
+ 4.97 3.43 lineto
+closepath stroke
+ 4.76 3.39 moveto
+ 4.74 3.48 lineto
+closepath stroke
+ 4.76 3.39 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.97 3.43 moveto
+ 5.06 3.47 lineto
+closepath stroke
+ 4.97 3.43 moveto
+ 4.90 3.49 lineto
+closepath stroke
+ 5.06 3.47 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.06 3.47 moveto
+ 5.14 3.53 lineto
+closepath stroke
+ 4.90 3.49 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.90 3.49 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 5.14 3.53 moveto
+ 5.24 3.57 lineto
+closepath stroke
+ 5.14 3.53 moveto
+ 5.06 3.61 lineto
+closepath stroke
+ 5.24 3.57 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.24 3.57 moveto
+ 5.33 3.64 lineto
+closepath stroke
+ 5.06 3.61 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 5.06 3.61 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 5.33 3.64 moveto
+ 5.44 3.69 lineto
+closepath stroke
+ 5.33 3.64 moveto
+ 5.23 3.73 lineto
+closepath stroke
+ 5.44 3.69 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.44 3.69 moveto
+ 5.54 3.76 lineto
+closepath stroke
+ 5.23 3.73 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 5.23 3.73 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.54 3.76 moveto
+ 5.76 3.81 lineto
+closepath stroke
+ 5.54 3.76 moveto
+ 5.42 3.87 lineto
+closepath stroke
+ 5.76 3.81 moveto
+ 5.63 4.02 lineto
+closepath stroke
+ 5.76 3.81 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.42 3.87 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 5.42 3.87 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.87 3.89 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.63 4.02 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.87 3.89 moveto
+ 5.87 4.10 lineto
+closepath stroke
+ 5.87 3.89 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 6.00 3.89 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.87 4.10 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.45 3.23 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.50 3.27 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.45 3.23 moveto
+ 4.40 3.25 lineto
+closepath stroke
+ 4.45 3.23 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.40 3.18 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.38 3.31 lineto
+closepath stroke
+ 4.40 3.25 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.55 3.33 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.62 3.37 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.55 3.33 moveto
+ 4.49 3.35 lineto
+closepath stroke
+ 4.49 3.35 moveto
+ 4.46 3.43 lineto
+closepath stroke
+ 4.49 3.35 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.67 3.43 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.74 3.48 moveto
+ 4.80 3.55 lineto
+closepath stroke
+ 4.67 3.43 moveto
+ 4.60 3.46 lineto
+closepath stroke
+ 4.60 3.46 moveto
+ 4.55 3.55 lineto
+closepath stroke
+ 4.60 3.46 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.80 3.55 moveto
+ 4.87 3.60 lineto
+closepath stroke
+ 4.80 3.55 moveto
+ 4.71 3.59 lineto
+closepath stroke
+ 4.87 3.60 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 4.87 3.60 moveto
+ 4.94 3.67 lineto
+closepath stroke
+ 4.71 3.59 moveto
+ 4.66 3.69 lineto
+closepath stroke
+ 4.71 3.59 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.94 3.67 moveto
+ 5.02 3.73 lineto
+closepath stroke
+ 4.94 3.67 moveto
+ 4.83 3.73 lineto
+closepath stroke
+ 5.02 3.73 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.02 3.73 moveto
+ 5.09 3.81 lineto
+closepath stroke
+ 4.83 3.73 moveto
+ 4.77 3.84 lineto
+closepath stroke
+ 4.83 3.73 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 5.09 3.81 moveto
+ 5.18 3.88 lineto
+closepath stroke
+ 5.09 3.81 moveto
+ 4.97 3.88 lineto
+closepath stroke
+ 5.18 3.88 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.18 3.88 moveto
+ 5.26 3.97 lineto
+closepath stroke
+ 4.97 3.88 moveto
+ 4.89 4.01 lineto
+closepath stroke
+ 4.97 3.88 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 5.26 3.97 moveto
+ 5.36 4.04 lineto
+closepath stroke
+ 5.26 3.97 moveto
+ 5.12 4.05 lineto
+closepath stroke
+ 5.36 4.04 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.36 4.04 moveto
+ 5.45 4.14 lineto
+closepath stroke
+ 5.12 4.05 moveto
+ 5.02 4.19 lineto
+closepath stroke
+ 5.12 4.05 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.45 4.14 moveto
+ 5.56 4.22 lineto
+closepath stroke
+ 5.45 4.14 moveto
+ 5.29 4.23 lineto
+closepath stroke
+ 5.56 4.22 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.56 4.22 moveto
+ 5.65 4.32 lineto
+closepath stroke
+ 5.29 4.23 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 5.29 4.23 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.65 4.32 moveto
+ 5.78 4.32 lineto
+closepath stroke
+ 5.65 4.32 moveto
+ 5.47 4.43 lineto
+closepath stroke
+ 5.78 4.32 moveto
+ 5.78 4.66 lineto
+closepath stroke
+ 5.78 4.32 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 5.47 4.43 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 5.47 4.43 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 6.00 4.44 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.78 4.66 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.34 3.26 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.38 3.31 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.34 3.26 moveto
+ 4.28 3.27 lineto
+closepath stroke
+ 4.34 3.26 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.30 3.21 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.25 3.33 lineto
+closepath stroke
+ 4.28 3.27 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.41 3.37 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.46 3.43 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.41 3.37 moveto
+ 4.35 3.39 lineto
+closepath stroke
+ 4.35 3.39 moveto
+ 4.30 3.46 lineto
+closepath stroke
+ 4.35 3.39 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.50 3.49 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.55 3.55 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.50 3.49 moveto
+ 4.42 3.51 lineto
+closepath stroke
+ 4.42 3.51 moveto
+ 4.36 3.59 lineto
+closepath stroke
+ 4.42 3.51 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.60 3.62 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.66 3.69 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.60 3.62 moveto
+ 4.50 3.65 lineto
+closepath stroke
+ 4.50 3.65 moveto
+ 4.43 3.74 lineto
+closepath stroke
+ 4.50 3.65 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.70 3.77 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.77 3.84 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.70 3.77 moveto
+ 4.59 3.80 lineto
+closepath stroke
+ 4.59 3.80 moveto
+ 4.50 3.90 lineto
+closepath stroke
+ 4.59 3.80 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.82 3.93 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.89 4.01 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 4.82 3.93 moveto
+ 4.69 3.97 lineto
+closepath stroke
+ 4.69 3.97 moveto
+ 4.58 4.08 lineto
+closepath stroke
+ 4.69 3.97 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 4.95 4.11 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 5.02 4.19 moveto
+ 5.09 4.30 lineto
+closepath stroke
+ 4.95 4.11 moveto
+ 4.79 4.15 lineto
+closepath stroke
+ 4.79 4.15 moveto
+ 4.67 4.28 lineto
+closepath stroke
+ 4.79 4.15 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 5.09 4.30 moveto
+ 5.17 4.40 lineto
+closepath stroke
+ 5.09 4.30 moveto
+ 4.91 4.36 lineto
+closepath stroke
+ 5.17 4.40 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.17 4.40 moveto
+ 5.24 4.51 lineto
+closepath stroke
+ 4.91 4.36 moveto
+ 4.77 4.50 lineto
+closepath stroke
+ 4.91 4.36 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 5.24 4.51 moveto
+ 5.33 4.62 lineto
+closepath stroke
+ 5.24 4.51 moveto
+ 5.04 4.58 lineto
+closepath stroke
+ 5.33 4.62 moveto
+ 5.18 4.83 lineto
+closepath stroke
+ 5.33 4.62 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.04 4.58 moveto
+ 4.88 4.73 lineto
+closepath stroke
+ 5.04 4.58 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 5.41 4.75 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 5.00 5.00 lineto
+closepath stroke
+ 5.18 4.83 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.41 4.75 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.41 4.75 moveto
+ 5.49 4.89 lineto
+closepath stroke
+ 5.49 4.89 moveto
+ 5.71 5.00 lineto
+closepath stroke
+ 5.49 4.89 moveto
+ 5.34 5.10 lineto
+closepath stroke
+ 5.71 5.00 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.71 5.00 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.34 5.10 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.34 5.10 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 6.00 5.39 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.80 6.00 lineto
+closepath stroke
+ 5.80 5.77 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 6.00 5.39 moveto
+ 5.80 5.16 lineto
+closepath stroke
+ 5.80 5.16 moveto
+ 5.51 5.39 lineto
+closepath stroke
+ 5.51 5.39 moveto
+ 5.21 5.44 lineto
+closepath stroke
+ 5.51 5.39 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.80 6.00 moveto
+ 5.60 5.77 lineto
+closepath stroke
+ 5.60 5.77 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.60 5.77 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.22 3.28 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.25 3.33 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.22 3.28 moveto
+ 4.17 3.28 lineto
+closepath stroke
+ 4.22 3.28 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.20 3.22 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.12 3.34 lineto
+closepath stroke
+ 4.17 3.28 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.27 3.40 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.30 3.46 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.27 3.40 moveto
+ 4.21 3.40 lineto
+closepath stroke
+ 4.21 3.40 moveto
+ 4.15 3.47 lineto
+closepath stroke
+ 4.21 3.40 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.33 3.53 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.36 3.59 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.33 3.53 moveto
+ 4.25 3.53 lineto
+closepath stroke
+ 4.25 3.53 moveto
+ 4.18 3.61 lineto
+closepath stroke
+ 4.25 3.53 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.39 3.67 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.43 3.74 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.39 3.67 moveto
+ 4.29 3.68 lineto
+closepath stroke
+ 4.29 3.68 moveto
+ 4.21 3.76 lineto
+closepath stroke
+ 4.29 3.68 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.46 3.82 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.50 3.90 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.46 3.82 moveto
+ 4.35 3.84 lineto
+closepath stroke
+ 4.35 3.84 moveto
+ 4.25 3.93 lineto
+closepath stroke
+ 4.35 3.84 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.53 3.99 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.58 4.08 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.53 3.99 moveto
+ 4.40 4.01 lineto
+closepath stroke
+ 4.40 4.01 moveto
+ 4.29 4.11 lineto
+closepath stroke
+ 4.40 4.01 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.62 4.18 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.67 4.28 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.62 4.18 moveto
+ 4.47 4.21 lineto
+closepath stroke
+ 4.47 4.21 moveto
+ 4.33 4.31 lineto
+closepath stroke
+ 4.47 4.21 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.71 4.39 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.77 4.50 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.71 4.39 moveto
+ 4.53 4.42 lineto
+closepath stroke
+ 4.53 4.42 moveto
+ 4.38 4.54 lineto
+closepath stroke
+ 4.53 4.42 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.81 4.62 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.88 4.73 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 4.81 4.62 moveto
+ 4.61 4.65 lineto
+closepath stroke
+ 4.61 4.65 moveto
+ 4.43 4.78 lineto
+closepath stroke
+ 4.61 4.65 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 4.92 4.87 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 5.00 5.00 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 4.92 4.87 moveto
+ 4.69 4.91 lineto
+closepath stroke
+ 4.69 4.91 moveto
+ 4.49 5.05 lineto
+closepath stroke
+ 4.69 4.91 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 5.12 5.29 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 5.27 5.77 lineto
+closepath stroke
+ 5.21 5.44 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 5.12 5.29 moveto
+ 5.04 5.14 lineto
+closepath stroke
+ 5.04 5.14 moveto
+ 4.78 5.19 lineto
+closepath stroke
+ 4.78 5.19 moveto
+ 4.55 5.35 lineto
+closepath stroke
+ 4.78 5.19 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 5.27 5.77 moveto
+ 4.88 5.67 lineto
+closepath stroke
+ 5.27 5.77 moveto
+ 5.27 6.00 lineto
+closepath stroke
+ 4.88 5.67 moveto
+ 4.62 6.00 lineto
+closepath stroke
+ 4.88 5.67 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.10 3.29 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.12 3.34 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.10 3.29 moveto
+ 4.05 3.29 lineto
+closepath stroke
+ 4.10 3.29 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.10 3.23 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.01 3.29 lineto
+closepath stroke
+ 4.05 3.29 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.13 3.41 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.15 3.47 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.13 3.41 moveto
+ 4.07 3.41 lineto
+closepath stroke
+ 4.07 3.41 moveto
+ 4.01 3.41 lineto
+closepath stroke
+ 4.07 3.41 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.16 3.54 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.18 3.61 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.16 3.54 moveto
+ 4.08 3.54 lineto
+closepath stroke
+ 4.08 3.54 moveto
+ 4.01 3.54 lineto
+closepath stroke
+ 4.08 3.54 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.19 3.68 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.21 3.76 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.19 3.68 moveto
+ 4.10 3.69 lineto
+closepath stroke
+ 4.10 3.69 moveto
+ 4.01 3.69 lineto
+closepath stroke
+ 4.10 3.69 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.22 3.84 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.25 3.93 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.22 3.84 moveto
+ 4.11 3.85 lineto
+closepath stroke
+ 4.11 3.85 moveto
+ 4.01 3.85 lineto
+closepath stroke
+ 4.11 3.85 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.26 4.02 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.29 4.11 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.26 4.02 moveto
+ 4.13 4.02 lineto
+closepath stroke
+ 4.13 4.02 moveto
+ 4.01 4.02 lineto
+closepath stroke
+ 4.13 4.02 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.30 4.21 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.33 4.31 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.30 4.21 moveto
+ 4.15 4.22 lineto
+closepath stroke
+ 4.15 4.22 moveto
+ 4.01 4.22 lineto
+closepath stroke
+ 4.15 4.22 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.34 4.43 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.38 4.54 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.34 4.43 moveto
+ 4.17 4.43 lineto
+closepath stroke
+ 4.17 4.43 moveto
+ 4.01 4.43 lineto
+closepath stroke
+ 4.17 4.43 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.39 4.66 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.43 4.78 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.39 4.66 moveto
+ 4.20 4.67 lineto
+closepath stroke
+ 4.20 4.67 moveto
+ 4.01 4.67 lineto
+closepath stroke
+ 4.20 4.67 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.45 4.92 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.49 5.05 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.45 4.92 moveto
+ 4.23 4.93 lineto
+closepath stroke
+ 4.23 4.93 moveto
+ 4.01 4.93 lineto
+closepath stroke
+ 4.23 4.93 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.50 5.20 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.55 5.35 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.50 5.20 moveto
+ 4.26 5.21 lineto
+closepath stroke
+ 4.26 5.21 moveto
+ 4.02 5.21 lineto
+closepath stroke
+ 4.26 5.21 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.62 6.00 moveto
+ 4.57 5.67 lineto
+closepath stroke
+ 4.57 5.67 moveto
+ 4.29 5.68 lineto
+closepath stroke
+ 4.29 5.68 moveto
+ 4.02 5.68 lineto
+closepath stroke
+ 4.29 5.68 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 4.00 3.23 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 4.01 3.29 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 4.00 3.34 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 4.01 3.41 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.00 3.34 moveto
+ 3.95 3.29 lineto
+closepath stroke
+ 3.95 3.29 moveto
+ 3.89 3.29 lineto
+closepath stroke
+ 3.95 3.29 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 4.00 3.47 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 4.01 3.54 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.00 3.47 moveto
+ 3.93 3.41 lineto
+closepath stroke
+ 3.93 3.41 moveto
+ 3.87 3.41 lineto
+closepath stroke
+ 3.93 3.41 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 4.00 3.61 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 4.01 3.69 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.00 3.61 moveto
+ 3.92 3.54 lineto
+closepath stroke
+ 3.92 3.54 moveto
+ 3.84 3.54 lineto
+closepath stroke
+ 3.92 3.54 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 4.00 3.76 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 4.01 3.85 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.00 3.76 moveto
+ 3.90 3.69 lineto
+closepath stroke
+ 3.90 3.69 moveto
+ 3.81 3.69 lineto
+closepath stroke
+ 3.90 3.69 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 4.00 3.93 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 4.01 4.02 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.00 3.93 moveto
+ 3.89 3.85 lineto
+closepath stroke
+ 3.89 3.85 moveto
+ 3.78 3.85 lineto
+closepath stroke
+ 3.89 3.85 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 4.00 4.12 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 4.01 4.22 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.00 4.12 moveto
+ 3.87 4.02 lineto
+closepath stroke
+ 3.87 4.02 moveto
+ 3.74 4.03 lineto
+closepath stroke
+ 3.87 4.02 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 4.00 4.32 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 4.01 4.43 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.00 4.32 moveto
+ 3.85 4.22 lineto
+closepath stroke
+ 3.85 4.22 moveto
+ 3.70 4.22 lineto
+closepath stroke
+ 3.85 4.22 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 4.00 4.54 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 4.01 4.67 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.00 4.54 moveto
+ 3.83 4.43 lineto
+closepath stroke
+ 3.83 4.43 moveto
+ 3.65 4.44 lineto
+closepath stroke
+ 3.83 4.43 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 4.00 4.79 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 4.01 4.93 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.00 4.79 moveto
+ 3.80 4.67 lineto
+closepath stroke
+ 3.80 4.67 moveto
+ 3.60 4.67 lineto
+closepath stroke
+ 3.80 4.67 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 4.00 5.06 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 4.02 5.21 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.00 5.06 moveto
+ 3.77 4.93 lineto
+closepath stroke
+ 3.77 4.93 moveto
+ 3.55 4.93 lineto
+closepath stroke
+ 3.77 4.93 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 4.00 5.36 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 4.00 6.00 lineto
+closepath stroke
+ 4.02 5.68 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 4.00 5.36 moveto
+ 3.74 5.21 lineto
+closepath stroke
+ 3.74 5.21 moveto
+ 3.49 5.22 lineto
+closepath stroke
+ 3.74 5.21 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 4.00 6.00 moveto
+ 3.71 5.68 lineto
+closepath stroke
+ 3.71 5.68 moveto
+ 3.42 5.69 lineto
+closepath stroke
+ 3.71 5.68 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.90 3.23 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.89 3.29 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.88 3.35 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.87 3.41 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.88 3.35 moveto
+ 3.83 3.29 lineto
+closepath stroke
+ 3.83 3.29 moveto
+ 3.77 3.29 lineto
+closepath stroke
+ 3.83 3.29 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.85 3.47 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.84 3.54 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.85 3.47 moveto
+ 3.79 3.41 lineto
+closepath stroke
+ 3.79 3.41 moveto
+ 3.72 3.41 lineto
+closepath stroke
+ 3.79 3.41 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.82 3.61 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.81 3.69 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.82 3.61 moveto
+ 3.75 3.54 lineto
+closepath stroke
+ 3.75 3.54 moveto
+ 3.65 3.55 lineto
+closepath stroke
+ 3.75 3.54 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.79 3.77 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.78 3.85 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.79 3.77 moveto
+ 3.70 3.69 lineto
+closepath stroke
+ 3.70 3.69 moveto
+ 3.59 3.70 lineto
+closepath stroke
+ 3.70 3.69 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.75 3.94 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.74 4.03 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.75 3.94 moveto
+ 3.65 3.85 lineto
+closepath stroke
+ 3.65 3.85 moveto
+ 3.52 3.86 lineto
+closepath stroke
+ 3.65 3.85 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.71 4.12 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.70 4.22 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.71 4.12 moveto
+ 3.59 4.03 lineto
+closepath stroke
+ 3.59 4.03 moveto
+ 3.44 4.04 lineto
+closepath stroke
+ 3.59 4.03 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.66 4.33 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.65 4.44 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.66 4.33 moveto
+ 3.53 4.23 lineto
+closepath stroke
+ 3.53 4.23 moveto
+ 3.35 4.24 lineto
+closepath stroke
+ 3.53 4.23 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.62 4.55 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.60 4.67 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.62 4.55 moveto
+ 3.46 4.44 lineto
+closepath stroke
+ 3.46 4.44 moveto
+ 3.25 4.46 lineto
+closepath stroke
+ 3.46 4.44 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.56 4.80 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.55 4.93 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.56 4.80 moveto
+ 3.38 4.68 lineto
+closepath stroke
+ 3.38 4.68 moveto
+ 3.14 4.69 lineto
+closepath stroke
+ 3.38 4.68 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.50 5.07 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.49 5.22 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.50 5.07 moveto
+ 3.29 4.94 lineto
+closepath stroke
+ 3.29 4.94 moveto
+ 3.03 4.96 lineto
+closepath stroke
+ 3.29 4.94 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.44 5.37 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.37 6.00 lineto
+closepath stroke
+ 3.42 5.69 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.44 5.37 moveto
+ 3.20 5.23 lineto
+closepath stroke
+ 3.20 5.23 moveto
+ 2.90 5.25 lineto
+closepath stroke
+ 3.20 5.23 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.37 6.00 moveto
+ 3.10 5.69 lineto
+closepath stroke
+ 3.10 5.69 moveto
+ 2.76 5.71 lineto
+closepath stroke
+ 3.10 5.69 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.79 3.23 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.77 3.29 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.74 3.35 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.72 3.41 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.74 3.35 moveto
+ 3.69 3.29 lineto
+closepath stroke
+ 3.69 3.29 moveto
+ 3.61 3.30 lineto
+closepath stroke
+ 3.69 3.29 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.68 3.48 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.65 3.55 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.68 3.48 moveto
+ 3.62 3.42 lineto
+closepath stroke
+ 3.62 3.42 moveto
+ 3.52 3.42 lineto
+closepath stroke
+ 3.62 3.42 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.61 3.62 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.59 3.70 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.61 3.62 moveto
+ 3.54 3.55 lineto
+closepath stroke
+ 3.54 3.55 moveto
+ 3.42 3.56 lineto
+closepath stroke
+ 3.54 3.55 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.54 3.78 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.52 3.86 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.54 3.78 moveto
+ 3.46 3.70 lineto
+closepath stroke
+ 3.46 3.70 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.46 3.70 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.47 3.95 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.44 4.04 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.47 3.95 moveto
+ 3.36 3.87 lineto
+closepath stroke
+ 3.36 3.87 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.36 3.87 moveto
+ 3.31 3.71 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.38 4.14 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.35 4.24 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.38 4.14 moveto
+ 3.26 4.05 lineto
+closepath stroke
+ 3.26 4.05 moveto
+ 3.13 3.97 lineto
+closepath stroke
+ 3.26 4.05 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.29 4.34 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.25 4.46 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.29 4.34 moveto
+ 3.14 4.25 lineto
+closepath stroke
+ 3.14 4.25 moveto
+ 3.00 4.16 lineto
+closepath stroke
+ 3.14 4.25 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 3.18 4.57 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 3.14 4.69 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.18 4.57 moveto
+ 3.02 4.47 lineto
+closepath stroke
+ 3.02 4.47 moveto
+ 2.84 4.37 lineto
+closepath stroke
+ 3.02 4.47 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 3.07 4.82 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 3.03 4.96 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 3.07 4.82 moveto
+ 2.88 4.71 lineto
+closepath stroke
+ 2.88 4.71 moveto
+ 2.67 4.61 lineto
+closepath stroke
+ 2.88 4.71 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.95 5.10 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.90 5.25 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.95 5.10 moveto
+ 2.72 4.98 lineto
+closepath stroke
+ 2.72 4.98 moveto
+ 2.49 4.86 lineto
+closepath stroke
+ 2.72 4.98 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.81 5.40 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.66 6.00 lineto
+closepath stroke
+ 2.76 5.71 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.81 5.40 moveto
+ 2.55 5.27 lineto
+closepath stroke
+ 2.55 5.27 moveto
+ 2.28 5.14 lineto
+closepath stroke
+ 2.55 5.27 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.66 6.00 moveto
+ 2.37 5.71 lineto
+closepath stroke
+ 2.37 5.71 moveto
+ 1.92 5.73 lineto
+closepath stroke
+ 2.37 5.71 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.65 3.24 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.61 3.30 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.56 3.36 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.52 3.42 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.56 3.36 moveto
+ 3.51 3.30 lineto
+closepath stroke
+ 3.51 3.30 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.51 3.30 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.46 3.49 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.42 3.56 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.46 3.49 moveto
+ 3.40 3.43 lineto
+closepath stroke
+ 3.40 3.43 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.40 3.43 moveto
+ 3.41 3.30 lineto
+closepath stroke
+ 3.31 3.71 moveto
+ 3.36 3.63 lineto
+closepath stroke
+ 3.31 3.71 moveto
+ 3.26 3.80 lineto
+closepath stroke
+ 3.36 3.63 moveto
+ 3.28 3.56 lineto
+closepath stroke
+ 3.28 3.56 moveto
+ 3.20 3.49 lineto
+closepath stroke
+ 3.28 3.56 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.26 3.80 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.26 3.80 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 3.19 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 3.13 3.97 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.19 3.88 moveto
+ 3.14 3.72 lineto
+closepath stroke
+ 3.14 3.72 moveto
+ 3.04 3.64 lineto
+closepath stroke
+ 3.14 3.72 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 3.06 4.06 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 3.00 4.16 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 3.06 4.06 moveto
+ 2.99 3.88 lineto
+closepath stroke
+ 2.99 3.88 moveto
+ 2.86 3.80 lineto
+closepath stroke
+ 2.99 3.88 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.91 4.26 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.84 4.37 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.91 4.26 moveto
+ 2.82 4.07 lineto
+closepath stroke
+ 2.82 4.07 moveto
+ 2.67 3.97 lineto
+closepath stroke
+ 2.82 4.07 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.75 4.48 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.67 4.61 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.75 4.48 moveto
+ 2.64 4.27 lineto
+closepath stroke
+ 2.64 4.27 moveto
+ 2.45 4.17 lineto
+closepath stroke
+ 2.64 4.27 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.57 4.72 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.49 4.86 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.57 4.72 moveto
+ 2.44 4.49 lineto
+closepath stroke
+ 2.44 4.49 moveto
+ 2.22 4.38 lineto
+closepath stroke
+ 2.44 4.49 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 2.37 4.99 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 1.97 5.01 lineto
+closepath stroke
+ 2.28 5.14 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 2.37 4.99 moveto
+ 2.22 4.74 lineto
+closepath stroke
+ 2.22 4.74 moveto
+ 1.96 4.61 lineto
+closepath stroke
+ 2.22 4.74 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 2.16 5.29 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 1.67 4.87 lineto
+closepath stroke
+ 1.97 5.01 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 2.16 5.29 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 2.16 5.29 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 2.02 5.44 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 1.77 6.00 lineto
+closepath stroke
+ 1.92 5.73 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 2.02 5.44 moveto
+ 1.71 5.31 lineto
+closepath stroke
+ 1.71 5.31 moveto
+ 1.36 5.15 lineto
+closepath stroke
+ 1.71 5.31 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.77 6.00 moveto
+ 1.41 5.73 lineto
+closepath stroke
+ 1.41 5.73 moveto
+ 1.02 5.56 lineto
+closepath stroke
+ 1.41 5.73 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 3.41 3.30 moveto
+ 3.46 3.24 lineto
+closepath stroke
+ 3.41 3.30 moveto
+ 3.35 3.36 lineto
+closepath stroke
+ 3.35 3.36 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.35 3.36 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.27 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.20 3.49 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.27 3.42 moveto
+ 3.27 3.29 lineto
+closepath stroke
+ 3.27 3.29 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 3.27 3.29 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 3.11 3.56 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 3.04 3.64 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 3.11 3.56 moveto
+ 3.10 3.42 lineto
+closepath stroke
+ 3.10 3.42 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.10 3.42 moveto
+ 3.13 3.28 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.94 3.71 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.86 3.80 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.94 3.71 moveto
+ 2.91 3.55 lineto
+closepath stroke
+ 2.91 3.55 moveto
+ 2.82 3.47 lineto
+closepath stroke
+ 2.91 3.55 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.75 3.88 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.67 3.97 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.75 3.88 moveto
+ 2.71 3.70 lineto
+closepath stroke
+ 2.71 3.70 moveto
+ 2.59 3.60 lineto
+closepath stroke
+ 2.71 3.70 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.55 4.06 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.45 4.17 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.55 4.06 moveto
+ 2.48 3.87 lineto
+closepath stroke
+ 2.48 3.87 moveto
+ 2.33 3.75 lineto
+closepath stroke
+ 2.48 3.87 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 2.32 4.26 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 2.22 4.38 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 2.32 4.26 moveto
+ 2.23 4.05 lineto
+closepath stroke
+ 2.23 4.05 moveto
+ 2.04 3.92 lineto
+closepath stroke
+ 2.23 4.05 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 2.07 4.48 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.96 4.61 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 2.07 4.48 moveto
+ 1.96 4.25 lineto
+closepath stroke
+ 1.96 4.25 moveto
+ 1.73 4.10 lineto
+closepath stroke
+ 1.96 4.25 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.80 4.72 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.67 4.87 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.80 4.72 moveto
+ 1.66 4.47 lineto
+closepath stroke
+ 1.66 4.47 moveto
+ 1.38 4.30 lineto
+closepath stroke
+ 1.66 4.47 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 1.50 4.99 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 1.36 5.15 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.50 4.99 moveto
+ 1.33 4.71 lineto
+closepath stroke
+ 1.33 4.71 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 1.33 4.71 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 1.17 5.29 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 0.63 6.00 lineto
+closepath stroke
+ 1.02 5.56 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 1.17 5.29 moveto
+ 0.96 4.97 lineto
+closepath stroke
+ 0.96 4.97 moveto
+ 0.81 4.65 lineto
+closepath stroke
+ 0.96 4.97 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.63 6.00 moveto
+ 0.39 5.56 lineto
+closepath stroke
+ 0.39 5.56 moveto
+ 0.00 5.71 lineto
+closepath stroke
+ 0.39 5.56 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.00 5.71 moveto
+ 0.39 5.26 lineto
+closepath stroke
+ 0.39 5.26 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.39 5.26 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 3.13 3.28 moveto
+ 3.21 3.22 lineto
+closepath stroke
+ 3.13 3.28 moveto
+ 3.04 3.35 lineto
+closepath stroke
+ 3.04 3.35 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 3.04 3.35 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.92 3.40 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.82 3.47 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.92 3.40 moveto
+ 2.95 3.26 lineto
+closepath stroke
+ 2.95 3.26 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.95 3.26 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.70 3.53 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.59 3.60 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.70 3.53 moveto
+ 2.70 3.37 lineto
+closepath stroke
+ 2.70 3.37 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.70 3.37 moveto
+ 2.77 3.22 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.45 3.67 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.33 3.75 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.45 3.67 moveto
+ 2.43 3.49 lineto
+closepath stroke
+ 2.43 3.49 moveto
+ 2.34 3.38 lineto
+closepath stroke
+ 2.43 3.49 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 2.17 3.82 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 2.04 3.92 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 2.17 3.82 moveto
+ 2.14 3.62 lineto
+closepath stroke
+ 2.14 3.62 moveto
+ 2.00 3.49 lineto
+closepath stroke
+ 2.14 3.62 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.87 3.99 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.73 4.10 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.87 3.99 moveto
+ 1.81 3.77 lineto
+closepath stroke
+ 1.81 3.77 moveto
+ 1.64 3.60 lineto
+closepath stroke
+ 1.81 3.77 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.54 4.18 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.38 4.30 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.54 4.18 moveto
+ 1.45 3.93 lineto
+closepath stroke
+ 1.45 3.93 moveto
+ 1.23 3.73 lineto
+closepath stroke
+ 1.45 3.93 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 1.00 4.51 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 0.39 4.75 lineto
+closepath stroke
+ 0.81 4.65 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 1.00 4.51 moveto
+ 1.18 4.39 lineto
+closepath stroke
+ 1.18 4.39 moveto
+ 1.06 4.10 lineto
+closepath stroke
+ 1.06 4.10 moveto
+ 0.79 3.88 lineto
+closepath stroke
+ 1.06 4.10 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.39 4.75 moveto
+ 0.43 4.30 lineto
+closepath stroke
+ 0.39 4.75 moveto
+ 0.00 4.91 lineto
+closepath stroke
+ 0.43 4.30 moveto
+ 0.00 4.03 lineto
+closepath stroke
+ 0.43 4.30 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 2.77 3.22 moveto
+ 2.89 3.17 lineto
+closepath stroke
+ 2.77 3.22 moveto
+ 2.64 3.28 lineto
+closepath stroke
+ 2.64 3.28 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.64 3.28 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.48 3.32 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.34 3.38 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.48 3.32 moveto
+ 2.54 3.17 lineto
+closepath stroke
+ 2.54 3.17 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 2.54 3.17 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 2.16 3.42 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 2.00 3.49 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 2.16 3.42 moveto
+ 2.20 3.24 lineto
+closepath stroke
+ 2.20 3.24 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.20 3.24 moveto
+ 2.33 3.10 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.81 3.53 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.64 3.60 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.81 3.53 moveto
+ 1.83 3.32 lineto
+closepath stroke
+ 1.83 3.32 moveto
+ 1.74 3.18 lineto
+closepath stroke
+ 1.83 3.32 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 1.42 3.65 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 1.23 3.73 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 1.42 3.65 moveto
+ 1.42 3.41 lineto
+closepath stroke
+ 1.42 3.41 moveto
+ 1.29 3.23 lineto
+closepath stroke
+ 1.42 3.41 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 1.00 3.78 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.79 3.88 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 1.00 3.78 moveto
+ 0.96 3.51 lineto
+closepath stroke
+ 0.96 3.51 moveto
+ 0.79 3.28 lineto
+closepath stroke
+ 0.96 3.51 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.00 4.03 moveto
+ 0.43 3.93 lineto
+closepath stroke
+ 0.43 3.93 moveto
+ 0.36 3.61 lineto
+closepath stroke
+ 0.36 3.61 moveto
+ 0.00 3.33 lineto
+closepath stroke
+ 0.36 3.61 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 2.33 3.10 moveto
+ 2.49 3.07 lineto
+closepath stroke
+ 2.33 3.10 moveto
+ 2.15 3.14 lineto
+closepath stroke
+ 2.15 3.14 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.15 3.14 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.94 3.14 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.74 3.18 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.94 3.14 moveto
+ 2.06 3.00 lineto
+closepath stroke
+ 2.06 3.00 moveto
+ 1.94 2.86 lineto
+closepath stroke
+ 2.06 3.00 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.50 3.18 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.29 3.23 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 1.50 3.18 moveto
+ 1.61 3.00 lineto
+closepath stroke
+ 1.61 3.00 moveto
+ 1.50 2.82 lineto
+closepath stroke
+ 1.61 3.00 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 1.03 3.23 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.79 3.28 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 1.03 3.23 moveto
+ 1.12 3.00 lineto
+closepath stroke
+ 1.12 3.00 moveto
+ 1.03 2.77 lineto
+closepath stroke
+ 1.12 3.00 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 0.00 3.33 moveto
+ 0.36 3.28 lineto
+closepath stroke
+ 0.36 3.28 moveto
+ 0.43 3.00 lineto
+closepath stroke
+ 0.43 3.00 moveto
+ 0.36 2.72 lineto
+closepath stroke
+ 0.43 3.00 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 6.00 2.85 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.85 2.85 moveto
+ 5.61 2.85 lineto
+closepath stroke
+ 6.00 2.85 moveto
+ 5.85 2.70 lineto
+closepath stroke
+ 5.85 2.70 moveto
+ 6.00 2.51 lineto
+closepath stroke
+ 5.85 2.70 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.33 2.90 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.54 2.83 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.49 2.93 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.33 2.90 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 2.15 2.86 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.94 2.86 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 2.15 2.86 moveto
+ 2.20 2.76 lineto
+closepath stroke
+ 2.20 2.76 moveto
+ 2.16 2.58 lineto
+closepath stroke
+ 2.20 2.76 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.74 2.82 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.50 2.82 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.74 2.82 moveto
+ 1.83 2.68 lineto
+closepath stroke
+ 1.83 2.68 moveto
+ 1.81 2.47 lineto
+closepath stroke
+ 1.83 2.68 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 1.29 2.77 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 1.03 2.77 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 1.29 2.77 moveto
+ 1.42 2.59 lineto
+closepath stroke
+ 1.42 2.59 moveto
+ 1.42 2.35 lineto
+closepath stroke
+ 1.42 2.59 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.79 2.72 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.00 2.67 lineto
+closepath stroke
+ 0.36 2.72 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.79 2.72 moveto
+ 0.96 2.49 lineto
+closepath stroke
+ 0.96 2.49 moveto
+ 1.00 2.22 lineto
+closepath stroke
+ 0.96 2.49 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 0.00 2.67 moveto
+ 0.36 2.39 lineto
+closepath stroke
+ 0.36 2.39 moveto
+ 0.43 2.07 lineto
+closepath stroke
+ 0.36 2.39 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 6.00 2.51 moveto
+ 5.85 2.51 lineto
+closepath stroke
+ 5.85 2.51 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.85 2.51 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.61 2.85 moveto
+ 5.59 2.72 lineto
+closepath stroke
+ 5.61 2.85 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.89 2.83 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.64 2.72 lineto
+closepath stroke
+ 2.77 2.78 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.89 2.83 moveto
+ 2.95 2.74 lineto
+closepath stroke
+ 2.95 2.74 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 2.95 2.74 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 2.64 2.72 moveto
+ 2.70 2.63 lineto
+closepath stroke
+ 2.64 2.72 moveto
+ 2.48 2.68 lineto
+closepath stroke
+ 2.70 2.63 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.70 2.63 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.48 2.68 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.48 2.68 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.34 2.62 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.16 2.58 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 2.34 2.62 moveto
+ 2.43 2.51 lineto
+closepath stroke
+ 2.43 2.51 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.43 2.51 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 2.00 2.51 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.81 2.47 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 2.00 2.51 moveto
+ 2.14 2.38 lineto
+closepath stroke
+ 2.14 2.38 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.14 2.38 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.64 2.40 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.42 2.35 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.64 2.40 moveto
+ 1.81 2.23 lineto
+closepath stroke
+ 1.81 2.23 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 1.81 2.23 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 1.23 2.27 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.00 2.22 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 1.23 2.27 moveto
+ 1.45 2.07 lineto
+closepath stroke
+ 1.45 2.07 moveto
+ 1.54 1.82 lineto
+closepath stroke
+ 1.45 2.07 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.79 2.12 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.00 1.97 lineto
+closepath stroke
+ 0.43 2.07 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.79 2.12 moveto
+ 1.06 1.90 lineto
+closepath stroke
+ 1.06 1.90 moveto
+ 1.18 1.61 lineto
+closepath stroke
+ 1.06 1.90 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 0.00 1.97 moveto
+ 0.43 1.70 lineto
+closepath stroke
+ 0.43 1.70 moveto
+ 0.39 1.25 lineto
+closepath stroke
+ 0.43 1.70 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.49 2.87 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.63 2.56 lineto
+closepath stroke
+ 5.59 2.72 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.49 2.87 moveto
+ 5.38 2.87 lineto
+closepath stroke
+ 5.63 2.56 moveto
+ 5.51 2.59 lineto
+closepath stroke
+ 5.63 2.56 moveto
+ 5.78 2.37 lineto
+closepath stroke
+ 5.51 2.59 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.51 2.59 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.78 2.37 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.78 2.37 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.21 2.78 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.04 2.65 lineto
+closepath stroke
+ 3.13 2.72 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.21 2.78 moveto
+ 3.27 2.71 lineto
+closepath stroke
+ 3.27 2.71 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.27 2.71 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.04 2.65 moveto
+ 3.10 2.58 lineto
+closepath stroke
+ 3.04 2.65 moveto
+ 2.92 2.60 lineto
+closepath stroke
+ 3.10 2.58 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.10 2.58 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 2.92 2.60 moveto
+ 2.82 2.53 lineto
+closepath stroke
+ 2.92 2.60 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.53 moveto
+ 2.91 2.45 lineto
+closepath stroke
+ 2.82 2.53 moveto
+ 2.70 2.47 lineto
+closepath stroke
+ 2.91 2.45 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 2.91 2.45 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 2.70 2.47 moveto
+ 2.59 2.40 lineto
+closepath stroke
+ 2.70 2.47 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.59 2.40 moveto
+ 2.71 2.30 lineto
+closepath stroke
+ 2.59 2.40 moveto
+ 2.45 2.33 lineto
+closepath stroke
+ 2.71 2.30 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.71 2.30 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.45 2.33 moveto
+ 2.33 2.25 lineto
+closepath stroke
+ 2.45 2.33 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.33 2.25 moveto
+ 2.48 2.13 lineto
+closepath stroke
+ 2.33 2.25 moveto
+ 2.17 2.18 lineto
+closepath stroke
+ 2.48 2.13 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.48 2.13 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.17 2.18 moveto
+ 2.04 2.08 lineto
+closepath stroke
+ 2.17 2.18 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.04 2.08 moveto
+ 2.23 1.95 lineto
+closepath stroke
+ 2.04 2.08 moveto
+ 1.87 2.01 lineto
+closepath stroke
+ 2.23 1.95 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.23 1.95 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 1.87 2.01 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.87 2.01 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.73 1.90 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.54 1.82 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.73 1.90 moveto
+ 1.96 1.75 lineto
+closepath stroke
+ 1.96 1.75 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 1.96 1.75 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.38 1.70 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.00 1.49 lineto
+closepath stroke
+ 1.18 1.61 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.38 1.70 moveto
+ 1.66 1.53 lineto
+closepath stroke
+ 1.66 1.53 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 1.66 1.53 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 1.33 1.29 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 1.00 1.49 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 1.33 1.29 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.33 1.29 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.81 1.35 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.00 1.09 lineto
+closepath stroke
+ 0.39 1.25 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.81 1.35 moveto
+ 0.96 1.03 lineto
+closepath stroke
+ 0.96 1.03 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 0.96 1.03 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 0.00 1.09 moveto
+ 0.39 0.74 lineto
+closepath stroke
+ 0.39 0.74 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.39 0.74 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.00 0.29 moveto
+ 0.39 0.44 lineto
+closepath stroke
+ 0.39 0.44 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 0.39 0.44 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 5.38 2.87 moveto
+ 5.36 2.77 lineto
+closepath stroke
+ 5.38 2.87 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 3.46 2.76 moveto
+ 3.51 2.70 lineto
+closepath stroke
+ 3.46 2.76 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.41 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.61 2.70 lineto
+closepath stroke
+ 3.51 2.70 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.41 2.70 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.41 2.70 moveto
+ 3.35 2.64 lineto
+closepath stroke
+ 3.35 2.64 moveto
+ 3.27 2.58 lineto
+closepath stroke
+ 3.35 2.64 moveto
+ 3.40 2.57 lineto
+closepath stroke
+ 3.27 2.58 moveto
+ 3.20 2.51 lineto
+closepath stroke
+ 3.27 2.58 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.40 2.57 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.40 2.57 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.20 2.51 moveto
+ 3.28 2.44 lineto
+closepath stroke
+ 3.20 2.51 moveto
+ 3.11 2.44 lineto
+closepath stroke
+ 3.28 2.44 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.28 2.44 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.11 2.44 moveto
+ 3.04 2.36 lineto
+closepath stroke
+ 3.11 2.44 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.04 2.36 moveto
+ 3.14 2.28 lineto
+closepath stroke
+ 3.04 2.36 moveto
+ 2.94 2.29 lineto
+closepath stroke
+ 3.14 2.28 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.14 2.28 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 2.94 2.29 moveto
+ 2.86 2.20 lineto
+closepath stroke
+ 2.94 2.29 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.86 2.20 moveto
+ 2.99 2.12 lineto
+closepath stroke
+ 2.86 2.20 moveto
+ 2.75 2.12 lineto
+closepath stroke
+ 2.99 2.12 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 2.99 2.12 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 2.75 2.12 moveto
+ 2.67 2.03 lineto
+closepath stroke
+ 2.75 2.12 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.67 2.03 moveto
+ 2.82 1.93 lineto
+closepath stroke
+ 2.67 2.03 moveto
+ 2.55 1.94 lineto
+closepath stroke
+ 2.82 1.93 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 2.82 1.93 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 2.55 1.94 moveto
+ 2.45 1.83 lineto
+closepath stroke
+ 2.55 1.94 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.45 1.83 moveto
+ 2.64 1.73 lineto
+closepath stroke
+ 2.45 1.83 moveto
+ 2.32 1.74 lineto
+closepath stroke
+ 2.64 1.73 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.64 1.73 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 2.32 1.74 moveto
+ 2.22 1.62 lineto
+closepath stroke
+ 2.32 1.74 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.22 1.62 moveto
+ 2.44 1.51 lineto
+closepath stroke
+ 2.22 1.62 moveto
+ 2.07 1.52 lineto
+closepath stroke
+ 2.44 1.51 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.44 1.51 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.07 1.52 moveto
+ 1.96 1.39 lineto
+closepath stroke
+ 2.07 1.52 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 1.96 1.39 moveto
+ 2.22 1.26 lineto
+closepath stroke
+ 1.96 1.39 moveto
+ 1.80 1.28 lineto
+closepath stroke
+ 2.22 1.26 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.22 1.26 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 1.80 1.28 moveto
+ 1.67 1.13 lineto
+closepath stroke
+ 1.80 1.28 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.67 1.13 moveto
+ 1.97 0.99 lineto
+closepath stroke
+ 1.67 1.13 moveto
+ 1.50 1.01 lineto
+closepath stroke
+ 1.97 0.99 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 1.97 0.99 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.50 1.01 moveto
+ 1.36 0.85 lineto
+closepath stroke
+ 1.50 1.01 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.36 0.85 moveto
+ 1.71 0.69 lineto
+closepath stroke
+ 1.36 0.85 moveto
+ 1.17 0.71 lineto
+closepath stroke
+ 1.71 0.69 moveto
+ 2.16 0.71 lineto
+closepath stroke
+ 1.71 0.69 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 1.17 0.71 moveto
+ 1.02 0.44 lineto
+closepath stroke
+ 1.17 0.71 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.02 0.44 moveto
+ 1.41 0.27 lineto
+closepath stroke
+ 1.02 0.44 moveto
+ 0.63 0.00 lineto
+closepath stroke
+ 1.41 0.27 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 1.41 0.27 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.28 2.90 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.41 2.64 lineto
+closepath stroke
+ 5.36 2.77 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.28 2.90 moveto
+ 5.18 2.90 lineto
+closepath stroke
+ 5.41 2.64 moveto
+ 5.30 2.66 lineto
+closepath stroke
+ 5.41 2.64 moveto
+ 5.45 2.47 lineto
+closepath stroke
+ 5.30 2.66 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.30 2.66 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.56 2.64 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.65 2.76 lineto
+closepath stroke
+ 3.61 2.70 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.56 2.64 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.56 2.64 moveto
+ 3.52 2.58 lineto
+closepath stroke
+ 3.65 2.76 moveto
+ 3.69 2.71 lineto
+closepath stroke
+ 3.69 2.71 moveto
+ 3.77 2.71 lineto
+closepath stroke
+ 3.69 2.71 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.52 2.58 moveto
+ 3.46 2.51 lineto
+closepath stroke
+ 3.52 2.58 moveto
+ 3.62 2.58 lineto
+closepath stroke
+ 3.46 2.51 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.46 2.51 moveto
+ 3.42 2.44 lineto
+closepath stroke
+ 3.62 2.58 moveto
+ 3.68 2.52 lineto
+closepath stroke
+ 3.62 2.58 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.42 2.44 moveto
+ 3.36 2.37 lineto
+closepath stroke
+ 3.42 2.44 moveto
+ 3.54 2.45 lineto
+closepath stroke
+ 3.36 2.37 moveto
+ 3.31 2.29 lineto
+closepath stroke
+ 3.36 2.37 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.54 2.45 moveto
+ 3.61 2.38 lineto
+closepath stroke
+ 3.54 2.45 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.46 2.30 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.26 2.20 lineto
+closepath stroke
+ 3.31 2.29 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.46 2.30 moveto
+ 3.54 2.22 lineto
+closepath stroke
+ 3.46 2.30 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.26 2.20 moveto
+ 3.36 2.13 lineto
+closepath stroke
+ 3.26 2.20 moveto
+ 3.19 2.12 lineto
+closepath stroke
+ 3.36 2.13 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.36 2.13 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.19 2.12 moveto
+ 3.13 2.03 lineto
+closepath stroke
+ 3.19 2.12 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.13 2.03 moveto
+ 3.26 1.95 lineto
+closepath stroke
+ 3.13 2.03 moveto
+ 3.06 1.94 lineto
+closepath stroke
+ 3.26 1.95 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.26 1.95 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.06 1.94 moveto
+ 3.00 1.84 lineto
+closepath stroke
+ 3.06 1.94 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.00 1.84 moveto
+ 3.14 1.75 lineto
+closepath stroke
+ 3.00 1.84 moveto
+ 2.91 1.74 lineto
+closepath stroke
+ 3.14 1.75 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.14 1.75 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 2.91 1.74 moveto
+ 2.84 1.63 lineto
+closepath stroke
+ 2.91 1.74 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.84 1.63 moveto
+ 3.02 1.53 lineto
+closepath stroke
+ 2.84 1.63 moveto
+ 2.75 1.52 lineto
+closepath stroke
+ 3.02 1.53 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.02 1.53 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 2.75 1.52 moveto
+ 2.67 1.39 lineto
+closepath stroke
+ 2.75 1.52 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.67 1.39 moveto
+ 2.88 1.29 lineto
+closepath stroke
+ 2.67 1.39 moveto
+ 2.57 1.28 lineto
+closepath stroke
+ 2.88 1.29 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 2.88 1.29 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 2.57 1.28 moveto
+ 2.49 1.14 lineto
+closepath stroke
+ 2.57 1.28 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.49 1.14 moveto
+ 2.72 1.02 lineto
+closepath stroke
+ 2.49 1.14 moveto
+ 2.37 1.01 lineto
+closepath stroke
+ 2.72 1.02 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 2.72 1.02 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 2.37 1.01 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.37 1.01 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.02 0.56 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.28 0.86 lineto
+closepath stroke
+ 2.02 0.56 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.02 0.56 moveto
+ 1.92 0.27 lineto
+closepath stroke
+ 2.28 0.86 moveto
+ 2.55 0.73 lineto
+closepath stroke
+ 2.55 0.73 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.55 0.73 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 1.92 0.27 moveto
+ 1.77 0.00 lineto
+closepath stroke
+ 1.92 0.27 moveto
+ 2.37 0.29 lineto
+closepath stroke
+ 2.37 0.29 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.37 0.29 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 5.45 2.47 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.45 2.47 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.18 2.90 moveto
+ 5.16 2.82 lineto
+closepath stroke
+ 5.18 2.90 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.08 2.92 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.20 2.70 lineto
+closepath stroke
+ 5.16 2.82 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.08 2.92 moveto
+ 4.99 2.92 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.74 2.65 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.79 2.77 lineto
+closepath stroke
+ 3.77 2.71 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.74 2.65 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.74 2.65 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.79 2.77 moveto
+ 3.83 2.71 lineto
+closepath stroke
+ 3.83 2.71 moveto
+ 3.88 2.65 lineto
+closepath stroke
+ 3.83 2.71 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.72 2.59 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.68 2.52 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.72 2.59 moveto
+ 3.79 2.59 lineto
+closepath stroke
+ 3.79 2.59 moveto
+ 3.85 2.53 lineto
+closepath stroke
+ 3.79 2.59 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.65 2.45 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.61 2.38 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.65 2.45 moveto
+ 3.75 2.46 lineto
+closepath stroke
+ 3.75 2.46 moveto
+ 3.82 2.39 lineto
+closepath stroke
+ 3.75 2.46 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.59 2.30 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.52 2.14 lineto
+closepath stroke
+ 3.54 2.22 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.59 2.30 moveto
+ 3.70 2.31 lineto
+closepath stroke
+ 3.70 2.31 moveto
+ 3.79 2.23 lineto
+closepath stroke
+ 3.70 2.31 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.52 2.14 moveto
+ 3.65 2.15 lineto
+closepath stroke
+ 3.52 2.14 moveto
+ 3.47 2.05 lineto
+closepath stroke
+ 3.65 2.15 moveto
+ 3.75 2.06 lineto
+closepath stroke
+ 3.65 2.15 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.47 2.05 moveto
+ 3.44 1.96 lineto
+closepath stroke
+ 3.47 2.05 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.44 1.96 moveto
+ 3.59 1.97 lineto
+closepath stroke
+ 3.44 1.96 moveto
+ 3.38 1.86 lineto
+closepath stroke
+ 3.59 1.97 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.59 1.97 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.38 1.86 moveto
+ 3.35 1.76 lineto
+closepath stroke
+ 3.38 1.86 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.35 1.76 moveto
+ 3.53 1.77 lineto
+closepath stroke
+ 3.35 1.76 moveto
+ 3.29 1.66 lineto
+closepath stroke
+ 3.53 1.77 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.53 1.77 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.29 1.66 moveto
+ 3.25 1.54 lineto
+closepath stroke
+ 3.29 1.66 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.25 1.54 moveto
+ 3.46 1.56 lineto
+closepath stroke
+ 3.25 1.54 moveto
+ 3.18 1.43 lineto
+closepath stroke
+ 3.46 1.56 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.46 1.56 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.18 1.43 moveto
+ 3.14 1.31 lineto
+closepath stroke
+ 3.18 1.43 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.14 1.31 moveto
+ 3.38 1.32 lineto
+closepath stroke
+ 3.14 1.31 moveto
+ 3.07 1.18 lineto
+closepath stroke
+ 3.38 1.32 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.38 1.32 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.07 1.18 moveto
+ 3.03 1.04 lineto
+closepath stroke
+ 3.07 1.18 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.03 1.04 moveto
+ 3.29 1.06 lineto
+closepath stroke
+ 3.03 1.04 moveto
+ 2.95 0.90 lineto
+closepath stroke
+ 3.29 1.06 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.29 1.06 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 2.95 0.90 moveto
+ 2.90 0.75 lineto
+closepath stroke
+ 2.95 0.90 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 2.90 0.75 moveto
+ 3.20 0.77 lineto
+closepath stroke
+ 2.90 0.75 moveto
+ 2.81 0.60 lineto
+closepath stroke
+ 3.20 0.77 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.20 0.77 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 2.81 0.60 moveto
+ 2.76 0.29 lineto
+closepath stroke
+ 2.81 0.60 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 2.76 0.29 moveto
+ 3.10 0.31 lineto
+closepath stroke
+ 2.76 0.29 moveto
+ 2.66 0.00 lineto
+closepath stroke
+ 3.10 0.31 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.10 0.31 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 5.20 2.70 moveto
+ 5.10 2.72 lineto
+closepath stroke
+ 5.20 2.70 moveto
+ 5.24 2.56 lineto
+closepath stroke
+ 5.10 2.72 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 5.10 2.72 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.89 2.71 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.88 2.65 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.89 2.71 moveto
+ 3.95 2.71 lineto
+closepath stroke
+ 3.89 2.71 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 3.90 2.77 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 4.00 2.66 lineto
+closepath stroke
+ 3.95 2.71 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.87 2.59 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.85 2.53 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.87 2.59 moveto
+ 3.93 2.59 lineto
+closepath stroke
+ 3.93 2.59 moveto
+ 4.00 2.53 lineto
+closepath stroke
+ 3.93 2.59 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.84 2.46 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.82 2.39 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.84 2.46 moveto
+ 3.92 2.46 lineto
+closepath stroke
+ 3.92 2.46 moveto
+ 4.00 2.39 lineto
+closepath stroke
+ 3.92 2.46 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.81 2.31 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.79 2.23 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.81 2.31 moveto
+ 3.90 2.31 lineto
+closepath stroke
+ 3.90 2.31 moveto
+ 4.00 2.24 lineto
+closepath stroke
+ 3.90 2.31 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.78 2.15 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.75 2.06 moveto
+ 3.74 1.97 lineto
+closepath stroke
+ 3.78 2.15 moveto
+ 3.89 2.15 lineto
+closepath stroke
+ 3.89 2.15 moveto
+ 4.00 2.07 lineto
+closepath stroke
+ 3.89 2.15 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 3.74 1.97 moveto
+ 3.71 1.88 lineto
+closepath stroke
+ 3.74 1.97 moveto
+ 3.87 1.98 lineto
+closepath stroke
+ 3.71 1.88 moveto
+ 3.70 1.78 lineto
+closepath stroke
+ 3.71 1.88 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.87 1.98 moveto
+ 4.00 1.88 lineto
+closepath stroke
+ 3.87 1.98 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 3.70 1.78 moveto
+ 3.85 1.78 lineto
+closepath stroke
+ 3.70 1.78 moveto
+ 3.66 1.67 lineto
+closepath stroke
+ 3.85 1.78 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 3.85 1.78 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 3.66 1.67 moveto
+ 3.65 1.56 lineto
+closepath stroke
+ 3.66 1.67 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.65 1.56 moveto
+ 3.83 1.57 lineto
+closepath stroke
+ 3.65 1.56 moveto
+ 3.62 1.45 lineto
+closepath stroke
+ 3.83 1.57 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 3.83 1.57 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 3.62 1.45 moveto
+ 3.60 1.33 lineto
+closepath stroke
+ 3.62 1.45 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.60 1.33 moveto
+ 3.80 1.33 lineto
+closepath stroke
+ 3.60 1.33 moveto
+ 3.56 1.20 lineto
+closepath stroke
+ 3.80 1.33 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 3.80 1.33 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 3.56 1.20 moveto
+ 3.55 1.07 lineto
+closepath stroke
+ 3.56 1.20 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.55 1.07 moveto
+ 3.77 1.07 lineto
+closepath stroke
+ 3.55 1.07 moveto
+ 3.50 0.93 lineto
+closepath stroke
+ 3.77 1.07 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 3.77 1.07 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 3.50 0.93 moveto
+ 3.49 0.78 lineto
+closepath stroke
+ 3.50 0.93 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.49 0.78 moveto
+ 3.74 0.79 lineto
+closepath stroke
+ 3.49 0.78 moveto
+ 3.44 0.63 lineto
+closepath stroke
+ 3.74 0.79 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 3.74 0.79 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 3.44 0.63 moveto
+ 3.42 0.31 lineto
+closepath stroke
+ 3.44 0.63 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.42 0.31 moveto
+ 3.71 0.32 lineto
+closepath stroke
+ 3.42 0.31 moveto
+ 3.37 0.00 lineto
+closepath stroke
+ 3.71 0.32 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 3.71 0.32 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 5.24 2.56 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.24 2.56 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 4.99 2.92 moveto
+ 4.98 2.85 lineto
+closepath stroke
+ 4.99 2.92 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.01 2.71 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.00 2.66 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.01 2.71 moveto
+ 4.05 2.71 lineto
+closepath stroke
+ 4.01 2.71 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.00 2.77 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.10 2.71 lineto
+closepath stroke
+ 4.05 2.71 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.01 2.59 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.00 2.53 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.01 2.59 moveto
+ 4.07 2.59 lineto
+closepath stroke
+ 4.07 2.59 moveto
+ 4.13 2.59 lineto
+closepath stroke
+ 4.07 2.59 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.01 2.46 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.00 2.39 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.01 2.46 moveto
+ 4.08 2.46 lineto
+closepath stroke
+ 4.08 2.46 moveto
+ 4.16 2.46 lineto
+closepath stroke
+ 4.08 2.46 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.01 2.31 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.00 2.24 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.01 2.31 moveto
+ 4.10 2.31 lineto
+closepath stroke
+ 4.10 2.31 moveto
+ 4.19 2.32 lineto
+closepath stroke
+ 4.10 2.31 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.01 2.15 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.00 2.07 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.01 2.15 moveto
+ 4.11 2.15 lineto
+closepath stroke
+ 4.11 2.15 moveto
+ 4.22 2.16 lineto
+closepath stroke
+ 4.11 2.15 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.01 1.98 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.00 1.88 moveto
+ 4.01 1.78 lineto
+closepath stroke
+ 4.01 1.98 moveto
+ 4.13 1.98 lineto
+closepath stroke
+ 4.13 1.98 moveto
+ 4.26 1.98 lineto
+closepath stroke
+ 4.13 1.98 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.01 1.78 moveto
+ 4.00 1.68 lineto
+closepath stroke
+ 4.01 1.78 moveto
+ 4.15 1.78 lineto
+closepath stroke
+ 4.00 1.68 moveto
+ 4.01 1.57 lineto
+closepath stroke
+ 4.00 1.68 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.15 1.78 moveto
+ 4.30 1.79 lineto
+closepath stroke
+ 4.15 1.78 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.01 1.57 moveto
+ 4.17 1.57 lineto
+closepath stroke
+ 4.01 1.57 moveto
+ 4.00 1.46 lineto
+closepath stroke
+ 4.17 1.57 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.17 1.57 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.00 1.46 moveto
+ 4.01 1.33 lineto
+closepath stroke
+ 4.00 1.46 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.01 1.33 moveto
+ 4.20 1.33 lineto
+closepath stroke
+ 4.01 1.33 moveto
+ 4.00 1.21 lineto
+closepath stroke
+ 4.20 1.33 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.20 1.33 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.00 1.21 moveto
+ 4.01 1.07 lineto
+closepath stroke
+ 4.00 1.21 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.01 1.07 moveto
+ 4.23 1.07 lineto
+closepath stroke
+ 4.01 1.07 moveto
+ 4.00 0.94 lineto
+closepath stroke
+ 4.23 1.07 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.23 1.07 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.00 0.94 moveto
+ 4.02 0.79 lineto
+closepath stroke
+ 4.00 0.94 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.02 0.79 moveto
+ 4.26 0.79 lineto
+closepath stroke
+ 4.02 0.79 moveto
+ 4.00 0.64 lineto
+closepath stroke
+ 4.26 0.79 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.26 0.79 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.00 0.64 moveto
+ 4.02 0.32 lineto
+closepath stroke
+ 4.00 0.64 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.02 0.32 moveto
+ 4.29 0.32 lineto
+closepath stroke
+ 4.02 0.32 moveto
+ 4.00 0.00 lineto
+closepath stroke
+ 4.29 0.32 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.29 0.32 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 4.90 2.94 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 5.02 2.76 lineto
+closepath stroke
+ 4.98 2.85 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 4.90 2.94 moveto
+ 4.82 2.94 lineto
+closepath stroke
+ 5.02 2.76 moveto
+ 4.93 2.78 lineto
+closepath stroke
+ 5.02 2.76 moveto
+ 5.06 2.65 lineto
+closepath stroke
+ 4.93 2.78 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.93 2.78 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 5.06 2.65 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.06 2.65 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.10 2.77 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.10 2.71 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.12 2.66 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.13 2.59 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.12 2.66 moveto
+ 4.17 2.72 lineto
+closepath stroke
+ 4.17 2.72 moveto
+ 4.22 2.72 lineto
+closepath stroke
+ 4.17 2.72 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.15 2.53 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.16 2.46 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.15 2.53 moveto
+ 4.21 2.60 lineto
+closepath stroke
+ 4.21 2.60 moveto
+ 4.27 2.60 lineto
+closepath stroke
+ 4.21 2.60 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.18 2.39 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.19 2.32 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.18 2.39 moveto
+ 4.25 2.47 lineto
+closepath stroke
+ 4.25 2.47 moveto
+ 4.33 2.47 lineto
+closepath stroke
+ 4.25 2.47 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.21 2.24 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.22 2.16 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.21 2.24 moveto
+ 4.29 2.32 lineto
+closepath stroke
+ 4.29 2.32 moveto
+ 4.39 2.33 lineto
+closepath stroke
+ 4.29 2.32 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.25 2.07 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.26 1.98 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.25 2.07 moveto
+ 4.35 2.16 lineto
+closepath stroke
+ 4.35 2.16 moveto
+ 4.46 2.18 lineto
+closepath stroke
+ 4.35 2.16 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.29 1.89 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.30 1.79 moveto
+ 4.33 1.69 lineto
+closepath stroke
+ 4.29 1.89 moveto
+ 4.40 1.99 lineto
+closepath stroke
+ 4.40 1.99 moveto
+ 4.53 2.01 lineto
+closepath stroke
+ 4.40 1.99 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.33 1.69 moveto
+ 4.34 1.57 lineto
+closepath stroke
+ 4.33 1.69 moveto
+ 4.47 1.79 lineto
+closepath stroke
+ 4.34 1.57 moveto
+ 4.38 1.46 lineto
+closepath stroke
+ 4.34 1.57 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.47 1.79 moveto
+ 4.62 1.82 lineto
+closepath stroke
+ 4.47 1.79 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.38 1.46 moveto
+ 4.53 1.58 lineto
+closepath stroke
+ 4.38 1.46 moveto
+ 4.39 1.34 lineto
+closepath stroke
+ 4.53 1.58 moveto
+ 4.71 1.61 lineto
+closepath stroke
+ 4.53 1.58 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.39 1.34 moveto
+ 4.43 1.22 lineto
+closepath stroke
+ 4.39 1.34 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.43 1.22 moveto
+ 4.61 1.35 lineto
+closepath stroke
+ 4.43 1.22 moveto
+ 4.45 1.08 lineto
+closepath stroke
+ 4.61 1.35 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.61 1.35 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.45 1.08 moveto
+ 4.49 0.95 lineto
+closepath stroke
+ 4.45 1.08 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.49 0.95 moveto
+ 4.69 1.09 lineto
+closepath stroke
+ 4.49 0.95 moveto
+ 4.50 0.80 lineto
+closepath stroke
+ 4.69 1.09 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.69 1.09 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.50 0.80 moveto
+ 4.55 0.65 lineto
+closepath stroke
+ 4.50 0.80 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.55 0.65 moveto
+ 4.78 0.81 lineto
+closepath stroke
+ 4.55 0.65 moveto
+ 4.57 0.33 lineto
+closepath stroke
+ 4.78 0.81 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.78 0.81 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 4.57 0.33 moveto
+ 4.88 0.33 lineto
+closepath stroke
+ 4.57 0.33 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 4.62 0.00 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 4.88 0.33 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 4.82 2.94 moveto
+ 4.81 2.89 lineto
+closepath stroke
+ 4.82 2.94 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.20 2.78 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.22 2.72 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.25 2.67 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.27 2.60 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.25 2.67 moveto
+ 4.28 2.73 lineto
+closepath stroke
+ 4.28 2.73 moveto
+ 4.34 2.74 lineto
+closepath stroke
+ 4.28 2.73 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.30 2.54 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.33 2.47 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.30 2.54 moveto
+ 4.35 2.61 lineto
+closepath stroke
+ 4.35 2.61 moveto
+ 4.41 2.63 lineto
+closepath stroke
+ 4.35 2.61 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.36 2.41 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.39 2.33 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.36 2.41 moveto
+ 4.42 2.49 lineto
+closepath stroke
+ 4.42 2.49 moveto
+ 4.50 2.51 lineto
+closepath stroke
+ 4.42 2.49 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.43 2.26 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.46 2.18 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.43 2.26 moveto
+ 4.50 2.35 lineto
+closepath stroke
+ 4.50 2.35 moveto
+ 4.60 2.38 lineto
+closepath stroke
+ 4.50 2.35 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.50 2.10 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.53 2.01 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.50 2.10 moveto
+ 4.59 2.20 lineto
+closepath stroke
+ 4.59 2.20 moveto
+ 4.70 2.23 lineto
+closepath stroke
+ 4.59 2.20 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.58 1.92 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.62 1.82 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.58 1.92 moveto
+ 4.69 2.03 lineto
+closepath stroke
+ 4.69 2.03 moveto
+ 4.82 2.07 lineto
+closepath stroke
+ 4.69 2.03 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.67 1.72 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.71 1.61 moveto
+ 4.77 1.50 lineto
+closepath stroke
+ 4.67 1.72 moveto
+ 4.79 1.85 lineto
+closepath stroke
+ 4.79 1.85 moveto
+ 4.95 1.89 lineto
+closepath stroke
+ 4.79 1.85 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.77 1.50 moveto
+ 4.81 1.38 lineto
+closepath stroke
+ 4.77 1.50 moveto
+ 4.91 1.64 lineto
+closepath stroke
+ 4.81 1.38 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.81 1.38 moveto
+ 4.88 1.27 lineto
+closepath stroke
+ 4.91 1.64 moveto
+ 5.09 1.70 lineto
+closepath stroke
+ 4.91 1.64 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.88 1.27 moveto
+ 4.92 1.13 lineto
+closepath stroke
+ 4.88 1.27 moveto
+ 5.04 1.42 lineto
+closepath stroke
+ 4.92 1.13 moveto
+ 5.00 1.00 lineto
+closepath stroke
+ 4.92 1.13 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.04 1.42 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.04 1.42 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.00 1.00 moveto
+ 5.18 1.17 lineto
+closepath stroke
+ 5.00 1.00 moveto
+ 5.04 0.86 lineto
+closepath stroke
+ 5.18 1.17 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.18 1.17 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.04 0.86 moveto
+ 5.12 0.71 lineto
+closepath stroke
+ 5.04 0.86 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.34 0.90 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.21 0.56 lineto
+closepath stroke
+ 5.12 0.71 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.34 0.90 moveto
+ 5.41 1.25 lineto
+closepath stroke
+ 5.34 0.90 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.21 0.56 moveto
+ 5.51 0.61 lineto
+closepath stroke
+ 5.21 0.56 moveto
+ 5.27 0.23 lineto
+closepath stroke
+ 5.51 0.61 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.51 0.61 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.27 0.23 moveto
+ 5.60 0.23 lineto
+closepath stroke
+ 5.27 0.23 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.80 0.23 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.60 0.23 moveto
+ 5.27 0.00 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 5.80 0.00 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 5.80 0.84 lineto
+closepath stroke
+ 5.80 0.23 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.74 2.95 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.85 2.82 lineto
+closepath stroke
+ 4.81 2.89 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.74 2.95 moveto
+ 4.66 2.95 lineto
+closepath stroke
+ 4.85 2.82 moveto
+ 4.77 2.83 lineto
+closepath stroke
+ 4.85 2.82 moveto
+ 4.89 2.72 lineto
+closepath stroke
+ 4.77 2.83 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.77 2.83 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.89 2.72 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.89 2.72 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.30 2.79 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.34 2.74 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.38 2.69 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.41 2.63 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.38 2.69 moveto
+ 4.40 2.75 lineto
+closepath stroke
+ 4.40 2.75 moveto
+ 4.45 2.77 lineto
+closepath stroke
+ 4.40 2.75 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.46 2.57 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.50 2.51 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.46 2.57 moveto
+ 4.49 2.65 lineto
+closepath stroke
+ 4.49 2.65 moveto
+ 4.55 2.67 lineto
+closepath stroke
+ 4.49 2.65 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.55 2.45 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.60 2.38 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.55 2.45 moveto
+ 4.60 2.54 lineto
+closepath stroke
+ 4.60 2.54 moveto
+ 4.67 2.57 lineto
+closepath stroke
+ 4.60 2.54 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.66 2.31 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.70 2.23 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.66 2.31 moveto
+ 4.71 2.41 lineto
+closepath stroke
+ 4.71 2.41 moveto
+ 4.80 2.45 lineto
+closepath stroke
+ 4.71 2.41 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.77 2.16 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.82 2.07 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.77 2.16 moveto
+ 4.83 2.27 lineto
+closepath stroke
+ 4.83 2.27 moveto
+ 4.94 2.33 lineto
+closepath stroke
+ 4.83 2.27 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 4.89 1.99 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 4.95 1.89 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 4.89 1.99 moveto
+ 4.97 2.12 lineto
+closepath stroke
+ 4.97 2.12 moveto
+ 5.09 2.19 lineto
+closepath stroke
+ 4.97 2.12 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.02 1.81 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.09 1.70 moveto
+ 5.17 1.60 lineto
+closepath stroke
+ 5.02 1.81 moveto
+ 5.12 1.95 lineto
+closepath stroke
+ 5.12 1.95 moveto
+ 5.26 2.03 lineto
+closepath stroke
+ 5.12 1.95 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.17 1.60 moveto
+ 5.24 1.49 lineto
+closepath stroke
+ 5.17 1.60 moveto
+ 5.29 1.77 lineto
+closepath stroke
+ 5.24 1.49 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.24 1.49 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.29 1.77 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.29 1.77 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.41 1.25 moveto
+ 5.49 1.11 lineto
+closepath stroke
+ 5.41 1.25 moveto
+ 5.33 1.38 lineto
+closepath stroke
+ 5.49 1.11 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.49 1.11 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.33 1.38 moveto
+ 5.47 1.57 lineto
+closepath stroke
+ 5.47 1.57 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.47 1.57 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.80 0.84 moveto
+ 6.00 0.61 lineto
+closepath stroke
+ 5.80 0.84 moveto
+ 5.71 1.00 lineto
+closepath stroke
+ 5.71 1.00 moveto
+ 5.78 1.34 lineto
+closepath stroke
+ 5.78 1.34 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 5.78 1.34 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 4.66 2.95 moveto
+ 4.65 2.92 lineto
+closepath stroke
+ 4.66 2.95 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.40 2.82 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.45 2.77 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.50 2.73 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.55 2.67 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.50 2.73 moveto
+ 4.51 2.79 lineto
+closepath stroke
+ 4.51 2.79 moveto
+ 4.55 2.82 lineto
+closepath stroke
+ 4.51 2.79 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.62 2.63 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.67 2.57 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.62 2.63 moveto
+ 4.63 2.71 lineto
+closepath stroke
+ 4.63 2.71 moveto
+ 4.68 2.74 lineto
+closepath stroke
+ 4.63 2.71 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.74 2.52 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.80 2.45 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.74 2.52 moveto
+ 4.76 2.61 lineto
+closepath stroke
+ 4.76 2.61 moveto
+ 4.82 2.66 lineto
+closepath stroke
+ 4.76 2.61 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 4.87 2.40 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 4.94 2.33 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 4.87 2.40 moveto
+ 4.90 2.51 lineto
+closepath stroke
+ 4.90 2.51 moveto
+ 4.97 2.57 lineto
+closepath stroke
+ 4.90 2.51 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.02 2.27 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.09 2.19 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.02 2.27 moveto
+ 5.06 2.39 lineto
+closepath stroke
+ 5.06 2.39 moveto
+ 5.14 2.47 lineto
+closepath stroke
+ 5.06 2.39 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.18 2.12 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.26 2.03 moveto
+ 5.36 1.96 lineto
+closepath stroke
+ 5.18 2.12 moveto
+ 5.23 2.27 lineto
+closepath stroke
+ 5.23 2.27 moveto
+ 5.33 2.36 lineto
+closepath stroke
+ 5.23 2.27 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.36 1.96 moveto
+ 5.45 1.86 lineto
+closepath stroke
+ 5.36 1.96 moveto
+ 5.42 2.13 lineto
+closepath stroke
+ 5.45 1.86 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.45 1.86 moveto
+ 5.56 1.78 lineto
+closepath stroke
+ 5.42 2.13 moveto
+ 5.54 2.24 lineto
+closepath stroke
+ 5.42 2.13 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.56 1.78 moveto
+ 5.65 1.68 lineto
+closepath stroke
+ 5.56 1.78 moveto
+ 5.63 1.98 lineto
+closepath stroke
+ 5.65 1.68 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.65 1.68 moveto
+ 5.78 1.68 lineto
+closepath stroke
+ 5.63 1.98 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 5.63 1.98 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 5.78 1.68 moveto
+ 6.00 1.56 lineto
+closepath stroke
+ 5.78 1.68 moveto
+ 5.87 1.90 lineto
+closepath stroke
+ 5.87 1.90 moveto
+ 6.00 2.11 lineto
+closepath stroke
+ 5.87 1.90 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.59 2.97 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.70 2.87 lineto
+closepath stroke
+ 4.65 2.92 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.70 2.87 moveto
+ 4.62 2.88 lineto
+closepath stroke
+ 4.70 2.87 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.62 2.88 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.62 2.88 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.49 2.86 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.55 2.82 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.61 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.68 2.74 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.61 2.79 moveto
+ 4.60 2.85 lineto
+closepath stroke
+ 4.60 2.85 moveto
+ 4.56 2.91 lineto
+closepath stroke
+ 4.82 2.66 moveto
+ 4.75 2.71 lineto
+closepath stroke
+ 4.82 2.66 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.75 2.71 moveto
+ 4.74 2.79 lineto
+closepath stroke
+ 4.97 2.57 moveto
+ 4.90 2.63 lineto
+closepath stroke
+ 4.97 2.57 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.47 moveto
+ 5.06 2.53 lineto
+closepath stroke
+ 5.14 2.47 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.33 2.36 moveto
+ 5.24 2.43 lineto
+closepath stroke
+ 5.33 2.36 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.54 2.24 moveto
+ 5.44 2.31 lineto
+closepath stroke
+ 5.54 2.24 moveto
+ 5.76 2.19 lineto
+closepath stroke
+ 6.00 2.11 moveto
+ 5.87 2.11 lineto
+closepath stroke
+ 5.87 2.11 moveto
+ 5.76 2.19 lineto
+closepath stroke
+showpage
+%%EndDocument
+ @endspecial 116 x @beginspecial 40 @vscale 40 @hscale 200
+@hoffset -200 @voffset @setspecial
+%%BeginDocument: mat.ps.8
+%!
+%%Creator: PSPLTM routine
+%%BoundingBox: 264.22 133.90 1290.26 1257.14
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 16.9700 cm moveto
+(Assembled Matrix) Cshow
+ 3.81000 cm 2.00000 cm translate
+ 13.9700 cm 1257 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 1257 0 lineto
+ 1257 1257 lineto
+ 0 1257 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 1255 p
+ 880 1255 p
+ 881 1255 p
+ 918 1255 p
+ 1 1254 p
+ 1161 1254 p
+ 1160 1254 p
+ 1199 1254 p
+ 2 1253 p
+ 469 1253 p
+ 468 1253 p
+ 472 1253 p
+ 3 1252 p
+ 730 1252 p
+ 731 1252 p
+ 732 1252 p
+ 4 1251 p
+ 330 1251 p
+ 332 1251 p
+ 333 1251 p
+ 1202 1251 p
+ 1233 1251 p
+ 5 1250 p
+ 332 1250 p
+ 331 1250 p
+ 335 1250 p
+ 337 1250 p
+ 1121 1250 p
+ 1164 1250 p
+ 6 1249 p
+ 337 1249 p
+ 336 1249 p
+ 339 1249 p
+ 341 1249 p
+ 1041 1249 p
+ 1080 1249 p
+ 7 1248 p
+ 341 1248 p
+ 340 1248 p
+ 343 1248 p
+ 345 1248 p
+ 961 1248 p
+ 963 1248 p
+ 8 1247 p
+ 345 1247 p
+ 344 1247 p
+ 347 1247 p
+ 349 1247 p
+ 882 1247 p
+ 920 1247 p
+ 9 1246 p
+ 349 1246 p
+ 348 1246 p
+ 351 1246 p
+ 353 1246 p
+ 820 1246 p
+ 845 1246 p
+ 10 1245 p
+ 353 1245 p
+ 352 1245 p
+ 356 1245 p
+ 799 1245 p
+ 798 1245 p
+ 11 1244 p
+ 334 1244 p
+ 333 1244 p
+ 357 1244 p
+ 359 1244 p
+ 12 1243 p
+ 331 1243 p
+ 330 1243 p
+ 334 1243 p
+ 338 1243 p
+ 358 1243 p
+ 361 1243 p
+ 13 1242 p
+ 336 1242 p
+ 335 1242 p
+ 338 1242 p
+ 342 1242 p
+ 362 1242 p
+ 364 1242 p
+ 14 1241 p
+ 340 1241 p
+ 339 1241 p
+ 342 1241 p
+ 346 1241 p
+ 365 1241 p
+ 367 1241 p
+ 15 1240 p
+ 344 1240 p
+ 343 1240 p
+ 346 1240 p
+ 350 1240 p
+ 368 1240 p
+ 370 1240 p
+ 16 1239 p
+ 348 1239 p
+ 347 1239 p
+ 350 1239 p
+ 354 1239 p
+ 371 1239 p
+ 373 1239 p
+ 17 1238 p
+ 352 1238 p
+ 351 1238 p
+ 354 1238 p
+ 355 1238 p
+ 374 1238 p
+ 376 1238 p
+ 18 1237 p
+ 356 1237 p
+ 355 1237 p
+ 377 1237 p
+ 19 1236 p
+ 360 1236 p
+ 359 1236 p
+ 379 1236 p
+ 381 1236 p
+ 20 1235 p
+ 358 1235 p
+ 357 1235 p
+ 360 1235 p
+ 363 1235 p
+ 380 1235 p
+ 383 1235 p
+ 21 1234 p
+ 362 1234 p
+ 361 1234 p
+ 363 1234 p
+ 366 1234 p
+ 384 1234 p
+ 386 1234 p
+ 22 1233 p
+ 365 1233 p
+ 364 1233 p
+ 366 1233 p
+ 369 1233 p
+ 387 1233 p
+ 389 1233 p
+ 23 1232 p
+ 368 1232 p
+ 367 1232 p
+ 369 1232 p
+ 372 1232 p
+ 390 1232 p
+ 392 1232 p
+ 24 1231 p
+ 371 1231 p
+ 370 1231 p
+ 372 1231 p
+ 375 1231 p
+ 393 1231 p
+ 395 1231 p
+ 25 1230 p
+ 374 1230 p
+ 373 1230 p
+ 375 1230 p
+ 378 1230 p
+ 396 1230 p
+ 398 1230 p
+ 26 1229 p
+ 377 1229 p
+ 376 1229 p
+ 378 1229 p
+ 399 1229 p
+ 402 1229 p
+ 404 1229 p
+ 27 1228 p
+ 382 1228 p
+ 381 1228 p
+ 406 1228 p
+ 408 1228 p
+ 28 1227 p
+ 380 1227 p
+ 379 1227 p
+ 382 1227 p
+ 385 1227 p
+ 405 1227 p
+ 410 1227 p
+ 29 1226 p
+ 384 1226 p
+ 383 1226 p
+ 385 1226 p
+ 388 1226 p
+ 409 1226 p
+ 413 1226 p
+ 30 1225 p
+ 387 1225 p
+ 386 1225 p
+ 388 1225 p
+ 391 1225 p
+ 412 1225 p
+ 415 1225 p
+ 31 1224 p
+ 390 1224 p
+ 389 1224 p
+ 391 1224 p
+ 394 1224 p
+ 416 1224 p
+ 418 1224 p
+ 32 1223 p
+ 393 1223 p
+ 392 1223 p
+ 394 1223 p
+ 397 1223 p
+ 419 1223 p
+ 421 1223 p
+ 33 1222 p
+ 396 1222 p
+ 395 1222 p
+ 397 1222 p
+ 400 1222 p
+ 422 1222 p
+ 424 1222 p
+ 34 1221 p
+ 399 1221 p
+ 398 1221 p
+ 400 1221 p
+ 401 1221 p
+ 425 1221 p
+ 427 1221 p
+ 35 1220 p
+ 402 1220 p
+ 401 1220 p
+ 403 1220 p
+ 428 1220 p
+ 430 1220 p
+ 36 1219 p
+ 404 1219 p
+ 403 1219 p
+ 431 1219 p
+ 434 1219 p
+ 37 1218 p
+ 407 1218 p
+ 408 1218 p
+ 436 1218 p
+ 438 1218 p
+ 38 1217 p
+ 405 1217 p
+ 406 1217 p
+ 407 1217 p
+ 411 1217 p
+ 435 1217 p
+ 440 1217 p
+ 39 1216 p
+ 409 1216 p
+ 410 1216 p
+ 411 1216 p
+ 414 1216 p
+ 439 1216 p
+ 443 1216 p
+ 40 1215 p
+ 412 1215 p
+ 413 1215 p
+ 414 1215 p
+ 417 1215 p
+ 442 1215 p
+ 446 1215 p
+ 41 1214 p
+ 416 1214 p
+ 415 1214 p
+ 417 1214 p
+ 420 1214 p
+ 445 1214 p
+ 449 1214 p
+ 42 1213 p
+ 419 1213 p
+ 418 1213 p
+ 420 1213 p
+ 423 1213 p
+ 448 1213 p
+ 452 1213 p
+ 43 1212 p
+ 422 1212 p
+ 421 1212 p
+ 423 1212 p
+ 426 1212 p
+ 451 1212 p
+ 455 1212 p
+ 44 1211 p
+ 425 1211 p
+ 424 1211 p
+ 426 1211 p
+ 429 1211 p
+ 454 1211 p
+ 457 1211 p
+ 45 1210 p
+ 428 1210 p
+ 427 1210 p
+ 429 1210 p
+ 432 1210 p
+ 458 1210 p
+ 460 1210 p
+ 46 1209 p
+ 431 1209 p
+ 430 1209 p
+ 432 1209 p
+ 433 1209 p
+ 461 1209 p
+ 464 1209 p
+ 465 1209 p
+ 47 1208 p
+ 434 1208 p
+ 433 1208 p
+ 466 1208 p
+ 470 1208 p
+ 469 1208 p
+ 48 1207 p
+ 437 1207 p
+ 438 1207 p
+ 475 1207 p
+ 477 1207 p
+ 49 1206 p
+ 435 1206 p
+ 436 1206 p
+ 437 1206 p
+ 441 1206 p
+ 474 1206 p
+ 479 1206 p
+ 50 1205 p
+ 439 1205 p
+ 440 1205 p
+ 441 1205 p
+ 444 1205 p
+ 478 1205 p
+ 482 1205 p
+ 51 1204 p
+ 442 1204 p
+ 443 1204 p
+ 444 1204 p
+ 447 1204 p
+ 481 1204 p
+ 485 1204 p
+ 52 1203 p
+ 445 1203 p
+ 446 1203 p
+ 447 1203 p
+ 450 1203 p
+ 484 1203 p
+ 488 1203 p
+ 53 1202 p
+ 448 1202 p
+ 449 1202 p
+ 450 1202 p
+ 453 1202 p
+ 487 1202 p
+ 491 1202 p
+ 54 1201 p
+ 451 1201 p
+ 452 1201 p
+ 453 1201 p
+ 456 1201 p
+ 490 1201 p
+ 494 1201 p
+ 55 1200 p
+ 454 1200 p
+ 455 1200 p
+ 456 1200 p
+ 459 1200 p
+ 493 1200 p
+ 497 1200 p
+ 56 1199 p
+ 458 1199 p
+ 457 1199 p
+ 459 1199 p
+ 462 1199 p
+ 496 1199 p
+ 500 1199 p
+ 57 1198 p
+ 461 1198 p
+ 460 1198 p
+ 462 1198 p
+ 463 1198 p
+ 499 1198 p
+ 503 1198 p
+ 58 1197 p
+ 464 1197 p
+ 463 1197 p
+ 467 1197 p
+ 502 1197 p
+ 507 1197 p
+ 59 1196 p
+ 466 1196 p
+ 465 1196 p
+ 467 1196 p
+ 471 1196 p
+ 506 1196 p
+ 60 1195 p
+ 468 1195 p
+ 470 1195 p
+ 471 1195 p
+ 473 1195 p
+ 505 1195 p
+ 509 1195 p
+ 61 1194 p
+ 472 1194 p
+ 473 1194 p
+ 511 1194 p
+ 62 1193 p
+ 476 1193 p
+ 477 1193 p
+ 513 1193 p
+ 515 1193 p
+ 63 1192 p
+ 474 1192 p
+ 475 1192 p
+ 476 1192 p
+ 480 1192 p
+ 512 1192 p
+ 517 1192 p
+ 64 1191 p
+ 478 1191 p
+ 479 1191 p
+ 480 1191 p
+ 483 1191 p
+ 516 1191 p
+ 520 1191 p
+ 65 1190 p
+ 481 1190 p
+ 482 1190 p
+ 483 1190 p
+ 486 1190 p
+ 519 1190 p
+ 523 1190 p
+ 66 1189 p
+ 484 1189 p
+ 485 1189 p
+ 486 1189 p
+ 489 1189 p
+ 522 1189 p
+ 526 1189 p
+ 67 1188 p
+ 487 1188 p
+ 488 1188 p
+ 489 1188 p
+ 492 1188 p
+ 525 1188 p
+ 529 1188 p
+ 68 1187 p
+ 490 1187 p
+ 491 1187 p
+ 492 1187 p
+ 495 1187 p
+ 528 1187 p
+ 532 1187 p
+ 69 1186 p
+ 493 1186 p
+ 494 1186 p
+ 495 1186 p
+ 498 1186 p
+ 531 1186 p
+ 535 1186 p
+ 70 1185 p
+ 496 1185 p
+ 497 1185 p
+ 498 1185 p
+ 501 1185 p
+ 534 1185 p
+ 538 1185 p
+ 71 1184 p
+ 499 1184 p
+ 500 1184 p
+ 501 1184 p
+ 504 1184 p
+ 537 1184 p
+ 541 1184 p
+ 72 1183 p
+ 502 1183 p
+ 503 1183 p
+ 504 1183 p
+ 508 1183 p
+ 540 1183 p
+ 544 1183 p
+ 73 1182 p
+ 505 1182 p
+ 506 1182 p
+ 507 1182 p
+ 508 1182 p
+ 510 1182 p
+ 543 1182 p
+ 547 1182 p
+ 74 1181 p
+ 509 1181 p
+ 510 1181 p
+ 511 1181 p
+ 546 1181 p
+ 75 1180 p
+ 514 1180 p
+ 515 1180 p
+ 550 1180 p
+ 76 1179 p
+ 512 1179 p
+ 513 1179 p
+ 514 1179 p
+ 518 1179 p
+ 549 1179 p
+ 552 1179 p
+ 77 1178 p
+ 516 1178 p
+ 517 1178 p
+ 518 1178 p
+ 521 1178 p
+ 551 1178 p
+ 555 1178 p
+ 78 1177 p
+ 519 1177 p
+ 520 1177 p
+ 521 1177 p
+ 524 1177 p
+ 554 1177 p
+ 558 1177 p
+ 79 1176 p
+ 522 1176 p
+ 523 1176 p
+ 524 1176 p
+ 527 1176 p
+ 557 1176 p
+ 561 1176 p
+ 80 1175 p
+ 525 1175 p
+ 526 1175 p
+ 527 1175 p
+ 530 1175 p
+ 560 1175 p
+ 564 1175 p
+ 81 1174 p
+ 528 1174 p
+ 529 1174 p
+ 530 1174 p
+ 533 1174 p
+ 563 1174 p
+ 567 1174 p
+ 82 1173 p
+ 531 1173 p
+ 532 1173 p
+ 533 1173 p
+ 536 1173 p
+ 566 1173 p
+ 570 1173 p
+ 83 1172 p
+ 534 1172 p
+ 535 1172 p
+ 536 1172 p
+ 539 1172 p
+ 569 1172 p
+ 573 1172 p
+ 84 1171 p
+ 537 1171 p
+ 538 1171 p
+ 539 1171 p
+ 542 1171 p
+ 572 1171 p
+ 576 1171 p
+ 85 1170 p
+ 540 1170 p
+ 541 1170 p
+ 542 1170 p
+ 545 1170 p
+ 575 1170 p
+ 579 1170 p
+ 86 1169 p
+ 543 1169 p
+ 544 1169 p
+ 545 1169 p
+ 548 1169 p
+ 578 1169 p
+ 582 1169 p
+ 87 1168 p
+ 546 1168 p
+ 547 1168 p
+ 548 1168 p
+ 581 1168 p
+ 584 1168 p
+ 88 1167 p
+ 549 1167 p
+ 550 1167 p
+ 553 1167 p
+ 587 1167 p
+ 89 1166 p
+ 551 1166 p
+ 552 1166 p
+ 553 1166 p
+ 556 1166 p
+ 586 1166 p
+ 589 1166 p
+ 90 1165 p
+ 554 1165 p
+ 555 1165 p
+ 556 1165 p
+ 559 1165 p
+ 588 1165 p
+ 592 1165 p
+ 91 1164 p
+ 557 1164 p
+ 558 1164 p
+ 559 1164 p
+ 562 1164 p
+ 591 1164 p
+ 595 1164 p
+ 92 1163 p
+ 560 1163 p
+ 561 1163 p
+ 562 1163 p
+ 565 1163 p
+ 594 1163 p
+ 598 1163 p
+ 93 1162 p
+ 563 1162 p
+ 564 1162 p
+ 565 1162 p
+ 568 1162 p
+ 597 1162 p
+ 601 1162 p
+ 94 1161 p
+ 566 1161 p
+ 567 1161 p
+ 568 1161 p
+ 571 1161 p
+ 600 1161 p
+ 604 1161 p
+ 95 1160 p
+ 569 1160 p
+ 570 1160 p
+ 571 1160 p
+ 574 1160 p
+ 603 1160 p
+ 607 1160 p
+ 96 1159 p
+ 572 1159 p
+ 573 1159 p
+ 574 1159 p
+ 577 1159 p
+ 606 1159 p
+ 610 1159 p
+ 97 1158 p
+ 575 1158 p
+ 576 1158 p
+ 577 1158 p
+ 580 1158 p
+ 609 1158 p
+ 613 1158 p
+ 98 1157 p
+ 578 1157 p
+ 579 1157 p
+ 580 1157 p
+ 583 1157 p
+ 612 1157 p
+ 616 1157 p
+ 99 1156 p
+ 581 1156 p
+ 582 1156 p
+ 583 1156 p
+ 585 1156 p
+ 615 1156 p
+ 619 1156 p
+ 100 1155 p
+ 584 1155 p
+ 585 1155 p
+ 618 1155 p
+ 621 1155 p
+ 101 1154 p
+ 586 1154 p
+ 587 1154 p
+ 590 1154 p
+ 624 1154 p
+ 102 1153 p
+ 588 1153 p
+ 589 1153 p
+ 590 1153 p
+ 593 1153 p
+ 623 1153 p
+ 626 1153 p
+ 103 1152 p
+ 591 1152 p
+ 592 1152 p
+ 593 1152 p
+ 596 1152 p
+ 625 1152 p
+ 629 1152 p
+ 104 1151 p
+ 594 1151 p
+ 595 1151 p
+ 596 1151 p
+ 599 1151 p
+ 628 1151 p
+ 632 1151 p
+ 105 1150 p
+ 597 1150 p
+ 598 1150 p
+ 599 1150 p
+ 602 1150 p
+ 631 1150 p
+ 635 1150 p
+ 106 1149 p
+ 600 1149 p
+ 601 1149 p
+ 602 1149 p
+ 605 1149 p
+ 634 1149 p
+ 638 1149 p
+ 107 1148 p
+ 603 1148 p
+ 604 1148 p
+ 605 1148 p
+ 608 1148 p
+ 637 1148 p
+ 641 1148 p
+ 108 1147 p
+ 606 1147 p
+ 607 1147 p
+ 608 1147 p
+ 611 1147 p
+ 640 1147 p
+ 644 1147 p
+ 109 1146 p
+ 609 1146 p
+ 610 1146 p
+ 611 1146 p
+ 614 1146 p
+ 643 1146 p
+ 647 1146 p
+ 110 1145 p
+ 612 1145 p
+ 613 1145 p
+ 614 1145 p
+ 617 1145 p
+ 646 1145 p
+ 650 1145 p
+ 111 1144 p
+ 615 1144 p
+ 616 1144 p
+ 617 1144 p
+ 620 1144 p
+ 649 1144 p
+ 653 1144 p
+ 112 1143 p
+ 618 1143 p
+ 619 1143 p
+ 620 1143 p
+ 622 1143 p
+ 652 1143 p
+ 656 1143 p
+ 113 1142 p
+ 621 1142 p
+ 622 1142 p
+ 655 1142 p
+ 658 1142 p
+ 114 1141 p
+ 623 1141 p
+ 624 1141 p
+ 627 1141 p
+ 661 1141 p
+ 115 1140 p
+ 625 1140 p
+ 626 1140 p
+ 627 1140 p
+ 630 1140 p
+ 660 1140 p
+ 663 1140 p
+ 116 1139 p
+ 628 1139 p
+ 629 1139 p
+ 630 1139 p
+ 633 1139 p
+ 662 1139 p
+ 666 1139 p
+ 117 1138 p
+ 631 1138 p
+ 632 1138 p
+ 633 1138 p
+ 636 1138 p
+ 665 1138 p
+ 669 1138 p
+ 118 1137 p
+ 634 1137 p
+ 635 1137 p
+ 636 1137 p
+ 639 1137 p
+ 668 1137 p
+ 119 1136 p
+ 637 1136 p
+ 638 1136 p
+ 639 1136 p
+ 642 1136 p
+ 671 1136 p
+ 673 1136 p
+ 120 1135 p
+ 640 1135 p
+ 641 1135 p
+ 642 1135 p
+ 645 1135 p
+ 672 1135 p
+ 676 1135 p
+ 121 1134 p
+ 643 1134 p
+ 644 1134 p
+ 645 1134 p
+ 648 1134 p
+ 675 1134 p
+ 679 1134 p
+ 122 1133 p
+ 646 1133 p
+ 647 1133 p
+ 648 1133 p
+ 651 1133 p
+ 678 1133 p
+ 682 1133 p
+ 123 1132 p
+ 649 1132 p
+ 650 1132 p
+ 651 1132 p
+ 654 1132 p
+ 681 1132 p
+ 685 1132 p
+ 124 1131 p
+ 652 1131 p
+ 653 1131 p
+ 654 1131 p
+ 657 1131 p
+ 684 1131 p
+ 688 1131 p
+ 125 1130 p
+ 655 1130 p
+ 656 1130 p
+ 657 1130 p
+ 659 1130 p
+ 687 1130 p
+ 691 1130 p
+ 693 1130 p
+ 126 1129 p
+ 658 1129 p
+ 659 1129 p
+ 692 1129 p
+ 695 1129 p
+ 127 1128 p
+ 660 1128 p
+ 661 1128 p
+ 664 1128 p
+ 698 1128 p
+ 128 1127 p
+ 662 1127 p
+ 663 1127 p
+ 664 1127 p
+ 667 1127 p
+ 697 1127 p
+ 129 1126 p
+ 665 1126 p
+ 666 1126 p
+ 667 1126 p
+ 670 1126 p
+ 699 1126 p
+ 701 1126 p
+ 130 1125 p
+ 668 1125 p
+ 669 1125 p
+ 670 1125 p
+ 671 1125 p
+ 674 1125 p
+ 700 1125 p
+ 704 1125 p
+ 131 1124 p
+ 672 1124 p
+ 673 1124 p
+ 674 1124 p
+ 677 1124 p
+ 703 1124 p
+ 707 1124 p
+ 132 1123 p
+ 675 1123 p
+ 676 1123 p
+ 677 1123 p
+ 680 1123 p
+ 706 1123 p
+ 710 1123 p
+ 133 1122 p
+ 678 1122 p
+ 679 1122 p
+ 680 1122 p
+ 683 1122 p
+ 709 1122 p
+ 713 1122 p
+ 134 1121 p
+ 681 1121 p
+ 682 1121 p
+ 683 1121 p
+ 686 1121 p
+ 712 1121 p
+ 716 1121 p
+ 135 1120 p
+ 684 1120 p
+ 685 1120 p
+ 686 1120 p
+ 689 1120 p
+ 715 1120 p
+ 719 1120 p
+ 136 1119 p
+ 687 1119 p
+ 688 1119 p
+ 689 1119 p
+ 690 1119 p
+ 718 1119 p
+ 722 1119 p
+ 137 1118 p
+ 691 1118 p
+ 690 1118 p
+ 694 1118 p
+ 721 1118 p
+ 725 1118 p
+ 138 1117 p
+ 692 1117 p
+ 693 1117 p
+ 694 1117 p
+ 696 1117 p
+ 724 1117 p
+ 728 1117 p
+ 139 1116 p
+ 695 1116 p
+ 696 1116 p
+ 727 1116 p
+ 730 1116 p
+ 140 1115 p
+ 697 1115 p
+ 698 1115 p
+ 699 1115 p
+ 702 1115 p
+ 735 1115 p
+ 141 1114 p
+ 700 1114 p
+ 701 1114 p
+ 702 1114 p
+ 705 1114 p
+ 734 1114 p
+ 142 1113 p
+ 703 1113 p
+ 704 1113 p
+ 705 1113 p
+ 708 1113 p
+ 736 1113 p
+ 738 1113 p
+ 143 1112 p
+ 706 1112 p
+ 707 1112 p
+ 708 1112 p
+ 711 1112 p
+ 737 1112 p
+ 741 1112 p
+ 144 1111 p
+ 709 1111 p
+ 710 1111 p
+ 711 1111 p
+ 714 1111 p
+ 740 1111 p
+ 744 1111 p
+ 145 1110 p
+ 712 1110 p
+ 713 1110 p
+ 714 1110 p
+ 717 1110 p
+ 743 1110 p
+ 747 1110 p
+ 146 1109 p
+ 715 1109 p
+ 716 1109 p
+ 717 1109 p
+ 720 1109 p
+ 746 1109 p
+ 750 1109 p
+ 147 1108 p
+ 718 1108 p
+ 719 1108 p
+ 720 1108 p
+ 723 1108 p
+ 749 1108 p
+ 753 1108 p
+ 148 1107 p
+ 721 1107 p
+ 722 1107 p
+ 723 1107 p
+ 726 1107 p
+ 752 1107 p
+ 757 1107 p
+ 149 1106 p
+ 724 1106 p
+ 725 1106 p
+ 726 1106 p
+ 729 1106 p
+ 756 1106 p
+ 150 1105 p
+ 727 1105 p
+ 728 1105 p
+ 729 1105 p
+ 731 1105 p
+ 733 1105 p
+ 755 1105 p
+ 759 1105 p
+ 151 1104 p
+ 732 1104 p
+ 733 1104 p
+ 761 1104 p
+ 152 1103 p
+ 734 1103 p
+ 735 1103 p
+ 736 1103 p
+ 739 1103 p
+ 763 1103 p
+ 153 1102 p
+ 737 1102 p
+ 738 1102 p
+ 739 1102 p
+ 742 1102 p
+ 762 1102 p
+ 154 1101 p
+ 740 1101 p
+ 741 1101 p
+ 742 1101 p
+ 745 1101 p
+ 764 1101 p
+ 766 1101 p
+ 155 1100 p
+ 743 1100 p
+ 744 1100 p
+ 745 1100 p
+ 748 1100 p
+ 765 1100 p
+ 769 1100 p
+ 156 1099 p
+ 746 1099 p
+ 747 1099 p
+ 748 1099 p
+ 751 1099 p
+ 768 1099 p
+ 772 1099 p
+ 157 1098 p
+ 749 1098 p
+ 750 1098 p
+ 751 1098 p
+ 754 1098 p
+ 771 1098 p
+ 775 1098 p
+ 158 1097 p
+ 752 1097 p
+ 753 1097 p
+ 754 1097 p
+ 758 1097 p
+ 774 1097 p
+ 778 1097 p
+ 159 1096 p
+ 755 1096 p
+ 756 1096 p
+ 757 1096 p
+ 758 1096 p
+ 760 1096 p
+ 777 1096 p
+ 781 1096 p
+ 160 1095 p
+ 759 1095 p
+ 760 1095 p
+ 761 1095 p
+ 780 1095 p
+ 161 1094 p
+ 762 1094 p
+ 763 1094 p
+ 764 1094 p
+ 767 1094 p
+ 784 1094 p
+ 162 1093 p
+ 765 1093 p
+ 766 1093 p
+ 767 1093 p
+ 770 1093 p
+ 783 1093 p
+ 163 1092 p
+ 768 1092 p
+ 769 1092 p
+ 770 1092 p
+ 773 1092 p
+ 785 1092 p
+ 787 1092 p
+ 164 1091 p
+ 771 1091 p
+ 772 1091 p
+ 773 1091 p
+ 776 1091 p
+ 786 1091 p
+ 790 1091 p
+ 165 1090 p
+ 774 1090 p
+ 775 1090 p
+ 776 1090 p
+ 779 1090 p
+ 789 1090 p
+ 793 1090 p
+ 166 1089 p
+ 777 1089 p
+ 778 1089 p
+ 779 1089 p
+ 782 1089 p
+ 792 1089 p
+ 796 1089 p
+ 167 1088 p
+ 780 1088 p
+ 781 1088 p
+ 782 1088 p
+ 795 1088 p
+ 168 1087 p
+ 783 1087 p
+ 784 1087 p
+ 785 1087 p
+ 788 1087 p
+ 803 1087 p
+ 802 1087 p
+ 805 1087 p
+ 169 1086 p
+ 786 1086 p
+ 787 1086 p
+ 788 1086 p
+ 791 1086 p
+ 804 1086 p
+ 808 1086 p
+ 170 1085 p
+ 789 1085 p
+ 790 1085 p
+ 791 1085 p
+ 794 1085 p
+ 807 1085 p
+ 811 1085 p
+ 171 1084 p
+ 792 1084 p
+ 793 1084 p
+ 794 1084 p
+ 797 1084 p
+ 810 1084 p
+ 814 1084 p
+ 172 1083 p
+ 795 1083 p
+ 796 1083 p
+ 797 1083 p
+ 813 1083 p
+ 816 1083 p
+ 173 1082 p
+ 801 1082 p
+ 803 1082 p
+ 822 1082 p
+ 821 1082 p
+ 824 1082 p
+ 174 1081 p
+ 802 1081 p
+ 801 1081 p
+ 806 1081 p
+ 826 1081 p
+ 828 1081 p
+ 175 1080 p
+ 804 1080 p
+ 805 1080 p
+ 806 1080 p
+ 809 1080 p
+ 827 1080 p
+ 831 1080 p
+ 176 1079 p
+ 807 1079 p
+ 808 1079 p
+ 809 1079 p
+ 812 1079 p
+ 830 1079 p
+ 834 1079 p
+ 177 1078 p
+ 810 1078 p
+ 811 1078 p
+ 812 1078 p
+ 815 1078 p
+ 833 1078 p
+ 837 1078 p
+ 178 1077 p
+ 813 1077 p
+ 814 1077 p
+ 815 1077 p
+ 817 1077 p
+ 836 1077 p
+ 840 1077 p
+ 179 1076 p
+ 816 1076 p
+ 817 1076 p
+ 839 1076 p
+ 842 1076 p
+ 180 1075 p
+ 823 1075 p
+ 822 1075 p
+ 850 1075 p
+ 849 1075 p
+ 852 1075 p
+ 181 1074 p
+ 821 1074 p
+ 823 1074 p
+ 825 1074 p
+ 854 1074 p
+ 855 1074 p
+ 182 1073 p
+ 824 1073 p
+ 825 1073 p
+ 826 1073 p
+ 829 1073 p
+ 857 1073 p
+ 858 1073 p
+ 183 1072 p
+ 827 1072 p
+ 828 1072 p
+ 829 1072 p
+ 832 1072 p
+ 860 1072 p
+ 861 1072 p
+ 184 1071 p
+ 830 1071 p
+ 831 1071 p
+ 832 1071 p
+ 835 1071 p
+ 863 1071 p
+ 864 1071 p
+ 185 1070 p
+ 833 1070 p
+ 834 1070 p
+ 835 1070 p
+ 838 1070 p
+ 866 1070 p
+ 868 1070 p
+ 186 1069 p
+ 836 1069 p
+ 837 1069 p
+ 838 1069 p
+ 841 1069 p
+ 867 1069 p
+ 871 1069 p
+ 187 1068 p
+ 839 1068 p
+ 840 1068 p
+ 841 1068 p
+ 843 1068 p
+ 870 1068 p
+ 873 1068 p
+ 876 1068 p
+ 188 1067 p
+ 842 1067 p
+ 843 1067 p
+ 875 1067 p
+ 878 1067 p
+ 189 1066 p
+ 851 1066 p
+ 850 1066 p
+ 883 1066 p
+ 885 1066 p
+ 886 1066 p
+ 190 1065 p
+ 849 1065 p
+ 851 1065 p
+ 853 1065 p
+ 887 1065 p
+ 889 1065 p
+ 191 1064 p
+ 852 1064 p
+ 853 1064 p
+ 854 1064 p
+ 856 1064 p
+ 891 1064 p
+ 892 1064 p
+ 192 1063 p
+ 855 1063 p
+ 856 1063 p
+ 857 1063 p
+ 859 1063 p
+ 894 1063 p
+ 895 1063 p
+ 193 1062 p
+ 858 1062 p
+ 859 1062 p
+ 860 1062 p
+ 862 1062 p
+ 897 1062 p
+ 898 1062 p
+ 194 1061 p
+ 861 1061 p
+ 862 1061 p
+ 863 1061 p
+ 865 1061 p
+ 900 1061 p
+ 901 1061 p
+ 195 1060 p
+ 864 1060 p
+ 865 1060 p
+ 866 1060 p
+ 869 1060 p
+ 903 1060 p
+ 904 1060 p
+ 196 1059 p
+ 867 1059 p
+ 868 1059 p
+ 869 1059 p
+ 872 1059 p
+ 906 1059 p
+ 907 1059 p
+ 197 1058 p
+ 870 1058 p
+ 871 1058 p
+ 872 1058 p
+ 874 1058 p
+ 909 1058 p
+ 910 1058 p
+ 198 1057 p
+ 873 1057 p
+ 874 1057 p
+ 877 1057 p
+ 912 1057 p
+ 913 1057 p
+ 199 1056 p
+ 875 1056 p
+ 876 1056 p
+ 877 1056 p
+ 879 1056 p
+ 881 1056 p
+ 915 1056 p
+ 916 1056 p
+ 200 1055 p
+ 878 1055 p
+ 879 1055 p
+ 880 1055 p
+ 201 1054 p
+ 884 1054 p
+ 883 1054 p
+ 923 1054 p
+ 925 1054 p
+ 202 1053 p
+ 885 1053 p
+ 884 1053 p
+ 888 1053 p
+ 924 1053 p
+ 927 1053 p
+ 203 1052 p
+ 887 1052 p
+ 886 1052 p
+ 888 1052 p
+ 890 1052 p
+ 928 1052 p
+ 930 1052 p
+ 204 1051 p
+ 889 1051 p
+ 890 1051 p
+ 891 1051 p
+ 893 1051 p
+ 931 1051 p
+ 933 1051 p
+ 935 1051 p
+ 205 1050 p
+ 892 1050 p
+ 893 1050 p
+ 894 1050 p
+ 896 1050 p
+ 937 1050 p
+ 938 1050 p
+ 206 1049 p
+ 895 1049 p
+ 896 1049 p
+ 897 1049 p
+ 899 1049 p
+ 940 1049 p
+ 941 1049 p
+ 207 1048 p
+ 898 1048 p
+ 899 1048 p
+ 900 1048 p
+ 902 1048 p
+ 943 1048 p
+ 944 1048 p
+ 208 1047 p
+ 901 1047 p
+ 902 1047 p
+ 903 1047 p
+ 905 1047 p
+ 946 1047 p
+ 947 1047 p
+ 209 1046 p
+ 904 1046 p
+ 905 1046 p
+ 906 1046 p
+ 908 1046 p
+ 949 1046 p
+ 950 1046 p
+ 210 1045 p
+ 907 1045 p
+ 908 1045 p
+ 909 1045 p
+ 911 1045 p
+ 952 1045 p
+ 955 1045 p
+ 211 1044 p
+ 910 1044 p
+ 911 1044 p
+ 912 1044 p
+ 914 1044 p
+ 953 1044 p
+ 212 1043 p
+ 913 1043 p
+ 914 1043 p
+ 915 1043 p
+ 917 1043 p
+ 954 1043 p
+ 957 1043 p
+ 213 1042 p
+ 916 1042 p
+ 917 1042 p
+ 918 1042 p
+ 958 1042 p
+ 214 1041 p
+ 926 1041 p
+ 925 1041 p
+ 964 1041 p
+ 966 1041 p
+ 215 1040 p
+ 924 1040 p
+ 923 1040 p
+ 926 1040 p
+ 929 1040 p
+ 965 1040 p
+ 969 1040 p
+ 216 1039 p
+ 928 1039 p
+ 927 1039 p
+ 929 1039 p
+ 932 1039 p
+ 968 1039 p
+ 972 1039 p
+ 217 1038 p
+ 931 1038 p
+ 930 1038 p
+ 932 1038 p
+ 934 1038 p
+ 971 1038 p
+ 975 1038 p
+ 218 1037 p
+ 933 1037 p
+ 934 1037 p
+ 936 1037 p
+ 974 1037 p
+ 977 1037 p
+ 219 1036 p
+ 935 1036 p
+ 936 1036 p
+ 937 1036 p
+ 939 1036 p
+ 979 1036 p
+ 980 1036 p
+ 220 1035 p
+ 938 1035 p
+ 939 1035 p
+ 940 1035 p
+ 942 1035 p
+ 982 1035 p
+ 983 1035 p
+ 221 1034 p
+ 941 1034 p
+ 942 1034 p
+ 943 1034 p
+ 945 1034 p
+ 985 1034 p
+ 986 1034 p
+ 222 1033 p
+ 944 1033 p
+ 945 1033 p
+ 946 1033 p
+ 948 1033 p
+ 988 1033 p
+ 989 1033 p
+ 223 1032 p
+ 947 1032 p
+ 948 1032 p
+ 949 1032 p
+ 951 1032 p
+ 991 1032 p
+ 992 1032 p
+ 224 1031 p
+ 950 1031 p
+ 951 1031 p
+ 952 1031 p
+ 956 1031 p
+ 994 1031 p
+ 995 1031 p
+ 225 1030 p
+ 954 1030 p
+ 953 1030 p
+ 955 1030 p
+ 956 1030 p
+ 959 1030 p
+ 997 1030 p
+ 998 1030 p
+ 226 1029 p
+ 958 1029 p
+ 957 1029 p
+ 959 1029 p
+ 1000 1029 p
+ 227 1028 p
+ 967 1028 p
+ 966 1028 p
+ 1004 1028 p
+ 1006 1028 p
+ 228 1027 p
+ 965 1027 p
+ 964 1027 p
+ 967 1027 p
+ 970 1027 p
+ 1003 1027 p
+ 1008 1027 p
+ 229 1026 p
+ 968 1026 p
+ 969 1026 p
+ 970 1026 p
+ 973 1026 p
+ 1007 1026 p
+ 1011 1026 p
+ 230 1025 p
+ 971 1025 p
+ 972 1025 p
+ 973 1025 p
+ 976 1025 p
+ 1010 1025 p
+ 1014 1025 p
+ 231 1024 p
+ 974 1024 p
+ 975 1024 p
+ 976 1024 p
+ 978 1024 p
+ 1013 1024 p
+ 1017 1024 p
+ 232 1023 p
+ 977 1023 p
+ 978 1023 p
+ 979 1023 p
+ 981 1023 p
+ 1016 1023 p
+ 1019 1023 p
+ 233 1022 p
+ 980 1022 p
+ 981 1022 p
+ 982 1022 p
+ 984 1022 p
+ 1020 1022 p
+ 1022 1022 p
+ 234 1021 p
+ 983 1021 p
+ 984 1021 p
+ 985 1021 p
+ 987 1021 p
+ 1024 1021 p
+ 1025 1021 p
+ 235 1020 p
+ 986 1020 p
+ 987 1020 p
+ 988 1020 p
+ 990 1020 p
+ 1027 1020 p
+ 1028 1020 p
+ 236 1019 p
+ 989 1019 p
+ 990 1019 p
+ 991 1019 p
+ 993 1019 p
+ 1030 1019 p
+ 1031 1019 p
+ 237 1018 p
+ 992 1018 p
+ 993 1018 p
+ 994 1018 p
+ 996 1018 p
+ 1033 1018 p
+ 1034 1018 p
+ 238 1017 p
+ 995 1017 p
+ 996 1017 p
+ 997 1017 p
+ 999 1017 p
+ 1036 1017 p
+ 1037 1017 p
+ 239 1016 p
+ 998 1016 p
+ 999 1016 p
+ 1000 1016 p
+ 1039 1016 p
+ 240 1015 p
+ 1005 1015 p
+ 1006 1015 p
+ 1043 1015 p
+ 1045 1015 p
+ 241 1014 p
+ 1003 1014 p
+ 1004 1014 p
+ 1005 1014 p
+ 1009 1014 p
+ 1042 1014 p
+ 1047 1014 p
+ 242 1013 p
+ 1007 1013 p
+ 1008 1013 p
+ 1009 1013 p
+ 1012 1013 p
+ 1046 1013 p
+ 1050 1013 p
+ 243 1012 p
+ 1010 1012 p
+ 1011 1012 p
+ 1012 1012 p
+ 1015 1012 p
+ 1049 1012 p
+ 1053 1012 p
+ 244 1011 p
+ 1013 1011 p
+ 1014 1011 p
+ 1015 1011 p
+ 1018 1011 p
+ 1052 1011 p
+ 1056 1011 p
+ 245 1010 p
+ 1016 1010 p
+ 1017 1010 p
+ 1018 1010 p
+ 1021 1010 p
+ 1055 1010 p
+ 1059 1010 p
+ 246 1009 p
+ 1020 1009 p
+ 1019 1009 p
+ 1021 1009 p
+ 1023 1009 p
+ 1058 1009 p
+ 1061 1009 p
+ 247 1008 p
+ 1022 1008 p
+ 1023 1008 p
+ 1024 1008 p
+ 1026 1008 p
+ 1062 1008 p
+ 1064 1008 p
+ 248 1007 p
+ 1025 1007 p
+ 1026 1007 p
+ 1027 1007 p
+ 1029 1007 p
+ 1066 1007 p
+ 1067 1007 p
+ 249 1006 p
+ 1028 1006 p
+ 1029 1006 p
+ 1030 1006 p
+ 1032 1006 p
+ 1069 1006 p
+ 1070 1006 p
+ 250 1005 p
+ 1031 1005 p
+ 1032 1005 p
+ 1033 1005 p
+ 1035 1005 p
+ 1072 1005 p
+ 1073 1005 p
+ 251 1004 p
+ 1034 1004 p
+ 1035 1004 p
+ 1036 1004 p
+ 1038 1004 p
+ 1075 1004 p
+ 1076 1004 p
+ 252 1003 p
+ 1037 1003 p
+ 1038 1003 p
+ 1039 1003 p
+ 1078 1003 p
+ 253 1002 p
+ 1044 1002 p
+ 1045 1002 p
+ 1085 1002 p
+ 254 1001 p
+ 1042 1001 p
+ 1043 1001 p
+ 1044 1001 p
+ 1048 1001 p
+ 1084 1001 p
+ 1087 1001 p
+ 255 1000 p
+ 1046 1000 p
+ 1047 1000 p
+ 1048 1000 p
+ 1051 1000 p
+ 1086 1000 p
+ 1090 1000 p
+ 256 999 p
+ 1049 999 p
+ 1050 999 p
+ 1051 999 p
+ 1054 999 p
+ 1089 999 p
+ 1093 999 p
+ 257 998 p
+ 1052 998 p
+ 1053 998 p
+ 1054 998 p
+ 1057 998 p
+ 1092 998 p
+ 1096 998 p
+ 258 997 p
+ 1055 997 p
+ 1056 997 p
+ 1057 997 p
+ 1060 997 p
+ 1095 997 p
+ 1099 997 p
+ 259 996 p
+ 1058 996 p
+ 1059 996 p
+ 1060 996 p
+ 1063 996 p
+ 1098 996 p
+ 1102 996 p
+ 260 995 p
+ 1062 995 p
+ 1061 995 p
+ 1063 995 p
+ 1065 995 p
+ 1101 995 p
+ 1104 995 p
+ 261 994 p
+ 1064 994 p
+ 1065 994 p
+ 1066 994 p
+ 1068 994 p
+ 1105 994 p
+ 1107 994 p
+ 262 993 p
+ 1067 993 p
+ 1068 993 p
+ 1069 993 p
+ 1071 993 p
+ 1109 993 p
+ 1110 993 p
+ 263 992 p
+ 1070 992 p
+ 1071 992 p
+ 1072 992 p
+ 1074 992 p
+ 1112 992 p
+ 1113 992 p
+ 264 991 p
+ 1073 991 p
+ 1074 991 p
+ 1075 991 p
+ 1077 991 p
+ 1115 991 p
+ 1116 991 p
+ 265 990 p
+ 1076 990 p
+ 1077 990 p
+ 1078 990 p
+ 1118 990 p
+ 1120 990 p
+ 266 989 p
+ 1084 989 p
+ 1085 989 p
+ 1088 989 p
+ 1123 989 p
+ 267 988 p
+ 1086 988 p
+ 1087 988 p
+ 1088 988 p
+ 1091 988 p
+ 1122 988 p
+ 1125 988 p
+ 268 987 p
+ 1089 987 p
+ 1090 987 p
+ 1091 987 p
+ 1094 987 p
+ 1124 987 p
+ 1128 987 p
+ 269 986 p
+ 1092 986 p
+ 1093 986 p
+ 1094 986 p
+ 1097 986 p
+ 1127 986 p
+ 1131 986 p
+ 270 985 p
+ 1095 985 p
+ 1096 985 p
+ 1097 985 p
+ 1100 985 p
+ 1130 985 p
+ 1134 985 p
+ 271 984 p
+ 1098 984 p
+ 1099 984 p
+ 1100 984 p
+ 1103 984 p
+ 1133 984 p
+ 1137 984 p
+ 272 983 p
+ 1101 983 p
+ 1102 983 p
+ 1103 983 p
+ 1106 983 p
+ 1136 983 p
+ 1140 983 p
+ 273 982 p
+ 1105 982 p
+ 1104 982 p
+ 1106 982 p
+ 1108 982 p
+ 1139 982 p
+ 1143 982 p
+ 274 981 p
+ 1107 981 p
+ 1108 981 p
+ 1109 981 p
+ 1111 981 p
+ 1142 981 p
+ 1145 981 p
+ 275 980 p
+ 1110 980 p
+ 1111 980 p
+ 1112 980 p
+ 1114 980 p
+ 1146 980 p
+ 1148 980 p
+ 276 979 p
+ 1113 979 p
+ 1114 979 p
+ 1115 979 p
+ 1117 979 p
+ 1149 979 p
+ 1151 979 p
+ 277 978 p
+ 1116 978 p
+ 1117 978 p
+ 1118 978 p
+ 1119 978 p
+ 1153 978 p
+ 1154 978 p
+ 1156 978 p
+ 278 977 p
+ 1120 977 p
+ 1119 977 p
+ 1158 977 p
+ 1162 977 p
+ 279 976 p
+ 1122 976 p
+ 1123 976 p
+ 1126 976 p
+ 1169 976 p
+ 280 975 p
+ 1124 975 p
+ 1125 975 p
+ 1126 975 p
+ 1129 975 p
+ 1168 975 p
+ 1171 975 p
+ 281 974 p
+ 1127 974 p
+ 1128 974 p
+ 1129 974 p
+ 1132 974 p
+ 1170 974 p
+ 1174 974 p
+ 282 973 p
+ 1130 973 p
+ 1131 973 p
+ 1132 973 p
+ 1135 973 p
+ 1173 973 p
+ 1177 973 p
+ 283 972 p
+ 1133 972 p
+ 1134 972 p
+ 1135 972 p
+ 1138 972 p
+ 1176 972 p
+ 1180 972 p
+ 284 971 p
+ 1136 971 p
+ 1137 971 p
+ 1138 971 p
+ 1141 971 p
+ 1179 971 p
+ 1183 971 p
+ 285 970 p
+ 1139 970 p
+ 1140 970 p
+ 1141 970 p
+ 1144 970 p
+ 1182 970 p
+ 1186 970 p
+ 286 969 p
+ 1142 969 p
+ 1143 969 p
+ 1144 969 p
+ 1147 969 p
+ 1185 969 p
+ 1189 969 p
+ 287 968 p
+ 1146 968 p
+ 1145 968 p
+ 1147 968 p
+ 1150 968 p
+ 1188 968 p
+ 1191 968 p
+ 288 967 p
+ 1149 967 p
+ 1148 967 p
+ 1150 967 p
+ 1152 967 p
+ 1192 967 p
+ 1196 967 p
+ 289 966 p
+ 1151 966 p
+ 1152 966 p
+ 1153 966 p
+ 1155 966 p
+ 1194 966 p
+ 290 965 p
+ 1154 965 p
+ 1155 965 p
+ 1157 965 p
+ 1195 965 p
+ 1200 965 p
+ 291 964 p
+ 1156 964 p
+ 1157 964 p
+ 1158 964 p
+ 1160 964 p
+ 1159 964 p
+ 1198 964 p
+ 292 963 p
+ 1159 963 p
+ 1161 963 p
+ 1162 963 p
+ 293 962 p
+ 1168 962 p
+ 1169 962 p
+ 1172 962 p
+ 1204 962 p
+ 294 961 p
+ 1170 961 p
+ 1171 961 p
+ 1172 961 p
+ 1175 961 p
+ 1203 961 p
+ 1206 961 p
+ 295 960 p
+ 1173 960 p
+ 1174 960 p
+ 1175 960 p
+ 1178 960 p
+ 1205 960 p
+ 1209 960 p
+ 296 959 p
+ 1176 959 p
+ 1177 959 p
+ 1178 959 p
+ 1181 959 p
+ 1208 959 p
+ 1212 959 p
+ 297 958 p
+ 1179 958 p
+ 1180 958 p
+ 1181 958 p
+ 1184 958 p
+ 1211 958 p
+ 1215 958 p
+ 298 957 p
+ 1182 957 p
+ 1183 957 p
+ 1184 957 p
+ 1187 957 p
+ 1214 957 p
+ 1218 957 p
+ 299 956 p
+ 1185 956 p
+ 1186 956 p
+ 1187 956 p
+ 1190 956 p
+ 1217 956 p
+ 1221 956 p
+ 300 955 p
+ 1188 955 p
+ 1189 955 p
+ 1190 955 p
+ 1193 955 p
+ 1220 955 p
+ 1223 955 p
+ 301 954 p
+ 1192 954 p
+ 1191 954 p
+ 1193 954 p
+ 1197 954 p
+ 1224 954 p
+ 1226 954 p
+ 302 953 p
+ 1195 953 p
+ 1194 953 p
+ 1196 953 p
+ 1197 953 p
+ 1201 953 p
+ 1227 953 p
+ 1229 953 p
+ 303 952 p
+ 1199 952 p
+ 1198 952 p
+ 1200 952 p
+ 1201 952 p
+ 1230 952 p
+ 304 951 p
+ 1203 951 p
+ 1204 951 p
+ 1207 951 p
+ 1237 951 p
+ 305 950 p
+ 1205 950 p
+ 1206 950 p
+ 1207 950 p
+ 1210 950 p
+ 1236 950 p
+ 1239 950 p
+ 306 949 p
+ 1208 949 p
+ 1209 949 p
+ 1210 949 p
+ 1213 949 p
+ 1238 949 p
+ 1242 949 p
+ 307 948 p
+ 1211 948 p
+ 1212 948 p
+ 1213 948 p
+ 1216 948 p
+ 1241 948 p
+ 1245 948 p
+ 308 947 p
+ 1214 947 p
+ 1215 947 p
+ 1216 947 p
+ 1219 947 p
+ 1244 947 p
+ 1247 947 p
+ 309 946 p
+ 1217 946 p
+ 1218 946 p
+ 1219 946 p
+ 1222 946 p
+ 1246 946 p
+ 1249 946 p
+ 310 945 p
+ 1220 945 p
+ 1221 945 p
+ 1222 945 p
+ 1225 945 p
+ 1248 945 p
+ 1251 945 p
+ 311 944 p
+ 1224 944 p
+ 1223 944 p
+ 1225 944 p
+ 1228 944 p
+ 1250 944 p
+ 1254 944 p
+ 312 943 p
+ 1227 943 p
+ 1226 943 p
+ 1228 943 p
+ 1231 943 p
+ 1253 943 p
+ 313 942 p
+ 1230 942 p
+ 1229 942 p
+ 1231 942 p
+ 1252 942 p
+ 314 941 p
+ 1236 941 p
+ 1237 941 p
+ 1240 941 p
+ 1255 941 p
+ 315 940 p
+ 1235 940 p
+ 1234 940 p
+ 1238 940 p
+ 1239 940 p
+ 1240 940 p
+ 1243 940 p
+ 316 939 p
+ 1166 939 p
+ 1165 939 p
+ 1167 939 p
+ 1241 939 p
+ 1242 939 p
+ 1243 939 p
+ 317 938 p
+ 1082 938 p
+ 1081 938 p
+ 1083 938 p
+ 1167 938 p
+ 1244 938 p
+ 1245 938 p
+ 318 937 p
+ 1002 937 p
+ 1001 937 p
+ 1040 937 p
+ 1083 937 p
+ 1246 937 p
+ 1247 937 p
+ 319 936 p
+ 922 936 p
+ 921 936 p
+ 960 936 p
+ 1040 936 p
+ 1248 936 p
+ 1249 936 p
+ 320 935 p
+ 847 935 p
+ 846 935 p
+ 848 935 p
+ 960 935 p
+ 1250 935 p
+ 1251 935 p
+ 321 934 p
+ 819 934 p
+ 818 934 p
+ 848 934 p
+ 1252 934 p
+ 1253 934 p
+ 1254 934 p
+ 322 933 p
+ 1233 933 p
+ 1232 933 p
+ 1235 933 p
+ 1255 933 p
+ 323 932 p
+ 1164 932 p
+ 1163 932 p
+ 1166 932 p
+ 1202 932 p
+ 1232 932 p
+ 1234 932 p
+ 324 931 p
+ 1080 931 p
+ 1079 931 p
+ 1082 931 p
+ 1121 931 p
+ 1163 931 p
+ 1165 931 p
+ 325 930 p
+ 963 930 p
+ 962 930 p
+ 1002 930 p
+ 1041 930 p
+ 1079 930 p
+ 1081 930 p
+ 326 929 p
+ 920 929 p
+ 919 929 p
+ 922 929 p
+ 961 929 p
+ 962 929 p
+ 1001 929 p
+ 327 928 p
+ 845 928 p
+ 844 928 p
+ 847 928 p
+ 882 928 p
+ 919 928 p
+ 921 928 p
+ 328 927 p
+ 798 927 p
+ 800 927 p
+ 819 927 p
+ 820 927 p
+ 844 927 p
+ 846 927 p
+ 329 926 p
+ 800 926 p
+ 799 926 p
+ 818 926 p
+ 330 925 p
+ 331 925 p
+ 332 925 p
+ 333 925 p
+ 334 925 p
+ 4 925 p
+ 12 925 p
+ 330 924 p
+ 331 924 p
+ 332 924 p
+ 338 924 p
+ 335 924 p
+ 12 924 p
+ 5 924 p
+ 330 923 p
+ 331 923 p
+ 332 923 p
+ 1164 923 p
+ 1202 923 p
+ 4 923 p
+ 5 923 p
+ 333 922 p
+ 334 922 p
+ 330 922 p
+ 4 922 p
+ 11 922 p
+ 333 921 p
+ 334 921 p
+ 330 921 p
+ 357 921 p
+ 358 921 p
+ 11 921 p
+ 12 921 p
+ 335 920 p
+ 336 920 p
+ 337 920 p
+ 331 920 p
+ 338 920 p
+ 5 920 p
+ 13 920 p
+ 335 919 p
+ 336 919 p
+ 337 919 p
+ 342 919 p
+ 339 919 p
+ 13 919 p
+ 6 919 p
+ 335 918 p
+ 336 918 p
+ 337 918 p
+ 1080 918 p
+ 1121 918 p
+ 5 918 p
+ 6 918 p
+ 331 917 p
+ 338 917 p
+ 335 917 p
+ 361 917 p
+ 362 917 p
+ 12 917 p
+ 13 917 p
+ 339 916 p
+ 340 916 p
+ 341 916 p
+ 336 916 p
+ 342 916 p
+ 6 916 p
+ 14 916 p
+ 339 915 p
+ 340 915 p
+ 341 915 p
+ 346 915 p
+ 343 915 p
+ 14 915 p
+ 7 915 p
+ 339 914 p
+ 340 914 p
+ 341 914 p
+ 963 914 p
+ 1041 914 p
+ 6 914 p
+ 7 914 p
+ 336 913 p
+ 342 913 p
+ 339 913 p
+ 364 913 p
+ 365 913 p
+ 13 913 p
+ 14 913 p
+ 343 912 p
+ 344 912 p
+ 345 912 p
+ 340 912 p
+ 346 912 p
+ 7 912 p
+ 15 912 p
+ 343 911 p
+ 344 911 p
+ 345 911 p
+ 350 911 p
+ 347 911 p
+ 15 911 p
+ 8 911 p
+ 343 910 p
+ 344 910 p
+ 345 910 p
+ 920 910 p
+ 961 910 p
+ 7 910 p
+ 8 910 p
+ 340 909 p
+ 346 909 p
+ 343 909 p
+ 367 909 p
+ 368 909 p
+ 14 909 p
+ 15 909 p
+ 347 908 p
+ 348 908 p
+ 349 908 p
+ 344 908 p
+ 350 908 p
+ 8 908 p
+ 16 908 p
+ 347 907 p
+ 348 907 p
+ 349 907 p
+ 354 907 p
+ 351 907 p
+ 16 907 p
+ 9 907 p
+ 347 906 p
+ 348 906 p
+ 349 906 p
+ 845 906 p
+ 882 906 p
+ 8 906 p
+ 9 906 p
+ 344 905 p
+ 350 905 p
+ 347 905 p
+ 370 905 p
+ 371 905 p
+ 15 905 p
+ 16 905 p
+ 351 904 p
+ 352 904 p
+ 353 904 p
+ 348 904 p
+ 354 904 p
+ 9 904 p
+ 17 904 p
+ 351 903 p
+ 352 903 p
+ 353 903 p
+ 355 903 p
+ 356 903 p
+ 17 903 p
+ 10 903 p
+ 351 902 p
+ 352 902 p
+ 353 902 p
+ 798 902 p
+ 820 902 p
+ 9 902 p
+ 10 902 p
+ 348 901 p
+ 354 901 p
+ 351 901 p
+ 373 901 p
+ 374 901 p
+ 16 901 p
+ 17 901 p
+ 355 900 p
+ 356 900 p
+ 352 900 p
+ 376 900 p
+ 377 900 p
+ 17 900 p
+ 18 900 p
+ 355 899 p
+ 356 899 p
+ 352 899 p
+ 18 899 p
+ 10 899 p
+ 357 898 p
+ 358 898 p
+ 334 898 p
+ 359 898 p
+ 360 898 p
+ 11 898 p
+ 20 898 p
+ 357 897 p
+ 358 897 p
+ 334 897 p
+ 363 897 p
+ 361 897 p
+ 20 897 p
+ 12 897 p
+ 359 896 p
+ 360 896 p
+ 357 896 p
+ 11 896 p
+ 19 896 p
+ 359 895 p
+ 360 895 p
+ 357 895 p
+ 379 895 p
+ 380 895 p
+ 19 895 p
+ 20 895 p
+ 361 894 p
+ 362 894 p
+ 338 894 p
+ 358 894 p
+ 363 894 p
+ 12 894 p
+ 21 894 p
+ 361 893 p
+ 362 893 p
+ 338 893 p
+ 366 893 p
+ 364 893 p
+ 21 893 p
+ 13 893 p
+ 358 892 p
+ 363 892 p
+ 361 892 p
+ 383 892 p
+ 384 892 p
+ 20 892 p
+ 21 892 p
+ 364 891 p
+ 365 891 p
+ 342 891 p
+ 362 891 p
+ 366 891 p
+ 13 891 p
+ 22 891 p
+ 364 890 p
+ 365 890 p
+ 342 890 p
+ 369 890 p
+ 367 890 p
+ 22 890 p
+ 14 890 p
+ 362 889 p
+ 366 889 p
+ 364 889 p
+ 386 889 p
+ 387 889 p
+ 21 889 p
+ 22 889 p
+ 367 888 p
+ 368 888 p
+ 346 888 p
+ 365 888 p
+ 369 888 p
+ 14 888 p
+ 23 888 p
+ 367 887 p
+ 368 887 p
+ 346 887 p
+ 372 887 p
+ 370 887 p
+ 23 887 p
+ 15 887 p
+ 365 886 p
+ 369 886 p
+ 367 886 p
+ 389 886 p
+ 390 886 p
+ 22 886 p
+ 23 886 p
+ 370 885 p
+ 371 885 p
+ 350 885 p
+ 368 885 p
+ 372 885 p
+ 15 885 p
+ 24 885 p
+ 370 884 p
+ 371 884 p
+ 350 884 p
+ 375 884 p
+ 373 884 p
+ 24 884 p
+ 16 884 p
+ 368 883 p
+ 372 883 p
+ 370 883 p
+ 392 883 p
+ 393 883 p
+ 23 883 p
+ 24 883 p
+ 373 882 p
+ 374 882 p
+ 354 882 p
+ 371 882 p
+ 375 882 p
+ 16 882 p
+ 25 882 p
+ 373 881 p
+ 374 881 p
+ 354 881 p
+ 378 881 p
+ 376 881 p
+ 25 881 p
+ 17 881 p
+ 371 880 p
+ 375 880 p
+ 373 880 p
+ 395 880 p
+ 396 880 p
+ 24 880 p
+ 25 880 p
+ 376 879 p
+ 377 879 p
+ 355 879 p
+ 374 879 p
+ 378 879 p
+ 17 879 p
+ 26 879 p
+ 376 878 p
+ 377 878 p
+ 355 878 p
+ 26 878 p
+ 18 878 p
+ 374 877 p
+ 378 877 p
+ 376 877 p
+ 398 877 p
+ 399 877 p
+ 25 877 p
+ 26 877 p
+ 379 876 p
+ 380 876 p
+ 360 876 p
+ 381 876 p
+ 382 876 p
+ 19 876 p
+ 28 876 p
+ 379 875 p
+ 380 875 p
+ 360 875 p
+ 385 875 p
+ 383 875 p
+ 28 875 p
+ 20 875 p
+ 381 874 p
+ 382 874 p
+ 379 874 p
+ 19 874 p
+ 27 874 p
+ 381 873 p
+ 382 873 p
+ 379 873 p
+ 405 873 p
+ 406 873 p
+ 27 873 p
+ 28 873 p
+ 383 872 p
+ 384 872 p
+ 363 872 p
+ 380 872 p
+ 385 872 p
+ 20 872 p
+ 29 872 p
+ 383 871 p
+ 384 871 p
+ 363 871 p
+ 388 871 p
+ 386 871 p
+ 29 871 p
+ 21 871 p
+ 380 870 p
+ 385 870 p
+ 383 870 p
+ 409 870 p
+ 410 870 p
+ 28 870 p
+ 29 870 p
+ 386 869 p
+ 387 869 p
+ 366 869 p
+ 384 869 p
+ 388 869 p
+ 21 869 p
+ 30 869 p
+ 386 868 p
+ 387 868 p
+ 366 868 p
+ 391 868 p
+ 389 868 p
+ 30 868 p
+ 22 868 p
+ 384 867 p
+ 388 867 p
+ 386 867 p
+ 412 867 p
+ 413 867 p
+ 29 867 p
+ 30 867 p
+ 389 866 p
+ 390 866 p
+ 369 866 p
+ 387 866 p
+ 391 866 p
+ 22 866 p
+ 31 866 p
+ 389 865 p
+ 390 865 p
+ 369 865 p
+ 394 865 p
+ 392 865 p
+ 31 865 p
+ 23 865 p
+ 387 864 p
+ 391 864 p
+ 389 864 p
+ 415 864 p
+ 416 864 p
+ 30 864 p
+ 31 864 p
+ 392 863 p
+ 393 863 p
+ 372 863 p
+ 390 863 p
+ 394 863 p
+ 23 863 p
+ 32 863 p
+ 392 862 p
+ 393 862 p
+ 372 862 p
+ 397 862 p
+ 395 862 p
+ 32 862 p
+ 24 862 p
+ 390 861 p
+ 394 861 p
+ 392 861 p
+ 418 861 p
+ 419 861 p
+ 31 861 p
+ 32 861 p
+ 395 860 p
+ 396 860 p
+ 375 860 p
+ 393 860 p
+ 397 860 p
+ 24 860 p
+ 33 860 p
+ 395 859 p
+ 396 859 p
+ 375 859 p
+ 400 859 p
+ 398 859 p
+ 33 859 p
+ 25 859 p
+ 393 858 p
+ 397 858 p
+ 395 858 p
+ 421 858 p
+ 422 858 p
+ 32 858 p
+ 33 858 p
+ 398 857 p
+ 399 857 p
+ 378 857 p
+ 396 857 p
+ 400 857 p
+ 25 857 p
+ 34 857 p
+ 398 856 p
+ 399 856 p
+ 378 856 p
+ 401 856 p
+ 402 856 p
+ 34 856 p
+ 26 856 p
+ 396 855 p
+ 400 855 p
+ 398 855 p
+ 424 855 p
+ 425 855 p
+ 33 855 p
+ 34 855 p
+ 401 854 p
+ 402 854 p
+ 399 854 p
+ 427 854 p
+ 428 854 p
+ 34 854 p
+ 35 854 p
+ 401 853 p
+ 402 853 p
+ 399 853 p
+ 403 853 p
+ 404 853 p
+ 35 853 p
+ 26 853 p
+ 403 852 p
+ 404 852 p
+ 402 852 p
+ 430 852 p
+ 431 852 p
+ 35 852 p
+ 36 852 p
+ 403 851 p
+ 404 851 p
+ 402 851 p
+ 36 851 p
+ 26 851 p
+ 405 850 p
+ 382 850 p
+ 406 850 p
+ 411 850 p
+ 410 850 p
+ 38 850 p
+ 28 850 p
+ 405 849 p
+ 382 849 p
+ 406 849 p
+ 407 849 p
+ 408 849 p
+ 38 849 p
+ 27 849 p
+ 407 848 p
+ 406 848 p
+ 408 848 p
+ 435 848 p
+ 436 848 p
+ 37 848 p
+ 38 848 p
+ 407 847 p
+ 406 847 p
+ 408 847 p
+ 37 847 p
+ 27 847 p
+ 409 846 p
+ 385 846 p
+ 410 846 p
+ 414 846 p
+ 413 846 p
+ 39 846 p
+ 29 846 p
+ 409 845 p
+ 385 845 p
+ 410 845 p
+ 411 845 p
+ 405 845 p
+ 39 845 p
+ 28 845 p
+ 411 844 p
+ 410 844 p
+ 405 844 p
+ 439 844 p
+ 440 844 p
+ 38 844 p
+ 39 844 p
+ 412 843 p
+ 388 843 p
+ 413 843 p
+ 417 843 p
+ 415 843 p
+ 40 843 p
+ 30 843 p
+ 412 842 p
+ 388 842 p
+ 413 842 p
+ 414 842 p
+ 409 842 p
+ 40 842 p
+ 29 842 p
+ 414 841 p
+ 413 841 p
+ 409 841 p
+ 442 841 p
+ 443 841 p
+ 39 841 p
+ 40 841 p
+ 415 840 p
+ 416 840 p
+ 391 840 p
+ 412 840 p
+ 417 840 p
+ 30 840 p
+ 41 840 p
+ 415 839 p
+ 416 839 p
+ 391 839 p
+ 420 839 p
+ 418 839 p
+ 41 839 p
+ 31 839 p
+ 412 838 p
+ 417 838 p
+ 415 838 p
+ 445 838 p
+ 446 838 p
+ 40 838 p
+ 41 838 p
+ 418 837 p
+ 419 837 p
+ 394 837 p
+ 416 837 p
+ 420 837 p
+ 31 837 p
+ 42 837 p
+ 418 836 p
+ 419 836 p
+ 394 836 p
+ 423 836 p
+ 421 836 p
+ 42 836 p
+ 32 836 p
+ 416 835 p
+ 420 835 p
+ 418 835 p
+ 448 835 p
+ 449 835 p
+ 41 835 p
+ 42 835 p
+ 421 834 p
+ 422 834 p
+ 397 834 p
+ 419 834 p
+ 423 834 p
+ 32 834 p
+ 43 834 p
+ 421 833 p
+ 422 833 p
+ 397 833 p
+ 426 833 p
+ 424 833 p
+ 43 833 p
+ 33 833 p
+ 419 832 p
+ 423 832 p
+ 421 832 p
+ 451 832 p
+ 452 832 p
+ 42 832 p
+ 43 832 p
+ 424 831 p
+ 425 831 p
+ 400 831 p
+ 422 831 p
+ 426 831 p
+ 33 831 p
+ 44 831 p
+ 424 830 p
+ 425 830 p
+ 400 830 p
+ 429 830 p
+ 427 830 p
+ 44 830 p
+ 34 830 p
+ 422 829 p
+ 426 829 p
+ 424 829 p
+ 454 829 p
+ 455 829 p
+ 43 829 p
+ 44 829 p
+ 427 828 p
+ 428 828 p
+ 401 828 p
+ 425 828 p
+ 429 828 p
+ 34 828 p
+ 45 828 p
+ 427 827 p
+ 428 827 p
+ 401 827 p
+ 432 827 p
+ 430 827 p
+ 45 827 p
+ 35 827 p
+ 425 826 p
+ 429 826 p
+ 427 826 p
+ 457 826 p
+ 458 826 p
+ 44 826 p
+ 45 826 p
+ 430 825 p
+ 431 825 p
+ 403 825 p
+ 428 825 p
+ 432 825 p
+ 35 825 p
+ 46 825 p
+ 430 824 p
+ 431 824 p
+ 403 824 p
+ 433 824 p
+ 434 824 p
+ 46 824 p
+ 36 824 p
+ 428 823 p
+ 432 823 p
+ 430 823 p
+ 460 823 p
+ 461 823 p
+ 45 823 p
+ 46 823 p
+ 433 822 p
+ 434 822 p
+ 431 822 p
+ 465 822 p
+ 466 822 p
+ 46 822 p
+ 47 822 p
+ 433 821 p
+ 434 821 p
+ 431 821 p
+ 47 821 p
+ 36 821 p
+ 435 820 p
+ 407 820 p
+ 436 820 p
+ 441 820 p
+ 440 820 p
+ 49 820 p
+ 38 820 p
+ 435 819 p
+ 407 819 p
+ 436 819 p
+ 437 819 p
+ 438 819 p
+ 49 819 p
+ 37 819 p
+ 437 818 p
+ 436 818 p
+ 438 818 p
+ 474 818 p
+ 475 818 p
+ 48 818 p
+ 49 818 p
+ 437 817 p
+ 436 817 p
+ 438 817 p
+ 48 817 p
+ 37 817 p
+ 439 816 p
+ 411 816 p
+ 440 816 p
+ 444 816 p
+ 443 816 p
+ 50 816 p
+ 39 816 p
+ 439 815 p
+ 411 815 p
+ 440 815 p
+ 441 815 p
+ 435 815 p
+ 50 815 p
+ 38 815 p
+ 441 814 p
+ 440 814 p
+ 435 814 p
+ 478 814 p
+ 479 814 p
+ 49 814 p
+ 50 814 p
+ 442 813 p
+ 414 813 p
+ 443 813 p
+ 447 813 p
+ 446 813 p
+ 51 813 p
+ 40 813 p
+ 442 812 p
+ 414 812 p
+ 443 812 p
+ 444 812 p
+ 439 812 p
+ 51 812 p
+ 39 812 p
+ 444 811 p
+ 443 811 p
+ 439 811 p
+ 481 811 p
+ 482 811 p
+ 50 811 p
+ 51 811 p
+ 445 810 p
+ 417 810 p
+ 446 810 p
+ 450 810 p
+ 449 810 p
+ 52 810 p
+ 41 810 p
+ 445 809 p
+ 417 809 p
+ 446 809 p
+ 447 809 p
+ 442 809 p
+ 52 809 p
+ 40 809 p
+ 447 808 p
+ 446 808 p
+ 442 808 p
+ 484 808 p
+ 485 808 p
+ 51 808 p
+ 52 808 p
+ 448 807 p
+ 420 807 p
+ 449 807 p
+ 453 807 p
+ 452 807 p
+ 53 807 p
+ 42 807 p
+ 448 806 p
+ 420 806 p
+ 449 806 p
+ 450 806 p
+ 445 806 p
+ 53 806 p
+ 41 806 p
+ 450 805 p
+ 449 805 p
+ 445 805 p
+ 487 805 p
+ 488 805 p
+ 52 805 p
+ 53 805 p
+ 451 804 p
+ 423 804 p
+ 452 804 p
+ 456 804 p
+ 455 804 p
+ 54 804 p
+ 43 804 p
+ 451 803 p
+ 423 803 p
+ 452 803 p
+ 453 803 p
+ 448 803 p
+ 54 803 p
+ 42 803 p
+ 453 802 p
+ 452 802 p
+ 448 802 p
+ 490 802 p
+ 491 802 p
+ 53 802 p
+ 54 802 p
+ 454 801 p
+ 426 801 p
+ 455 801 p
+ 459 801 p
+ 457 801 p
+ 55 801 p
+ 44 801 p
+ 454 800 p
+ 426 800 p
+ 455 800 p
+ 456 800 p
+ 451 800 p
+ 55 800 p
+ 43 800 p
+ 456 799 p
+ 455 799 p
+ 451 799 p
+ 493 799 p
+ 494 799 p
+ 54 799 p
+ 55 799 p
+ 457 798 p
+ 458 798 p
+ 429 798 p
+ 454 798 p
+ 459 798 p
+ 44 798 p
+ 56 798 p
+ 457 797 p
+ 458 797 p
+ 429 797 p
+ 462 797 p
+ 460 797 p
+ 56 797 p
+ 45 797 p
+ 454 796 p
+ 459 796 p
+ 457 796 p
+ 496 796 p
+ 497 796 p
+ 55 796 p
+ 56 796 p
+ 460 795 p
+ 461 795 p
+ 432 795 p
+ 458 795 p
+ 462 795 p
+ 45 795 p
+ 57 795 p
+ 460 794 p
+ 461 794 p
+ 432 794 p
+ 463 794 p
+ 464 794 p
+ 57 794 p
+ 46 794 p
+ 458 793 p
+ 462 793 p
+ 460 793 p
+ 499 793 p
+ 500 793 p
+ 56 793 p
+ 57 793 p
+ 461 792 p
+ 463 792 p
+ 464 792 p
+ 502 792 p
+ 503 792 p
+ 57 792 p
+ 58 792 p
+ 461 791 p
+ 463 791 p
+ 464 791 p
+ 467 791 p
+ 465 791 p
+ 46 791 p
+ 58 791 p
+ 465 790 p
+ 466 790 p
+ 433 790 p
+ 464 790 p
+ 467 790 p
+ 46 790 p
+ 59 790 p
+ 465 789 p
+ 466 789 p
+ 433 789 p
+ 471 789 p
+ 470 789 p
+ 59 789 p
+ 47 789 p
+ 464 788 p
+ 467 788 p
+ 465 788 p
+ 506 788 p
+ 507 788 p
+ 58 788 p
+ 59 788 p
+ 468 787 p
+ 469 787 p
+ 470 787 p
+ 472 787 p
+ 473 787 p
+ 60 787 p
+ 2 787 p
+ 468 786 p
+ 469 786 p
+ 470 786 p
+ 2 786 p
+ 47 786 p
+ 468 785 p
+ 469 785 p
+ 470 785 p
+ 471 785 p
+ 466 785 p
+ 60 785 p
+ 47 785 p
+ 471 784 p
+ 470 784 p
+ 466 784 p
+ 505 784 p
+ 506 784 p
+ 59 784 p
+ 60 784 p
+ 472 783 p
+ 468 783 p
+ 473 783 p
+ 61 783 p
+ 2 783 p
+ 472 782 p
+ 468 782 p
+ 473 782 p
+ 509 782 p
+ 511 782 p
+ 61 782 p
+ 60 782 p
+ 474 781 p
+ 437 781 p
+ 475 781 p
+ 480 781 p
+ 479 781 p
+ 63 781 p
+ 49 781 p
+ 474 780 p
+ 437 780 p
+ 475 780 p
+ 476 780 p
+ 477 780 p
+ 63 780 p
+ 48 780 p
+ 476 779 p
+ 475 779 p
+ 477 779 p
+ 512 779 p
+ 513 779 p
+ 62 779 p
+ 63 779 p
+ 476 778 p
+ 475 778 p
+ 477 778 p
+ 62 778 p
+ 48 778 p
+ 478 777 p
+ 441 777 p
+ 479 777 p
+ 483 777 p
+ 482 777 p
+ 64 777 p
+ 50 777 p
+ 478 776 p
+ 441 776 p
+ 479 776 p
+ 480 776 p
+ 474 776 p
+ 64 776 p
+ 49 776 p
+ 480 775 p
+ 479 775 p
+ 474 775 p
+ 516 775 p
+ 517 775 p
+ 63 775 p
+ 64 775 p
+ 481 774 p
+ 444 774 p
+ 482 774 p
+ 486 774 p
+ 485 774 p
+ 65 774 p
+ 51 774 p
+ 481 773 p
+ 444 773 p
+ 482 773 p
+ 483 773 p
+ 478 773 p
+ 65 773 p
+ 50 773 p
+ 483 772 p
+ 482 772 p
+ 478 772 p
+ 519 772 p
+ 520 772 p
+ 64 772 p
+ 65 772 p
+ 484 771 p
+ 447 771 p
+ 485 771 p
+ 489 771 p
+ 488 771 p
+ 66 771 p
+ 52 771 p
+ 484 770 p
+ 447 770 p
+ 485 770 p
+ 486 770 p
+ 481 770 p
+ 66 770 p
+ 51 770 p
+ 486 769 p
+ 485 769 p
+ 481 769 p
+ 522 769 p
+ 523 769 p
+ 65 769 p
+ 66 769 p
+ 487 768 p
+ 450 768 p
+ 488 768 p
+ 492 768 p
+ 491 768 p
+ 67 768 p
+ 53 768 p
+ 487 767 p
+ 450 767 p
+ 488 767 p
+ 489 767 p
+ 484 767 p
+ 67 767 p
+ 52 767 p
+ 489 766 p
+ 488 766 p
+ 484 766 p
+ 525 766 p
+ 526 766 p
+ 66 766 p
+ 67 766 p
+ 490 765 p
+ 453 765 p
+ 491 765 p
+ 495 765 p
+ 494 765 p
+ 68 765 p
+ 54 765 p
+ 490 764 p
+ 453 764 p
+ 491 764 p
+ 492 764 p
+ 487 764 p
+ 68 764 p
+ 53 764 p
+ 492 763 p
+ 491 763 p
+ 487 763 p
+ 528 763 p
+ 529 763 p
+ 67 763 p
+ 68 763 p
+ 493 762 p
+ 456 762 p
+ 494 762 p
+ 498 762 p
+ 497 762 p
+ 69 762 p
+ 55 762 p
+ 493 761 p
+ 456 761 p
+ 494 761 p
+ 495 761 p
+ 490 761 p
+ 69 761 p
+ 54 761 p
+ 495 760 p
+ 494 760 p
+ 490 760 p
+ 531 760 p
+ 532 760 p
+ 68 760 p
+ 69 760 p
+ 496 759 p
+ 459 759 p
+ 497 759 p
+ 501 759 p
+ 500 759 p
+ 70 759 p
+ 56 759 p
+ 496 758 p
+ 459 758 p
+ 497 758 p
+ 498 758 p
+ 493 758 p
+ 70 758 p
+ 55 758 p
+ 498 757 p
+ 497 757 p
+ 493 757 p
+ 534 757 p
+ 535 757 p
+ 69 757 p
+ 70 757 p
+ 499 756 p
+ 462 756 p
+ 500 756 p
+ 504 756 p
+ 503 756 p
+ 71 756 p
+ 57 756 p
+ 499 755 p
+ 462 755 p
+ 500 755 p
+ 501 755 p
+ 496 755 p
+ 71 755 p
+ 56 755 p
+ 501 754 p
+ 500 754 p
+ 496 754 p
+ 537 754 p
+ 538 754 p
+ 70 754 p
+ 71 754 p
+ 502 753 p
+ 463 753 p
+ 503 753 p
+ 508 753 p
+ 507 753 p
+ 72 753 p
+ 58 753 p
+ 502 752 p
+ 463 752 p
+ 503 752 p
+ 504 752 p
+ 499 752 p
+ 72 752 p
+ 57 752 p
+ 504 751 p
+ 503 751 p
+ 499 751 p
+ 540 751 p
+ 541 751 p
+ 71 751 p
+ 72 751 p
+ 505 750 p
+ 471 750 p
+ 506 750 p
+ 509 750 p
+ 510 750 p
+ 73 750 p
+ 60 750 p
+ 505 749 p
+ 471 749 p
+ 506 749 p
+ 467 749 p
+ 507 749 p
+ 73 749 p
+ 59 749 p
+ 506 748 p
+ 467 748 p
+ 507 748 p
+ 508 748 p
+ 502 748 p
+ 73 748 p
+ 58 748 p
+ 508 747 p
+ 507 747 p
+ 502 747 p
+ 543 747 p
+ 544 747 p
+ 72 747 p
+ 73 747 p
+ 509 746 p
+ 505 746 p
+ 510 746 p
+ 473 746 p
+ 511 746 p
+ 74 746 p
+ 60 746 p
+ 509 745 p
+ 505 745 p
+ 510 745 p
+ 546 745 p
+ 547 745 p
+ 74 745 p
+ 73 745 p
+ 473 744 p
+ 509 744 p
+ 511 744 p
+ 61 744 p
+ 74 744 p
+ 512 743 p
+ 476 743 p
+ 513 743 p
+ 518 743 p
+ 517 743 p
+ 76 743 p
+ 63 743 p
+ 512 742 p
+ 476 742 p
+ 513 742 p
+ 514 742 p
+ 515 742 p
+ 76 742 p
+ 62 742 p
+ 514 741 p
+ 513 741 p
+ 515 741 p
+ 549 741 p
+ 550 741 p
+ 75 741 p
+ 76 741 p
+ 514 740 p
+ 513 740 p
+ 515 740 p
+ 75 740 p
+ 62 740 p
+ 516 739 p
+ 480 739 p
+ 517 739 p
+ 521 739 p
+ 520 739 p
+ 77 739 p
+ 64 739 p
+ 516 738 p
+ 480 738 p
+ 517 738 p
+ 518 738 p
+ 512 738 p
+ 77 738 p
+ 63 738 p
+ 518 737 p
+ 517 737 p
+ 512 737 p
+ 551 737 p
+ 552 737 p
+ 76 737 p
+ 77 737 p
+ 519 736 p
+ 483 736 p
+ 520 736 p
+ 524 736 p
+ 523 736 p
+ 78 736 p
+ 65 736 p
+ 519 735 p
+ 483 735 p
+ 520 735 p
+ 521 735 p
+ 516 735 p
+ 78 735 p
+ 64 735 p
+ 521 734 p
+ 520 734 p
+ 516 734 p
+ 554 734 p
+ 555 734 p
+ 77 734 p
+ 78 734 p
+ 522 733 p
+ 486 733 p
+ 523 733 p
+ 527 733 p
+ 526 733 p
+ 79 733 p
+ 66 733 p
+ 522 732 p
+ 486 732 p
+ 523 732 p
+ 524 732 p
+ 519 732 p
+ 79 732 p
+ 65 732 p
+ 524 731 p
+ 523 731 p
+ 519 731 p
+ 557 731 p
+ 558 731 p
+ 78 731 p
+ 79 731 p
+ 525 730 p
+ 489 730 p
+ 526 730 p
+ 530 730 p
+ 529 730 p
+ 80 730 p
+ 67 730 p
+ 525 729 p
+ 489 729 p
+ 526 729 p
+ 527 729 p
+ 522 729 p
+ 80 729 p
+ 66 729 p
+ 527 728 p
+ 526 728 p
+ 522 728 p
+ 560 728 p
+ 561 728 p
+ 79 728 p
+ 80 728 p
+ 528 727 p
+ 492 727 p
+ 529 727 p
+ 533 727 p
+ 532 727 p
+ 81 727 p
+ 68 727 p
+ 528 726 p
+ 492 726 p
+ 529 726 p
+ 530 726 p
+ 525 726 p
+ 81 726 p
+ 67 726 p
+ 530 725 p
+ 529 725 p
+ 525 725 p
+ 563 725 p
+ 564 725 p
+ 80 725 p
+ 81 725 p
+ 531 724 p
+ 495 724 p
+ 532 724 p
+ 536 724 p
+ 535 724 p
+ 82 724 p
+ 69 724 p
+ 531 723 p
+ 495 723 p
+ 532 723 p
+ 533 723 p
+ 528 723 p
+ 82 723 p
+ 68 723 p
+ 533 722 p
+ 532 722 p
+ 528 722 p
+ 566 722 p
+ 567 722 p
+ 81 722 p
+ 82 722 p
+ 534 721 p
+ 498 721 p
+ 535 721 p
+ 539 721 p
+ 538 721 p
+ 83 721 p
+ 70 721 p
+ 534 720 p
+ 498 720 p
+ 535 720 p
+ 536 720 p
+ 531 720 p
+ 83 720 p
+ 69 720 p
+ 536 719 p
+ 535 719 p
+ 531 719 p
+ 569 719 p
+ 570 719 p
+ 82 719 p
+ 83 719 p
+ 537 718 p
+ 501 718 p
+ 538 718 p
+ 542 718 p
+ 541 718 p
+ 84 718 p
+ 71 718 p
+ 537 717 p
+ 501 717 p
+ 538 717 p
+ 539 717 p
+ 534 717 p
+ 84 717 p
+ 70 717 p
+ 539 716 p
+ 538 716 p
+ 534 716 p
+ 572 716 p
+ 573 716 p
+ 83 716 p
+ 84 716 p
+ 540 715 p
+ 504 715 p
+ 541 715 p
+ 545 715 p
+ 544 715 p
+ 85 715 p
+ 72 715 p
+ 540 714 p
+ 504 714 p
+ 541 714 p
+ 542 714 p
+ 537 714 p
+ 85 714 p
+ 71 714 p
+ 542 713 p
+ 541 713 p
+ 537 713 p
+ 575 713 p
+ 576 713 p
+ 84 713 p
+ 85 713 p
+ 543 712 p
+ 508 712 p
+ 544 712 p
+ 548 712 p
+ 547 712 p
+ 86 712 p
+ 73 712 p
+ 543 711 p
+ 508 711 p
+ 544 711 p
+ 545 711 p
+ 540 711 p
+ 86 711 p
+ 72 711 p
+ 545 710 p
+ 544 710 p
+ 540 710 p
+ 578 710 p
+ 579 710 p
+ 85 710 p
+ 86 710 p
+ 546 709 p
+ 510 709 p
+ 547 709 p
+ 87 709 p
+ 74 709 p
+ 546 708 p
+ 510 708 p
+ 547 708 p
+ 548 708 p
+ 543 708 p
+ 87 708 p
+ 73 708 p
+ 548 707 p
+ 547 707 p
+ 543 707 p
+ 581 707 p
+ 582 707 p
+ 86 707 p
+ 87 707 p
+ 549 706 p
+ 514 706 p
+ 550 706 p
+ 553 706 p
+ 552 706 p
+ 88 706 p
+ 76 706 p
+ 549 705 p
+ 514 705 p
+ 550 705 p
+ 88 705 p
+ 75 705 p
+ 551 704 p
+ 518 704 p
+ 552 704 p
+ 556 704 p
+ 555 704 p
+ 89 704 p
+ 77 704 p
+ 551 703 p
+ 518 703 p
+ 552 703 p
+ 553 703 p
+ 549 703 p
+ 89 703 p
+ 76 703 p
+ 553 702 p
+ 552 702 p
+ 549 702 p
+ 586 702 p
+ 587 702 p
+ 88 702 p
+ 89 702 p
+ 554 701 p
+ 521 701 p
+ 555 701 p
+ 559 701 p
+ 558 701 p
+ 90 701 p
+ 78 701 p
+ 554 700 p
+ 521 700 p
+ 555 700 p
+ 556 700 p
+ 551 700 p
+ 90 700 p
+ 77 700 p
+ 556 699 p
+ 555 699 p
+ 551 699 p
+ 588 699 p
+ 589 699 p
+ 89 699 p
+ 90 699 p
+ 557 698 p
+ 524 698 p
+ 558 698 p
+ 562 698 p
+ 561 698 p
+ 91 698 p
+ 79 698 p
+ 557 697 p
+ 524 697 p
+ 558 697 p
+ 559 697 p
+ 554 697 p
+ 91 697 p
+ 78 697 p
+ 559 696 p
+ 558 696 p
+ 554 696 p
+ 591 696 p
+ 592 696 p
+ 90 696 p
+ 91 696 p
+ 560 695 p
+ 527 695 p
+ 561 695 p
+ 565 695 p
+ 564 695 p
+ 92 695 p
+ 80 695 p
+ 560 694 p
+ 527 694 p
+ 561 694 p
+ 562 694 p
+ 557 694 p
+ 92 694 p
+ 79 694 p
+ 562 693 p
+ 561 693 p
+ 557 693 p
+ 594 693 p
+ 595 693 p
+ 91 693 p
+ 92 693 p
+ 563 692 p
+ 530 692 p
+ 564 692 p
+ 568 692 p
+ 567 692 p
+ 93 692 p
+ 81 692 p
+ 563 691 p
+ 530 691 p
+ 564 691 p
+ 565 691 p
+ 560 691 p
+ 93 691 p
+ 80 691 p
+ 565 690 p
+ 564 690 p
+ 560 690 p
+ 597 690 p
+ 598 690 p
+ 92 690 p
+ 93 690 p
+ 566 689 p
+ 533 689 p
+ 567 689 p
+ 571 689 p
+ 570 689 p
+ 94 689 p
+ 82 689 p
+ 566 688 p
+ 533 688 p
+ 567 688 p
+ 568 688 p
+ 563 688 p
+ 94 688 p
+ 81 688 p
+ 568 687 p
+ 567 687 p
+ 563 687 p
+ 600 687 p
+ 601 687 p
+ 93 687 p
+ 94 687 p
+ 569 686 p
+ 536 686 p
+ 570 686 p
+ 574 686 p
+ 573 686 p
+ 95 686 p
+ 83 686 p
+ 569 685 p
+ 536 685 p
+ 570 685 p
+ 571 685 p
+ 566 685 p
+ 95 685 p
+ 82 685 p
+ 571 684 p
+ 570 684 p
+ 566 684 p
+ 603 684 p
+ 604 684 p
+ 94 684 p
+ 95 684 p
+ 572 683 p
+ 539 683 p
+ 573 683 p
+ 577 683 p
+ 576 683 p
+ 96 683 p
+ 84 683 p
+ 572 682 p
+ 539 682 p
+ 573 682 p
+ 574 682 p
+ 569 682 p
+ 96 682 p
+ 83 682 p
+ 574 681 p
+ 573 681 p
+ 569 681 p
+ 606 681 p
+ 607 681 p
+ 95 681 p
+ 96 681 p
+ 575 680 p
+ 542 680 p
+ 576 680 p
+ 580 680 p
+ 579 680 p
+ 97 680 p
+ 85 680 p
+ 575 679 p
+ 542 679 p
+ 576 679 p
+ 577 679 p
+ 572 679 p
+ 97 679 p
+ 84 679 p
+ 577 678 p
+ 576 678 p
+ 572 678 p
+ 609 678 p
+ 610 678 p
+ 96 678 p
+ 97 678 p
+ 578 677 p
+ 545 677 p
+ 579 677 p
+ 583 677 p
+ 582 677 p
+ 98 677 p
+ 86 677 p
+ 578 676 p
+ 545 676 p
+ 579 676 p
+ 580 676 p
+ 575 676 p
+ 98 676 p
+ 85 676 p
+ 580 675 p
+ 579 675 p
+ 575 675 p
+ 612 675 p
+ 613 675 p
+ 97 675 p
+ 98 675 p
+ 581 674 p
+ 548 674 p
+ 582 674 p
+ 584 674 p
+ 585 674 p
+ 99 674 p
+ 87 674 p
+ 581 673 p
+ 548 673 p
+ 582 673 p
+ 583 673 p
+ 578 673 p
+ 99 673 p
+ 86 673 p
+ 583 672 p
+ 582 672 p
+ 578 672 p
+ 615 672 p
+ 616 672 p
+ 98 672 p
+ 99 672 p
+ 584 671 p
+ 581 671 p
+ 585 671 p
+ 100 671 p
+ 87 671 p
+ 584 670 p
+ 581 670 p
+ 585 670 p
+ 618 670 p
+ 619 670 p
+ 100 670 p
+ 99 670 p
+ 586 669 p
+ 553 669 p
+ 587 669 p
+ 590 669 p
+ 589 669 p
+ 101 669 p
+ 89 669 p
+ 586 668 p
+ 553 668 p
+ 587 668 p
+ 101 668 p
+ 88 668 p
+ 588 667 p
+ 556 667 p
+ 589 667 p
+ 593 667 p
+ 592 667 p
+ 102 667 p
+ 90 667 p
+ 588 666 p
+ 556 666 p
+ 589 666 p
+ 590 666 p
+ 586 666 p
+ 102 666 p
+ 89 666 p
+ 590 665 p
+ 589 665 p
+ 586 665 p
+ 623 665 p
+ 624 665 p
+ 101 665 p
+ 102 665 p
+ 591 664 p
+ 559 664 p
+ 592 664 p
+ 596 664 p
+ 595 664 p
+ 103 664 p
+ 91 664 p
+ 591 663 p
+ 559 663 p
+ 592 663 p
+ 593 663 p
+ 588 663 p
+ 103 663 p
+ 90 663 p
+ 593 662 p
+ 592 662 p
+ 588 662 p
+ 625 662 p
+ 626 662 p
+ 102 662 p
+ 103 662 p
+ 594 661 p
+ 562 661 p
+ 595 661 p
+ 599 661 p
+ 598 661 p
+ 104 661 p
+ 92 661 p
+ 594 660 p
+ 562 660 p
+ 595 660 p
+ 596 660 p
+ 591 660 p
+ 104 660 p
+ 91 660 p
+ 596 659 p
+ 595 659 p
+ 591 659 p
+ 628 659 p
+ 629 659 p
+ 103 659 p
+ 104 659 p
+ 597 658 p
+ 565 658 p
+ 598 658 p
+ 602 658 p
+ 601 658 p
+ 105 658 p
+ 93 658 p
+ 597 657 p
+ 565 657 p
+ 598 657 p
+ 599 657 p
+ 594 657 p
+ 105 657 p
+ 92 657 p
+ 599 656 p
+ 598 656 p
+ 594 656 p
+ 631 656 p
+ 632 656 p
+ 104 656 p
+ 105 656 p
+ 600 655 p
+ 568 655 p
+ 601 655 p
+ 605 655 p
+ 604 655 p
+ 106 655 p
+ 94 655 p
+ 600 654 p
+ 568 654 p
+ 601 654 p
+ 602 654 p
+ 597 654 p
+ 106 654 p
+ 93 654 p
+ 602 653 p
+ 601 653 p
+ 597 653 p
+ 634 653 p
+ 635 653 p
+ 105 653 p
+ 106 653 p
+ 603 652 p
+ 571 652 p
+ 604 652 p
+ 608 652 p
+ 607 652 p
+ 107 652 p
+ 95 652 p
+ 603 651 p
+ 571 651 p
+ 604 651 p
+ 605 651 p
+ 600 651 p
+ 107 651 p
+ 94 651 p
+ 605 650 p
+ 604 650 p
+ 600 650 p
+ 637 650 p
+ 638 650 p
+ 106 650 p
+ 107 650 p
+ 606 649 p
+ 574 649 p
+ 607 649 p
+ 611 649 p
+ 610 649 p
+ 108 649 p
+ 96 649 p
+ 606 648 p
+ 574 648 p
+ 607 648 p
+ 608 648 p
+ 603 648 p
+ 108 648 p
+ 95 648 p
+ 608 647 p
+ 607 647 p
+ 603 647 p
+ 640 647 p
+ 641 647 p
+ 107 647 p
+ 108 647 p
+ 609 646 p
+ 577 646 p
+ 610 646 p
+ 614 646 p
+ 613 646 p
+ 109 646 p
+ 97 646 p
+ 609 645 p
+ 577 645 p
+ 610 645 p
+ 611 645 p
+ 606 645 p
+ 109 645 p
+ 96 645 p
+ 611 644 p
+ 610 644 p
+ 606 644 p
+ 643 644 p
+ 644 644 p
+ 108 644 p
+ 109 644 p
+ 612 643 p
+ 580 643 p
+ 613 643 p
+ 617 643 p
+ 616 643 p
+ 110 643 p
+ 98 643 p
+ 612 642 p
+ 580 642 p
+ 613 642 p
+ 614 642 p
+ 609 642 p
+ 110 642 p
+ 97 642 p
+ 614 641 p
+ 613 641 p
+ 609 641 p
+ 646 641 p
+ 647 641 p
+ 109 641 p
+ 110 641 p
+ 615 640 p
+ 583 640 p
+ 616 640 p
+ 620 640 p
+ 619 640 p
+ 111 640 p
+ 99 640 p
+ 615 639 p
+ 583 639 p
+ 616 639 p
+ 617 639 p
+ 612 639 p
+ 111 639 p
+ 98 639 p
+ 617 638 p
+ 616 638 p
+ 612 638 p
+ 649 638 p
+ 650 638 p
+ 110 638 p
+ 111 638 p
+ 618 637 p
+ 585 637 p
+ 619 637 p
+ 621 637 p
+ 622 637 p
+ 112 637 p
+ 100 637 p
+ 618 636 p
+ 585 636 p
+ 619 636 p
+ 620 636 p
+ 615 636 p
+ 112 636 p
+ 99 636 p
+ 620 635 p
+ 619 635 p
+ 615 635 p
+ 652 635 p
+ 653 635 p
+ 111 635 p
+ 112 635 p
+ 621 634 p
+ 618 634 p
+ 622 634 p
+ 113 634 p
+ 100 634 p
+ 621 633 p
+ 618 633 p
+ 622 633 p
+ 655 633 p
+ 656 633 p
+ 113 633 p
+ 112 633 p
+ 623 632 p
+ 590 632 p
+ 624 632 p
+ 627 632 p
+ 626 632 p
+ 114 632 p
+ 102 632 p
+ 623 631 p
+ 590 631 p
+ 624 631 p
+ 114 631 p
+ 101 631 p
+ 625 630 p
+ 593 630 p
+ 626 630 p
+ 630 630 p
+ 629 630 p
+ 115 630 p
+ 103 630 p
+ 625 629 p
+ 593 629 p
+ 626 629 p
+ 627 629 p
+ 623 629 p
+ 115 629 p
+ 102 629 p
+ 627 628 p
+ 626 628 p
+ 623 628 p
+ 660 628 p
+ 661 628 p
+ 114 628 p
+ 115 628 p
+ 628 627 p
+ 596 627 p
+ 629 627 p
+ 633 627 p
+ 632 627 p
+ 116 627 p
+ 104 627 p
+ 628 626 p
+ 596 626 p
+ 629 626 p
+ 630 626 p
+ 625 626 p
+ 116 626 p
+ 103 626 p
+ 630 625 p
+ 629 625 p
+ 625 625 p
+ 662 625 p
+ 663 625 p
+ 115 625 p
+ 116 625 p
+ 631 624 p
+ 599 624 p
+ 632 624 p
+ 636 624 p
+ 635 624 p
+ 117 624 p
+ 105 624 p
+ 631 623 p
+ 599 623 p
+ 632 623 p
+ 633 623 p
+ 628 623 p
+ 117 623 p
+ 104 623 p
+ 633 622 p
+ 632 622 p
+ 628 622 p
+ 665 622 p
+ 666 622 p
+ 116 622 p
+ 117 622 p
+ 634 621 p
+ 602 621 p
+ 635 621 p
+ 639 621 p
+ 638 621 p
+ 118 621 p
+ 106 621 p
+ 634 620 p
+ 602 620 p
+ 635 620 p
+ 636 620 p
+ 631 620 p
+ 118 620 p
+ 105 620 p
+ 636 619 p
+ 635 619 p
+ 631 619 p
+ 668 619 p
+ 669 619 p
+ 117 619 p
+ 118 619 p
+ 637 618 p
+ 605 618 p
+ 638 618 p
+ 642 618 p
+ 641 618 p
+ 119 618 p
+ 107 618 p
+ 637 617 p
+ 605 617 p
+ 638 617 p
+ 639 617 p
+ 634 617 p
+ 119 617 p
+ 106 617 p
+ 639 616 p
+ 638 616 p
+ 634 616 p
+ 671 616 p
+ 668 616 p
+ 118 616 p
+ 119 616 p
+ 640 615 p
+ 608 615 p
+ 641 615 p
+ 645 615 p
+ 644 615 p
+ 120 615 p
+ 108 615 p
+ 640 614 p
+ 608 614 p
+ 641 614 p
+ 642 614 p
+ 637 614 p
+ 120 614 p
+ 107 614 p
+ 642 613 p
+ 641 613 p
+ 637 613 p
+ 672 613 p
+ 673 613 p
+ 119 613 p
+ 120 613 p
+ 643 612 p
+ 611 612 p
+ 644 612 p
+ 648 612 p
+ 647 612 p
+ 121 612 p
+ 109 612 p
+ 643 611 p
+ 611 611 p
+ 644 611 p
+ 645 611 p
+ 640 611 p
+ 121 611 p
+ 108 611 p
+ 645 610 p
+ 644 610 p
+ 640 610 p
+ 675 610 p
+ 676 610 p
+ 120 610 p
+ 121 610 p
+ 646 609 p
+ 614 609 p
+ 647 609 p
+ 651 609 p
+ 650 609 p
+ 122 609 p
+ 110 609 p
+ 646 608 p
+ 614 608 p
+ 647 608 p
+ 648 608 p
+ 643 608 p
+ 122 608 p
+ 109 608 p
+ 648 607 p
+ 647 607 p
+ 643 607 p
+ 678 607 p
+ 679 607 p
+ 121 607 p
+ 122 607 p
+ 649 606 p
+ 617 606 p
+ 650 606 p
+ 654 606 p
+ 653 606 p
+ 123 606 p
+ 111 606 p
+ 649 605 p
+ 617 605 p
+ 650 605 p
+ 651 605 p
+ 646 605 p
+ 123 605 p
+ 110 605 p
+ 651 604 p
+ 650 604 p
+ 646 604 p
+ 681 604 p
+ 682 604 p
+ 122 604 p
+ 123 604 p
+ 652 603 p
+ 620 603 p
+ 653 603 p
+ 657 603 p
+ 656 603 p
+ 124 603 p
+ 112 603 p
+ 652 602 p
+ 620 602 p
+ 653 602 p
+ 654 602 p
+ 649 602 p
+ 124 602 p
+ 111 602 p
+ 654 601 p
+ 653 601 p
+ 649 601 p
+ 684 601 p
+ 685 601 p
+ 123 601 p
+ 124 601 p
+ 655 600 p
+ 622 600 p
+ 656 600 p
+ 658 600 p
+ 659 600 p
+ 125 600 p
+ 113 600 p
+ 655 599 p
+ 622 599 p
+ 656 599 p
+ 657 599 p
+ 652 599 p
+ 125 599 p
+ 112 599 p
+ 657 598 p
+ 656 598 p
+ 652 598 p
+ 687 598 p
+ 688 598 p
+ 124 598 p
+ 125 598 p
+ 658 597 p
+ 655 597 p
+ 659 597 p
+ 126 597 p
+ 113 597 p
+ 658 596 p
+ 655 596 p
+ 659 596 p
+ 692 596 p
+ 693 596 p
+ 126 596 p
+ 125 596 p
+ 660 595 p
+ 627 595 p
+ 661 595 p
+ 664 595 p
+ 663 595 p
+ 127 595 p
+ 115 595 p
+ 660 594 p
+ 627 594 p
+ 661 594 p
+ 127 594 p
+ 114 594 p
+ 662 593 p
+ 630 593 p
+ 663 593 p
+ 667 593 p
+ 666 593 p
+ 128 593 p
+ 116 593 p
+ 662 592 p
+ 630 592 p
+ 663 592 p
+ 664 592 p
+ 660 592 p
+ 128 592 p
+ 115 592 p
+ 664 591 p
+ 663 591 p
+ 660 591 p
+ 697 591 p
+ 698 591 p
+ 127 591 p
+ 128 591 p
+ 665 590 p
+ 633 590 p
+ 666 590 p
+ 670 590 p
+ 669 590 p
+ 129 590 p
+ 117 590 p
+ 665 589 p
+ 633 589 p
+ 666 589 p
+ 667 589 p
+ 662 589 p
+ 129 589 p
+ 116 589 p
+ 667 588 p
+ 666 588 p
+ 662 588 p
+ 699 588 p
+ 697 588 p
+ 128 588 p
+ 129 588 p
+ 668 587 p
+ 636 587 p
+ 669 587 p
+ 671 587 p
+ 639 587 p
+ 130 587 p
+ 118 587 p
+ 668 586 p
+ 636 586 p
+ 669 586 p
+ 670 586 p
+ 665 586 p
+ 130 586 p
+ 117 586 p
+ 670 585 p
+ 669 585 p
+ 665 585 p
+ 700 585 p
+ 701 585 p
+ 129 585 p
+ 130 585 p
+ 671 584 p
+ 639 584 p
+ 668 584 p
+ 674 584 p
+ 673 584 p
+ 130 584 p
+ 119 584 p
+ 672 583 p
+ 642 583 p
+ 673 583 p
+ 677 583 p
+ 676 583 p
+ 131 583 p
+ 120 583 p
+ 672 582 p
+ 642 582 p
+ 673 582 p
+ 674 582 p
+ 671 582 p
+ 131 582 p
+ 119 582 p
+ 674 581 p
+ 673 581 p
+ 671 581 p
+ 703 581 p
+ 704 581 p
+ 130 581 p
+ 131 581 p
+ 675 580 p
+ 645 580 p
+ 676 580 p
+ 680 580 p
+ 679 580 p
+ 132 580 p
+ 121 580 p
+ 675 579 p
+ 645 579 p
+ 676 579 p
+ 677 579 p
+ 672 579 p
+ 132 579 p
+ 120 579 p
+ 677 578 p
+ 676 578 p
+ 672 578 p
+ 706 578 p
+ 707 578 p
+ 131 578 p
+ 132 578 p
+ 678 577 p
+ 648 577 p
+ 679 577 p
+ 683 577 p
+ 682 577 p
+ 133 577 p
+ 122 577 p
+ 678 576 p
+ 648 576 p
+ 679 576 p
+ 680 576 p
+ 675 576 p
+ 133 576 p
+ 121 576 p
+ 680 575 p
+ 679 575 p
+ 675 575 p
+ 709 575 p
+ 710 575 p
+ 132 575 p
+ 133 575 p
+ 681 574 p
+ 651 574 p
+ 682 574 p
+ 686 574 p
+ 685 574 p
+ 134 574 p
+ 123 574 p
+ 681 573 p
+ 651 573 p
+ 682 573 p
+ 683 573 p
+ 678 573 p
+ 134 573 p
+ 122 573 p
+ 683 572 p
+ 682 572 p
+ 678 572 p
+ 712 572 p
+ 713 572 p
+ 133 572 p
+ 134 572 p
+ 684 571 p
+ 654 571 p
+ 685 571 p
+ 689 571 p
+ 688 571 p
+ 135 571 p
+ 124 571 p
+ 684 570 p
+ 654 570 p
+ 685 570 p
+ 686 570 p
+ 681 570 p
+ 135 570 p
+ 123 570 p
+ 686 569 p
+ 685 569 p
+ 681 569 p
+ 715 569 p
+ 716 569 p
+ 134 569 p
+ 135 569 p
+ 687 568 p
+ 657 568 p
+ 688 568 p
+ 690 568 p
+ 691 568 p
+ 136 568 p
+ 125 568 p
+ 687 567 p
+ 657 567 p
+ 688 567 p
+ 689 567 p
+ 684 567 p
+ 136 567 p
+ 124 567 p
+ 689 566 p
+ 688 566 p
+ 684 566 p
+ 718 566 p
+ 719 566 p
+ 135 566 p
+ 136 566 p
+ 690 565 p
+ 691 565 p
+ 687 565 p
+ 721 565 p
+ 722 565 p
+ 136 565 p
+ 137 565 p
+ 690 564 p
+ 691 564 p
+ 687 564 p
+ 694 564 p
+ 693 564 p
+ 137 564 p
+ 125 564 p
+ 692 563 p
+ 659 563 p
+ 693 563 p
+ 695 563 p
+ 696 563 p
+ 138 563 p
+ 126 563 p
+ 692 562 p
+ 659 562 p
+ 693 562 p
+ 694 562 p
+ 691 562 p
+ 138 562 p
+ 125 562 p
+ 694 561 p
+ 693 561 p
+ 691 561 p
+ 724 561 p
+ 725 561 p
+ 137 561 p
+ 138 561 p
+ 695 560 p
+ 692 560 p
+ 696 560 p
+ 139 560 p
+ 126 560 p
+ 695 559 p
+ 692 559 p
+ 696 559 p
+ 727 559 p
+ 728 559 p
+ 139 559 p
+ 138 559 p
+ 697 558 p
+ 664 558 p
+ 698 558 p
+ 699 558 p
+ 667 558 p
+ 140 558 p
+ 128 558 p
+ 697 557 p
+ 664 557 p
+ 698 557 p
+ 140 557 p
+ 127 557 p
+ 699 556 p
+ 667 556 p
+ 697 556 p
+ 702 556 p
+ 701 556 p
+ 140 556 p
+ 129 556 p
+ 700 555 p
+ 670 555 p
+ 701 555 p
+ 705 555 p
+ 704 555 p
+ 141 555 p
+ 130 555 p
+ 700 554 p
+ 670 554 p
+ 701 554 p
+ 702 554 p
+ 699 554 p
+ 141 554 p
+ 129 554 p
+ 702 553 p
+ 701 553 p
+ 699 553 p
+ 734 553 p
+ 735 553 p
+ 140 553 p
+ 141 553 p
+ 703 552 p
+ 674 552 p
+ 704 552 p
+ 708 552 p
+ 707 552 p
+ 142 552 p
+ 131 552 p
+ 703 551 p
+ 674 551 p
+ 704 551 p
+ 705 551 p
+ 700 551 p
+ 142 551 p
+ 130 551 p
+ 705 550 p
+ 704 550 p
+ 700 550 p
+ 736 550 p
+ 734 550 p
+ 141 550 p
+ 142 550 p
+ 706 549 p
+ 677 549 p
+ 707 549 p
+ 711 549 p
+ 710 549 p
+ 143 549 p
+ 132 549 p
+ 706 548 p
+ 677 548 p
+ 707 548 p
+ 708 548 p
+ 703 548 p
+ 143 548 p
+ 131 548 p
+ 708 547 p
+ 707 547 p
+ 703 547 p
+ 737 547 p
+ 738 547 p
+ 142 547 p
+ 143 547 p
+ 709 546 p
+ 680 546 p
+ 710 546 p
+ 714 546 p
+ 713 546 p
+ 144 546 p
+ 133 546 p
+ 709 545 p
+ 680 545 p
+ 710 545 p
+ 711 545 p
+ 706 545 p
+ 144 545 p
+ 132 545 p
+ 711 544 p
+ 710 544 p
+ 706 544 p
+ 740 544 p
+ 741 544 p
+ 143 544 p
+ 144 544 p
+ 712 543 p
+ 683 543 p
+ 713 543 p
+ 717 543 p
+ 716 543 p
+ 145 543 p
+ 134 543 p
+ 712 542 p
+ 683 542 p
+ 713 542 p
+ 714 542 p
+ 709 542 p
+ 145 542 p
+ 133 542 p
+ 714 541 p
+ 713 541 p
+ 709 541 p
+ 743 541 p
+ 744 541 p
+ 144 541 p
+ 145 541 p
+ 715 540 p
+ 686 540 p
+ 716 540 p
+ 720 540 p
+ 719 540 p
+ 146 540 p
+ 135 540 p
+ 715 539 p
+ 686 539 p
+ 716 539 p
+ 717 539 p
+ 712 539 p
+ 146 539 p
+ 134 539 p
+ 717 538 p
+ 716 538 p
+ 712 538 p
+ 746 538 p
+ 747 538 p
+ 145 538 p
+ 146 538 p
+ 718 537 p
+ 689 537 p
+ 719 537 p
+ 723 537 p
+ 722 537 p
+ 147 537 p
+ 136 537 p
+ 718 536 p
+ 689 536 p
+ 719 536 p
+ 720 536 p
+ 715 536 p
+ 147 536 p
+ 135 536 p
+ 720 535 p
+ 719 535 p
+ 715 535 p
+ 749 535 p
+ 750 535 p
+ 146 535 p
+ 147 535 p
+ 721 534 p
+ 690 534 p
+ 722 534 p
+ 726 534 p
+ 725 534 p
+ 148 534 p
+ 137 534 p
+ 721 533 p
+ 690 533 p
+ 722 533 p
+ 723 533 p
+ 718 533 p
+ 148 533 p
+ 136 533 p
+ 723 532 p
+ 722 532 p
+ 718 532 p
+ 752 532 p
+ 753 532 p
+ 147 532 p
+ 148 532 p
+ 724 531 p
+ 694 531 p
+ 725 531 p
+ 729 531 p
+ 728 531 p
+ 149 531 p
+ 138 531 p
+ 724 530 p
+ 694 530 p
+ 725 530 p
+ 726 530 p
+ 721 530 p
+ 149 530 p
+ 137 530 p
+ 726 529 p
+ 725 529 p
+ 721 529 p
+ 756 529 p
+ 757 529 p
+ 148 529 p
+ 149 529 p
+ 727 528 p
+ 696 528 p
+ 728 528 p
+ 730 528 p
+ 731 528 p
+ 150 528 p
+ 139 528 p
+ 727 527 p
+ 696 527 p
+ 728 527 p
+ 729 527 p
+ 724 527 p
+ 150 527 p
+ 138 527 p
+ 729 526 p
+ 728 526 p
+ 724 526 p
+ 755 526 p
+ 756 526 p
+ 149 526 p
+ 150 526 p
+ 730 525 p
+ 727 525 p
+ 731 525 p
+ 3 525 p
+ 139 525 p
+ 730 524 p
+ 727 524 p
+ 731 524 p
+ 732 524 p
+ 733 524 p
+ 3 524 p
+ 150 524 p
+ 732 523 p
+ 731 523 p
+ 733 523 p
+ 151 523 p
+ 3 523 p
+ 732 522 p
+ 731 522 p
+ 733 522 p
+ 759 522 p
+ 761 522 p
+ 151 522 p
+ 150 522 p
+ 734 521 p
+ 702 521 p
+ 735 521 p
+ 736 521 p
+ 705 521 p
+ 152 521 p
+ 141 521 p
+ 734 520 p
+ 702 520 p
+ 735 520 p
+ 152 520 p
+ 140 520 p
+ 736 519 p
+ 705 519 p
+ 734 519 p
+ 739 519 p
+ 738 519 p
+ 152 519 p
+ 142 519 p
+ 737 518 p
+ 708 518 p
+ 738 518 p
+ 742 518 p
+ 741 518 p
+ 153 518 p
+ 143 518 p
+ 737 517 p
+ 708 517 p
+ 738 517 p
+ 739 517 p
+ 736 517 p
+ 153 517 p
+ 142 517 p
+ 739 516 p
+ 738 516 p
+ 736 516 p
+ 762 516 p
+ 763 516 p
+ 152 516 p
+ 153 516 p
+ 740 515 p
+ 711 515 p
+ 741 515 p
+ 745 515 p
+ 744 515 p
+ 154 515 p
+ 144 515 p
+ 740 514 p
+ 711 514 p
+ 741 514 p
+ 742 514 p
+ 737 514 p
+ 154 514 p
+ 143 514 p
+ 742 513 p
+ 741 513 p
+ 737 513 p
+ 764 513 p
+ 762 513 p
+ 153 513 p
+ 154 513 p
+ 743 512 p
+ 714 512 p
+ 744 512 p
+ 748 512 p
+ 747 512 p
+ 155 512 p
+ 145 512 p
+ 743 511 p
+ 714 511 p
+ 744 511 p
+ 745 511 p
+ 740 511 p
+ 155 511 p
+ 144 511 p
+ 745 510 p
+ 744 510 p
+ 740 510 p
+ 765 510 p
+ 766 510 p
+ 154 510 p
+ 155 510 p
+ 746 509 p
+ 717 509 p
+ 747 509 p
+ 751 509 p
+ 750 509 p
+ 156 509 p
+ 146 509 p
+ 746 508 p
+ 717 508 p
+ 747 508 p
+ 748 508 p
+ 743 508 p
+ 156 508 p
+ 145 508 p
+ 748 507 p
+ 747 507 p
+ 743 507 p
+ 768 507 p
+ 769 507 p
+ 155 507 p
+ 156 507 p
+ 749 506 p
+ 720 506 p
+ 750 506 p
+ 754 506 p
+ 753 506 p
+ 157 506 p
+ 147 506 p
+ 749 505 p
+ 720 505 p
+ 750 505 p
+ 751 505 p
+ 746 505 p
+ 157 505 p
+ 146 505 p
+ 751 504 p
+ 750 504 p
+ 746 504 p
+ 771 504 p
+ 772 504 p
+ 156 504 p
+ 157 504 p
+ 752 503 p
+ 723 503 p
+ 753 503 p
+ 758 503 p
+ 757 503 p
+ 158 503 p
+ 148 503 p
+ 752 502 p
+ 723 502 p
+ 753 502 p
+ 754 502 p
+ 749 502 p
+ 158 502 p
+ 147 502 p
+ 754 501 p
+ 753 501 p
+ 749 501 p
+ 774 501 p
+ 775 501 p
+ 157 501 p
+ 158 501 p
+ 755 500 p
+ 729 500 p
+ 756 500 p
+ 759 500 p
+ 760 500 p
+ 159 500 p
+ 150 500 p
+ 755 499 p
+ 729 499 p
+ 756 499 p
+ 726 499 p
+ 757 499 p
+ 159 499 p
+ 149 499 p
+ 756 498 p
+ 726 498 p
+ 757 498 p
+ 758 498 p
+ 752 498 p
+ 159 498 p
+ 148 498 p
+ 758 497 p
+ 757 497 p
+ 752 497 p
+ 777 497 p
+ 778 497 p
+ 158 497 p
+ 159 497 p
+ 759 496 p
+ 755 496 p
+ 760 496 p
+ 733 496 p
+ 761 496 p
+ 160 496 p
+ 150 496 p
+ 759 495 p
+ 755 495 p
+ 760 495 p
+ 780 495 p
+ 781 495 p
+ 160 495 p
+ 159 495 p
+ 733 494 p
+ 759 494 p
+ 761 494 p
+ 151 494 p
+ 160 494 p
+ 762 493 p
+ 739 493 p
+ 763 493 p
+ 764 493 p
+ 742 493 p
+ 161 493 p
+ 153 493 p
+ 762 492 p
+ 739 492 p
+ 763 492 p
+ 161 492 p
+ 152 492 p
+ 764 491 p
+ 742 491 p
+ 762 491 p
+ 767 491 p
+ 766 491 p
+ 161 491 p
+ 154 491 p
+ 765 490 p
+ 745 490 p
+ 766 490 p
+ 770 490 p
+ 769 490 p
+ 162 490 p
+ 155 490 p
+ 765 489 p
+ 745 489 p
+ 766 489 p
+ 767 489 p
+ 764 489 p
+ 162 489 p
+ 154 489 p
+ 767 488 p
+ 766 488 p
+ 764 488 p
+ 783 488 p
+ 784 488 p
+ 161 488 p
+ 162 488 p
+ 768 487 p
+ 748 487 p
+ 769 487 p
+ 773 487 p
+ 772 487 p
+ 163 487 p
+ 156 487 p
+ 768 486 p
+ 748 486 p
+ 769 486 p
+ 770 486 p
+ 765 486 p
+ 163 486 p
+ 155 486 p
+ 770 485 p
+ 769 485 p
+ 765 485 p
+ 785 485 p
+ 783 485 p
+ 162 485 p
+ 163 485 p
+ 771 484 p
+ 751 484 p
+ 772 484 p
+ 776 484 p
+ 775 484 p
+ 164 484 p
+ 157 484 p
+ 771 483 p
+ 751 483 p
+ 772 483 p
+ 773 483 p
+ 768 483 p
+ 164 483 p
+ 156 483 p
+ 773 482 p
+ 772 482 p
+ 768 482 p
+ 786 482 p
+ 787 482 p
+ 163 482 p
+ 164 482 p
+ 774 481 p
+ 754 481 p
+ 775 481 p
+ 779 481 p
+ 778 481 p
+ 165 481 p
+ 158 481 p
+ 774 480 p
+ 754 480 p
+ 775 480 p
+ 776 480 p
+ 771 480 p
+ 165 480 p
+ 157 480 p
+ 776 479 p
+ 775 479 p
+ 771 479 p
+ 789 479 p
+ 790 479 p
+ 164 479 p
+ 165 479 p
+ 777 478 p
+ 758 478 p
+ 778 478 p
+ 782 478 p
+ 781 478 p
+ 166 478 p
+ 159 478 p
+ 777 477 p
+ 758 477 p
+ 778 477 p
+ 779 477 p
+ 774 477 p
+ 166 477 p
+ 158 477 p
+ 779 476 p
+ 778 476 p
+ 774 476 p
+ 792 476 p
+ 793 476 p
+ 165 476 p
+ 166 476 p
+ 780 475 p
+ 760 475 p
+ 781 475 p
+ 167 475 p
+ 160 475 p
+ 780 474 p
+ 760 474 p
+ 781 474 p
+ 782 474 p
+ 777 474 p
+ 167 474 p
+ 159 474 p
+ 782 473 p
+ 781 473 p
+ 777 473 p
+ 795 473 p
+ 796 473 p
+ 166 473 p
+ 167 473 p
+ 783 472 p
+ 767 472 p
+ 784 472 p
+ 785 472 p
+ 770 472 p
+ 168 472 p
+ 162 472 p
+ 783 471 p
+ 767 471 p
+ 784 471 p
+ 168 471 p
+ 161 471 p
+ 785 470 p
+ 770 470 p
+ 783 470 p
+ 788 470 p
+ 787 470 p
+ 168 470 p
+ 163 470 p
+ 786 469 p
+ 773 469 p
+ 787 469 p
+ 791 469 p
+ 790 469 p
+ 169 469 p
+ 164 469 p
+ 786 468 p
+ 773 468 p
+ 787 468 p
+ 788 468 p
+ 785 468 p
+ 169 468 p
+ 163 468 p
+ 788 467 p
+ 787 467 p
+ 785 467 p
+ 804 467 p
+ 805 467 p
+ 168 467 p
+ 169 467 p
+ 789 466 p
+ 776 466 p
+ 790 466 p
+ 794 466 p
+ 793 466 p
+ 170 466 p
+ 165 466 p
+ 789 465 p
+ 776 465 p
+ 790 465 p
+ 791 465 p
+ 786 465 p
+ 170 465 p
+ 164 465 p
+ 791 464 p
+ 790 464 p
+ 786 464 p
+ 807 464 p
+ 808 464 p
+ 169 464 p
+ 170 464 p
+ 792 463 p
+ 779 463 p
+ 793 463 p
+ 797 463 p
+ 796 463 p
+ 171 463 p
+ 166 463 p
+ 792 462 p
+ 779 462 p
+ 793 462 p
+ 794 462 p
+ 789 462 p
+ 171 462 p
+ 165 462 p
+ 794 461 p
+ 793 461 p
+ 789 461 p
+ 810 461 p
+ 811 461 p
+ 170 461 p
+ 171 461 p
+ 795 460 p
+ 782 460 p
+ 796 460 p
+ 172 460 p
+ 167 460 p
+ 795 459 p
+ 782 459 p
+ 796 459 p
+ 797 459 p
+ 792 459 p
+ 172 459 p
+ 166 459 p
+ 797 458 p
+ 796 458 p
+ 792 458 p
+ 813 458 p
+ 814 458 p
+ 171 458 p
+ 172 458 p
+ 798 457 p
+ 799 457 p
+ 800 457 p
+ 353 457 p
+ 820 457 p
+ 328 457 p
+ 10 457 p
+ 798 456 p
+ 799 456 p
+ 800 456 p
+ 10 456 p
+ 329 456 p
+ 798 455 p
+ 799 455 p
+ 800 455 p
+ 818 455 p
+ 819 455 p
+ 328 455 p
+ 329 455 p
+ 801 454 p
+ 802 454 p
+ 803 454 p
+ 824 454 p
+ 826 454 p
+ 173 454 p
+ 174 454 p
+ 801 453 p
+ 802 453 p
+ 803 453 p
+ 806 453 p
+ 805 453 p
+ 174 453 p
+ 168 453 p
+ 801 452 p
+ 802 452 p
+ 803 452 p
+ 173 452 p
+ 168 452 p
+ 804 451 p
+ 788 451 p
+ 805 451 p
+ 809 451 p
+ 808 451 p
+ 175 451 p
+ 169 451 p
+ 804 450 p
+ 788 450 p
+ 805 450 p
+ 806 450 p
+ 802 450 p
+ 175 450 p
+ 168 450 p
+ 806 449 p
+ 805 449 p
+ 802 449 p
+ 827 449 p
+ 828 449 p
+ 174 449 p
+ 175 449 p
+ 807 448 p
+ 791 448 p
+ 808 448 p
+ 812 448 p
+ 811 448 p
+ 176 448 p
+ 170 448 p
+ 807 447 p
+ 791 447 p
+ 808 447 p
+ 809 447 p
+ 804 447 p
+ 176 447 p
+ 169 447 p
+ 809 446 p
+ 808 446 p
+ 804 446 p
+ 830 446 p
+ 831 446 p
+ 175 446 p
+ 176 446 p
+ 810 445 p
+ 794 445 p
+ 811 445 p
+ 815 445 p
+ 814 445 p
+ 177 445 p
+ 171 445 p
+ 810 444 p
+ 794 444 p
+ 811 444 p
+ 812 444 p
+ 807 444 p
+ 177 444 p
+ 170 444 p
+ 812 443 p
+ 811 443 p
+ 807 443 p
+ 833 443 p
+ 834 443 p
+ 176 443 p
+ 177 443 p
+ 813 442 p
+ 797 442 p
+ 814 442 p
+ 816 442 p
+ 817 442 p
+ 178 442 p
+ 172 442 p
+ 813 441 p
+ 797 441 p
+ 814 441 p
+ 815 441 p
+ 810 441 p
+ 178 441 p
+ 171 441 p
+ 815 440 p
+ 814 440 p
+ 810 440 p
+ 836 440 p
+ 837 440 p
+ 177 440 p
+ 178 440 p
+ 816 439 p
+ 813 439 p
+ 817 439 p
+ 179 439 p
+ 172 439 p
+ 816 438 p
+ 813 438 p
+ 817 438 p
+ 839 438 p
+ 840 438 p
+ 179 438 p
+ 178 438 p
+ 800 437 p
+ 818 437 p
+ 819 437 p
+ 329 437 p
+ 321 437 p
+ 800 436 p
+ 818 436 p
+ 819 436 p
+ 846 436 p
+ 848 436 p
+ 328 436 p
+ 321 436 p
+ 353 435 p
+ 798 435 p
+ 820 435 p
+ 844 435 p
+ 845 435 p
+ 9 435 p
+ 328 435 p
+ 821 434 p
+ 822 434 p
+ 823 434 p
+ 824 434 p
+ 825 434 p
+ 181 434 p
+ 173 434 p
+ 821 433 p
+ 822 433 p
+ 823 433 p
+ 173 433 p
+ 180 433 p
+ 821 432 p
+ 822 432 p
+ 823 432 p
+ 852 432 p
+ 854 432 p
+ 181 432 p
+ 180 432 p
+ 824 431 p
+ 821 431 p
+ 825 431 p
+ 801 431 p
+ 826 431 p
+ 182 431 p
+ 173 431 p
+ 824 430 p
+ 821 430 p
+ 825 430 p
+ 855 430 p
+ 857 430 p
+ 182 430 p
+ 181 430 p
+ 801 429 p
+ 824 429 p
+ 826 429 p
+ 829 429 p
+ 828 429 p
+ 174 429 p
+ 182 429 p
+ 827 428 p
+ 806 428 p
+ 828 428 p
+ 832 428 p
+ 831 428 p
+ 183 428 p
+ 175 428 p
+ 827 427 p
+ 806 427 p
+ 828 427 p
+ 829 427 p
+ 826 427 p
+ 183 427 p
+ 174 427 p
+ 829 426 p
+ 828 426 p
+ 826 426 p
+ 858 426 p
+ 860 426 p
+ 182 426 p
+ 183 426 p
+ 830 425 p
+ 809 425 p
+ 831 425 p
+ 835 425 p
+ 834 425 p
+ 184 425 p
+ 176 425 p
+ 830 424 p
+ 809 424 p
+ 831 424 p
+ 832 424 p
+ 827 424 p
+ 184 424 p
+ 175 424 p
+ 832 423 p
+ 831 423 p
+ 827 423 p
+ 861 423 p
+ 863 423 p
+ 183 423 p
+ 184 423 p
+ 833 422 p
+ 812 422 p
+ 834 422 p
+ 838 422 p
+ 837 422 p
+ 185 422 p
+ 177 422 p
+ 833 421 p
+ 812 421 p
+ 834 421 p
+ 835 421 p
+ 830 421 p
+ 185 421 p
+ 176 421 p
+ 835 420 p
+ 834 420 p
+ 830 420 p
+ 864 420 p
+ 866 420 p
+ 184 420 p
+ 185 420 p
+ 836 419 p
+ 815 419 p
+ 837 419 p
+ 841 419 p
+ 840 419 p
+ 186 419 p
+ 178 419 p
+ 836 418 p
+ 815 418 p
+ 837 418 p
+ 838 418 p
+ 833 418 p
+ 186 418 p
+ 177 418 p
+ 838 417 p
+ 837 417 p
+ 833 417 p
+ 867 417 p
+ 868 417 p
+ 185 417 p
+ 186 417 p
+ 839 416 p
+ 817 416 p
+ 840 416 p
+ 842 416 p
+ 843 416 p
+ 187 416 p
+ 179 416 p
+ 839 415 p
+ 817 415 p
+ 840 415 p
+ 841 415 p
+ 836 415 p
+ 187 415 p
+ 178 415 p
+ 841 414 p
+ 840 414 p
+ 836 414 p
+ 870 414 p
+ 871 414 p
+ 186 414 p
+ 187 414 p
+ 842 413 p
+ 839 413 p
+ 843 413 p
+ 188 413 p
+ 179 413 p
+ 842 412 p
+ 839 412 p
+ 843 412 p
+ 875 412 p
+ 876 412 p
+ 188 412 p
+ 187 412 p
+ 820 411 p
+ 844 411 p
+ 845 411 p
+ 846 411 p
+ 847 411 p
+ 328 411 p
+ 327 411 p
+ 820 410 p
+ 844 410 p
+ 845 410 p
+ 349 410 p
+ 882 410 p
+ 9 410 p
+ 327 410 p
+ 844 409 p
+ 846 409 p
+ 847 409 p
+ 819 409 p
+ 848 409 p
+ 328 409 p
+ 320 409 p
+ 844 408 p
+ 846 408 p
+ 847 408 p
+ 960 408 p
+ 921 408 p
+ 327 408 p
+ 320 408 p
+ 846 407 p
+ 819 407 p
+ 848 407 p
+ 1250 407 p
+ 1254 407 p
+ 320 407 p
+ 321 407 p
+ 849 406 p
+ 850 406 p
+ 851 406 p
+ 852 406 p
+ 853 406 p
+ 190 406 p
+ 180 406 p
+ 849 405 p
+ 850 405 p
+ 851 405 p
+ 180 405 p
+ 189 405 p
+ 849 404 p
+ 850 404 p
+ 851 404 p
+ 886 404 p
+ 887 404 p
+ 190 404 p
+ 189 404 p
+ 852 403 p
+ 849 403 p
+ 853 403 p
+ 823 403 p
+ 854 403 p
+ 191 403 p
+ 180 403 p
+ 852 402 p
+ 849 402 p
+ 853 402 p
+ 889 402 p
+ 891 402 p
+ 191 402 p
+ 190 402 p
+ 823 401 p
+ 852 401 p
+ 854 401 p
+ 855 401 p
+ 856 401 p
+ 181 401 p
+ 191 401 p
+ 855 400 p
+ 854 400 p
+ 856 400 p
+ 825 400 p
+ 857 400 p
+ 192 400 p
+ 181 400 p
+ 855 399 p
+ 854 399 p
+ 856 399 p
+ 892 399 p
+ 894 399 p
+ 192 399 p
+ 191 399 p
+ 825 398 p
+ 855 398 p
+ 857 398 p
+ 858 398 p
+ 859 398 p
+ 182 398 p
+ 192 398 p
+ 858 397 p
+ 857 397 p
+ 859 397 p
+ 829 397 p
+ 860 397 p
+ 193 397 p
+ 182 397 p
+ 858 396 p
+ 857 396 p
+ 859 396 p
+ 895 396 p
+ 897 396 p
+ 193 396 p
+ 192 396 p
+ 829 395 p
+ 858 395 p
+ 860 395 p
+ 861 395 p
+ 862 395 p
+ 183 395 p
+ 193 395 p
+ 861 394 p
+ 860 394 p
+ 862 394 p
+ 832 394 p
+ 863 394 p
+ 194 394 p
+ 183 394 p
+ 861 393 p
+ 860 393 p
+ 862 393 p
+ 898 393 p
+ 900 393 p
+ 194 393 p
+ 193 393 p
+ 832 392 p
+ 861 392 p
+ 863 392 p
+ 864 392 p
+ 865 392 p
+ 184 392 p
+ 194 392 p
+ 864 391 p
+ 863 391 p
+ 865 391 p
+ 835 391 p
+ 866 391 p
+ 195 391 p
+ 184 391 p
+ 864 390 p
+ 863 390 p
+ 865 390 p
+ 901 390 p
+ 903 390 p
+ 195 390 p
+ 194 390 p
+ 835 389 p
+ 864 389 p
+ 866 389 p
+ 869 389 p
+ 868 389 p
+ 185 389 p
+ 195 389 p
+ 867 388 p
+ 838 388 p
+ 868 388 p
+ 872 388 p
+ 871 388 p
+ 196 388 p
+ 186 388 p
+ 867 387 p
+ 838 387 p
+ 868 387 p
+ 869 387 p
+ 866 387 p
+ 196 387 p
+ 185 387 p
+ 869 386 p
+ 868 386 p
+ 866 386 p
+ 904 386 p
+ 906 386 p
+ 195 386 p
+ 196 386 p
+ 870 385 p
+ 841 385 p
+ 871 385 p
+ 873 385 p
+ 874 385 p
+ 197 385 p
+ 187 385 p
+ 870 384 p
+ 841 384 p
+ 871 384 p
+ 872 384 p
+ 867 384 p
+ 197 384 p
+ 186 384 p
+ 872 383 p
+ 871 383 p
+ 867 383 p
+ 907 383 p
+ 909 383 p
+ 196 383 p
+ 197 383 p
+ 873 382 p
+ 870 382 p
+ 874 382 p
+ 877 382 p
+ 876 382 p
+ 198 382 p
+ 187 382 p
+ 873 381 p
+ 870 381 p
+ 874 381 p
+ 910 381 p
+ 912 381 p
+ 198 381 p
+ 197 381 p
+ 875 380 p
+ 843 380 p
+ 876 380 p
+ 878 380 p
+ 879 380 p
+ 199 380 p
+ 188 380 p
+ 875 379 p
+ 843 379 p
+ 876 379 p
+ 877 379 p
+ 873 379 p
+ 199 379 p
+ 187 379 p
+ 877 378 p
+ 876 378 p
+ 873 378 p
+ 913 378 p
+ 915 378 p
+ 198 378 p
+ 199 378 p
+ 878 377 p
+ 875 377 p
+ 879 377 p
+ 200 377 p
+ 188 377 p
+ 878 376 p
+ 875 376 p
+ 879 376 p
+ 880 376 p
+ 881 376 p
+ 200 376 p
+ 199 376 p
+ 880 375 p
+ 879 375 p
+ 881 375 p
+ 0 375 p
+ 200 375 p
+ 880 374 p
+ 879 374 p
+ 881 374 p
+ 916 374 p
+ 918 374 p
+ 0 374 p
+ 199 374 p
+ 349 373 p
+ 845 373 p
+ 882 373 p
+ 919 373 p
+ 920 373 p
+ 8 373 p
+ 327 373 p
+ 883 372 p
+ 884 372 p
+ 885 372 p
+ 189 372 p
+ 201 372 p
+ 883 371 p
+ 884 371 p
+ 885 371 p
+ 923 371 p
+ 924 371 p
+ 201 371 p
+ 202 371 p
+ 883 370 p
+ 884 370 p
+ 885 370 p
+ 888 370 p
+ 886 370 p
+ 189 370 p
+ 202 370 p
+ 886 369 p
+ 887 369 p
+ 851 369 p
+ 885 369 p
+ 888 369 p
+ 189 369 p
+ 203 369 p
+ 886 368 p
+ 887 368 p
+ 851 368 p
+ 889 368 p
+ 890 368 p
+ 203 368 p
+ 190 368 p
+ 885 367 p
+ 888 367 p
+ 886 367 p
+ 927 367 p
+ 928 367 p
+ 202 367 p
+ 203 367 p
+ 889 366 p
+ 887 366 p
+ 890 366 p
+ 853 366 p
+ 891 366 p
+ 204 366 p
+ 190 366 p
+ 889 365 p
+ 887 365 p
+ 890 365 p
+ 930 365 p
+ 931 365 p
+ 204 365 p
+ 203 365 p
+ 853 364 p
+ 889 364 p
+ 891 364 p
+ 892 364 p
+ 893 364 p
+ 191 364 p
+ 204 364 p
+ 892 363 p
+ 891 363 p
+ 893 363 p
+ 856 363 p
+ 894 363 p
+ 205 363 p
+ 191 363 p
+ 892 362 p
+ 891 362 p
+ 893 362 p
+ 935 362 p
+ 937 362 p
+ 205 362 p
+ 204 362 p
+ 856 361 p
+ 892 361 p
+ 894 361 p
+ 895 361 p
+ 896 361 p
+ 192 361 p
+ 205 361 p
+ 895 360 p
+ 894 360 p
+ 896 360 p
+ 859 360 p
+ 897 360 p
+ 206 360 p
+ 192 360 p
+ 895 359 p
+ 894 359 p
+ 896 359 p
+ 938 359 p
+ 940 359 p
+ 206 359 p
+ 205 359 p
+ 859 358 p
+ 895 358 p
+ 897 358 p
+ 898 358 p
+ 899 358 p
+ 193 358 p
+ 206 358 p
+ 898 357 p
+ 897 357 p
+ 899 357 p
+ 862 357 p
+ 900 357 p
+ 207 357 p
+ 193 357 p
+ 898 356 p
+ 897 356 p
+ 899 356 p
+ 941 356 p
+ 943 356 p
+ 207 356 p
+ 206 356 p
+ 862 355 p
+ 898 355 p
+ 900 355 p
+ 901 355 p
+ 902 355 p
+ 194 355 p
+ 207 355 p
+ 901 354 p
+ 900 354 p
+ 902 354 p
+ 865 354 p
+ 903 354 p
+ 208 354 p
+ 194 354 p
+ 901 353 p
+ 900 353 p
+ 902 353 p
+ 944 353 p
+ 946 353 p
+ 208 353 p
+ 207 353 p
+ 865 352 p
+ 901 352 p
+ 903 352 p
+ 904 352 p
+ 905 352 p
+ 195 352 p
+ 208 352 p
+ 904 351 p
+ 903 351 p
+ 905 351 p
+ 869 351 p
+ 906 351 p
+ 209 351 p
+ 195 351 p
+ 904 350 p
+ 903 350 p
+ 905 350 p
+ 947 350 p
+ 949 350 p
+ 209 350 p
+ 208 350 p
+ 869 349 p
+ 904 349 p
+ 906 349 p
+ 907 349 p
+ 908 349 p
+ 196 349 p
+ 209 349 p
+ 907 348 p
+ 906 348 p
+ 908 348 p
+ 872 348 p
+ 909 348 p
+ 210 348 p
+ 196 348 p
+ 907 347 p
+ 906 347 p
+ 908 347 p
+ 950 347 p
+ 952 347 p
+ 210 347 p
+ 209 347 p
+ 872 346 p
+ 907 346 p
+ 909 346 p
+ 910 346 p
+ 911 346 p
+ 197 346 p
+ 210 346 p
+ 910 345 p
+ 909 345 p
+ 911 345 p
+ 874 345 p
+ 912 345 p
+ 211 345 p
+ 197 345 p
+ 910 344 p
+ 909 344 p
+ 911 344 p
+ 955 344 p
+ 953 344 p
+ 211 344 p
+ 210 344 p
+ 874 343 p
+ 910 343 p
+ 912 343 p
+ 913 343 p
+ 914 343 p
+ 198 343 p
+ 211 343 p
+ 913 342 p
+ 912 342 p
+ 914 342 p
+ 877 342 p
+ 915 342 p
+ 212 342 p
+ 198 342 p
+ 913 341 p
+ 912 341 p
+ 914 341 p
+ 953 341 p
+ 954 341 p
+ 212 341 p
+ 211 341 p
+ 877 340 p
+ 913 340 p
+ 915 340 p
+ 916 340 p
+ 917 340 p
+ 199 340 p
+ 212 340 p
+ 916 339 p
+ 915 339 p
+ 917 339 p
+ 881 339 p
+ 918 339 p
+ 213 339 p
+ 199 339 p
+ 916 338 p
+ 915 338 p
+ 917 338 p
+ 957 338 p
+ 958 338 p
+ 213 338 p
+ 212 338 p
+ 881 337 p
+ 916 337 p
+ 918 337 p
+ 0 337 p
+ 213 337 p
+ 882 336 p
+ 919 336 p
+ 920 336 p
+ 921 336 p
+ 922 336 p
+ 327 336 p
+ 326 336 p
+ 882 335 p
+ 919 335 p
+ 920 335 p
+ 345 335 p
+ 961 335 p
+ 8 335 p
+ 326 335 p
+ 919 334 p
+ 921 334 p
+ 922 334 p
+ 847 334 p
+ 960 334 p
+ 327 334 p
+ 319 334 p
+ 919 333 p
+ 921 333 p
+ 922 333 p
+ 1040 333 p
+ 1001 333 p
+ 326 333 p
+ 319 333 p
+ 923 332 p
+ 924 332 p
+ 884 332 p
+ 925 332 p
+ 926 332 p
+ 201 332 p
+ 215 332 p
+ 923 331 p
+ 924 331 p
+ 884 331 p
+ 929 331 p
+ 927 331 p
+ 215 331 p
+ 202 331 p
+ 925 330 p
+ 926 330 p
+ 923 330 p
+ 201 330 p
+ 214 330 p
+ 925 329 p
+ 926 329 p
+ 923 329 p
+ 964 329 p
+ 965 329 p
+ 214 329 p
+ 215 329 p
+ 927 328 p
+ 928 328 p
+ 888 328 p
+ 924 328 p
+ 929 328 p
+ 202 328 p
+ 216 328 p
+ 927 327 p
+ 928 327 p
+ 888 327 p
+ 932 327 p
+ 930 327 p
+ 216 327 p
+ 203 327 p
+ 924 326 p
+ 929 326 p
+ 927 326 p
+ 968 326 p
+ 969 326 p
+ 215 326 p
+ 216 326 p
+ 930 325 p
+ 931 325 p
+ 890 325 p
+ 928 325 p
+ 932 325 p
+ 203 325 p
+ 217 325 p
+ 930 324 p
+ 931 324 p
+ 890 324 p
+ 933 324 p
+ 934 324 p
+ 217 324 p
+ 204 324 p
+ 928 323 p
+ 932 323 p
+ 930 323 p
+ 971 323 p
+ 972 323 p
+ 216 323 p
+ 217 323 p
+ 933 322 p
+ 931 322 p
+ 934 322 p
+ 935 322 p
+ 936 322 p
+ 218 322 p
+ 204 322 p
+ 933 321 p
+ 931 321 p
+ 934 321 p
+ 974 321 p
+ 975 321 p
+ 218 321 p
+ 217 321 p
+ 935 320 p
+ 933 320 p
+ 936 320 p
+ 893 320 p
+ 937 320 p
+ 219 320 p
+ 204 320 p
+ 935 319 p
+ 933 319 p
+ 936 319 p
+ 977 319 p
+ 979 319 p
+ 219 319 p
+ 218 319 p
+ 893 318 p
+ 935 318 p
+ 937 318 p
+ 938 318 p
+ 939 318 p
+ 205 318 p
+ 219 318 p
+ 938 317 p
+ 937 317 p
+ 939 317 p
+ 896 317 p
+ 940 317 p
+ 220 317 p
+ 205 317 p
+ 938 316 p
+ 937 316 p
+ 939 316 p
+ 980 316 p
+ 982 316 p
+ 220 316 p
+ 219 316 p
+ 896 315 p
+ 938 315 p
+ 940 315 p
+ 941 315 p
+ 942 315 p
+ 206 315 p
+ 220 315 p
+ 941 314 p
+ 940 314 p
+ 942 314 p
+ 899 314 p
+ 943 314 p
+ 221 314 p
+ 206 314 p
+ 941 313 p
+ 940 313 p
+ 942 313 p
+ 983 313 p
+ 985 313 p
+ 221 313 p
+ 220 313 p
+ 899 312 p
+ 941 312 p
+ 943 312 p
+ 944 312 p
+ 945 312 p
+ 207 312 p
+ 221 312 p
+ 944 311 p
+ 943 311 p
+ 945 311 p
+ 902 311 p
+ 946 311 p
+ 222 311 p
+ 207 311 p
+ 944 310 p
+ 943 310 p
+ 945 310 p
+ 986 310 p
+ 988 310 p
+ 222 310 p
+ 221 310 p
+ 902 309 p
+ 944 309 p
+ 946 309 p
+ 947 309 p
+ 948 309 p
+ 208 309 p
+ 222 309 p
+ 947 308 p
+ 946 308 p
+ 948 308 p
+ 905 308 p
+ 949 308 p
+ 223 308 p
+ 208 308 p
+ 947 307 p
+ 946 307 p
+ 948 307 p
+ 989 307 p
+ 991 307 p
+ 223 307 p
+ 222 307 p
+ 905 306 p
+ 947 306 p
+ 949 306 p
+ 950 306 p
+ 951 306 p
+ 209 306 p
+ 223 306 p
+ 950 305 p
+ 949 305 p
+ 951 305 p
+ 908 305 p
+ 952 305 p
+ 224 305 p
+ 209 305 p
+ 950 304 p
+ 949 304 p
+ 951 304 p
+ 992 304 p
+ 994 304 p
+ 224 304 p
+ 223 304 p
+ 908 303 p
+ 950 303 p
+ 952 303 p
+ 955 303 p
+ 956 303 p
+ 210 303 p
+ 224 303 p
+ 914 302 p
+ 953 302 p
+ 954 302 p
+ 911 302 p
+ 955 302 p
+ 211 302 p
+ 225 302 p
+ 914 301 p
+ 953 301 p
+ 954 301 p
+ 959 301 p
+ 957 301 p
+ 212 301 p
+ 225 301 p
+ 955 300 p
+ 952 300 p
+ 956 300 p
+ 911 300 p
+ 953 300 p
+ 225 300 p
+ 210 300 p
+ 955 299 p
+ 952 299 p
+ 956 299 p
+ 995 299 p
+ 997 299 p
+ 225 299 p
+ 224 299 p
+ 957 298 p
+ 958 298 p
+ 917 298 p
+ 954 298 p
+ 959 298 p
+ 212 298 p
+ 226 298 p
+ 957 297 p
+ 958 297 p
+ 917 297 p
+ 226 297 p
+ 213 297 p
+ 954 296 p
+ 959 296 p
+ 957 296 p
+ 998 296 p
+ 1000 296 p
+ 225 296 p
+ 226 296 p
+ 847 295 p
+ 960 295 p
+ 921 295 p
+ 1251 295 p
+ 1248 295 p
+ 320 295 p
+ 319 295 p
+ 345 294 p
+ 920 294 p
+ 961 294 p
+ 962 294 p
+ 963 294 p
+ 7 294 p
+ 326 294 p
+ 961 293 p
+ 962 293 p
+ 963 293 p
+ 1001 293 p
+ 1002 293 p
+ 326 293 p
+ 325 293 p
+ 961 292 p
+ 962 292 p
+ 963 292 p
+ 341 292 p
+ 1041 292 p
+ 7 292 p
+ 325 292 p
+ 964 291 p
+ 965 291 p
+ 926 291 p
+ 966 291 p
+ 967 291 p
+ 214 291 p
+ 228 291 p
+ 964 290 p
+ 965 290 p
+ 926 290 p
+ 970 290 p
+ 969 290 p
+ 228 290 p
+ 215 290 p
+ 966 289 p
+ 967 289 p
+ 964 289 p
+ 214 289 p
+ 227 289 p
+ 966 288 p
+ 967 288 p
+ 964 288 p
+ 1003 288 p
+ 1004 288 p
+ 227 288 p
+ 228 288 p
+ 968 287 p
+ 929 287 p
+ 969 287 p
+ 973 287 p
+ 972 287 p
+ 229 287 p
+ 216 287 p
+ 968 286 p
+ 929 286 p
+ 969 286 p
+ 970 286 p
+ 965 286 p
+ 229 286 p
+ 215 286 p
+ 970 285 p
+ 969 285 p
+ 965 285 p
+ 1007 285 p
+ 1008 285 p
+ 228 285 p
+ 229 285 p
+ 971 284 p
+ 932 284 p
+ 972 284 p
+ 976 284 p
+ 975 284 p
+ 230 284 p
+ 217 284 p
+ 971 283 p
+ 932 283 p
+ 972 283 p
+ 973 283 p
+ 968 283 p
+ 230 283 p
+ 216 283 p
+ 973 282 p
+ 972 282 p
+ 968 282 p
+ 1010 282 p
+ 1011 282 p
+ 229 282 p
+ 230 282 p
+ 974 281 p
+ 934 281 p
+ 975 281 p
+ 977 281 p
+ 978 281 p
+ 231 281 p
+ 218 281 p
+ 974 280 p
+ 934 280 p
+ 975 280 p
+ 976 280 p
+ 971 280 p
+ 231 280 p
+ 217 280 p
+ 976 279 p
+ 975 279 p
+ 971 279 p
+ 1013 279 p
+ 1014 279 p
+ 230 279 p
+ 231 279 p
+ 977 278 p
+ 974 278 p
+ 978 278 p
+ 936 278 p
+ 979 278 p
+ 232 278 p
+ 218 278 p
+ 977 277 p
+ 974 277 p
+ 978 277 p
+ 1016 277 p
+ 1017 277 p
+ 232 277 p
+ 231 277 p
+ 936 276 p
+ 977 276 p
+ 979 276 p
+ 980 276 p
+ 981 276 p
+ 219 276 p
+ 232 276 p
+ 980 275 p
+ 979 275 p
+ 981 275 p
+ 939 275 p
+ 982 275 p
+ 233 275 p
+ 219 275 p
+ 980 274 p
+ 979 274 p
+ 981 274 p
+ 1019 274 p
+ 1020 274 p
+ 233 274 p
+ 232 274 p
+ 939 273 p
+ 980 273 p
+ 982 273 p
+ 983 273 p
+ 984 273 p
+ 220 273 p
+ 233 273 p
+ 983 272 p
+ 982 272 p
+ 984 272 p
+ 942 272 p
+ 985 272 p
+ 234 272 p
+ 220 272 p
+ 983 271 p
+ 982 271 p
+ 984 271 p
+ 1022 271 p
+ 1024 271 p
+ 234 271 p
+ 233 271 p
+ 942 270 p
+ 983 270 p
+ 985 270 p
+ 986 270 p
+ 987 270 p
+ 221 270 p
+ 234 270 p
+ 986 269 p
+ 985 269 p
+ 987 269 p
+ 945 269 p
+ 988 269 p
+ 235 269 p
+ 221 269 p
+ 986 268 p
+ 985 268 p
+ 987 268 p
+ 1025 268 p
+ 1027 268 p
+ 235 268 p
+ 234 268 p
+ 945 267 p
+ 986 267 p
+ 988 267 p
+ 989 267 p
+ 990 267 p
+ 222 267 p
+ 235 267 p
+ 989 266 p
+ 988 266 p
+ 990 266 p
+ 948 266 p
+ 991 266 p
+ 236 266 p
+ 222 266 p
+ 989 265 p
+ 988 265 p
+ 990 265 p
+ 1028 265 p
+ 1030 265 p
+ 236 265 p
+ 235 265 p
+ 948 264 p
+ 989 264 p
+ 991 264 p
+ 992 264 p
+ 993 264 p
+ 223 264 p
+ 236 264 p
+ 992 263 p
+ 991 263 p
+ 993 263 p
+ 951 263 p
+ 994 263 p
+ 237 263 p
+ 223 263 p
+ 992 262 p
+ 991 262 p
+ 993 262 p
+ 1031 262 p
+ 1033 262 p
+ 237 262 p
+ 236 262 p
+ 951 261 p
+ 992 261 p
+ 994 261 p
+ 995 261 p
+ 996 261 p
+ 224 261 p
+ 237 261 p
+ 995 260 p
+ 994 260 p
+ 996 260 p
+ 956 260 p
+ 997 260 p
+ 238 260 p
+ 224 260 p
+ 995 259 p
+ 994 259 p
+ 996 259 p
+ 1034 259 p
+ 1036 259 p
+ 238 259 p
+ 237 259 p
+ 956 258 p
+ 995 258 p
+ 997 258 p
+ 998 258 p
+ 999 258 p
+ 225 258 p
+ 238 258 p
+ 998 257 p
+ 997 257 p
+ 999 257 p
+ 959 257 p
+ 1000 257 p
+ 239 257 p
+ 225 257 p
+ 998 256 p
+ 997 256 p
+ 999 256 p
+ 1037 256 p
+ 1039 256 p
+ 239 256 p
+ 238 256 p
+ 959 255 p
+ 998 255 p
+ 1000 255 p
+ 226 255 p
+ 239 255 p
+ 962 254 p
+ 1001 254 p
+ 1002 254 p
+ 922 254 p
+ 1040 254 p
+ 326 254 p
+ 318 254 p
+ 962 253 p
+ 1001 253 p
+ 1002 253 p
+ 1083 253 p
+ 1081 253 p
+ 325 253 p
+ 318 253 p
+ 1003 252 p
+ 967 252 p
+ 1004 252 p
+ 1009 252 p
+ 1008 252 p
+ 241 252 p
+ 228 252 p
+ 1003 251 p
+ 967 251 p
+ 1004 251 p
+ 1005 251 p
+ 1006 251 p
+ 241 251 p
+ 227 251 p
+ 1005 250 p
+ 1004 250 p
+ 1006 250 p
+ 1042 250 p
+ 1043 250 p
+ 240 250 p
+ 241 250 p
+ 1005 249 p
+ 1004 249 p
+ 1006 249 p
+ 240 249 p
+ 227 249 p
+ 1007 248 p
+ 970 248 p
+ 1008 248 p
+ 1012 248 p
+ 1011 248 p
+ 242 248 p
+ 229 248 p
+ 1007 247 p
+ 970 247 p
+ 1008 247 p
+ 1009 247 p
+ 1003 247 p
+ 242 247 p
+ 228 247 p
+ 1009 246 p
+ 1008 246 p
+ 1003 246 p
+ 1046 246 p
+ 1047 246 p
+ 241 246 p
+ 242 246 p
+ 1010 245 p
+ 973 245 p
+ 1011 245 p
+ 1015 245 p
+ 1014 245 p
+ 243 245 p
+ 230 245 p
+ 1010 244 p
+ 973 244 p
+ 1011 244 p
+ 1012 244 p
+ 1007 244 p
+ 243 244 p
+ 229 244 p
+ 1012 243 p
+ 1011 243 p
+ 1007 243 p
+ 1049 243 p
+ 1050 243 p
+ 242 243 p
+ 243 243 p
+ 1013 242 p
+ 976 242 p
+ 1014 242 p
+ 1018 242 p
+ 1017 242 p
+ 244 242 p
+ 231 242 p
+ 1013 241 p
+ 976 241 p
+ 1014 241 p
+ 1015 241 p
+ 1010 241 p
+ 244 241 p
+ 230 241 p
+ 1015 240 p
+ 1014 240 p
+ 1010 240 p
+ 1052 240 p
+ 1053 240 p
+ 243 240 p
+ 244 240 p
+ 1016 239 p
+ 978 239 p
+ 1017 239 p
+ 1021 239 p
+ 1019 239 p
+ 245 239 p
+ 232 239 p
+ 1016 238 p
+ 978 238 p
+ 1017 238 p
+ 1018 238 p
+ 1013 238 p
+ 245 238 p
+ 231 238 p
+ 1018 237 p
+ 1017 237 p
+ 1013 237 p
+ 1055 237 p
+ 1056 237 p
+ 244 237 p
+ 245 237 p
+ 1019 236 p
+ 1020 236 p
+ 981 236 p
+ 1016 236 p
+ 1021 236 p
+ 232 236 p
+ 246 236 p
+ 1019 235 p
+ 1020 235 p
+ 981 235 p
+ 1022 235 p
+ 1023 235 p
+ 246 235 p
+ 233 235 p
+ 1016 234 p
+ 1021 234 p
+ 1019 234 p
+ 1058 234 p
+ 1059 234 p
+ 245 234 p
+ 246 234 p
+ 1022 233 p
+ 1020 233 p
+ 1023 233 p
+ 984 233 p
+ 1024 233 p
+ 247 233 p
+ 233 233 p
+ 1022 232 p
+ 1020 232 p
+ 1023 232 p
+ 1061 232 p
+ 1062 232 p
+ 247 232 p
+ 246 232 p
+ 984 231 p
+ 1022 231 p
+ 1024 231 p
+ 1025 231 p
+ 1026 231 p
+ 234 231 p
+ 247 231 p
+ 1025 230 p
+ 1024 230 p
+ 1026 230 p
+ 987 230 p
+ 1027 230 p
+ 248 230 p
+ 234 230 p
+ 1025 229 p
+ 1024 229 p
+ 1026 229 p
+ 1064 229 p
+ 1066 229 p
+ 248 229 p
+ 247 229 p
+ 987 228 p
+ 1025 228 p
+ 1027 228 p
+ 1028 228 p
+ 1029 228 p
+ 235 228 p
+ 248 228 p
+ 1028 227 p
+ 1027 227 p
+ 1029 227 p
+ 990 227 p
+ 1030 227 p
+ 249 227 p
+ 235 227 p
+ 1028 226 p
+ 1027 226 p
+ 1029 226 p
+ 1067 226 p
+ 1069 226 p
+ 249 226 p
+ 248 226 p
+ 990 225 p
+ 1028 225 p
+ 1030 225 p
+ 1031 225 p
+ 1032 225 p
+ 236 225 p
+ 249 225 p
+ 1031 224 p
+ 1030 224 p
+ 1032 224 p
+ 993 224 p
+ 1033 224 p
+ 250 224 p
+ 236 224 p
+ 1031 223 p
+ 1030 223 p
+ 1032 223 p
+ 1070 223 p
+ 1072 223 p
+ 250 223 p
+ 249 223 p
+ 993 222 p
+ 1031 222 p
+ 1033 222 p
+ 1034 222 p
+ 1035 222 p
+ 237 222 p
+ 250 222 p
+ 1034 221 p
+ 1033 221 p
+ 1035 221 p
+ 996 221 p
+ 1036 221 p
+ 251 221 p
+ 237 221 p
+ 1034 220 p
+ 1033 220 p
+ 1035 220 p
+ 1073 220 p
+ 1075 220 p
+ 251 220 p
+ 250 220 p
+ 996 219 p
+ 1034 219 p
+ 1036 219 p
+ 1037 219 p
+ 1038 219 p
+ 238 219 p
+ 251 219 p
+ 1037 218 p
+ 1036 218 p
+ 1038 218 p
+ 999 218 p
+ 1039 218 p
+ 252 218 p
+ 238 218 p
+ 1037 217 p
+ 1036 217 p
+ 1038 217 p
+ 1076 217 p
+ 1078 217 p
+ 252 217 p
+ 251 217 p
+ 999 216 p
+ 1037 216 p
+ 1039 216 p
+ 239 216 p
+ 252 216 p
+ 922 215 p
+ 1040 215 p
+ 1001 215 p
+ 1249 215 p
+ 1246 215 p
+ 319 215 p
+ 318 215 p
+ 341 214 p
+ 963 214 p
+ 1041 214 p
+ 1079 214 p
+ 1080 214 p
+ 6 214 p
+ 325 214 p
+ 1042 213 p
+ 1005 213 p
+ 1043 213 p
+ 1048 213 p
+ 1047 213 p
+ 254 213 p
+ 241 213 p
+ 1042 212 p
+ 1005 212 p
+ 1043 212 p
+ 1044 212 p
+ 1045 212 p
+ 254 212 p
+ 240 212 p
+ 1044 211 p
+ 1043 211 p
+ 1045 211 p
+ 1084 211 p
+ 1085 211 p
+ 253 211 p
+ 254 211 p
+ 1044 210 p
+ 1043 210 p
+ 1045 210 p
+ 253 210 p
+ 240 210 p
+ 1046 209 p
+ 1009 209 p
+ 1047 209 p
+ 1051 209 p
+ 1050 209 p
+ 255 209 p
+ 242 209 p
+ 1046 208 p
+ 1009 208 p
+ 1047 208 p
+ 1048 208 p
+ 1042 208 p
+ 255 208 p
+ 241 208 p
+ 1048 207 p
+ 1047 207 p
+ 1042 207 p
+ 1086 207 p
+ 1087 207 p
+ 254 207 p
+ 255 207 p
+ 1049 206 p
+ 1012 206 p
+ 1050 206 p
+ 1054 206 p
+ 1053 206 p
+ 256 206 p
+ 243 206 p
+ 1049 205 p
+ 1012 205 p
+ 1050 205 p
+ 1051 205 p
+ 1046 205 p
+ 256 205 p
+ 242 205 p
+ 1051 204 p
+ 1050 204 p
+ 1046 204 p
+ 1089 204 p
+ 1090 204 p
+ 255 204 p
+ 256 204 p
+ 1052 203 p
+ 1015 203 p
+ 1053 203 p
+ 1057 203 p
+ 1056 203 p
+ 257 203 p
+ 244 203 p
+ 1052 202 p
+ 1015 202 p
+ 1053 202 p
+ 1054 202 p
+ 1049 202 p
+ 257 202 p
+ 243 202 p
+ 1054 201 p
+ 1053 201 p
+ 1049 201 p
+ 1092 201 p
+ 1093 201 p
+ 256 201 p
+ 257 201 p
+ 1055 200 p
+ 1018 200 p
+ 1056 200 p
+ 1060 200 p
+ 1059 200 p
+ 258 200 p
+ 245 200 p
+ 1055 199 p
+ 1018 199 p
+ 1056 199 p
+ 1057 199 p
+ 1052 199 p
+ 258 199 p
+ 244 199 p
+ 1057 198 p
+ 1056 198 p
+ 1052 198 p
+ 1095 198 p
+ 1096 198 p
+ 257 198 p
+ 258 198 p
+ 1058 197 p
+ 1021 197 p
+ 1059 197 p
+ 1063 197 p
+ 1061 197 p
+ 259 197 p
+ 246 197 p
+ 1058 196 p
+ 1021 196 p
+ 1059 196 p
+ 1060 196 p
+ 1055 196 p
+ 259 196 p
+ 245 196 p
+ 1060 195 p
+ 1059 195 p
+ 1055 195 p
+ 1098 195 p
+ 1099 195 p
+ 258 195 p
+ 259 195 p
+ 1061 194 p
+ 1062 194 p
+ 1023 194 p
+ 1058 194 p
+ 1063 194 p
+ 246 194 p
+ 260 194 p
+ 1061 193 p
+ 1062 193 p
+ 1023 193 p
+ 1064 193 p
+ 1065 193 p
+ 260 193 p
+ 247 193 p
+ 1058 192 p
+ 1063 192 p
+ 1061 192 p
+ 1101 192 p
+ 1102 192 p
+ 259 192 p
+ 260 192 p
+ 1064 191 p
+ 1062 191 p
+ 1065 191 p
+ 1026 191 p
+ 1066 191 p
+ 261 191 p
+ 247 191 p
+ 1064 190 p
+ 1062 190 p
+ 1065 190 p
+ 1104 190 p
+ 1105 190 p
+ 261 190 p
+ 260 190 p
+ 1026 189 p
+ 1064 189 p
+ 1066 189 p
+ 1067 189 p
+ 1068 189 p
+ 248 189 p
+ 261 189 p
+ 1067 188 p
+ 1066 188 p
+ 1068 188 p
+ 1029 188 p
+ 1069 188 p
+ 262 188 p
+ 248 188 p
+ 1067 187 p
+ 1066 187 p
+ 1068 187 p
+ 1107 187 p
+ 1109 187 p
+ 262 187 p
+ 261 187 p
+ 1029 186 p
+ 1067 186 p
+ 1069 186 p
+ 1070 186 p
+ 1071 186 p
+ 249 186 p
+ 262 186 p
+ 1070 185 p
+ 1069 185 p
+ 1071 185 p
+ 1032 185 p
+ 1072 185 p
+ 263 185 p
+ 249 185 p
+ 1070 184 p
+ 1069 184 p
+ 1071 184 p
+ 1110 184 p
+ 1112 184 p
+ 263 184 p
+ 262 184 p
+ 1032 183 p
+ 1070 183 p
+ 1072 183 p
+ 1073 183 p
+ 1074 183 p
+ 250 183 p
+ 263 183 p
+ 1073 182 p
+ 1072 182 p
+ 1074 182 p
+ 1035 182 p
+ 1075 182 p
+ 264 182 p
+ 250 182 p
+ 1073 181 p
+ 1072 181 p
+ 1074 181 p
+ 1113 181 p
+ 1115 181 p
+ 264 181 p
+ 263 181 p
+ 1035 180 p
+ 1073 180 p
+ 1075 180 p
+ 1076 180 p
+ 1077 180 p
+ 251 180 p
+ 264 180 p
+ 1076 179 p
+ 1075 179 p
+ 1077 179 p
+ 1038 179 p
+ 1078 179 p
+ 265 179 p
+ 251 179 p
+ 1076 178 p
+ 1075 178 p
+ 1077 178 p
+ 1116 178 p
+ 1118 178 p
+ 265 178 p
+ 264 178 p
+ 1038 177 p
+ 1076 177 p
+ 1078 177 p
+ 252 177 p
+ 265 177 p
+ 1041 176 p
+ 1079 176 p
+ 1080 176 p
+ 1081 176 p
+ 1082 176 p
+ 325 176 p
+ 324 176 p
+ 1041 175 p
+ 1079 175 p
+ 1080 175 p
+ 337 175 p
+ 1121 175 p
+ 6 175 p
+ 324 175 p
+ 1079 174 p
+ 1081 174 p
+ 1082 174 p
+ 1002 174 p
+ 1083 174 p
+ 325 174 p
+ 317 174 p
+ 1079 173 p
+ 1081 173 p
+ 1082 173 p
+ 1167 173 p
+ 1165 173 p
+ 324 173 p
+ 317 173 p
+ 1002 172 p
+ 1083 172 p
+ 1081 172 p
+ 1247 172 p
+ 1244 172 p
+ 318 172 p
+ 317 172 p
+ 1084 171 p
+ 1044 171 p
+ 1085 171 p
+ 1088 171 p
+ 1087 171 p
+ 266 171 p
+ 254 171 p
+ 1084 170 p
+ 1044 170 p
+ 1085 170 p
+ 266 170 p
+ 253 170 p
+ 1086 169 p
+ 1048 169 p
+ 1087 169 p
+ 1091 169 p
+ 1090 169 p
+ 267 169 p
+ 255 169 p
+ 1086 168 p
+ 1048 168 p
+ 1087 168 p
+ 1088 168 p
+ 1084 168 p
+ 267 168 p
+ 254 168 p
+ 1088 167 p
+ 1087 167 p
+ 1084 167 p
+ 1122 167 p
+ 1123 167 p
+ 266 167 p
+ 267 167 p
+ 1089 166 p
+ 1051 166 p
+ 1090 166 p
+ 1094 166 p
+ 1093 166 p
+ 268 166 p
+ 256 166 p
+ 1089 165 p
+ 1051 165 p
+ 1090 165 p
+ 1091 165 p
+ 1086 165 p
+ 268 165 p
+ 255 165 p
+ 1091 164 p
+ 1090 164 p
+ 1086 164 p
+ 1124 164 p
+ 1125 164 p
+ 267 164 p
+ 268 164 p
+ 1092 163 p
+ 1054 163 p
+ 1093 163 p
+ 1097 163 p
+ 1096 163 p
+ 269 163 p
+ 257 163 p
+ 1092 162 p
+ 1054 162 p
+ 1093 162 p
+ 1094 162 p
+ 1089 162 p
+ 269 162 p
+ 256 162 p
+ 1094 161 p
+ 1093 161 p
+ 1089 161 p
+ 1127 161 p
+ 1128 161 p
+ 268 161 p
+ 269 161 p
+ 1095 160 p
+ 1057 160 p
+ 1096 160 p
+ 1100 160 p
+ 1099 160 p
+ 270 160 p
+ 258 160 p
+ 1095 159 p
+ 1057 159 p
+ 1096 159 p
+ 1097 159 p
+ 1092 159 p
+ 270 159 p
+ 257 159 p
+ 1097 158 p
+ 1096 158 p
+ 1092 158 p
+ 1130 158 p
+ 1131 158 p
+ 269 158 p
+ 270 158 p
+ 1098 157 p
+ 1060 157 p
+ 1099 157 p
+ 1103 157 p
+ 1102 157 p
+ 271 157 p
+ 259 157 p
+ 1098 156 p
+ 1060 156 p
+ 1099 156 p
+ 1100 156 p
+ 1095 156 p
+ 271 156 p
+ 258 156 p
+ 1100 155 p
+ 1099 155 p
+ 1095 155 p
+ 1133 155 p
+ 1134 155 p
+ 270 155 p
+ 271 155 p
+ 1101 154 p
+ 1063 154 p
+ 1102 154 p
+ 1106 154 p
+ 1104 154 p
+ 272 154 p
+ 260 154 p
+ 1101 153 p
+ 1063 153 p
+ 1102 153 p
+ 1103 153 p
+ 1098 153 p
+ 272 153 p
+ 259 153 p
+ 1103 152 p
+ 1102 152 p
+ 1098 152 p
+ 1136 152 p
+ 1137 152 p
+ 271 152 p
+ 272 152 p
+ 1104 151 p
+ 1105 151 p
+ 1065 151 p
+ 1101 151 p
+ 1106 151 p
+ 260 151 p
+ 273 151 p
+ 1104 150 p
+ 1105 150 p
+ 1065 150 p
+ 1107 150 p
+ 1108 150 p
+ 273 150 p
+ 261 150 p
+ 1101 149 p
+ 1106 149 p
+ 1104 149 p
+ 1139 149 p
+ 1140 149 p
+ 272 149 p
+ 273 149 p
+ 1107 148 p
+ 1105 148 p
+ 1108 148 p
+ 1068 148 p
+ 1109 148 p
+ 274 148 p
+ 261 148 p
+ 1107 147 p
+ 1105 147 p
+ 1108 147 p
+ 1142 147 p
+ 1143 147 p
+ 274 147 p
+ 273 147 p
+ 1068 146 p
+ 1107 146 p
+ 1109 146 p
+ 1110 146 p
+ 1111 146 p
+ 262 146 p
+ 274 146 p
+ 1110 145 p
+ 1109 145 p
+ 1111 145 p
+ 1071 145 p
+ 1112 145 p
+ 275 145 p
+ 262 145 p
+ 1110 144 p
+ 1109 144 p
+ 1111 144 p
+ 1145 144 p
+ 1146 144 p
+ 275 144 p
+ 274 144 p
+ 1071 143 p
+ 1110 143 p
+ 1112 143 p
+ 1113 143 p
+ 1114 143 p
+ 263 143 p
+ 275 143 p
+ 1113 142 p
+ 1112 142 p
+ 1114 142 p
+ 1074 142 p
+ 1115 142 p
+ 276 142 p
+ 263 142 p
+ 1113 141 p
+ 1112 141 p
+ 1114 141 p
+ 1148 141 p
+ 1149 141 p
+ 276 141 p
+ 275 141 p
+ 1074 140 p
+ 1113 140 p
+ 1115 140 p
+ 1116 140 p
+ 1117 140 p
+ 264 140 p
+ 276 140 p
+ 1116 139 p
+ 1115 139 p
+ 1117 139 p
+ 1077 139 p
+ 1118 139 p
+ 277 139 p
+ 264 139 p
+ 1116 138 p
+ 1115 138 p
+ 1117 138 p
+ 1151 138 p
+ 1153 138 p
+ 277 138 p
+ 276 138 p
+ 1077 137 p
+ 1116 137 p
+ 1118 137 p
+ 1119 137 p
+ 1120 137 p
+ 265 137 p
+ 277 137 p
+ 1118 136 p
+ 1119 136 p
+ 1120 136 p
+ 1156 136 p
+ 1158 136 p
+ 277 136 p
+ 278 136 p
+ 1118 135 p
+ 1119 135 p
+ 1120 135 p
+ 265 135 p
+ 278 135 p
+ 337 134 p
+ 1080 134 p
+ 1121 134 p
+ 1163 134 p
+ 1164 134 p
+ 5 134 p
+ 324 134 p
+ 1122 133 p
+ 1088 133 p
+ 1123 133 p
+ 1126 133 p
+ 1125 133 p
+ 279 133 p
+ 267 133 p
+ 1122 132 p
+ 1088 132 p
+ 1123 132 p
+ 279 132 p
+ 266 132 p
+ 1124 131 p
+ 1091 131 p
+ 1125 131 p
+ 1129 131 p
+ 1128 131 p
+ 280 131 p
+ 268 131 p
+ 1124 130 p
+ 1091 130 p
+ 1125 130 p
+ 1126 130 p
+ 1122 130 p
+ 280 130 p
+ 267 130 p
+ 1126 129 p
+ 1125 129 p
+ 1122 129 p
+ 1168 129 p
+ 1169 129 p
+ 279 129 p
+ 280 129 p
+ 1127 128 p
+ 1094 128 p
+ 1128 128 p
+ 1132 128 p
+ 1131 128 p
+ 281 128 p
+ 269 128 p
+ 1127 127 p
+ 1094 127 p
+ 1128 127 p
+ 1129 127 p
+ 1124 127 p
+ 281 127 p
+ 268 127 p
+ 1129 126 p
+ 1128 126 p
+ 1124 126 p
+ 1170 126 p
+ 1171 126 p
+ 280 126 p
+ 281 126 p
+ 1130 125 p
+ 1097 125 p
+ 1131 125 p
+ 1135 125 p
+ 1134 125 p
+ 282 125 p
+ 270 125 p
+ 1130 124 p
+ 1097 124 p
+ 1131 124 p
+ 1132 124 p
+ 1127 124 p
+ 282 124 p
+ 269 124 p
+ 1132 123 p
+ 1131 123 p
+ 1127 123 p
+ 1173 123 p
+ 1174 123 p
+ 281 123 p
+ 282 123 p
+ 1133 122 p
+ 1100 122 p
+ 1134 122 p
+ 1138 122 p
+ 1137 122 p
+ 283 122 p
+ 271 122 p
+ 1133 121 p
+ 1100 121 p
+ 1134 121 p
+ 1135 121 p
+ 1130 121 p
+ 283 121 p
+ 270 121 p
+ 1135 120 p
+ 1134 120 p
+ 1130 120 p
+ 1176 120 p
+ 1177 120 p
+ 282 120 p
+ 283 120 p
+ 1136 119 p
+ 1103 119 p
+ 1137 119 p
+ 1141 119 p
+ 1140 119 p
+ 284 119 p
+ 272 119 p
+ 1136 118 p
+ 1103 118 p
+ 1137 118 p
+ 1138 118 p
+ 1133 118 p
+ 284 118 p
+ 271 118 p
+ 1138 117 p
+ 1137 117 p
+ 1133 117 p
+ 1179 117 p
+ 1180 117 p
+ 283 117 p
+ 284 117 p
+ 1139 116 p
+ 1106 116 p
+ 1140 116 p
+ 1144 116 p
+ 1143 116 p
+ 285 116 p
+ 273 116 p
+ 1139 115 p
+ 1106 115 p
+ 1140 115 p
+ 1141 115 p
+ 1136 115 p
+ 285 115 p
+ 272 115 p
+ 1141 114 p
+ 1140 114 p
+ 1136 114 p
+ 1182 114 p
+ 1183 114 p
+ 284 114 p
+ 285 114 p
+ 1142 113 p
+ 1108 113 p
+ 1143 113 p
+ 1147 113 p
+ 1145 113 p
+ 286 113 p
+ 274 113 p
+ 1142 112 p
+ 1108 112 p
+ 1143 112 p
+ 1144 112 p
+ 1139 112 p
+ 286 112 p
+ 273 112 p
+ 1144 111 p
+ 1143 111 p
+ 1139 111 p
+ 1185 111 p
+ 1186 111 p
+ 285 111 p
+ 286 111 p
+ 1145 110 p
+ 1146 110 p
+ 1111 110 p
+ 1142 110 p
+ 1147 110 p
+ 274 110 p
+ 287 110 p
+ 1145 109 p
+ 1146 109 p
+ 1111 109 p
+ 1150 109 p
+ 1148 109 p
+ 287 109 p
+ 275 109 p
+ 1142 108 p
+ 1147 108 p
+ 1145 108 p
+ 1188 108 p
+ 1189 108 p
+ 286 108 p
+ 287 108 p
+ 1148 107 p
+ 1149 107 p
+ 1114 107 p
+ 1146 107 p
+ 1150 107 p
+ 275 107 p
+ 288 107 p
+ 1148 106 p
+ 1149 106 p
+ 1114 106 p
+ 1151 106 p
+ 1152 106 p
+ 288 106 p
+ 276 106 p
+ 1146 105 p
+ 1150 105 p
+ 1148 105 p
+ 1191 105 p
+ 1192 105 p
+ 287 105 p
+ 288 105 p
+ 1151 104 p
+ 1149 104 p
+ 1152 104 p
+ 1117 104 p
+ 1153 104 p
+ 289 104 p
+ 276 104 p
+ 1151 103 p
+ 1149 103 p
+ 1152 103 p
+ 1196 103 p
+ 1194 103 p
+ 289 103 p
+ 288 103 p
+ 1117 102 p
+ 1151 102 p
+ 1153 102 p
+ 1154 102 p
+ 1155 102 p
+ 277 102 p
+ 289 102 p
+ 1154 101 p
+ 1153 101 p
+ 1155 101 p
+ 1156 101 p
+ 1157 101 p
+ 290 101 p
+ 277 101 p
+ 1154 100 p
+ 1153 100 p
+ 1155 100 p
+ 1194 100 p
+ 1195 100 p
+ 290 100 p
+ 289 100 p
+ 1156 99 p
+ 1154 99 p
+ 1157 99 p
+ 1119 99 p
+ 1158 99 p
+ 291 99 p
+ 277 99 p
+ 1156 98 p
+ 1154 98 p
+ 1157 98 p
+ 1200 98 p
+ 1198 98 p
+ 291 98 p
+ 290 98 p
+ 1119 97 p
+ 1156 97 p
+ 1158 97 p
+ 1159 97 p
+ 1162 97 p
+ 278 97 p
+ 291 97 p
+ 1159 96 p
+ 1160 96 p
+ 1161 96 p
+ 1158 96 p
+ 1162 96 p
+ 292 96 p
+ 291 96 p
+ 1159 95 p
+ 1160 95 p
+ 1161 95 p
+ 1198 95 p
+ 1199 95 p
+ 291 95 p
+ 1 95 p
+ 1159 94 p
+ 1160 94 p
+ 1161 94 p
+ 292 94 p
+ 1 94 p
+ 1158 93 p
+ 1159 93 p
+ 1162 93 p
+ 278 93 p
+ 292 93 p
+ 1121 92 p
+ 1163 92 p
+ 1164 92 p
+ 1165 92 p
+ 1166 92 p
+ 324 92 p
+ 323 92 p
+ 1121 91 p
+ 1163 91 p
+ 1164 91 p
+ 332 91 p
+ 1202 91 p
+ 5 91 p
+ 323 91 p
+ 1163 90 p
+ 1165 90 p
+ 1166 90 p
+ 1082 90 p
+ 1167 90 p
+ 324 90 p
+ 316 90 p
+ 1163 89 p
+ 1165 89 p
+ 1166 89 p
+ 1243 89 p
+ 1234 89 p
+ 323 89 p
+ 316 89 p
+ 1082 88 p
+ 1167 88 p
+ 1165 88 p
+ 1245 88 p
+ 1241 88 p
+ 317 88 p
+ 316 88 p
+ 1168 87 p
+ 1126 87 p
+ 1169 87 p
+ 1172 87 p
+ 1171 87 p
+ 293 87 p
+ 280 87 p
+ 1168 86 p
+ 1126 86 p
+ 1169 86 p
+ 293 86 p
+ 279 86 p
+ 1170 85 p
+ 1129 85 p
+ 1171 85 p
+ 1175 85 p
+ 1174 85 p
+ 294 85 p
+ 281 85 p
+ 1170 84 p
+ 1129 84 p
+ 1171 84 p
+ 1172 84 p
+ 1168 84 p
+ 294 84 p
+ 280 84 p
+ 1172 83 p
+ 1171 83 p
+ 1168 83 p
+ 1203 83 p
+ 1204 83 p
+ 293 83 p
+ 294 83 p
+ 1173 82 p
+ 1132 82 p
+ 1174 82 p
+ 1178 82 p
+ 1177 82 p
+ 295 82 p
+ 282 82 p
+ 1173 81 p
+ 1132 81 p
+ 1174 81 p
+ 1175 81 p
+ 1170 81 p
+ 295 81 p
+ 281 81 p
+ 1175 80 p
+ 1174 80 p
+ 1170 80 p
+ 1205 80 p
+ 1206 80 p
+ 294 80 p
+ 295 80 p
+ 1176 79 p
+ 1135 79 p
+ 1177 79 p
+ 1181 79 p
+ 1180 79 p
+ 296 79 p
+ 283 79 p
+ 1176 78 p
+ 1135 78 p
+ 1177 78 p
+ 1178 78 p
+ 1173 78 p
+ 296 78 p
+ 282 78 p
+ 1178 77 p
+ 1177 77 p
+ 1173 77 p
+ 1208 77 p
+ 1209 77 p
+ 295 77 p
+ 296 77 p
+ 1179 76 p
+ 1138 76 p
+ 1180 76 p
+ 1184 76 p
+ 1183 76 p
+ 297 76 p
+ 284 76 p
+ 1179 75 p
+ 1138 75 p
+ 1180 75 p
+ 1181 75 p
+ 1176 75 p
+ 297 75 p
+ 283 75 p
+ 1181 74 p
+ 1180 74 p
+ 1176 74 p
+ 1211 74 p
+ 1212 74 p
+ 296 74 p
+ 297 74 p
+ 1182 73 p
+ 1141 73 p
+ 1183 73 p
+ 1187 73 p
+ 1186 73 p
+ 298 73 p
+ 285 73 p
+ 1182 72 p
+ 1141 72 p
+ 1183 72 p
+ 1184 72 p
+ 1179 72 p
+ 298 72 p
+ 284 72 p
+ 1184 71 p
+ 1183 71 p
+ 1179 71 p
+ 1214 71 p
+ 1215 71 p
+ 297 71 p
+ 298 71 p
+ 1185 70 p
+ 1144 70 p
+ 1186 70 p
+ 1190 70 p
+ 1189 70 p
+ 299 70 p
+ 286 70 p
+ 1185 69 p
+ 1144 69 p
+ 1186 69 p
+ 1187 69 p
+ 1182 69 p
+ 299 69 p
+ 285 69 p
+ 1187 68 p
+ 1186 68 p
+ 1182 68 p
+ 1217 68 p
+ 1218 68 p
+ 298 68 p
+ 299 68 p
+ 1188 67 p
+ 1147 67 p
+ 1189 67 p
+ 1193 67 p
+ 1191 67 p
+ 300 67 p
+ 287 67 p
+ 1188 66 p
+ 1147 66 p
+ 1189 66 p
+ 1190 66 p
+ 1185 66 p
+ 300 66 p
+ 286 66 p
+ 1190 65 p
+ 1189 65 p
+ 1185 65 p
+ 1220 65 p
+ 1221 65 p
+ 299 65 p
+ 300 65 p
+ 1191 64 p
+ 1192 64 p
+ 1150 64 p
+ 1188 64 p
+ 1193 64 p
+ 287 64 p
+ 301 64 p
+ 1191 63 p
+ 1192 63 p
+ 1150 63 p
+ 1197 63 p
+ 1196 63 p
+ 301 63 p
+ 288 63 p
+ 1188 62 p
+ 1193 62 p
+ 1191 62 p
+ 1223 62 p
+ 1224 62 p
+ 300 62 p
+ 301 62 p
+ 1194 61 p
+ 1195 61 p
+ 1155 61 p
+ 1196 61 p
+ 1152 61 p
+ 289 61 p
+ 302 61 p
+ 1194 60 p
+ 1195 60 p
+ 1155 60 p
+ 1201 60 p
+ 1200 60 p
+ 302 60 p
+ 290 60 p
+ 1196 59 p
+ 1194 59 p
+ 1152 59 p
+ 1192 59 p
+ 1197 59 p
+ 288 59 p
+ 302 59 p
+ 1192 58 p
+ 1197 58 p
+ 1196 58 p
+ 1226 58 p
+ 1227 58 p
+ 301 58 p
+ 302 58 p
+ 1198 57 p
+ 1199 57 p
+ 1160 57 p
+ 1200 57 p
+ 1157 57 p
+ 291 57 p
+ 303 57 p
+ 1198 56 p
+ 1199 56 p
+ 1160 56 p
+ 303 56 p
+ 1 56 p
+ 1200 55 p
+ 1198 55 p
+ 1157 55 p
+ 1195 55 p
+ 1201 55 p
+ 290 55 p
+ 303 55 p
+ 1195 54 p
+ 1201 54 p
+ 1200 54 p
+ 1229 54 p
+ 1230 54 p
+ 302 54 p
+ 303 54 p
+ 332 53 p
+ 1164 53 p
+ 1202 53 p
+ 1232 53 p
+ 1233 53 p
+ 4 53 p
+ 323 53 p
+ 1203 52 p
+ 1172 52 p
+ 1204 52 p
+ 1207 52 p
+ 1206 52 p
+ 304 52 p
+ 294 52 p
+ 1203 51 p
+ 1172 51 p
+ 1204 51 p
+ 304 51 p
+ 293 51 p
+ 1205 50 p
+ 1175 50 p
+ 1206 50 p
+ 1210 50 p
+ 1209 50 p
+ 305 50 p
+ 295 50 p
+ 1205 49 p
+ 1175 49 p
+ 1206 49 p
+ 1207 49 p
+ 1203 49 p
+ 305 49 p
+ 294 49 p
+ 1207 48 p
+ 1206 48 p
+ 1203 48 p
+ 1236 48 p
+ 1237 48 p
+ 304 48 p
+ 305 48 p
+ 1208 47 p
+ 1178 47 p
+ 1209 47 p
+ 1213 47 p
+ 1212 47 p
+ 306 47 p
+ 296 47 p
+ 1208 46 p
+ 1178 46 p
+ 1209 46 p
+ 1210 46 p
+ 1205 46 p
+ 306 46 p
+ 295 46 p
+ 1210 45 p
+ 1209 45 p
+ 1205 45 p
+ 1238 45 p
+ 1239 45 p
+ 305 45 p
+ 306 45 p
+ 1211 44 p
+ 1181 44 p
+ 1212 44 p
+ 1216 44 p
+ 1215 44 p
+ 307 44 p
+ 297 44 p
+ 1211 43 p
+ 1181 43 p
+ 1212 43 p
+ 1213 43 p
+ 1208 43 p
+ 307 43 p
+ 296 43 p
+ 1213 42 p
+ 1212 42 p
+ 1208 42 p
+ 1241 42 p
+ 1242 42 p
+ 306 42 p
+ 307 42 p
+ 1214 41 p
+ 1184 41 p
+ 1215 41 p
+ 1219 41 p
+ 1218 41 p
+ 308 41 p
+ 298 41 p
+ 1214 40 p
+ 1184 40 p
+ 1215 40 p
+ 1216 40 p
+ 1211 40 p
+ 308 40 p
+ 297 40 p
+ 1216 39 p
+ 1215 39 p
+ 1211 39 p
+ 1244 39 p
+ 1245 39 p
+ 307 39 p
+ 308 39 p
+ 1217 38 p
+ 1187 38 p
+ 1218 38 p
+ 1222 38 p
+ 1221 38 p
+ 309 38 p
+ 299 38 p
+ 1217 37 p
+ 1187 37 p
+ 1218 37 p
+ 1219 37 p
+ 1214 37 p
+ 309 37 p
+ 298 37 p
+ 1219 36 p
+ 1218 36 p
+ 1214 36 p
+ 1246 36 p
+ 1247 36 p
+ 308 36 p
+ 309 36 p
+ 1220 35 p
+ 1190 35 p
+ 1221 35 p
+ 1225 35 p
+ 1223 35 p
+ 310 35 p
+ 300 35 p
+ 1220 34 p
+ 1190 34 p
+ 1221 34 p
+ 1222 34 p
+ 1217 34 p
+ 310 34 p
+ 299 34 p
+ 1222 33 p
+ 1221 33 p
+ 1217 33 p
+ 1248 33 p
+ 1249 33 p
+ 309 33 p
+ 310 33 p
+ 1223 32 p
+ 1224 32 p
+ 1193 32 p
+ 1220 32 p
+ 1225 32 p
+ 300 32 p
+ 311 32 p
+ 1223 31 p
+ 1224 31 p
+ 1193 31 p
+ 1228 31 p
+ 1226 31 p
+ 311 31 p
+ 301 31 p
+ 1220 30 p
+ 1225 30 p
+ 1223 30 p
+ 1250 30 p
+ 1251 30 p
+ 310 30 p
+ 311 30 p
+ 1226 29 p
+ 1227 29 p
+ 1197 29 p
+ 1224 29 p
+ 1228 29 p
+ 301 29 p
+ 312 29 p
+ 1226 28 p
+ 1227 28 p
+ 1197 28 p
+ 1231 28 p
+ 1229 28 p
+ 312 28 p
+ 302 28 p
+ 1224 27 p
+ 1228 27 p
+ 1226 27 p
+ 1254 27 p
+ 1253 27 p
+ 311 27 p
+ 312 27 p
+ 1229 26 p
+ 1230 26 p
+ 1201 26 p
+ 1227 26 p
+ 1231 26 p
+ 302 26 p
+ 313 26 p
+ 1229 25 p
+ 1230 25 p
+ 1201 25 p
+ 313 25 p
+ 303 25 p
+ 1227 24 p
+ 1231 24 p
+ 1229 24 p
+ 1252 24 p
+ 1253 24 p
+ 312 24 p
+ 313 24 p
+ 1202 23 p
+ 1232 23 p
+ 1233 23 p
+ 1234 23 p
+ 1235 23 p
+ 323 23 p
+ 322 23 p
+ 1202 22 p
+ 1232 22 p
+ 1233 22 p
+ 4 22 p
+ 322 22 p
+ 1232 21 p
+ 1234 21 p
+ 1235 21 p
+ 1166 21 p
+ 1243 21 p
+ 323 21 p
+ 315 21 p
+ 1232 20 p
+ 1234 20 p
+ 1235 20 p
+ 1240 20 p
+ 1255 20 p
+ 322 20 p
+ 315 20 p
+ 1236 19 p
+ 1207 19 p
+ 1237 19 p
+ 1240 19 p
+ 1239 19 p
+ 314 19 p
+ 305 19 p
+ 1236 18 p
+ 1207 18 p
+ 1237 18 p
+ 314 18 p
+ 304 18 p
+ 1238 17 p
+ 1210 17 p
+ 1239 17 p
+ 1243 17 p
+ 1242 17 p
+ 315 17 p
+ 306 17 p
+ 1238 16 p
+ 1210 16 p
+ 1239 16 p
+ 1240 16 p
+ 1236 16 p
+ 315 16 p
+ 305 16 p
+ 1240 15 p
+ 1239 15 p
+ 1236 15 p
+ 1235 15 p
+ 1255 15 p
+ 314 15 p
+ 315 15 p
+ 1241 14 p
+ 1213 14 p
+ 1242 14 p
+ 1167 14 p
+ 1245 14 p
+ 316 14 p
+ 307 14 p
+ 1241 13 p
+ 1213 13 p
+ 1242 13 p
+ 1243 13 p
+ 1238 13 p
+ 316 13 p
+ 306 13 p
+ 1243 12 p
+ 1242 12 p
+ 1238 12 p
+ 1166 12 p
+ 1234 12 p
+ 315 12 p
+ 316 12 p
+ 1244 11 p
+ 1216 11 p
+ 1245 11 p
+ 1083 11 p
+ 1247 11 p
+ 317 11 p
+ 308 11 p
+ 1244 10 p
+ 1216 10 p
+ 1245 10 p
+ 1167 10 p
+ 1241 10 p
+ 317 10 p
+ 307 10 p
+ 1246 9 p
+ 1219 9 p
+ 1247 9 p
+ 1040 9 p
+ 1249 9 p
+ 318 9 p
+ 309 9 p
+ 1246 8 p
+ 1219 8 p
+ 1247 8 p
+ 1083 8 p
+ 1244 8 p
+ 318 8 p
+ 308 8 p
+ 1248 7 p
+ 1222 7 p
+ 1249 7 p
+ 960 7 p
+ 1251 7 p
+ 319 7 p
+ 310 7 p
+ 1248 6 p
+ 1222 6 p
+ 1249 6 p
+ 1040 6 p
+ 1246 6 p
+ 319 6 p
+ 309 6 p
+ 1250 5 p
+ 1225 5 p
+ 1251 5 p
+ 848 5 p
+ 1254 5 p
+ 320 5 p
+ 311 5 p
+ 1250 4 p
+ 1225 4 p
+ 1251 4 p
+ 960 4 p
+ 1248 4 p
+ 320 4 p
+ 310 4 p
+ 1252 3 p
+ 1231 3 p
+ 1253 3 p
+ 321 3 p
+ 313 3 p
+ 1252 2 p
+ 1231 2 p
+ 1253 2 p
+ 1254 2 p
+ 1228 2 p
+ 321 2 p
+ 312 2 p
+ 1254 1 p
+ 1253 1 p
+ 1228 1 p
+ 1250 1 p
+ 848 1 p
+ 311 1 p
+ 321 1 p
+ 1235 0 p
+ 1240 0 p
+ 1255 0 p
+ 322 0 p
+ 314 0 p
+showpage
+%%EndDocument
+ @endspecial eop
+%%Page: 26 26
+26 25 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(26)60
+132 y @beginspecial 40 @vscale 40 @hscale -20 @hoffset -180
+@voffset @setspecial
+%%BeginDocument: msh.ps.9
+%!
+%%Creator: PSPLTM routine
+%%BoundingBox: 217.47 1.96 1337.01 581.70
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 4.54545E-02 cm scalefont setfont
+ 10.7950 cm 0.272727 cm moveto
+(Finite element mesh) Cshow
+ 3.17500 cm 0.181818 cm translate
+ 15.2400 cm 11.0000 div dup scale
+ 0.01 setlinewidth
+ 0.00 0.00 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.00 0.00 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 11.00 0.00 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 10.06 4.93 lineto
+closepath stroke
+ 11.00 5.50 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.00 5.50 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.10 2.75 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.29 2.83 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.30 2.75 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.51 2.86 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.52 2.75 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.75 2.88 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.76 2.75 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.01 2.91 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 3.03 2.75 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.30 2.94 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.32 2.75 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.62 2.97 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.64 2.75 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.97 3.01 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 4.00 2.75 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.36 3.05 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.39 2.75 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.78 3.09 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.82 2.75 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.25 3.14 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.29 2.75 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.76 3.20 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.81 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 6.38 2.75 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.00 2.75 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.69 2.75 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 8.45 2.75 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 9.29 2.75 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 11.00 2.75 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.09 2.87 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.29 2.83 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.28 2.92 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.51 2.86 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.50 2.96 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.75 2.88 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.73 3.01 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 3.01 2.91 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.99 3.07 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.30 2.94 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 3.28 3.13 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.62 2.97 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.60 3.20 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.97 3.01 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.94 3.27 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.36 3.05 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 4.32 3.35 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.78 3.09 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.74 3.44 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.25 3.14 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 5.20 3.54 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.76 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 5.71 3.65 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 6.27 3.76 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 6.88 3.89 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 7.56 4.04 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 8.30 4.20 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 10.06 4.93 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 9.12 4.37 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 11.00 4.56 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.05 2.99 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.23 3.08 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.43 3.16 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.65 3.26 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.90 3.37 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 3.16 3.49 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.46 3.62 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.78 3.77 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 4.14 3.92 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.53 4.10 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 4.96 4.29 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 5.43 4.50 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 5.96 4.73 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 6.53 4.99 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 7.16 5.50 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 1.99 3.10 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.15 3.22 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.33 3.35 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.52 3.49 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.74 3.65 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.97 3.82 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.23 4.01 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 3.52 4.22 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.84 4.45 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 4.18 4.70 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.56 4.98 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.98 5.50 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.90 3.20 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.04 3.34 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 2.18 3.51 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.34 3.69 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.52 3.89 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.72 4.10 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.93 4.34 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.17 4.61 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 3.43 4.90 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 3.72 5.50 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.80 3.27 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 1.90 3.44 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 2.01 3.63 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 2.13 3.84 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 2.26 4.07 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.41 4.33 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.57 4.61 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.75 4.91 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.94 5.50 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.69 3.32 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.75 3.51 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.82 3.72 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.89 3.95 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.97 4.20 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 2.06 4.48 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.16 4.79 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 2.27 5.13 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.50 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.56 3.35 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.58 3.55 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.61 3.76 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.63 4.01 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.66 4.27 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.69 4.56 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.72 4.88 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.76 5.50 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.44 3.35 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.42 3.55 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.39 3.76 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.37 4.01 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.34 4.27 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 1.31 4.56 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 1.28 4.88 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 1.24 5.50 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.31 3.32 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.25 3.51 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 1.18 3.72 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 1.11 3.95 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 1.03 4.20 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.94 4.48 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.84 4.79 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.73 5.13 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.50 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.20 3.27 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.10 3.44 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.99 3.63 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.87 3.84 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.74 4.07 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.59 4.33 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.43 4.61 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.25 4.91 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.00 4.91 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 1.10 3.20 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 0.96 3.34 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.82 3.51 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.66 3.69 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.48 3.89 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.28 4.10 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 0.00 4.34 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 1.01 3.10 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.85 3.22 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.67 3.35 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.48 3.49 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.26 3.65 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 0.00 3.65 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.95 2.99 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.77 3.08 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.57 3.16 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.35 3.26 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.00 3.37 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.91 2.87 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.72 2.92 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.50 2.96 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.27 3.01 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.00 3.01 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.90 2.75 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.70 2.75 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.48 2.75 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.00 2.75 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.91 2.63 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.72 2.58 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.50 2.54 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.27 2.49 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.00 2.49 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.95 2.51 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 0.77 2.42 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.57 2.34 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.35 2.24 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.00 2.13 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 1.01 2.40 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.85 2.28 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.67 2.15 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.48 2.01 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.26 1.85 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.00 1.85 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 1.10 2.30 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 0.96 2.16 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 0.82 1.99 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.66 1.81 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.48 1.61 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.28 1.40 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.00 1.16 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.20 2.23 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.10 2.06 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 0.99 1.87 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 0.87 1.66 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.74 1.43 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.59 1.17 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.43 0.89 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.25 0.59 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.00 0.59 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.31 2.18 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.25 1.99 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.18 1.78 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.11 1.55 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.03 1.30 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 0.94 1.02 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.84 0.71 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 0.73 0.37 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.73 0.00 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.44 2.15 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.42 1.95 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.39 1.74 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.37 1.49 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.34 1.23 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.31 0.94 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.28 0.62 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.24 0.00 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.56 2.15 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.58 1.95 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.61 1.74 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.63 1.49 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.66 1.23 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.69 0.94 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 1.72 0.62 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 1.76 0.00 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.69 2.18 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.75 1.99 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.82 1.78 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.89 1.55 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 1.97 1.30 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.06 1.02 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.16 0.71 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.27 0.37 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.27 0.00 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 1.80 2.23 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.90 2.06 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 2.01 1.87 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.13 1.66 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.26 1.43 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.41 1.17 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.57 0.89 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 2.75 0.59 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 2.94 0.00 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.90 2.30 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.04 2.16 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.18 1.99 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.34 1.81 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.52 1.61 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.72 1.40 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.93 1.16 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.17 0.89 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.43 0.60 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 3.72 0.00 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 1.99 2.40 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.15 2.28 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.33 2.15 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.52 2.01 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.74 1.85 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 2.97 1.68 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.23 1.49 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.52 1.28 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.84 1.05 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.18 0.80 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.56 0.52 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 4.98 0.00 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.05 2.51 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.23 2.42 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.43 2.34 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.65 2.24 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 2.90 2.13 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 3.16 2.01 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.46 1.88 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.78 1.73 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.14 1.58 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.53 1.40 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.96 1.21 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 5.43 1.00 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.96 0.77 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.53 0.51 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 7.16 0.00 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.09 2.63 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.28 2.58 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.50 2.54 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.73 2.49 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.99 2.43 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.28 2.37 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.60 2.30 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.94 2.23 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.32 2.15 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.97 2.01 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.74 2.06 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.46 1.91 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 4.97 2.01 lineto
+closepath stroke
+ 5.20 1.96 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.99 1.80 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.46 1.91 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.71 1.85 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.58 1.67 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 5.99 1.80 lineto
+closepath stroke
+ 6.27 1.74 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.58 1.67 lineto
+closepath stroke
+ 6.88 1.61 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 7.56 1.46 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 8.30 1.30 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 9.12 1.13 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 11.00 0.94 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.20 2.75 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.29 2.83 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.19 2.83 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.19 2.67 lineto
+closepath stroke
+ 2.20 2.75 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.19 2.83 moveto
+ 2.18 2.90 lineto
+closepath stroke
+ 2.19 2.83 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.09 2.81 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.17 2.96 lineto
+closepath stroke
+ 2.18 2.90 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.41 2.75 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.51 2.86 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.40 2.86 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.41 2.75 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.40 2.86 moveto
+ 2.39 2.94 lineto
+closepath stroke
+ 2.39 2.94 moveto
+ 2.36 3.02 lineto
+closepath stroke
+ 2.39 2.94 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.64 2.75 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.75 2.88 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.63 2.88 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.64 2.75 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.63 2.88 moveto
+ 2.62 2.99 lineto
+closepath stroke
+ 2.62 2.99 moveto
+ 2.58 3.09 lineto
+closepath stroke
+ 2.62 2.99 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 2.90 2.75 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.01 2.91 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 2.88 2.91 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.90 2.75 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.88 2.91 moveto
+ 2.86 3.04 lineto
+closepath stroke
+ 2.86 3.04 moveto
+ 2.82 3.17 lineto
+closepath stroke
+ 2.86 3.04 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.17 2.75 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.30 2.94 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.15 2.94 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.17 2.75 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.15 2.94 moveto
+ 3.14 3.10 lineto
+closepath stroke
+ 3.14 3.10 moveto
+ 3.09 3.25 lineto
+closepath stroke
+ 3.14 3.10 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.48 2.75 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.62 2.97 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.46 2.97 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.48 2.75 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.46 2.97 moveto
+ 3.44 3.16 lineto
+closepath stroke
+ 3.44 3.16 moveto
+ 3.38 3.34 lineto
+closepath stroke
+ 3.44 3.16 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 3.82 2.75 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 3.97 3.01 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.79 3.01 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.82 2.75 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.79 3.01 moveto
+ 3.77 3.23 lineto
+closepath stroke
+ 3.77 3.23 moveto
+ 3.70 3.45 lineto
+closepath stroke
+ 3.77 3.23 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.19 2.75 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.36 3.05 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.16 3.05 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 4.19 2.75 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.16 3.05 moveto
+ 4.13 3.31 lineto
+closepath stroke
+ 4.13 3.31 moveto
+ 4.05 3.56 lineto
+closepath stroke
+ 4.13 3.31 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.60 2.75 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.78 3.09 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.57 3.09 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.60 2.75 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.57 3.09 moveto
+ 4.53 3.39 lineto
+closepath stroke
+ 4.53 3.39 moveto
+ 4.44 3.68 lineto
+closepath stroke
+ 4.53 3.39 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.05 2.75 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.25 3.14 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.01 3.14 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 5.05 2.75 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.01 3.14 moveto
+ 4.97 3.49 lineto
+closepath stroke
+ 4.97 3.49 moveto
+ 4.87 3.82 lineto
+closepath stroke
+ 4.97 3.49 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 6.04 3.20 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 5.50 3.20 lineto
+closepath stroke
+ 5.76 3.20 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 6.09 2.75 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.04 3.20 moveto
+ 6.32 3.26 lineto
+closepath stroke
+ 6.09 2.75 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 6.09 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.50 3.20 moveto
+ 5.55 2.75 lineto
+closepath stroke
+ 5.50 3.20 moveto
+ 5.46 3.59 lineto
+closepath stroke
+ 5.55 2.75 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.55 2.75 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.46 3.59 moveto
+ 5.34 3.97 lineto
+closepath stroke
+ 5.46 3.59 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 6.64 3.26 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.32 3.26 moveto
+ 5.99 3.70 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.69 2.75 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.58 3.83 lineto
+closepath stroke
+ 6.64 3.26 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.69 2.75 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.69 2.75 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 5.99 3.70 moveto
+ 5.85 4.13 lineto
+closepath stroke
+ 5.99 3.70 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.94 3.32 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.42 4.31 lineto
+closepath stroke
+ 6.58 3.83 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.94 3.32 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 6.94 3.32 moveto
+ 7.28 3.39 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.63 3.39 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.28 3.39 moveto
+ 7.22 3.97 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 7.35 2.75 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 7.63 3.39 moveto
+ 8.00 3.47 lineto
+closepath stroke
+ 7.35 2.75 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 7.35 2.75 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.22 3.97 moveto
+ 7.04 4.51 lineto
+closepath stroke
+ 7.22 3.97 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 8.38 3.47 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.00 3.47 moveto
+ 7.93 4.12 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.07 2.75 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 8.38 3.47 moveto
+ 8.79 3.56 lineto
+closepath stroke
+ 8.07 2.75 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.07 2.75 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 7.93 4.12 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.93 4.12 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 9.20 3.56 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 8.79 3.56 moveto
+ 8.71 4.28 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 8.87 2.75 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 9.20 3.56 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 8.87 2.75 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 8.87 2.75 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 8.71 4.28 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 8.71 4.28 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 11.00 5.03 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 9.08 5.50 lineto
+closepath stroke
+ 10.06 4.93 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 11.00 5.03 moveto
+ 10.06 4.47 lineto
+closepath stroke
+ 10.06 4.47 moveto
+ 10.14 3.66 lineto
+closepath stroke
+ 10.14 3.66 moveto
+ 11.00 3.66 lineto
+closepath stroke
+ 10.14 3.66 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 11.00 3.66 moveto
+ 10.14 2.75 lineto
+closepath stroke
+ 10.14 2.75 moveto
+ 11.00 1.84 lineto
+closepath stroke
+ 10.14 2.75 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.07 2.93 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.17 2.96 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.26 3.00 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.36 3.02 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.26 3.00 moveto
+ 2.14 3.03 lineto
+closepath stroke
+ 2.14 3.03 moveto
+ 2.19 3.15 lineto
+closepath stroke
+ 2.14 3.03 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.46 3.06 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.58 3.09 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.46 3.06 moveto
+ 2.33 3.12 lineto
+closepath stroke
+ 2.33 3.12 moveto
+ 2.38 3.26 lineto
+closepath stroke
+ 2.33 3.12 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.69 3.14 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.82 3.17 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 2.69 3.14 moveto
+ 2.54 3.21 lineto
+closepath stroke
+ 2.54 3.21 moveto
+ 2.59 3.38 lineto
+closepath stroke
+ 2.54 3.21 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 2.95 3.22 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.09 3.25 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 2.95 3.22 moveto
+ 2.77 3.32 lineto
+closepath stroke
+ 2.77 3.32 moveto
+ 2.82 3.51 lineto
+closepath stroke
+ 2.77 3.32 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.22 3.31 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.38 3.34 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.22 3.31 moveto
+ 3.03 3.43 lineto
+closepath stroke
+ 3.03 3.43 moveto
+ 3.07 3.66 lineto
+closepath stroke
+ 3.03 3.43 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.53 3.41 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.70 3.45 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 3.53 3.41 moveto
+ 3.31 3.56 lineto
+closepath stroke
+ 3.31 3.56 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.31 3.56 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 3.86 3.52 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 4.05 3.56 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 3.86 3.52 moveto
+ 3.62 3.69 lineto
+closepath stroke
+ 3.62 3.69 moveto
+ 3.51 3.89 lineto
+closepath stroke
+ 3.62 3.69 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.23 3.64 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.44 3.68 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.23 3.64 moveto
+ 3.96 3.85 lineto
+closepath stroke
+ 3.96 3.85 moveto
+ 3.99 4.19 lineto
+closepath stroke
+ 3.96 3.85 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 4.64 3.77 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.87 3.82 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 4.64 3.77 moveto
+ 4.33 4.01 lineto
+closepath stroke
+ 4.33 4.01 moveto
+ 4.36 4.40 lineto
+closepath stroke
+ 4.33 4.01 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.08 3.91 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.34 3.97 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.08 3.91 moveto
+ 4.74 4.19 lineto
+closepath stroke
+ 4.74 4.19 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 4.74 4.19 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 5.57 4.07 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.85 4.13 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 5.57 4.07 moveto
+ 5.20 4.40 lineto
+closepath stroke
+ 5.20 4.40 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 5.20 4.40 moveto
+ 4.76 4.63 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.11 4.25 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.42 4.31 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 6.11 4.25 moveto
+ 5.69 4.62 lineto
+closepath stroke
+ 5.69 4.62 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 5.69 4.62 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 6.71 4.44 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 7.04 4.51 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 6.71 4.44 moveto
+ 6.24 4.86 lineto
+closepath stroke
+ 6.24 4.86 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 6.24 4.86 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 9.08 5.50 moveto
+ 8.14 4.93 lineto
+closepath stroke
+ 8.14 4.93 moveto
+ 7.73 4.85 lineto
+closepath stroke
+ 7.73 4.85 moveto
+ 7.36 4.77 lineto
+closepath stroke
+ 7.36 4.77 moveto
+ 6.84 5.24 lineto
+closepath stroke
+ 6.84 5.24 moveto
+ 5.76 5.24 lineto
+closepath stroke
+ 6.84 5.24 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 11.00 1.84 moveto
+ 10.14 1.84 lineto
+closepath stroke
+ 10.14 1.84 moveto
+ 10.06 1.03 lineto
+closepath stroke
+ 10.14 1.84 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.10 3.11 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.19 3.15 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.10 3.11 moveto
+ 2.07 3.16 lineto
+closepath stroke
+ 2.10 3.11 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.02 3.05 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.09 3.28 lineto
+closepath stroke
+ 2.07 3.16 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.28 3.21 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.38 3.26 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.28 3.21 moveto
+ 2.24 3.28 lineto
+closepath stroke
+ 2.24 3.28 moveto
+ 2.25 3.43 lineto
+closepath stroke
+ 2.24 3.28 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.48 3.33 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.59 3.38 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.48 3.33 moveto
+ 2.42 3.42 lineto
+closepath stroke
+ 2.42 3.42 moveto
+ 2.43 3.59 lineto
+closepath stroke
+ 2.42 3.42 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.69 3.46 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.82 3.51 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 2.69 3.46 moveto
+ 2.63 3.57 lineto
+closepath stroke
+ 2.63 3.57 moveto
+ 2.63 3.77 lineto
+closepath stroke
+ 2.63 3.57 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 2.93 3.60 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.07 3.66 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 2.93 3.60 moveto
+ 2.85 3.73 lineto
+closepath stroke
+ 2.85 3.73 moveto
+ 2.85 3.96 lineto
+closepath stroke
+ 2.85 3.73 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.35 3.82 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.38 4.11 lineto
+closepath stroke
+ 3.51 3.89 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.35 3.82 moveto
+ 3.20 3.75 lineto
+closepath stroke
+ 3.20 3.75 moveto
+ 3.10 3.92 lineto
+closepath stroke
+ 3.10 3.92 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.10 3.92 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.65 3.99 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.23 4.28 lineto
+closepath stroke
+ 3.38 4.11 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.65 3.99 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.65 3.99 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 3.81 4.11 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 3.99 4.19 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 3.81 4.11 moveto
+ 3.68 4.33 lineto
+closepath stroke
+ 3.68 4.33 moveto
+ 3.50 4.53 lineto
+closepath stroke
+ 3.68 4.33 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.16 4.31 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.36 4.40 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.16 4.31 moveto
+ 4.01 4.57 lineto
+closepath stroke
+ 4.01 4.57 moveto
+ 3.81 4.80 lineto
+closepath stroke
+ 4.01 4.57 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 4.76 4.63 moveto
+ 4.55 4.54 lineto
+closepath stroke
+ 4.76 4.63 moveto
+ 5.00 4.74 lineto
+closepath stroke
+ 4.55 4.54 moveto
+ 4.37 4.84 lineto
+closepath stroke
+ 4.37 4.84 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.37 4.84 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 5.00 4.74 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 5.00 4.74 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.76 5.24 moveto
+ 5.47 5.12 lineto
+closepath stroke
+ 5.76 5.24 moveto
+ 6.07 5.50 lineto
+closepath stroke
+ 5.47 5.12 moveto
+ 5.21 5.00 lineto
+closepath stroke
+ 5.21 5.00 moveto
+ 4.77 5.24 lineto
+closepath stroke
+ 4.77 5.24 moveto
+ 4.14 5.24 lineto
+closepath stroke
+ 4.77 5.24 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.01 3.22 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.09 3.28 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.01 3.22 moveto
+ 1.97 3.27 lineto
+closepath stroke
+ 2.01 3.22 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.94 3.15 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 1.97 3.27 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.16 3.36 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.25 3.43 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.16 3.36 moveto
+ 2.11 3.43 lineto
+closepath stroke
+ 2.11 3.43 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 2.11 3.43 moveto
+ 1.97 3.39 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.33 3.52 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.43 3.59 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.33 3.52 moveto
+ 2.26 3.60 lineto
+closepath stroke
+ 2.26 3.60 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.26 3.60 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.52 3.69 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.63 3.77 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.52 3.69 moveto
+ 2.43 3.79 lineto
+closepath stroke
+ 2.43 3.79 moveto
+ 2.33 3.86 lineto
+closepath stroke
+ 2.43 3.79 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.73 3.88 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.85 3.96 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.73 3.88 moveto
+ 2.62 3.99 lineto
+closepath stroke
+ 2.62 3.99 moveto
+ 2.49 4.09 lineto
+closepath stroke
+ 2.62 3.99 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.08 4.18 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.23 4.28 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.08 4.18 moveto
+ 2.95 4.08 lineto
+closepath stroke
+ 2.95 4.08 moveto
+ 2.83 4.22 lineto
+closepath stroke
+ 2.83 4.22 moveto
+ 2.67 4.33 lineto
+closepath stroke
+ 2.83 4.22 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.35 4.41 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.50 4.53 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.35 4.41 moveto
+ 3.05 4.47 lineto
+closepath stroke
+ 3.05 4.47 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.05 4.47 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.63 4.67 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.81 4.80 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 3.63 4.67 moveto
+ 3.30 4.75 lineto
+closepath stroke
+ 3.30 4.75 moveto
+ 3.09 4.90 lineto
+closepath stroke
+ 3.30 4.75 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 4.14 5.24 moveto
+ 3.95 5.10 lineto
+closepath stroke
+ 4.14 5.24 moveto
+ 4.35 5.50 lineto
+closepath stroke
+ 3.95 5.10 moveto
+ 3.58 5.20 lineto
+closepath stroke
+ 3.58 5.20 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.58 5.20 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 1.97 3.39 moveto
+ 1.90 3.32 lineto
+closepath stroke
+ 1.97 3.39 moveto
+ 2.04 3.48 lineto
+closepath stroke
+ 1.90 3.32 moveto
+ 1.85 3.36 lineto
+closepath stroke
+ 1.90 3.32 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.85 3.23 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 1.85 3.36 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 2.04 3.48 moveto
+ 1.95 3.54 lineto
+closepath stroke
+ 2.04 3.48 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 2.10 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.95 3.54 moveto
+ 1.82 3.48 lineto
+closepath stroke
+ 2.10 3.57 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.10 3.57 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.24 3.77 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.33 3.86 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.24 3.77 moveto
+ 2.16 3.68 lineto
+closepath stroke
+ 2.16 3.68 moveto
+ 2.07 3.74 lineto
+closepath stroke
+ 2.07 3.74 moveto
+ 1.97 3.78 lineto
+closepath stroke
+ 2.07 3.74 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.39 3.98 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.49 4.09 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.39 3.98 moveto
+ 2.20 3.96 lineto
+closepath stroke
+ 2.20 3.96 moveto
+ 2.08 4.01 lineto
+closepath stroke
+ 2.20 3.96 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.56 4.22 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.49 4.47 lineto
+closepath stroke
+ 2.67 4.33 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.56 4.22 moveto
+ 2.34 4.20 lineto
+closepath stroke
+ 2.34 4.20 moveto
+ 2.24 4.40 lineto
+closepath stroke
+ 2.34 4.20 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.75 4.47 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.37 4.70 lineto
+closepath stroke
+ 2.49 4.47 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.75 4.47 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.75 4.47 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 2.96 4.76 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 3.19 5.20 lineto
+closepath stroke
+ 3.09 4.90 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 2.96 4.76 moveto
+ 2.84 4.63 lineto
+closepath stroke
+ 2.84 4.63 moveto
+ 2.66 4.76 lineto
+closepath stroke
+ 2.66 4.76 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.66 4.76 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 3.19 5.20 moveto
+ 2.85 5.21 lineto
+closepath stroke
+ 3.19 5.20 moveto
+ 3.33 5.50 lineto
+closepath stroke
+ 2.85 5.21 moveto
+ 2.61 5.31 lineto
+closepath stroke
+ 2.85 5.21 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 9.20 1.94 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 11.00 0.47 lineto
+closepath stroke
+ 10.06 1.03 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 9.20 1.94 moveto
+ 8.79 1.94 lineto
+closepath stroke
+ 11.00 0.47 moveto
+ 10.06 0.57 lineto
+closepath stroke
+ 10.06 0.57 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 10.06 0.57 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 8.79 1.94 moveto
+ 8.71 1.22 lineto
+closepath stroke
+ 8.79 1.94 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 1.82 3.48 moveto
+ 1.77 3.39 lineto
+closepath stroke
+ 1.82 3.48 moveto
+ 1.88 3.57 lineto
+closepath stroke
+ 1.77 3.39 moveto
+ 1.72 3.42 lineto
+closepath stroke
+ 1.77 3.39 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.74 3.30 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.65 3.43 lineto
+closepath stroke
+ 1.72 3.42 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.88 3.57 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.88 3.57 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 1.91 3.68 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.97 3.78 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 1.91 3.68 moveto
+ 1.78 3.62 lineto
+closepath stroke
+ 1.78 3.62 moveto
+ 1.70 3.63 lineto
+closepath stroke
+ 1.78 3.62 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 2.01 3.90 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 1.93 4.08 lineto
+closepath stroke
+ 2.08 4.01 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 2.01 3.90 moveto
+ 1.85 3.84 lineto
+closepath stroke
+ 1.85 3.84 moveto
+ 1.75 3.86 lineto
+closepath stroke
+ 1.85 3.84 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 2.12 4.14 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 1.82 4.24 lineto
+closepath stroke
+ 1.93 4.08 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 2.12 4.14 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.12 4.14 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.16 4.28 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.24 4.40 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.16 4.28 moveto
+ 2.02 4.34 lineto
+closepath stroke
+ 2.02 4.34 moveto
+ 1.88 4.52 lineto
+closepath stroke
+ 2.02 4.34 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.29 4.56 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.37 4.70 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.29 4.56 moveto
+ 2.11 4.64 lineto
+closepath stroke
+ 2.11 4.64 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.11 4.64 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.51 5.02 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.61 5.50 lineto
+closepath stroke
+ 2.61 5.31 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.51 5.02 moveto
+ 2.42 4.87 lineto
+closepath stroke
+ 2.42 4.87 moveto
+ 2.22 4.96 lineto
+closepath stroke
+ 2.22 4.96 moveto
+ 2.00 5.00 lineto
+closepath stroke
+ 2.22 4.96 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.61 5.50 moveto
+ 2.27 5.31 lineto
+closepath stroke
+ 2.27 5.31 moveto
+ 2.02 5.50 lineto
+closepath stroke
+ 2.27 5.31 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.62 3.33 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.65 3.43 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.67 3.53 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.70 3.63 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.67 3.53 moveto
+ 1.57 3.45 lineto
+closepath stroke
+ 1.57 3.45 moveto
+ 1.50 3.55 lineto
+closepath stroke
+ 1.57 3.45 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.71 3.74 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.62 3.88 lineto
+closepath stroke
+ 1.75 3.86 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.71 3.74 moveto
+ 1.60 3.66 lineto
+closepath stroke
+ 1.60 3.66 moveto
+ 1.50 3.76 lineto
+closepath stroke
+ 1.60 3.66 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.76 3.98 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.50 4.01 lineto
+closepath stroke
+ 1.62 3.88 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.76 3.98 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.76 3.98 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.77 4.11 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.82 4.24 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.77 4.11 moveto
+ 1.65 4.14 lineto
+closepath stroke
+ 1.65 4.14 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.65 4.14 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.83 4.38 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.88 4.52 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.83 4.38 moveto
+ 1.68 4.42 lineto
+closepath stroke
+ 1.68 4.42 moveto
+ 1.52 4.42 lineto
+closepath stroke
+ 1.68 4.42 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 1.94 4.83 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 2.00 5.00 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 1.94 4.83 moveto
+ 1.89 4.68 lineto
+closepath stroke
+ 1.89 4.68 moveto
+ 1.71 4.72 lineto
+closepath stroke
+ 1.71 4.72 moveto
+ 1.52 4.72 lineto
+closepath stroke
+ 1.71 4.72 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 2.02 5.50 moveto
+ 2.02 5.31 lineto
+closepath stroke
+ 2.02 5.31 moveto
+ 1.74 5.19 lineto
+closepath stroke
+ 1.74 5.19 moveto
+ 1.52 5.19 lineto
+closepath stroke
+ 1.74 5.19 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 8.38 2.03 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 7.73 0.65 lineto
+closepath stroke
+ 8.71 1.22 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 8.38 2.03 moveto
+ 8.00 2.03 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.49 3.45 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.50 3.55 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.49 3.45 moveto
+ 1.43 3.45 lineto
+closepath stroke
+ 1.49 3.45 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.50 3.35 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.37 3.43 lineto
+closepath stroke
+ 1.43 3.45 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.49 3.66 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.50 3.76 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.49 3.66 moveto
+ 1.40 3.66 lineto
+closepath stroke
+ 1.40 3.66 moveto
+ 1.32 3.64 lineto
+closepath stroke
+ 1.40 3.66 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.49 3.88 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.50 4.01 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.49 3.88 moveto
+ 1.38 3.88 lineto
+closepath stroke
+ 1.38 3.88 moveto
+ 1.28 3.86 lineto
+closepath stroke
+ 1.38 3.88 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.50 4.27 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.52 4.42 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.50 4.27 moveto
+ 1.49 4.14 lineto
+closepath stroke
+ 1.49 4.14 moveto
+ 1.35 4.14 lineto
+closepath stroke
+ 1.35 4.14 moveto
+ 1.23 4.11 lineto
+closepath stroke
+ 1.35 4.14 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.50 4.56 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.52 4.72 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.50 4.56 moveto
+ 1.32 4.42 lineto
+closepath stroke
+ 1.32 4.42 moveto
+ 1.17 4.38 lineto
+closepath stroke
+ 1.32 4.42 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.50 4.88 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.50 5.50 lineto
+closepath stroke
+ 1.52 5.19 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.50 4.88 moveto
+ 1.29 4.72 lineto
+closepath stroke
+ 1.29 4.72 moveto
+ 1.06 4.83 lineto
+closepath stroke
+ 1.29 4.72 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.50 5.50 moveto
+ 1.26 5.19 lineto
+closepath stroke
+ 1.26 5.19 moveto
+ 0.98 5.31 lineto
+closepath stroke
+ 1.26 5.19 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.38 3.33 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.37 3.43 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.33 3.53 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.32 3.64 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.33 3.53 moveto
+ 1.28 3.42 lineto
+closepath stroke
+ 1.28 3.42 moveto
+ 1.18 3.48 lineto
+closepath stroke
+ 1.28 3.42 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.29 3.74 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.28 3.86 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.29 3.74 moveto
+ 1.22 3.62 lineto
+closepath stroke
+ 1.22 3.62 moveto
+ 1.09 3.68 lineto
+closepath stroke
+ 1.22 3.62 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.24 3.98 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.23 4.11 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.24 3.98 moveto
+ 1.15 3.84 lineto
+closepath stroke
+ 1.15 3.84 moveto
+ 0.99 3.90 lineto
+closepath stroke
+ 1.15 3.84 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 1.18 4.24 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 0.98 4.34 lineto
+closepath stroke
+ 1.17 4.38 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 1.18 4.24 moveto
+ 1.07 4.08 lineto
+closepath stroke
+ 1.07 4.08 moveto
+ 0.88 4.14 lineto
+closepath stroke
+ 1.07 4.08 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 1.12 4.52 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.98 4.34 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 1.12 4.52 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 1.12 4.52 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 1.07 4.67 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 1.06 4.83 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 1.07 4.67 moveto
+ 0.89 4.64 lineto
+closepath stroke
+ 0.89 4.64 moveto
+ 0.71 4.56 lineto
+closepath stroke
+ 0.89 4.64 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 1.00 5.00 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 0.98 5.50 lineto
+closepath stroke
+ 0.98 5.31 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 1.00 5.00 moveto
+ 0.78 4.96 lineto
+closepath stroke
+ 0.78 4.96 moveto
+ 0.58 4.87 lineto
+closepath stroke
+ 0.78 4.96 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.98 5.50 moveto
+ 0.73 5.31 lineto
+closepath stroke
+ 0.73 5.31 moveto
+ 0.36 5.50 lineto
+closepath stroke
+ 0.73 5.31 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.36 5.50 moveto
+ 0.36 5.31 lineto
+closepath stroke
+ 0.36 5.31 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.36 5.31 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 8.14 0.57 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.73 0.65 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 8.14 0.57 moveto
+ 9.08 0.00 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.21 3.38 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.18 3.48 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.21 3.38 moveto
+ 1.15 3.36 lineto
+closepath stroke
+ 1.21 3.38 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.26 3.30 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.10 3.32 lineto
+closepath stroke
+ 1.15 3.36 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 1.12 3.57 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 1.09 3.68 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 1.12 3.57 moveto
+ 1.04 3.54 lineto
+closepath stroke
+ 1.04 3.54 moveto
+ 0.98 3.49 lineto
+closepath stroke
+ 1.04 3.54 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 1.03 3.78 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.99 3.90 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 1.03 3.78 moveto
+ 0.93 3.74 lineto
+closepath stroke
+ 0.93 3.74 moveto
+ 0.76 3.77 lineto
+closepath stroke
+ 0.93 3.74 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.92 4.01 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.88 4.14 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.92 4.01 moveto
+ 0.80 3.96 lineto
+closepath stroke
+ 0.80 3.96 moveto
+ 0.61 3.98 lineto
+closepath stroke
+ 0.80 3.96 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.76 4.40 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.71 4.56 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.76 4.40 moveto
+ 0.81 4.27 lineto
+closepath stroke
+ 0.81 4.27 moveto
+ 0.66 4.20 lineto
+closepath stroke
+ 0.66 4.20 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.66 4.20 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.63 4.70 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.49 5.02 lineto
+closepath stroke
+ 0.58 4.87 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.63 4.70 moveto
+ 0.51 4.47 lineto
+closepath stroke
+ 0.51 4.47 moveto
+ 0.35 4.35 lineto
+closepath stroke
+ 0.51 4.47 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.49 5.02 moveto
+ 0.34 4.76 lineto
+closepath stroke
+ 0.49 5.02 moveto
+ 0.13 5.21 lineto
+closepath stroke
+ 0.34 4.76 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.34 4.76 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.13 5.21 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.13 5.21 moveto
+ 0.13 4.91 lineto
+closepath stroke
+ 0.13 4.91 moveto
+ 0.21 4.76 lineto
+closepath stroke
+ 0.13 4.91 moveto
+ 0.00 5.21 lineto
+closepath stroke
+ 0.21 4.76 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.21 4.76 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.15 3.23 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.10 3.32 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 1.03 3.39 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 0.89 3.43 lineto
+closepath stroke
+ 0.98 3.49 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 1.03 3.39 moveto
+ 1.03 3.27 lineto
+closepath stroke
+ 1.03 3.27 moveto
+ 0.91 3.28 lineto
+closepath stroke
+ 1.03 3.27 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.90 3.57 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.75 3.43 lineto
+closepath stroke
+ 0.89 3.43 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.90 3.57 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.90 3.57 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.82 3.66 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.76 3.77 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.82 3.66 moveto
+ 0.74 3.60 lineto
+closepath stroke
+ 0.74 3.60 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.74 3.60 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.67 3.86 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.61 3.98 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.67 3.86 moveto
+ 0.57 3.79 lineto
+closepath stroke
+ 0.57 3.79 moveto
+ 0.48 3.69 lineto
+closepath stroke
+ 0.57 3.79 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.44 4.22 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.21 4.47 lineto
+closepath stroke
+ 0.35 4.35 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.44 4.22 moveto
+ 0.51 4.09 lineto
+closepath stroke
+ 0.51 4.09 moveto
+ 0.38 3.99 lineto
+closepath stroke
+ 0.38 3.99 moveto
+ 0.27 3.88 lineto
+closepath stroke
+ 0.38 3.99 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.21 4.47 moveto
+ 0.14 4.22 lineto
+closepath stroke
+ 0.21 4.47 moveto
+ 0.00 4.63 lineto
+closepath stroke
+ 0.14 4.22 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.14 4.22 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 8.00 2.03 moveto
+ 7.93 1.38 lineto
+closepath stroke
+ 8.00 2.03 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.98 3.21 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.91 3.28 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.98 3.21 moveto
+ 0.93 3.16 lineto
+closepath stroke
+ 0.98 3.21 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 1.06 3.15 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 0.90 3.11 lineto
+closepath stroke
+ 0.93 3.16 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.82 3.35 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.75 3.43 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.82 3.35 moveto
+ 0.76 3.28 lineto
+closepath stroke
+ 0.76 3.28 moveto
+ 0.72 3.21 lineto
+closepath stroke
+ 0.76 3.28 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.57 3.59 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.48 3.69 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.57 3.59 moveto
+ 0.65 3.50 lineto
+closepath stroke
+ 0.65 3.50 moveto
+ 0.58 3.42 lineto
+closepath stroke
+ 0.58 3.42 moveto
+ 0.52 3.33 lineto
+closepath stroke
+ 0.58 3.42 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.37 3.77 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.14 3.88 lineto
+closepath stroke
+ 0.27 3.88 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.37 3.77 moveto
+ 0.37 3.57 lineto
+closepath stroke
+ 0.37 3.57 moveto
+ 0.31 3.46 lineto
+closepath stroke
+ 0.37 3.57 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.14 3.88 moveto
+ 0.13 3.65 lineto
+closepath stroke
+ 0.14 3.88 moveto
+ 0.00 4.00 lineto
+closepath stroke
+ 0.13 3.65 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.13 3.65 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 7.93 1.38 moveto
+ 7.63 2.11 lineto
+closepath stroke
+ 7.93 1.38 moveto
+ 7.36 0.73 lineto
+closepath stroke
+ 7.63 2.11 moveto
+ 7.22 1.53 lineto
+closepath stroke
+ 7.63 2.11 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.98 3.05 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.90 3.11 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.81 3.15 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.72 3.21 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.81 3.15 moveto
+ 0.86 3.03 lineto
+closepath stroke
+ 0.86 3.03 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.86 3.03 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.62 3.26 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.52 3.33 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.62 3.26 moveto
+ 0.67 3.12 lineto
+closepath stroke
+ 0.67 3.12 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.67 3.12 moveto
+ 0.74 3.00 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.41 3.38 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.13 3.51 lineto
+closepath stroke
+ 0.31 3.46 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.41 3.38 moveto
+ 0.46 3.21 lineto
+closepath stroke
+ 0.46 3.21 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.46 3.21 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.13 3.51 moveto
+ 0.17 3.32 lineto
+closepath stroke
+ 0.13 3.51 moveto
+ 0.00 3.51 lineto
+closepath stroke
+ 0.17 3.32 moveto
+ 0.13 3.19 lineto
+closepath stroke
+ 0.17 3.32 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.74 3.00 moveto
+ 0.83 2.96 lineto
+closepath stroke
+ 0.74 3.00 moveto
+ 0.64 3.04 lineto
+closepath stroke
+ 0.83 2.96 moveto
+ 0.82 2.90 lineto
+closepath stroke
+ 0.83 2.96 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.93 2.93 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.81 2.83 lineto
+closepath stroke
+ 0.82 2.90 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.64 3.04 moveto
+ 0.61 2.94 lineto
+closepath stroke
+ 0.64 3.04 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.54 3.06 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.60 2.86 lineto
+closepath stroke
+ 0.61 2.94 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.54 3.06 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.54 3.06 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.31 3.14 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.00 3.19 lineto
+closepath stroke
+ 0.13 3.19 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.31 3.14 moveto
+ 0.42 3.09 lineto
+closepath stroke
+ 0.42 3.09 moveto
+ 0.38 2.99 lineto
+closepath stroke
+ 0.38 2.99 moveto
+ 0.37 2.88 lineto
+closepath stroke
+ 0.38 2.99 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.00 3.19 moveto
+ 0.13 3.01 lineto
+closepath stroke
+ 0.13 3.01 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.13 3.01 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.91 2.81 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.81 2.83 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.71 2.83 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.60 2.86 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.71 2.83 moveto
+ 0.80 2.75 lineto
+closepath stroke
+ 0.80 2.75 moveto
+ 0.81 2.69 lineto
+closepath stroke
+ 0.80 2.75 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.49 2.86 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.13 2.88 lineto
+closepath stroke
+ 0.37 2.88 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.49 2.86 moveto
+ 0.59 2.75 lineto
+closepath stroke
+ 0.59 2.75 moveto
+ 0.60 2.67 lineto
+closepath stroke
+ 0.59 2.75 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.13 2.88 moveto
+ 0.24 2.75 lineto
+closepath stroke
+ 0.13 2.88 moveto
+ 0.00 2.88 lineto
+closepath stroke
+ 0.24 2.75 moveto
+ 0.13 2.62 lineto
+closepath stroke
+ 0.24 2.75 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 7.36 0.73 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 7.36 0.73 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 7.29 2.18 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 7.04 0.99 lineto
+closepath stroke
+ 7.22 1.53 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 7.29 2.18 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 7.04 0.99 moveto
+ 6.71 1.06 lineto
+closepath stroke
+ 7.04 0.99 moveto
+ 6.84 0.26 lineto
+closepath stroke
+ 6.71 1.06 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.71 1.06 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.91 2.69 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.81 2.69 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.71 2.67 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.61 2.56 lineto
+closepath stroke
+ 0.60 2.67 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.71 2.67 moveto
+ 0.82 2.60 lineto
+closepath stroke
+ 0.82 2.60 moveto
+ 0.83 2.54 lineto
+closepath stroke
+ 0.82 2.60 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.49 2.64 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.54 2.44 lineto
+closepath stroke
+ 0.61 2.56 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.49 2.64 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.49 2.64 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.37 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.00 2.62 lineto
+closepath stroke
+ 0.13 2.62 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.37 2.62 moveto
+ 0.38 2.51 lineto
+closepath stroke
+ 0.38 2.51 moveto
+ 0.31 2.36 lineto
+closepath stroke
+ 0.38 2.51 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.00 2.62 moveto
+ 0.13 2.49 lineto
+closepath stroke
+ 0.13 2.49 moveto
+ 0.00 2.31 lineto
+closepath stroke
+ 0.13 2.49 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.93 2.57 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.86 2.47 lineto
+closepath stroke
+ 0.83 2.54 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.74 2.50 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.89 2.41 lineto
+closepath stroke
+ 0.86 2.47 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.74 2.50 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.74 2.50 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.64 2.46 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.54 2.44 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.64 2.46 moveto
+ 0.67 2.38 lineto
+closepath stroke
+ 0.67 2.38 moveto
+ 0.71 2.31 lineto
+closepath stroke
+ 0.67 2.38 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.42 2.39 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.31 2.36 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.42 2.39 moveto
+ 0.46 2.29 lineto
+closepath stroke
+ 0.46 2.29 moveto
+ 0.51 2.19 lineto
+closepath stroke
+ 0.46 2.29 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.00 2.31 moveto
+ 0.13 2.31 lineto
+closepath stroke
+ 0.13 2.31 moveto
+ 0.17 2.18 lineto
+closepath stroke
+ 0.17 2.18 moveto
+ 0.13 1.99 lineto
+closepath stroke
+ 0.17 2.18 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.98 2.45 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.89 2.41 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.81 2.35 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.71 2.31 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.81 2.35 moveto
+ 0.93 2.34 lineto
+closepath stroke
+ 0.93 2.34 moveto
+ 0.99 2.28 lineto
+closepath stroke
+ 0.93 2.34 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.62 2.24 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.58 2.08 lineto
+closepath stroke
+ 0.51 2.19 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.62 2.24 moveto
+ 0.76 2.22 lineto
+closepath stroke
+ 0.76 2.22 moveto
+ 0.75 2.07 lineto
+closepath stroke
+ 0.76 2.22 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.41 2.12 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.57 1.91 lineto
+closepath stroke
+ 0.58 2.08 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.41 2.12 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.41 2.12 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.31 2.04 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.00 1.99 lineto
+closepath stroke
+ 0.13 1.99 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.31 2.04 moveto
+ 0.37 1.93 lineto
+closepath stroke
+ 0.37 1.93 moveto
+ 0.37 1.73 lineto
+closepath stroke
+ 0.37 1.93 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.00 1.99 moveto
+ 0.13 1.85 lineto
+closepath stroke
+ 0.13 1.85 moveto
+ 0.14 1.62 lineto
+closepath stroke
+ 0.13 1.85 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 6.84 0.26 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 6.84 0.26 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.42 1.19 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.94 2.18 lineto
+closepath stroke
+ 6.58 1.67 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.42 1.19 moveto
+ 6.11 1.25 lineto
+closepath stroke
+ 6.42 1.19 moveto
+ 6.24 0.64 lineto
+closepath stroke
+ 6.11 1.25 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 6.11 1.25 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 6.24 0.64 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.24 0.64 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 0.91 2.22 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 1.06 2.35 lineto
+closepath stroke
+ 0.99 2.28 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 0.91 2.22 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.91 2.22 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 1.06 2.35 moveto
+ 1.03 2.23 lineto
+closepath stroke
+ 1.03 2.23 moveto
+ 1.15 2.27 lineto
+closepath stroke
+ 1.03 2.23 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.84 2.14 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.75 2.07 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.84 2.14 moveto
+ 0.89 2.07 lineto
+closepath stroke
+ 0.89 2.07 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 0.89 2.07 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.67 1.98 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.57 1.91 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.67 1.98 moveto
+ 0.74 1.90 lineto
+closepath stroke
+ 0.74 1.90 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 0.74 1.90 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.48 1.81 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.37 1.73 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.48 1.81 moveto
+ 0.57 1.71 lineto
+closepath stroke
+ 0.57 1.71 moveto
+ 0.67 1.64 lineto
+closepath stroke
+ 0.57 1.71 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.27 1.62 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.00 1.50 lineto
+closepath stroke
+ 0.14 1.62 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.27 1.62 moveto
+ 0.38 1.51 lineto
+closepath stroke
+ 0.38 1.51 moveto
+ 0.51 1.41 lineto
+closepath stroke
+ 0.38 1.51 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.00 1.50 moveto
+ 0.14 1.28 lineto
+closepath stroke
+ 0.14 1.28 moveto
+ 0.21 1.03 lineto
+closepath stroke
+ 0.14 1.28 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 6.94 2.18 moveto
+ 6.64 2.24 lineto
+closepath stroke
+ 6.64 2.24 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 1.15 2.27 moveto
+ 1.08 2.19 lineto
+closepath stroke
+ 1.08 2.19 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 1.08 2.19 moveto
+ 1.03 2.11 lineto
+closepath stroke
+ 1.03 2.11 moveto
+ 0.96 2.02 lineto
+closepath stroke
+ 1.03 2.11 moveto
+ 1.15 2.14 lineto
+closepath stroke
+ 0.96 2.02 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.96 2.02 moveto
+ 0.90 1.93 lineto
+closepath stroke
+ 1.15 2.14 moveto
+ 1.26 2.20 lineto
+closepath stroke
+ 1.15 2.14 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 0.90 1.93 moveto
+ 0.82 1.84 lineto
+closepath stroke
+ 0.90 1.93 moveto
+ 1.05 1.96 lineto
+closepath stroke
+ 0.82 1.84 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.82 1.84 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 1.05 1.96 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.05 1.96 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.76 1.73 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.67 1.64 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.76 1.73 moveto
+ 0.93 1.76 lineto
+closepath stroke
+ 0.93 1.76 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 0.93 1.76 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.61 1.52 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.66 1.30 lineto
+closepath stroke
+ 0.51 1.41 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.61 1.52 moveto
+ 0.80 1.54 lineto
+closepath stroke
+ 0.80 1.54 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 0.80 1.54 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.44 1.28 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 0.66 1.30 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.44 1.28 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.44 1.28 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.35 1.15 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.00 0.87 lineto
+closepath stroke
+ 0.21 1.03 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.35 1.15 moveto
+ 0.51 1.03 lineto
+closepath stroke
+ 0.51 1.03 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 0.51 1.03 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.00 0.87 moveto
+ 0.21 0.74 lineto
+closepath stroke
+ 0.21 0.74 moveto
+ 0.13 0.59 lineto
+closepath stroke
+ 0.21 0.74 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.34 0.74 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.00 0.29 lineto
+closepath stroke
+ 0.13 0.59 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.34 0.74 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.34 0.74 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.00 0.29 moveto
+ 0.13 0.29 lineto
+closepath stroke
+ 0.13 0.29 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.13 0.29 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 1.26 2.20 moveto
+ 1.21 2.12 lineto
+closepath stroke
+ 1.21 2.12 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.21 2.12 moveto
+ 1.18 2.02 lineto
+closepath stroke
+ 1.18 2.02 moveto
+ 1.12 1.93 lineto
+closepath stroke
+ 1.18 2.02 moveto
+ 1.28 2.08 lineto
+closepath stroke
+ 1.12 1.93 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.12 1.93 moveto
+ 1.09 1.82 lineto
+closepath stroke
+ 1.28 2.08 moveto
+ 1.37 2.07 lineto
+closepath stroke
+ 1.28 2.08 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.09 1.82 moveto
+ 1.03 1.72 lineto
+closepath stroke
+ 1.09 1.82 moveto
+ 1.22 1.88 lineto
+closepath stroke
+ 1.03 1.72 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 1.03 1.72 moveto
+ 0.99 1.60 lineto
+closepath stroke
+ 1.22 1.88 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.22 1.88 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 0.99 1.60 moveto
+ 0.92 1.49 lineto
+closepath stroke
+ 0.99 1.60 moveto
+ 1.15 1.66 lineto
+closepath stroke
+ 0.92 1.49 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 0.92 1.49 moveto
+ 0.88 1.36 lineto
+closepath stroke
+ 1.15 1.66 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.15 1.66 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 0.88 1.36 moveto
+ 0.81 1.23 lineto
+closepath stroke
+ 0.88 1.36 moveto
+ 1.07 1.42 lineto
+closepath stroke
+ 0.81 1.23 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.81 1.23 moveto
+ 0.76 1.10 lineto
+closepath stroke
+ 1.07 1.42 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.07 1.42 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 0.76 1.10 moveto
+ 0.68 0.96 lineto
+closepath stroke
+ 0.76 1.10 moveto
+ 0.98 1.16 lineto
+closepath stroke
+ 0.68 0.96 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.68 0.96 moveto
+ 0.63 0.80 lineto
+closepath stroke
+ 0.98 1.16 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 0.98 1.16 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 0.63 0.80 moveto
+ 0.54 0.65 lineto
+closepath stroke
+ 0.63 0.80 moveto
+ 0.89 0.86 lineto
+closepath stroke
+ 0.54 0.65 moveto
+ 0.49 0.48 lineto
+closepath stroke
+ 0.54 0.65 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.89 0.86 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 0.89 0.86 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.49 0.48 moveto
+ 0.78 0.54 lineto
+closepath stroke
+ 0.49 0.48 moveto
+ 0.36 0.19 lineto
+closepath stroke
+ 0.78 0.54 moveto
+ 1.06 0.67 lineto
+closepath stroke
+ 0.78 0.54 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 0.36 0.19 moveto
+ 0.73 0.19 lineto
+closepath stroke
+ 0.36 0.19 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.36 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.98 0.00 lineto
+closepath stroke
+ 0.73 0.19 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 5.85 1.37 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 6.32 2.24 lineto
+closepath stroke
+ 5.99 1.80 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 5.85 1.37 moveto
+ 5.57 1.43 lineto
+closepath stroke
+ 5.85 1.37 moveto
+ 5.69 0.88 lineto
+closepath stroke
+ 5.57 1.43 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.57 1.43 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.33 1.97 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.38 2.17 lineto
+closepath stroke
+ 1.37 2.07 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.33 1.97 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.33 1.97 moveto
+ 1.32 1.86 lineto
+closepath stroke
+ 1.38 2.17 moveto
+ 1.43 2.05 lineto
+closepath stroke
+ 1.43 2.05 moveto
+ 1.50 2.15 lineto
+closepath stroke
+ 1.43 2.05 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.32 1.86 moveto
+ 1.29 1.76 lineto
+closepath stroke
+ 1.32 1.86 moveto
+ 1.40 1.84 lineto
+closepath stroke
+ 1.29 1.76 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.29 1.76 moveto
+ 1.28 1.64 lineto
+closepath stroke
+ 1.40 1.84 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.40 1.84 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.28 1.64 moveto
+ 1.24 1.52 lineto
+closepath stroke
+ 1.28 1.64 moveto
+ 1.38 1.62 lineto
+closepath stroke
+ 1.24 1.52 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.24 1.52 moveto
+ 1.23 1.39 lineto
+closepath stroke
+ 1.38 1.62 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.38 1.62 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.23 1.39 moveto
+ 1.18 1.26 lineto
+closepath stroke
+ 1.23 1.39 moveto
+ 1.35 1.36 lineto
+closepath stroke
+ 1.18 1.26 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.18 1.26 moveto
+ 1.17 1.12 lineto
+closepath stroke
+ 1.35 1.36 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.35 1.36 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.17 1.12 moveto
+ 1.12 0.98 lineto
+closepath stroke
+ 1.17 1.12 moveto
+ 1.32 1.08 lineto
+closepath stroke
+ 1.12 0.98 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.12 0.98 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.32 1.08 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.32 1.08 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.06 0.67 moveto
+ 1.00 0.50 lineto
+closepath stroke
+ 1.06 0.67 moveto
+ 1.11 0.82 lineto
+closepath stroke
+ 1.00 0.50 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.00 0.50 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 1.11 0.82 moveto
+ 1.29 0.78 lineto
+closepath stroke
+ 1.29 0.78 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.29 0.78 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 0.98 0.00 moveto
+ 0.98 0.19 lineto
+closepath stroke
+ 0.98 0.19 moveto
+ 1.26 0.31 lineto
+closepath stroke
+ 1.26 0.31 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.26 0.31 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.50 2.15 moveto
+ 1.49 2.05 lineto
+closepath stroke
+ 1.49 2.05 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.49 2.05 moveto
+ 1.50 1.95 lineto
+closepath stroke
+ 1.50 1.95 moveto
+ 1.49 1.84 lineto
+closepath stroke
+ 1.50 1.95 moveto
+ 1.57 2.05 lineto
+closepath stroke
+ 1.49 1.84 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.49 1.84 moveto
+ 1.50 1.74 lineto
+closepath stroke
+ 1.57 2.05 moveto
+ 1.62 2.17 lineto
+closepath stroke
+ 1.57 2.05 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.50 1.74 moveto
+ 1.49 1.62 lineto
+closepath stroke
+ 1.50 1.74 moveto
+ 1.60 1.84 lineto
+closepath stroke
+ 1.49 1.62 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.49 1.62 moveto
+ 1.50 1.49 lineto
+closepath stroke
+ 1.60 1.84 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.60 1.84 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.50 1.49 moveto
+ 1.49 1.36 lineto
+closepath stroke
+ 1.50 1.49 moveto
+ 1.62 1.62 lineto
+closepath stroke
+ 1.49 1.36 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.49 1.36 moveto
+ 1.50 1.23 lineto
+closepath stroke
+ 1.62 1.62 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.62 1.62 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.50 1.23 moveto
+ 1.48 1.08 lineto
+closepath stroke
+ 1.50 1.23 moveto
+ 1.65 1.36 lineto
+closepath stroke
+ 1.48 1.08 moveto
+ 1.68 1.08 lineto
+closepath stroke
+ 1.48 1.08 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.65 1.36 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.65 1.36 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.50 0.94 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.68 1.08 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.50 0.94 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.50 0.94 moveto
+ 1.52 0.78 lineto
+closepath stroke
+ 1.52 0.78 moveto
+ 1.50 0.62 lineto
+closepath stroke
+ 1.52 0.78 moveto
+ 1.71 0.78 lineto
+closepath stroke
+ 1.50 0.62 moveto
+ 1.48 0.31 lineto
+closepath stroke
+ 1.71 0.78 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.71 0.78 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.48 0.31 moveto
+ 1.74 0.31 lineto
+closepath stroke
+ 1.48 0.31 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 1.50 0.00 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 1.74 0.31 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 1.62 2.17 moveto
+ 1.63 2.07 lineto
+closepath stroke
+ 1.63 2.07 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.63 2.07 moveto
+ 1.67 1.97 lineto
+closepath stroke
+ 1.67 1.97 moveto
+ 1.68 1.86 lineto
+closepath stroke
+ 1.67 1.97 moveto
+ 1.72 2.08 lineto
+closepath stroke
+ 1.68 1.86 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.68 1.86 moveto
+ 1.71 1.76 lineto
+closepath stroke
+ 1.72 2.08 moveto
+ 1.79 2.12 lineto
+closepath stroke
+ 1.72 2.08 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.71 1.76 moveto
+ 1.72 1.64 lineto
+closepath stroke
+ 1.71 1.76 moveto
+ 1.78 1.88 lineto
+closepath stroke
+ 1.72 1.64 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.72 1.64 moveto
+ 1.76 1.52 lineto
+closepath stroke
+ 1.78 1.88 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.78 1.88 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.76 1.52 moveto
+ 1.77 1.39 lineto
+closepath stroke
+ 1.76 1.52 moveto
+ 1.85 1.66 lineto
+closepath stroke
+ 1.77 1.39 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.77 1.39 moveto
+ 1.82 1.26 lineto
+closepath stroke
+ 1.85 1.66 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.85 1.66 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.82 1.26 moveto
+ 1.83 1.12 lineto
+closepath stroke
+ 1.82 1.26 moveto
+ 1.93 1.42 lineto
+closepath stroke
+ 1.83 1.12 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.83 1.12 moveto
+ 1.88 0.98 lineto
+closepath stroke
+ 1.93 1.42 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 1.93 1.42 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 1.88 0.98 moveto
+ 1.89 0.82 lineto
+closepath stroke
+ 1.88 0.98 moveto
+ 2.02 1.16 lineto
+closepath stroke
+ 1.89 0.82 moveto
+ 2.11 0.86 lineto
+closepath stroke
+ 1.89 0.82 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.02 1.16 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.02 1.16 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 1.94 0.67 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.11 0.86 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 1.94 0.67 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 1.94 0.67 moveto
+ 2.00 0.50 lineto
+closepath stroke
+ 2.00 0.50 moveto
+ 2.02 0.19 lineto
+closepath stroke
+ 2.00 0.50 moveto
+ 2.22 0.54 lineto
+closepath stroke
+ 2.02 0.19 moveto
+ 2.27 0.19 lineto
+closepath stroke
+ 2.02 0.19 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.22 0.54 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.22 0.54 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.02 0.00 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.27 0.19 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 5.69 0.88 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 5.69 0.88 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 6.32 2.24 moveto
+ 6.04 2.30 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.82 2.02 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.74 2.20 lineto
+closepath stroke
+ 1.79 2.12 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.82 2.02 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.82 2.02 moveto
+ 1.88 1.93 lineto
+closepath stroke
+ 1.74 2.20 moveto
+ 1.85 2.14 lineto
+closepath stroke
+ 1.85 2.14 moveto
+ 1.92 2.19 lineto
+closepath stroke
+ 1.85 2.14 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.88 1.93 moveto
+ 1.91 1.82 lineto
+closepath stroke
+ 1.88 1.93 moveto
+ 1.96 1.96 lineto
+closepath stroke
+ 1.91 1.82 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 1.91 1.82 moveto
+ 1.97 1.72 lineto
+closepath stroke
+ 1.96 1.96 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.96 1.96 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 1.97 1.72 moveto
+ 2.01 1.60 lineto
+closepath stroke
+ 1.97 1.72 moveto
+ 2.07 1.76 lineto
+closepath stroke
+ 2.01 1.60 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.01 1.60 moveto
+ 2.08 1.49 lineto
+closepath stroke
+ 2.07 1.76 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.07 1.76 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.08 1.49 moveto
+ 2.12 1.36 lineto
+closepath stroke
+ 2.08 1.49 moveto
+ 2.20 1.54 lineto
+closepath stroke
+ 2.12 1.36 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.12 1.36 moveto
+ 2.19 1.23 lineto
+closepath stroke
+ 2.20 1.54 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.20 1.54 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.19 1.23 moveto
+ 2.24 1.10 lineto
+closepath stroke
+ 2.19 1.23 moveto
+ 2.34 1.30 lineto
+closepath stroke
+ 2.24 1.10 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.24 1.10 moveto
+ 2.32 0.96 lineto
+closepath stroke
+ 2.34 1.30 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.34 1.30 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.32 0.96 moveto
+ 2.37 0.80 lineto
+closepath stroke
+ 2.32 0.96 moveto
+ 2.49 1.03 lineto
+closepath stroke
+ 2.37 0.80 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.37 0.80 moveto
+ 2.46 0.65 lineto
+closepath stroke
+ 2.49 1.03 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.49 1.03 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.46 0.65 moveto
+ 2.51 0.48 lineto
+closepath stroke
+ 2.46 0.65 moveto
+ 2.66 0.74 lineto
+closepath stroke
+ 2.51 0.48 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.51 0.48 moveto
+ 2.61 0.19 lineto
+closepath stroke
+ 2.66 0.74 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.66 0.74 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.61 0.19 moveto
+ 2.61 0.00 lineto
+closepath stroke
+ 2.61 0.19 moveto
+ 2.85 0.29 lineto
+closepath stroke
+ 2.85 0.29 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 2.85 0.29 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 6.04 2.30 moveto
+ 5.76 2.30 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.34 1.53 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.46 1.91 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 5.34 1.53 moveto
+ 5.08 1.59 lineto
+closepath stroke
+ 5.34 1.53 moveto
+ 5.20 1.10 lineto
+closepath stroke
+ 5.08 1.59 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.08 1.59 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 5.20 1.10 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.20 1.10 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 5.76 2.30 moveto
+ 5.50 2.30 lineto
+closepath stroke
+ 5.50 2.30 moveto
+ 5.25 2.36 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.97 2.11 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.85 2.27 lineto
+closepath stroke
+ 1.92 2.19 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.97 2.11 moveto
+ 2.02 2.01 lineto
+closepath stroke
+ 1.85 2.27 moveto
+ 1.97 2.23 lineto
+closepath stroke
+ 1.97 2.23 moveto
+ 1.94 2.35 lineto
+closepath stroke
+ 1.97 2.23 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.02 2.01 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.02 2.01 moveto
+ 2.10 1.93 lineto
+closepath stroke
+ 2.10 1.93 moveto
+ 2.16 1.82 lineto
+closepath stroke
+ 2.10 1.93 moveto
+ 2.11 2.07 lineto
+closepath stroke
+ 2.16 1.82 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.16 1.82 moveto
+ 2.24 1.73 lineto
+closepath stroke
+ 2.11 2.07 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.11 2.07 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.24 1.73 moveto
+ 2.30 1.62 lineto
+closepath stroke
+ 2.24 1.73 moveto
+ 2.26 1.90 lineto
+closepath stroke
+ 2.30 1.62 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.30 1.62 moveto
+ 2.39 1.52 lineto
+closepath stroke
+ 2.26 1.90 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.26 1.90 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.39 1.52 moveto
+ 2.47 1.39 lineto
+closepath stroke
+ 2.39 1.52 moveto
+ 2.43 1.71 lineto
+closepath stroke
+ 2.47 1.39 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.47 1.39 moveto
+ 2.56 1.28 lineto
+closepath stroke
+ 2.43 1.71 moveto
+ 2.43 1.91 lineto
+closepath stroke
+ 2.43 1.71 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.56 1.28 moveto
+ 2.65 1.15 lineto
+closepath stroke
+ 2.56 1.28 moveto
+ 2.62 1.51 lineto
+closepath stroke
+ 2.65 1.15 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.65 1.15 moveto
+ 2.75 1.03 lineto
+closepath stroke
+ 2.62 1.51 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.62 1.51 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.75 1.03 moveto
+ 2.84 0.87 lineto
+closepath stroke
+ 2.75 1.03 moveto
+ 2.83 1.28 lineto
+closepath stroke
+ 2.84 0.87 moveto
+ 3.05 1.03 lineto
+closepath stroke
+ 2.84 0.87 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 2.83 1.28 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.83 1.28 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 2.96 0.74 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 3.05 1.03 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 2.96 0.74 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 2.96 0.74 moveto
+ 3.09 0.60 lineto
+closepath stroke
+ 3.09 0.60 moveto
+ 3.19 0.30 lineto
+closepath stroke
+ 3.09 0.60 moveto
+ 3.30 0.75 lineto
+closepath stroke
+ 3.19 0.30 moveto
+ 3.58 0.30 lineto
+closepath stroke
+ 3.19 0.30 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.30 0.75 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.30 0.75 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.33 0.00 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.95 0.40 lineto
+closepath stroke
+ 3.58 0.30 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 1.94 2.35 moveto
+ 2.01 2.28 lineto
+closepath stroke
+ 2.01 2.28 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.01 2.28 moveto
+ 2.09 2.22 lineto
+closepath stroke
+ 2.09 2.22 moveto
+ 2.16 2.14 lineto
+closepath stroke
+ 2.09 2.22 moveto
+ 2.07 2.34 lineto
+closepath stroke
+ 2.16 2.14 moveto
+ 2.24 2.22 lineto
+closepath stroke
+ 2.16 2.14 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.07 2.34 moveto
+ 2.02 2.45 lineto
+closepath stroke
+ 2.07 2.34 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.25 2.07 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.24 2.22 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.25 2.07 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.25 2.07 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.43 1.91 moveto
+ 2.52 1.81 lineto
+closepath stroke
+ 2.43 1.91 moveto
+ 2.35 2.00 lineto
+closepath stroke
+ 2.52 1.81 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.52 1.81 moveto
+ 2.63 1.73 lineto
+closepath stroke
+ 2.35 2.00 moveto
+ 2.42 2.08 lineto
+closepath stroke
+ 2.42 2.08 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.42 2.08 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.63 1.73 moveto
+ 2.73 1.62 lineto
+closepath stroke
+ 2.63 1.73 moveto
+ 2.63 1.93 lineto
+closepath stroke
+ 2.73 1.62 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.73 1.62 moveto
+ 2.85 1.54 lineto
+closepath stroke
+ 2.63 1.93 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.63 1.93 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.85 1.54 moveto
+ 2.95 1.42 lineto
+closepath stroke
+ 2.85 1.54 moveto
+ 2.85 1.77 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 2.95 1.42 moveto
+ 3.08 1.32 lineto
+closepath stroke
+ 2.85 1.77 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.85 1.77 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 3.08 1.32 moveto
+ 3.20 1.19 lineto
+closepath stroke
+ 3.08 1.32 moveto
+ 3.10 1.58 lineto
+closepath stroke
+ 3.20 1.19 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.20 1.19 moveto
+ 3.35 1.09 lineto
+closepath stroke
+ 3.10 1.58 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.10 1.58 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.35 1.09 moveto
+ 3.48 0.94 lineto
+closepath stroke
+ 3.35 1.09 moveto
+ 3.38 1.39 lineto
+closepath stroke
+ 3.48 0.94 moveto
+ 3.68 1.17 lineto
+closepath stroke
+ 3.48 0.94 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.38 1.39 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.38 1.39 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.63 0.83 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.68 1.17 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.63 0.83 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 3.63 0.83 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 3.81 0.70 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 4.37 0.66 lineto
+closepath stroke
+ 3.95 0.40 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 3.81 0.70 moveto
+ 4.01 0.93 lineto
+closepath stroke
+ 4.01 0.93 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 4.01 0.93 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.14 0.26 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.76 0.87 lineto
+closepath stroke
+ 4.37 0.66 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.14 0.26 moveto
+ 4.77 0.26 lineto
+closepath stroke
+ 4.14 0.26 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 4.35 0.00 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 5.21 0.50 lineto
+closepath stroke
+ 4.77 0.26 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.25 2.36 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.87 1.68 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.97 2.01 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.87 1.68 moveto
+ 4.64 1.73 lineto
+closepath stroke
+ 4.87 1.68 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.64 1.73 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.64 1.73 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 2.02 2.45 moveto
+ 2.10 2.39 lineto
+closepath stroke
+ 2.10 2.39 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.10 2.39 moveto
+ 2.19 2.35 lineto
+closepath stroke
+ 2.19 2.35 moveto
+ 2.28 2.29 lineto
+closepath stroke
+ 2.19 2.35 moveto
+ 2.14 2.47 lineto
+closepath stroke
+ 2.28 2.29 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.28 2.29 moveto
+ 2.38 2.24 lineto
+closepath stroke
+ 2.14 2.47 moveto
+ 2.07 2.57 lineto
+closepath stroke
+ 2.14 2.47 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.38 2.24 moveto
+ 2.48 2.17 lineto
+closepath stroke
+ 2.38 2.24 moveto
+ 2.33 2.38 lineto
+closepath stroke
+ 2.48 2.17 moveto
+ 2.54 2.29 lineto
+closepath stroke
+ 2.48 2.17 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.33 2.38 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.33 2.38 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.59 2.12 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.54 2.29 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.59 2.12 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.59 2.12 moveto
+ 2.71 2.07 lineto
+closepath stroke
+ 2.71 2.07 moveto
+ 2.82 1.99 lineto
+closepath stroke
+ 2.71 2.07 moveto
+ 2.77 2.18 lineto
+closepath stroke
+ 2.82 1.99 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 2.82 1.99 moveto
+ 2.95 1.93 lineto
+closepath stroke
+ 2.77 2.18 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.77 2.18 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 2.95 1.93 moveto
+ 3.07 1.84 lineto
+closepath stroke
+ 2.95 1.93 moveto
+ 3.03 2.07 lineto
+closepath stroke
+ 3.07 1.84 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.07 1.84 moveto
+ 3.22 1.78 lineto
+closepath stroke
+ 3.03 2.07 moveto
+ 2.95 2.28 lineto
+closepath stroke
+ 3.03 2.07 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 3.22 1.78 moveto
+ 3.35 1.68 lineto
+closepath stroke
+ 3.22 1.78 moveto
+ 3.31 1.94 lineto
+closepath stroke
+ 3.35 1.68 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.35 1.68 moveto
+ 3.51 1.61 lineto
+closepath stroke
+ 3.31 1.94 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 3.31 1.94 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.51 1.61 moveto
+ 3.65 1.51 lineto
+closepath stroke
+ 3.51 1.61 moveto
+ 3.62 1.81 lineto
+closepath stroke
+ 3.65 1.51 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.65 1.51 moveto
+ 3.83 1.43 lineto
+closepath stroke
+ 3.62 1.81 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.62 1.81 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.83 1.43 moveto
+ 3.99 1.31 lineto
+closepath stroke
+ 3.83 1.43 moveto
+ 3.96 1.65 lineto
+closepath stroke
+ 3.99 1.31 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 3.99 1.31 moveto
+ 4.18 1.23 lineto
+closepath stroke
+ 3.96 1.65 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 3.96 1.65 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.18 1.23 moveto
+ 4.36 1.10 lineto
+closepath stroke
+ 4.18 1.23 moveto
+ 4.33 1.49 lineto
+closepath stroke
+ 4.36 1.10 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 4.36 1.10 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.33 1.49 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.76 0.87 moveto
+ 4.57 1.01 lineto
+closepath stroke
+ 4.76 0.87 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 4.57 1.01 moveto
+ 4.74 1.31 lineto
+closepath stroke
+ 5.21 0.50 moveto
+ 5.00 0.76 lineto
+closepath stroke
+ 5.21 0.50 moveto
+ 5.47 0.38 lineto
+closepath stroke
+ 5.47 0.38 moveto
+ 5.76 0.26 lineto
+closepath stroke
+ 5.76 0.26 moveto
+ 6.07 0.00 lineto
+closepath stroke
+ 2.07 2.57 moveto
+ 2.16 2.52 lineto
+closepath stroke
+ 2.16 2.52 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.16 2.52 moveto
+ 2.26 2.50 lineto
+closepath stroke
+ 2.26 2.50 moveto
+ 2.36 2.46 lineto
+closepath stroke
+ 2.26 2.50 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.36 2.46 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.36 2.46 moveto
+ 2.46 2.44 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.29 2.67 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.09 2.69 lineto
+closepath stroke
+ 2.19 2.67 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.29 2.67 moveto
+ 2.40 2.64 lineto
+closepath stroke
+ 2.29 2.67 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.09 2.69 moveto
+ 2.18 2.60 lineto
+closepath stroke
+ 2.46 2.44 moveto
+ 2.58 2.39 lineto
+closepath stroke
+ 2.46 2.44 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.58 2.39 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.58 2.39 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.40 2.64 moveto
+ 2.51 2.64 lineto
+closepath stroke
+ 2.40 2.64 moveto
+ 2.39 2.56 lineto
+closepath stroke
+ 2.51 2.64 moveto
+ 2.63 2.62 lineto
+closepath stroke
+ 2.51 2.64 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.63 2.62 moveto
+ 2.75 2.62 lineto
+closepath stroke
+ 2.63 2.62 moveto
+ 2.62 2.51 lineto
+closepath stroke
+ 2.75 2.62 moveto
+ 2.88 2.59 lineto
+closepath stroke
+ 2.75 2.62 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.62 2.51 moveto
+ 2.69 2.36 lineto
+closepath stroke
+ 2.69 2.36 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 2.69 2.36 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 2.95 2.28 moveto
+ 3.08 2.22 lineto
+closepath stroke
+ 2.95 2.28 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 3.08 2.22 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.08 2.22 moveto
+ 3.22 2.19 lineto
+closepath stroke
+ 2.88 2.59 moveto
+ 3.01 2.59 lineto
+closepath stroke
+ 2.88 2.59 moveto
+ 2.86 2.46 lineto
+closepath stroke
+ 3.01 2.59 moveto
+ 3.15 2.56 lineto
+closepath stroke
+ 3.01 2.59 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 2.86 2.46 moveto
+ 2.82 2.33 lineto
+closepath stroke
+ 3.22 2.19 moveto
+ 3.37 2.12 lineto
+closepath stroke
+ 3.22 2.19 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.37 2.12 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.37 2.12 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.15 2.56 moveto
+ 3.30 2.56 lineto
+closepath stroke
+ 3.15 2.56 moveto
+ 3.14 2.40 lineto
+closepath stroke
+ 3.30 2.56 moveto
+ 3.46 2.53 lineto
+closepath stroke
+ 3.30 2.56 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.46 2.53 moveto
+ 3.62 2.53 lineto
+closepath stroke
+ 3.46 2.53 moveto
+ 3.44 2.34 lineto
+closepath stroke
+ 3.62 2.53 moveto
+ 3.79 2.49 lineto
+closepath stroke
+ 3.62 2.53 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.44 2.34 moveto
+ 3.53 2.09 lineto
+closepath stroke
+ 3.53 2.09 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.53 2.09 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.79 2.49 moveto
+ 3.97 2.49 lineto
+closepath stroke
+ 3.79 2.49 moveto
+ 3.77 2.27 lineto
+closepath stroke
+ 3.97 2.49 moveto
+ 4.16 2.45 lineto
+closepath stroke
+ 3.97 2.49 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 3.77 2.27 moveto
+ 3.70 2.05 lineto
+closepath stroke
+ 3.70 2.05 moveto
+ 3.86 1.98 lineto
+closepath stroke
+ 3.86 1.98 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 3.86 1.98 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.16 2.45 moveto
+ 4.36 2.45 lineto
+closepath stroke
+ 4.16 2.45 moveto
+ 4.13 2.19 lineto
+closepath stroke
+ 4.36 2.45 moveto
+ 4.57 2.41 lineto
+closepath stroke
+ 4.36 2.45 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.13 2.19 moveto
+ 4.05 1.94 lineto
+closepath stroke
+ 4.05 1.94 moveto
+ 4.23 1.86 lineto
+closepath stroke
+ 4.23 1.86 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.23 1.86 moveto
+ 4.44 1.82 lineto
+closepath stroke
+ 4.57 2.41 moveto
+ 4.78 2.41 lineto
+closepath stroke
+ 4.57 2.41 moveto
+ 4.53 2.11 lineto
+closepath stroke
+ 4.78 2.41 moveto
+ 5.01 2.36 lineto
+closepath stroke
+ 4.53 2.11 moveto
+ 4.44 1.82 lineto
+closepath stroke
+showpage
+%%EndDocument
+ @endspecial 116 x @beginspecial 40 @vscale 40 @hscale 200
+@hoffset -180 @voffset @setspecial
+%%BeginDocument: mat.ps.9
+%!
+%%Creator: PSPLTM routine
+%%BoundingBox: 264.20 133.88 1290.28 1257.16
+%%EndComments
+/cm {72 mul 2.54 div} def
+/mc {72 div 2.54 mul} def
+/pnum { 72 div 2.54 mul 20 string
+cvs print ( ) print} def
+/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def
+gsave
+ /Helvetica findfont 0.500000 cm scalefont setfont
+ 10.7950 cm 16.9700 cm moveto
+(Assembled Matrix) Cshow
+ 3.81000 cm 2.00000 cm translate
+ 13.9700 cm 1081 div dup scale
+ 0.250000 setlinewidth
+newpath
+ 0 0 moveto
+ 1081 0 lineto
+ 1081 1081 lineto
+ 0 1081 lineto
+closepath stroke
+ 0.2 setlinewidth
+1 1 translate
+0.8 setlinewidth
+/p {moveto 0 -.40 rmoveto
+ 0 .80 rlineto stroke} def
+ 0 1079 p
+ 801 1079 p
+ 802 1079 p
+ 825 1079 p
+ 827 1079 p
+ 1 1078 p
+ 501 1078 p
+ 500 1078 p
+ 603 1078 p
+ 2 1077 p
+ 352 1077 p
+ 351 1077 p
+ 398 1077 p
+ 3 1076 p
+ 599 1076 p
+ 600 1076 p
+ 626 1076 p
+ 629 1076 p
+ 4 1075 p
+ 288 1075 p
+ 287 1075 p
+ 290 1075 p
+ 1037 1075 p
+ 1039 1075 p
+ 5 1074 p
+ 287 1074 p
+ 286 1074 p
+ 293 1074 p
+ 292 1074 p
+ 1038 1074 p
+ 1043 1074 p
+ 6 1073 p
+ 292 1073 p
+ 291 1073 p
+ 297 1073 p
+ 296 1073 p
+ 1044 1073 p
+ 1046 1073 p
+ 7 1072 p
+ 296 1072 p
+ 295 1072 p
+ 301 1072 p
+ 300 1072 p
+ 1047 1072 p
+ 1052 1072 p
+ 8 1071 p
+ 300 1071 p
+ 299 1071 p
+ 305 1071 p
+ 304 1071 p
+ 1053 1071 p
+ 1058 1071 p
+ 9 1070 p
+ 304 1070 p
+ 303 1070 p
+ 309 1070 p
+ 308 1070 p
+ 1059 1070 p
+ 1061 1070 p
+ 10 1069 p
+ 308 1069 p
+ 307 1069 p
+ 313 1069 p
+ 312 1069 p
+ 1062 1069 p
+ 1065 1069 p
+ 11 1068 p
+ 312 1068 p
+ 311 1068 p
+ 317 1068 p
+ 316 1068 p
+ 1066 1068 p
+ 1070 1068 p
+ 12 1067 p
+ 316 1067 p
+ 315 1067 p
+ 321 1067 p
+ 320 1067 p
+ 1071 1067 p
+ 1075 1067 p
+ 13 1066 p
+ 320 1066 p
+ 319 1066 p
+ 325 1066 p
+ 324 1066 p
+ 1076 1066 p
+ 1079 1066 p
+ 14 1065 p
+ 324 1065 p
+ 323 1065 p
+ 330 1065 p
+ 331 1065 p
+ 933 1065 p
+ 993 1065 p
+ 15 1064 p
+ 327 1064 p
+ 329 1064 p
+ 331 1064 p
+ 932 1064 p
+ 16 1063 p
+ 329 1063 p
+ 328 1063 p
+ 333 1063 p
+ 335 1063 p
+ 901 1063 p
+ 927 1063 p
+ 17 1062 p
+ 335 1062 p
+ 334 1062 p
+ 338 1062 p
+ 339 1062 p
+ 341 1062 p
+ 776 1062 p
+ 777 1062 p
+ 18 1061 p
+ 341 1061 p
+ 340 1061 p
+ 343 1061 p
+ 345 1061 p
+ 650 1061 p
+ 669 1061 p
+ 710 1061 p
+ 19 1060 p
+ 345 1060 p
+ 344 1060 p
+ 347 1060 p
+ 349 1060 p
+ 502 1060 p
+ 552 1060 p
+ 20 1059 p
+ 349 1059 p
+ 348 1059 p
+ 354 1059 p
+ 356 1059 p
+ 404 1059 p
+ 499 1059 p
+ 21 1058 p
+ 356 1058 p
+ 355 1058 p
+ 403 1058 p
+ 22 1057 p
+ 289 1057 p
+ 290 1057 p
+ 358 1057 p
+ 23 1056 p
+ 286 1056 p
+ 288 1056 p
+ 289 1056 p
+ 294 1056 p
+ 357 1056 p
+ 360 1056 p
+ 24 1055 p
+ 291 1055 p
+ 293 1055 p
+ 294 1055 p
+ 298 1055 p
+ 359 1055 p
+ 363 1055 p
+ 25 1054 p
+ 295 1054 p
+ 297 1054 p
+ 298 1054 p
+ 302 1054 p
+ 362 1054 p
+ 366 1054 p
+ 26 1053 p
+ 299 1053 p
+ 301 1053 p
+ 302 1053 p
+ 306 1053 p
+ 365 1053 p
+ 369 1053 p
+ 27 1052 p
+ 303 1052 p
+ 305 1052 p
+ 306 1052 p
+ 310 1052 p
+ 368 1052 p
+ 372 1052 p
+ 28 1051 p
+ 307 1051 p
+ 309 1051 p
+ 310 1051 p
+ 314 1051 p
+ 371 1051 p
+ 375 1051 p
+ 29 1050 p
+ 311 1050 p
+ 313 1050 p
+ 314 1050 p
+ 318 1050 p
+ 374 1050 p
+ 378 1050 p
+ 30 1049 p
+ 315 1049 p
+ 317 1049 p
+ 318 1049 p
+ 322 1049 p
+ 377 1049 p
+ 381 1049 p
+ 31 1048 p
+ 319 1048 p
+ 321 1048 p
+ 322 1048 p
+ 326 1048 p
+ 380 1048 p
+ 384 1048 p
+ 32 1047 p
+ 323 1047 p
+ 325 1047 p
+ 326 1047 p
+ 332 1047 p
+ 383 1047 p
+ 387 1047 p
+ 33 1046 p
+ 328 1046 p
+ 327 1046 p
+ 330 1046 p
+ 332 1046 p
+ 336 1046 p
+ 386 1046 p
+ 390 1046 p
+ 34 1045 p
+ 334 1045 p
+ 333 1045 p
+ 336 1045 p
+ 337 1045 p
+ 389 1045 p
+ 393 1045 p
+ 35 1044 p
+ 338 1044 p
+ 337 1044 p
+ 342 1044 p
+ 392 1044 p
+ 396 1044 p
+ 36 1043 p
+ 340 1043 p
+ 339 1043 p
+ 342 1043 p
+ 346 1043 p
+ 395 1043 p
+ 401 1043 p
+ 37 1042 p
+ 344 1042 p
+ 343 1042 p
+ 346 1042 p
+ 350 1042 p
+ 400 1042 p
+ 38 1041 p
+ 348 1041 p
+ 347 1041 p
+ 350 1041 p
+ 351 1041 p
+ 353 1041 p
+ 399 1041 p
+ 39 1040 p
+ 353 1040 p
+ 352 1040 p
+ 355 1040 p
+ 354 1040 p
+ 40 1039 p
+ 357 1039 p
+ 358 1039 p
+ 361 1039 p
+ 406 1039 p
+ 408 1039 p
+ 41 1038 p
+ 359 1038 p
+ 360 1038 p
+ 361 1038 p
+ 364 1038 p
+ 405 1038 p
+ 410 1038 p
+ 42 1037 p
+ 362 1037 p
+ 363 1037 p
+ 364 1037 p
+ 367 1037 p
+ 409 1037 p
+ 413 1037 p
+ 43 1036 p
+ 365 1036 p
+ 366 1036 p
+ 367 1036 p
+ 370 1036 p
+ 412 1036 p
+ 416 1036 p
+ 44 1035 p
+ 368 1035 p
+ 369 1035 p
+ 370 1035 p
+ 373 1035 p
+ 415 1035 p
+ 419 1035 p
+ 45 1034 p
+ 371 1034 p
+ 372 1034 p
+ 373 1034 p
+ 376 1034 p
+ 418 1034 p
+ 423 1034 p
+ 46 1033 p
+ 374 1033 p
+ 375 1033 p
+ 376 1033 p
+ 379 1033 p
+ 422 1033 p
+ 47 1032 p
+ 377 1032 p
+ 378 1032 p
+ 379 1032 p
+ 382 1032 p
+ 421 1032 p
+ 426 1032 p
+ 428 1032 p
+ 48 1031 p
+ 380 1031 p
+ 381 1031 p
+ 382 1031 p
+ 385 1031 p
+ 427 1031 p
+ 431 1031 p
+ 49 1030 p
+ 383 1030 p
+ 384 1030 p
+ 385 1030 p
+ 388 1030 p
+ 430 1030 p
+ 434 1030 p
+ 50 1029 p
+ 386 1029 p
+ 387 1029 p
+ 388 1029 p
+ 391 1029 p
+ 433 1029 p
+ 51 1028 p
+ 389 1028 p
+ 390 1028 p
+ 391 1028 p
+ 394 1028 p
+ 436 1028 p
+ 440 1028 p
+ 52 1027 p
+ 392 1027 p
+ 393 1027 p
+ 394 1027 p
+ 397 1027 p
+ 438 1027 p
+ 53 1026 p
+ 395 1026 p
+ 396 1026 p
+ 397 1026 p
+ 402 1026 p
+ 437 1026 p
+ 54 1025 p
+ 398 1025 p
+ 399 1025 p
+ 400 1025 p
+ 401 1025 p
+ 402 1025 p
+ 439 1025 p
+ 55 1024 p
+ 407 1024 p
+ 408 1024 p
+ 443 1024 p
+ 445 1024 p
+ 56 1023 p
+ 405 1023 p
+ 406 1023 p
+ 407 1023 p
+ 411 1023 p
+ 442 1023 p
+ 447 1023 p
+ 57 1022 p
+ 409 1022 p
+ 410 1022 p
+ 411 1022 p
+ 414 1022 p
+ 446 1022 p
+ 450 1022 p
+ 58 1021 p
+ 412 1021 p
+ 413 1021 p
+ 414 1021 p
+ 417 1021 p
+ 449 1021 p
+ 453 1021 p
+ 59 1020 p
+ 415 1020 p
+ 416 1020 p
+ 417 1020 p
+ 420 1020 p
+ 452 1020 p
+ 456 1020 p
+ 60 1019 p
+ 418 1019 p
+ 419 1019 p
+ 420 1019 p
+ 424 1019 p
+ 455 1019 p
+ 460 1019 p
+ 61 1018 p
+ 421 1018 p
+ 422 1018 p
+ 423 1018 p
+ 424 1018 p
+ 425 1018 p
+ 459 1018 p
+ 62 1017 p
+ 426 1017 p
+ 425 1017 p
+ 429 1017 p
+ 458 1017 p
+ 463 1017 p
+ 63 1016 p
+ 427 1016 p
+ 428 1016 p
+ 429 1016 p
+ 432 1016 p
+ 462 1016 p
+ 466 1016 p
+ 64 1015 p
+ 430 1015 p
+ 431 1015 p
+ 432 1015 p
+ 435 1015 p
+ 465 1015 p
+ 469 1015 p
+ 65 1014 p
+ 433 1014 p
+ 434 1014 p
+ 435 1014 p
+ 436 1014 p
+ 441 1014 p
+ 468 1014 p
+ 66 1013 p
+ 437 1013 p
+ 438 1013 p
+ 439 1013 p
+ 440 1013 p
+ 441 1013 p
+ 471 1013 p
+ 67 1012 p
+ 444 1012 p
+ 445 1012 p
+ 473 1012 p
+ 475 1012 p
+ 68 1011 p
+ 442 1011 p
+ 443 1011 p
+ 444 1011 p
+ 448 1011 p
+ 472 1011 p
+ 69 1010 p
+ 446 1010 p
+ 447 1010 p
+ 448 1010 p
+ 451 1010 p
+ 476 1010 p
+ 478 1010 p
+ 481 1010 p
+ 70 1009 p
+ 449 1009 p
+ 450 1009 p
+ 451 1009 p
+ 454 1009 p
+ 480 1009 p
+ 71 1008 p
+ 452 1008 p
+ 453 1008 p
+ 454 1008 p
+ 457 1008 p
+ 479 1008 p
+ 484 1008 p
+ 72 1007 p
+ 455 1007 p
+ 456 1007 p
+ 457 1007 p
+ 461 1007 p
+ 483 1007 p
+ 487 1007 p
+ 73 1006 p
+ 458 1006 p
+ 459 1006 p
+ 460 1006 p
+ 461 1006 p
+ 464 1006 p
+ 486 1006 p
+ 490 1006 p
+ 493 1006 p
+ 74 1005 p
+ 462 1005 p
+ 463 1005 p
+ 464 1005 p
+ 467 1005 p
+ 492 1005 p
+ 75 1004 p
+ 465 1004 p
+ 466 1004 p
+ 467 1004 p
+ 470 1004 p
+ 491 1004 p
+ 495 1004 p
+ 76 1003 p
+ 468 1003 p
+ 469 1003 p
+ 470 1003 p
+ 471 1003 p
+ 497 1003 p
+ 77 1002 p
+ 474 1002 p
+ 475 1002 p
+ 504 1002 p
+ 506 1002 p
+ 78 1001 p
+ 472 1001 p
+ 473 1001 p
+ 474 1001 p
+ 476 1001 p
+ 477 1001 p
+ 503 1001 p
+ 79 1000 p
+ 478 1000 p
+ 477 1000 p
+ 482 1000 p
+ 507 1000 p
+ 509 1000 p
+ 80 999 p
+ 479 999 p
+ 480 999 p
+ 481 999 p
+ 482 999 p
+ 485 999 p
+ 508 999 p
+ 512 999 p
+ 81 998 p
+ 483 998 p
+ 484 998 p
+ 485 998 p
+ 488 998 p
+ 511 998 p
+ 515 998 p
+ 517 998 p
+ 82 997 p
+ 486 997 p
+ 487 997 p
+ 488 997 p
+ 489 997 p
+ 516 997 p
+ 520 997 p
+ 83 996 p
+ 490 996 p
+ 489 996 p
+ 494 996 p
+ 519 996 p
+ 524 996 p
+ 84 995 p
+ 491 995 p
+ 492 995 p
+ 493 995 p
+ 494 995 p
+ 496 995 p
+ 523 995 p
+ 85 994 p
+ 495 994 p
+ 496 994 p
+ 497 994 p
+ 522 994 p
+ 526 994 p
+ 86 993 p
+ 505 993 p
+ 506 993 p
+ 529 993 p
+ 87 992 p
+ 503 992 p
+ 504 992 p
+ 505 992 p
+ 507 992 p
+ 510 992 p
+ 528 992 p
+ 531 992 p
+ 88 991 p
+ 508 991 p
+ 509 991 p
+ 510 991 p
+ 513 991 p
+ 530 991 p
+ 534 991 p
+ 89 990 p
+ 511 990 p
+ 512 990 p
+ 513 990 p
+ 514 990 p
+ 533 990 p
+ 537 990 p
+ 539 990 p
+ 90 989 p
+ 515 989 p
+ 514 989 p
+ 518 989 p
+ 538 989 p
+ 542 989 p
+ 91 988 p
+ 516 988 p
+ 517 988 p
+ 518 988 p
+ 521 988 p
+ 541 988 p
+ 546 988 p
+ 92 987 p
+ 519 987 p
+ 520 987 p
+ 521 987 p
+ 525 987 p
+ 545 987 p
+ 93 986 p
+ 522 986 p
+ 523 986 p
+ 524 986 p
+ 525 986 p
+ 527 986 p
+ 544 986 p
+ 549 986 p
+ 94 985 p
+ 526 985 p
+ 527 985 p
+ 548 985 p
+ 95 984 p
+ 528 984 p
+ 529 984 p
+ 532 984 p
+ 554 984 p
+ 556 984 p
+ 96 983 p
+ 530 983 p
+ 531 983 p
+ 532 983 p
+ 535 983 p
+ 553 983 p
+ 558 983 p
+ 97 982 p
+ 533 982 p
+ 534 982 p
+ 535 982 p
+ 536 982 p
+ 557 982 p
+ 561 982 p
+ 98 981 p
+ 537 981 p
+ 536 981 p
+ 540 981 p
+ 560 981 p
+ 565 981 p
+ 99 980 p
+ 538 980 p
+ 539 980 p
+ 540 980 p
+ 543 980 p
+ 564 980 p
+ 100 979 p
+ 541 979 p
+ 542 979 p
+ 543 979 p
+ 547 979 p
+ 563 979 p
+ 568 979 p
+ 101 978 p
+ 544 978 p
+ 545 978 p
+ 546 978 p
+ 547 978 p
+ 550 978 p
+ 567 978 p
+ 571 978 p
+ 102 977 p
+ 548 977 p
+ 549 977 p
+ 550 977 p
+ 570 977 p
+ 573 977 p
+ 103 976 p
+ 555 976 p
+ 556 976 p
+ 576 976 p
+ 104 975 p
+ 553 975 p
+ 554 975 p
+ 555 975 p
+ 559 975 p
+ 575 975 p
+ 578 975 p
+ 105 974 p
+ 557 974 p
+ 558 974 p
+ 559 974 p
+ 562 974 p
+ 577 974 p
+ 581 974 p
+ 106 973 p
+ 560 973 p
+ 561 973 p
+ 562 973 p
+ 566 973 p
+ 580 973 p
+ 584 973 p
+ 107 972 p
+ 563 972 p
+ 564 972 p
+ 565 972 p
+ 566 972 p
+ 569 972 p
+ 583 972 p
+ 587 972 p
+ 108 971 p
+ 567 971 p
+ 568 971 p
+ 569 971 p
+ 572 971 p
+ 586 971 p
+ 590 971 p
+ 592 971 p
+ 109 970 p
+ 570 970 p
+ 571 970 p
+ 572 970 p
+ 574 970 p
+ 591 970 p
+ 595 970 p
+ 110 969 p
+ 573 969 p
+ 574 969 p
+ 594 969 p
+ 597 969 p
+ 111 968 p
+ 575 968 p
+ 576 968 p
+ 579 968 p
+ 605 968 p
+ 607 968 p
+ 112 967 p
+ 577 967 p
+ 578 967 p
+ 579 967 p
+ 582 967 p
+ 604 967 p
+ 609 967 p
+ 113 966 p
+ 580 966 p
+ 581 966 p
+ 582 966 p
+ 585 966 p
+ 608 966 p
+ 612 966 p
+ 114 965 p
+ 583 965 p
+ 584 965 p
+ 585 965 p
+ 588 965 p
+ 611 965 p
+ 615 965 p
+ 115 964 p
+ 586 964 p
+ 587 964 p
+ 588 964 p
+ 589 964 p
+ 614 964 p
+ 619 964 p
+ 116 963 p
+ 590 963 p
+ 589 963 p
+ 593 963 p
+ 618 963 p
+ 117 962 p
+ 591 962 p
+ 592 962 p
+ 593 962 p
+ 596 962 p
+ 617 962 p
+ 622 962 p
+ 118 961 p
+ 594 961 p
+ 595 961 p
+ 596 961 p
+ 598 961 p
+ 600 961 p
+ 621 961 p
+ 624 961 p
+ 119 960 p
+ 597 960 p
+ 598 960 p
+ 599 960 p
+ 120 959 p
+ 606 959 p
+ 607 959 p
+ 631 959 p
+ 121 958 p
+ 604 958 p
+ 605 958 p
+ 606 958 p
+ 610 958 p
+ 630 958 p
+ 633 958 p
+ 122 957 p
+ 608 957 p
+ 609 957 p
+ 610 957 p
+ 613 957 p
+ 632 957 p
+ 636 957 p
+ 638 957 p
+ 123 956 p
+ 611 956 p
+ 612 956 p
+ 613 956 p
+ 616 956 p
+ 637 956 p
+ 641 956 p
+ 124 955 p
+ 614 955 p
+ 615 955 p
+ 616 955 p
+ 620 955 p
+ 640 955 p
+ 645 955 p
+ 125 954 p
+ 617 954 p
+ 618 954 p
+ 619 954 p
+ 620 954 p
+ 623 954 p
+ 644 954 p
+ 126 953 p
+ 621 953 p
+ 622 953 p
+ 623 953 p
+ 625 953 p
+ 628 953 p
+ 643 953 p
+ 647 953 p
+ 127 952 p
+ 624 952 p
+ 625 952 p
+ 626 952 p
+ 627 952 p
+ 128 951 p
+ 627 951 p
+ 628 951 p
+ 629 951 p
+ 649 951 p
+ 129 950 p
+ 630 950 p
+ 631 950 p
+ 634 950 p
+ 652 950 p
+ 654 950 p
+ 130 949 p
+ 632 949 p
+ 633 949 p
+ 634 949 p
+ 635 949 p
+ 651 949 p
+ 656 949 p
+ 131 948 p
+ 636 948 p
+ 635 948 p
+ 639 948 p
+ 655 948 p
+ 660 948 p
+ 132 947 p
+ 637 947 p
+ 638 947 p
+ 639 947 p
+ 642 947 p
+ 659 947 p
+ 133 946 p
+ 640 946 p
+ 641 946 p
+ 642 946 p
+ 646 946 p
+ 658 946 p
+ 663 946 p
+ 134 945 p
+ 643 945 p
+ 644 945 p
+ 645 945 p
+ 646 945 p
+ 648 945 p
+ 662 945 p
+ 665 945 p
+ 135 944 p
+ 647 944 p
+ 648 944 p
+ 649 944 p
+ 667 944 p
+ 136 943 p
+ 653 943 p
+ 654 943 p
+ 671 943 p
+ 137 942 p
+ 651 942 p
+ 652 942 p
+ 653 942 p
+ 657 942 p
+ 670 942 p
+ 673 942 p
+ 138 941 p
+ 655 941 p
+ 656 941 p
+ 657 941 p
+ 661 941 p
+ 672 941 p
+ 676 941 p
+ 139 940 p
+ 658 940 p
+ 659 940 p
+ 660 940 p
+ 661 940 p
+ 664 940 p
+ 675 940 p
+ 679 940 p
+ 140 939 p
+ 662 939 p
+ 663 939 p
+ 664 939 p
+ 666 939 p
+ 678 939 p
+ 681 939 p
+ 141 938 p
+ 665 938 p
+ 666 938 p
+ 667 938 p
+ 683 938 p
+ 142 937 p
+ 670 937 p
+ 671 937 p
+ 674 937 p
+ 685 937 p
+ 687 937 p
+ 143 936 p
+ 672 936 p
+ 673 936 p
+ 674 936 p
+ 677 936 p
+ 684 936 p
+ 144 935 p
+ 675 935 p
+ 676 935 p
+ 677 935 p
+ 680 935 p
+ 688 935 p
+ 690 935 p
+ 693 935 p
+ 145 934 p
+ 678 934 p
+ 679 934 p
+ 680 934 p
+ 682 934 p
+ 692 934 p
+ 146 933 p
+ 681 933 p
+ 682 933 p
+ 683 933 p
+ 691 933 p
+ 695 933 p
+ 147 932 p
+ 686 932 p
+ 687 932 p
+ 698 932 p
+ 148 931 p
+ 684 931 p
+ 685 931 p
+ 686 931 p
+ 688 931 p
+ 689 931 p
+ 697 931 p
+ 700 931 p
+ 149 930 p
+ 690 930 p
+ 689 930 p
+ 694 930 p
+ 699 930 p
+ 703 930 p
+ 150 929 p
+ 691 929 p
+ 692 929 p
+ 693 929 p
+ 694 929 p
+ 696 929 p
+ 702 929 p
+ 705 929 p
+ 151 928 p
+ 695 928 p
+ 696 928 p
+ 707 928 p
+ 152 927 p
+ 697 927 p
+ 698 927 p
+ 701 927 p
+ 714 927 p
+ 153 926 p
+ 699 926 p
+ 700 926 p
+ 701 926 p
+ 704 926 p
+ 713 926 p
+ 716 926 p
+ 154 925 p
+ 702 925 p
+ 703 925 p
+ 704 925 p
+ 706 925 p
+ 715 925 p
+ 719 925 p
+ 721 925 p
+ 155 924 p
+ 705 924 p
+ 706 924 p
+ 707 924 p
+ 720 924 p
+ 723 924 p
+ 156 923 p
+ 713 923 p
+ 714 923 p
+ 717 923 p
+ 726 923 p
+ 157 922 p
+ 715 922 p
+ 716 922 p
+ 717 922 p
+ 718 922 p
+ 725 922 p
+ 728 922 p
+ 730 922 p
+ 158 921 p
+ 719 921 p
+ 718 921 p
+ 722 921 p
+ 729 921 p
+ 733 921 p
+ 159 920 p
+ 720 920 p
+ 721 920 p
+ 722 920 p
+ 724 920 p
+ 732 920 p
+ 736 920 p
+ 160 919 p
+ 723 919 p
+ 724 919 p
+ 735 919 p
+ 161 918 p
+ 725 918 p
+ 726 918 p
+ 727 918 p
+ 739 918 p
+ 162 917 p
+ 728 917 p
+ 727 917 p
+ 731 917 p
+ 738 917 p
+ 741 917 p
+ 163 916 p
+ 729 916 p
+ 730 916 p
+ 731 916 p
+ 734 916 p
+ 740 916 p
+ 744 916 p
+ 164 915 p
+ 732 915 p
+ 733 915 p
+ 734 915 p
+ 737 915 p
+ 743 915 p
+ 747 915 p
+ 749 915 p
+ 165 914 p
+ 735 914 p
+ 736 914 p
+ 737 914 p
+ 748 914 p
+ 751 914 p
+ 166 913 p
+ 738 913 p
+ 739 913 p
+ 742 913 p
+ 758 913 p
+ 760 913 p
+ 167 912 p
+ 740 912 p
+ 741 912 p
+ 742 912 p
+ 745 912 p
+ 759 912 p
+ 763 912 p
+ 168 911 p
+ 743 911 p
+ 744 911 p
+ 745 911 p
+ 746 911 p
+ 762 911 p
+ 766 911 p
+ 169 910 p
+ 747 910 p
+ 746 910 p
+ 750 910 p
+ 765 910 p
+ 769 910 p
+ 170 909 p
+ 748 909 p
+ 749 909 p
+ 750 909 p
+ 752 909 p
+ 768 909 p
+ 772 909 p
+ 171 908 p
+ 751 908 p
+ 752 908 p
+ 771 908 p
+ 774 908 p
+ 172 907 p
+ 761 907 p
+ 760 907 p
+ 778 907 p
+ 173 906 p
+ 759 906 p
+ 758 906 p
+ 761 906 p
+ 764 906 p
+ 779 906 p
+ 780 906 p
+ 174 905 p
+ 762 905 p
+ 763 905 p
+ 764 905 p
+ 767 905 p
+ 781 905 p
+ 783 905 p
+ 175 904 p
+ 765 904 p
+ 766 904 p
+ 767 904 p
+ 770 904 p
+ 784 904 p
+ 787 904 p
+ 176 903 p
+ 768 903 p
+ 769 903 p
+ 770 903 p
+ 773 903 p
+ 786 903 p
+ 790 903 p
+ 177 902 p
+ 771 902 p
+ 772 902 p
+ 773 902 p
+ 775 902 p
+ 789 902 p
+ 793 902 p
+ 795 902 p
+ 178 901 p
+ 774 901 p
+ 775 901 p
+ 794 901 p
+ 797 901 p
+ 179 900 p
+ 779 900 p
+ 778 900 p
+ 782 900 p
+ 803 900 p
+ 180 899 p
+ 781 899 p
+ 780 899 p
+ 782 899 p
+ 785 899 p
+ 804 899 p
+ 805 899 p
+ 181 898 p
+ 784 898 p
+ 783 898 p
+ 785 898 p
+ 788 898 p
+ 806 898 p
+ 808 898 p
+ 182 897 p
+ 786 897 p
+ 787 897 p
+ 788 897 p
+ 791 897 p
+ 809 897 p
+ 811 897 p
+ 183 896 p
+ 789 896 p
+ 790 896 p
+ 791 896 p
+ 792 896 p
+ 812 896 p
+ 814 896 p
+ 184 895 p
+ 793 895 p
+ 792 895 p
+ 796 895 p
+ 815 895 p
+ 817 895 p
+ 185 894 p
+ 794 894 p
+ 795 894 p
+ 796 894 p
+ 798 894 p
+ 800 894 p
+ 818 894 p
+ 820 894 p
+ 186 893 p
+ 799 893 p
+ 800 893 p
+ 802 893 p
+ 821 893 p
+ 823 893 p
+ 187 892 p
+ 797 892 p
+ 798 892 p
+ 799 892 p
+ 801 892 p
+ 188 891 p
+ 804 891 p
+ 803 891 p
+ 807 891 p
+ 831 891 p
+ 833 891 p
+ 189 890 p
+ 806 890 p
+ 805 890 p
+ 807 890 p
+ 810 890 p
+ 832 890 p
+ 835 890 p
+ 190 889 p
+ 809 889 p
+ 808 889 p
+ 810 889 p
+ 813 889 p
+ 836 889 p
+ 838 889 p
+ 191 888 p
+ 812 888 p
+ 811 888 p
+ 813 888 p
+ 816 888 p
+ 839 888 p
+ 841 888 p
+ 192 887 p
+ 815 887 p
+ 814 887 p
+ 816 887 p
+ 819 887 p
+ 842 887 p
+ 844 887 p
+ 193 886 p
+ 818 886 p
+ 817 886 p
+ 819 886 p
+ 822 886 p
+ 845 886 p
+ 849 886 p
+ 194 885 p
+ 821 885 p
+ 820 885 p
+ 822 885 p
+ 824 885 p
+ 847 885 p
+ 195 884 p
+ 823 884 p
+ 824 884 p
+ 825 884 p
+ 826 884 p
+ 848 884 p
+ 852 884 p
+ 196 883 p
+ 827 883 p
+ 826 883 p
+ 851 883 p
+ 197 882 p
+ 834 882 p
+ 833 882 p
+ 854 882 p
+ 198 881 p
+ 832 881 p
+ 831 881 p
+ 834 881 p
+ 837 881 p
+ 855 881 p
+ 856 881 p
+ 199 880 p
+ 836 880 p
+ 835 880 p
+ 837 880 p
+ 840 880 p
+ 857 880 p
+ 859 880 p
+ 200 879 p
+ 839 879 p
+ 838 879 p
+ 840 879 p
+ 843 879 p
+ 860 879 p
+ 862 879 p
+ 201 878 p
+ 842 878 p
+ 841 878 p
+ 843 878 p
+ 846 878 p
+ 863 878 p
+ 865 878 p
+ 202 877 p
+ 845 877 p
+ 844 877 p
+ 846 877 p
+ 850 877 p
+ 866 877 p
+ 869 877 p
+ 870 877 p
+ 203 876 p
+ 848 876 p
+ 847 876 p
+ 849 876 p
+ 850 876 p
+ 853 876 p
+ 871 876 p
+ 204 875 p
+ 851 875 p
+ 852 875 p
+ 853 875 p
+ 873 875 p
+ 875 875 p
+ 205 874 p
+ 855 874 p
+ 854 874 p
+ 858 874 p
+ 876 874 p
+ 206 873 p
+ 857 873 p
+ 856 873 p
+ 858 873 p
+ 861 873 p
+ 877 873 p
+ 878 873 p
+ 207 872 p
+ 860 872 p
+ 859 872 p
+ 861 872 p
+ 864 872 p
+ 879 872 p
+ 881 872 p
+ 208 871 p
+ 863 871 p
+ 862 871 p
+ 864 871 p
+ 867 871 p
+ 882 871 p
+ 884 871 p
+ 209 870 p
+ 866 870 p
+ 865 870 p
+ 867 870 p
+ 868 870 p
+ 885 870 p
+ 887 870 p
+ 210 869 p
+ 869 869 p
+ 868 869 p
+ 872 869 p
+ 888 869 p
+ 890 869 p
+ 211 868 p
+ 871 868 p
+ 870 868 p
+ 872 868 p
+ 873 868 p
+ 874 868 p
+ 891 868 p
+ 894 868 p
+ 895 868 p
+ 212 867 p
+ 875 867 p
+ 874 867 p
+ 896 867 p
+ 899 867 p
+ 213 866 p
+ 877 866 p
+ 876 866 p
+ 880 866 p
+ 902 866 p
+ 904 866 p
+ 214 865 p
+ 879 865 p
+ 878 865 p
+ 880 865 p
+ 883 865 p
+ 903 865 p
+ 906 865 p
+ 215 864 p
+ 882 864 p
+ 881 864 p
+ 883 864 p
+ 886 864 p
+ 907 864 p
+ 909 864 p
+ 216 863 p
+ 885 863 p
+ 884 863 p
+ 886 863 p
+ 889 863 p
+ 910 863 p
+ 912 863 p
+ 217 862 p
+ 888 862 p
+ 887 862 p
+ 889 862 p
+ 892 862 p
+ 913 862 p
+ 915 862 p
+ 218 861 p
+ 891 861 p
+ 890 861 p
+ 892 861 p
+ 893 861 p
+ 916 861 p
+ 918 861 p
+ 219 860 p
+ 894 860 p
+ 893 860 p
+ 897 860 p
+ 919 860 p
+ 921 860 p
+ 220 859 p
+ 896 859 p
+ 895 859 p
+ 897 859 p
+ 898 859 p
+ 922 859 p
+ 924 859 p
+ 221 858 p
+ 899 858 p
+ 898 858 p
+ 925 858 p
+ 222 857 p
+ 905 857 p
+ 904 857 p
+ 934 857 p
+ 936 857 p
+ 223 856 p
+ 903 856 p
+ 902 856 p
+ 905 856 p
+ 908 856 p
+ 935 856 p
+ 224 855 p
+ 907 855 p
+ 906 855 p
+ 908 855 p
+ 911 855 p
+ 938 855 p
+ 939 855 p
+ 225 854 p
+ 910 854 p
+ 909 854 p
+ 911 854 p
+ 914 854 p
+ 940 854 p
+ 942 854 p
+ 226 853 p
+ 913 853 p
+ 912 853 p
+ 914 853 p
+ 917 853 p
+ 943 853 p
+ 945 853 p
+ 227 852 p
+ 916 852 p
+ 915 852 p
+ 917 852 p
+ 920 852 p
+ 946 852 p
+ 948 852 p
+ 228 851 p
+ 919 851 p
+ 918 851 p
+ 920 851 p
+ 923 851 p
+ 949 851 p
+ 951 851 p
+ 229 850 p
+ 922 850 p
+ 921 850 p
+ 923 850 p
+ 926 850 p
+ 952 850 p
+ 955 850 p
+ 956 850 p
+ 230 849 p
+ 925 849 p
+ 924 849 p
+ 926 849 p
+ 957 849 p
+ 960 849 p
+ 231 848 p
+ 937 848 p
+ 936 848 p
+ 961 848 p
+ 232 847 p
+ 935 847 p
+ 934 847 p
+ 937 847 p
+ 938 847 p
+ 941 847 p
+ 962 847 p
+ 963 847 p
+ 233 846 p
+ 940 846 p
+ 939 846 p
+ 941 846 p
+ 944 846 p
+ 964 846 p
+ 967 846 p
+ 970 846 p
+ 234 845 p
+ 943 845 p
+ 942 845 p
+ 944 845 p
+ 947 845 p
+ 968 845 p
+ 235 844 p
+ 946 844 p
+ 945 844 p
+ 947 844 p
+ 950 844 p
+ 969 844 p
+ 972 844 p
+ 236 843 p
+ 949 843 p
+ 948 843 p
+ 950 843 p
+ 953 843 p
+ 973 843 p
+ 975 843 p
+ 237 842 p
+ 952 842 p
+ 951 842 p
+ 953 842 p
+ 954 842 p
+ 976 842 p
+ 978 842 p
+ 238 841 p
+ 955 841 p
+ 954 841 p
+ 958 841 p
+ 979 841 p
+ 981 841 p
+ 239 840 p
+ 957 840 p
+ 956 840 p
+ 958 840 p
+ 959 840 p
+ 982 840 p
+ 985 840 p
+ 987 840 p
+ 240 839 p
+ 960 839 p
+ 959 839 p
+ 986 839 p
+ 990 839 p
+ 992 839 p
+ 241 838 p
+ 962 838 p
+ 961 838 p
+ 965 838 p
+ 997 838 p
+ 242 837 p
+ 964 837 p
+ 963 837 p
+ 965 837 p
+ 966 837 p
+ 998 837 p
+ 999 837 p
+ 243 836 p
+ 967 836 p
+ 966 836 p
+ 971 836 p
+ 1000 836 p
+ 1002 836 p
+ 244 835 p
+ 969 835 p
+ 968 835 p
+ 970 835 p
+ 971 835 p
+ 974 835 p
+ 1003 835 p
+ 1006 835 p
+ 1007 835 p
+ 245 834 p
+ 973 834 p
+ 972 834 p
+ 974 834 p
+ 977 834 p
+ 1008 834 p
+ 1010 834 p
+ 246 833 p
+ 976 833 p
+ 975 833 p
+ 977 833 p
+ 980 833 p
+ 1011 833 p
+ 1013 833 p
+ 247 832 p
+ 979 832 p
+ 978 832 p
+ 980 832 p
+ 983 832 p
+ 1014 832 p
+ 1016 832 p
+ 248 831 p
+ 982 831 p
+ 981 831 p
+ 983 831 p
+ 984 831 p
+ 1017 831 p
+ 1019 831 p
+ 249 830 p
+ 985 830 p
+ 984 830 p
+ 988 830 p
+ 1020 830 p
+ 1022 830 p
+ 250 829 p
+ 986 829 p
+ 987 829 p
+ 988 829 p
+ 989 829 p
+ 1023 829 p
+ 1026 829 p
+ 251 828 p
+ 990 828 p
+ 989 828 p
+ 991 828 p
+ 1025 828 p
+ 1029 828 p
+ 252 827 p
+ 992 827 p
+ 991 827 p
+ 1028 827 p
+ 1030 827 p
+ 1031 827 p
+ 1032 827 p
+ 253 826 p
+ 998 826 p
+ 997 826 p
+ 1001 826 p
+ 1033 826 p
+ 254 825 p
+ 1000 825 p
+ 999 825 p
+ 1001 825 p
+ 1004 825 p
+ 1034 825 p
+ 1035 825 p
+ 255 824 p
+ 1003 824 p
+ 1002 824 p
+ 1004 824 p
+ 1005 824 p
+ 1036 824 p
+ 1041 824 p
+ 256 823 p
+ 1006 823 p
+ 1005 823 p
+ 1009 823 p
+ 1042 823 p
+ 1049 823 p
+ 1055 823 p
+ 257 822 p
+ 1008 822 p
+ 1007 822 p
+ 1009 822 p
+ 1012 822 p
+ 1050 822 p
+ 258 821 p
+ 1011 821 p
+ 1010 821 p
+ 1012 821 p
+ 1015 821 p
+ 1051 821 p
+ 1056 821 p
+ 259 820 p
+ 1014 820 p
+ 1013 820 p
+ 1015 820 p
+ 1018 820 p
+ 1057 820 p
+ 1064 820 p
+ 1068 820 p
+ 260 819 p
+ 1017 819 p
+ 1016 819 p
+ 1018 819 p
+ 1021 819 p
+ 1069 819 p
+ 1073 819 p
+ 261 818 p
+ 1020 818 p
+ 1019 818 p
+ 1021 818 p
+ 1024 818 p
+ 1074 818 p
+ 1078 818 p
+ 262 817 p
+ 996 817 p
+ 995 817 p
+ 1023 817 p
+ 1022 817 p
+ 1024 817 p
+ 1027 817 p
+ 263 816 p
+ 930 816 p
+ 929 816 p
+ 931 816 p
+ 1025 816 p
+ 1026 816 p
+ 1027 816 p
+ 264 815 p
+ 830 815 p
+ 829 815 p
+ 900 815 p
+ 931 815 p
+ 1028 815 p
+ 1029 815 p
+ 265 814 p
+ 756 814 p
+ 755 814 p
+ 757 814 p
+ 900 814 p
+ 1030 814 p
+ 266 813 p
+ 712 813 p
+ 711 813 p
+ 753 813 p
+ 757 813 p
+ 1031 813 p
+ 267 812 p
+ 601 812 p
+ 602 812 p
+ 603 812 p
+ 708 812 p
+ 753 812 p
+ 1032 812 p
+ 268 811 p
+ 1034 811 p
+ 1033 811 p
+ 1039 811 p
+ 1040 811 p
+ 269 810 p
+ 1036 810 p
+ 1035 810 p
+ 1037 810 p
+ 1038 810 p
+ 1040 810 p
+ 1045 810 p
+ 270 809 p
+ 1042 809 p
+ 1041 809 p
+ 1043 809 p
+ 1044 809 p
+ 1045 809 p
+ 1048 809 p
+ 271 808 p
+ 1046 808 p
+ 1047 808 p
+ 1048 808 p
+ 1049 808 p
+ 1054 808 p
+ 272 807 p
+ 1051 807 p
+ 1050 807 p
+ 1052 807 p
+ 1053 807 p
+ 1054 807 p
+ 1055 807 p
+ 1060 807 p
+ 273 806 p
+ 1057 806 p
+ 1056 806 p
+ 1058 806 p
+ 1059 806 p
+ 1060 806 p
+ 1063 806 p
+ 274 805 p
+ 1061 805 p
+ 1062 805 p
+ 1063 805 p
+ 1064 805 p
+ 1067 805 p
+ 275 804 p
+ 1065 804 p
+ 1066 804 p
+ 1067 804 p
+ 1069 804 p
+ 1068 804 p
+ 1072 804 p
+ 276 803 p
+ 1070 803 p
+ 1071 803 p
+ 1072 803 p
+ 1074 803 p
+ 1073 803 p
+ 1077 803 p
+ 277 802 p
+ 994 802 p
+ 996 802 p
+ 1075 802 p
+ 1076 802 p
+ 1077 802 p
+ 1078 802 p
+ 278 801 p
+ 928 801 p
+ 930 801 p
+ 993 801 p
+ 995 801 p
+ 994 801 p
+ 1079 801 p
+ 279 800 p
+ 828 800 p
+ 830 800 p
+ 927 800 p
+ 929 800 p
+ 928 800 p
+ 933 800 p
+ 932 800 p
+ 280 799 p
+ 754 799 p
+ 756 799 p
+ 777 799 p
+ 829 799 p
+ 828 799 p
+ 901 799 p
+ 281 798 p
+ 710 798 p
+ 709 798 p
+ 712 798 p
+ 755 798 p
+ 754 798 p
+ 776 798 p
+ 282 797 p
+ 669 797 p
+ 668 797 p
+ 708 797 p
+ 709 797 p
+ 711 797 p
+ 283 796 p
+ 552 796 p
+ 551 796 p
+ 601 796 p
+ 650 796 p
+ 668 796 p
+ 284 795 p
+ 499 795 p
+ 498 795 p
+ 501 795 p
+ 502 795 p
+ 551 795 p
+ 602 795 p
+ 285 794 p
+ 404 794 p
+ 403 794 p
+ 498 794 p
+ 500 794 p
+ 286 793 p
+ 287 793 p
+ 288 793 p
+ 294 793 p
+ 293 793 p
+ 23 793 p
+ 5 793 p
+ 286 792 p
+ 287 792 p
+ 288 792 p
+ 1037 792 p
+ 1038 792 p
+ 5 792 p
+ 4 792 p
+ 286 791 p
+ 287 791 p
+ 288 791 p
+ 289 791 p
+ 290 791 p
+ 23 791 p
+ 4 791 p
+ 289 790 p
+ 288 790 p
+ 290 790 p
+ 357 790 p
+ 358 790 p
+ 22 790 p
+ 23 790 p
+ 289 789 p
+ 288 789 p
+ 290 789 p
+ 22 789 p
+ 4 789 p
+ 291 788 p
+ 292 788 p
+ 293 788 p
+ 298 788 p
+ 297 788 p
+ 24 788 p
+ 6 788 p
+ 291 787 p
+ 292 787 p
+ 293 787 p
+ 1043 787 p
+ 1044 787 p
+ 6 787 p
+ 5 787 p
+ 291 786 p
+ 292 786 p
+ 293 786 p
+ 294 786 p
+ 286 786 p
+ 24 786 p
+ 5 786 p
+ 294 785 p
+ 293 785 p
+ 286 785 p
+ 359 785 p
+ 360 785 p
+ 23 785 p
+ 24 785 p
+ 295 784 p
+ 296 784 p
+ 297 784 p
+ 302 784 p
+ 301 784 p
+ 25 784 p
+ 7 784 p
+ 295 783 p
+ 296 783 p
+ 297 783 p
+ 1046 783 p
+ 1047 783 p
+ 7 783 p
+ 6 783 p
+ 295 782 p
+ 296 782 p
+ 297 782 p
+ 298 782 p
+ 291 782 p
+ 25 782 p
+ 6 782 p
+ 298 781 p
+ 297 781 p
+ 291 781 p
+ 362 781 p
+ 363 781 p
+ 24 781 p
+ 25 781 p
+ 299 780 p
+ 300 780 p
+ 301 780 p
+ 306 780 p
+ 305 780 p
+ 26 780 p
+ 8 780 p
+ 299 779 p
+ 300 779 p
+ 301 779 p
+ 1052 779 p
+ 1053 779 p
+ 8 779 p
+ 7 779 p
+ 299 778 p
+ 300 778 p
+ 301 778 p
+ 302 778 p
+ 295 778 p
+ 26 778 p
+ 7 778 p
+ 302 777 p
+ 301 777 p
+ 295 777 p
+ 365 777 p
+ 366 777 p
+ 25 777 p
+ 26 777 p
+ 303 776 p
+ 304 776 p
+ 305 776 p
+ 310 776 p
+ 309 776 p
+ 27 776 p
+ 9 776 p
+ 303 775 p
+ 304 775 p
+ 305 775 p
+ 1058 775 p
+ 1059 775 p
+ 9 775 p
+ 8 775 p
+ 303 774 p
+ 304 774 p
+ 305 774 p
+ 306 774 p
+ 299 774 p
+ 27 774 p
+ 8 774 p
+ 306 773 p
+ 305 773 p
+ 299 773 p
+ 368 773 p
+ 369 773 p
+ 26 773 p
+ 27 773 p
+ 307 772 p
+ 308 772 p
+ 309 772 p
+ 314 772 p
+ 313 772 p
+ 28 772 p
+ 10 772 p
+ 307 771 p
+ 308 771 p
+ 309 771 p
+ 1061 771 p
+ 1062 771 p
+ 10 771 p
+ 9 771 p
+ 307 770 p
+ 308 770 p
+ 309 770 p
+ 310 770 p
+ 303 770 p
+ 28 770 p
+ 9 770 p
+ 310 769 p
+ 309 769 p
+ 303 769 p
+ 371 769 p
+ 372 769 p
+ 27 769 p
+ 28 769 p
+ 311 768 p
+ 312 768 p
+ 313 768 p
+ 318 768 p
+ 317 768 p
+ 29 768 p
+ 11 768 p
+ 311 767 p
+ 312 767 p
+ 313 767 p
+ 1065 767 p
+ 1066 767 p
+ 11 767 p
+ 10 767 p
+ 311 766 p
+ 312 766 p
+ 313 766 p
+ 314 766 p
+ 307 766 p
+ 29 766 p
+ 10 766 p
+ 314 765 p
+ 313 765 p
+ 307 765 p
+ 374 765 p
+ 375 765 p
+ 28 765 p
+ 29 765 p
+ 315 764 p
+ 316 764 p
+ 317 764 p
+ 322 764 p
+ 321 764 p
+ 30 764 p
+ 12 764 p
+ 315 763 p
+ 316 763 p
+ 317 763 p
+ 1070 763 p
+ 1071 763 p
+ 12 763 p
+ 11 763 p
+ 315 762 p
+ 316 762 p
+ 317 762 p
+ 318 762 p
+ 311 762 p
+ 30 762 p
+ 11 762 p
+ 318 761 p
+ 317 761 p
+ 311 761 p
+ 377 761 p
+ 378 761 p
+ 29 761 p
+ 30 761 p
+ 319 760 p
+ 320 760 p
+ 321 760 p
+ 326 760 p
+ 325 760 p
+ 31 760 p
+ 13 760 p
+ 319 759 p
+ 320 759 p
+ 321 759 p
+ 1075 759 p
+ 1076 759 p
+ 13 759 p
+ 12 759 p
+ 319 758 p
+ 320 758 p
+ 321 758 p
+ 322 758 p
+ 315 758 p
+ 31 758 p
+ 12 758 p
+ 322 757 p
+ 321 757 p
+ 315 757 p
+ 380 757 p
+ 381 757 p
+ 30 757 p
+ 31 757 p
+ 323 756 p
+ 324 756 p
+ 325 756 p
+ 332 756 p
+ 330 756 p
+ 32 756 p
+ 14 756 p
+ 323 755 p
+ 324 755 p
+ 325 755 p
+ 1079 755 p
+ 993 755 p
+ 14 755 p
+ 13 755 p
+ 323 754 p
+ 324 754 p
+ 325 754 p
+ 326 754 p
+ 319 754 p
+ 32 754 p
+ 13 754 p
+ 326 753 p
+ 325 753 p
+ 319 753 p
+ 383 753 p
+ 384 753 p
+ 31 753 p
+ 32 753 p
+ 327 752 p
+ 328 752 p
+ 329 752 p
+ 330 752 p
+ 331 752 p
+ 15 752 p
+ 33 752 p
+ 327 751 p
+ 328 751 p
+ 329 751 p
+ 336 751 p
+ 333 751 p
+ 33 751 p
+ 16 751 p
+ 327 750 p
+ 328 750 p
+ 329 750 p
+ 927 750 p
+ 932 750 p
+ 15 750 p
+ 16 750 p
+ 330 749 p
+ 327 749 p
+ 331 749 p
+ 323 749 p
+ 332 749 p
+ 14 749 p
+ 33 749 p
+ 330 748 p
+ 327 748 p
+ 331 748 p
+ 932 748 p
+ 933 748 p
+ 14 748 p
+ 15 748 p
+ 323 747 p
+ 332 747 p
+ 330 747 p
+ 386 747 p
+ 387 747 p
+ 32 747 p
+ 33 747 p
+ 333 746 p
+ 334 746 p
+ 335 746 p
+ 328 746 p
+ 336 746 p
+ 16 746 p
+ 34 746 p
+ 333 745 p
+ 334 745 p
+ 335 745 p
+ 337 745 p
+ 338 745 p
+ 34 745 p
+ 17 745 p
+ 333 744 p
+ 334 744 p
+ 335 744 p
+ 777 744 p
+ 901 744 p
+ 16 744 p
+ 17 744 p
+ 328 743 p
+ 336 743 p
+ 333 743 p
+ 389 743 p
+ 390 743 p
+ 33 743 p
+ 34 743 p
+ 334 742 p
+ 337 742 p
+ 338 742 p
+ 392 742 p
+ 393 742 p
+ 34 742 p
+ 35 742 p
+ 334 741 p
+ 337 741 p
+ 338 741 p
+ 342 741 p
+ 339 741 p
+ 17 741 p
+ 35 741 p
+ 339 740 p
+ 340 740 p
+ 341 740 p
+ 338 740 p
+ 342 740 p
+ 17 740 p
+ 36 740 p
+ 339 739 p
+ 340 739 p
+ 341 739 p
+ 346 739 p
+ 343 739 p
+ 36 739 p
+ 18 739 p
+ 339 738 p
+ 340 738 p
+ 341 738 p
+ 710 738 p
+ 776 738 p
+ 17 738 p
+ 18 738 p
+ 338 737 p
+ 342 737 p
+ 339 737 p
+ 395 737 p
+ 396 737 p
+ 35 737 p
+ 36 737 p
+ 343 736 p
+ 344 736 p
+ 345 736 p
+ 340 736 p
+ 346 736 p
+ 18 736 p
+ 37 736 p
+ 343 735 p
+ 344 735 p
+ 345 735 p
+ 350 735 p
+ 347 735 p
+ 37 735 p
+ 19 735 p
+ 343 734 p
+ 344 734 p
+ 345 734 p
+ 552 734 p
+ 650 734 p
+ 18 734 p
+ 19 734 p
+ 340 733 p
+ 346 733 p
+ 343 733 p
+ 401 733 p
+ 400 733 p
+ 36 733 p
+ 37 733 p
+ 347 732 p
+ 348 732 p
+ 349 732 p
+ 344 732 p
+ 350 732 p
+ 19 732 p
+ 38 732 p
+ 347 731 p
+ 348 731 p
+ 349 731 p
+ 353 731 p
+ 354 731 p
+ 38 731 p
+ 20 731 p
+ 347 730 p
+ 348 730 p
+ 349 730 p
+ 499 730 p
+ 502 730 p
+ 19 730 p
+ 20 730 p
+ 344 729 p
+ 350 729 p
+ 347 729 p
+ 400 729 p
+ 399 729 p
+ 37 729 p
+ 38 729 p
+ 351 728 p
+ 352 728 p
+ 353 728 p
+ 398 728 p
+ 399 728 p
+ 38 728 p
+ 2 728 p
+ 351 727 p
+ 352 727 p
+ 353 727 p
+ 2 727 p
+ 39 727 p
+ 351 726 p
+ 352 726 p
+ 353 726 p
+ 348 726 p
+ 354 726 p
+ 38 726 p
+ 39 726 p
+ 354 725 p
+ 355 725 p
+ 356 725 p
+ 348 725 p
+ 353 725 p
+ 20 725 p
+ 39 725 p
+ 354 724 p
+ 355 724 p
+ 356 724 p
+ 39 724 p
+ 21 724 p
+ 354 723 p
+ 355 723 p
+ 356 723 p
+ 403 723 p
+ 404 723 p
+ 20 723 p
+ 21 723 p
+ 357 722 p
+ 289 722 p
+ 358 722 p
+ 361 722 p
+ 360 722 p
+ 40 722 p
+ 23 722 p
+ 357 721 p
+ 289 721 p
+ 358 721 p
+ 40 721 p
+ 22 721 p
+ 359 720 p
+ 294 720 p
+ 360 720 p
+ 364 720 p
+ 363 720 p
+ 41 720 p
+ 24 720 p
+ 359 719 p
+ 294 719 p
+ 360 719 p
+ 361 719 p
+ 357 719 p
+ 41 719 p
+ 23 719 p
+ 361 718 p
+ 360 718 p
+ 357 718 p
+ 405 718 p
+ 406 718 p
+ 40 718 p
+ 41 718 p
+ 362 717 p
+ 298 717 p
+ 363 717 p
+ 367 717 p
+ 366 717 p
+ 42 717 p
+ 25 717 p
+ 362 716 p
+ 298 716 p
+ 363 716 p
+ 364 716 p
+ 359 716 p
+ 42 716 p
+ 24 716 p
+ 364 715 p
+ 363 715 p
+ 359 715 p
+ 409 715 p
+ 410 715 p
+ 41 715 p
+ 42 715 p
+ 365 714 p
+ 302 714 p
+ 366 714 p
+ 370 714 p
+ 369 714 p
+ 43 714 p
+ 26 714 p
+ 365 713 p
+ 302 713 p
+ 366 713 p
+ 367 713 p
+ 362 713 p
+ 43 713 p
+ 25 713 p
+ 367 712 p
+ 366 712 p
+ 362 712 p
+ 412 712 p
+ 413 712 p
+ 42 712 p
+ 43 712 p
+ 368 711 p
+ 306 711 p
+ 369 711 p
+ 373 711 p
+ 372 711 p
+ 44 711 p
+ 27 711 p
+ 368 710 p
+ 306 710 p
+ 369 710 p
+ 370 710 p
+ 365 710 p
+ 44 710 p
+ 26 710 p
+ 370 709 p
+ 369 709 p
+ 365 709 p
+ 415 709 p
+ 416 709 p
+ 43 709 p
+ 44 709 p
+ 371 708 p
+ 310 708 p
+ 372 708 p
+ 376 708 p
+ 375 708 p
+ 45 708 p
+ 28 708 p
+ 371 707 p
+ 310 707 p
+ 372 707 p
+ 373 707 p
+ 368 707 p
+ 45 707 p
+ 27 707 p
+ 373 706 p
+ 372 706 p
+ 368 706 p
+ 418 706 p
+ 419 706 p
+ 44 706 p
+ 45 706 p
+ 374 705 p
+ 314 705 p
+ 375 705 p
+ 379 705 p
+ 378 705 p
+ 46 705 p
+ 29 705 p
+ 374 704 p
+ 314 704 p
+ 375 704 p
+ 376 704 p
+ 371 704 p
+ 46 704 p
+ 28 704 p
+ 376 703 p
+ 375 703 p
+ 371 703 p
+ 422 703 p
+ 423 703 p
+ 45 703 p
+ 46 703 p
+ 377 702 p
+ 318 702 p
+ 378 702 p
+ 382 702 p
+ 381 702 p
+ 47 702 p
+ 30 702 p
+ 377 701 p
+ 318 701 p
+ 378 701 p
+ 379 701 p
+ 374 701 p
+ 47 701 p
+ 29 701 p
+ 379 700 p
+ 378 700 p
+ 374 700 p
+ 421 700 p
+ 422 700 p
+ 46 700 p
+ 47 700 p
+ 380 699 p
+ 322 699 p
+ 381 699 p
+ 385 699 p
+ 384 699 p
+ 48 699 p
+ 31 699 p
+ 380 698 p
+ 322 698 p
+ 381 698 p
+ 382 698 p
+ 377 698 p
+ 48 698 p
+ 30 698 p
+ 382 697 p
+ 381 697 p
+ 377 697 p
+ 427 697 p
+ 428 697 p
+ 47 697 p
+ 48 697 p
+ 383 696 p
+ 326 696 p
+ 384 696 p
+ 388 696 p
+ 387 696 p
+ 49 696 p
+ 32 696 p
+ 383 695 p
+ 326 695 p
+ 384 695 p
+ 385 695 p
+ 380 695 p
+ 49 695 p
+ 31 695 p
+ 385 694 p
+ 384 694 p
+ 380 694 p
+ 430 694 p
+ 431 694 p
+ 48 694 p
+ 49 694 p
+ 386 693 p
+ 332 693 p
+ 387 693 p
+ 391 693 p
+ 390 693 p
+ 50 693 p
+ 33 693 p
+ 386 692 p
+ 332 692 p
+ 387 692 p
+ 388 692 p
+ 383 692 p
+ 50 692 p
+ 32 692 p
+ 388 691 p
+ 387 691 p
+ 383 691 p
+ 433 691 p
+ 434 691 p
+ 49 691 p
+ 50 691 p
+ 389 690 p
+ 336 690 p
+ 390 690 p
+ 394 690 p
+ 393 690 p
+ 51 690 p
+ 34 690 p
+ 389 689 p
+ 336 689 p
+ 390 689 p
+ 391 689 p
+ 386 689 p
+ 51 689 p
+ 33 689 p
+ 391 688 p
+ 390 688 p
+ 386 688 p
+ 436 688 p
+ 433 688 p
+ 50 688 p
+ 51 688 p
+ 392 687 p
+ 337 687 p
+ 393 687 p
+ 397 687 p
+ 396 687 p
+ 52 687 p
+ 35 687 p
+ 392 686 p
+ 337 686 p
+ 393 686 p
+ 394 686 p
+ 389 686 p
+ 52 686 p
+ 34 686 p
+ 394 685 p
+ 393 685 p
+ 389 685 p
+ 438 685 p
+ 440 685 p
+ 51 685 p
+ 52 685 p
+ 395 684 p
+ 342 684 p
+ 396 684 p
+ 402 684 p
+ 401 684 p
+ 53 684 p
+ 36 684 p
+ 395 683 p
+ 342 683 p
+ 396 683 p
+ 397 683 p
+ 392 683 p
+ 53 683 p
+ 35 683 p
+ 397 682 p
+ 396 682 p
+ 392 682 p
+ 437 682 p
+ 438 682 p
+ 52 682 p
+ 53 682 p
+ 398 681 p
+ 351 681 p
+ 399 681 p
+ 54 681 p
+ 2 681 p
+ 398 680 p
+ 351 680 p
+ 399 680 p
+ 400 680 p
+ 350 680 p
+ 54 680 p
+ 38 680 p
+ 400 679 p
+ 399 679 p
+ 350 679 p
+ 401 679 p
+ 346 679 p
+ 37 679 p
+ 54 679 p
+ 401 678 p
+ 400 678 p
+ 346 678 p
+ 395 678 p
+ 402 678 p
+ 36 678 p
+ 54 678 p
+ 395 677 p
+ 402 677 p
+ 401 677 p
+ 437 677 p
+ 439 677 p
+ 53 677 p
+ 54 677 p
+ 356 676 p
+ 403 676 p
+ 404 676 p
+ 21 676 p
+ 285 676 p
+ 356 675 p
+ 403 675 p
+ 404 675 p
+ 498 675 p
+ 499 675 p
+ 20 675 p
+ 285 675 p
+ 405 674 p
+ 361 674 p
+ 406 674 p
+ 411 674 p
+ 410 674 p
+ 56 674 p
+ 41 674 p
+ 405 673 p
+ 361 673 p
+ 406 673 p
+ 407 673 p
+ 408 673 p
+ 56 673 p
+ 40 673 p
+ 407 672 p
+ 406 672 p
+ 408 672 p
+ 442 672 p
+ 443 672 p
+ 55 672 p
+ 56 672 p
+ 407 671 p
+ 406 671 p
+ 408 671 p
+ 55 671 p
+ 40 671 p
+ 409 670 p
+ 364 670 p
+ 410 670 p
+ 414 670 p
+ 413 670 p
+ 57 670 p
+ 42 670 p
+ 409 669 p
+ 364 669 p
+ 410 669 p
+ 411 669 p
+ 405 669 p
+ 57 669 p
+ 41 669 p
+ 411 668 p
+ 410 668 p
+ 405 668 p
+ 446 668 p
+ 447 668 p
+ 56 668 p
+ 57 668 p
+ 412 667 p
+ 367 667 p
+ 413 667 p
+ 417 667 p
+ 416 667 p
+ 58 667 p
+ 43 667 p
+ 412 666 p
+ 367 666 p
+ 413 666 p
+ 414 666 p
+ 409 666 p
+ 58 666 p
+ 42 666 p
+ 414 665 p
+ 413 665 p
+ 409 665 p
+ 449 665 p
+ 450 665 p
+ 57 665 p
+ 58 665 p
+ 415 664 p
+ 370 664 p
+ 416 664 p
+ 420 664 p
+ 419 664 p
+ 59 664 p
+ 44 664 p
+ 415 663 p
+ 370 663 p
+ 416 663 p
+ 417 663 p
+ 412 663 p
+ 59 663 p
+ 43 663 p
+ 417 662 p
+ 416 662 p
+ 412 662 p
+ 452 662 p
+ 453 662 p
+ 58 662 p
+ 59 662 p
+ 418 661 p
+ 373 661 p
+ 419 661 p
+ 424 661 p
+ 423 661 p
+ 60 661 p
+ 45 661 p
+ 418 660 p
+ 373 660 p
+ 419 660 p
+ 420 660 p
+ 415 660 p
+ 60 660 p
+ 44 660 p
+ 420 659 p
+ 419 659 p
+ 415 659 p
+ 455 659 p
+ 456 659 p
+ 59 659 p
+ 60 659 p
+ 421 658 p
+ 379 658 p
+ 422 658 p
+ 425 658 p
+ 426 658 p
+ 61 658 p
+ 47 658 p
+ 421 657 p
+ 379 657 p
+ 422 657 p
+ 376 657 p
+ 423 657 p
+ 61 657 p
+ 46 657 p
+ 422 656 p
+ 376 656 p
+ 423 656 p
+ 424 656 p
+ 418 656 p
+ 61 656 p
+ 45 656 p
+ 424 655 p
+ 423 655 p
+ 418 655 p
+ 459 655 p
+ 460 655 p
+ 60 655 p
+ 61 655 p
+ 425 654 p
+ 426 654 p
+ 421 654 p
+ 458 654 p
+ 459 654 p
+ 61 654 p
+ 62 654 p
+ 425 653 p
+ 426 653 p
+ 421 653 p
+ 429 653 p
+ 428 653 p
+ 62 653 p
+ 47 653 p
+ 427 652 p
+ 382 652 p
+ 428 652 p
+ 432 652 p
+ 431 652 p
+ 63 652 p
+ 48 652 p
+ 427 651 p
+ 382 651 p
+ 428 651 p
+ 429 651 p
+ 426 651 p
+ 63 651 p
+ 47 651 p
+ 429 650 p
+ 428 650 p
+ 426 650 p
+ 462 650 p
+ 463 650 p
+ 62 650 p
+ 63 650 p
+ 430 649 p
+ 385 649 p
+ 431 649 p
+ 435 649 p
+ 434 649 p
+ 64 649 p
+ 49 649 p
+ 430 648 p
+ 385 648 p
+ 431 648 p
+ 432 648 p
+ 427 648 p
+ 64 648 p
+ 48 648 p
+ 432 647 p
+ 431 647 p
+ 427 647 p
+ 465 647 p
+ 466 647 p
+ 63 647 p
+ 64 647 p
+ 433 646 p
+ 388 646 p
+ 434 646 p
+ 436 646 p
+ 391 646 p
+ 65 646 p
+ 50 646 p
+ 433 645 p
+ 388 645 p
+ 434 645 p
+ 435 645 p
+ 430 645 p
+ 65 645 p
+ 49 645 p
+ 435 644 p
+ 434 644 p
+ 430 644 p
+ 468 644 p
+ 469 644 p
+ 64 644 p
+ 65 644 p
+ 436 643 p
+ 391 643 p
+ 433 643 p
+ 441 643 p
+ 440 643 p
+ 65 643 p
+ 51 643 p
+ 437 642 p
+ 397 642 p
+ 438 642 p
+ 402 642 p
+ 439 642 p
+ 66 642 p
+ 53 642 p
+ 437 641 p
+ 397 641 p
+ 438 641 p
+ 394 641 p
+ 440 641 p
+ 66 641 p
+ 52 641 p
+ 402 640 p
+ 437 640 p
+ 439 640 p
+ 54 640 p
+ 66 640 p
+ 438 639 p
+ 394 639 p
+ 440 639 p
+ 441 639 p
+ 436 639 p
+ 66 639 p
+ 51 639 p
+ 441 638 p
+ 440 638 p
+ 436 638 p
+ 468 638 p
+ 471 638 p
+ 65 638 p
+ 66 638 p
+ 442 637 p
+ 407 637 p
+ 443 637 p
+ 448 637 p
+ 447 637 p
+ 68 637 p
+ 56 637 p
+ 442 636 p
+ 407 636 p
+ 443 636 p
+ 444 636 p
+ 445 636 p
+ 68 636 p
+ 55 636 p
+ 444 635 p
+ 443 635 p
+ 445 635 p
+ 472 635 p
+ 473 635 p
+ 67 635 p
+ 68 635 p
+ 444 634 p
+ 443 634 p
+ 445 634 p
+ 67 634 p
+ 55 634 p
+ 446 633 p
+ 411 633 p
+ 447 633 p
+ 451 633 p
+ 450 633 p
+ 69 633 p
+ 57 633 p
+ 446 632 p
+ 411 632 p
+ 447 632 p
+ 448 632 p
+ 442 632 p
+ 69 632 p
+ 56 632 p
+ 448 631 p
+ 447 631 p
+ 442 631 p
+ 476 631 p
+ 472 631 p
+ 68 631 p
+ 69 631 p
+ 449 630 p
+ 414 630 p
+ 450 630 p
+ 454 630 p
+ 453 630 p
+ 70 630 p
+ 58 630 p
+ 449 629 p
+ 414 629 p
+ 450 629 p
+ 451 629 p
+ 446 629 p
+ 70 629 p
+ 57 629 p
+ 451 628 p
+ 450 628 p
+ 446 628 p
+ 480 628 p
+ 481 628 p
+ 69 628 p
+ 70 628 p
+ 452 627 p
+ 417 627 p
+ 453 627 p
+ 457 627 p
+ 456 627 p
+ 71 627 p
+ 59 627 p
+ 452 626 p
+ 417 626 p
+ 453 626 p
+ 454 626 p
+ 449 626 p
+ 71 626 p
+ 58 626 p
+ 454 625 p
+ 453 625 p
+ 449 625 p
+ 479 625 p
+ 480 625 p
+ 70 625 p
+ 71 625 p
+ 455 624 p
+ 420 624 p
+ 456 624 p
+ 461 624 p
+ 460 624 p
+ 72 624 p
+ 60 624 p
+ 455 623 p
+ 420 623 p
+ 456 623 p
+ 457 623 p
+ 452 623 p
+ 72 623 p
+ 59 623 p
+ 457 622 p
+ 456 622 p
+ 452 622 p
+ 483 622 p
+ 484 622 p
+ 71 622 p
+ 72 622 p
+ 458 621 p
+ 425 621 p
+ 459 621 p
+ 464 621 p
+ 463 621 p
+ 73 621 p
+ 62 621 p
+ 458 620 p
+ 425 620 p
+ 459 620 p
+ 424 620 p
+ 460 620 p
+ 73 620 p
+ 61 620 p
+ 459 619 p
+ 424 619 p
+ 460 619 p
+ 461 619 p
+ 455 619 p
+ 73 619 p
+ 60 619 p
+ 461 618 p
+ 460 618 p
+ 455 618 p
+ 486 618 p
+ 487 618 p
+ 72 618 p
+ 73 618 p
+ 462 617 p
+ 429 617 p
+ 463 617 p
+ 467 617 p
+ 466 617 p
+ 74 617 p
+ 63 617 p
+ 462 616 p
+ 429 616 p
+ 463 616 p
+ 464 616 p
+ 458 616 p
+ 74 616 p
+ 62 616 p
+ 464 615 p
+ 463 615 p
+ 458 615 p
+ 492 615 p
+ 493 615 p
+ 73 615 p
+ 74 615 p
+ 465 614 p
+ 432 614 p
+ 466 614 p
+ 470 614 p
+ 469 614 p
+ 75 614 p
+ 64 614 p
+ 465 613 p
+ 432 613 p
+ 466 613 p
+ 467 613 p
+ 462 613 p
+ 75 613 p
+ 63 613 p
+ 467 612 p
+ 466 612 p
+ 462 612 p
+ 491 612 p
+ 492 612 p
+ 74 612 p
+ 75 612 p
+ 468 611 p
+ 435 611 p
+ 469 611 p
+ 441 611 p
+ 471 611 p
+ 76 611 p
+ 65 611 p
+ 468 610 p
+ 435 610 p
+ 469 610 p
+ 470 610 p
+ 465 610 p
+ 76 610 p
+ 64 610 p
+ 470 609 p
+ 469 609 p
+ 465 609 p
+ 495 609 p
+ 497 609 p
+ 75 609 p
+ 76 609 p
+ 441 608 p
+ 468 608 p
+ 471 608 p
+ 66 608 p
+ 76 608 p
+ 472 607 p
+ 444 607 p
+ 473 607 p
+ 476 607 p
+ 448 607 p
+ 78 607 p
+ 68 607 p
+ 472 606 p
+ 444 606 p
+ 473 606 p
+ 474 606 p
+ 475 606 p
+ 78 606 p
+ 67 606 p
+ 474 605 p
+ 473 605 p
+ 475 605 p
+ 503 605 p
+ 504 605 p
+ 77 605 p
+ 78 605 p
+ 474 604 p
+ 473 604 p
+ 475 604 p
+ 77 604 p
+ 67 604 p
+ 476 603 p
+ 448 603 p
+ 472 603 p
+ 477 603 p
+ 478 603 p
+ 78 603 p
+ 69 603 p
+ 477 602 p
+ 478 602 p
+ 476 602 p
+ 507 602 p
+ 503 602 p
+ 78 602 p
+ 79 602 p
+ 477 601 p
+ 478 601 p
+ 476 601 p
+ 482 601 p
+ 481 601 p
+ 79 601 p
+ 69 601 p
+ 479 600 p
+ 454 600 p
+ 480 600 p
+ 485 600 p
+ 484 600 p
+ 80 600 p
+ 71 600 p
+ 479 599 p
+ 454 599 p
+ 480 599 p
+ 451 599 p
+ 481 599 p
+ 80 599 p
+ 70 599 p
+ 480 598 p
+ 451 598 p
+ 481 598 p
+ 482 598 p
+ 478 598 p
+ 80 598 p
+ 69 598 p
+ 482 597 p
+ 481 597 p
+ 478 597 p
+ 508 597 p
+ 509 597 p
+ 79 597 p
+ 80 597 p
+ 483 596 p
+ 457 596 p
+ 484 596 p
+ 488 596 p
+ 487 596 p
+ 81 596 p
+ 72 596 p
+ 483 595 p
+ 457 595 p
+ 484 595 p
+ 485 595 p
+ 479 595 p
+ 81 595 p
+ 71 595 p
+ 485 594 p
+ 484 594 p
+ 479 594 p
+ 511 594 p
+ 512 594 p
+ 80 594 p
+ 81 594 p
+ 486 593 p
+ 461 593 p
+ 487 593 p
+ 489 593 p
+ 490 593 p
+ 82 593 p
+ 73 593 p
+ 486 592 p
+ 461 592 p
+ 487 592 p
+ 488 592 p
+ 483 592 p
+ 82 592 p
+ 72 592 p
+ 488 591 p
+ 487 591 p
+ 483 591 p
+ 516 591 p
+ 517 591 p
+ 81 591 p
+ 82 591 p
+ 489 590 p
+ 490 590 p
+ 486 590 p
+ 519 590 p
+ 520 590 p
+ 82 590 p
+ 83 590 p
+ 489 589 p
+ 490 589 p
+ 486 589 p
+ 494 589 p
+ 493 589 p
+ 83 589 p
+ 73 589 p
+ 491 588 p
+ 467 588 p
+ 492 588 p
+ 495 588 p
+ 496 588 p
+ 84 588 p
+ 75 588 p
+ 491 587 p
+ 467 587 p
+ 492 587 p
+ 464 587 p
+ 493 587 p
+ 84 587 p
+ 74 587 p
+ 492 586 p
+ 464 586 p
+ 493 586 p
+ 494 586 p
+ 490 586 p
+ 84 586 p
+ 73 586 p
+ 494 585 p
+ 493 585 p
+ 490 585 p
+ 523 585 p
+ 524 585 p
+ 83 585 p
+ 84 585 p
+ 495 584 p
+ 491 584 p
+ 496 584 p
+ 470 584 p
+ 497 584 p
+ 85 584 p
+ 75 584 p
+ 495 583 p
+ 491 583 p
+ 496 583 p
+ 522 583 p
+ 523 583 p
+ 85 583 p
+ 84 583 p
+ 470 582 p
+ 495 582 p
+ 497 582 p
+ 76 582 p
+ 85 582 p
+ 404 581 p
+ 498 581 p
+ 499 581 p
+ 500 581 p
+ 501 581 p
+ 285 581 p
+ 284 581 p
+ 404 580 p
+ 498 580 p
+ 499 580 p
+ 349 580 p
+ 502 580 p
+ 20 580 p
+ 284 580 p
+ 498 579 p
+ 500 579 p
+ 501 579 p
+ 285 579 p
+ 1 579 p
+ 498 578 p
+ 500 578 p
+ 501 578 p
+ 602 578 p
+ 603 578 p
+ 284 578 p
+ 1 578 p
+ 349 577 p
+ 499 577 p
+ 502 577 p
+ 551 577 p
+ 552 577 p
+ 19 577 p
+ 284 577 p
+ 503 576 p
+ 474 576 p
+ 504 576 p
+ 507 576 p
+ 477 576 p
+ 87 576 p
+ 78 576 p
+ 503 575 p
+ 474 575 p
+ 504 575 p
+ 505 575 p
+ 506 575 p
+ 87 575 p
+ 77 575 p
+ 505 574 p
+ 504 574 p
+ 506 574 p
+ 528 574 p
+ 529 574 p
+ 86 574 p
+ 87 574 p
+ 505 573 p
+ 504 573 p
+ 506 573 p
+ 86 573 p
+ 77 573 p
+ 507 572 p
+ 477 572 p
+ 503 572 p
+ 510 572 p
+ 509 572 p
+ 87 572 p
+ 79 572 p
+ 508 571 p
+ 482 571 p
+ 509 571 p
+ 513 571 p
+ 512 571 p
+ 88 571 p
+ 80 571 p
+ 508 570 p
+ 482 570 p
+ 509 570 p
+ 510 570 p
+ 507 570 p
+ 88 570 p
+ 79 570 p
+ 510 569 p
+ 509 569 p
+ 507 569 p
+ 530 569 p
+ 531 569 p
+ 87 569 p
+ 88 569 p
+ 511 568 p
+ 485 568 p
+ 512 568 p
+ 514 568 p
+ 515 568 p
+ 89 568 p
+ 81 568 p
+ 511 567 p
+ 485 567 p
+ 512 567 p
+ 513 567 p
+ 508 567 p
+ 89 567 p
+ 80 567 p
+ 513 566 p
+ 512 566 p
+ 508 566 p
+ 533 566 p
+ 534 566 p
+ 88 566 p
+ 89 566 p
+ 514 565 p
+ 515 565 p
+ 511 565 p
+ 538 565 p
+ 539 565 p
+ 89 565 p
+ 90 565 p
+ 514 564 p
+ 515 564 p
+ 511 564 p
+ 518 564 p
+ 517 564 p
+ 90 564 p
+ 81 564 p
+ 516 563 p
+ 488 563 p
+ 517 563 p
+ 521 563 p
+ 520 563 p
+ 91 563 p
+ 82 563 p
+ 516 562 p
+ 488 562 p
+ 517 562 p
+ 518 562 p
+ 515 562 p
+ 91 562 p
+ 81 562 p
+ 518 561 p
+ 517 561 p
+ 515 561 p
+ 541 561 p
+ 542 561 p
+ 90 561 p
+ 91 561 p
+ 519 560 p
+ 489 560 p
+ 520 560 p
+ 525 560 p
+ 524 560 p
+ 92 560 p
+ 83 560 p
+ 519 559 p
+ 489 559 p
+ 520 559 p
+ 521 559 p
+ 516 559 p
+ 92 559 p
+ 82 559 p
+ 521 558 p
+ 520 558 p
+ 516 558 p
+ 545 558 p
+ 546 558 p
+ 91 558 p
+ 92 558 p
+ 522 557 p
+ 496 557 p
+ 523 557 p
+ 526 557 p
+ 527 557 p
+ 93 557 p
+ 85 557 p
+ 522 556 p
+ 496 556 p
+ 523 556 p
+ 494 556 p
+ 524 556 p
+ 93 556 p
+ 84 556 p
+ 523 555 p
+ 494 555 p
+ 524 555 p
+ 525 555 p
+ 519 555 p
+ 93 555 p
+ 83 555 p
+ 525 554 p
+ 524 554 p
+ 519 554 p
+ 544 554 p
+ 545 554 p
+ 92 554 p
+ 93 554 p
+ 526 553 p
+ 522 553 p
+ 527 553 p
+ 94 553 p
+ 85 553 p
+ 526 552 p
+ 522 552 p
+ 527 552 p
+ 548 552 p
+ 549 552 p
+ 94 552 p
+ 93 552 p
+ 528 551 p
+ 505 551 p
+ 529 551 p
+ 532 551 p
+ 531 551 p
+ 95 551 p
+ 87 551 p
+ 528 550 p
+ 505 550 p
+ 529 550 p
+ 95 550 p
+ 86 550 p
+ 530 549 p
+ 510 549 p
+ 531 549 p
+ 535 549 p
+ 534 549 p
+ 96 549 p
+ 88 549 p
+ 530 548 p
+ 510 548 p
+ 531 548 p
+ 532 548 p
+ 528 548 p
+ 96 548 p
+ 87 548 p
+ 532 547 p
+ 531 547 p
+ 528 547 p
+ 553 547 p
+ 554 547 p
+ 95 547 p
+ 96 547 p
+ 533 546 p
+ 513 546 p
+ 534 546 p
+ 536 546 p
+ 537 546 p
+ 97 546 p
+ 89 546 p
+ 533 545 p
+ 513 545 p
+ 534 545 p
+ 535 545 p
+ 530 545 p
+ 97 545 p
+ 88 545 p
+ 535 544 p
+ 534 544 p
+ 530 544 p
+ 557 544 p
+ 558 544 p
+ 96 544 p
+ 97 544 p
+ 536 543 p
+ 537 543 p
+ 533 543 p
+ 560 543 p
+ 561 543 p
+ 97 543 p
+ 98 543 p
+ 536 542 p
+ 537 542 p
+ 533 542 p
+ 540 542 p
+ 539 542 p
+ 98 542 p
+ 89 542 p
+ 538 541 p
+ 514 541 p
+ 539 541 p
+ 543 541 p
+ 542 541 p
+ 99 541 p
+ 90 541 p
+ 538 540 p
+ 514 540 p
+ 539 540 p
+ 540 540 p
+ 537 540 p
+ 99 540 p
+ 89 540 p
+ 540 539 p
+ 539 539 p
+ 537 539 p
+ 564 539 p
+ 565 539 p
+ 98 539 p
+ 99 539 p
+ 541 538 p
+ 518 538 p
+ 542 538 p
+ 547 538 p
+ 546 538 p
+ 100 538 p
+ 91 538 p
+ 541 537 p
+ 518 537 p
+ 542 537 p
+ 543 537 p
+ 538 537 p
+ 100 537 p
+ 90 537 p
+ 543 536 p
+ 542 536 p
+ 538 536 p
+ 563 536 p
+ 564 536 p
+ 99 536 p
+ 100 536 p
+ 544 535 p
+ 525 535 p
+ 545 535 p
+ 550 535 p
+ 549 535 p
+ 101 535 p
+ 93 535 p
+ 544 534 p
+ 525 534 p
+ 545 534 p
+ 521 534 p
+ 546 534 p
+ 101 534 p
+ 92 534 p
+ 545 533 p
+ 521 533 p
+ 546 533 p
+ 547 533 p
+ 541 533 p
+ 101 533 p
+ 91 533 p
+ 547 532 p
+ 546 532 p
+ 541 532 p
+ 567 532 p
+ 568 532 p
+ 100 532 p
+ 101 532 p
+ 548 531 p
+ 527 531 p
+ 549 531 p
+ 102 531 p
+ 94 531 p
+ 548 530 p
+ 527 530 p
+ 549 530 p
+ 550 530 p
+ 544 530 p
+ 102 530 p
+ 93 530 p
+ 550 529 p
+ 549 529 p
+ 544 529 p
+ 570 529 p
+ 571 529 p
+ 101 529 p
+ 102 529 p
+ 502 528 p
+ 551 528 p
+ 552 528 p
+ 601 528 p
+ 602 528 p
+ 284 528 p
+ 283 528 p
+ 502 527 p
+ 551 527 p
+ 552 527 p
+ 345 527 p
+ 650 527 p
+ 19 527 p
+ 283 527 p
+ 553 526 p
+ 532 526 p
+ 554 526 p
+ 559 526 p
+ 558 526 p
+ 104 526 p
+ 96 526 p
+ 553 525 p
+ 532 525 p
+ 554 525 p
+ 555 525 p
+ 556 525 p
+ 104 525 p
+ 95 525 p
+ 555 524 p
+ 554 524 p
+ 556 524 p
+ 575 524 p
+ 576 524 p
+ 103 524 p
+ 104 524 p
+ 555 523 p
+ 554 523 p
+ 556 523 p
+ 103 523 p
+ 95 523 p
+ 557 522 p
+ 535 522 p
+ 558 522 p
+ 562 522 p
+ 561 522 p
+ 105 522 p
+ 97 522 p
+ 557 521 p
+ 535 521 p
+ 558 521 p
+ 559 521 p
+ 553 521 p
+ 105 521 p
+ 96 521 p
+ 559 520 p
+ 558 520 p
+ 553 520 p
+ 577 520 p
+ 578 520 p
+ 104 520 p
+ 105 520 p
+ 560 519 p
+ 536 519 p
+ 561 519 p
+ 566 519 p
+ 565 519 p
+ 106 519 p
+ 98 519 p
+ 560 518 p
+ 536 518 p
+ 561 518 p
+ 562 518 p
+ 557 518 p
+ 106 518 p
+ 97 518 p
+ 562 517 p
+ 561 517 p
+ 557 517 p
+ 580 517 p
+ 581 517 p
+ 105 517 p
+ 106 517 p
+ 563 516 p
+ 543 516 p
+ 564 516 p
+ 569 516 p
+ 568 516 p
+ 107 516 p
+ 100 516 p
+ 563 515 p
+ 543 515 p
+ 564 515 p
+ 540 515 p
+ 565 515 p
+ 107 515 p
+ 99 515 p
+ 564 514 p
+ 540 514 p
+ 565 514 p
+ 566 514 p
+ 560 514 p
+ 107 514 p
+ 98 514 p
+ 566 513 p
+ 565 513 p
+ 560 513 p
+ 583 513 p
+ 584 513 p
+ 106 513 p
+ 107 513 p
+ 567 512 p
+ 547 512 p
+ 568 512 p
+ 572 512 p
+ 571 512 p
+ 108 512 p
+ 101 512 p
+ 567 511 p
+ 547 511 p
+ 568 511 p
+ 569 511 p
+ 563 511 p
+ 108 511 p
+ 100 511 p
+ 569 510 p
+ 568 510 p
+ 563 510 p
+ 586 510 p
+ 587 510 p
+ 107 510 p
+ 108 510 p
+ 570 509 p
+ 550 509 p
+ 571 509 p
+ 573 509 p
+ 574 509 p
+ 109 509 p
+ 102 509 p
+ 570 508 p
+ 550 508 p
+ 571 508 p
+ 572 508 p
+ 567 508 p
+ 109 508 p
+ 101 508 p
+ 572 507 p
+ 571 507 p
+ 567 507 p
+ 591 507 p
+ 592 507 p
+ 108 507 p
+ 109 507 p
+ 573 506 p
+ 570 506 p
+ 574 506 p
+ 110 506 p
+ 102 506 p
+ 573 505 p
+ 570 505 p
+ 574 505 p
+ 594 505 p
+ 595 505 p
+ 110 505 p
+ 109 505 p
+ 575 504 p
+ 555 504 p
+ 576 504 p
+ 579 504 p
+ 578 504 p
+ 111 504 p
+ 104 504 p
+ 575 503 p
+ 555 503 p
+ 576 503 p
+ 111 503 p
+ 103 503 p
+ 577 502 p
+ 559 502 p
+ 578 502 p
+ 582 502 p
+ 581 502 p
+ 112 502 p
+ 105 502 p
+ 577 501 p
+ 559 501 p
+ 578 501 p
+ 579 501 p
+ 575 501 p
+ 112 501 p
+ 104 501 p
+ 579 500 p
+ 578 500 p
+ 575 500 p
+ 604 500 p
+ 605 500 p
+ 111 500 p
+ 112 500 p
+ 580 499 p
+ 562 499 p
+ 581 499 p
+ 585 499 p
+ 584 499 p
+ 113 499 p
+ 106 499 p
+ 580 498 p
+ 562 498 p
+ 581 498 p
+ 582 498 p
+ 577 498 p
+ 113 498 p
+ 105 498 p
+ 582 497 p
+ 581 497 p
+ 577 497 p
+ 608 497 p
+ 609 497 p
+ 112 497 p
+ 113 497 p
+ 583 496 p
+ 566 496 p
+ 584 496 p
+ 588 496 p
+ 587 496 p
+ 114 496 p
+ 107 496 p
+ 583 495 p
+ 566 495 p
+ 584 495 p
+ 585 495 p
+ 580 495 p
+ 114 495 p
+ 106 495 p
+ 585 494 p
+ 584 494 p
+ 580 494 p
+ 611 494 p
+ 612 494 p
+ 113 494 p
+ 114 494 p
+ 586 493 p
+ 569 493 p
+ 587 493 p
+ 589 493 p
+ 590 493 p
+ 115 493 p
+ 108 493 p
+ 586 492 p
+ 569 492 p
+ 587 492 p
+ 588 492 p
+ 583 492 p
+ 115 492 p
+ 107 492 p
+ 588 491 p
+ 587 491 p
+ 583 491 p
+ 614 491 p
+ 615 491 p
+ 114 491 p
+ 115 491 p
+ 589 490 p
+ 590 490 p
+ 586 490 p
+ 618 490 p
+ 619 490 p
+ 115 490 p
+ 116 490 p
+ 589 489 p
+ 590 489 p
+ 586 489 p
+ 593 489 p
+ 592 489 p
+ 116 489 p
+ 108 489 p
+ 591 488 p
+ 572 488 p
+ 592 488 p
+ 596 488 p
+ 595 488 p
+ 117 488 p
+ 109 488 p
+ 591 487 p
+ 572 487 p
+ 592 487 p
+ 593 487 p
+ 590 487 p
+ 117 487 p
+ 108 487 p
+ 593 486 p
+ 592 486 p
+ 590 486 p
+ 617 486 p
+ 618 486 p
+ 116 486 p
+ 117 486 p
+ 594 485 p
+ 574 485 p
+ 595 485 p
+ 597 485 p
+ 598 485 p
+ 118 485 p
+ 110 485 p
+ 594 484 p
+ 574 484 p
+ 595 484 p
+ 596 484 p
+ 591 484 p
+ 118 484 p
+ 109 484 p
+ 596 483 p
+ 595 483 p
+ 591 483 p
+ 621 483 p
+ 622 483 p
+ 117 483 p
+ 118 483 p
+ 597 482 p
+ 594 482 p
+ 598 482 p
+ 119 482 p
+ 110 482 p
+ 597 481 p
+ 594 481 p
+ 598 481 p
+ 599 481 p
+ 600 481 p
+ 119 481 p
+ 118 481 p
+ 599 480 p
+ 598 480 p
+ 600 480 p
+ 3 480 p
+ 119 480 p
+ 599 479 p
+ 598 479 p
+ 600 479 p
+ 624 479 p
+ 626 479 p
+ 3 479 p
+ 118 479 p
+ 601 478 p
+ 551 478 p
+ 602 478 p
+ 708 478 p
+ 668 478 p
+ 267 478 p
+ 283 478 p
+ 601 477 p
+ 551 477 p
+ 602 477 p
+ 501 477 p
+ 603 477 p
+ 267 477 p
+ 284 477 p
+ 602 476 p
+ 501 476 p
+ 603 476 p
+ 267 476 p
+ 1 476 p
+ 604 475 p
+ 579 475 p
+ 605 475 p
+ 610 475 p
+ 609 475 p
+ 121 475 p
+ 112 475 p
+ 604 474 p
+ 579 474 p
+ 605 474 p
+ 606 474 p
+ 607 474 p
+ 121 474 p
+ 111 474 p
+ 606 473 p
+ 605 473 p
+ 607 473 p
+ 630 473 p
+ 631 473 p
+ 120 473 p
+ 121 473 p
+ 606 472 p
+ 605 472 p
+ 607 472 p
+ 120 472 p
+ 111 472 p
+ 608 471 p
+ 582 471 p
+ 609 471 p
+ 613 471 p
+ 612 471 p
+ 122 471 p
+ 113 471 p
+ 608 470 p
+ 582 470 p
+ 609 470 p
+ 610 470 p
+ 604 470 p
+ 122 470 p
+ 112 470 p
+ 610 469 p
+ 609 469 p
+ 604 469 p
+ 632 469 p
+ 633 469 p
+ 121 469 p
+ 122 469 p
+ 611 468 p
+ 585 468 p
+ 612 468 p
+ 616 468 p
+ 615 468 p
+ 123 468 p
+ 114 468 p
+ 611 467 p
+ 585 467 p
+ 612 467 p
+ 613 467 p
+ 608 467 p
+ 123 467 p
+ 113 467 p
+ 613 466 p
+ 612 466 p
+ 608 466 p
+ 637 466 p
+ 638 466 p
+ 122 466 p
+ 123 466 p
+ 614 465 p
+ 588 465 p
+ 615 465 p
+ 620 465 p
+ 619 465 p
+ 124 465 p
+ 115 465 p
+ 614 464 p
+ 588 464 p
+ 615 464 p
+ 616 464 p
+ 611 464 p
+ 124 464 p
+ 114 464 p
+ 616 463 p
+ 615 463 p
+ 611 463 p
+ 640 463 p
+ 641 463 p
+ 123 463 p
+ 124 463 p
+ 617 462 p
+ 593 462 p
+ 618 462 p
+ 623 462 p
+ 622 462 p
+ 125 462 p
+ 117 462 p
+ 617 461 p
+ 593 461 p
+ 618 461 p
+ 589 461 p
+ 619 461 p
+ 125 461 p
+ 116 461 p
+ 618 460 p
+ 589 460 p
+ 619 460 p
+ 620 460 p
+ 614 460 p
+ 125 460 p
+ 115 460 p
+ 620 459 p
+ 619 459 p
+ 614 459 p
+ 644 459 p
+ 645 459 p
+ 124 459 p
+ 125 459 p
+ 621 458 p
+ 596 458 p
+ 622 458 p
+ 624 458 p
+ 625 458 p
+ 126 458 p
+ 118 458 p
+ 621 457 p
+ 596 457 p
+ 622 457 p
+ 623 457 p
+ 617 457 p
+ 126 457 p
+ 117 457 p
+ 623 456 p
+ 622 456 p
+ 617 456 p
+ 643 456 p
+ 644 456 p
+ 125 456 p
+ 126 456 p
+ 624 455 p
+ 621 455 p
+ 625 455 p
+ 600 455 p
+ 626 455 p
+ 127 455 p
+ 118 455 p
+ 624 454 p
+ 621 454 p
+ 625 454 p
+ 627 454 p
+ 628 454 p
+ 127 454 p
+ 126 454 p
+ 600 453 p
+ 624 453 p
+ 626 453 p
+ 629 453 p
+ 627 453 p
+ 3 453 p
+ 127 453 p
+ 627 452 p
+ 625 452 p
+ 628 452 p
+ 629 452 p
+ 626 452 p
+ 128 452 p
+ 127 452 p
+ 627 451 p
+ 625 451 p
+ 628 451 p
+ 647 451 p
+ 649 451 p
+ 128 451 p
+ 126 451 p
+ 629 450 p
+ 626 450 p
+ 627 450 p
+ 128 450 p
+ 3 450 p
+ 630 449 p
+ 606 449 p
+ 631 449 p
+ 634 449 p
+ 633 449 p
+ 129 449 p
+ 121 449 p
+ 630 448 p
+ 606 448 p
+ 631 448 p
+ 129 448 p
+ 120 448 p
+ 632 447 p
+ 610 447 p
+ 633 447 p
+ 635 447 p
+ 636 447 p
+ 130 447 p
+ 122 447 p
+ 632 446 p
+ 610 446 p
+ 633 446 p
+ 634 446 p
+ 630 446 p
+ 130 446 p
+ 121 446 p
+ 634 445 p
+ 633 445 p
+ 630 445 p
+ 651 445 p
+ 652 445 p
+ 129 445 p
+ 130 445 p
+ 635 444 p
+ 636 444 p
+ 632 444 p
+ 655 444 p
+ 656 444 p
+ 130 444 p
+ 131 444 p
+ 635 443 p
+ 636 443 p
+ 632 443 p
+ 639 443 p
+ 638 443 p
+ 131 443 p
+ 122 443 p
+ 637 442 p
+ 613 442 p
+ 638 442 p
+ 642 442 p
+ 641 442 p
+ 132 442 p
+ 123 442 p
+ 637 441 p
+ 613 441 p
+ 638 441 p
+ 639 441 p
+ 636 441 p
+ 132 441 p
+ 122 441 p
+ 639 440 p
+ 638 440 p
+ 636 440 p
+ 659 440 p
+ 660 440 p
+ 131 440 p
+ 132 440 p
+ 640 439 p
+ 616 439 p
+ 641 439 p
+ 646 439 p
+ 645 439 p
+ 133 439 p
+ 124 439 p
+ 640 438 p
+ 616 438 p
+ 641 438 p
+ 642 438 p
+ 637 438 p
+ 133 438 p
+ 123 438 p
+ 642 437 p
+ 641 437 p
+ 637 437 p
+ 658 437 p
+ 659 437 p
+ 132 437 p
+ 133 437 p
+ 643 436 p
+ 623 436 p
+ 644 436 p
+ 647 436 p
+ 648 436 p
+ 134 436 p
+ 126 436 p
+ 643 435 p
+ 623 435 p
+ 644 435 p
+ 620 435 p
+ 645 435 p
+ 134 435 p
+ 125 435 p
+ 644 434 p
+ 620 434 p
+ 645 434 p
+ 646 434 p
+ 640 434 p
+ 134 434 p
+ 124 434 p
+ 646 433 p
+ 645 433 p
+ 640 433 p
+ 662 433 p
+ 663 433 p
+ 133 433 p
+ 134 433 p
+ 647 432 p
+ 643 432 p
+ 648 432 p
+ 628 432 p
+ 649 432 p
+ 135 432 p
+ 126 432 p
+ 647 431 p
+ 643 431 p
+ 648 431 p
+ 665 431 p
+ 667 431 p
+ 135 431 p
+ 134 431 p
+ 628 430 p
+ 647 430 p
+ 649 430 p
+ 128 430 p
+ 135 430 p
+ 345 429 p
+ 552 429 p
+ 650 429 p
+ 668 429 p
+ 669 429 p
+ 18 429 p
+ 283 429 p
+ 651 428 p
+ 634 428 p
+ 652 428 p
+ 657 428 p
+ 656 428 p
+ 137 428 p
+ 130 428 p
+ 651 427 p
+ 634 427 p
+ 652 427 p
+ 653 427 p
+ 654 427 p
+ 137 427 p
+ 129 427 p
+ 653 426 p
+ 652 426 p
+ 654 426 p
+ 670 426 p
+ 671 426 p
+ 136 426 p
+ 137 426 p
+ 653 425 p
+ 652 425 p
+ 654 425 p
+ 136 425 p
+ 129 425 p
+ 655 424 p
+ 635 424 p
+ 656 424 p
+ 661 424 p
+ 660 424 p
+ 138 424 p
+ 131 424 p
+ 655 423 p
+ 635 423 p
+ 656 423 p
+ 657 423 p
+ 651 423 p
+ 138 423 p
+ 130 423 p
+ 657 422 p
+ 656 422 p
+ 651 422 p
+ 672 422 p
+ 673 422 p
+ 137 422 p
+ 138 422 p
+ 658 421 p
+ 642 421 p
+ 659 421 p
+ 664 421 p
+ 663 421 p
+ 139 421 p
+ 133 421 p
+ 658 420 p
+ 642 420 p
+ 659 420 p
+ 639 420 p
+ 660 420 p
+ 139 420 p
+ 132 420 p
+ 659 419 p
+ 639 419 p
+ 660 419 p
+ 661 419 p
+ 655 419 p
+ 139 419 p
+ 131 419 p
+ 661 418 p
+ 660 418 p
+ 655 418 p
+ 675 418 p
+ 676 418 p
+ 138 418 p
+ 139 418 p
+ 662 417 p
+ 646 417 p
+ 663 417 p
+ 665 417 p
+ 666 417 p
+ 140 417 p
+ 134 417 p
+ 662 416 p
+ 646 416 p
+ 663 416 p
+ 664 416 p
+ 658 416 p
+ 140 416 p
+ 133 416 p
+ 664 415 p
+ 663 415 p
+ 658 415 p
+ 678 415 p
+ 679 415 p
+ 139 415 p
+ 140 415 p
+ 665 414 p
+ 662 414 p
+ 666 414 p
+ 648 414 p
+ 667 414 p
+ 141 414 p
+ 134 414 p
+ 665 413 p
+ 662 413 p
+ 666 413 p
+ 681 413 p
+ 683 413 p
+ 141 413 p
+ 140 413 p
+ 648 412 p
+ 665 412 p
+ 667 412 p
+ 135 412 p
+ 141 412 p
+ 650 411 p
+ 668 411 p
+ 669 411 p
+ 708 411 p
+ 601 411 p
+ 283 411 p
+ 282 411 p
+ 650 410 p
+ 668 410 p
+ 669 410 p
+ 709 410 p
+ 710 410 p
+ 18 410 p
+ 282 410 p
+ 670 409 p
+ 653 409 p
+ 671 409 p
+ 674 409 p
+ 673 409 p
+ 142 409 p
+ 137 409 p
+ 670 408 p
+ 653 408 p
+ 671 408 p
+ 142 408 p
+ 136 408 p
+ 672 407 p
+ 657 407 p
+ 673 407 p
+ 677 407 p
+ 676 407 p
+ 143 407 p
+ 138 407 p
+ 672 406 p
+ 657 406 p
+ 673 406 p
+ 674 406 p
+ 670 406 p
+ 143 406 p
+ 137 406 p
+ 674 405 p
+ 673 405 p
+ 670 405 p
+ 684 405 p
+ 685 405 p
+ 142 405 p
+ 143 405 p
+ 675 404 p
+ 661 404 p
+ 676 404 p
+ 679 404 p
+ 680 404 p
+ 144 404 p
+ 139 404 p
+ 675 403 p
+ 661 403 p
+ 676 403 p
+ 677 403 p
+ 672 403 p
+ 144 403 p
+ 138 403 p
+ 677 402 p
+ 676 402 p
+ 672 402 p
+ 688 402 p
+ 684 402 p
+ 143 402 p
+ 144 402 p
+ 678 401 p
+ 664 401 p
+ 679 401 p
+ 681 401 p
+ 682 401 p
+ 145 401 p
+ 140 401 p
+ 678 400 p
+ 664 400 p
+ 679 400 p
+ 675 400 p
+ 680 400 p
+ 145 400 p
+ 139 400 p
+ 679 399 p
+ 675 399 p
+ 680 399 p
+ 692 399 p
+ 693 399 p
+ 145 399 p
+ 144 399 p
+ 681 398 p
+ 678 398 p
+ 682 398 p
+ 666 398 p
+ 683 398 p
+ 146 398 p
+ 140 398 p
+ 681 397 p
+ 678 397 p
+ 682 397 p
+ 691 397 p
+ 692 397 p
+ 146 397 p
+ 145 397 p
+ 666 396 p
+ 681 396 p
+ 683 396 p
+ 141 396 p
+ 146 396 p
+ 684 395 p
+ 674 395 p
+ 685 395 p
+ 688 395 p
+ 677 395 p
+ 148 395 p
+ 143 395 p
+ 684 394 p
+ 674 394 p
+ 685 394 p
+ 686 394 p
+ 687 394 p
+ 148 394 p
+ 142 394 p
+ 686 393 p
+ 685 393 p
+ 687 393 p
+ 697 393 p
+ 698 393 p
+ 147 393 p
+ 148 393 p
+ 686 392 p
+ 685 392 p
+ 687 392 p
+ 147 392 p
+ 142 392 p
+ 688 391 p
+ 677 391 p
+ 684 391 p
+ 689 391 p
+ 690 391 p
+ 148 391 p
+ 144 391 p
+ 689 390 p
+ 690 390 p
+ 688 390 p
+ 699 390 p
+ 700 390 p
+ 148 390 p
+ 149 390 p
+ 689 389 p
+ 690 389 p
+ 688 389 p
+ 694 389 p
+ 693 389 p
+ 149 389 p
+ 144 389 p
+ 691 388 p
+ 682 388 p
+ 692 388 p
+ 695 388 p
+ 696 388 p
+ 150 388 p
+ 146 388 p
+ 691 387 p
+ 682 387 p
+ 692 387 p
+ 680 387 p
+ 693 387 p
+ 150 387 p
+ 145 387 p
+ 692 386 p
+ 680 386 p
+ 693 386 p
+ 694 386 p
+ 690 386 p
+ 150 386 p
+ 144 386 p
+ 694 385 p
+ 693 385 p
+ 690 385 p
+ 702 385 p
+ 703 385 p
+ 149 385 p
+ 150 385 p
+ 695 384 p
+ 691 384 p
+ 696 384 p
+ 151 384 p
+ 146 384 p
+ 695 383 p
+ 691 383 p
+ 696 383 p
+ 705 383 p
+ 707 383 p
+ 151 383 p
+ 150 383 p
+ 697 382 p
+ 686 382 p
+ 698 382 p
+ 701 382 p
+ 700 382 p
+ 152 382 p
+ 148 382 p
+ 697 381 p
+ 686 381 p
+ 698 381 p
+ 152 381 p
+ 147 381 p
+ 699 380 p
+ 689 380 p
+ 700 380 p
+ 704 380 p
+ 703 380 p
+ 153 380 p
+ 149 380 p
+ 699 379 p
+ 689 379 p
+ 700 379 p
+ 701 379 p
+ 697 379 p
+ 153 379 p
+ 148 379 p
+ 701 378 p
+ 700 378 p
+ 697 378 p
+ 713 378 p
+ 714 378 p
+ 152 378 p
+ 153 378 p
+ 702 377 p
+ 694 377 p
+ 703 377 p
+ 705 377 p
+ 706 377 p
+ 154 377 p
+ 150 377 p
+ 702 376 p
+ 694 376 p
+ 703 376 p
+ 704 376 p
+ 699 376 p
+ 154 376 p
+ 149 376 p
+ 704 375 p
+ 703 375 p
+ 699 375 p
+ 715 375 p
+ 716 375 p
+ 153 375 p
+ 154 375 p
+ 705 374 p
+ 702 374 p
+ 706 374 p
+ 696 374 p
+ 707 374 p
+ 155 374 p
+ 150 374 p
+ 705 373 p
+ 702 373 p
+ 706 373 p
+ 720 373 p
+ 721 373 p
+ 155 373 p
+ 154 373 p
+ 696 372 p
+ 705 372 p
+ 707 372 p
+ 151 372 p
+ 155 372 p
+ 708 371 p
+ 668 371 p
+ 601 371 p
+ 753 371 p
+ 711 371 p
+ 267 371 p
+ 282 371 p
+ 669 370 p
+ 709 370 p
+ 710 370 p
+ 711 370 p
+ 712 370 p
+ 282 370 p
+ 281 370 p
+ 669 369 p
+ 709 369 p
+ 710 369 p
+ 341 369 p
+ 776 369 p
+ 18 369 p
+ 281 369 p
+ 709 368 p
+ 711 368 p
+ 712 368 p
+ 708 368 p
+ 753 368 p
+ 282 368 p
+ 266 368 p
+ 709 367 p
+ 711 367 p
+ 712 367 p
+ 757 367 p
+ 755 367 p
+ 281 367 p
+ 266 367 p
+ 713 366 p
+ 701 366 p
+ 714 366 p
+ 717 366 p
+ 716 366 p
+ 156 366 p
+ 153 366 p
+ 713 365 p
+ 701 365 p
+ 714 365 p
+ 156 365 p
+ 152 365 p
+ 715 364 p
+ 704 364 p
+ 716 364 p
+ 718 364 p
+ 719 364 p
+ 157 364 p
+ 154 364 p
+ 715 363 p
+ 704 363 p
+ 716 363 p
+ 717 363 p
+ 713 363 p
+ 157 363 p
+ 153 363 p
+ 717 362 p
+ 716 362 p
+ 713 362 p
+ 725 362 p
+ 726 362 p
+ 156 362 p
+ 157 362 p
+ 718 361 p
+ 719 361 p
+ 715 361 p
+ 729 361 p
+ 730 361 p
+ 157 361 p
+ 158 361 p
+ 718 360 p
+ 719 360 p
+ 715 360 p
+ 722 360 p
+ 721 360 p
+ 158 360 p
+ 154 360 p
+ 720 359 p
+ 706 359 p
+ 721 359 p
+ 723 359 p
+ 724 359 p
+ 159 359 p
+ 155 359 p
+ 720 358 p
+ 706 358 p
+ 721 358 p
+ 722 358 p
+ 719 358 p
+ 159 358 p
+ 154 358 p
+ 722 357 p
+ 721 357 p
+ 719 357 p
+ 732 357 p
+ 733 357 p
+ 158 357 p
+ 159 357 p
+ 723 356 p
+ 720 356 p
+ 724 356 p
+ 160 356 p
+ 155 356 p
+ 723 355 p
+ 720 355 p
+ 724 355 p
+ 735 355 p
+ 736 355 p
+ 160 355 p
+ 159 355 p
+ 725 354 p
+ 717 354 p
+ 726 354 p
+ 727 354 p
+ 728 354 p
+ 161 354 p
+ 157 354 p
+ 725 353 p
+ 717 353 p
+ 726 353 p
+ 161 353 p
+ 156 353 p
+ 727 352 p
+ 728 352 p
+ 725 352 p
+ 738 352 p
+ 739 352 p
+ 161 352 p
+ 162 352 p
+ 727 351 p
+ 728 351 p
+ 725 351 p
+ 731 351 p
+ 730 351 p
+ 162 351 p
+ 157 351 p
+ 729 350 p
+ 718 350 p
+ 730 350 p
+ 734 350 p
+ 733 350 p
+ 163 350 p
+ 158 350 p
+ 729 349 p
+ 718 349 p
+ 730 349 p
+ 731 349 p
+ 728 349 p
+ 163 349 p
+ 157 349 p
+ 731 348 p
+ 730 348 p
+ 728 348 p
+ 740 348 p
+ 741 348 p
+ 162 348 p
+ 163 348 p
+ 732 347 p
+ 722 347 p
+ 733 347 p
+ 737 347 p
+ 736 347 p
+ 164 347 p
+ 159 347 p
+ 732 346 p
+ 722 346 p
+ 733 346 p
+ 734 346 p
+ 729 346 p
+ 164 346 p
+ 158 346 p
+ 734 345 p
+ 733 345 p
+ 729 345 p
+ 743 345 p
+ 744 345 p
+ 163 345 p
+ 164 345 p
+ 735 344 p
+ 724 344 p
+ 736 344 p
+ 165 344 p
+ 160 344 p
+ 735 343 p
+ 724 343 p
+ 736 343 p
+ 737 343 p
+ 732 343 p
+ 165 343 p
+ 159 343 p
+ 737 342 p
+ 736 342 p
+ 732 342 p
+ 748 342 p
+ 749 342 p
+ 164 342 p
+ 165 342 p
+ 738 341 p
+ 727 341 p
+ 739 341 p
+ 742 341 p
+ 741 341 p
+ 166 341 p
+ 162 341 p
+ 738 340 p
+ 727 340 p
+ 739 340 p
+ 166 340 p
+ 161 340 p
+ 740 339 p
+ 731 339 p
+ 741 339 p
+ 745 339 p
+ 744 339 p
+ 167 339 p
+ 163 339 p
+ 740 338 p
+ 731 338 p
+ 741 338 p
+ 742 338 p
+ 738 338 p
+ 167 338 p
+ 162 338 p
+ 742 337 p
+ 741 337 p
+ 738 337 p
+ 758 337 p
+ 759 337 p
+ 166 337 p
+ 167 337 p
+ 743 336 p
+ 734 336 p
+ 744 336 p
+ 746 336 p
+ 747 336 p
+ 168 336 p
+ 164 336 p
+ 743 335 p
+ 734 335 p
+ 744 335 p
+ 745 335 p
+ 740 335 p
+ 168 335 p
+ 163 335 p
+ 745 334 p
+ 744 334 p
+ 740 334 p
+ 762 334 p
+ 763 334 p
+ 167 334 p
+ 168 334 p
+ 746 333 p
+ 747 333 p
+ 743 333 p
+ 765 333 p
+ 766 333 p
+ 168 333 p
+ 169 333 p
+ 746 332 p
+ 747 332 p
+ 743 332 p
+ 750 332 p
+ 749 332 p
+ 169 332 p
+ 164 332 p
+ 748 331 p
+ 737 331 p
+ 749 331 p
+ 751 331 p
+ 752 331 p
+ 170 331 p
+ 165 331 p
+ 748 330 p
+ 737 330 p
+ 749 330 p
+ 750 330 p
+ 747 330 p
+ 170 330 p
+ 164 330 p
+ 750 329 p
+ 749 329 p
+ 747 329 p
+ 768 329 p
+ 769 329 p
+ 169 329 p
+ 170 329 p
+ 751 328 p
+ 748 328 p
+ 752 328 p
+ 171 328 p
+ 165 328 p
+ 751 327 p
+ 748 327 p
+ 752 327 p
+ 771 327 p
+ 772 327 p
+ 171 327 p
+ 170 327 p
+ 708 326 p
+ 753 326 p
+ 711 326 p
+ 1031 326 p
+ 1032 326 p
+ 267 326 p
+ 266 326 p
+ 754 325 p
+ 755 325 p
+ 756 325 p
+ 776 325 p
+ 777 325 p
+ 280 325 p
+ 281 325 p
+ 754 324 p
+ 755 324 p
+ 756 324 p
+ 712 324 p
+ 757 324 p
+ 281 324 p
+ 265 324 p
+ 754 323 p
+ 755 323 p
+ 756 323 p
+ 900 323 p
+ 829 323 p
+ 280 323 p
+ 265 323 p
+ 712 322 p
+ 757 322 p
+ 755 322 p
+ 1030 322 p
+ 1031 322 p
+ 266 322 p
+ 265 322 p
+ 758 321 p
+ 759 321 p
+ 742 321 p
+ 760 321 p
+ 761 321 p
+ 166 321 p
+ 173 321 p
+ 758 320 p
+ 759 320 p
+ 742 320 p
+ 764 320 p
+ 763 320 p
+ 173 320 p
+ 167 320 p
+ 760 319 p
+ 761 319 p
+ 758 319 p
+ 166 319 p
+ 172 319 p
+ 760 318 p
+ 761 318 p
+ 758 318 p
+ 778 318 p
+ 779 318 p
+ 172 318 p
+ 173 318 p
+ 762 317 p
+ 745 317 p
+ 763 317 p
+ 767 317 p
+ 766 317 p
+ 174 317 p
+ 168 317 p
+ 762 316 p
+ 745 316 p
+ 763 316 p
+ 764 316 p
+ 759 316 p
+ 174 316 p
+ 167 316 p
+ 764 315 p
+ 763 315 p
+ 759 315 p
+ 780 315 p
+ 781 315 p
+ 173 315 p
+ 174 315 p
+ 765 314 p
+ 746 314 p
+ 766 314 p
+ 770 314 p
+ 769 314 p
+ 175 314 p
+ 169 314 p
+ 765 313 p
+ 746 313 p
+ 766 313 p
+ 767 313 p
+ 762 313 p
+ 175 313 p
+ 168 313 p
+ 767 312 p
+ 766 312 p
+ 762 312 p
+ 783 312 p
+ 784 312 p
+ 174 312 p
+ 175 312 p
+ 768 311 p
+ 750 311 p
+ 769 311 p
+ 773 311 p
+ 772 311 p
+ 176 311 p
+ 170 311 p
+ 768 310 p
+ 750 310 p
+ 769 310 p
+ 770 310 p
+ 765 310 p
+ 176 310 p
+ 169 310 p
+ 770 309 p
+ 769 309 p
+ 765 309 p
+ 786 309 p
+ 787 309 p
+ 175 309 p
+ 176 309 p
+ 771 308 p
+ 752 308 p
+ 772 308 p
+ 774 308 p
+ 775 308 p
+ 177 308 p
+ 171 308 p
+ 771 307 p
+ 752 307 p
+ 772 307 p
+ 773 307 p
+ 768 307 p
+ 177 307 p
+ 170 307 p
+ 773 306 p
+ 772 306 p
+ 768 306 p
+ 789 306 p
+ 790 306 p
+ 176 306 p
+ 177 306 p
+ 774 305 p
+ 771 305 p
+ 775 305 p
+ 178 305 p
+ 171 305 p
+ 774 304 p
+ 771 304 p
+ 775 304 p
+ 794 304 p
+ 795 304 p
+ 178 304 p
+ 177 304 p
+ 341 303 p
+ 710 303 p
+ 776 303 p
+ 754 303 p
+ 777 303 p
+ 17 303 p
+ 281 303 p
+ 776 302 p
+ 754 302 p
+ 777 302 p
+ 335 302 p
+ 901 302 p
+ 17 302 p
+ 280 302 p
+ 778 301 p
+ 779 301 p
+ 761 301 p
+ 172 301 p
+ 179 301 p
+ 778 300 p
+ 779 300 p
+ 761 300 p
+ 782 300 p
+ 780 300 p
+ 179 300 p
+ 173 300 p
+ 780 299 p
+ 781 299 p
+ 764 299 p
+ 779 299 p
+ 782 299 p
+ 173 299 p
+ 180 299 p
+ 780 298 p
+ 781 298 p
+ 764 298 p
+ 785 298 p
+ 783 298 p
+ 180 298 p
+ 174 298 p
+ 779 297 p
+ 782 297 p
+ 780 297 p
+ 803 297 p
+ 804 297 p
+ 179 297 p
+ 180 297 p
+ 783 296 p
+ 784 296 p
+ 767 296 p
+ 781 296 p
+ 785 296 p
+ 174 296 p
+ 181 296 p
+ 783 295 p
+ 784 295 p
+ 767 295 p
+ 788 295 p
+ 787 295 p
+ 181 295 p
+ 175 295 p
+ 781 294 p
+ 785 294 p
+ 783 294 p
+ 805 294 p
+ 806 294 p
+ 180 294 p
+ 181 294 p
+ 786 293 p
+ 770 293 p
+ 787 293 p
+ 791 293 p
+ 790 293 p
+ 182 293 p
+ 176 293 p
+ 786 292 p
+ 770 292 p
+ 787 292 p
+ 788 292 p
+ 784 292 p
+ 182 292 p
+ 175 292 p
+ 788 291 p
+ 787 291 p
+ 784 291 p
+ 808 291 p
+ 809 291 p
+ 181 291 p
+ 182 291 p
+ 789 290 p
+ 773 290 p
+ 790 290 p
+ 792 290 p
+ 793 290 p
+ 183 290 p
+ 177 290 p
+ 789 289 p
+ 773 289 p
+ 790 289 p
+ 791 289 p
+ 786 289 p
+ 183 289 p
+ 176 289 p
+ 791 288 p
+ 790 288 p
+ 786 288 p
+ 811 288 p
+ 812 288 p
+ 182 288 p
+ 183 288 p
+ 792 287 p
+ 793 287 p
+ 789 287 p
+ 814 287 p
+ 815 287 p
+ 183 287 p
+ 184 287 p
+ 792 286 p
+ 793 286 p
+ 789 286 p
+ 796 286 p
+ 795 286 p
+ 184 286 p
+ 177 286 p
+ 794 285 p
+ 775 285 p
+ 795 285 p
+ 797 285 p
+ 798 285 p
+ 185 285 p
+ 178 285 p
+ 794 284 p
+ 775 284 p
+ 795 284 p
+ 796 284 p
+ 793 284 p
+ 185 284 p
+ 177 284 p
+ 796 283 p
+ 795 283 p
+ 793 283 p
+ 817 283 p
+ 818 283 p
+ 184 283 p
+ 185 283 p
+ 797 282 p
+ 794 282 p
+ 798 282 p
+ 187 282 p
+ 178 282 p
+ 797 281 p
+ 794 281 p
+ 798 281 p
+ 799 281 p
+ 800 281 p
+ 187 281 p
+ 185 281 p
+ 799 280 p
+ 798 280 p
+ 800 280 p
+ 801 280 p
+ 802 280 p
+ 186 280 p
+ 187 280 p
+ 799 279 p
+ 798 279 p
+ 800 279 p
+ 820 279 p
+ 821 279 p
+ 186 279 p
+ 185 279 p
+ 801 278 p
+ 799 278 p
+ 802 278 p
+ 0 278 p
+ 187 278 p
+ 801 277 p
+ 799 277 p
+ 802 277 p
+ 823 277 p
+ 825 277 p
+ 0 277 p
+ 186 277 p
+ 803 276 p
+ 804 276 p
+ 782 276 p
+ 179 276 p
+ 188 276 p
+ 803 275 p
+ 804 275 p
+ 782 275 p
+ 807 275 p
+ 805 275 p
+ 188 275 p
+ 180 275 p
+ 805 274 p
+ 806 274 p
+ 785 274 p
+ 804 274 p
+ 807 274 p
+ 180 274 p
+ 189 274 p
+ 805 273 p
+ 806 273 p
+ 785 273 p
+ 810 273 p
+ 808 273 p
+ 189 273 p
+ 181 273 p
+ 804 272 p
+ 807 272 p
+ 805 272 p
+ 831 272 p
+ 832 272 p
+ 188 272 p
+ 189 272 p
+ 808 271 p
+ 809 271 p
+ 788 271 p
+ 806 271 p
+ 810 271 p
+ 181 271 p
+ 190 271 p
+ 808 270 p
+ 809 270 p
+ 788 270 p
+ 813 270 p
+ 811 270 p
+ 190 270 p
+ 182 270 p
+ 806 269 p
+ 810 269 p
+ 808 269 p
+ 835 269 p
+ 836 269 p
+ 189 269 p
+ 190 269 p
+ 811 268 p
+ 812 268 p
+ 791 268 p
+ 809 268 p
+ 813 268 p
+ 182 268 p
+ 191 268 p
+ 811 267 p
+ 812 267 p
+ 791 267 p
+ 816 267 p
+ 814 267 p
+ 191 267 p
+ 183 267 p
+ 809 266 p
+ 813 266 p
+ 811 266 p
+ 838 266 p
+ 839 266 p
+ 190 266 p
+ 191 266 p
+ 814 265 p
+ 815 265 p
+ 792 265 p
+ 812 265 p
+ 816 265 p
+ 183 265 p
+ 192 265 p
+ 814 264 p
+ 815 264 p
+ 792 264 p
+ 819 264 p
+ 817 264 p
+ 192 264 p
+ 184 264 p
+ 812 263 p
+ 816 263 p
+ 814 263 p
+ 841 263 p
+ 842 263 p
+ 191 263 p
+ 192 263 p
+ 817 262 p
+ 818 262 p
+ 796 262 p
+ 815 262 p
+ 819 262 p
+ 184 262 p
+ 193 262 p
+ 817 261 p
+ 818 261 p
+ 796 261 p
+ 822 261 p
+ 820 261 p
+ 193 261 p
+ 185 261 p
+ 815 260 p
+ 819 260 p
+ 817 260 p
+ 844 260 p
+ 845 260 p
+ 192 260 p
+ 193 260 p
+ 820 259 p
+ 821 259 p
+ 800 259 p
+ 818 259 p
+ 822 259 p
+ 185 259 p
+ 194 259 p
+ 820 258 p
+ 821 258 p
+ 800 258 p
+ 823 258 p
+ 824 258 p
+ 194 258 p
+ 186 258 p
+ 818 257 p
+ 822 257 p
+ 820 257 p
+ 849 257 p
+ 847 257 p
+ 193 257 p
+ 194 257 p
+ 823 256 p
+ 821 256 p
+ 824 256 p
+ 802 256 p
+ 825 256 p
+ 195 256 p
+ 186 256 p
+ 823 255 p
+ 821 255 p
+ 824 255 p
+ 847 255 p
+ 848 255 p
+ 195 255 p
+ 194 255 p
+ 802 254 p
+ 823 254 p
+ 825 254 p
+ 826 254 p
+ 827 254 p
+ 0 254 p
+ 195 254 p
+ 825 253 p
+ 826 253 p
+ 827 253 p
+ 851 253 p
+ 852 253 p
+ 195 253 p
+ 196 253 p
+ 825 252 p
+ 826 252 p
+ 827 252 p
+ 0 252 p
+ 196 252 p
+ 828 251 p
+ 829 251 p
+ 830 251 p
+ 901 251 p
+ 927 251 p
+ 279 251 p
+ 280 251 p
+ 828 250 p
+ 829 250 p
+ 830 250 p
+ 756 250 p
+ 900 250 p
+ 280 250 p
+ 264 250 p
+ 828 249 p
+ 829 249 p
+ 830 249 p
+ 931 249 p
+ 929 249 p
+ 279 249 p
+ 264 249 p
+ 831 248 p
+ 832 248 p
+ 807 248 p
+ 833 248 p
+ 834 248 p
+ 188 248 p
+ 198 248 p
+ 831 247 p
+ 832 247 p
+ 807 247 p
+ 837 247 p
+ 835 247 p
+ 198 247 p
+ 189 247 p
+ 833 246 p
+ 834 246 p
+ 831 246 p
+ 188 246 p
+ 197 246 p
+ 833 245 p
+ 834 245 p
+ 831 245 p
+ 854 245 p
+ 855 245 p
+ 197 245 p
+ 198 245 p
+ 835 244 p
+ 836 244 p
+ 810 244 p
+ 832 244 p
+ 837 244 p
+ 189 244 p
+ 199 244 p
+ 835 243 p
+ 836 243 p
+ 810 243 p
+ 840 243 p
+ 838 243 p
+ 199 243 p
+ 190 243 p
+ 832 242 p
+ 837 242 p
+ 835 242 p
+ 856 242 p
+ 857 242 p
+ 198 242 p
+ 199 242 p
+ 838 241 p
+ 839 241 p
+ 813 241 p
+ 836 241 p
+ 840 241 p
+ 190 241 p
+ 200 241 p
+ 838 240 p
+ 839 240 p
+ 813 240 p
+ 843 240 p
+ 841 240 p
+ 200 240 p
+ 191 240 p
+ 836 239 p
+ 840 239 p
+ 838 239 p
+ 859 239 p
+ 860 239 p
+ 199 239 p
+ 200 239 p
+ 841 238 p
+ 842 238 p
+ 816 238 p
+ 839 238 p
+ 843 238 p
+ 191 238 p
+ 201 238 p
+ 841 237 p
+ 842 237 p
+ 816 237 p
+ 846 237 p
+ 844 237 p
+ 201 237 p
+ 192 237 p
+ 839 236 p
+ 843 236 p
+ 841 236 p
+ 862 236 p
+ 863 236 p
+ 200 236 p
+ 201 236 p
+ 844 235 p
+ 845 235 p
+ 819 235 p
+ 842 235 p
+ 846 235 p
+ 192 235 p
+ 202 235 p
+ 844 234 p
+ 845 234 p
+ 819 234 p
+ 850 234 p
+ 849 234 p
+ 202 234 p
+ 193 234 p
+ 842 233 p
+ 846 233 p
+ 844 233 p
+ 865 233 p
+ 866 233 p
+ 201 233 p
+ 202 233 p
+ 847 232 p
+ 848 232 p
+ 824 232 p
+ 849 232 p
+ 822 232 p
+ 194 232 p
+ 203 232 p
+ 847 231 p
+ 848 231 p
+ 824 231 p
+ 853 231 p
+ 852 231 p
+ 203 231 p
+ 195 231 p
+ 849 230 p
+ 847 230 p
+ 822 230 p
+ 845 230 p
+ 850 230 p
+ 193 230 p
+ 203 230 p
+ 845 229 p
+ 850 229 p
+ 849 229 p
+ 870 229 p
+ 871 229 p
+ 202 229 p
+ 203 229 p
+ 851 228 p
+ 826 228 p
+ 852 228 p
+ 204 228 p
+ 196 228 p
+ 851 227 p
+ 826 227 p
+ 852 227 p
+ 853 227 p
+ 848 227 p
+ 204 227 p
+ 195 227 p
+ 853 226 p
+ 852 226 p
+ 848 226 p
+ 871 226 p
+ 873 226 p
+ 203 226 p
+ 204 226 p
+ 854 225 p
+ 855 225 p
+ 834 225 p
+ 197 225 p
+ 205 225 p
+ 854 224 p
+ 855 224 p
+ 834 224 p
+ 858 224 p
+ 856 224 p
+ 205 224 p
+ 198 224 p
+ 856 223 p
+ 857 223 p
+ 837 223 p
+ 855 223 p
+ 858 223 p
+ 198 223 p
+ 206 223 p
+ 856 222 p
+ 857 222 p
+ 837 222 p
+ 861 222 p
+ 859 222 p
+ 206 222 p
+ 199 222 p
+ 855 221 p
+ 858 221 p
+ 856 221 p
+ 876 221 p
+ 877 221 p
+ 205 221 p
+ 206 221 p
+ 859 220 p
+ 860 220 p
+ 840 220 p
+ 857 220 p
+ 861 220 p
+ 199 220 p
+ 207 220 p
+ 859 219 p
+ 860 219 p
+ 840 219 p
+ 864 219 p
+ 862 219 p
+ 207 219 p
+ 200 219 p
+ 857 218 p
+ 861 218 p
+ 859 218 p
+ 878 218 p
+ 879 218 p
+ 206 218 p
+ 207 218 p
+ 862 217 p
+ 863 217 p
+ 843 217 p
+ 860 217 p
+ 864 217 p
+ 200 217 p
+ 208 217 p
+ 862 216 p
+ 863 216 p
+ 843 216 p
+ 867 216 p
+ 865 216 p
+ 208 216 p
+ 201 216 p
+ 860 215 p
+ 864 215 p
+ 862 215 p
+ 881 215 p
+ 882 215 p
+ 207 215 p
+ 208 215 p
+ 865 214 p
+ 866 214 p
+ 846 214 p
+ 863 214 p
+ 867 214 p
+ 201 214 p
+ 209 214 p
+ 865 213 p
+ 866 213 p
+ 846 213 p
+ 868 213 p
+ 869 213 p
+ 209 213 p
+ 202 213 p
+ 863 212 p
+ 867 212 p
+ 865 212 p
+ 884 212 p
+ 885 212 p
+ 208 212 p
+ 209 212 p
+ 866 211 p
+ 868 211 p
+ 869 211 p
+ 887 211 p
+ 888 211 p
+ 209 211 p
+ 210 211 p
+ 866 210 p
+ 868 210 p
+ 869 210 p
+ 872 210 p
+ 870 210 p
+ 202 210 p
+ 210 210 p
+ 870 209 p
+ 871 209 p
+ 850 209 p
+ 869 209 p
+ 872 209 p
+ 202 209 p
+ 211 209 p
+ 870 208 p
+ 871 208 p
+ 850 208 p
+ 873 208 p
+ 853 208 p
+ 211 208 p
+ 203 208 p
+ 869 207 p
+ 872 207 p
+ 870 207 p
+ 890 207 p
+ 891 207 p
+ 210 207 p
+ 211 207 p
+ 871 206 p
+ 873 206 p
+ 853 206 p
+ 874 206 p
+ 875 206 p
+ 211 206 p
+ 204 206 p
+ 873 205 p
+ 874 205 p
+ 875 205 p
+ 895 205 p
+ 896 205 p
+ 211 205 p
+ 212 205 p
+ 873 204 p
+ 874 204 p
+ 875 204 p
+ 204 204 p
+ 212 204 p
+ 876 203 p
+ 877 203 p
+ 858 203 p
+ 205 203 p
+ 213 203 p
+ 876 202 p
+ 877 202 p
+ 858 202 p
+ 880 202 p
+ 878 202 p
+ 213 202 p
+ 206 202 p
+ 878 201 p
+ 879 201 p
+ 861 201 p
+ 877 201 p
+ 880 201 p
+ 206 201 p
+ 214 201 p
+ 878 200 p
+ 879 200 p
+ 861 200 p
+ 883 200 p
+ 881 200 p
+ 214 200 p
+ 207 200 p
+ 877 199 p
+ 880 199 p
+ 878 199 p
+ 902 199 p
+ 903 199 p
+ 213 199 p
+ 214 199 p
+ 881 198 p
+ 882 198 p
+ 864 198 p
+ 879 198 p
+ 883 198 p
+ 207 198 p
+ 215 198 p
+ 881 197 p
+ 882 197 p
+ 864 197 p
+ 886 197 p
+ 884 197 p
+ 215 197 p
+ 208 197 p
+ 879 196 p
+ 883 196 p
+ 881 196 p
+ 906 196 p
+ 907 196 p
+ 214 196 p
+ 215 196 p
+ 884 195 p
+ 885 195 p
+ 867 195 p
+ 882 195 p
+ 886 195 p
+ 208 195 p
+ 216 195 p
+ 884 194 p
+ 885 194 p
+ 867 194 p
+ 889 194 p
+ 887 194 p
+ 216 194 p
+ 209 194 p
+ 882 193 p
+ 886 193 p
+ 884 193 p
+ 909 193 p
+ 910 193 p
+ 215 193 p
+ 216 193 p
+ 887 192 p
+ 888 192 p
+ 868 192 p
+ 885 192 p
+ 889 192 p
+ 209 192 p
+ 217 192 p
+ 887 191 p
+ 888 191 p
+ 868 191 p
+ 892 191 p
+ 890 191 p
+ 217 191 p
+ 210 191 p
+ 885 190 p
+ 889 190 p
+ 887 190 p
+ 912 190 p
+ 913 190 p
+ 216 190 p
+ 217 190 p
+ 890 189 p
+ 891 189 p
+ 872 189 p
+ 888 189 p
+ 892 189 p
+ 210 189 p
+ 218 189 p
+ 890 188 p
+ 891 188 p
+ 872 188 p
+ 893 188 p
+ 894 188 p
+ 218 188 p
+ 211 188 p
+ 888 187 p
+ 892 187 p
+ 890 187 p
+ 915 187 p
+ 916 187 p
+ 217 187 p
+ 218 187 p
+ 891 186 p
+ 893 186 p
+ 894 186 p
+ 918 186 p
+ 919 186 p
+ 218 186 p
+ 219 186 p
+ 891 185 p
+ 893 185 p
+ 894 185 p
+ 897 185 p
+ 895 185 p
+ 211 185 p
+ 219 185 p
+ 895 184 p
+ 896 184 p
+ 874 184 p
+ 894 184 p
+ 897 184 p
+ 211 184 p
+ 220 184 p
+ 895 183 p
+ 896 183 p
+ 874 183 p
+ 898 183 p
+ 899 183 p
+ 220 183 p
+ 212 183 p
+ 894 182 p
+ 897 182 p
+ 895 182 p
+ 921 182 p
+ 922 182 p
+ 219 182 p
+ 220 182 p
+ 896 181 p
+ 898 181 p
+ 899 181 p
+ 924 181 p
+ 925 181 p
+ 220 181 p
+ 221 181 p
+ 896 180 p
+ 898 180 p
+ 899 180 p
+ 212 180 p
+ 221 180 p
+ 756 179 p
+ 900 179 p
+ 829 179 p
+ 1028 179 p
+ 1030 179 p
+ 265 179 p
+ 264 179 p
+ 335 178 p
+ 777 178 p
+ 901 178 p
+ 828 178 p
+ 927 178 p
+ 16 178 p
+ 280 178 p
+ 902 177 p
+ 903 177 p
+ 880 177 p
+ 904 177 p
+ 905 177 p
+ 213 177 p
+ 223 177 p
+ 902 176 p
+ 903 176 p
+ 880 176 p
+ 908 176 p
+ 906 176 p
+ 223 176 p
+ 214 176 p
+ 904 175 p
+ 905 175 p
+ 902 175 p
+ 213 175 p
+ 222 175 p
+ 904 174 p
+ 905 174 p
+ 902 174 p
+ 934 174 p
+ 935 174 p
+ 222 174 p
+ 223 174 p
+ 906 173 p
+ 907 173 p
+ 883 173 p
+ 903 173 p
+ 908 173 p
+ 214 173 p
+ 224 173 p
+ 906 172 p
+ 907 172 p
+ 883 172 p
+ 911 172 p
+ 909 172 p
+ 224 172 p
+ 215 172 p
+ 903 171 p
+ 908 171 p
+ 906 171 p
+ 935 171 p
+ 938 171 p
+ 223 171 p
+ 224 171 p
+ 909 170 p
+ 910 170 p
+ 886 170 p
+ 907 170 p
+ 911 170 p
+ 215 170 p
+ 225 170 p
+ 909 169 p
+ 910 169 p
+ 886 169 p
+ 914 169 p
+ 912 169 p
+ 225 169 p
+ 216 169 p
+ 907 168 p
+ 911 168 p
+ 909 168 p
+ 939 168 p
+ 940 168 p
+ 224 168 p
+ 225 168 p
+ 912 167 p
+ 913 167 p
+ 889 167 p
+ 910 167 p
+ 914 167 p
+ 216 167 p
+ 226 167 p
+ 912 166 p
+ 913 166 p
+ 889 166 p
+ 917 166 p
+ 915 166 p
+ 226 166 p
+ 217 166 p
+ 910 165 p
+ 914 165 p
+ 912 165 p
+ 942 165 p
+ 943 165 p
+ 225 165 p
+ 226 165 p
+ 915 164 p
+ 916 164 p
+ 892 164 p
+ 913 164 p
+ 917 164 p
+ 217 164 p
+ 227 164 p
+ 915 163 p
+ 916 163 p
+ 892 163 p
+ 920 163 p
+ 918 163 p
+ 227 163 p
+ 218 163 p
+ 913 162 p
+ 917 162 p
+ 915 162 p
+ 945 162 p
+ 946 162 p
+ 226 162 p
+ 227 162 p
+ 918 161 p
+ 919 161 p
+ 893 161 p
+ 916 161 p
+ 920 161 p
+ 218 161 p
+ 228 161 p
+ 918 160 p
+ 919 160 p
+ 893 160 p
+ 923 160 p
+ 921 160 p
+ 228 160 p
+ 219 160 p
+ 916 159 p
+ 920 159 p
+ 918 159 p
+ 948 159 p
+ 949 159 p
+ 227 159 p
+ 228 159 p
+ 921 158 p
+ 922 158 p
+ 897 158 p
+ 919 158 p
+ 923 158 p
+ 219 158 p
+ 229 158 p
+ 921 157 p
+ 922 157 p
+ 897 157 p
+ 926 157 p
+ 924 157 p
+ 229 157 p
+ 220 157 p
+ 919 156 p
+ 923 156 p
+ 921 156 p
+ 951 156 p
+ 952 156 p
+ 228 156 p
+ 229 156 p
+ 924 155 p
+ 925 155 p
+ 898 155 p
+ 922 155 p
+ 926 155 p
+ 220 155 p
+ 230 155 p
+ 924 154 p
+ 925 154 p
+ 898 154 p
+ 230 154 p
+ 221 154 p
+ 922 153 p
+ 926 153 p
+ 924 153 p
+ 956 153 p
+ 957 153 p
+ 229 153 p
+ 230 153 p
+ 901 152 p
+ 828 152 p
+ 927 152 p
+ 329 152 p
+ 932 152 p
+ 16 152 p
+ 279 152 p
+ 928 151 p
+ 929 151 p
+ 930 151 p
+ 933 151 p
+ 993 151 p
+ 278 151 p
+ 279 151 p
+ 928 150 p
+ 929 150 p
+ 930 150 p
+ 830 150 p
+ 931 150 p
+ 279 150 p
+ 263 150 p
+ 928 149 p
+ 929 149 p
+ 930 149 p
+ 1027 149 p
+ 995 149 p
+ 278 149 p
+ 263 149 p
+ 830 148 p
+ 931 148 p
+ 929 148 p
+ 1029 148 p
+ 1025 148 p
+ 264 148 p
+ 263 148 p
+ 331 147 p
+ 932 147 p
+ 933 147 p
+ 329 147 p
+ 927 147 p
+ 15 147 p
+ 279 147 p
+ 331 146 p
+ 932 146 p
+ 933 146 p
+ 928 146 p
+ 993 146 p
+ 14 146 p
+ 279 146 p
+ 934 145 p
+ 935 145 p
+ 905 145 p
+ 936 145 p
+ 937 145 p
+ 222 145 p
+ 232 145 p
+ 934 144 p
+ 935 144 p
+ 905 144 p
+ 938 144 p
+ 908 144 p
+ 232 144 p
+ 223 144 p
+ 936 143 p
+ 937 143 p
+ 934 143 p
+ 222 143 p
+ 231 143 p
+ 936 142 p
+ 937 142 p
+ 934 142 p
+ 961 142 p
+ 962 142 p
+ 231 142 p
+ 232 142 p
+ 935 141 p
+ 938 141 p
+ 908 141 p
+ 941 141 p
+ 939 141 p
+ 232 141 p
+ 224 141 p
+ 939 140 p
+ 940 140 p
+ 911 140 p
+ 938 140 p
+ 941 140 p
+ 224 140 p
+ 233 140 p
+ 939 139 p
+ 940 139 p
+ 911 139 p
+ 944 139 p
+ 942 139 p
+ 233 139 p
+ 225 139 p
+ 938 138 p
+ 941 138 p
+ 939 138 p
+ 963 138 p
+ 964 138 p
+ 232 138 p
+ 233 138 p
+ 942 137 p
+ 943 137 p
+ 914 137 p
+ 940 137 p
+ 944 137 p
+ 225 137 p
+ 234 137 p
+ 942 136 p
+ 943 136 p
+ 914 136 p
+ 947 136 p
+ 945 136 p
+ 234 136 p
+ 226 136 p
+ 940 135 p
+ 944 135 p
+ 942 135 p
+ 970 135 p
+ 968 135 p
+ 233 135 p
+ 234 135 p
+ 945 134 p
+ 946 134 p
+ 917 134 p
+ 943 134 p
+ 947 134 p
+ 226 134 p
+ 235 134 p
+ 945 133 p
+ 946 133 p
+ 917 133 p
+ 950 133 p
+ 948 133 p
+ 235 133 p
+ 227 133 p
+ 943 132 p
+ 947 132 p
+ 945 132 p
+ 968 132 p
+ 969 132 p
+ 234 132 p
+ 235 132 p
+ 948 131 p
+ 949 131 p
+ 920 131 p
+ 946 131 p
+ 950 131 p
+ 227 131 p
+ 236 131 p
+ 948 130 p
+ 949 130 p
+ 920 130 p
+ 953 130 p
+ 951 130 p
+ 236 130 p
+ 228 130 p
+ 946 129 p
+ 950 129 p
+ 948 129 p
+ 972 129 p
+ 973 129 p
+ 235 129 p
+ 236 129 p
+ 951 128 p
+ 952 128 p
+ 923 128 p
+ 949 128 p
+ 953 128 p
+ 228 128 p
+ 237 128 p
+ 951 127 p
+ 952 127 p
+ 923 127 p
+ 954 127 p
+ 955 127 p
+ 237 127 p
+ 229 127 p
+ 949 126 p
+ 953 126 p
+ 951 126 p
+ 975 126 p
+ 976 126 p
+ 236 126 p
+ 237 126 p
+ 952 125 p
+ 954 125 p
+ 955 125 p
+ 978 125 p
+ 979 125 p
+ 237 125 p
+ 238 125 p
+ 952 124 p
+ 954 124 p
+ 955 124 p
+ 958 124 p
+ 956 124 p
+ 229 124 p
+ 238 124 p
+ 956 123 p
+ 957 123 p
+ 926 123 p
+ 955 123 p
+ 958 123 p
+ 229 123 p
+ 239 123 p
+ 956 122 p
+ 957 122 p
+ 926 122 p
+ 959 122 p
+ 960 122 p
+ 239 122 p
+ 230 122 p
+ 955 121 p
+ 958 121 p
+ 956 121 p
+ 981 121 p
+ 982 121 p
+ 238 121 p
+ 239 121 p
+ 957 120 p
+ 959 120 p
+ 960 120 p
+ 986 120 p
+ 987 120 p
+ 239 120 p
+ 240 120 p
+ 957 119 p
+ 959 119 p
+ 960 119 p
+ 230 119 p
+ 240 119 p
+ 961 118 p
+ 962 118 p
+ 937 118 p
+ 231 118 p
+ 241 118 p
+ 961 117 p
+ 962 117 p
+ 937 117 p
+ 965 117 p
+ 963 117 p
+ 241 117 p
+ 232 117 p
+ 963 116 p
+ 964 116 p
+ 941 116 p
+ 962 116 p
+ 965 116 p
+ 232 116 p
+ 242 116 p
+ 963 115 p
+ 964 115 p
+ 941 115 p
+ 966 115 p
+ 967 115 p
+ 242 115 p
+ 233 115 p
+ 962 114 p
+ 965 114 p
+ 963 114 p
+ 997 114 p
+ 998 114 p
+ 241 114 p
+ 242 114 p
+ 964 113 p
+ 966 113 p
+ 967 113 p
+ 999 113 p
+ 1000 113 p
+ 242 113 p
+ 243 113 p
+ 964 112 p
+ 966 112 p
+ 967 112 p
+ 971 112 p
+ 970 112 p
+ 233 112 p
+ 243 112 p
+ 968 111 p
+ 969 111 p
+ 947 111 p
+ 970 111 p
+ 944 111 p
+ 234 111 p
+ 244 111 p
+ 968 110 p
+ 969 110 p
+ 947 110 p
+ 974 110 p
+ 972 110 p
+ 244 110 p
+ 235 110 p
+ 970 109 p
+ 968 109 p
+ 944 109 p
+ 967 109 p
+ 971 109 p
+ 233 109 p
+ 244 109 p
+ 967 108 p
+ 971 108 p
+ 970 108 p
+ 1002 108 p
+ 1003 108 p
+ 243 108 p
+ 244 108 p
+ 972 107 p
+ 973 107 p
+ 950 107 p
+ 969 107 p
+ 974 107 p
+ 235 107 p
+ 245 107 p
+ 972 106 p
+ 973 106 p
+ 950 106 p
+ 977 106 p
+ 975 106 p
+ 245 106 p
+ 236 106 p
+ 969 105 p
+ 974 105 p
+ 972 105 p
+ 1007 105 p
+ 1008 105 p
+ 244 105 p
+ 245 105 p
+ 975 104 p
+ 976 104 p
+ 953 104 p
+ 973 104 p
+ 977 104 p
+ 236 104 p
+ 246 104 p
+ 975 103 p
+ 976 103 p
+ 953 103 p
+ 980 103 p
+ 978 103 p
+ 246 103 p
+ 237 103 p
+ 973 102 p
+ 977 102 p
+ 975 102 p
+ 1010 102 p
+ 1011 102 p
+ 245 102 p
+ 246 102 p
+ 978 101 p
+ 979 101 p
+ 954 101 p
+ 976 101 p
+ 980 101 p
+ 237 101 p
+ 247 101 p
+ 978 100 p
+ 979 100 p
+ 954 100 p
+ 983 100 p
+ 981 100 p
+ 247 100 p
+ 238 100 p
+ 976 99 p
+ 980 99 p
+ 978 99 p
+ 1013 99 p
+ 1014 99 p
+ 246 99 p
+ 247 99 p
+ 981 98 p
+ 982 98 p
+ 958 98 p
+ 979 98 p
+ 983 98 p
+ 238 98 p
+ 248 98 p
+ 981 97 p
+ 982 97 p
+ 958 97 p
+ 984 97 p
+ 985 97 p
+ 248 97 p
+ 239 97 p
+ 979 96 p
+ 983 96 p
+ 981 96 p
+ 1016 96 p
+ 1017 96 p
+ 247 96 p
+ 248 96 p
+ 984 95 p
+ 985 95 p
+ 982 95 p
+ 1019 95 p
+ 1020 95 p
+ 248 95 p
+ 249 95 p
+ 984 94 p
+ 985 94 p
+ 982 94 p
+ 988 94 p
+ 987 94 p
+ 249 94 p
+ 239 94 p
+ 986 93 p
+ 959 93 p
+ 987 93 p
+ 989 93 p
+ 990 93 p
+ 250 93 p
+ 240 93 p
+ 986 92 p
+ 959 92 p
+ 987 92 p
+ 988 92 p
+ 985 92 p
+ 250 92 p
+ 239 92 p
+ 988 91 p
+ 987 91 p
+ 985 91 p
+ 1022 91 p
+ 1023 91 p
+ 249 91 p
+ 250 91 p
+ 986 90 p
+ 989 90 p
+ 990 90 p
+ 1025 90 p
+ 1026 90 p
+ 250 90 p
+ 251 90 p
+ 986 89 p
+ 989 89 p
+ 990 89 p
+ 991 89 p
+ 992 89 p
+ 240 89 p
+ 251 89 p
+ 990 88 p
+ 991 88 p
+ 992 88 p
+ 1028 88 p
+ 1029 88 p
+ 251 88 p
+ 252 88 p
+ 990 87 p
+ 991 87 p
+ 992 87 p
+ 240 87 p
+ 252 87 p
+ 933 86 p
+ 928 86 p
+ 993 86 p
+ 1079 86 p
+ 324 86 p
+ 14 86 p
+ 278 86 p
+ 994 85 p
+ 995 85 p
+ 996 85 p
+ 1076 85 p
+ 1079 85 p
+ 277 85 p
+ 278 85 p
+ 994 84 p
+ 995 84 p
+ 996 84 p
+ 930 84 p
+ 1027 84 p
+ 278 84 p
+ 262 84 p
+ 994 83 p
+ 995 83 p
+ 996 83 p
+ 1078 83 p
+ 1024 83 p
+ 277 83 p
+ 262 83 p
+ 997 82 p
+ 998 82 p
+ 965 82 p
+ 241 82 p
+ 253 82 p
+ 997 81 p
+ 998 81 p
+ 965 81 p
+ 1001 81 p
+ 999 81 p
+ 253 81 p
+ 242 81 p
+ 999 80 p
+ 1000 80 p
+ 966 80 p
+ 998 80 p
+ 1001 80 p
+ 242 80 p
+ 254 80 p
+ 999 79 p
+ 1000 79 p
+ 966 79 p
+ 1004 79 p
+ 1002 79 p
+ 254 79 p
+ 243 79 p
+ 998 78 p
+ 1001 78 p
+ 999 78 p
+ 1033 78 p
+ 1034 78 p
+ 253 78 p
+ 254 78 p
+ 1002 77 p
+ 1003 77 p
+ 971 77 p
+ 1000 77 p
+ 1004 77 p
+ 243 77 p
+ 255 77 p
+ 1002 76 p
+ 1003 76 p
+ 971 76 p
+ 1005 76 p
+ 1006 76 p
+ 255 76 p
+ 244 76 p
+ 1000 75 p
+ 1004 75 p
+ 1002 75 p
+ 1035 75 p
+ 1036 75 p
+ 254 75 p
+ 255 75 p
+ 1003 74 p
+ 1005 74 p
+ 1006 74 p
+ 1041 74 p
+ 1042 74 p
+ 255 74 p
+ 256 74 p
+ 1003 73 p
+ 1005 73 p
+ 1006 73 p
+ 1009 73 p
+ 1007 73 p
+ 244 73 p
+ 256 73 p
+ 1007 72 p
+ 1008 72 p
+ 974 72 p
+ 1006 72 p
+ 1009 72 p
+ 244 72 p
+ 257 72 p
+ 1007 71 p
+ 1008 71 p
+ 974 71 p
+ 1012 71 p
+ 1010 71 p
+ 257 71 p
+ 245 71 p
+ 1006 70 p
+ 1009 70 p
+ 1007 70 p
+ 1055 70 p
+ 1050 70 p
+ 256 70 p
+ 257 70 p
+ 1010 69 p
+ 1011 69 p
+ 977 69 p
+ 1008 69 p
+ 1012 69 p
+ 245 69 p
+ 258 69 p
+ 1010 68 p
+ 1011 68 p
+ 977 68 p
+ 1015 68 p
+ 1013 68 p
+ 258 68 p
+ 246 68 p
+ 1008 67 p
+ 1012 67 p
+ 1010 67 p
+ 1050 67 p
+ 1051 67 p
+ 257 67 p
+ 258 67 p
+ 1013 66 p
+ 1014 66 p
+ 980 66 p
+ 1011 66 p
+ 1015 66 p
+ 246 66 p
+ 259 66 p
+ 1013 65 p
+ 1014 65 p
+ 980 65 p
+ 1018 65 p
+ 1016 65 p
+ 259 65 p
+ 247 65 p
+ 1011 64 p
+ 1015 64 p
+ 1013 64 p
+ 1056 64 p
+ 1057 64 p
+ 258 64 p
+ 259 64 p
+ 1016 63 p
+ 1017 63 p
+ 983 63 p
+ 1014 63 p
+ 1018 63 p
+ 247 63 p
+ 260 63 p
+ 1016 62 p
+ 1017 62 p
+ 983 62 p
+ 1021 62 p
+ 1019 62 p
+ 260 62 p
+ 248 62 p
+ 1014 61 p
+ 1018 61 p
+ 1016 61 p
+ 1068 61 p
+ 1069 61 p
+ 259 61 p
+ 260 61 p
+ 1019 60 p
+ 1020 60 p
+ 984 60 p
+ 1017 60 p
+ 1021 60 p
+ 248 60 p
+ 261 60 p
+ 1019 59 p
+ 1020 59 p
+ 984 59 p
+ 1024 59 p
+ 1022 59 p
+ 261 59 p
+ 249 59 p
+ 1017 58 p
+ 1021 58 p
+ 1019 58 p
+ 1073 58 p
+ 1074 58 p
+ 260 58 p
+ 261 58 p
+ 1022 57 p
+ 1023 57 p
+ 988 57 p
+ 1020 57 p
+ 1024 57 p
+ 249 57 p
+ 262 57 p
+ 1022 56 p
+ 1023 56 p
+ 988 56 p
+ 1027 56 p
+ 1026 56 p
+ 262 56 p
+ 250 56 p
+ 1020 55 p
+ 1024 55 p
+ 1022 55 p
+ 1078 55 p
+ 996 55 p
+ 261 55 p
+ 262 55 p
+ 1025 54 p
+ 989 54 p
+ 1026 54 p
+ 931 54 p
+ 1029 54 p
+ 263 54 p
+ 251 54 p
+ 1025 53 p
+ 989 53 p
+ 1026 53 p
+ 1027 53 p
+ 1023 53 p
+ 263 53 p
+ 250 53 p
+ 1027 52 p
+ 1026 52 p
+ 1023 52 p
+ 930 52 p
+ 995 52 p
+ 262 52 p
+ 263 52 p
+ 1028 51 p
+ 991 51 p
+ 1029 51 p
+ 900 51 p
+ 1030 51 p
+ 264 51 p
+ 252 51 p
+ 1028 50 p
+ 991 50 p
+ 1029 50 p
+ 931 50 p
+ 1025 50 p
+ 264 50 p
+ 251 50 p
+ 1028 49 p
+ 900 49 p
+ 1030 49 p
+ 757 49 p
+ 1031 49 p
+ 252 49 p
+ 265 49 p
+ 1030 48 p
+ 757 48 p
+ 1031 48 p
+ 753 48 p
+ 1032 48 p
+ 252 48 p
+ 266 48 p
+ 1031 47 p
+ 753 47 p
+ 1032 47 p
+ 252 47 p
+ 267 47 p
+ 1033 46 p
+ 1034 46 p
+ 1001 46 p
+ 253 46 p
+ 268 46 p
+ 1033 45 p
+ 1034 45 p
+ 1001 45 p
+ 1040 45 p
+ 1035 45 p
+ 268 45 p
+ 254 45 p
+ 1035 44 p
+ 1036 44 p
+ 1004 44 p
+ 1034 44 p
+ 1040 44 p
+ 254 44 p
+ 269 44 p
+ 1035 43 p
+ 1036 43 p
+ 1004 43 p
+ 1045 43 p
+ 1041 43 p
+ 269 43 p
+ 255 43 p
+ 1037 42 p
+ 287 42 p
+ 1038 42 p
+ 1039 42 p
+ 1040 42 p
+ 269 42 p
+ 4 42 p
+ 1037 41 p
+ 287 41 p
+ 1038 41 p
+ 1043 41 p
+ 1045 41 p
+ 269 41 p
+ 5 41 p
+ 1039 40 p
+ 1037 40 p
+ 1040 40 p
+ 268 40 p
+ 4 40 p
+ 1039 39 p
+ 1037 39 p
+ 1040 39 p
+ 1034 39 p
+ 1035 39 p
+ 268 39 p
+ 269 39 p
+ 1041 38 p
+ 1042 38 p
+ 1005 38 p
+ 1036 38 p
+ 1045 38 p
+ 255 38 p
+ 270 38 p
+ 1041 37 p
+ 1042 37 p
+ 1005 37 p
+ 1048 37 p
+ 1049 37 p
+ 270 37 p
+ 256 37 p
+ 1043 36 p
+ 292 36 p
+ 1044 36 p
+ 1038 36 p
+ 1045 36 p
+ 270 36 p
+ 5 36 p
+ 1043 35 p
+ 292 35 p
+ 1044 35 p
+ 1046 35 p
+ 1048 35 p
+ 270 35 p
+ 6 35 p
+ 1038 34 p
+ 1043 34 p
+ 1045 34 p
+ 1036 34 p
+ 1041 34 p
+ 269 34 p
+ 270 34 p
+ 1046 33 p
+ 296 33 p
+ 1047 33 p
+ 1044 33 p
+ 1048 33 p
+ 271 33 p
+ 6 33 p
+ 1046 32 p
+ 296 32 p
+ 1047 32 p
+ 1052 32 p
+ 1054 32 p
+ 271 32 p
+ 7 32 p
+ 1044 31 p
+ 1046 31 p
+ 1048 31 p
+ 1042 31 p
+ 1049 31 p
+ 270 31 p
+ 271 31 p
+ 1042 30 p
+ 1048 30 p
+ 1049 30 p
+ 1054 30 p
+ 1055 30 p
+ 256 30 p
+ 271 30 p
+ 1050 29 p
+ 1051 29 p
+ 1012 29 p
+ 1055 29 p
+ 1009 29 p
+ 257 29 p
+ 272 29 p
+ 1050 28 p
+ 1051 28 p
+ 1012 28 p
+ 1060 28 p
+ 1056 28 p
+ 272 28 p
+ 258 28 p
+ 1052 27 p
+ 300 27 p
+ 1053 27 p
+ 1047 27 p
+ 1054 27 p
+ 272 27 p
+ 7 27 p
+ 1052 26 p
+ 300 26 p
+ 1053 26 p
+ 1058 26 p
+ 1060 26 p
+ 272 26 p
+ 8 26 p
+ 1047 25 p
+ 1052 25 p
+ 1054 25 p
+ 1049 25 p
+ 1055 25 p
+ 271 25 p
+ 272 25 p
+ 1055 24 p
+ 1050 24 p
+ 1009 24 p
+ 1049 24 p
+ 1054 24 p
+ 256 24 p
+ 272 24 p
+ 1056 23 p
+ 1057 23 p
+ 1015 23 p
+ 1051 23 p
+ 1060 23 p
+ 258 23 p
+ 273 23 p
+ 1056 22 p
+ 1057 22 p
+ 1015 22 p
+ 1063 22 p
+ 1064 22 p
+ 273 22 p
+ 259 22 p
+ 1058 21 p
+ 304 21 p
+ 1059 21 p
+ 1053 21 p
+ 1060 21 p
+ 273 21 p
+ 8 21 p
+ 1058 20 p
+ 304 20 p
+ 1059 20 p
+ 1061 20 p
+ 1063 20 p
+ 273 20 p
+ 9 20 p
+ 1053 19 p
+ 1058 19 p
+ 1060 19 p
+ 1051 19 p
+ 1056 19 p
+ 272 19 p
+ 273 19 p
+ 1061 18 p
+ 308 18 p
+ 1062 18 p
+ 1059 18 p
+ 1063 18 p
+ 274 18 p
+ 9 18 p
+ 1061 17 p
+ 308 17 p
+ 1062 17 p
+ 1065 17 p
+ 1067 17 p
+ 274 17 p
+ 10 17 p
+ 1059 16 p
+ 1061 16 p
+ 1063 16 p
+ 1057 16 p
+ 1064 16 p
+ 273 16 p
+ 274 16 p
+ 1057 15 p
+ 1063 15 p
+ 1064 15 p
+ 1067 15 p
+ 1068 15 p
+ 259 15 p
+ 274 15 p
+ 1065 14 p
+ 312 14 p
+ 1066 14 p
+ 1062 14 p
+ 1067 14 p
+ 275 14 p
+ 10 14 p
+ 1065 13 p
+ 312 13 p
+ 1066 13 p
+ 1070 13 p
+ 1072 13 p
+ 275 13 p
+ 11 13 p
+ 1062 12 p
+ 1065 12 p
+ 1067 12 p
+ 1064 12 p
+ 1068 12 p
+ 274 12 p
+ 275 12 p
+ 1068 11 p
+ 1069 11 p
+ 1018 11 p
+ 1064 11 p
+ 1067 11 p
+ 259 11 p
+ 275 11 p
+ 1068 10 p
+ 1069 10 p
+ 1018 10 p
+ 1072 10 p
+ 1073 10 p
+ 275 10 p
+ 260 10 p
+ 1070 9 p
+ 316 9 p
+ 1071 9 p
+ 1066 9 p
+ 1072 9 p
+ 276 9 p
+ 11 9 p
+ 1070 8 p
+ 316 8 p
+ 1071 8 p
+ 1075 8 p
+ 1077 8 p
+ 276 8 p
+ 12 8 p
+ 1066 7 p
+ 1070 7 p
+ 1072 7 p
+ 1069 7 p
+ 1073 7 p
+ 275 7 p
+ 276 7 p
+ 1073 6 p
+ 1074 6 p
+ 1021 6 p
+ 1069 6 p
+ 1072 6 p
+ 260 6 p
+ 276 6 p
+ 1073 5 p
+ 1074 5 p
+ 1021 5 p
+ 1077 5 p
+ 1078 5 p
+ 276 5 p
+ 261 5 p
+ 1075 4 p
+ 320 4 p
+ 1076 4 p
+ 1071 4 p
+ 1077 4 p
+ 277 4 p
+ 12 4 p
+ 1075 3 p
+ 320 3 p
+ 1076 3 p
+ 1079 3 p
+ 994 3 p
+ 277 3 p
+ 13 3 p
+ 1071 2 p
+ 1075 2 p
+ 1077 2 p
+ 1074 2 p
+ 1078 2 p
+ 276 2 p
+ 277 2 p
+ 1078 1 p
+ 996 1 p
+ 1024 1 p
+ 1074 1 p
+ 1077 1 p
+ 261 1 p
+ 277 1 p
+ 1079 0 p
+ 324 0 p
+ 993 0 p
+ 1076 0 p
+ 994 0 p
+ 278 0 p
+ 13 0 p
+showpage
+%%EndDocument
+ @endspecial 883 x Fi(7.3)70 b(Mark)n(o)n(v)25 b(Chains)60
+1223 y Fl(Mark)o(o)o(v)15 b(c)o(hain)g(matrices)f(arising)i(from)e(a)i
+(random)f(w)o(alk)h(on)g(a)g(triangular)g(grid.)21 b(This)16
+b(is)f(mainly)60 1283 y(useful)c(for)h(testing)g(nonsymmetric)c(eigen)o(v)m
+(alue)i(co)q(des.)20 b(It)12 b(has)g(b)q(een)f(suggested)i(b)o(y)e(G.W.)g
+(Stew)o(art)60 1343 y(in)16 b(one)h(of)g(his)g(pap)q(ers)h([10])e(and)i(w)o
+(as)f(used)g(b)o(y)f(Y.)g(Saad)i(in)e(a)h(few)g(subsequen)o(t)f(pap)q(ers)i
+(as)f(a)g(test)60 1404 y(problem)e(for)h(nonsymmetric)d(eigen)o(v)m(alue)i
+(metho)q(ds,)g(see,)h(e.g.,)f([8].)60 1548 y Fi(7.4)70 b(Other)22
+b(Matrices)60 1640 y Fl(Curren)o(tly)d(w)o(e)h(ha)o(v)o(e)f(only)i(one)f
+(additional)g(set)g(of)h(matrices.)31 b(These)20 b(are)h(the)f(test)g
+(matrices)1900 1622 y Fd(2)60 1700 y Fl(from)f(Zlatev)g(et.)31
+b(al.)h([12])20 b(and)g(Osterb)o(y)f(and)h(Zlatev)f([7].)32
+b(The)19 b(\014rst)i(t)o(w)o(o)e(matrix)f(generators)60 1761
+y(describ)q(ed)f(in)g(the)g(ab)q(o)o(v)o(e)g(references)f(are)h(referred)f
+(to)i(as)g Fj(D)q Fl(\()p Fj(n;)8 b(c)p Fl(\))18 b(and)g Fj(E)s
+Fl(\()p Fj(n;)8 b(c)p Fl(\))17 b(resp)q(ectiv)o(ely)l(.)k(A)60
+1821 y(more)d(elab)q(orate)i(class)f(where)g(more)f(than)i(t)o(w)o(o)f
+(parameters)f(can)i(b)q(e)f(v)m(aried,)g(is)h(referred)e(to)h(as)60
+1881 y(the)c(class)h Fj(F)7 b Fl(\()p Fj(m;)h(n;)g(c;)g(r)o(;)g(\013)p
+Fl(\))13 b(in)i([7,)g(12)q(].)21 b(The)15 b(three)g(subroutines)g(to)h
+(generate)f(these)g(matrices)f(are)60 1941 y(called)k(MA)l(TRF2)g(\(for)h
+(the)f(class)h Fj(F)7 b Fl(\()p Fj(m;)h(n;)g(c;)g(r)o(;)g(\013)p
+Fl(\))17 b(\),)i(DCN)f(\(for)h(the)g(class)f Fj(D)q Fl(\()p
+Fj(c;)8 b(n)p Fl(\)\))20 b(and)f(ECN)60 2001 y(\(for)d(the)g(class)h
+Fj(E)s Fl(\()p Fj(c;)8 b(n)p Fl(\)\).)21 b(These)16 b(co)q(des)g(can)h
+(generate)f(rectangular)g(as)h(w)o(ell)e(as)i(square)f(matrices)60
+2062 y(and)h(allo)o(w)f(a)h(go)q(o)q(d)h(\015exibilit)o(y)13
+b(in)j(making)f(the)i(matrices)d(more)h(or)i(less)f(dense)g(and)h(more)e(or)h
+(less)60 2122 y(w)o(ell)f(conditioned.)60 2288 y Fk(8)83 b(The)27
+b(ORDERING)h(Routines)60 2398 y Fl(The)16 b(follo)o(wing)g(subroutines)h(are)
+f(a)o(v)m(ailable)g(in)g(the)g(directory)f(ORDERINGS.)120 2548
+y Fh(levset.f)215 b Fl(Reordering)21 b(based)i(on)f(lev)o(el)d(sets,)k
+(including)e(Cuthill-McKee)e(imple-)510 2608 y(men)o(ted)14
+b(with)i(breadth)h(\014rst)f(searc)o(h.)p 60 2642 744 2 v 116
+2673 a Fc(2)135 2688 y Fo(These)f(subroutines)g(ha)o(v)o(e)f(b)q(een)h(con)o
+(tributed)f(to)g(the)g(author)g(b)o(y)g(E.)g(Rothman)d(from)h(Cornell)i(Univ)
+o(ersit)o(y)m(.)p eop
+%%Page: 27 27
+27 26 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(27)120
+132 y Fh(color.f)237 b Fl(Reordering)22 b(based)g(on)g(coloring,)h(including)
+e(a)h(greedy)g(algorithm)f(for)510 192 y(m)o(ulticolor)14 b(ordering.)120
+300 y Fh(ccn.f)276 b Fl(Reordering)27 b(routines)f(based)i(on)f(strongly)g
+(connected)f(comp)q(onen)o(ts.)510 360 y(Con)o(tributed)16
+b(b)o(y)f(Laura)j(C.)e(Dutto)g(from)f(the)h(Univ)o(ersit)o(y)e(of)i(Mon)o
+(treal.)60 499 y Fk(9)83 b(The)27 b(ITSOL)h(directory)60 609
+y Fl(In)16 b(ITSOL,)g(the)g(follo)o(wing)g(is)g(a)o(v)m(ailable.)120
+669 y Fh(ILUT)253 b Fl(Preconditioned)16 b(GMRES)g(algorithm)f(with)h(four)h
+(preconditioners:)120 789 y Fh(pgmres)212 b Fl(Preconditioned)16
+b(GMRES)g(solv)o(er.)21 b(This)16 b(solv)o(er)g(ma)o(y)e(b)q(e)j(used)f(with)
+h(all)510 849 y(four)i(of)g(the)g(precondioners)f(b)q(elo)o(w.)29
+b(Supp)q(orts)20 b(righ)o(t)e(preconditioning)510 909 y(only)l(.)120
+1018 y Fh(ilut)305 b Fl(A)13 b(robust)i(preconditioner)e(called)g(ILUT)g
+(whic)o(h)g(uses)i(a)f(dual)g(threshold-)510 1078 y(ing)h(strategy)g(for)g
+(dropping)h(elemen)o(ts.)i(Arbitrary)c(accuracy)g(is)h(allo)o(w)o(ed)510
+1138 y(in)h(ILUT.)120 1237 y Fh(ilutp)274 b Fl(ILUT)16 b(with)g(partial)g
+(piv)o(oting)120 1357 y Fh(ilu0)299 b Fl(simple)14 b(ILU\(0\))i
+(preconditioning)120 1477 y Fh(milu0)251 b Fl(MILU\(0\))16
+b(preconditioning)120 1597 y Fh(ITERS)220 b Fl(This)15 b(\014le)f(curren)o
+(tly)f(has)j(sev)o(eral)d(basic)i(iterativ)o(e)e(linear)h(system)g(solv)o
+(ers)510 1658 y(whic)o(h)i(use)g(rev)o(erse)f(comm)o(uni)o(cation.)k(They)d
+(are:)120 1766 y Fh(cg)337 b Fl(Conjugate)17 b(Gradien)o(t)f(Metho)q(d)120
+1886 y Fh(cgnr)283 b Fl(Conjugate)17 b(Gradien)o(t)f(Metho)q(d-)h(for)g
+(Normal)d(Residual)i(equation)120 2006 y Fh(b)r(cg)304 b Fl(BiConjugate)16
+b(Gradien)o(t)g(Metho)q(d)120 2127 y Fh(b)r(cgstab)202 b Fl(BCG)16
+b(stablized)120 2247 y Fh(tfqmr)250 b Fl(T)l(ransp)q(oseF)l(ree)17
+b(QuasiMinim)o(um)12 b(Residual)k(metho)q(d)120 2367 y Fh(gmres)243
+b Fl(Generalized)15 b(Minim)o(um)d(Residual)k(metho)q(d)120
+2487 y Fh(fgmres)226 b Fl(Flexible)14 b(v)o(ersion)h(of)i(Generalized)e
+(Minim)o(um)d(Residual)k(metho)q(d)120 2607 y Fh(dqgmres)182
+b Fl(Direct)15 b(v)o(ersions)h(of)h(Quasi)f(Generalized)f(Minim)o(um)d
+(Residual)k(metho)q(d)p eop
+%%Page: 28 28
+28 27 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(28)120
+132 y Fh(db)r(cg)273 b Fl(BCG)16 b(with)g(partial)h(piv)o(oting)60
+296 y Fk(10)83 b(The)27 b(UNSUPP)i(directory)60 406 y Fl(In)16
+b(addition)h(to)f(the)h(basic)f(to)q(ols)h(describ)q(ed)f(in)g(the)g
+(previous)g(sections,)g(SP)l(ARSKIT)g(includes)g(a)60 466 y(directory)e
+(called)f(UNSUPP)h(includes)f(soft)o(w)o(are)i(that)g(is)f(not)h(necessarily)
+e(p)q(ortable)i(or)g(that)g(do)q(es)60 526 y(not)21 b(\014t)f(in)f(all)h
+(previous)g(mo)q(dules.)32 b(F)l(or)20 b(example)e(soft)o(w)o(are)i(for)g
+(viewing)g(matrix)e(patterns)j(on)60 586 y(some)e(particular)h(w)o
+(orkstation)g(ma)o(y)f(b)q(e)h(found)g(here.)32 b(Another)20
+b(example)e(is)i(routines)g(related)60 647 y(to)f(matrix)d(exp)q(onen)o
+(tials.)28 b(Man)o(y)18 b(of)g(these)g(are)h(a)o(v)m(ailable)e(from)h(NETLIB)
+g(but)g(others)h(ma)o(y)e(b)q(e)60 707 y(con)o(tributed)e(b)o(y)h(researc)o
+(hers)g(for)g(comparison)g(purp)q(oses.)60 850 y Fi(10.1)70
+b(Plots)60 942 y Fl(The)16 b(follo)o(wing)g(items)f(are)h(a)o(v)m(ailable)f
+(in)h(PLOTS.)120 1092 y Fh(PSGRD)192 b Fl(con)o(tains)16 b(subroutine)h
+("psgrid")g(whic)o(h)f(plots)g(a)h(symmetri)o(c)c(graph.)120
+1212 y Fh(TEXPL)-5 b(T1)138 b Fl(con)o(tains)18 b(subroutine)g("texplt")g
+(allo)o(ws)g(sev)o(eral)f(matrices)f(in)i(the)g(same)510 1273
+y(picture)d(b)o(y)g(calling)g(texplt)g(sev)o(eral)g(times)e(and)k(exploiting)
+e(job)h(and)g(dif-)510 1333 y(feren)o(t)f(shifts.)120 1432
+y Fh(TEX)n(GRID1)96 b Fl(con)o(tains)18 b(subroutine)h("texgrd")g(whic)o(h)f
+(generates)g(tex)g(commands)f(for)510 1492 y(plotting)h(a)g(symmetri)o(c)d
+(graph)k(asso)q(ciated)g(with)e(a)h(mesh.)25 b(Allo)o(ws)17
+b(sev-)510 1552 y(eral)f(grids)g(in)g(the)g(same)f(picture)g(b)o(y)h(calling)
+f(texgrd)h(sev)o(eral)f(times)f(and)510 1612 y(exploiting)h(job)i(and)g
+(di\013eren)o(t)e(shifts.)60 1736 y Fi(10.2)70 b(Matrix)23
+b(Exp)r(onen)n(tials)60 1828 y Fl(Tw)o(o)17 b(subroutines)f(are)h(a)o(v)m
+(ailable)e(in)h(this)g(directory)l(.)120 1978 y Fh(EXPPR)n(O)153
+b Fl(A)17 b(subroutine)g(for)h(computing)e(the)h(pro)q(duct)h(of)g(a)f
+(matrix)f(exp)q(onen)o(tial)510 2038 y(times)e(a)j(v)o(ector,)e(i.e.)20
+b Fj(w)15 b Fl(=)f Fj(exp)p Fl(\()p Fj(t)h(A)p Fl(\))h Fj(v)r
+Fl(.)120 2152 y Fh(PHIPR)n(O)167 b Fl(computes)12 b Fj(w)k
+Fl(=)d Fj(\036)p Fl(\()p Fj(A)g(t)p Fl(\))h Fj(v)r Fl(,)f(where)g
+Fj(\036)p Fl(\()p Fj(x)p Fl(\))g(=)h(\(1)6 b Fg(\000)g Fj(exp)p
+Fl(\()p Fj(x)p Fl(\)\))p Fj(=x)p Fl(;)14 b(Also)f(allo)o(ws)510
+2213 y(to)k(solv)o(e)e(the)h(system)f(of)h(ODE's)h Fj(y)1174
+2194 y Fb(0)1199 2213 y Fl(=)d Fj(Ay)e Fl(+)f Fj(b)p Fl(.)60
+2350 y Fk(11)83 b(Distribution)60 2459 y Fl(The)18 b(SP)l(ARSKIT)g(pac)o(k)m
+(age)h(follo)o(ws)f(the)g(Linpac)o(k-Eispac)o(k)g(approac)o(h)h(in)f(that)h
+(it)e(aims)h(at)g(pro-)60 2519 y(viding)d(e\016cien)o(t)e(and)i(w)o(ell)f
+(tested)h(subroutines)g(written)g(in)g(p)q(ortable)g(F)o(OR)l(TRAN.)e
+(Similarly)g(to)60 2580 y(the)g(Linpac)o(k)g(and)h(Eispac)o(k)e(pac)o(k)m
+(ages,)i(the)f(goal)h(is)f(to)h(mak)o(e)d(a)o(v)m(ailable)i(a)g(common)e
+(base)j(of)f(useful)60 2640 y(co)q(des)j(for)g(a)g(sp)q(eci\014c)f(area)h(of)
+g(computation,)e(in)i(this)f(case)h(sparse)g(linear)f(algebra.)21
+b(The)16 b(pac)o(k)m(age)60 2700 y(is)g(in)g(the)g(public)f(domain)h(and)h
+(will)e(b)q(e)h(made)f(accessible)g(through)i(the)f(in)o(ternet.)p
+eop
+%%Page: 29 29
+29 28 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(29)120
+132 y(See)12 b(Figure)f(1)i(for)f(an)h(illustration)e(of)i(the)f
+(organization)h(of)f(SP)l(ARSKIT.)f(Read)h(the)g(README)60
+192 y(\014le)k(in)f(the)h(main)f(directory)h(for)g(more)f(information.)120
+252 y(F)l(or)h(information)g(concerning)f(distribution)h(con)o(tact)g(the)g
+(author)i(at)e(saad@cs.umn.edu.)60 418 y Fk(12)83 b(Conclusion)26
+b(and)h(F)-7 b(uture)27 b(Plans)60 528 y Fl(It)11 b(is)f(hop)q(ed)i(that)g
+(SP)l(ARSKIT)e(will)g(b)q(e)h(useful)g(in)g(man)o(y)e(w)o(a)o(ys)i(to)h
+(researc)o(hers)e(in)h(di\013eren)o(t)f(areas)i(of)60 588 y(scien)o(ti\014c)f
+(computing.)19 b(In)13 b(this)f(v)o(ersion)g(of)i(SP)l(ARSKIT,)d(there)i(are)
+g(few)f(sparse)i(problem)d(solv)o(ers,)60 648 y(suc)o(h)16
+b(as)g(direct)f(solution)h(metho)q(ds,)g(or)g(eigen)o(v)m(alue)f(solv)o(ers.)
+20 b(Some)15 b(of)h(these)g(are)g(a)o(v)m(ailable)f(from)60
+708 y(di\013eren)o(t)e(sources)i(and)g(w)o(e)f(felt)f(that)i(it)f(w)o(as)h
+(not)g(appropriate)f(to)h(pro)o(vide)f(additional)g(ones.)21
+b(The)60 769 y(original)16 b(motiv)m(ation)e(for)i(SP)l(ARSKIT)g(is)f(that)h
+(there)g(is)f(a)h(gap)h(to)f(\014ll)f(in)g(the)h(manipulation)e(and)60
+829 y(basic)i(computations)f(with)h(sparse)g(matrices.)j(Once)c(this)h(gap)h
+(is)e(\014lled)g(with)g(some)g(satisfaction,)60 889 y(then)h(additional)g
+(functionalit)o(y)f(ma)o(y)g(b)q(e)h(added.)120 949 y(W)l(e)i(brie\015y)f
+(men)o(tioned)f(in)i(the)f(in)o(tro)q(duction)h(the)g(p)q(ossibilit)o(y)f(of)
+i(using)f(SP)l(ARSKIT)g(to)g(de-)60 1009 y(v)o(elop)12 b(an)h(in)o(teractiv)o
+(e)d(pac)o(k)m(age.)20 b(Large)13 b(matrices)e(of)i(dimension)e(tens)h(of)h
+(of)g(thousands)h(can)f(easily)60 1070 y(b)q(e)19 b(manipulated)f(with)h(the)
+g(curren)o(t)f(sup)q(ercomputers,)h(in)f(real)h(time.)28 b(One)19
+b(of)g(the)g(di\016culties)60 1130 y(with)g(suc)o(h)f(an)i(in)o(teractiv)o(e)
+c(pac)o(k)m(age)j(is)g(that)g(w)o(e)g(do)g(not)h(y)o(et)e(ha)o(v)o(e)g
+(reliable)f(routines)i(for)g(com-)60 1190 y(puting)d(eigen)o(v)m(alues/eigen)
+o(v)o(ectors)d(of)j(large)g(sparse)g(matrices.)k(The)15 b(state)h(of)g(the)g
+(art)g(in)f(solving)60 1250 y(linear)j(systems)f(is)h(in)g(a)h(m)o(uc)o(h)d
+(b)q(etter)i(situation.)28 b(Ho)o(w)o(ev)o(er,)16 b(one)j(m)o(ust)e(not)i
+(con)o(template)d(p)q(er-)60 1310 y(forming)h(the)h(same)f(t)o(yp)q(e)h(of)h
+(computations)f(as)h(with)f(small)e(dense)i(matrices.)26 b(As)18
+b(an)h(example,)60 1370 y(getting)i(all)g(the)g(eigen)o(v)m(alues)f(of)h(a)h
+(sparse)g(matrix)d(is)i(not)h(lik)o(ely)c(to)k(b)q(e)f(to)q(o)h(useful)f
+(when)g(the)60 1431 y(matrix)15 b(is)h(v)o(ery)f(large.)120
+1491 y(Bey)o(ond)e(in)o(teractiv)o(e)e(soft)o(w)o(are)i(for)h(sparse)g
+(linear)f(algebra,)h(one)g(can)g(en)o(vision)e(the)h(in)o(tegration)60
+1551 y(of)h(SP)l(ARSKIT)g(in)g(a)g(larger)g(pac)o(k)m(age)h(dev)o(oted)e(to)i
+(solving)f(certain)f(t)o(yp)q(es)h(of)g(P)o(artial)g(Di\013eren)o(tial)60
+1611 y(Equations,)i(p)q(ossibly)h(in)o(teractiv)o(ely)l(.)60
+2061 y Fh(Ac)n(kno)n(wledgemen)n(ts.)29 b Fl(The)19 b(idea)g(of)h(creating)f
+(a)g(to)q(ol)h(pac)o(k)m(age)g(for)f(sparse)h(matrices)e(germi-)60
+2122 y(nated)12 b(while)e(the)i(author)g(w)o(as)g(at)g(the)g(Cen)o(ter)e(for)
+i(Sup)q(ercomputing)f(Researc)o(h)g(and)h(Dev)o(elopmen)o(t)60
+2182 y(of)k(the)f(Univ)o(ersit)o(y)e(of)j(Illinois)e(\(1986-1987\))19
+b(and)d(part)g(of)g(this)f(w)o(ork)h(w)o(as)g(p)q(erformed)e(there.)20
+b(Ini-)60 2242 y(tially)i(the)g(author)i(has)g(b)q(ene\014ted)f(from)f
+(helpful)g(commen)o(ts)e(from)i(Iain)g(Du\013)i(\(then)f(visiting)60
+2302 y(CSRD\))17 b(and)h(a)f(n)o(um)o(b)q(er)f(of)h(colleagues)g(at)g(CSRD.)g
+(Billy)e(Stew)o(art)i(and)g(his)g(studen)o(ts)g(at)h(NCSU)60
+2362 y(used)j(a)h(preliminary)c(v)o(ersion)i(of)i(SP)l(ARSKIT)e(in)h(a)g
+(class)g(pro)s(ject)g(and)g(made)f(some)g(v)m(aluable)60 2423
+y(commen)o(ts.)36 b(Ernie)21 b(Rothman)h(\(Cornell\))f(and)i(Laura)h(Dutto)e
+(\(Mon)o(treal\))g(con)o(tributed)f(some)60 2483 y(soft)o(w)o(are.)g(The)14
+b(author)h(has)g(also)f(b)q(ene\014ted)g(from)f(helpful)g(discussions)i(from)
+e(a)h(n)o(um)o(b)q(er)e(of)j(other)60 2543 y(colleagues,)20
+b(including)g(Mik)o(e)e(Heroux,)j(Giusepp)q(e)f(Radicatti,)g(Ahmed)f(Sameh,)g
+(Horst)i(Simon,)60 2603 y(Ph)o(uong)d(V)l(u,)e(and)i(Harry)e(Wijsho\013.)24
+b(Studen)o(ts)17 b(who)g(con)o(tributed)g(to)g(v)o(ersion)f(2)h(of)g(SP)l
+(ARSKIT)60 2663 y(include)e(Kesheng)h(W)l(u,)g(Edmond)g(Cho)o(w,)g(and)h
+(Dongli)g(Su.)p eop
+%%Page: 30 30
+30 29 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(30)60
+140 y Fk(References)84 249 y Fl([1])24 b(E.)19 b(C.)g(Anderson)h(and)g(Y.)e
+(Saad.)31 b(Solving)19 b(sparse)h(triangular)g(systems)e(on)i(parallel)e
+(com-)160 310 y(puters.)j(T)l(ec)o(hnical)15 b(Rep)q(ort)i(794,)g(Univ)o
+(ersit)o(y)c(of)k(Illinois,)d(CSRD,)j(Urbana,)f(IL,)g(1988.)84
+411 y([2])24 b(I.)c(S.)h(Du\013.)35 b(A)20 b(surv)o(ey)g(of)h(sparse)h
+(matrix)d(researc)o(h.)34 b(In)20 b Fq(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(the)
+h(IEEE,)g(65)p Fl(,)160 471 y(pages)17 b(500{535,)i(New)d(Y)l(ork,)f(1977.)i
+(Pren)o(tice)e(Hall.)84 573 y([3])24 b(I.)c(S.)g(Du\013,)i(A.)d(M.)h
+(Erisman,)g(and)h(J.)f(K.)g(Reid.)33 b Fq(Dir)n(e)n(ct)21 b(Metho)n(ds)f(for)
+h(Sp)n(arse)g(Matric)n(es)p Fl(.)160 633 y(Clarendon)c(Press,)f(Oxford,)g
+(1986.)84 735 y([4])24 b(I.)13 b(S.)g(Du\013,)h(R.)f(G.)g(Grimes,)f(and)i(J.)
+f(G.)g(Lewis.)k(Sparse)d(matrix)e(test)h(problems.)i Fq(A)o(CM)g(tr)n(ans.)
+160 795 y(Math.)i(Soft.)p Fl(,)g(15:1{14,)g(1989.)84 897 y([5])24
+b(T.)18 b(C.)f(Opp)q(e)h(W)l(a)o(yne)f(Joub)q(ert)i(and)f(D.)f(R.)g(Kincaid.)
+25 b(Nsp)q(cg)18 b(user's)g(guide.)f(a)h(pac)o(k)m(age)g(for)160
+957 y(solving)j(large)g(linear)f(systems)f(b)o(y)h(v)m(arious)i(iterativ)o(e)
+d(metho)q(ds.)34 b(T)l(ec)o(hnical)19 b(rep)q(ort,)j(The)160
+1017 y(Univ)o(ersit)o(y)14 b(of)i(T)l(exas)h(at)g(Austin,)e(1988.)84
+1119 y([6])24 b(T.)16 b(C.)g(Opp)q(e)g(and)g(D.)g(R.)f(Kincaid.)20
+b(The)c(p)q(erformance)f(of)h(ITP)l(A)o(CK)f(on)h(v)o(ector)f(computers)160
+1179 y(for)24 b(solving)e(large)h(sparse)h(linear)e(systems)g(arising)h(in)g
+(sample)f(oil)g(reserv)o(oir)g(sim)o(ulation)160 1239 y(problems.)e
+Fq(Communic)n(ations)e(in)f(applie)n(d)h(numeric)n(al)g(metho)n(ds)p
+Fl(,)d(2:1{7,)i(1986.)84 1341 y([7])24 b(O.)d(Osterb)o(y)f(and)h(Z.)f
+(Zlatev.)34 b Fq(Dir)n(e)n(ct)21 b(metho)n(ds)g(for)g(sp)n(arse)g(matric)n
+(es)p Fl(.)34 b(Springer)21 b(V)l(erlag,)160 1401 y(New)16
+b(Y)l(ork,)f(1983.)84 1503 y([8])24 b(Y.)19 b(Saad.)31 b(Cheb)o(yshev)19
+b(acceleration)f(tec)o(hniques)g(for)i(solving)f(nonsymmetric)d(eigen)o(v)m
+(alue)160 1563 y(problems.)k Fq(Mathematics)e(of)f(Computation)p
+Fl(,)f(42:567{588,)j(1984.)84 1665 y([9])24 b(Y.)e(Saad.)42
+b(Krylo)o(v)22 b(subspace)i(metho)q(ds)e(on)h(sup)q(ercomputers.)40
+b Fq(SIAM)24 b(J.)f(Scient.)i(Stat.)160 1725 y(Comput.)p Fl(,)16
+b(10:1200{1232)q(,)j(1989.)60 1827 y([10])24 b(G.W.)15 b(Stew)o(art.)k(SRRIT)
+14 b(-)i(a)f(F)o(OR)l(TRAN)e(subroutine)j(to)f(calculate)f(the)h(dominan)o(t)
+f(in)o(v)m(ari-)160 1887 y(an)o(t)j(subspaces)g(of)g(a)f(real)g(matrix.)k(T)l
+(ec)o(hnical)15 b(Rep)q(ort)i(TR-514,)g(Univ)o(ersit)o(y)d(of)j(Maryland,)160
+1947 y(College)f(P)o(ark,)g(MD,)f(1978.)60 2049 y([11])24 b(D.)13
+b(M.)f(Y)l(oung,)i(T.C.)e(Opp)q(e,)h(D.)g(R.)f(Kincaid,)g(and)i(L.)f(J.)f(Ha)
+o(y)o(es.)j(On)e(the)f(use)h(of)g(v)o(ector)f(com-)160 2109
+y(puters)18 b(for)g(solving)g(large)g(sparse)g(linear)f(systems.)25
+b(T)l(ec)o(hnical)16 b(Rep)q(ort)i(CNA-199,)h(Cen)o(ter)160
+2169 y(for)e(Numerical)c(Analysis,)i(Univ)o(ersit)o(y)f(of)j(T)l(exas)f(at)h
+(Austin,)e(Austin,)g(T)l(exas,)h(1985.)60 2271 y([12])24 b(Z.)19
+b(Zlatev,)h(K.)f(Sc)o(haum)o(burg,)g(and)h(J.)f(W)l(asniewski.)31
+b(A)20 b(testing)f(sc)o(heme)f(for)i(subroutines)160 2331 y(solving)c(large)h
+(linear)e(problems.)20 b Fq(Computers)d(and)h(Chemistry)p Fl(,)d(5:91{100,)j
+(1981.)p eop
+%%Page: 31 31
+31 30 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(31)540
+132 y Fh(APPENDIX:)19 b(QUICK)g(REFERENCE)120 282 y Fl(F)l(or)12
+b(con)o(v)o(enience)e(w)o(e)h(list)g(in)h(this)f(app)q(endix)h(the)g(most)f
+(imp)q(ortan)o(t)g(subroutines)h(in)g(the)f(v)m(arious)60 342
+y(mo)q(dules)17 b(of)i(SP)l(ARSKIT.)f(More)g(detailed)f(information)h(can)g
+(b)q(e)h(found)g(either)e(in)h(the)g(b)q(o)q(dy)i(of)60 402
+y(the)c(pap)q(er)h(or)f(in)g(the)g(do)q(cumen)o(tation)g(of)g(the)g(pac)o(k)m
+(age.)748 552 y Fh(F)n(ORMA)-5 b(TS)21 b(Mo)r(dule)133 660
+y Fg(\017)j Fl(CSRDNS)16 b(:)g(con)o(v)o(erts)f(a)i(ro)o(w-stored)g(sparse)g
+(matrix)e(in)o(to)g(the)h(dense)h(format.)133 760 y Fg(\017)24
+b Fl(DNSCSR)16 b(:)g(con)o(v)o(erts)f(a)i(dense)f(matrix)f(to)h(a)h(sparse)g
+(storage)g(format.)133 860 y Fg(\017)24 b Fl(COOCSR)17 b(:)e(con)o(v)o(erts)h
+(co)q(ordinate)g(to)h(to)g(csr)f(format)133 960 y Fg(\017)24
+b Fl(COICSR)16 b(:)g(in-place)g(con)o(v)o(ersion)f(of)h(co)q(ordinate)h(to)g
+(csr)f(format)133 1059 y Fg(\017)24 b Fl(CSR)o(COO)16 b(:)g(con)o(v)o(erts)f
+(compressed)g(sparse)i(ro)o(w)g(to)f(co)q(ordinate)h(format.)133
+1159 y Fg(\017)24 b Fl(CSRSSR)17 b(:)e(con)o(v)o(erts)h(compressed)f(sparse)h
+(ro)o(w)h(to)g(symme)o(tric)c(sparse)k(ro)o(w)f(format.)133
+1259 y Fg(\017)24 b Fl(SSR)o(CSR)16 b(:)g(con)o(v)o(erts)f(symmetric)e
+(sparse)j(ro)o(w)h(to)g(compressed)e(sparse)h(ro)o(w)h(format.)133
+1359 y Fg(\017)24 b Fl(CSRELL)18 b(:)d(con)o(v)o(erts)h(compressed)f(sparse)h
+(ro)o(w)h(to)g(Ellpac)o(k)e(format)133 1459 y Fg(\017)24 b
+Fl(ELLCSR)18 b(:)d(con)o(v)o(erts)h(Ellpac)o(k)f(format)g(to)i(compressed)e
+(sparse)i(ro)o(w)f(format.)133 1559 y Fg(\017)24 b Fl(CSRMSR)15
+b(:)f(con)o(v)o(erts)g(compressed)f(sparse)i(ro)o(w)g(format)f(to)h(mo)q
+(di\014ed)f(sparse)h(ro)o(w)g(format.)133 1659 y Fg(\017)24
+b Fl(MSR)o(CSR)14 b(:)h(con)o(v)o(erts)f(mo)q(di\014ed)f(sparse)j(ro)o(w)f
+(format)f(to)h(compressed)f(sparse)h(ro)o(w)g(format.)133 1759
+y Fg(\017)24 b Fl(CSR)o(CSC)c(:)f(con)o(v)o(erts)f(compressed)g(sparse)i(ro)o
+(w)f(format)g(to)h(compressed)e(sparse)i(column)182 1820 y(format)15
+b(\(transp)q(osition\).)133 1920 y Fg(\017)24 b Fl(CSRLNK)16
+b(:)g(con)o(v)o(erts)f(compressed)g(sparse)i(ro)o(w)g(to)f(link)o(ed)f(list)h
+(format.)133 2020 y Fg(\017)24 b Fl(LNK)o(CSR)16 b(:)g(con)o(v)o(erts)f(link)
+o(ed)g(list)g(format)h(to)g(compressed)f(sparse)i(ro)o(w)g(fm)o(t.)133
+2119 y Fg(\017)24 b Fl(CSRDIA)16 b(:)g(con)o(v)o(erts)f(the)h(compressed)f
+(sparse)i(ro)o(w)f(format)g(in)o(to)g(the)g(diagonal)h(format.)133
+2219 y Fg(\017)24 b Fl(DIA)o(CSR)15 b(:)h(con)o(v)o(erts)g(the)g(diagonal)h
+(format)e(in)o(to)h(the)g(compressed)f(sparse)i(ro)o(w)f(format.)133
+2319 y Fg(\017)24 b Fl(BSR)o(CSR)18 b(:)h(con)o(v)o(erts)f(the)h(blo)q(c)o
+(k-ro)o(w)f(sparse)i(format)e(in)o(to)h(the)g(compressed)e(sparse)j(ro)o(w)
+182 2380 y(format.)133 2480 y Fg(\017)k Fl(CSRBSR)19 b(:)f(con)o(v)o(erts)g
+(the)g(compressed)g(sparse)h(ro)o(w)g(format)g(in)o(to)f(the)h(blo)q(c)o
+(k-ro)o(w)f(sparse)182 2540 y(format.)133 2640 y Fg(\017)24
+b Fl(CSRBND)d(:)g(con)o(v)o(erts)g(the)g(compressed)f(sparse)i(ro)o(w)g
+(format)e(in)o(to)i(the)f(banded)h(format)182 2700 y(\(Linpac)o(k)16
+b(st)o(yle\).)p eop
+%%Page: 32 32
+32 31 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(32)133
+132 y Fg(\017)24 b Fl(BNDCSR)13 b(:)h(con)o(v)o(erts)e(the)i(banded)g(format)
+f(\(Linpac)o(k)g(st)o(yle\))g(in)o(to)g(the)h(compressed)e(sparse)182
+192 y(ro)o(w)k(storage.)133 293 y Fg(\017)24 b Fl(CSRSSK)c(:)g(con)o(v)o
+(erts)f(the)h(compressed)f(sparse)h(ro)o(w)h(format)e(to)h(the)g(symmetric)c
+(skyline)182 354 y(format)133 455 y Fg(\017)24 b Fl(SSKSSR)16
+b(:)g(con)o(v)o(erts)g(symme)o(tric)d(skyline)i(format)g(to)i(symmetri)o(c)c
+(sparse)k(ro)o(w)g(format.)133 557 y Fg(\017)24 b Fl(CSRJAD)16
+b(:)g(con)o(v)o(erts)f(the)h(csr)h(format)e(in)o(to)h(the)g(jagged)h
+(diagonal)g(format.)133 659 y Fg(\017)24 b Fl(JADCSR)16 b(:)g(con)o(v)o(erts)
+f(the)h(jagged-diagonal)j(format)c(in)o(to)h(the)g(csr)g(format.)133
+760 y Fg(\017)24 b Fl(CSR)o(USS)16 b(:)g(con)o(v)o(erts)f(the)h(csr)g(format)
+g(to)g(unsymmetric)d(sparse)k(skyline)d(format.)133 862 y Fg(\017)24
+b Fl(USSCSR)16 b(:)g(con)o(v)o(erts)f(unsymmetric)e(sparse)k(skyline)e
+(format)g(to)i(the)f(csr)g(format.)133 964 y Fg(\017)24 b Fl(CSRSSS)17
+b(:)f(con)o(v)o(erts)f(the)h(csr)g(format)f(to)i(symmetric)12
+b(sparse)17 b(skyline)e(format.)133 1066 y Fg(\017)24 b Fl(SSSCSR)17
+b(:)f(con)o(v)o(erts)f(symmetri)o(c)e(sparse)k(skyline)e(format)g(to)i(the)f
+(csr)g(format.)133 1167 y Fg(\017)24 b Fl(CSR)-5 b(VBR)15 b(:)h(con)o(v)o
+(erts)f(compressed)g(sparse)i(ro)o(w)f(in)o(to)g(v)m(ariable)g(blo)q(c)o(k)g
+(ro)o(w)g(format.)133 1269 y Fg(\017)24 b Fl(VBR)o(CSR)15 b(:)h(con)o(v)o
+(erts)f(the)h(v)m(ariable)g(blo)q(c)o(k)g(ro)o(w)g(format)g(in)o(to)g(the)133
+1371 y Fg(\017)24 b Fl(COOELL)19 b(:)e(con)o(v)o(erts)g(the)g(co)q(ordinate)i
+(format)d(in)o(to)i(the)f(Ellpac)o(k/Itpac)o(k)f(format.)25
+b(com-)182 1431 y(pressed)16 b(sparse)h(ro)o(w)g(format.)783
+1635 y Fh(UNAR)-5 b(Y)20 b(Mo)r(dule)133 1749 y Fg(\017)k Fl(SUBMA)l(T)15
+b(:)h(extracts)g(a)g(submatrix)f(from)g(a)i(sparse)g(matrix.)133
+1851 y Fg(\017)24 b Fl(FIL)l(TER)16 b(:)g(\014lters)g(elemen)o(ts)d(from)j(a)
+g(matrix)f(according)h(to)h(their)e(magnitude.)133 1953 y Fg(\017)24
+b Fl(FIL)l(TERM:)16 b(Same)f(as)i(ab)q(o)o(v)o(e,)e(but)i(for)f(the)g(MSR)g
+(format.)133 2054 y Fg(\017)24 b Fl(TRANSP)16 b(:)g(in-place)f(transp)q
+(osition)j(routine)e(\(see)f(also)i(CSR)o(CSC)g(in)f(formats\))133
+2156 y Fg(\017)24 b Fl(GETELM)17 b(:)f(returns)g Fj(a)p Fl(\()p
+Fj(i;)8 b(j)s Fl(\))16 b(for)g(an)o(y)g(\()p Fj(i;)8 b(j)s
+Fl(\))16 b(from)f(a)i(CSR-stored)g(matrix.)133 2258 y Fg(\017)24
+b Fl(COPMA)l(T)16 b(:)g(copies)g(a)g(matrix)f(in)o(to)h(another)h(matrix)d
+(\(b)q(oth)j(stored)g(csr\).)133 2359 y Fg(\017)24 b Fl(MSR)o(COP)16
+b(:)g(copies)g(a)g(matrix)f(in)h(MSR)g(format)f(in)o(to)h(a)h(matrix)d(in)i
+(MSR)g(format.)133 2461 y Fg(\017)24 b Fl(GETELM)17 b(:)f(returns)g(a\(i,j\))
+g(for)g(an)o(y)h(\(i,j\))e(from)g(a)i(CSR-stored)g(matrix.)133
+2563 y Fg(\017)24 b Fl(GETDIA)16 b(:)g(extracts)g(a)h(sp)q(eci\014ed)e
+(diagonal)i(from)f(a)g(matrix.)133 2664 y Fg(\017)24 b Fl(GETL)17
+b(:)f(extracts)g(lo)o(w)o(er)f(triangular)i(part.)p eop
+%%Page: 33 33
+33 32 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(33)133
+132 y Fg(\017)24 b Fl(GETU)16 b(:)g(extracts)g(upp)q(er)h(triangular)f(part.)
+133 232 y Fg(\017)24 b Fl(LEVELS)17 b(:)f(gets)h(the)f(lev)o(el)e(sc)o
+(heduling)h(structure)h(for)g(lo)o(w)o(er)g(triangular)g(matrices.)133
+332 y Fg(\017)24 b Fl(AMASK)15 b(:)h(extracts)g Fj(C)h Fl(=)d
+Fj(A)c Fg(\014)h Fj(M)133 433 y Fg(\017)24 b Fl(RPERM)16 b(:)g(p)q(erm)o
+(utes)e(the)i(ro)o(ws)h(of)g(a)f(matrix)f(\()p Fj(B)h Fl(=)e
+Fj(P)7 b(A)p Fl(\))133 533 y Fg(\017)24 b Fl(CPERM)16 b(:)g(p)q(erm)o(utes)f
+(the)h(columns)f(of)h(a)h(matrix)d(\()p Fj(B)j Fl(=)d Fj(AQ)p
+Fl(\))133 633 y Fg(\017)24 b Fl(DPERM)16 b(:)g(p)q(erm)o(utes)f(a)h(matrix)f
+(\()p Fj(B)h Fl(=)e Fj(P)7 b(AQ)p Fl(\))16 b(giv)o(en)f(t)o(w)o(o)h(p)q(erm)o
+(utations)g(P)l(,)g(Q)133 734 y Fg(\017)24 b Fl(DPERM2)17 b(:)k(general)16
+b(submatrix)f(p)q(erm)o(utation/extraction)g(routine.)133 834
+y Fg(\017)24 b Fl(DMPERM)16 b(:)g(symmetri)o(c)d(p)q(erm)o(utation)i(of)i(ro)
+o(w)f(and)h(column)e(\(B=P)l(AP'\))g(in)h(MSR)g(fm)o(t.)133
+934 y Fg(\017)24 b Fl(D)o(VPERM)16 b(:)f(p)q(erm)o(utes)g(a)i(v)o(ector)e
+(\(in-place\).)133 1034 y Fg(\017)24 b Fl(IVPERM)15 b(:)h(p)q(erm)o(utes)f
+(an)h(in)o(teger)g(v)o(ector)f(\(in-place\).)133 1135 y Fg(\017)24
+b Fl(RETMX)16 b(:)g(returns)g(the)g(max)f(absolute)i(v)m(alue)f(in)f(eac)o(h)
+h(ro)o(w)h(of)f(the)g(matrix.)133 1235 y Fg(\017)24 b Fl(DIAPOS)16
+b(:)g(returns)g(the)g(p)q(ositions)h(of)g(the)f(diagonal)h(elemen)o(ts)c(in)j
+(A.)133 1335 y Fg(\017)24 b Fl(EXTBDG)16 b(:)g(extracts)g(the)g(main)f
+(diagonal)i(blo)q(c)o(ks)f(of)g(a)h(matrix.)133 1436 y Fg(\017)24
+b Fl(GETBWD)17 b(:)f(returns)g(the)g(bandwidth)h(information)e(on)i(a)f
+(matrix.)133 1536 y Fg(\017)24 b Fl(BLKFND)16 b(:)g(\014nds)g(the)g(blo)q(c)o
+(k-size)f(of)i(a)g(matrix.)133 1636 y Fg(\017)24 b Fl(BLK)o(CHK)15
+b(:)h(c)o(hec)o(ks)f(whether)h(a)h(giv)o(en)e(in)o(teger)g(is)h(the)g(blo)q
+(c)o(k)g(size)f(of)i Fj(A)p Fl(.)133 1737 y Fg(\017)24 b Fl(INFDIA)15
+b(:)g(obtains)i(information)f(on)g(the)g(diagonals)i(of)e Fj(A)p
+Fl(.)133 1837 y Fg(\017)24 b Fl(AMUBDG)15 b(:)h(computes)f(the)h(n)o(um)o(b)q
+(er)e(of)j(nonzero)g(elemen)n(ts)d(in)i(eac)o(h)g(ro)o(w)g(of)h
+Fj(A)10 b Fg(\003)h Fj(B)s Fl(.)133 1937 y Fg(\017)24 b Fl(APLBDG)16
+b(:)g(computes)f(the)h(n)o(um)o(b)q(er)f(of)h(nonzero)h(elemen)o(ts)c(in)j
+(eac)o(h)g(ro)o(w)g(of)h Fj(A)11 b Fl(+)g Fj(B)s Fl(.)133 2038
+y Fg(\017)24 b Fl(RNRMS)15 b(:)h(computes)f(the)h(norms)g(of)g(the)g(ro)o(ws)
+h(of)g Fj(A)p Fl(.)133 2138 y Fg(\017)24 b Fl(CNRMS)16 b(:)f(computes)h(the)g
+(norms)f(of)i(the)f(columns)f(of)h Fj(A)p Fl(.)133 2238 y Fg(\017)24
+b Fl(R)o(OSCAL)16 b(:)g(scales)g(the)g(ro)o(ws)h(of)f(a)h(matrix)d(b)o(y)i
+(their)g(norms.)133 2339 y Fg(\017)24 b Fl(COSCAL)17 b(:)f(scales)g(the)g
+(columns)f(of)h(a)h(matrix)d(b)o(y)i(their)f(norms.)133 2439
+y Fg(\017)24 b Fl(ADDBLK)16 b(:)g(adds)h(a)g(matrix)d(B)i(in)o(to)g(a)h(blo)q
+(c)o(k)e(of)i(A.)133 2539 y Fg(\017)24 b Fl(GET1UP)18 b(:)f(collects)f(the)h
+(\014rst)h(elemen)o(ts)d(of)i(eac)o(h)g(ro)o(w)h(of)g(the)f(upp)q(er)g
+(triangular)h(p)q(ortion)182 2600 y(of)e(the)g(matrix.)133
+2700 y Fg(\017)24 b Fl(XTR)o(O)o(WS)15 b(:)h(extracts)g(giv)o(en)f(ro)o(ws)i
+(from)e(a)i(matrix)d(in)i(CSR)h(format.)p eop
+%%Page: 34 34
+34 33 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(34)793
+132 y Fh(INOUT)19 b(Mo)r(dule)133 244 y Fg(\017)24 b Fl(READMT)16
+b(:)g(reads)g(matrices)f(in)h(the)g(b)q(o)q(eing/Harw)o(ell)g(format.)133
+346 y Fg(\017)24 b Fl(PR)l(TMT)16 b(:)g(prin)o(ts)g(matrices)e(in)i(the)g(b)q
+(o)q(eing/Harw)o(ell)g(format.)133 447 y Fg(\017)24 b Fl(DUMP)16
+b(:)g(prin)o(ts)g(ro)o(ws)g(of)h(a)f(matrix,)f(in)g(a)i(readable)f(format.)
+133 548 y Fg(\017)24 b Fl(PL)l(TMT)17 b(:)f(pro)q(duces)h(a)f('pic')f(\014le)
+h(for)g(plotting)g(a)h(sparse)g(matrix.)133 650 y Fg(\017)24
+b Fl(PSPL)l(TM)17 b(:)f(Generates)g(a)h(p)q(ost-script)g(plot)f(of)h(the)f
+(non-zero)g(pattern)h(of)f(A.)133 751 y Fg(\017)24 b Fl(SMMS)16
+b(:)g(W)l(rite)f(the)h(matrix)f(in)g(a)i(format)f(used)g(in)g(SMMS)g(pac)o(k)
+m(age.)133 852 y Fg(\017)24 b Fl(READSM)16 b(:)g(Reads)g(matrices)f(in)h(co)q
+(ordinate)g(format)g(\(as)h(in)f(SMMS)f(pac)o(k)m(age\).)133
+954 y Fg(\017)24 b Fl(READSK)16 b(:)g(Reads)g(matrices)f(in)h(CSR)g(format)g
+(\(simpli\014ed)d(H/B)j(formate\).)133 1055 y Fg(\017)24 b
+Fl(SKIT)16 b(:)g(W)l(rites)g(matrices)e(to)j(a)f(\014le,)f(format)h(same)f
+(as)i(ab)q(o)o(v)o(e.)133 1157 y Fg(\017)24 b Fl(PR)l(TUNF)15
+b(:)h(W)l(rites)g(matrices)e(\(in)i(CSR)h(format\))e(unformatted.)133
+1258 y Fg(\017)24 b Fl(READUNF)15 b(:)h(Reads)g(unformatted)g(data)h(of)g
+(matrices)d(\(in)i(CSR)g(format\).)817 1461 y Fh(INF)n(O)j(Mo)r(dule)133
+1574 y Fg(\017)24 b Fl(INF)o(OFUN)14 b(:)i(routines)g(for)g(statistics)g(on)h
+(a)g(sparse)g(matrix.)760 1776 y Fh(MA)-5 b(TGEN)19 b(Mo)r(dule)133
+1889 y Fg(\017)24 b Fl(GEN57PT)17 b(:)f(generates)h(5-p)q(oin)o(t)g(and)f
+(7-p)q(oin)o(t)h(matrices.)133 1990 y Fg(\017)24 b Fl(GEN57BL)17
+b(:)f(generates)g(blo)q(c)o(k)g(5-p)q(oin)o(t)h(and)g(7-p)q(oin)o(t)g
+(matrices.)133 2092 y Fg(\017)24 b Fl(GENFEA)16 b(:)g(generates)g(\014nite)g
+(elemen)o(t)d(matrices)h(in)i(assem)o(bled)f(form.)133 2193
+y Fg(\017)24 b Fl(GENFEU)16 b(:)g(generates)g(\014nite)g(elemen)o(t)d
+(matrices)h(in)i(unassem)o(bled)f(form.)133 2295 y Fg(\017)24
+b Fl(ASSMB1)16 b(:)21 b(assem)o(bles)14 b(an)j(unassem)o(bled)e(matrix)f
+(\(as)j(pro)q(duced)g(b)o(y)f(genfeu\).)133 2396 y Fg(\017)24
+b Fl(MA)l(TRF2)16 b(:)21 b(Routines)16 b(for)h(generating)f(sparse)h
+(matrices)d(b)o(y)i(Zlatev)f(et)h(al.)133 2497 y Fg(\017)24
+b Fl(DCN:)16 b(Routines)g(for)g(generating)h(sparse)g(matrices)d(b)o(y)i
+(Zlatev)f(et)h(al.)133 2599 y Fg(\017)24 b Fl(ECN:)16 b(Routines)g(for)g
+(generating)h(sparse)g(matrices)d(b)o(y)i(Zlatev)f(et)h(al.)133
+2700 y Fg(\017)24 b Fl(MARK)o(GEN:)14 b(subroutine)j(to)g(pro)q(duce)f(a)h
+(Mark)o(o)o(v)e(c)o(hain)h(matrix)e(for)j(a)g(random)e(w)o(alk.)p
+eop
+%%Page: 35 35
+35 34 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(35)772
+132 y Fh(BLASSM)19 b(Mo)r(dule)133 241 y Fg(\017)24 b Fl(AMUB)15
+b(:)g(computes)g Fj(C)j Fl(=)13 b Fj(A)e Fg(\003)g Fj(B)19
+b Fl(.)133 341 y Fg(\017)24 b Fl(APLB)16 b(:)g(computes)f Fj(C)i
+Fl(=)d Fj(A)d Fl(+)g Fj(B)18 b Fl(.)133 442 y Fg(\017)24 b
+Fl(APLSB)16 b(:)g(computes)f Fj(C)i Fl(=)d Fj(A)d Fl(+)g Fj(sB)s
+Fl(.)133 542 y Fg(\017)24 b Fl(APMBT)15 b(:)h(Computes)g Fj(C)h
+Fl(=)d Fj(A)d Fg(\006)f Fj(B)884 524 y Ff(T)911 542 y Fl(.)133
+643 y Fg(\017)24 b Fl(APLSBT)16 b(:)g(Computes)g Fj(C)h Fl(=)d
+Fj(A)c Fl(+)h Fj(s)g Fg(\003)g Fj(B)966 625 y Ff(T)1010 643
+y Fl(.)133 743 y Fg(\017)24 b Fl(DIAMUA)14 b(:)i(Computes)g
+Fj(C)h Fl(=)d Fj(D)q(iag)f Fg(\003)e Fj(A)16 b Fl(.)133 844
+y Fg(\017)24 b Fl(AMUDIA)14 b(:)i(Computes)g Fj(C)h Fl(=)d
+Fj(A)d Fg(\003)g Fj(D)q(iag)18 b Fl(.)133 944 y Fg(\017)24
+b Fl(APLDIA)16 b(:)g(Computes)f Fj(C)j Fl(=)13 b Fj(A)e Fl(+)g
+Fj(D)q(iag)18 b Fl(.)133 1045 y Fg(\017)24 b Fl(APLSCA)16 b(:)g(Computes)g
+Fj(A)d Fl(:=)g Fj(A)e Fl(+)g Fj(sI)20 b Fl(\()p Fj(s)c Fl(=)g(scalar\).)763
+1244 y Fh(MA)-5 b(TVEC)20 b(Mo)r(dule)133 1354 y Fg(\017)k
+Fl(AMUX)15 b(:)g Fj(A)h Fl(times)f(a)h(v)o(ector.)k(Compressed)c(Sparse)h(Ro)
+o(w)f(\(CSR\))h(format.)133 1454 y Fg(\017)24 b Fl(A)l(TMUX)15
+b(:)h Fj(A)451 1436 y Ff(T)494 1454 y Fl(times)e(a)j(v)o(ector.)j(CSR)d
+(format.)133 1555 y Fg(\017)24 b Fl(AMUXE)15 b(:)h Fj(A)f Fl(times)g(a)h(v)o
+(ector.)21 b(Ellpac)o(k/Itpac)o(k)14 b(\(ELL\))k(format.)133
+1655 y Fg(\017)24 b Fl(AMUXD)15 b(:)h Fj(A)f Fl(times)g(a)h(v)o(ector.)21
+b(Diagonal)c(\(DIA\))f(format.)133 1756 y Fg(\017)24 b Fl(AMUXJ)15
+b(:)g Fj(A)h Fl(times)f(a)h(v)o(ector.)21 b(Jagged)c(Diagonal)g(\(JAD\))f
+(format.)133 1856 y Fg(\017)24 b Fl(VBRMV)14 b(:)i Fj(A)g Fl(times)e(a)j(v)o
+(ector.)j(V)l(ariable)c(Blo)q(c)o(k)f(Ro)o(w)h(\(VBR\))f(format.)133
+1957 y Fg(\017)24 b Fl(LSOL)e(:)f(Unit)g(lo)o(w)o(er)f(triangular)i(system)d
+(solution.)37 b(Compressed)21 b(Sparse)g(Ro)o(w)h(\(CSR\))182
+2017 y(format.)133 2117 y Fg(\017)i Fl(LDSOL)17 b(:)f(Lo)o(w)o(er)h
+(triangular)f(system)f(solution.)21 b(Mo)q(di\014ed)c(Sparse)f(Ro)o(w)h
+(\(MSR\))f(format.)133 2218 y Fg(\017)24 b Fl(LSOL)16 b(:)e(Unit)g(lo)o(w)o
+(er)g(triangular)i(system)d(solution.)21 b(Compressed)14 b(Sparse)i(Column)e
+(\(CSC\))182 2278 y(format.)133 2379 y Fg(\017)24 b Fl(LDSOLC:)17
+b(Lo)o(w)o(er)e(triangular)h(system)e(solution.)22 b(Mo)q(di\014ed)15
+b(Sparse)h(Column)f(\(MSC\))g(for-)182 2439 y(mat.)133 2539
+y Fg(\017)24 b Fl(LDSOLL:)17 b(Lo)o(w)o(er)g(triangular)f(system)f(solution)i
+(with)f(lev)o(el)e(sc)o(heduling.)20 b(MSR)c(format.)133 2640
+y Fg(\017)24 b Fl(USOL)c(:)f(Unit)g(upp)q(er)h(triangular)g(system)f
+(solution.)32 b(Compressed)19 b(Sparse)h(Ro)o(w)g(\(CSR\))182
+2700 y(format.)p eop
+%%Page: 36 36
+36 35 bop 60 0 a Fm(SP)l(ARSKIT)p 60 7 1853 2 v 1564 w Fl(36)133
+132 y Fg(\017)24 b Fl(UDSOL)16 b(:)f(Upp)q(er)h(triangular)g(system)e
+(solution.)21 b(Mo)q(di\014ed)16 b(Sparse)g(Ro)o(w)g(\(MSR\))f(format.)133
+233 y Fg(\017)24 b Fl(USOLC)g(:)g(Unit)f(upp)q(er)h(triangular)h(system)d
+(solution.)45 b(Compressed)23 b(Sparse)i(Column)182 293 y(\(CSC\))17
+b(format.)133 395 y Fg(\017)24 b Fl(UDSOLC:)g(Upp)q(er)f(triangular)h(system)
+f(solution.)43 b(Mo)q(di\014ed)24 b(Sparse)g(Column)f(\(MSC\))182
+455 y(format.)715 638 y Fh(ORDERINGS)18 b(Mo)r(dule)133 752
+y Fg(\017)24 b Fl(levset.f)15 b(:)21 b(lev)o(el)14 b(set)i(based)h
+(reordering,)e(including)h(R)o(CM)133 854 y Fg(\017)24 b Fl(color.f)16
+b(:)21 b(coloring)16 b(based)h(reordering)133 956 y Fg(\017)24
+b Fl(ccn.f)15 b(:)21 b(reordering)16 b(based)h(on)g(strongly)f(connected)g
+(comp)q(onen)o(ts)804 1148 y Fh(ITSOL)j(Mo)r(dule)133 1262
+y Fg(\017)24 b Fl(ILUT:)16 b(ILUT\(k\))f(preconditioned)h(GMRES)g(mini)e(pac)
+o(k)m(age.)133 1364 y Fg(\017)24 b Fl(ITERS:)16 b(nine)f(basic)i(iterativ)o
+(e)d(linear)i(system)e(solv)o(ers.)796 1556 y Fh(PLOTS)k(Mo)r(dule)133
+1670 y Fg(\017)24 b Fl(PSGRD:)16 b(plots)h(a)g(symmetr)o(ic)c(graph.)133
+1772 y Fg(\017)24 b Fl(TEXPL)l(T1:)e(allo)o(ws)17 b(sev)o(eral)e(matrices)f
+(in)i(the)g(same)f(picture.)133 1874 y Fg(\017)24 b Fl(TEX)o(GRID1:)d(allo)o
+(ws)16 b(sev)o(eral)g(grids)g(in)g(the)g(same)f(picture.)764
+2066 y Fh(MA)-5 b(TEXP)20 b(Mo)r(dule)133 2180 y Fg(\017)k
+Fl(EXPPR)o(O:)15 b(computes)g Fj(w)g Fl(=)f Fj(exp)p Fl(\()p
+Fj(t)i(A)p Fl(\))g Fj(v)r Fl(.)133 2282 y Fg(\017)24 b Fl(PHIPR)o(O:)16
+b(computes)g Fj(w)h Fl(=)e Fj(\036)p Fl(\()p Fj(A)i(t)p Fl(\))f
+Fj(v)r Fl(,)h(where)g Fj(\036)p Fl(\()p Fj(x)p Fl(\))e(=)g(\(1)d
+Fg(\000)g Fj(exp)p Fl(\()p Fj(x)p Fl(\)\))p Fj(=x)p Fl(.)24
+b(Also)17 b(solv)o(es)f(the)182 2342 y(P)l(.D.E.)f(system)g
+Fj(y)526 2324 y Fb(0)551 2342 y Fl(=)f Fj(Ay)e Fl(+)f Fj(b)p
+Fl(.)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/DOC/paper.tex b/DOC/paper.tex
new file mode 100644
index 0000000..9bb7a5f
--- /dev/null
+++ b/DOC/paper.tex
@@ -0,0 +1,1998 @@
+%\documentstyle[12pt]{article}
+\documentclass[12pt]{article}
+\usepackage{graphicx}
+
+%% page lay-out / RUNNING HEAD
+\pagestyle{myheadings}
+\markright{\underline{SPARSKIT \hskip 5.3in} \hskip -1.0in}
+\setlength{\headheight}{0.3in}
+\setlength{\headsep}{0.3in}
+%%
+\setlength{\textheight}{8.7in}
+\setlength{\textwidth}{6.2in}
+\setlength{\oddsidemargin}{0.2in} %
+\setlength{\evensidemargin}{0.2in} %
+\setlength{\parindent}{0.2in} %
+\setlength{\topmargin}{-0.3in} %%
+%% abstract redefinition.
+\def\@abssec#1{\vspace{.5in}\footnotesize \parindent 0.2in
+{\bf #1. }\ignorespaces}
+\def\abstract{\@abssec{Abstract}}
+%%
+\setcounter{secnumdepth}{5}
+\setcounter{tocdepth}{5}
+%% a few macros
+\def\half{{1\over2}}%
+\def\del{\partial} %
+\def\nref#1{(\ref{#1})}
+%% more macros: for indented boxes.
+\def\marg#1{\parbox[b]{1.3in}{\bf #1}}
+\def\disp#1{\parbox[t]{4.62in}{#1} \vskip 0.2in }
+%%
+%\input{psfig}
+
+\title{
+\parbox{4in}{SPARSKIT: a basic tool kit for sparse
+matrix computations } }
+\author{\parbox{4in}{VERSION 2\\Youcef Saad\thanks{
+Work done partly at CSRD, university of Illinois and partly at RIACS
+(NASA Ames Research Center). Current address: Computer Science Dept.,
+University of Minnesota, Minneapolis, MN 55455.
+This work was supported in part by the NAS Systems
+Division, via Cooperative Agreement NCC 2-387 between NASA and
+the University Space Research Association (USRA)
+and in part by the Department of Energy under grant
+DE-FG02-85ER25001.}}}
+
+\date{ }
+
+\begin{document}
+\bibliographystyle{plain}
+%\bibliographystyle{SIAM}
+
+\maketitle
+
+\vskip 1.5in
+
+\centerline{{\it June 6, 1994} }
+%\centerline{{\it May 21, 1990} }
+%\centerline{{\it Updated June 5, 1993 --- Version 2} }
+
+\thispagestyle{empty}
+
+\begin{abstract}
+This paper presents the main features of a tool package for
+manipulating and working with sparse matrices.
+One of the goals of the package is to provide
+basic tools to facilitate exchange of software and data
+between researchers in sparse matrix computations.
+Our starting point is the Harwell/Boeing collection of matrices
+for which we provide a number of tools.
+Among other things the package provides programs for converting
+data structures, printing simple statistics on a matrix,
+plotting a matrix profile, performing basic linear algebra
+operations with sparse matrices and so on.
+\end{abstract}
+
+\newpage
+
+\section{Introduction} Research on sparse matrix techniques has become
+increasingly complex, and this trend is likely to accentuate if only
+because of the growing need
+to design efficient sparse matrix algorithms for modern supercomputers.
+While there are a number of packages and `user
+friendly' tools, for performing computations with small dense
+matrices there is a lack of any similar tool or in fact of any
+general-purpose libraries for
+working with sparse matrices. Yet a collection of a few basic programs to
+perform some elementary and common tasks may be very useful in reducing the
+typical time to implement and test sparse matrix algorithms. That a common
+set
+of routines shared among researchers does not yet exist for sparse matrix
+computation is rather surprising. Consider the contrasting situation in dense
+matrix computations. The Linpack and Eispack packages developed in the 70's
+have been of tremendous help in various areas of scientific computing.
+One might speculate on the number of hours of programming efforts
+saved worldwide thanks to the widespread availability of these packages.
+In contrast, it is often the case that researchers in sparse matrix
+computation
+code their own subroutine for such things as converting the storage mode
+of a matrix or for reordering a matrix
+according to a certain permutation. One of the reasons for this situation
+might be the absence of any standard for sparse
+matrix computations. For instance, the number of different data
+structures used to store sparse matrices in various applications is
+staggering. For the same basic data structure there often exist a
+large number of variations in use. As sparse matrix computation
+technology is maturing there is a desperate need for some standard for
+the basic storage schemes and possibly, although this is more
+controversial, for the basic linear algebra operations.
+
+An important example where a package such as SPARSKIT can be helpful is for
+exchanging matrices for research or other purposes. In this
+situation, one must often translate the matrix from some initial data
+structure in which it is generated, into a different desired data
+structure. One way around this difficulty is to restrict
+the number of schemes that can be used and set some standards.
+ However, this is not
+enough because often the data structures are chosen for their
+efficiency and convenience, and it is not reasonable to ask
+practitioners to abandon their favorite storage schemes. What is
+needed is a large set of programs to translate one data structure into
+another. In the same vein, subroutines that generate test matrices
+would be extremely valuable since they would allow users to have
+access to a large number of matrices without the burden of actually
+passing large sets of data.
+
+A useful collection of sparse matrices known as the Harwell/Boeing
+collection, which is publically available \cite{Duff-HB}, has been
+widely used in recent years for testing and comparison purposes.
+Because of the importance of this collection many of the tools in
+SPARSKIT can be considered as companion tools to it. For
+example, SPARSKIT supplies simple routines to create a Harwell/Boeing (H/B)
+file from a matrix in any format, tools for creating pic files in
+order to plot a H/B matrix, a few routines that will deliver
+statistics for any H/B matrix, etc.. However, SPARSKIT is not limited
+to being a set of tools to
+work with H/B matrices. Since one of our main motivations is
+research on iterative methods, we provide numerous subroutines that may help
+researchers in this specific area.
+SPARSKIT will hopefully be an evolving package
+that will benefit from contributions from other researchers. This
+report is a succinct description of the package in this release.
+
+\begin{figure}[h]
+%\special{psfile=dir.eps vscale = 75 hscale = 75 hoffset =0 voffset= -30}
+\includegraphics[width=15cm]{dir}
+\caption {General organization of SPARSKIT.}
+\label{organization}
+%\vskip 0.1cm
+\end{figure}
+
+\section{Data structures for sparse matrices and the conversion routines}
+
+One of the difficulties in sparse matrix computations is the variety
+of types of matrices that are encountered in practical applications.
+The purpose of each of these schemes is to gain efficiency both in
+terms of memory utilization and arithmetic operations. As a result
+many different ways of storing sparse matrices have been devised to
+take advantage of the structure of the matrices or the specificity of
+the problem from which they arise. For example if it is known that a
+matrix consists of a few diagonals one may simply store these
+diagonals as vectors and the offsets of each diagonal with respect to
+the main diagonal. If the matrix is not regularly structured, then
+one of the most common storage schemes in use today is what we refer
+to in SPARSKIT as the Compressed Sparse Row (CSR) scheme. In this
+scheme all the nonzero entries are stored row by row in a
+one-dimensional real array $A$ together with an array $JA$ containing
+their column indices and a pointer array which contains the addresses
+in $A$ and $JA$ of the beginning of each row. The order of the elements
+within each row does not matter. Also of importance
+because of its simplicity is the coordinate storage scheme in which
+the nonzero entries of $A$ are stored in any order together with their
+row and column indices. Many of the other existing schemes are
+specialized to some extent. The reader is
+referred to the book by Duff et al. \cite{Duff-book} for more details.
+
+\subsection{Storage Formats}
+Currently,
+the conversion routines of SPARSKIT can handle thirteen different storage
+formats. These include some of the most commonly used schemes but they
+are by no means exhaustive. We found it particularly useful to have
+all these storage modes when trying to extract a matrix from someone
+else's application code in order, for example, to analyze it with the
+tools described in the next sections or, more commonly, to try a given
+solution method which requires a different data structure than the
+one originally used in the application. Often the matrix is stored in
+one of these modes or a variant that is very close to it. We hope to
+add many more conversion routines as SPARSKIT evolves.
+
+In this section we describe in detail the storage schemes that are
+handled in the FORMATS module. For convenience we have decided to
+label by a three character name each format used. We start by listing
+the formats and then describe them in detail in separate subsections
+(except for the dense format which needs no detailed description).
+
+\begin{description}
+\item{{\bf DNS}} Dense format
+\item{{\bf BND}} Linpack Banded format
+\item{{\bf CSR}} Compressed Sparse Row format
+\item{{\bf CSC}} Compressed Sparse Column format
+\item{{\bf COO}} Coordinate format
+\item{{\bf ELL}} Ellpack-Itpack generalized diagonal format
+\item{{\bf DIA}} Diagonal format
+\item{{\bf BSR}} Block Sparse Row format
+\item{{\bf MSR}} Modified Compressed Sparse Row format
+\item{{\bf SSK}} Symmetric Skyline format
+\item{{\bf NSK}} Nonsymmetric Skyline format
+\item{{\bf LNK}} Linked list storage format
+\item{{\bf JAD}} The Jagged Diagonal format
+\item{{\bf SSS}} The Symmetric Sparse Skyline format
+\item{{\bf USS}} The Unsymmetric Sparse Skyline format
+\item{{\bf VBR}} Variable Block Row format
+\end{description}
+
+In the following sections we denote by $A$ the matrix under
+consideration and by $N$ its row dimension and $NNZ$ the number of its
+nonzero elements.
+
+\subsubsection{Compressed Sparse Row and related formats
+ (CSR, CSC and MSR)} The Compressed Sparse Row format is the basic
+format used in SPARSKIT. Its data structure consists of three arrays.
+
+\begin{itemize}
+
+\item A real array $A$ containing the real values $a_{ij}$ stored row by row,
+from row 1 to $N$. The length of $A$ is NNZ.
+
+\item An integer array $JA$ containing the column indices
+of the elements $a_{ij}$ as stored in the array $A$. The length of
+$JA$ is NNZ.
+
+\item An integer array $IA$ containing the pointers to the
+beginning of each row in the arrays $A$ and $JA$. Thus the content of
+$IA(i)$ is the position in arrays $A$ and $JA$ where the $i$-th row
+starts. The length of $IA$ is $N+1$ with $IA(N+1)$ containing the
+number $IA(1)+NNZ$, i.e., the address in $A$ and $JA$ of the beginning
+of a fictitious row $N+1$.
+
+\end{itemize}
+The order of the nonzero elements within the same row are not important.
+A variation to this scheme is to sort the elements in each row
+in such a way that their column positions are in increasing order.
+When this sorting in enforced, it is often possible to
+make substantial savings in the number of operations of
+some well-known algorithms.
+The Compressed Sparse Column format is identical with the Compressed
+Sparse Row format except that the columns of $A$ are stored instead of
+the rows. In other words the Compressed Sparse Column format is simply
+the Compressed Sparse Row format for the matrix $A^T$.
+
+The Modified Sparse Row (MSR) format is a rather common variation of
+the Compressed Sparse Row format which consists of keeping the main
+diagonal of $A$ separately. The corresponding data structure consists
+of a real array $A$ and an integer array $JA$. The first $N$ positions
+in $A$ contain the diagonal elements of the matrix, in order. The position
+$N+1$ of the array $A$ is not used. Starting from position $N+2$, the
+nonzero elements of $A$, excluding its diagonal elements, are stored
+row-wise. Corresponding to each element $A(k)$ the integer $JA(k)$ is
+the column index of the element $A(k)$ in the matrix $A$. The $N+1$
+first positions of $JA$ contain the pointer to the beginning of each
+row in $A$ and $JA$. The advantage of this storage mode is that many
+matrices have a full main diagonal, i.e., $a_{ii} \ne 0, i=1,\ldots,
+N$, and this diagonal is best represented by an array of length $N$.
+This storage mode is particularly useful for triangular matrices with
+non-unit diagonals. Often the diagonal is then stored in inverted form
+(i.e. $1/a_{ii} $ is stored in place of $a_{ii} $) because triangular
+systems are often solved repeatedly with the same matrix many times,
+as is the case for example in preconditioned Conjugate Gradient
+methods. The column oriented analogue of the MSR format, called MSC
+format, is also used in some of the other modules, but no
+transformation to/from it to the CSC format is necessary: for example
+to pass from CSC to MSC one can use the routine to pass from the CSR
+to the MSR formats, since the data structures are identical. The
+ above three storage modes are used in many well-known packages.
+
+\subsubsection{The banded Linpack format (BND)}
+Banded matrices represent the simplest form of sparse matrices and
+they often convey the easiest way of exploiting sparsity. There are
+many ways of storing a banded matrix. The one we adopted here follows
+the data structure used in the Linpack banded solution routines. Our
+motivation is that one can easily take advantage of this widely available
+package if the matrices are banded. For fairly small matrices (say,
+$N < 2000$ on supercomputers, $ N < 200 $ on fast workstations, and
+with a bandwidth of $O(N^{\half} )$), this may represent a viable and
+simple way of solving linear systems. One must first transform the
+initial data structure into the banded Linpack format and then call the
+appropriate band solver. For large problems it is clear that a better
+alternative would be to use a sparse solver such as MA28, which
+requires the input matrix to be in the coordinate format.
+
+%%It is
+%%expected that these types of utilization of the conversion routines
+%% will in fact be among the most common ones.
+
+In the BND format the nonzero elements of $A$ are stored in a
+rectangular array $ABD$ with the nonzero elements of the $j$-th column
+being stored in the $j-th$ column of $ABD$. We also need to know the
+number $ML$ of diagonals below the main diagonals and the number $MU$
+of diagonals above the main diagonals. Thus the bandwidth of $A$ is
+$ML+MU+1$ which is the minimum number of rows required in the array
+$ABD$. An additional integer parameter is needed to indicate which row
+of $ABD$ contains the lowest diagonal.
+
+\subsubsection{The coordinate format (COO) }
+
+The coordinate format is certainly the simplest storage scheme for
+sparse matrices. It consists of three arrays: a real array of size
+$NNZ$ containing the real values of nonzero elements of $A$ in any
+order, an integer array containing their row indices and a second
+integer array containing their column indices. Note that this scheme
+is as general as the CSR format, but from the point of view of memory
+requirement it is not as efficient. On the other hand it is
+attractive because of its simplicity and the fact that it is very
+commonly used. Incidentally, we should mention a variation to this
+mode which is perhaps the most economical in terms of memory usage.
+The modified version requires only a real array $A$ containing the
+real values $a_{ij}$ along with only one integer array that contains
+the integer values $ (i-1)N + j$ for each corresponding nonzero
+element $a_{ij}$. It is clear that this is an unambiguous
+representation of all the nonzero elements of $A$. There are two
+drawbacks to this scheme. First, it requires some integer arithmetic
+to extract the column and row indices of each element when they are
+needed. Second, for large matrices it may lead to integer overflow
+because of the need to deal with integers which may be very large (of
+the order of $N^2$). Because of these two drawbacks this scheme has
+seldom been used in practice.
+
+\subsubsection{The diagonal format (DIA) }
+The matrices that arise in many applications often consist of a few
+diagonals. This structure has probably been the first one to be
+exploited for the purpose of improving performance of
+matrix by vector products on supercomputers, see references in
+\cite{Saad-Boeing}. To store
+these matrices we may store the diagonals in a rectangular array
+$DIAG(1:N,1:NDIAG) $ where $NDIAG$ is the number of diagonals. We
+also need to know the offsets of each of the diagonals with respect to
+the main diagonal. These will be stored in an array $IOFF(1:NDIAG)$.
+Thus, in position $(i,k)$ of the array $DIAG$ is located the element
+$a_{i,i+ioff(k)}$ of the original matrix. The order in which the
+diagonals are stored in the columns of $DIAG$ is unimportant. Note
+also that all the diagonals except the main diagonal have fewer than
+$N$ elements, so there are positions in $DIAG$ that will not be used.
+
+In many applications there is a small number of non-empty diagonals
+and this scheme is enough. In general however, it may be desirable to
+supplement this data structure, e.g., by a compressed sparse row
+format. A general matrix is therefore represented as the sum of a
+diagonal-structured matrix and a general sparse matrix. The
+conversion routine CSRDIA which converts from the compressed
+sparse row format to the diagonal format has an option to this
+effect. If the user wants to convert a general sparse matrix to one
+with, say, 5 diagonals, and if the input matrix has more than 5
+diagonals, the rest of the matrix (after extraction of the 5 desired
+diagonals) will be put, if desired, into a matrix in the CSR format.
+In addition, the code may also compute the most important 5 diagonals
+if wanted, or it can get those indicated by the user through the array
+$IOFF$.
+
+\subsubsection{The Ellpack-Itpack format (ELL) }
+The Ellpack-Itpack format
+\cite{Oppe-Kincaid,Young-Oppe-al,Oppe-NSPCG} is a
+generalization of the diagonal storage scheme which is intended for
+general sparse matrices with a limited maximum number of nonzeros per
+row. Two rectangular arrays of the same size are required, one real
+and one integer. The first, $COEF$, is similar to $DIAG$ and contains
+the nonzero elements of $A$. Assuming that there are at most $NDIAG$
+nonzero elements in each row of $A$, we can store the nonzero elements
+of each row of the matrix in a row of the array $COEF(1:N,1:NDIAG)$
+completing the row by zeros if necessary. Together with $COEF$ we
+need to store an integer array $JCOEF(1:N,1:NDIAG)$ which contains the
+column positions of each entry in $COEF$.
+
+\subsubsection{The Block Sparse Row format (BSR)}
+Block matrices are common in all areas of scientific computing. The
+best way to describe block matrices is by viewing them as sparse
+matrices whose nonzero entries are square dense blocks. Block matrices
+arise from the discretization of partial differential equations when
+there are several degrees of freedom per grid point. There are
+restrictions to this scheme. Each of the blocks is treated as a dense
+block. If there are zero elements within each block they must be
+treated as nonzero elements with the value zero.
+
+There are several variations to the method used for storing sparse
+matrices with block structure. The one considered here, the Block
+Sparse Row format, is a simple generalization of the Compressed Sparse
+Row format.
+
+We denote here by $NBLK$ the dimension of each block, by
+$NNZR$ the number of nonzero blocks in $A$ (i.e.,
+$NNZR = NNZ/(NBLK^2) $) and by $NR$ the block dimension of $A$,
+(i.e., $NR = N/NBLK$), the letter $R$ standing for `reduced'.
+Like the Compressed Sparse Row format we need three arrays. A rectangular
+real array $A(1:NNZR,1:NBLK,1:NBLK) $ contains the nonzero
+blocks listed (block)-row-wise. Associated with this real array
+is an integer array
+$JA(1:NNZR) $ which holds the actual column positions in the
+original matrix of the $(1,1)$ elements of the nonzero blocks.
+Finally, the pointer array $IA(1:NR+1)$ points to the beginning
+of each block row in $A$ and $JA$.
+
+The savings in memory and in the use of indirect addressing with this
+scheme over Compressed Sparse Row can be substantial for large
+values of $NBLK$.
+
+\subsubsection{The Symmetric Skyline format (SSK) }
+A skyline matrix is often referred to as a variable band
+matrix or a profile matrix \cite{Duff-book}. The main
+attraction of skyline matrices is that when pivoting is
+not necessary then the skyline structure of the matrix is preserved
+during Gaussian elimination. If the matrix is symmetric
+we only need to store its lower triangular part. This is a
+collection of rows whose length varies. A simple method used to store
+a Symmetric Skyline matrix is to place all the rows in order from
+1 to $N$ in a real array $A$ and then keep an integer array which holds
+the pointers to the beginning of each row, see \cite{Duff-survey}.
+The column positions of the nonzero elements stored in $A$
+can easily be derived and are therefore not needed. However, there
+are several variations to this scheme that are commonly used is
+commercial software packages. For example, we found that in many
+instances the pointer is to the diagonal element rather than to the
+first element in the row. In some cases (e.g., IBM's ISSL library)
+both are supported. Given that these variations are commonly used
+it is a good idea to provide at least a few of them.
+
+\subsubsection{The Non Symmetric Skyline format (NSK) }
+Conceptually, the data structure of a nonsymmetric skyline
+matrix consists of two substructures.
+The first consists of the lower part of $A$ stored in skyline format
+and the second of its upper triangular part stored in a column
+oriented skyline format (i.e., the transpose is stored in
+standard row skyline mode). Several ways of putting these
+substructures together may be used and there are no compelling
+reasons for preferring one strategy over another one.
+One possibility is to use two separate arrays $AL$ and $AU$ for
+the lower part and upper part respectively, with the diagonal
+element in the upper part. The data structures for each of
+two parts is similar to that used for the SSK storage.
+
+%% NOT DONE YET ---
+%%We chose to store contiguously each row of the lower part and column of
+%%the upper part of the matrix. The real array $A$ will contain
+%%the 1-st row followed by the first column (empty), followed
+%%by the second row followed by the second column, etc..
+%%An additional pointer is needed to indicate where the
+%%diagonal elements, which separate the lower from the upper part,
+%%are located in this array. G
+
+\subsubsection{The linked list storage format (LNK) }
+This is one of the oldest data structures used for sparse matrix computations.
+It consists of four arrays: $A$, $JCOL$, $LINK$ and $JSTART$.
+The arrays $A$ and $JCOL$ contain the nonzero elements and their
+corresponding column indices respectively. The integer array $LINK$ is
+the usual link pointer array in linked list data structures:
+$LINK(k)$ points to the position of the nonzero element next to
+$A(k), JCOL(k)$ in the same row. Note that the order of the elements
+within each row is unimportant. If $LINK(k) =0$ then there is no
+next element, i.e., $A(k), JCOL(k)$ is the last element of the row.
+Finally, $ISTART$ points to the first element of each row in
+in the previous arrays. Thus, $k=ISTART(1)$ points to the first element
+of the first row, in $A, ICOL$,
+ $ISTART(2) $ to the second element, etc..
+As a convention $ISTART(i) = 0$, means that the $i$-th row is empty.
+
+\subsubsection{The Jagged Diagonal format (JAD)}
+This storage mode is very useful for the efficient implementation
+of iterative methods on parallel and vector processors
+\cite{Saad-Boeing}. Starting from the CSR format, the idea is to
+first reorder the rows of the matrix decreasingly according to their
+number of nonzeros entries. Then, a new data structure is built
+by constructing what we call ``jagged diagonals" (j-diagonals).
+We store as a dense vector, the vector consisting of all
+the first elements in $A, JA$ from each row, together with an integer
+vector containing the column positions of the corresponding
+elements. This is followed by the second jagged diagonal consisting of the
+elements in the second positions from the left. As we build more and
+more of these diagonals, their length decreases. The number of
+j-diagonals is equal to the number of nonzero elements of the first
+row, i.e., to the largest number of nonzero elements per row. The
+data structure to represent a general matrix in this form consists,
+before anything, of the permutation array which reorders the rows.
+Then the real array $A$ containing the jagged diagonals in succession
+and the array $JA$ of the corresponding column positions are stored,
+together with a pointer array $ IA $ which points to the beginning of
+each jagged diagonal in the arrays $A, JA$. The advantage of this
+scheme for matrix multiplications has been illustrated in
+\cite{Saad-Boeing} and in \cite{Anderson-Saad} in the
+context of triangular system solutions.
+
+\subsubsection{The Symmetric and Unsymmetric Sparse Skyline format
+(SSS, USS)}
+
+This is an extension of the CSR-type format described above.
+In the symmetric version, the following arrays are used:
+$DIAG$ stores the diagonal,
+$AL, JAL, IAL$ stores the strict lower part in CSR format, and
+$AU$ stores the values of the strict upper part in CSC format.
+In the unsymmetric version, instead of $AU$ alone, the strict upper part
+is stored in $AU, JAU, IAU$ in CSC format.
+
+%% THIS SECTION HAS BEEN MODIFIED
+%% \subsubsection{The Compressed Variable Block Format(CVB)}
+%% This is an extension of the Block Sparse Row format (BSR). In the BSR
+%% format, all the blocks have the same size.
+%% A more general way of partitioning might allow the
+%% matrix to be split into different size blocks. In the CVB format, an
+%% arbitrary partitioning of the matrix is allowed. However, the columns and
+%% the rows must be split in the same way.
+%%
+%% Figure 0 shows a 9x9 sparse matrix and its corresponding storage vectors.
+%% Let $h$ be the index of the leading elements of the $k^{th}$ block
+%% stored in $AA$. Then $k^{th}$ block of size $m*p$ is stored in
+%% $AA(h)$ to $AA(h+mp-1)$.
+%% For example, the $3^{rd}$ block is stored in $AA(9)$ to $AA(17)$.
+%%
+%% The data structure consists of the integers \(N\), \(NB\), and the arrays
+%% \(AA\), \(JA\), \(IA\), and
+%% \(KVST\), where \(N\) is the matrix size, i.e.~number of rows in the
+%% matrix, \(NB\) is the number of block rows, \(AA\) stores the non-zero
+%% values of the matrix, \(JA\) has the column indices of the first
+%% elements in the blocks, \(IA\) contains the pointers to the beginning
+%% of each block row (in \(AA\)), \(KVST\) contains the index of
+%% the first row in each block row.
+%%
+%% \begin{figure}[h]
+%% \vspace{3in}
+%% \special{psfile= fig1.eps vscale = 100 hscale = 100 hoffset =-50 voffset= -420}
+%%\caption {\bf Fig 1: An example of a 9x9 sparse matrix and its storage vectors. }
+%%\label{conventional}
+%% \end{figure}
+
+\subsubsection{The Variable Block Row format (VBR)}
+In many applications, matrices are blocked, but the blocks are not all
+the same size. These so-called variable block matrices arise from the
+discretization of systems of partial differential equations where there
+is a varying number of equations at each grid point. Like in the Block
+Sparse Row (BSR) format, all entries of nonzero blocks (blocks which
+contain any nonzeros) are stored, even if their value is zero. Also
+like the BSR format, there is significant savings in integer pointer
+overhead in the data structure.
+
+Variable block generalizations can be made to many matrix storage
+formats. The Variable Block Row (VBR) format is a generalization of the
+Compressed Sparse Row (CSR) format, and is similar to the variable
+block format used at the University of Waterloo, and one currently
+proposed in the Sparse BLAS toolkit.
+
+In the VBR format, the $IA$ and $JA$ arrays of the CSR format store the
+sparsity structure of the blocks. The entries in each block are stored
+in $A$ in column-major order so that each block may be passed as a small
+dense matrix to a Fortran subprogram. The block row and block column
+partitionings are stored in the vectors {\em KVSTR} and {\em KVSTC},
+by storing the first row or column number of each block row or column
+respectively. In most applications, the block row and column partitionings
+will be conformal, and the same array may be used in the programs.
+Finally, integer pointers to the beginning of each block in $A$ are stored
+in the array $KA$.
+
+$IA$ contains pointers to the beginning of each block row in $JA$ and $KA$.
+Thus $IA$ has length equal to the number of block rows (plus one to mark
+the end of the matrix), and $JA$ has length equal to the number of nonzero
+blocks. $KA$ has the same length as $JA$ plus one to mark the end of
+the matrix. {\em KVSTR} and {\em KVSTC} have length equal to the number
+of block rows and columns respectively, and $A$ has length equal to the
+number of nonzeros in the matrix. The following
+figure shows the VBR format applied to a small matrix.
+
+This version of Sparskit has a number of routines to support the variable
+block matrix format. CSRVBR and VBRCSR convert between the VBR and CSR
+formats; VBRINFO prints some elementary information about the block
+structure of a matrix in VBR format; AMUXV performs a matrix-vector product
+with a matrix in VBR format; CSRKVSTR and CSRKVSTC are used
+to determine row and column block partitionings of a matrix in CSR format,
+and KVSTMERGE is used to combine row and column partitionings to achieve
+a conformal partitioning.
+
+\begin{figure}[htb]
+%\vspace{4.8in}
+%\centerline{\psfig{figure=vbrpic.eps,width=6.2in}}
+\includegraphics[width=6.2in]{vbrpic}
+%\special{psfile=vbrpic.eps vscale = 100 hscale = 100}
+%\special{psfile=vbrpic.eps vscale = 100 hscale = 100 voffset= -420}
+\caption {A $6 \times 8$ sparse matrix and its storage vectors.}
+\end{figure}
+
+\subsection{The FORMATS conversion module}
+It is important to note that there is no need to have a subroutine for
+each pair of data structures, since all we need is to be able to
+convert any format to the standard row-compressed format and then back
+to any other format. There are currently 32 different conversion
+routines in this module all of which are devoted to converting from
+one data structure into another.
+
+The naming mechanism adopted is to use a 6-character name for each of
+the subroutines, the first 3 for the input format and the last 3 for
+the output format. Thus COOCSR performs the conversion from the
+coordinate format to the Compressed Sparse Row format. However it was
+necessary to break the naming rule in one exception. We needed a
+version of COOCSR that is in-place, i.e., which can take the input
+matrix, and convert it directly into a CSR format by using very little
+additional work space. This routine is called COICSR. Each of
+the formats has a routine to translate it to the CSR format and a routine
+to convert back to it from the CSR format. The only exception is that
+a CSCCSR routine is not necessary since
+the conversion from Column Sparse format to Sparse Row format can be
+performed with the same routine CSRCSC. This is essentially a transposition
+operation.
+
+Considerable effort has been put at attempting to make the conversion
+routines in-place, i.e., in allowing some or all of
+the output arrays to be the same as the input arrays.
+The purpose is to save storage whenever possible without
+sacrificing performance. The added flexibility can be
+very convenient in some situations.
+When the additional coding complexity to permit
+the routine to be in-place was not too high this was always done.
+If the subroutine is in-place this is clearly indicated in the
+documentation. As mentioned above, we found it necessary in one instance
+to provide both the in-place version as well as the regular version:
+ COICSR is an in-place version of the COOCSR routine.
+We would also like to add that other routines that avoid the
+CSR format for some of the more important data structures may
+eventually be included. For now, there is only one such routine
+\footnote{Contributed by E. Rothman from Cornell University.}
+namely, COOELL.
+
+\subsection{Internal format used in SPARSKIT}
+Most of the routines in SPARSKIT use internally the Compressed
+Sparse Row format. The selection of
+the CSR mode has been motivated by several factors. Simplicity,
+generality, and widespread use are certainly the most
+important ones. However, it has often been argued
+that the column scheme may
+have been a better choice. One argument in this favor is that
+vector machines usually give a better performance for such
+operations as matrix vector by multiplications for matrices
+stored in CSC format. In fact for parallel machines which
+have a low overhead in loop synchronization (e.g., the Alliants),
+the situation is reversed, see \cite{Saad-Boeing} for details.
+For almost any argument in favor of one scheme there seems
+to be an argument in favor of the other. Fortunately,
+the difference provided in functionality is rather minor.
+For example the subroutine APLB to add two matrices in CSR format,
+described in Section 5.1, can actually be also used to add
+two matrices in CSC format, since the data structures
+are identical. Several such subroutines can be used for both
+schemes, by pretending that the input matrices
+are stored in CSR mode whereas in fact they are
+stored in CSC mode.
+
+\section{Manipulation routines} The module UNARY
+of SPARSKIT consists of a number of utilities to manipulate and perform
+basic operations with sparse matrices. The following sections
+give an overview of this part of the package.
+
+\subsection{Miscellaneous operations with sparse matrices}
+There are a large number of non-algebraic operations that
+are commonly used when working with sparse matrices.
+A typical example is to transform $A$ into $B = P A Q $
+where $P$ and $Q$ are two permutation matrices.
+Another example is to extract the lower triangular
+part of $A$ or a given diagonal from $A$. Several other
+such `extraction' operations are supplied in SPARSKIT.
+Also provided is the transposition function. This may seem
+as an unnecessary addition since the routine
+CSRCSC already does perform this function economically. However,
+the new transposition provided is in-place, in that it may
+transpose the matrix and overwrite the result on the original matrix,
+thus saving memory usage. Since many of these manipulation routines
+involve one matrix (as opposed to two in the basic linear algebra routines)
+we created a module called UNARY to include these subroutines.
+
+Another set of subroutines that are sometimes useful
+are those involving a `mask'. A mask
+defines a given nonzero pattern and for all practical
+purposes a mask matrix is a sparse matrix whose nonzero
+entries are all ones (therefore there is no need to store
+its real values). Sometimes it is useful
+to extract from a given matrix $A$ the `masked' matrix according
+to a mask $M$, i.e., to compute the matrix
+$A \odot M$ , where $\odot $ denotes the element-wise matrix
+product, and $M$ is some mask matrix.
+
+\subsection{The module UNARY}
+This module of SPARSKIT consists of a number of routines
+to perform some basic non-algebraic operations on a matrix.
+The following is a list of the routines currently supported with
+a brief explanation.
+%%There are many other routines which are not
+%% listed their inclusion still being debated.
+
+\vskip .5in
+
+\marg{SUBMAT}\disp{Extracts a square or
+rectangular submatrix from a sparse matrix. Both the
+input and output matrices are in CSR format.
+The routine is in-place.}
+
+\marg{FILTER}\disp{Filters out elements from a
+ matrix according to their magnitude. Both the input and
+the output matrices are in CSR format.
+The output matrix, is obtained from the
+input matrix by removing all the elements that are smaller than
+a certain threshold. The threshold is computed for each row
+according to one of three provided options.
+The algorithm is in-place.}
+
+\marg{FILTERM}\disp{Same as above, but for the MSR format.}
+
+\marg{CSORT}\disp{Sorts the elements of a matrix stored in
+CSR format in increasing order of the column numbers. }
+
+\marg{ TRANSP }\disp{ This is an in-place transposition routine,
+i.e., it can be viewed as an in-place version of the CSRCSC
+routine in FORMATS.
+One notable disadvantage of TRANSP is that unlike CSRCSC it
+does not sort the
+nonzero elements in increasing number of the column positions.}
+
+\marg{ COPMAT }\disp{Copy of a matrix into another
+matrix (both stored CSR).}
+
+\marg{MSRCOP}\disp{Copies a matrix in MSR format into a matrix in MSR format.}
+\marg{ GETELM }\disp{Function returning
+the value of $a_{ij}$ for any pair $(i,j)$. Also returns address
+of the element in arrays $A, JA$. }
+
+\marg{ GETDIA }\disp{ Extracts a specified diagonal from a matrix.
+An option is provided to transform the input matrix so that the
+extracted diagonal is zeroed out in input matrix. Otherwise the diagonal
+is extracted and the input matrix remains untouched.}
+
+\marg{ GETL }\disp{This subroutine extracts the
+lower triangular part of a matrix, including the main diagonal.
+The algorithm is in-place.}
+
+\marg{ GETU }\disp{Extracts the upper triangular part of
+a matrix. Similar to GETL.}
+
+\marg{ LEVELS }\disp{
+Computes the level scheduling data structure for lower
+triangular matrices, see \cite{Anderson-Saad}.}
+
+\marg{ AMASK }\disp{ Extracts $ C = A \odot M $,
+i.e., performs the mask operation.
+This routine computes a sparse matrix from an input matrix $A$ by
+extracting only the elements in $A$, where the corresponding
+elements of $M$ are nonzero. The mask matrix $M$, is a
+sparse matrix in CSR format without the real values, i.e.,
+only the integer arrays of the CSR format are passed. }
+
+\marg{ CPERM }\disp{ Permutes the columns of a matrix, i.e.,
+computes the matrix $B = A Q$ where $Q$ is a permutation matrix. }
+
+\marg{RPERM}\disp{ Permutes the rows of a matrix, i.e.,
+computes the matrix $B = P A$ where $P$ is a permutation matrix. }
+
+\marg{DPERM}\disp{Permutes the rows and columns of
+a matrix, i.e., computes $B = P A Q$
+given two permutation matrices $ P$ and $ Q$. This routine gives a
+special treatment to the common case where $Q=P^T$.}
+
+\marg{DPERM2}\disp{General submatrix permutation/extraction routine.}
+
+\marg{DMPERM}\disp{Symmetric permutation of row and column (B=PAP') in MSR format}
+
+\marg{DVPERM}\disp{ Performs an in-place permutation of a real vector, i.e.,
+performs $x := P x $, where $P$ is a permutation matrix. }
+
+\marg{IVPERM}\disp{ Performs an in-place permutation of an
+integer vector.}
+
+\marg{RETMX}\disp{ Returns the maximum absolute value in each row
+of an input matrix. }
+
+\marg{DIAPOS}\disp{ Returns the positions in the arrays $A$ and
+$ JA$ of the diagonal elements, for a matrix stored in CSR format. }
+
+\marg{ EXTBDG }\disp{ Extracts the main diagonal blocks of a matrix.
+The output is a rectangular matrix of dimension $N \times NBLK$,
+containing the $N/NBLK$ blocks,
+in which $NBLK$ is the block-size (input).}
+
+\marg{ GETBWD }\disp{ Returns bandwidth information on a matrix. This
+subroutine returns the bandwidth of the lower part and the upper part
+of a given matrix. May be used to determine these two parameters
+for converting a matrix into the BND format.}
+
+\marg{ BLKFND }\disp{ Attempts to find the block-size of a matrix
+stored in CSR format. One restriction is that the zero elements in
+each block if there are any are assumed to be represented as nonzero
+elements in the data structure for the $A$ matrix, with zero values. }
+
+\marg{ BLKCHK }\disp{ Checks whether a given integer is the block
+size of A. This routine is called by BLKFND. Same restriction as
+above.}
+
+\marg{ INFDIA }\disp{ Computes the number of nonzero elements
+of each of the $2n-1$ diagonals of a matrix. Note that the first diagonal
+is the diagonal with offset $-n$ which consists of the entry
+$a_{n,1}$ and the last one is the diagonal with offset $n$ which consists
+of the element $a_{1,n}$.}
+
+\marg{ AMUBDG }\disp{ Computes the number of nonzero elements
+in each row of the product of two sparse matrices $A$ and $B$.
+Also returns the total number of nonzero elements.}
+
+\marg{ APLBDG }\disp{ Computes the number of nonzero elements
+in each row of the sum of two sparse matrices $A$ and $B$.
+Also returns the total number of nonzero elements.}
+
+\marg{ RNRMS }\disp{ Computes the norms of the rows of a matrix.
+The usual three norms $\|.\|_1, \|.\|_2, $ and $\|.\|_{\infty} $
+are supported. }
+
+\marg{ CNRMS }\disp{ Computes the norms of the columns of a matrix.
+Similar to RNRMS. }
+
+\marg{ ROSCAL }\disp{ Scales the rows of a matrix by their norms.
+The same three norms as in RNRMS are available. }
+
+\marg{ COSCAL }\disp{ Scales the columns of a matrix by their norms.
+The same three norms as in RNRMS are available. }
+
+\marg{ADDBLK}\disp{Adds a matrix B into a block of A. }
+
+\marg{GET1UP}\disp{Collects the first elements of each row of the upper
+triangular portion of the matrix. }
+
+\marg{XTROWS}\disp{Extracts given rows from a matrix in CSR format.}
+
+\marg{CSRKVSTR}\disp{Finds block partitioning of matrix in CSR format.}
+
+\marg{CSRKVSTC}\disp{Finds block column partitioning of matrix in CSR format.}
+
+\marg{KVSTMERGE}\disp{Merges block partitionings for conformal row/column pattern.}
+
+
+\section{Input/Output routines}
+The INOUT module of SPARSKIT comprises a few routines for reading,
+writing, and for plotting and visualizing the structure
+of sparse matrices. Many of these routines are essentially geared towards
+the utilization of the Harwell/Boeing collection of matrices.
+There are currently eleven subroutines in this module.
+
+\vskip .5in
+
+\marg{ READMT}\disp{ Reads a matrix in the Harwell/Boeing format.}
+
+\marg{ PRTMT}\disp{ Creates a Harwell Boeing file from an arbitrary
+ matrix in CSR or CSC format.}
+
+\marg{ DUMP }\disp{DUMP prints the rows of a
+ matrix in a file, in a nice readable format.
+The best format is internally calculated depending on the number of
+nonzero elements. This is a simple routine which might be
+helpful for debugging purposes.}
+
+\marg{ PSPLTM }\disp{Generates a post-script plot of the non-zero
+pattern of A.}
+
+\marg{ PLTMT }\disp{Creates a pic file for plotting the pattern of a
+matrix.}
+
+\marg{ SMMS }\disp{Write the matrx in a format used in SMMS package.}
+
+\marg{ READSM }\disp{Reads matrices in coordinate format (as in SMMS
+package).}
+
+\marg{ READSK }\disp{Reads matrices in CSR format (simplified H/B format).}
+
+\marg{ SKIT }\disp{Writes matrices to a file, format same as above.}
+
+\marg{ PRTUNF }\disp{Writes matrices (in CSR format) in unformatted files.}
+
+\marg{ READUNF }\disp{Reads unformatted file containing matrices in CSR format.}
+
+
+\vskip 0.3in
+
+The routines readmt and prtmt allow to read and create files
+containing matrices stored in the H/B format.
+For details concerning this format the reader is referred to
+\cite{Duff-HB} or the summary given in the documentation of
+the subroutine READMT. While the purpose of
+readmt is clear, it is not obvious that one single
+subroutine can write a matrix in H/B format and still satisfy
+the needs of all users. For example for some matrices all nonzero
+entries are actually integers and a format using say a 10 digit
+mantissa may entail an enormous waste of storage if the matrix
+is large. The solution provided is to compute internally the best
+formats for the integer arrays IA and JA. A little help is
+required from the user for the real values in the arrays A and
+RHS. Specifically, the desired format is obtained from
+a parameter of the subroutine by using a simple notation,
+which is explained in detail in the documentation of the routine.
+
+Besides the pair of routines that can read/write matrices in H/B
+format, there are three other pairs which can be used to input and
+output matrices in different formats. The SMMS and READSM pair write
+and read matrices in the format used in the package SMMS.
+Specifically, READSM reads a matrix in SMMS format from a file and outputs
+it in CSR format. SMMS accepts a matrix in CSR format and
+writes it to a file in SMMS format. The SMMS format is
+essentially a COO format.
+The size of the matrix appears in the first line of the file. Each other
+line of the file
+contains triplets in the form of ($i$, $j$, $a_{ij}$) which
+denote the non-zero elements of the matrix.
+Similarly, READSK and SKIT read and write matrices in CSR format.
+This pair is very similar to READMT and PRTMT, only that the
+files read/written by READSK and SKIT do not have headers. The pair
+READUNF and PRTUNF reads and writes the matrices (stored as $ia$, $ja$
+and $a$) in binary form,
+i.e.~the number in the file written by PRTUNF will be in machine
+representations. The primary motivation for this is that
+handling the arrays in binary form takes less space than in the
+usual ASCII form, and is usually faster.
+If the matrices are large and they are only used on compatible computers,
+it might be desirable to use unformatted files.
+
+We found it extremely useful to be able to visualize a sparse matrix,
+notably for debugging purposes. A simple look at the plot can
+sometimes reveal whether the matrix obtained from some reordering
+technique does indeed have the expected structure. For now two simple
+plotting mechanisms are provided. First, a preprocessor called PLTMT
+to the Unix utility `Pic' allows one to generate a pic file from a
+matrix that is in the Harwell/Boeing format or any other format. For
+example for a Harwell/Boeing matrix file, the command is of the form
+%%\[hb2pic.ex \; < \; HBfilename \]
+\begin{center}
+{\tt hb2pic.ex < HB\_file.}
+\end{center}
+The output file is then printed by the usual troff or TeX commands. A
+translation of this routine into one that generates a post-script file
+is also available (called PSPLTM). We should point out that the
+plotting routines are very simple in nature and should not be used to
+plot large matrices. For example the pltmt routine outputs one pic
+command line for every nonzero element. This constitutes a convenient
+tool for document preparation for example. Matrices of size just up
+to a few thousands can be printed this way. Several options
+concerning the size of the plot and caption generation are available.
+
+There is also a simple utility program called ``hb2ps'' which takes a
+matrix file with HB format and translates it into a post-script file.
+The usage of this program is as follows:
+\begin{center}
+{\tt hb2ps.ex < HB\_file > Postscript\_file.}
+\end{center}
+%%\[ hb2ps.ex < HB\_file > Postscript\_file. \]
+The file can be previewed with ghostscript.
+The following graph shows a pattern of an unsymmetric matrix.
+
+\begin{figure}[htb]
+%\centerline{\psfig{figure=jpwh.ps,width=5in}}
+\includegraphics[width=5in]{jpwh}
+%\vskip 5.5in
+%\special{psfile=jpwh.ps vscale = 100 hscale = 100 hoffset = -85 voffset= -450}
+%\special{psfile=jpwh.ps hoffset = -85}
+\end{figure}
+
+\section{Basic algebraic operations}
+The usual algebraic operations involving two matrices,
+such as $C= A+ B$, $C= A+\beta B$, $C= A B $, etc..,
+are fairly common in sparse matrix computations.
+These basic matrix operations
+are included in the module called BLASSM. In addition there is a
+large number of basic operations, involving a sparse matrix
+and a vector, such as matrix-vector products and
+triangular system solutions that are very commonly used. Some of
+these are included in the module MATVEC.
+Sometimes it is desirable to compute the
+patterns of the matrices $A+B$ and $AB$, or in fact of any result
+of the basic algebraic operations. This can be implemented by
+way of job options which will determine whether to fill-in the real
+values or not during the computation.
+We now briefly describe the contents of each of the
+two modules BLASSM and MATVEC.
+
+\subsection{The BLASSM module}
+Currently, the module BLASSM (Basic Linear Algebra Subroutines for
+Sparse Matrices) contains the following nine subroutines:
+
+\vskip 0.3in
+
+\marg{ AMUB }\disp{ Performs the product of two matrices, i.e.,
+computes $C = A B $, where $A$ and $B$ are both in CSR format.}
+
+\marg{ APLB }\disp{ Performs the addition of two matrices, i.e.,
+computes $C = A + B $, where $A$ and $B$ are both in CSR format.}
+
+\marg{ APLSB }\disp{ Performs the operation $ C=A + \sigma B $,
+where $\sigma$ is a scalar, and $A, B$ are two matrices in
+CSR format. }
+
+\marg{ APMBT }\disp{ Performs either the addition $C = A + B^T$ or the
+subtraction $C=A-B^T$. }
+
+\marg{ APLSBT }\disp{ Performs the operation $C = A + s B^T$. }
+
+\marg{ DIAMUA }\disp{ Computes the product of diagonal
+matrix (from the left) by a sparse matrix, i.e.,
+computes $C = D A$, where $D$ is a diagonal matrix and $A$
+is a general sparse matrix stored in CSR format. }
+
+\marg{ AMUDIA }\disp{ Computes the product of a sparse
+matrix by a diagonal matrix from the right, i.e.,
+computes $C = A D $, where $D$ is a diagonal matrix and $A$
+is a general sparse matrix stored in CSR format. }
+
+\marg{ APLDIA }\disp{ Computes the sum of a sparse matrix and a
+diagonal matrix, $ C = A + D $. }
+
+\marg{ APLSCA }\disp{Performs an in-place
+addition of a scalar to the diagonal entries of
+a sparse matrix, i.e., performs the operation
+ $A := A + \sigma I$.}
+
+\vskip 0.3in
+
+Missing from this list are the routines {\bf AMUBT} which multiplies $A$ by
+the transpose of $B$, $C= AB^T$, and {\bf ATMUB } which multiplies the
+transpose of $A$ by $B$, $C= A^T B $.
+
+\vskip 0.3in
+
+These are very difficult to implement and we found it better to
+perform it with two passes.
+Operations of the form $ t A + s B $ have been
+avoided as their occurrence does not warrant additional subroutines.
+Several other operations similar to those defined for
+vectors have not been included. For example the scaling
+of a matrix in sparse format is simply a scaling of its
+real array $A$, which can be done with the usual BLAS1
+scaling routine, on the array $A$.
+
+
+\subsection{The MATVEC module}
+In its current status, this module contains matrix
+by vector products and various sparse triangular
+solution methods. The contents are as follows.
+
+\vskip 0.3in
+
+\marg{ AMUX }\disp{ Performs the product of a matrix by a vector.
+ Matrix stored in Compressed Sparse Row (CSR) format.}
+
+\marg{ ATMUX }\disp{ Performs the product of the transpose of
+a matrix by a vector. Matrix $A$ stored in Compressed
+Sparse Row format. Can also be
+viewed as the product of a matrix in the Compressed Sparse Column
+format by a vector.}
+
+\marg{ AMUXE }\disp{ Performs the product of a matrix by a vector.
+Matrix stored in Ellpack/Itpack (ELL) format.}
+
+\marg{ AMUXD }\disp{ Performs the product of a matrix by a vector.
+Matrix stored in Diagonal (DIA) format.}
+
+\marg{ AMUXJ }\disp{ Performs the product of a matrix by a vector.
+Matrix stored in Jagged Diagonal (JAD) format.}
+
+\marg{ VBRMV }\disp{ Sparse matrix - full vector product in VBR format.}
+
+\marg{ LSOL }
+\disp{ Unit lower triangular system solution. Matrix stored in
+Compressed Sparse Row (CSR) format. }
+
+\marg{ LDSOL }\disp{Lower triangular system solution. Matrix stored in
+Modified Sparse Row (MSR) format. Diagonal elements inverted. }
+
+\marg{ LSOLC }\disp{
+Unit lower triangular system solution. Matrix stored in
+ Compressed Sparse Column (CSC) format. }
+
+\marg{ LDSOLC }\disp{
+Lower triangular system solution. Matrix stored in
+Modified Sparse Column (MSC) format with diagonal elements inverted. }
+
+\marg{ LDSOLL }\disp{
+Unit lower triangular system solution with the level scheduling
+approach. Matrix
+stored in Modified Sparse Row format, with diagonal elements inverted.}
+
+\marg{ USOL }\disp{ Unit upper triangular system solution.
+Matrix stored in Compressed Sparse Row (CSR) format. }
+
+\marg{ UDSOL }\disp{ Upper triangular system solution.
+Matrix stored in Modified Sparse Row (MSR) format. Diagonal
+elements inverted. }
+
+\marg{ USOLC }\disp{
+Unit upper triangular system solution. Matrix stored in
+Compressed Sparse Column (CSC) format. }
+
+\marg{ UDSOLC }\disp{
+Upper triangular system solution. Matrix stored in
+Modified Sparse Column (MSC) format with diagonal elements inverted. }
+
+\vskip 0.3in
+Most of the above routines are short and rather straightforward.
+A long test program is provided to run all of the subroutines
+on a large number of matrices that are dynamically generated
+using the MATGEN module.
+
+\section{The basic statistics and information routines}
+It is sometimes very informative when analyzing
+solution methods, to be able in a short amount of time to
+obtain some statistical information about a sparse matrix.
+The purpose of the subroutine info1, is to print out such
+information. The first question we had to address
+was to determine the type of information that
+is inexpensive to obtain and yet practical and useful.
+The simplest and most common statistics
+are: total number of nonzero elements, average number of nonzero
+elements per row (with standard deviation), band size.
+Our preliminary package Info1 contains the above and a
+number of other features. For example it answers the following
+questions: Is the matrix lower triangular, upper triangular?
+does it have a symmetric structure? If not how close is it
+from having this property? Is it weakly row-diagonally dominant?
+What percentage of the rows are weakly diagonally dominant?
+Same questions for column diagonal dominance.
+A sample output from info1 is listed in
+Figure\ref{Fig1}. This print-out was generated by typing
+\begin{center}
+{\tt info1.ex < pores\_2}
+\end{center}
+%\[ {\rm info1.ex} < {\rm pores\_2} \]
+where {\tt pores\_2} is a file containing a matrix in H/B format.
+
+If the Harwell-Boeing matrix is symmetric then Info1 takes this
+information into account to obtain the correct information
+instead of the information on the lower triangular part only.
+Moreover, in cases where only the pattern is provided (no real
+values), then info1 will print a message to this effect and
+will then give information related only to the structure of
+the matrix. The output for an example of this type is shown in
+Figure~\ref{Fig2}. We should point out that the runs for these
+two tests were basically instantaneous on a Sun-4 workstation.
+
+Currently, this module contains the following subroutines:
+
+\vskip 0.3in
+
+\marg{ N\_IMP\_DIAG }\disp{ Computes the most important diagonals.}
+
+\marg{ DIAG\_DOMI }\disp{ Computes the percentage of weakly diagonally
+dominant rows/columns.}
+
+\marg{ BANDWIDTH }\disp{ Computes the lower, upper, maximum, and
+average bandwidths.}
+
+\marg{ NONZ }\disp{ Computes maximum numbers of nonzero elements
+per column/row, min numbers of nonzero elements per column/row,
+and numbers of zero columns/rows.}
+
+\marg{ FROBNORM }\disp{ Computes the Frobenius norm of A.}
+
+\marg{ ANSYM }\disp{ Computes the Frobenius norm of the symmetric and
+non-symmetric parts of A, computes the number of matching elements in symmetry
+and the relative symmetry match.
+The routine ANSYM provides some information on the degree of symmetry of A.}
+
+\marg{ DISTAIJ }\disp{ Computes the average distance of a(i,j) from diag and
+standard deviation for this average.}
+
+\marg{ SKYLINE }\disp{ Computes the number of nonzeros in the skyline storage.}
+
+\marg{ DISTDIAG }\disp{ Computes the numbers of elements in each diagonal.}
+
+\marg{ BANDPART }\disp{ Computes the bandwidth of the banded matrix,
+which contains 'nper' percent of the original matrix.}
+
+
+\marg{ NONZ\_LUD }\disp{ Computes the number of nonzero elements in strict
+lower part, strict upper part, and main diagonal.}
+
+\marg{ AVNZ\_COL }\disp{ Computes average number of nonzero elements/column
+and standard deviation for the average.}
+
+\marg{ VBRINFO }\disp{ Prints information about matrices in variable block row
+format.}
+
+% This has been updated to match the new code. -- June 3, 1994.
+%* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+%* unsymmetric matrix from pores *
+%* Key = pores_2 , Type = rua *
+%* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+% * Dimension N = 1224 *
+% * Number of nonzero elements = 9613 *
+% * Average number of nonzero elements/Column = 7.8538 *
+% * Standard deviation for above average = 5.4337 *
+% * Nonzero elements in strict upper part = 4384 *
+% * Nonzero elements in strict lower part = 4005 *
+% * Nonzero elements in main diagonal = 1224 *
+% * Weight of longest column = 30 *
+% * Weight of shortest column = 2 *
+% * Weight of longest row = 30 *
+% * Weight of shortest row = 2 *
+% * Matching elements in symmetry = 6358 *
+% * Relative Symmetry Match (symmetry=1) = 0.6614 *
+% * Average distance of a(i,j) from diag. = 0.615E+02 *
+% * Standard deviation for above average = 0.103E+03 *
+% *-----------------------------------------------------------------*
+% * Frobenius norm of A = 0.150E+09 *
+% * Frobenius norm of symmetric part = 0.100E+09 *
+% * Frobenius norm of nonsymmetric part = 0.951E+08 *
+% * Maximum element in A = 0.378E+08 *
+% * Percentage of weakly diagonally dominant rows = 0.481E+00 *
+% * Percentage of weakly diagonally dominant columns = 0.490E-02 *
+% *-----------------------------------------------------------------*
+% * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = 470 *
+% * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = 471 *
+% * Maximum Bandwidth = 736 *
+% * Average Bandwidth = 0.190E+03 *
+% * Number of nonzeros in skyline storage = 340385 *
+% * 90% of matrix is in the band of width = 527 *
+% * 80% of matrix is in the band of width = 145 *
+% * The total number of nonvoid diagonals is = 367 *
+% * The 10 most important diagonals are (offsets) : *
+% * 0 1 -1 -2 2 -3 -32 -264 264 32 *
+% * The accumulated percentages they represent are : *
+% * 12.7 24.6 31.7 37.9 43.6 49.0 52.4 55.7 58.6 61.4 *
+% *-----------------------------------------------------------------*
+% * The matrix does not have a block structure *
+% *-----------------------------------------------------------------*
+\begin{figure}
+\begin{verbatim}
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* UNSYMMETRIC MATRIX FROM PORES *
+* Key = PORES 2 , Type = RUA *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Dimension N = 1224 *
+ * Number of nonzero elements = 9613 *
+ * Average number of nonzero elements/Column = 7.8538 *
+ * Standard deviation for above average = 5.4337 *
+ * Nonzero elements in strict lower part = 4384 *
+ * Nonzero elements in strict upper part = 4005 *
+ * Nonzero elements in main diagonal = 1224 *
+ * Weight of longest column = 30 *
+ * Weight of shortest column = 2 *
+ * Weight of longest row = 16 *
+ * Weight of shortest row = 5 *
+ * Matching elements in symmetry = 6358 *
+ * Relative Symmetry Match (symmetry=1) = 0.6614 *
+ * Average distance of a(i,j) from diag. = 0.615E+02 *
+ * Standard deviation for above average = 0.103E+03 *
+ *-----------------------------------------------------------------*
+ * Frobenius norm of A = 0.150E+09 *
+ * Frobenius norm of symmetric part = 0.103E+09 *
+ * Frobenius norm of nonsymmetric part = 0.980E+08 *
+ * Maximum element in A = 0.378E+08 *
+ * Percentage of weakly diagonally dominant rows = 0.490E-02 *
+ * Percentage of weakly diagonally dominant columns = 0.481E+00 *
+ *-----------------------------------------------------------------*
+ * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = 470 *
+ * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = 471 *
+ * Maximum Bandwidth = 736 *
+ * Average Bandwidth = 0.190E+03 *
+ * Number of nonzeros in skyline storage = 342833 *
+ * 90% of matrix is in the band of width = 527 *
+ * 80% of matrix is in the band of width = 145 *
+ * The total number of nonvoid diagonals is = 367 *
+ * The 10 most important diagonals are (offsets) : *
+ * 0 -1 1 2 -2 3 32 264 -264 -32 *
+ * The accumulated percentages they represent are : *
+ * 12.7 24.6 31.7 37.9 43.6 49.0 52.4 55.7 58.6 61.4 *
+ *-----------------------------------------------------------------*
+ * The matrix does not have a block structure *
+ *-----------------------------------------------------------------*
+\end{verbatim}
+\caption{Sample output from Info1.ex \label{Fig1} }
+\end{figure}
+
+
+%* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+%* SYMMETRIC PATTERN FROM CANNES,LUCIEN MARRO,JUNE 1981. *
+%* Key = CAN 1072 , Type = PSA *
+%* No values provided - Information on pattern only *
+%* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+% * Dimension N = 1072 *
+% * Number of nonzero elements = 6758 *
+% * Average number of nonzero elements/Column = 11.6082 *
+% * Standard deviation for above average = 5.6474 *
+% * Nonzero elements in strict upper part = 5686 *
+% * Nonzero elements in strict lower part = 5686 *
+% * Nonzero elements in main diagonal = 1072 *
+% * Weight of longest column = 35 *
+% * Weight of shortest column = 6 *
+% * Matching elements in symmetry = 6758 *
+% * Relative Symmetry Match (symmetry=1) = 1.0000 *
+% * Average distance of a(i,j) from diag. = 0.110E+03 *
+% * Standard deviation for above average = 0.174E+03 *
+% *-----------------------------------------------------------------*
+% * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = 1048 *
+% * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = 1048 *
+% * Maximum Bandwidth = 1055 *
+% * Average Bandwidth = 0.376E+03 *
+% * Number of nonzeros in skyline storage = 277248 *
+% * 90% of matrix is in the band of width = 639 *
+% * 80% of matrix is in the band of width = 343 *
+% * The total number of nonvoid diagonals is = 627 *
+% * The 5 most important diagonals are (offsets) : *
+% * 0 -1 -2 -3 -4 *
+% * The accumulated percentages they represent are : *
+% * 15.9 24.7 29.7 33.9 36.3 *
+% *-----------------------------------------------------------------*
+% * The matrix does not have a block structure *
+% *-----------------------------------------------------------------*
+\begin{figure}
+\begin{verbatim}
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* SYMMETRIC PATTERN FROM CANNES,LUCIEN MARRO,JUNE 1981. *
+* Key = CAN 1072 , Type = PSA *
+* No values provided - Information on pattern only *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Dimension N = 1072 *
+ * Number of nonzero elements = 6758 *
+ * Average number of nonzero elements/Column = 6.3041 *
+ * Standard deviation for above average = 6.2777 *
+ * Nonzero elements in strict lower part = 5686 *
+ * Nonzero elements in strict upper part = 5686 *
+ * Nonzero elements in main diagonal = 1072 *
+ * Weight of longest column = 39 *
+ * Weight of shortest column = 4 *
+ * Matching elements in symmetry = 6758 *
+ * Relative Symmetry Match (symmetry=1) = 1.0000 *
+ * Average distance of a(i,j) from diag. = 0.110E+03 *
+ * Standard deviation for above average = 0.174E+03 *
+ *-----------------------------------------------------------------*
+ * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = 0 *
+ * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = 1048 *
+ * Maximum Bandwidth = 1049 *
+ * Average Bandwidth = 0.117E+03 *
+ * Number of nonzeros in skyline storage = 278320 *
+ * 90% of matrix is in the band of width = 639 *
+ * 80% of matrix is in the band of width = 343 *
+ * The total number of nonvoid diagonals is = 627 *
+ * The 5 most important diagonals are (offsets) : *
+ * 0 1 2 3 4 *
+ * The accumulated percentages they represent are : *
+ * 15.9 24.7 29.7 33.9 36.3 *
+ *-----------------------------------------------------------------*
+ * The matrix does not have a block structure *
+ *-----------------------------------------------------------------*
+\end{verbatim}
+\caption{Sample output from Info1.ex for matrix with pattern only \label{Fig2}}
+\end{figure}
+
+%% \vfill
+
+\section{Matrix generation routines}
+One of the difficulties encountered when testing and comparing
+numerical methods, is that it is sometimes difficult to
+guarantee that the matrices compared are indeed identical.
+Even though a paper may give full details on the test
+problems considered, programming errors or differences in coding
+may lead to the incorrect matrices and the incorrect conclusions.
+This has often happened in the past and is likely to be avoided if
+the matrices were generated with exactly the same code.
+The module MATGEN of
+SPARSKIT includes several matrix generation routines.
+
+\subsection{Finite Difference Matrices}
+
+\begin{enumerate}
+\item Scalar 5-point and 7-point matrices arising
+from discretization of the elliptic type equation:
+\begin{equation}
+L u = {\del \over \del x} ( a {\del \over \del x } u )
++ {\del \over \del y } ( b {\del \over \del y } u)
++ {\del \over \del z } ( c {\del \over \del z } u )
++ {\del \over \del x } ( d u ) + {\del \over \del y } (e u)
++ {\del \over \del z } ( f u ) + g u = h u
+\label{5-7pt}
+\end{equation}
+on rectangular regions with general mixed type boundary conditions of
+the following form
+\[ \alpha {\del u \over \del n} + \beta u = \gamma \]
+The user provides the functions $a, b, c, ...,h$, $\beta, \gamma$ and
+$\alpha$ is a constant on each boundary surface. The resulting
+matrix is in general sparse format, possibly printed in a file
+in the H/B format.
+
+There is a switch in the subroutine which makes it possible to choose
+between a strict centered difference type of discretization, or an
+upwind scheme for the first order derivatives.
+
+\item
+Block 5-point and 7-point matrices arising
+from discretization of the elliptic type equation \nref{5-7pt}
+in which $u$ is now a vector of $nfree$ components, and
+$a,b,c, ..., g$ are $nfree \times nfree $ matrices provided by the
+user.
+
+\end{enumerate}
+
+\subsection{Finite Element Matrices}
+
+Finite element matrices created from the convection-diffusion type problem
+\begin{equation} - \nabla . ({ K \nabla u }) + {C \nabla u} = f \label{kikuchi}
+\end{equation}
+on a domain $D$ with Dirichlet boundary conditions. A coarse initial domain
+is described by the user and the code does an arbitrary user-specified number
+of refinements of the grid and assembles the matrix, in CSR format.
+Linear triangular elements are used. If only the matrix is desired the heat
+source $f$ can be zero. Arbitrary grids can be input, but the user may
+also take advantage of nine initial grids
+supplied by the package for simple test problems.
+
+Two examples of meshes and the corresponding assemble matrices are shown
+in the following two pairs of figures: the first pair of figures are the mesh
+and assembled matrix with mesh number 8 and refinement 1; the second pair of
+figures are the mesh and assembled matrix with mesh number 9 and refinement 1.
+
+\begin{figure}[b]
+\begin{minipage}[h]{6.5cm}
+\includegraphics[height=5cm]{msh8}
+\end{minipage}
+\hfill
+\begin{minipage}[h]{6.5cm}
+\includegraphics[height=5cm]{mat8}
+\end{minipage}
+\hfill
+\end{figure}
+
+\newpage
+
+\begin{figure}
+\begin{minipage}[h]{6.5cm}
+\includegraphics[width=8cm]{msh9}
+\end{minipage}
+\hfill
+\begin{minipage}[h]{6.5cm}
+\includegraphics[height=7cm]{mat9}
+\end{minipage}
+\hfill
+\end{figure}
+
+\vskip 2.5in
+\subsection{Markov Chains}
+
+Markov chain matrices arising from a random walk on a
+triangular grid. This is mainly useful for testing nonsymmetric
+eigenvalue codes. It has been suggested by G.W. Stewart in one of his
+papers \cite{Stewart-SRRIT} and was used by Y. Saad in a few
+subsequent papers as a test problem for nonsymmetric eigenvalue methods,
+see, e.g., \cite{Saad-cheb}.
+
+\subsection{Other Matrices}
+
+Currently we have only one additional set of matrices. These are
+the test matrices
+\footnote{These subroutines have been contributed
+to the author by E. Rothman from Cornell University.} from
+Zlatev et. al. \cite{Zlatev-tests} and Osterby and Zlatev
+\cite{OsterbyZlatev-book}. The first two matrix generators
+described in the above references
+are referred to as $D(n,c) $ and $E(n,c)$ respectively.
+A more elaborate class where more than two parameters can be varied,
+is referred to as the class $F(m,n,c,r,\alpha) $ in
+\cite{OsterbyZlatev-book,Zlatev-tests}. The three subroutines to generate
+these matrices are called MATRF2 (for the class $F(m,n,c,r,\alpha)$ ),
+DCN (for the class $D(c,n)$) and ECN (for the class $E(c,n) $).
+These codes can generate rectangular as well as square
+matrices and allow a good flexibility in making the matrices
+more or less dense and more or less well conditioned.
+
+\section{The ORDERING Routines}
+The following subroutines are available in the directory ORDERINGS.
+
+\vskip 0.3in
+
+\marg{ levset.f }\disp{Reordering based on level sets, including
+Cuthill-McKee implemented with breadth first search.}
+
+\marg{ color.f }\disp{Reordering based on coloring, including a greedy
+algorithm for multicolor ordering.}
+
+\marg{ ccn.f }\disp{Reordering routines based on strongly connected
+components. Contributed by Laura C. Dutto (CERCA and Concordia
+University.}
+
+
+\section{The ITSOL routines}
+
+\marg{ILUT}\disp{This file contains a preconditioned GMRES algorithm
+ with four preconditioners:}
+\marg{pgmres}\disp{Preconditioned GMRES solver. This solver may be used
+ with all four of the precondioners below. Supports right preconditioning
+ only.}
+\marg{ilut}\disp{ A robust preconditioner called ILUT
+ which uses a dual thresholding strategy for dropping elements.
+ Arbitrary accuracy is allowed in ILUT.}
+\marg{ilutp}\disp{ ILUT with partial pivoting}
+\marg{ilu0}\disp{ simple ILU(0) preconditioner}
+\marg{milu0}\disp{ MILU(0) preconditioner}
+
+\marg{ITERS}\disp{This file currently has several basic iterative linear
+ system solvers which use reverse communication. They are:}
+\marg{cg}\disp{Conjugate Gradient Method}
+\marg{cgnr}\disp{Conjugate Gradient Method\-- for Normal Residual equation}
+\marg{bcg}\disp{Bi\-Conjugate Gradient Method}
+\marg{bcgstab}\disp{BCG stablized}
+\marg{tfqmr}\disp{Transpose\-Free Quasi\-Minimum Residual method}
+\marg{gmres}\disp{Generalized Minimum Residual method}
+\marg{fgmres}\disp{Flexible version of Generalized Minimum Residual method}
+\marg{dqgmres}\disp{Direct versions of Quasi Generalized Minimum Residual
+ method}
+\marg{dbcg}\disp{BCG with partial pivoting}
+
+
+\section{The UNSUPP directory}
+In addition to the basic tools described in the previous
+sections, SPARSKIT includes a directory
+called UNSUPP includes software that is not necessarily
+portable or that does not fit in all previous modules.
+For example software for viewing matrix patterns on
+some particular workstation
+may be found here. Another example is
+routines related to matrix exponentials.
+%all the different
+%reordering schemes, such as minimum degree ordering, or
+%nested dissection etc..
+Many of these are available from
+NETLIB but others may be contributed by researchers for
+comparison purposes.
+
+%The two basic programs for viewing matrix patterns on
+%a sun screen will eventually be replaced by
+%programs for the X-windows environment which is fast becoming
+%a standard.
+
+%There are three subdirecitories in this directory.
+%\subsection{Blas1}
+%The following items are available in Blas1.
+%
+%\vskip 0.3in
+%
+%\marg{dcopy} \disp{copies a vector, x, to a vector, y.}
+%\marg{ddot} \disp{dot product of two vectors.}
+%\marg{csscal}\disp{scales a complex vector by a real constant.}
+%\marg{cswap} \disp{interchanges two vectors.}
+%\marg{csrot} \disp{applies a plane rotation.}
+%\marg{cscal} \disp{scales a vector by a constant.}
+%\marg{ccopy} \disp{copies a vector, x, to a vector, y.}
+%\marg{drotg} \disp{construct givens plane rotation.}
+%\marg{drot} \disp{applies a plane rotation.}
+%\marg{dswap} \disp{interchanges two vectors.}
+%\marg{dscal} \disp{scales a vector by a constant.}
+%\marg{daxpy} \disp{constant times a vector plus a vector.}
+
+
+\subsection{Plots}
+The following items are available in PLOTS.
+
+\vskip 0.3in
+
+%\marg{ PLTMTPS}\disp{ a translation of the pltmt subroutine
+% in INOUT/inout.f
+% to produce a post-script file rather than a pic file.
+% Does not yet offer the same functionality as pltmt. }
+%
+%\marg{ HB2PIC}\disp{ reads a Harwell-Boeing
+% matrix and creates a picture file for pattern.}
+%
+%\marg{ HB2PS}\disp{translates a Harwell-Boeing file into a
+%Post-Script file.}
+
+\marg{ PSGRD}\disp{ contains subroutine "psgrid" which plots
+ a symmetric graph.}
+
+%\marg{ RUNPS}\disp{ contains subroutine "rpltps" which reads
+% a Harwell-Boeing file from standard input and creates a
+% Post-Script file for it}
+
+\marg{ TEXPLT1}\disp{ contains subroutine "texplt" allows
+ several matrices in the same picture by calling texplt several
+ times and exploiting job and different shifts.}
+
+\marg{ TEXGRID1}\disp{ contains subroutine "texgrd" which
+ generates tex commands for plotting a symmetric graph associated
+ with a mesh. Allows several grids in the same picture by
+ calling texgrd several times and exploiting job and different
+ shifts.}
+
+
+\subsection{Matrix Exponentials}
+Two subroutines are available in this directory.
+\vskip 0.3in
+\marg{ EXPPRO}\disp{ A subroutine for computing the product of a matrix
+ exponential times a vector, i.e. $w = exp(t\ A)\ v$.}
+\marg{ PHIPRO}\disp{ computes $w = \phi(A\ t)\ v$,
+ where $\phi(x) = (1-exp(x))/x$; Also can solve the
+ system of ODE's $ y'= A y + b$.}
+
+\section{Distribution}
+The SPARSKIT package
+follows the Linpack-Eispack approach in that it aims at providing
+efficient and well tested subroutines written in portable FORTRAN.
+Similarly to the Linpack and Eispack packages, the goal is to
+make available a common base of useful codes for a specific
+area of computation, in this case sparse linear algebra.
+The package is in the public domain and will be made
+accessible through the internet.
+
+See Figure \ref{organization} for an illustration of the organization
+of SPARSKIT. Read the README file in the main directory for more
+information.
+
+%Currently, the package is organized in six distinct subdirectories,
+%each containing one or more modules. The six directories
+%and the modules they contain are the following:
+%INOUT (inout.f), FORMATS (formats.f, unary.f), BLASSM (blassm.f,
+%matvec.f), MATGEN (genmat.f, zlatev.f), INFO (dinfo1.f),
+%UNSUPP (various routines). Test programs with unix makefiles
+%are provided in each
+%subdirectory to test a large number of the subroutines.
+%Each directory contains a README file listing contents,
+%and giving additional information.
+
+For information concerning distribution contact the author at
+%%saad@riacs.edu.
+saad@cs.umn.edu.
+
+\section{Conclusion and Future Plans}
+It is hoped that SPARSKIT will be useful in many
+ways to researchers in different areas of scientific computing.
+In this version of SPARSKIT, there are few sparse
+problem solvers, such as direct solution methods, or
+eigenvalue solvers. Some of these are available from different
+sources and we felt that it was not appropriate to provide
+additional ones. The original
+motivation for SPARSKIT is that there is
+a gap to fill in the manipulation and basic computations
+with sparse matrices. Once this gap is filled with some
+satisfaction, then additional functionality may be added.
+
+We briefly mentioned in the introduction the possibility of using
+SPARSKIT to develop an interactive package.
+Large matrices of dimension tens of of thousands can
+easily be manipulated with the current supercomputers,
+in real time. One of the difficulties
+with such an interactive package is that we do not yet
+have reliable routines for computing eigenvalues/eigenvectors of
+large sparse matrices. The state of the art in solving linear
+systems is in a much better situation. However, one must not
+contemplate performing the same type of computations as with
+small dense matrices. As an example,
+getting all the eigenvalues of a sparse matrix is not likely
+to be too useful when the matrix is very large.
+
+Beyond interactive software for sparse linear algebra, one can
+envision the integration of SPARSKIT in a larger package
+devoted to solving certain types of Partial Differential Equations,
+possibly interactively.
+
+\vskip 1.3in
+\noindent
+{\bf Acknowledgements.} The idea of creating a tool package for
+sparse matrices germinated while the author was at the Center for
+Supercomputing Research and Development of the University of Illinois
+(1986-1987) and part of this work was performed there.
+Initially the author has benefited from helpful comments from Iain Duff
+(then visiting CSRD) and a number of colleagues at CSRD.
+Billy Stewart and his students at NCSU used a preliminary version of
+SPARSKIT in a class project and made some
+valuable comments. Ernie Rothman (Cornell) and
+Laura Dutto (Montreal) contributed some software.
+The author has also benefited from helpful discussions
+from a number of other colleagues, including
+Mike Heroux, Giuseppe Radicatti, Ahmed Sameh, Horst Simon,
+Phuong Vu, and Harry Wijshoff. Students who contributed to
+version 2 of SPARSKIT include Kesheng Wu, Edmond Chow, and Dongli Su.
+
+\newpage
+\begin{thebibliography}{10}
+
+\bibitem{Anderson-Saad}
+E.~C. Anderson and Y.~Saad.
+\newblock Solving sparse triangular systems on parallel computers.
+\newblock Technical Report 794, University of Illinois, CSRD, Urbana, IL, 1988.
+
+\bibitem{Duff-survey}
+I.~S. Duff.
+\newblock A survey of sparse matrix research.
+\newblock In {\em Proceedings of the IEEE, 65}, pages 500--535, New York, 1977.
+ Prentice Hall.
+
+\bibitem{Duff-book}
+I.~S. Duff, {A. M. Erisman}, and {J. K. Reid}.
+\newblock {\em Direct Methods for Sparse Matrices}.
+\newblock Clarendon Press, Oxford, 1986.
+
+\bibitem{Duff-HB}
+I.~S. Duff, R.~G. Grimes, and J.~G. Lewis.
+\newblock Sparse matrix test problems.
+\newblock {\em ACM trans. Math. Soft.}, 15:1--14, 1989.
+
+\bibitem{Oppe-NSPCG}
+T.~C. Oppe~Wayne Joubert and D.~R. Kincaid.
+\newblock Nspcg user's guide. a package for solving large linear systems by
+ various iterative methods.
+\newblock Technical report, The University of Texas at Austin, 1988.
+
+\bibitem{Oppe-Kincaid}
+T.~C. Oppe and D.~R. Kincaid.
+\newblock The performance of {ITPACK} on vector computers for solving large
+ sparse linear systems arising in sample oil reservoir simulation problems.
+\newblock {\em Communications in applied numerical methods}, 2:1--7, 1986.
+
+\bibitem{OsterbyZlatev-book}
+O.~Osterby and Z.~Zlatev.
+\newblock {\em Direct methods for sparse matrices}.
+\newblock Springer Verlag, New York, 1983.
+
+\bibitem{Saad-cheb}
+Y.~Saad.
+\newblock {Chebyshev} acceleration techniques for solving nonsymmetric
+ eigenvalue problems.
+\newblock {\em Mathematics of Computation}, 42:567--588, 1984.
+
+\bibitem{Saad-Boeing}
+Y.~Saad.
+\newblock {Krylov} subspace methods on supercomputers.
+\newblock {\em SIAM J. Scient. Stat. Comput.}, 10:1200--1232, 1989.
+
+\bibitem{Stewart-SRRIT}
+G.W. Stewart.
+\newblock {SRRIT} - a FORTRAN subroutine to calculate the dominant invariant
+ subspaces of a real matrix.
+\newblock Technical Report TR-514, University of Maryland, College Park, MD,
+ 1978.
+
+\bibitem{Young-Oppe-al}
+D.~M. Young, T.C. Oppe, D.~R. Kincaid, and L.~J. Hayes.
+\newblock On the use of vector computers for solving large sparse linear
+ systems.
+\newblock Technical Report CNA-199, Center for Numerical Analysis, University
+ of Texas at Austin, Austin, Texas, 1985.
+
+\bibitem{Zlatev-tests}
+Z.~Zlatev, K.~Schaumburg, and J.~Wasniewski.
+\newblock A testing scheme for subroutines solving large linear problems.
+\newblock {\em Computers and Chemistry}, 5:91--100, 1981.
+
+\end{thebibliography}
+%%
+
+\newpage
+
+\appendix
+\centerline{\bf APPENDIX: QUICK REFERENCE}
+\vskip 0.3in
+
+For convenience we list in this
+appendix the most important subroutines in the various
+modules of SPARSKIT. More detailed information can be found either
+in the body of the paper or in the documentation of the package.
+
+\vskip 0.3in
+\centerline{\bf FORMATS Module}
+
+\begin{itemize}
+
+\item CSRDNS : converts a row-stored sparse matrix into the dense format.
+\item DNSCSR : converts a dense matrix to a sparse storage format.
+\item COOCSR : converts coordinate to to csr format
+\item COICSR : in-place conversion of coordinate to csr format
+\item CSRCOO : converts compressed sparse row to coordinate format.
+\item CSRSSR : converts compressed sparse row to symmetric sparse row format.
+\item SSRCSR : converts symmetric sparse row to compressed sparse row format.
+\item CSRELL : converts compressed sparse row to Ellpack format
+\item ELLCSR : converts Ellpack format to compressed sparse row format.
+\item CSRMSR : converts compressed sparse row format to modified sparse
+ row format.
+\item MSRCSR : converts modified sparse row format to compressed sparse
+ row format.
+\item CSRCSC : converts compressed sparse row format to compressed sparse
+ column format (transposition).
+\item CSRLNK : converts compressed sparse row to linked list format.
+\item LNKCSR : converts linked list format to compressed sparse row fmt.
+\item CSRDIA : converts the compressed sparse row format into the diagonal
+ format.
+\item DIACSR : converts the diagonal format into the compressed sparse row
+ format.
+\item BSRCSR : converts the block-row sparse format into the compressed
+ sparse row format.
+\item CSRBSR : converts the compressed sparse row format into the block-row
+ sparse format.
+\item CSRBND : converts the compressed sparse row format into the banded
+ format (Linpack style).
+\item BNDCSR : converts the banded format (Linpack style) into the compressed
+ sparse row storage.
+\item CSRSSK : converts the compressed sparse row format to the symmetric
+ skyline format
+\item SSKSSR : converts symmetric skyline format to symmetric
+sparse row format.
+\item CSRJAD : converts the csr format into the jagged diagonal format.
+\item JADCSR : converts the jagged-diagonal format into the csr format.
+\item CSRUSS : converts the csr format to unsymmetric sparse skyline format.
+\item USSCSR : converts unsymmetric sparse skyline format to the csr format.
+\item CSRSSS : converts the csr format to symmetric sparse skyline format.
+\item SSSCSR : converts symmetric sparse skyline format to the csr format.
+\item CSRVBR : converts compressed sparse row into variable block row format.
+\item VBRCSR : converts the variable block row format into the
+\item COOELL : converts the coordinate format into the Ellpack/Itpack format.
+compressed sparse row format.
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf UNARY Module}
+
+\begin{itemize}
+
+\item SUBMAT : extracts a submatrix from a sparse matrix.
+\item FILTER : filters elements from a matrix according to their magnitude.
+\item FILTERM: Same as above, but for the MSR format.
+\item TRANSP : in-place transposition routine (see also CSRCSC in formats)
+\item GETELM : returns $a(i,j)$ for any $(i,j)$ from a CSR-stored matrix.
+\item COPMAT : copies a matrix into another matrix (both stored csr).
+\item MSRCOP : copies a matrix in MSR format into a matrix in MSR format.
+\item GETELM : returns a(i,j) for any (i,j) from a CSR-stored matrix.
+\item GETDIA : extracts a specified diagonal from a matrix.
+\item GETL : extracts lower triangular part.
+\item GETU : extracts upper triangular part.
+\item LEVELS : gets the level scheduling structure for lower triangular
+ matrices.
+\item AMASK : extracts $C = A \odot M $
+\item RPERM : permutes the rows of a matrix ($B = P A$)
+\item CPERM : permutes the columns of a matrix ($B = A Q$)
+\item DPERM : permutes a matrix ($B = P A Q$) given two permutations P, Q
+\item DPERM2 : general submatrix permutation/extraction routine.
+\item DMPERM : symmetric permutation of row and column (B=PAP') in MSR fmt.
+\item DVPERM : permutes a vector (in-place).
+\item IVPERM : permutes an integer vector (in-place).
+\item RETMX : returns the max absolute value in each row of the matrix.
+\item DIAPOS : returns the positions of the diagonal elements in A.
+\item EXTBDG : extracts the main diagonal blocks of a matrix.
+\item GETBWD : returns the bandwidth information on a matrix.
+\item BLKFND : finds the block-size of a matrix.
+\item BLKCHK : checks whether a given integer is the block size of $A$.
+\item INFDIA : obtains information on the diagonals of $A$.
+\item AMUBDG : computes the number of nonzero elements in each
+ row of $A*B$.
+\item APLBDG : computes the number of nonzero elements in each
+ row of $ A+B$.
+\item RNRMS : computes the norms of the rows of $A$.
+\item CNRMS : computes the norms of the columns of $A$.
+\item ROSCAL : scales the rows of a matrix by their norms.
+\item COSCAL : scales the columns of a matrix by their norms.
+\item ADDBLK : adds a matrix B into a block of A.
+\item GET1UP : collects the first elements of each row of the upper
+ triangular portion of the matrix.
+\item XTROWS : extracts given rows from a matrix in CSR format.
+
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf INOUT Module}
+
+\begin{itemize}
+
+\item READMT : reads matrices in the boeing/Harwell format.
+\item PRTMT : prints matrices in the boeing/Harwell format.
+\item DUMP : prints rows of a matrix, in a readable format.
+\item PLTMT : produces a 'pic' file for plotting a sparse matrix.
+\item PSPLTM : Generates a post-script plot of the non-zero
+pattern of A.
+\item SMMS : Write the matrix in a format used in SMMS package.
+\item READSM : Reads matrices in coordinate format (as in SMMS
+package).
+\item READSK : Reads matrices in CSR format (simplified H/B formate).
+\item SKIT : Writes matrices to a file, format same as above.
+\item PRTUNF : Writes matrices (in CSR format) unformatted.
+\item READUNF : Reads unformatted data of matrices (in CSR format).
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf INFO Module}
+
+\begin{itemize}
+\item INFOFUN : routines for statistics on a sparse matrix.
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf MATGEN Module}
+
+\begin{itemize}
+
+\item GEN57PT : generates 5-point and 7-point matrices.
+\item GEN57BL : generates block 5-point and 7-point matrices.
+\item GENFEA : generates finite element matrices in assembled form.
+\item GENFEU : generates finite element matrices in unassembled form.
+\item ASSMB1 : assembles an unassembled matrix (as produced by genfeu).
+\item MATRF2 : Routines for generating sparse matrices by Zlatev et al.
+\item DCN: Routines for generating sparse matrices by Zlatev et al.
+\item ECN: Routines for generating sparse matrices by Zlatev et al.
+\item MARKGEN: subroutine to produce a Markov chain matrix for
+ a random walk.
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf BLASSM Module}
+\begin{itemize}
+\item AMUB : computes $ C = A*B $ .
+\item APLB : computes $ C = A+B $ .
+\item APLSB : computes $ C = A + s B $.
+\item APMBT : Computes $ C = A \pm B^T $.
+\item APLSBT : Computes $ C = A + s * B^T $ .
+\item DIAMUA : Computes $ C = Diag * A $ .
+\item AMUDIA : Computes $ C = A* Diag $ .
+\item APLDIA : Computes $ C = A + Diag $ .
+\item APLSCA : Computes $ A:= A + s I $ ($s$ = scalar).
+\end{itemize}
+
+\vskip 0.3in
+\centerline{\bf MATVEC Module}
+
+\begin{itemize}
+
+\item AMUX : $A$ times a vector. Compressed Sparse Row (CSR) format.
+\item ATMUX : $A^T $ times a vector. CSR format.
+\item AMUXE : $A$ times a vector. Ellpack/Itpack (ELL) format.
+\item AMUXD : $A$ times a vector. Diagonal (DIA) format.
+\item AMUXJ : $A$ times a vector. Jagged Diagonal (JAD) format.
+\item VBRMV : $A$ times a vector. Variable Block Row (VBR) format.
+\item LSOL : Unit lower triangular system solution.
+Compressed Sparse Row (CSR) format.
+\item LDSOL : Lower triangular system solution.
+ Modified Sparse Row (MSR) format.
+\item LSOL : Unit lower triangular system solution.
+ Compressed Sparse Column (CSC) format.
+\item LDSOLC: Lower triangular system solution.
+ Modified Sparse Column (MSC) format.
+\item LDSOLL: Lower triangular system solution
+with level scheduling. MSR format.
+\item USOL : Unit upper triangular system solution.
+ Compressed Sparse Row (CSR) format.
+\item UDSOL : Upper triangular system solution.
+ Modified Sparse Row (MSR) format.
+\item USOLC : Unit upper triangular system solution.
+ Compressed Sparse Column (CSC) format.
+\item UDSOLC: Upper triangular system solution.
+ Modified Sparse Column (MSC) format.
+
+\end{itemize}
+
+\vskip 0.3in
+\vbox{
+\centerline{\bf ORDERINGS Module}
+\begin{itemize}
+\item levset.f : level set based reordering, including RCM
+\item color.f : coloring based reordering
+\item ccn.f : reordering based on strongly connected components
+\end{itemize}
+}
+
+\vskip 0.3in
+\vbox{
+\centerline{\bf ITSOL Module}
+\begin{itemize}
+\item ILUT: ILUT(k) preconditioned GMRES mini package.
+\item ITERS: nine basic iterative linear system solvers.
+\end{itemize}
+}
+
+\vskip 0.3in
+\vbox{
+\centerline{\bf PLOTS Module}
+\begin{itemize}
+%\item PLTMTPS : creates a Post Script file to plot a sparse matrix.
+%\item HB2PIC: reads a Harwell-Boeing matrix and creates a pic file
+% for pattern.
+%\item HB2PS: translates a Harwell - Boeing file into a Post-Script file.
+\item PSGRD: plots a symmetric graph.
+%\item RUNPS: reads a Harwell - Boeing file from standard input and
+% creates a Post-Script file for it.
+\item TEXPLT1: allows several matrices in the same picture.
+\item TEXGRID1: allows several grids in the same picture.
+\end{itemize}
+ }
+
+\vskip 0.3in
+\vbox{
+\centerline{\bf MATEXP Module}
+\begin{itemize}
+\item EXPPRO: computes $w = exp(t\ A)\ v$.
+\item PHIPRO: computes $w = \phi(A\ t)\ v$,
+ where $ \phi(x) = (1-exp(x))/x$.
+ Also solves the P.D.E. system $y' = Ay+b$.
+\end{itemize}
+ }
+
+\end{document}
+
+\begin{thebibliography}{1}
+
diff --git a/DOC/vbrpic.eps b/DOC/vbrpic.eps
new file mode 100644
index 0000000..152369a
--- /dev/null
+++ b/DOC/vbrpic.eps
@@ -0,0 +1,307 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /tmp/xfig-fig009549
+%%Creator: fig2dev
+%%CreationDate: Sun May 1 19:21:40 1994
+%%For: chow@mega (Edmond Chow,EE/CS 6-210,626-0071,625-3031)
+%%BoundingBox: 0 0 403 355
+%%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
+ end
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+0 setlinecap 0 setlinejoin
+-58.0 414.0 translate 0.900 -0.900 scale
+0.500 setlinewidth
+% Polyline
+n 99 439 m 479 439 l 479 459 l 99 459 l 99 439 l clp gs col-1 s gr
+% Polyline
+n 119 439 m 119 459 l gs col-1 s gr
+% Polyline
+n 139 439 m 139 459 l gs col-1 s gr
+% Polyline
+n 159 439 m 159 459 l gs col-1 s gr
+% Polyline
+n 179 439 m 179 459 l gs col-1 s gr
+% Polyline
+n 199 439 m 199 459 l gs col-1 s gr
+% Polyline
+n 219 439 m 219 459 l gs col-1 s gr
+% Polyline
+n 239 439 m 239 459 l gs col-1 s gr
+% Polyline
+n 259 439 m 259 459 l gs col-1 s gr
+n 279 439 m 279 439 l gs col-1 s gr
+% Polyline
+n 279 439 m 279 459 l gs col-1 s gr
+% Polyline
+n 299 439 m 299 459 l gs col-1 s gr
+% Polyline
+n 319 439 m 319 459 l gs col-1 s gr
+% Polyline
+n 339 439 m 339 459 l gs col-1 s gr
+% Polyline
+n 359 439 m 359 459 l gs col-1 s gr
+% Polyline
+n 379 439 m 379 459 l gs col-1 s gr
+% Polyline
+n 399 439 m 399 459 l gs col-1 s gr
+% Polyline
+n 419 439 m 419 459 l gs col-1 s gr
+% Polyline
+n 459 439 m 459 459 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 434 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 454 m
+gs 1 -1 scale (A) col-1 show gr
+% Polyline
+n 399 79 m 499 79 l 499 99 l 399 99 l 399 79 l clp gs col-1 s gr
+% Polyline
+n 419 79 m 419 99 l gs col-1 s gr
+% Polyline
+n 439 79 m 439 99 l gs col-1 s gr
+% Polyline
+n 459 79 m 459 99 l gs col-1 s gr
+% Polyline
+n 479 79 m 479 99 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+404 74 m
+gs 1 -1 scale ( 1 2 3 4 5) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+339 94 m
+gs 1 -1 scale (KVSTC) col-1 show gr
+% Polyline
+n 199 79 m 279 79 l 279 99 l 199 99 l 199 79 l clp gs col-1 s gr
+% Polyline
+n 219 79 m 219 99 l gs col-1 s gr
+% Polyline
+n 239 79 m 239 99 l gs col-1 s gr
+% Polyline
+n 259 79 m 259 99 l gs col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+209 94 m
+gs 1 -1 scale (1 3 4 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+204 74 m
+gs 1 -1 scale ( 1 2 3 4) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+139 94 m
+gs 1 -1 scale (KVSTR) col-1 show gr
+% Polyline
+n 99 219 m 179 219 l 179 239 l 99 239 l 99 219 l clp gs col-1 s gr
+% Polyline
+n 99 279 m 219 279 l 219 299 l 99 299 l 99 279 l clp gs col-1 s gr
+% Polyline
+n 99 339 m 239 339 l 239 359 l 99 359 l 99 339 l clp gs col-1 s gr
+% Polyline
+n 119 219 m 119 239 l gs col-1 s gr
+% Polyline
+n 139 219 m 139 239 l gs col-1 s gr
+% Polyline
+n 159 219 m 159 239 l gs col-1 s gr
+% Polyline
+n 119 279 m 119 299 l gs col-1 s gr
+% Polyline
+n 139 279 m 139 299 l gs col-1 s gr
+% Polyline
+n 159 279 m 159 299 l gs col-1 s gr
+% Polyline
+n 179 279 m 179 299 l gs col-1 s gr
+% Polyline
+n 199 279 m 199 299 l gs col-1 s gr
+% Polyline
+n 119 339 m 119 359 l gs col-1 s gr
+% Polyline
+n 139 339 m 139 359 l gs col-1 s gr
+% Polyline
+n 159 339 m 159 359 l gs col-1 s gr
+% Polyline
+n 179 339 m 179 359 l gs col-1 s gr
+% Polyline
+n 199 339 m 199 359 l gs col-1 s gr
+% Polyline
+n 219 339 m 219 359 l gs col-1 s gr
+% Polyline
+n 109 239 m 109 259 l gs col-1 s gr
+n 111.000 251.000 m 109.000 259.000 l 107.000 251.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 124 239 m 144 259 l gs col-1 s gr
+n 139.757 251.929 m 144.000 259.000 l 136.929 254.757 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 149 239 m 184 259 l gs col-1 s gr
+n 178.046 253.294 m 184.000 259.000 l 176.062 256.767 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 169 239 m 224 259 l gs col-1 s gr
+n 217.165 254.386 m 224.000 259.000 l 215.798 258.146 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 439 439 m 439 459 l gs col-1 s gr
+% Polyline
+n 109 359 m 109 419 l gs col-1 s gr
+n 111.000 411.000 m 109.000 419.000 l 107.000 411.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 129 359 m 184 419 l gs col-1 s gr
+n 180.069 411.751 m 184.000 419.000 l 177.120 414.454 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 144 359 m 224 419 l gs col-1 s gr
+n 218.800 412.600 m 224.000 419.000 l 216.400 415.800 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 169 359 m 279 419 l gs col-1 s gr
+n 272.935 413.413 m 279.000 419.000 l 271.019 416.925 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 189 359 m 299 419 l gs col-1 s gr
+n 292.935 413.413 m 299.000 419.000 l 291.019 416.925 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 209 359 m 364 419 l gs col-1 s gr
+n 357.261 414.247 m 364.000 419.000 l 355.817 417.977 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 229 359 m 484 419 l gs col-1 s gr
+n 476.671 415.221 m 484.000 419.000 l 475.755 419.115 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 379 159 m 379 279 l gs col-1 s gr
+% Polyline
+n 439 159 m 439 279 l gs col-1 s gr
+% Polyline
+n 499 279 m 499 159 l 339 159 l 339 279 l clp gs col-1 s gr
+% Polyline
+n 459 159 m 459 279 l gs col-1 s gr
+% Polyline
+n 339 199 m 499 199 l gs col-1 s gr
+% Polyline
+n 339 219 m 499 219 l gs col-1 s gr
+% Polyline
+n 409 99 m 354 139 l gs col-1 s gr
+n 361.646 135.912 m 354.000 139.000 l 359.294 132.677 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 429 99 m 389 139 l gs col-1 s gr
+n 396.071 134.757 m 389.000 139.000 l 393.243 131.929 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 449 99 m 449 139 l gs col-1 s gr
+n 451.000 131.000 m 449.000 139.000 l 447.000 131.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 469 99 m 469 139 l gs col-1 s gr
+n 471.000 131.000 m 469.000 139.000 l 467.000 131.000 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 489 99 m 504 139 l gs col-1 s gr
+n 503.064 130.807 m 504.000 139.000 l 499.318 132.212 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 269 99 m 319 284 l gs col-1 s gr
+n 318.843 275.755 m 319.000 284.000 l 314.982 276.799 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 249 99 m 319 224 l gs col-1 s gr
+n 316.836 216.043 m 319.000 224.000 l 313.346 217.997 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 224 99 m 319 204 l gs col-1 s gr
+n 315.116 196.726 m 319.000 204.000 l 312.150 199.410 l gs 2 setlinejoin col-1 s gr
+% Polyline
+n 209 99 m 319 169 l gs col-1 s gr
+n 313.324 163.018 m 319.000 169.000 l 311.177 166.392 l gs 2 setlinejoin col-1 s gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 294 m
+gs 1 -1 scale ( 1 3 2 3 3 4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 354 m
+gs 1 -1 scale ( 1 5 7 10 11 14 20) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 334 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 234 m
+gs 1 -1 scale (IA) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+69 294 m
+gs 1 -1 scale (JA) col-1 show gr
+/Times-Roman findfont 14.00 scalefont setfont
+64 354 m
+gs 1 -1 scale (KA) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 234 m
+gs 1 -1 scale ( 1 3 5 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 214 m
+gs 1 -1 scale ( 1 2 3 4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 274 m
+gs 1 -1 scale ( 1 2 3 4 5 6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+224 274 m
+gs 1 -1 scale ( 7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+104 454 m
+gs 1 -1 scale ( 1 4 2 5 3 6 7 8 9 10 11 14 17 12 15 18 13 16 19) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+404 94 m
+gs 1 -1 scale ( 1 3 6 7 9 ) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 174 m
+gs 1 -1 scale ( 1 2 3) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 194 m
+gs 1 -1 scale ( 4 5 6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+384 214 m
+gs 1 -1 scale ( 7 8 9 10) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 234 m
+gs 1 -1 scale (11 12 13) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 254 m
+gs 1 -1 scale (14 15 16) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+444 274 m
+gs 1 -1 scale (17 18 19) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 174 m
+gs 1 -1 scale (1) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 194 m
+gs 1 -1 scale (2) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 214 m
+gs 1 -1 scale (3) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 234 m
+gs 1 -1 scale (4) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 254 m
+gs 1 -1 scale (5) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 274 m
+gs 1 -1 scale (6) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+344 154 m
+gs 1 -1 scale ( 1 2 3 4 5 6 7 8) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+324 294 m
+gs 1 -1 scale (7) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+494 154 m
+gs 1 -1 scale ( 9) col-1 show gr
+/Times-Roman findfont 12.00 scalefont setfont
+259 344 m
+gs 1 -1 scale (IA also indexes into KA) col-1 show gr
+$F2psEnd
diff --git a/DOC/vbrpic.fig b/DOC/vbrpic.fig
new file mode 100644
index 0000000..95b49d3
--- /dev/null
+++ b/DOC/vbrpic.fig
@@ -0,0 +1,207 @@
+#FIG 2.1
+80 2
+6 69 424 499 459
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 99 439 479 439 479 459 99 459 99 439 99 439 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 119 439 119 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 139 439 139 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 159 439 159 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 179 439 179 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 199 439 199 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 219 439 219 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 239 439 239 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 259 439 259 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 279 439 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 279 439 279 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 299 439 299 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 319 439 319 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 339 439 339 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 359 439 359 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 379 439 379 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 399 439 399 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 419 439 419 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 459 439 459 459 9999 9999
+4 0 0 12 0 -1 0 0.00000 4 9 393 104 434 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+4 0 0 14 0 -1 0 0.00000 4 10 11 69 454 A
+-6
+6 339 64 499 99
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 399 79 499 79 499 99 399 99 399 79 399 79 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 419 79 419 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 439 79 439 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 459 79 459 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 479 79 479 99 9999 9999
+4 0 0 12 0 -1 0 0.00000 4 9 90 404 74 1 2 3 4 5
+4 0 0 14 0 -1 0 0.00000 4 10 46 339 94 KVSTC
+-6
+6 139 64 279 99
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 199 79 279 79 279 99 199 99 199 79 199 79 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 219 79 219 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 239 79 239 99 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 259 79 259 99 9999 9999
+4 0 0 12 0 -1 0 0.00000 4 9 63 209 94 1 3 4 7
+4 0 0 12 0 -1 0 0.00000 4 9 69 204 74 1 2 3 4
+4 0 0 14 0 -1 0 0.00000 4 10 45 139 94 KVSTR
+-6
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 99 219 179 219 179 239 99 239 99 219 99 219 9999 9999
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 99 279 219 279 219 299 99 299 99 279 99 279 9999 9999
+2 3 0 1 -1 0 0 0 0.000 -1 0 0
+ 99 339 239 339 239 359 99 359 99 339 99 339 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 119 219 119 239 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 139 219 139 239 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 159 219 159 239 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 119 279 119 299 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 139 279 139 299 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 159 279 159 299 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 179 279 179 299 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 199 279 199 299 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 119 339 119 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 139 339 139 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 159 339 159 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 179 339 179 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 199 339 199 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 219 339 219 359 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 109 239 109 259 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 124 239 144 259 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 149 239 184 259 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 169 239 224 259 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 439 439 439 459 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 109 359 109 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 129 359 184 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 144 359 224 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 169 359 279 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 189 359 299 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 209 359 364 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 229 359 484 419 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 379 159 379 279 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 439 159 439 279 9999 9999
+2 2 0 1 -1 0 0 0 0.000 0 0 0
+ 499 279 499 159 339 159 339 279 499 279 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 459 159 459 279 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 339 199 499 199 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 0 0
+ 339 219 499 219 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 409 99 354 139 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 429 99 389 139 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 449 99 449 139 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 469 99 469 139 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 489 99 504 139 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 269 99 319 284 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 249 99 319 224 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 224 99 319 204 9999 9999
+2 1 0 1 -1 0 0 0 0.000 -1 1 0
+ 0 0 1.000 4.000 8.000
+ 209 99 319 169 9999 9999
+4 0 0 12 0 -1 0 0.00000 4 9 108 104 294 1 3 2 3 3 4
+4 0 0 12 0 -1 0 0.00000 4 9 132 104 354 1 5 7 10 11 14 20
+4 0 0 12 0 -1 0 0.00000 4 9 129 104 334 1 2 3 4 5 6 7
+4 0 0 14 0 -1 0 0.00000 4 10 16 69 234 IA
+4 0 0 14 0 -1 0 0.00000 4 10 17 69 294 JA
+4 0 0 14 0 -1 0 0.00000 4 10 21 64 354 KA
+4 0 0 12 0 -1 0 0.00000 4 9 69 104 234 1 3 5 7
+4 0 0 12 0 -1 0 0.00000 4 9 69 104 214 1 2 3 4
+4 0 0 12 0 -1 0 0.00000 4 9 108 104 274 1 2 3 4 5 6
+4 0 0 12 0 -1 0 0.00000 4 9 9 224 274 7
+4 0 0 12 0 -1 0 0.00000 4 9 372 104 454 1 4 2 5 3 6 7 8 9 10 11 14 17 12 15 18 13 16 19
+4 0 0 12 0 -1 0 0.00000 4 9 96 404 94 1 3 6 7 9 
+4 0 0 12 0 -1 0 0.00000 4 9 108 344 174 1 2 3
+4 0 0 12 0 -1 0 0.00000 4 9 108 344 194 4 5 6
+4 0 0 12 0 -1 0 0.00000 4 9 72 384 214 7 8 9 10
+4 0 0 12 0 -1 0 0.00000 4 9 51 444 234 11 12 13
+4 0 0 12 0 -1 0 0.00000 4 9 51 444 254 14 15 16
+4 0 0 12 0 -1 0 0.00000 4 9 51 444 274 17 18 19
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 174 1
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 194 2
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 214 3
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 234 4
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 254 5
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 274 6
+4 0 0 12 0 -1 0 0.00000 4 9 147 344 154 1 2 3 4 5 6 7 8
+4 0 0 12 0 -1 0 0.00000 4 9 6 324 294 7
+4 0 0 12 0 -1 0 0.00000 4 9 18 494 154 9
+4 0 0 12 0 -1 0 0.00000 4 9 121 259 344 IA also indexes into KA
diff --git a/DOC/vbrpic.pdf b/DOC/vbrpic.pdf
new file mode 100644
index 0000000..02ab7ae
--- /dev/null
+++ b/DOC/vbrpic.pdf
Binary files differ
diff --git a/FORMATS/README b/FORMATS/README
new file mode 100644
index 0000000..dbe5d9e
--- /dev/null
+++ b/FORMATS/README
@@ -0,0 +1,143 @@
+c----------------------------------------------------------------------c
+c c
+c SPARSKIT Modules FORMATS and UNARY c
+c c
+c----------------------------------------------------------------------c
+c c
+c This directory contains both the module FORMATS and UNARY c
+c of SPARSKIT. c
+c c
+c----------------------------------------------------------------------c
+c CONTENTS: c
+c======================================================================c
+c c
+c formats.f : mostly format conversion routines. c
+c c
+c unary.f : elementary manipulation routines. c
+c c
+c chkfmt1 : a long test-suite for the conversion routines. c
+c c
+c chkun.f : a test-suite for *some* of the routines in unary.f c
+c c
+c rvbr.f : Test program for Variable Block Matrix support c
+c c
+c c
+c makefile : makefile for the sample programs chkfmt1.f, chkun.f c
+c and rvbr.f produces the executables fmt.ex for format c
+c (usage: make fmt.ex), un.ex for unary.f (usage: c
+c make un.ex) and vbr.ex for VBR functions (usage: c
+c make vbr.ex). c
+c c
+c----------------------------------------------------------------------c
+c c
+c Here are the contents of formats.f and unary.f c
+c c
+c----------------------------------------------------------------------c
+c======================================================================c
+c formats.f: c
+c======================================================================c
+c c
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c FORMAT CONVERSION MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c csrdns : converts a row-stored sparse matrix into the dense format. c
+c dnscsr : converts a dense matrix to a sparse storage format. c
+c coocsr : converts coordinate to to csr format c
+c coicsr : in-place conversion of coordinate to csr format c
+c csrcoo : converts compressed sparse row to coordinate. c
+c csrssr : converts compressed sparse row to symmetric sparse row c
+c ssrcsr : converts symmetric sparse row to compressed sparse row c
+c csrell : converts compressed sparse row to ellpack format c
+c ellcsr : converts ellpack format to compressed sparse row format c
+c csrmsr : converts compressed sparse row format to modified sparse c
+c row format c
+c msrcsr : converts modified sparse row format to compressed sparse c
+c row format. c
+c csrcsc : converts compressed sparse row format to compressed sparse c
+c column format (transposition) c
+c csrlnk : converts compressed sparse row to linked list format c
+c lnkcsr : converts linked list format to compressed sparse row fmt c
+c csrdia : converts a compressed sparse row format into a diagonal c
+c format. c
+c diacsr : converts a diagonal format into a compressed sparse row c
+c format. c
+c bsrcsr : converts a block-row sparse format into a compressed c
+c sparse row format. c
+c csrbsr : converts a compressed sparse row format into a block-row c
+c sparse format. c
+c csrbnd : converts a compressed sparse row format into a banded c
+c format (linpack style). c
+c bndcsr : converts a banded format (linpack style) into a compressed c
+c sparse row storage. c
+c csrssk : converts the compressed sparse row format to the symmetric c
+c skyline format c
+c sskssr : converts symmetric skyline format to symmetric sparse row c
+c format. c
+c csrjad : converts the csr format into the jagged diagonal format c
+c jadcsr : converts the jagged-diagonal format into the csr format c
+c csruss : Compressed Sparse Row to Unsymmetric Sparse Skyline format c
+c usscsr : Unsymmetric Sparse Skyline format to Compressed Sparse Row c
+c csrsss : Compressed Sparse Row to Symmetric Sparse Skyline format c
+c ssscsr : Symmetric Sparse Skyline format to Compressed Sparse Row c
+c csrvbr : Converts compressed sparse row to var block row format c
+c vbrcsr : Converts var block row to compressed sparse row format c
+c--------- miscalleneous additions not involving the csr format--------c
+c cooell : converts coordinate to Ellpack/Itpack format c
+c dcsort : sorting routine used by crsjad c
+c csorted : Checks if matrix in CSR format is sorted by columns c
+c----------------------------------------------------------------------c
+c======================================================================c
+c unary.f: c
+c======================================================================c
+c c
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c UNARY SUBROUTINES MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c submat : extracts a submatrix from a sparse matrix. c
+c filter : filters elements from a matrix according to their magnitude.c
+c filterm: same as above, but for the MSR format c
+c csort : sorts the elements in increasing order of columns c
+c transp : in-place transposition routine (see also csrcsc in formats) c
+c copmat : copy of a matrix into another matrix (both stored csr) c
+c getelm : returns a(i,j) for any (i,j) from a CSR-stored matrix. c
+c getdia : extracts a specified diagonal from a matrix. c
+c getl : extracts lower triangular part c
+c getu : extracts upper triangular part c
+c levels : gets the level scheduling structure for lower triangular c
+c matrices. c
+c amask : extracts C = A mask M c
+c rperm : permutes the rows of a matrix (B = P A) c
+c cperm : permutes the columns of a matrix (B = A Q) c
+c dperm : permutes both the rows and columns of a matrix (B = P A Q ) c
+c dmperm : symmetric permutation of row and column (B = P A P') c
+c dvperm : permutes a real vector (in-place) c
+c ivperm : permutes an integer vector (in-place) c
+c retmx : returns the max absolute value in each row of the matrix c
+c diapos : returns the positions of the diagonal elements in A. c
+c extbdg : extracts the main diagonal blocks of a matrix. c
+c getbwd : returns the bandwidth information on a matrix. c
+c blkfnd : finds the block-size of a matrix. c
+c blkchk : checks whether a given integer is the block size of A. c
+c infdia : obtains information on the diagonals of A. c
+c amubdg : gets number of nonzeros in each row of A*B (as well as NNZ) c
+c aplbdg : gets number of nonzeros in each row of A+B (as well as NNZ) c
+c rnrms : computes the norms of the rows of A c
+c cnrms : computes the norms of the columns of A c
+c rscal : scales the rows of a matrix by their norms. c
+c cscal : scales the columns of a matrix by their norms. c
+c addblk : Adds a matrix B into a block of A. c
+c get1up : Collects the first elements of each row of the upper c
+c triangular portion of the matrix. c
+c xtrows : extracts given rows from a matrix in CSR format. c
+c csrkvstr: Finds block row partitioning of matrix in CSR format c
+c csrkvstc: Finds block column partitioning of matrix in CSR format c
+c kvstmerge: Merges block partitionings, for conformal row/col pattern c
+c----------------------------------------------------------------------c
diff --git a/FORMATS/chkfmt1.f b/FORMATS/chkfmt1.f
new file mode 100644
index 0000000..846a220
--- /dev/null
+++ b/FORMATS/chkfmt1.f
@@ -0,0 +1,424 @@
+ program chkfmt
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c test suite for the Formats routines. c
+c tests all of the routines in the module formats. c
+c----------------------------------------------------------------------c
+c Note: the comments may not have been updated.
+c
+c Here is the sequence of what is done by this program.
+c 1) call gen57bl togenerate a block matrix associated with a simple
+c 5-point matrix on a 4 x 2 grid (2-D) with 2 degrees of freedom
+c per grid point. Thus N = 16. This is produced in BSR format.
+c the pattern of the reduced matrix is written in csr.mat.
+c
+c 2) the block format is translated into a compressed sparse row
+c format by bsrcsr. The result is dumped in file csr.mat
+c matrix is converted back to bsr format. block pattern shown again
+c
+c 3) the matrix is translated in dense format by csrdns.
+c result a 16 x 16 matrix is written in unit dns.mat.
+c This is a good file to look at to see what the matrix is
+c and to compare results of other formats with.
+c 4) the dense matrix obtained in 3) is reconverted back to
+c csr format using dnscsr. Result appended to file csr.mat
+c 5) The matrix obtained in 4) is converted in coordinate format
+c and the resulting matrix is written in file coo.mat
+c 6) the result is converted back to csr format. matrix
+c appended to csr.mat.
+c 7) result of 6) is converted to symmetric sparse row storage
+c (ssr) and the result is appended to csr.mat
+c 8) result of 7) converted back to csr format and result is
+c appended to csr.mat
+c 9) matrix resulting from 8) is converted to modified sparse
+c row format using csrmsr and result is written in msr.mat.
+c10) the resulting matrix is converted back to csrformat and
+c result is appended to csr.mat
+c11) result is converted to ellpack-itpack format with
+c csrell and result is printed in itp.mat
+c12) result is converted back to csr format and appended to csr.mat
+c12) result converted to csc format (transposition) using csrcsc
+c which should produce the same matrix here. result appended
+c to csr.mat. A second call to csrcsc is made on resulting
+c matrix.
+c13) the subroutine csrdia is used to extract two diagonals
+c (offsets -1 and 0) and then all the diagonals of matrix.
+c results in dia.mat
+c14) diacsr is then called to convert the diagonally stored matrix
+c back to csr format. result appended to csr.mat
+c15) result is converted to band format (bnd) by calling
+c csrbnd. result dumped to bnd.mat
+c16) result is converted back to csr format and appended to csr.mat
+c17) result sorted by a call to csrcsc and then converted to
+c block format (csrbsr) and then back to csr format again.
+c result appedned to csr.mat.
+c18) matrix converted to symmetric skyline format. result appended
+c to file band.mat
+c19) matrix converted back to csr format and result appended to
+c csr.mat.
+c20) result converted to jad format. result output in jad.mat
+c21) result concverted back to csr fromat. appended to csr.mat
+c------------------------------------------------------------------
+ implicit none
+ integer ndns, nxmax, nmx, nnzmax
+ parameter (nxmax = 10, nmx = nxmax*nxmax, nnzmax=10*nmx)
+ integer ia(nmx+1),ja(nnzmax),ia1(nnzmax),ja1(nnzmax),
+ * iwk(nmx*2+1),ioff(20),iwk2(nmx+1)
+ real*8 stencil(7,100),a(nnzmax),a1(nnzmax),dns(20,20),wk(nmx)
+c
+ integer k,nx,ny,nz,nfree,na,nr,n,iout,nnz,i,ierr,
+ * maxcol, ndiag,job,lowd,len,imod,j,kend,k1,k2,
+ * kstart,mu,ml,idiag,idiag0,kdiag
+c-----------------------------------------------------------------------
+ data ndns/20/
+c----- open statements ----------------
+ open (unit=7,file='csr.mat')
+ open (unit=8,file='dns.mat')
+ open (unit=9,file='coo.mat')
+ open (unit=10,file='msr.mat')
+ open (unit=11,file='itp.mat')
+ open (unit=12,file='dia.mat')
+ open (unit=13,file='bnd.mat')
+ open (unit=14,file='jad.mat')
+c
+c---- dimension of grid
+c
+ nx = 4
+ ny = 2
+ nz = 1
+ nfree = 2
+c
+c---- generate grid problem.
+c
+c na = nx*ny*nz*5
+ na = nfree*nfree
+ call gen57bl (nx,ny,nz,nfree,na,nr,a1,ja1,ia1,iwk,stencil)
+c nr = n / nfree
+ n = nr*nfree
+c
+c---- dump the reduced matrix
+c
+ iout = 7
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ Pattern of block matrix (CSR) +++ '
+ write (iout,*) '-----------------------------------------'
+c
+ call dump(1,nr,.false.,a1,ja1,ia1,7)
+c
+c---- convert to CSR format and dump result
+c
+ call bsrcsr (1,nr,nfree,na,a1,ja1,ia1,a,ja,ia)
+ iout = 7
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ initial matrix in CSR format +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+c---- convert back to BSR format and dump pattern again.
+c
+ call csrbsr (1,n,nfree,na,a,ja,ia,a1,ja1,ia1,iwk2,ierr)
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ Pattern of block matrix (CSR) +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,nr,.false.,a1,ja1,ia1,7)
+c
+c----- convert to BSR format.
+c
+ call bsrcsr (1,nr,nfree,na,a1,ja1,ia1,a,ja,ia)
+ iout = 7
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix after BSRCSR conversion +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+c----- convert to dense format.
+c
+ call csrdns(n,n,a,ja,ia,dns,ndns,ierr)
+c
+ iout = iout+1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ initial matrix in DENSE format+++ '
+ write (iout,*) '-----------------------------------------'
+ write (iout,'(4x,16i4)') (j,j=1,n)
+ write (iout,'(3x,65(1h-))')
+ do 3 i=1,n
+ write (8,102) i,(dns(i,j), j=1,n)
+ 102 format(1h ,i2,1h|,16f4.1)
+ 3 continue
+c
+c----- convert back to sparse format.
+c
+ call dnscsr(n,n,nnzmax,dns,ndns,a1,ja1,ia1,ierr)
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from dnscsr +++ '
+ write (7,*) '-----------------------------------------'
+ if (ierr .ne. 0) write (7,*) ' ***** ERROR FROM DNSCSR'
+ if (ierr .ne. 0) write (7,*) ' IERR = ', ierr
+ call dump(1,n,.true.,a1,ja1,ia1,7)
+c
+c convert it to coordinate format.
+c
+ call csrcoo(n,3,nnzmax,a,ja,ia,nnz,a1,ia1,ja1,ierr)
+ iout = iout+ 1
+ if (ierr .ne. 0) write (iout,*) ' ***** ERROR IN CSRCOO'
+ if (ierr .ne. 0) write (iout,*) ' IERR = ', ierr
+ write (iout,*) '-----------------------------------------'
+ write(iout,*) ' +++ Matrix in coordinate format +++ '
+ write (iout,*) '-----------------------------------------'
+ write(iout,103) (ia1(j),ja1(j),a1(j),j=1,nnz)
+ 103 format (' i =', i3,' j = ',i3,' a(i,j) = ',f4.1)
+c
+c convert it back again to csr format
+c
+ call coocsr(n,nnz,a1,ia1,ja1,a,ja,ia)
+
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from coocsr +++ '
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+c going to srs format
+c
+ call csrssr(n,a,ja,ia,nnzmax,a1,ja1,ia1,ierr)
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion to ssr format +++ '
+ write (7,*) ' (lower part only stored in csr format) '
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a1,ja1,ia1,7)
+c back to csr
+ call ssrcsr (3,1,n,a1,ja1,ia1,nnzmax,a,ja,ia,iwk,iwk2,ierr)
+ if (ierr .ne. 0) write(7,*) ' error in ssrcsr-IERR=',ierr
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from ssrcsr +++ '
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c---- msr format
+ iout = iout+1
+ call csrmsr (n,a,ja,ia,a1,ja1,a1,ja1)
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix in modified sparse row format +++'
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' ** MAIN DIAGONAL '
+ write (iout,'(16f4.1)') (a1(k),k=1,n)
+ write (iout,*) ' ** POINTERS: '
+ write (iout,'(17i4)') (ja1(k),k=1,n+1)
+ write (iout,*) ' ** REMAINDER :'
+ call dump(1,n,.true.,a1,ja1,ja1,iout)
+c-------
+ call msrcsr (n,a1,ja1,a,ja,ia,wk,iwk2)
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from msrcsr +++'
+ write (7,*) '-----------------------------------------'
+c
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+ maxcol = 13
+c
+ call csrell (n,a,ja,ia,maxcol,a1,ja1,n,ndiag,ierr)
+ iout = iout+1
+ if (ierr .ne. 0) write (iout,*) ' ***** ERROR IN CSRELL'
+ if (ierr .ne. 0) write (iout,*) ' IERR = ', ierr
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix in ELLPACK-ITPACK format +++ '
+ write (iout,*) '-----------------------------------------'
+ do 12 i=1,ndiag
+ write (iout,*) ' Column number: ', i
+ write (iout,104) (a1(n*(i-1)+k),k=1,n)
+ 104 format(9h COEF = ,16f4.0)
+ write (iout,105) (ja1(n*(i-1)+k),k=1,n)
+ 105 format (9h JCOEF = ,16i4)
+ 12 continue
+ call ellcsr (n,a1,ja1,n,ndiag,a,ja,ia,nnzmax,ierr)
+ if (ierr .ne. 0) write (7,*) ' ***** ERROR IN ELLCSR'
+ if (ierr .ne. 0) write (7,*) ' IERR = ', ierr
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from ellcsr +++'
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+ call csrcsc(n,1,1,a,ja,ia, a1,ja1,ia1)
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from csrcsc +++ '
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a1,ja1,ia1,7)
+ call csrcsc(n,1,1,a1,ja1,ia1, a,ja,ia)
+c
+c--------test 1 : get main diagonal and subdiagonal
+c get some info on diagonals
+ call infdia(n,ja,ia,iwk,idiag0)
+ job = 0
+ ioff(1) = 0
+ ioff(2) = -1
+ idiag = 2
+ call csrdia (n,idiag,job,a,ja,ia,ndns,dns,ioff,a1,ja1,ia1,iwk)
+ iout = iout+1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ diagonal format +++ '
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' diagonals ioff = 0 and ioff = -1 '
+ write (iout,*) ' number of diag.s returned from csrdia=',idiag
+ do 13 kdiag = 1, idiag
+ write (iout,*) ' diagonal offset = ', ioff(kdiag)
+ write (iout,'(16f4.1)') (dns(k,kdiag),k=1,n)
+ 13 continue
+c reverse conversion
+ ndiag = ndns
+ idiag = idiag0
+ job = 10
+ call csrdia (n,idiag,job,a,ja,ia,ndns,dns,ioff,a1,ja1,ia1,iwk)
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ second test diagonal format +++ '
+ write (iout,*) ' ** all diagonals of A ** '
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' number of diagonals on return from csrdia=',
+ * idiag
+ do 131 kdiag = 1, idiag
+ write (iout,*) ' diagonal offset = ', ioff(kdiag)
+ write (iout,'(16f4.1)') (dns(k,kdiag),k=1,n)
+ 131 continue
+c
+c reverse conversion
+c
+ job = 0
+ call diacsr (n,job,idiag,dns,ndns,ioff,a,ja,ia)
+c--------
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from diacsr +++ '
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+c checking the banded format
+c
+ lowd = 0
+ job = 1
+ call csrbnd(n,a,ja,ia,job,dns,ndns,lowd,ml,mu,ierr)
+ iout = iout+1
+ if (ierr .ne. 0) write (iout,*) ' ***** ERROR IN CSRBND'
+ if (ierr .ne. 0) write (iout,*) ' IERR = ', ierr
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ banded format +++ '
+ write (iout,*) ' bandwidth values found ml=',ml,' mu=',mu
+ write (iout,*) '-----------------------------------------'
+ write (iout,'(4x,16i4)') (j,j=1,n)
+ write (iout,'(3x,65(1h-))')
+ do 14 i=1, lowd
+ write (iout,102) i, (dns(i,j), j=1,n)
+ 14 continue
+c
+c convert back to a, ja, ia format.
+c
+ len = nnzmax
+c--------
+ call bndcsr(n,dns,ndns,lowd,ml,mu,a,ja,ia,len,ierr)
+ write (7,*) ' IERR IN BNDCSR = ', ierr
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from bndcsr +++'
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c
+c make sure it is sorted
+c
+ call csrcsc(n,1,1,a,ja,ia, a1,ja1,ia1)
+c
+c checking skyline format.
+c
+ imod = 1
+ call csrssk (n,imod,a1,ja1,ia1,a,ia,nnzmax,ierr)
+c
+ if (ierr .ne. 0) write (iout,*) ' IERR = ', ierr
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ Sym. Skyline format +++ '
+ write (iout,*) '-----------------------------------------'
+ write (iout,'(3x,65(1h-))')
+c---------------------
+c create column values.
+c---------------------
+ do 15 i=1, n
+ kend = ia(i+1)-1
+ kstart = ia(i)
+ do k=kstart,kend
+ ja(k) = i-(kend-k)
+ enddo
+ 15 continue
+c
+ call dump(1,n,.true.,a,ja,ia,iout)
+c
+c back to ssr format..
+c
+ call sskssr (n,imod,a,ia,a1,ja1,ia1,nnzmax,ierr)
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from sskcsr +++'
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a1,ja1,ia1,7)
+c
+c checking jad format -----
+c
+c first go back to the csr format ----
+c
+ call ssrcsr (3,1,n,a1,ja1,ia1,nnzmax,a,ja,ia,iwk,iwk2,ierr)
+c
+ call csrjad (n, a, ja, ia, ndiag, iwk, a1, ja1, ia1)
+c
+ iout = iout+1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix in JAD format +++ '
+ write (iout,*) '-----------------------------------------'
+c
+c permutation array
+c
+ write (iout,*) ' ** PERMUTATION ARRAY '
+ write (iout,'(17i4)') (iwk(k),k=1,n)
+c ------ diagonals
+ do 16 i=1,ndiag
+ write (iout,*) ' J-diagonal number: ', i
+ k1 = ia1(i)
+ k2 = ia1(i+1)-1
+ write (iout,104) (a1(k),k=k1,k2)
+ write (iout,105) (ja1(k),k=k1,k2)
+ 16 continue
+c
+c back to csr format..
+c
+ call jadcsr (n, ndiag, a1, ja1, ia1, iwk, a, ja, ia)
+c
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from jadcsr +++'
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c-----------------------------------------------------------------------
+c checking the linked list format
+c-----------------------------------------------------------------------
+c
+ nnz = ia(n+1) - ia(1)
+ call csrlnk (n, a, ja, ia, iwk)
+c
+c print links in file 7 (no need for another file)
+c
+ iout = 7
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix in LNK format +++ '
+ write (iout,*) '-----------------------------------------'
+c
+c permutation array
+c
+ write (iout,*) ' LINK ARRAY '
+ write (iout,*) ' ---------- '
+ write (iout,'(17i4)') (iwk(k),k=1,nnz)
+c
+c back to csr format..
+c
+ call lnkcsr (n, a, ja, ia, iwk, a1, ja1, ia1)
+c
+ write (7,*) '-----------------------------------------'
+ write (7,*) ' +++ matrix after conversion from lnkcsr +++'
+ write (7,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,7)
+c------------------------------------------------------------
+ stop
+c-----------------------------------------------------------------------
+c-----------end-of-chkfmt1----------------------------------------------
+ end
diff --git a/FORMATS/chkun.f b/FORMATS/chkun.f
new file mode 100644
index 0000000..1778637
--- /dev/null
+++ b/FORMATS/chkun.f
@@ -0,0 +1,168 @@
+ program chkfmt
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c test suite for the unary routines. c
+c tests some of the routines in the module unary. Still needs to tests c
+c many other routines. c
+c Last update: May 2, 1994.
+c----------------------------------------------------------------------c
+ parameter (nxmax = 10, nmx = nxmax*nxmax, nnzmax=10*nmx)
+ implicit real*8 (a-h,o-z)
+ integer ia(nmx+1),ja(nnzmax),ia1(nnzmax),ja1(nnzmax),
+ * iwk(nmx*2+1), perm(16), qperm(16) ,
+ * iwork(nnzmax*2)
+ real*8 a(nnzmax),a1(nnzmax),dns(20,20),rhs(nnzmax),al(6)
+ data ndns/20/
+ data qperm /1, 3, 6, 8, 9, 11, 14, 16, 2, 4, 5, 7, 10, 12, 13, 15/
+c
+c define correct permutation
+c
+ do 1 i=1, 16
+ perm(qperm(i)) = i
+ 1 continue
+c----- open statements ----------------
+ open (unit=7,file='unary.mat')
+c
+c---- dimension of grid
+c
+c generate a 16 by 16 matrix (after eliminating boundary)
+ nx = 6
+ ny = 6
+ nz = 1
+ al(1) = 0.D0
+ al(2) = 0.D0
+ al(3) = 0.D0
+ al(4) = 0.D0
+ al(5) = 0.D0
+ al(6) = 0.D0
+c
+c---- generate grid problem.
+c
+ call gen57pt (nx,ny,nz,al,0,n,a,ja,ia,iwk,rhs)
+c
+c---- write out the matrix
+c
+ iout = 7
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ initial matrix in CSR format +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,n,.true.,a,ja,ia,iout)
+c
+c call csrdns
+c
+ call csrdns(n,n,a,ja,ia,dns,ndns,ierr)
+c
+c write it out as a dense matrix.
+c
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ initial matrix in DENSE format+++ '
+ write (iout,*) '-----------------------------------------'
+ call dmpdns(n, n, ndns, dns, iout)
+c
+c red black ordering
+c
+ job = 1
+c
+ call dperm (n,a,ja,ia,a1,ja1,ia1,perm,perm,job)
+c
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ red-black matrix in CSR format +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,n,.true.,a1,ja1,ia1,iout)
+c
+c sort matrix
+c
+ call csort (n,a1,ja1,ia1,iwork,.true.)
+ nnz = ia(n+1)-1
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ matrix after sorting +++ '
+ write (iout,*) '-----------------------------------------'
+ call dump(1,n,.true.,a1,ja1,ia1,iout)
+c
+c
+c convert into dense format
+c
+ call csrdns(n, n, a1,ja1,ia1,dns,ndns,ierr)
+ write (iout,*) '-----------------------------------------'
+ write (iout,*) ' +++ red-black matrix in DENSE format+++ '
+ write (iout,*) '-----------------------------------------'
+ call dmpdns(n,n, ndns, dns, iout)
+ stop
+ end
+c-----------------------------------------------------------------------
+ subroutine dmpdns(nrow, ncol, ndns, dns, iout)
+ integer nrow, ncol, ndns, iout
+ real*8 dns(ndns,*)
+c-----------------------------------------------------------------------
+c this subroutine prints out a dense matrix in a simple format.
+c the zero elements of the matrix are omitted. The format for the
+c nonzero elements is f4.1, i.e., very little precision is provided.
+c-----------------------------------------------------------------------
+c on entry
+c --------
+c nrow = row dimension of matrix
+c ncol = column dimension of matrix
+c ndns = first dimension of array dns.
+c dns = double dimensional array of size n x n containing the matrix
+c iout = logical unit where to write matrix
+c
+c on return
+c ---------
+c matrix will be printed out on unit output iout.
+c------------------------------------------------------------------------
+c local variables
+ integer j, j1, j2, last, i
+ character*80 fmt
+c
+c prints out a dense matrix -- without the zeros.
+c
+ write (iout,'(4x,16i4)') (j,j=1,ncol)
+ fmt(1:5) = ' |'
+ j1 = 6
+ do 1 j=1, ncol
+ j2 = j1+4
+ fmt(j1:j2) = '----'
+ j1 = j2
+ 1 continue
+ last = j1
+ fmt(last:last) = '|'
+ write (iout,*) fmt
+c
+c undo loop 1 ---
+c
+ j1 = 6
+ do 2 j=1,ncol
+ j2 = j1+4
+ fmt(j1:j2) = ' '
+ j1 = j2
+ 2 continue
+c
+ do 4 i=1, nrow
+ j1 = 6
+ write (fmt,101) i
+ 101 format(1h ,i2,2h |)
+ do 3 j=1, ncol
+ j2= j1+4
+ if (dns(i,j) .ne. 0.0) then
+ write (fmt(j1:j2),102) dns(i,j)
+ 102 format(f4.1)
+ endif
+ j1 = j2
+ 3 continue
+ fmt(last:last) = '|'
+ write (iout,*) fmt
+ 4 continue
+ fmt(1:5) = ' |'
+ j1 = 6
+ do 5 j=1, ncol
+ j2 = j1+4
+ fmt(j1:j2) = '----'
+ j1 = j2
+ 5 continue
+ fmt(last:last) = '|'
+ write (iout,*) fmt
+ return
+ end
diff --git a/FORMATS/formats.f b/FORMATS/formats.f
new file mode 100644
index 0000000..fde8f92
--- /dev/null
+++ b/FORMATS/formats.f
@@ -0,0 +1,3716 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c FORMAT CONVERSION MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c csrdns : converts a row-stored sparse matrix into the dense format. c
+c dnscsr : converts a dense matrix to a sparse storage format. c
+c coocsr : converts coordinate to to csr format c
+c coicsr : in-place conversion of coordinate to csr format c
+c csrcoo : converts compressed sparse row to coordinate. c
+c csrssr : converts compressed sparse row to symmetric sparse row c
+c ssrcsr : converts symmetric sparse row to compressed sparse row c
+c csrell : converts compressed sparse row to ellpack format c
+c ellcsr : converts ellpack format to compressed sparse row format c
+c csrmsr : converts compressed sparse row format to modified sparse c
+c row format c
+c msrcsr : converts modified sparse row format to compressed sparse c
+c row format. c
+c csrcsc : converts compressed sparse row format to compressed sparse c
+c column format (transposition) c
+c csrcsc2 : rectangular version of csrcsc c
+c csrlnk : converts compressed sparse row to linked list format c
+c lnkcsr : converts linked list format to compressed sparse row fmt c
+c csrdia : converts a compressed sparse row format into a diagonal c
+c format. c
+c diacsr : converts a diagonal format into a compressed sparse row c
+c format. c
+c bsrcsr : converts a block-row sparse format into a compressed c
+c sparse row format. c
+c csrbsr : converts a compressed sparse row format into a block-row c
+c sparse format. c
+c csrbnd : converts a compressed sparse row format into a banded c
+c format (linpack style). c
+c bndcsr : converts a banded format (linpack style) into a compressed c
+c sparse row storage. c
+c csrssk : converts the compressed sparse row format to the symmetric c
+c skyline format c
+c sskssr : converts symmetric skyline format to symmetric sparse row c
+c format. c
+c csrjad : converts the csr format into the jagged diagonal format c
+c jadcsr : converts the jagged-diagonal format into the csr format c
+c csruss : Compressed Sparse Row to Unsymmetric Sparse Skyline c
+c format c
+c usscsr : Unsymmetric Sparse Skyline format to Compressed Sparse Row c
+c csrsss : Compressed Sparse Row to Symmetric Sparse Skyline format c
+c ssscsr : Symmetric Sparse Skyline format to Compressed Sparse Row c
+c csrvbr : Converts compressed sparse row to var block row format c
+c vbrcsr : Converts var block row to compressed sparse row format c
+c csorted : Checks if matrix in CSR format is sorted by columns c
+c--------- miscalleneous additions not involving the csr format--------c
+c cooell : converts coordinate to Ellpack/Itpack format c
+c dcsort : sorting routine used by crsjad c
+c----------------------------------------------------------------------c
+ subroutine csrdns(nrow,ncol,a,ja,ia,dns,ndns,ierr)
+ real*8 dns(ndns,*),a(*)
+ integer ja(*),ia(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Dense
+c-----------------------------------------------------------------------
+c
+c converts a row-stored sparse matrix into a densely stored one
+c
+c On entry:
+c----------
+c
+c nrow = row-dimension of a
+c ncol = column dimension of a
+c a,
+c ja,
+c ia = input matrix in compressed sparse row format.
+c (a=value array, ja=column array, ia=pointer array)
+c dns = array where to store dense matrix
+c ndns = first dimension of array dns
+c
+c on return:
+c-----------
+c dns = the sparse matrix a, ja, ia has been stored in dns(ndns,*)
+c
+c ierr = integer error indicator.
+c ierr .eq. 0 means normal return
+c ierr .eq. i means that the code has stopped when processing
+c row number i, because it found a column number .gt. ncol.
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ do 1 i=1, nrow
+ do 2 j=1,ncol
+ dns(i,j) = 0.0d0
+ 2 continue
+ 1 continue
+c
+ do 4 i=1,nrow
+ do 3 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ if (j .gt. ncol) then
+ ierr = i
+ return
+ endif
+ dns(i,j) = a(k)
+ 3 continue
+ 4 continue
+ return
+c---- end of csrdns ----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dnscsr(nrow,ncol,nzmax,dns,ndns,a,ja,ia,ierr)
+ real*8 dns(ndns,*),a(*)
+ integer ia(*),ja(*)
+c-----------------------------------------------------------------------
+c Dense to Compressed Row Sparse
+c-----------------------------------------------------------------------
+c
+c converts a densely stored matrix into a row orientied
+c compactly sparse matrix. ( reverse of csrdns )
+c Note: this routine does not check whether an element
+c is small. It considers that a(i,j) is zero if it is exactly
+c equal to zero: see test below.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c
+c nrow = row-dimension of a
+c ncol = column dimension of a
+c nzmax = maximum number of nonzero elements allowed. This
+c should be set to be the lengths of the arrays a and ja.
+c dns = input nrow x ncol (dense) matrix.
+c ndns = first dimension of dns.
+c
+c on return:
+c----------
+c
+c a, ja, ia = value, column, pointer arrays for output matrix
+c
+c ierr = integer error indicator:
+c ierr .eq. 0 means normal retur
+c ierr .eq. i means that the the code stopped while
+c processing row number i, because there was no space left in
+c a, and ja (as defined by parameter nzmax).
+c-----------------------------------------------------------------------
+ ierr = 0
+ next = 1
+ ia(1) = 1
+ do 4 i=1,nrow
+ do 3 j=1, ncol
+ if (dns(i,j) .eq. 0.0d0) goto 3
+ if (next .gt. nzmax) then
+ ierr = i
+ return
+ endif
+ ja(next) = j
+ a(next) = dns(i,j)
+ next = next+1
+ 3 continue
+ ia(i+1) = next
+ 4 continue
+ return
+c---- end of dnscsr ----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine coocsr(nrow,nnz,a,ir,jc,ao,jao,iao)
+c-----------------------------------------------------------------------
+ real*8 a(*),ao(*),x
+ integer ir(*),jc(*),jao(*),iao(*)
+c-----------------------------------------------------------------------
+c Coordinate to Compressed Sparse Row
+c-----------------------------------------------------------------------
+c converts a matrix that is stored in coordinate format
+c a, ir, jc into a row general sparse ao, jao, iao format.
+c
+c on entry:
+c---------
+c nrow = dimension of the matrix
+c nnz = number of nonzero elements in matrix
+c a,
+c ir,
+c jc = matrix in coordinate format. a(k), ir(k), jc(k) store the nnz
+c nonzero elements of the matrix with a(k) = actual real value of
+c the elements, ir(k) = its row number and jc(k) = its column
+c number. The order of the elements is arbitrary.
+c
+c on return:
+c-----------
+c ir is destroyed
+c
+c ao, jao, iao = matrix in general sparse matrix format with ao
+c continung the real values, jao containing the column indices,
+c and iao being the pointer to the beginning of the row,
+c in arrays ao, jao.
+c
+c Notes:
+c------ This routine is NOT in place. See coicsr
+c
+c------------------------------------------------------------------------
+ do 1 k=1,nrow+1
+ iao(k) = 0
+ 1 continue
+c determine row-lengths.
+ do 2 k=1, nnz
+ iao(ir(k)) = iao(ir(k))+1
+ 2 continue
+c starting position of each row..
+ k = 1
+ do 3 j=1,nrow+1
+ k0 = iao(j)
+ iao(j) = k
+ k = k+k0
+ 3 continue
+c go through the structure once more. Fill in output matrix.
+ do 4 k=1, nnz
+ i = ir(k)
+ j = jc(k)
+ x = a(k)
+ iad = iao(i)
+ ao(iad) = x
+ jao(iad) = j
+ iao(i) = iad+1
+ 4 continue
+c shift back iao
+ do 5 j=nrow,1,-1
+ iao(j+1) = iao(j)
+ 5 continue
+ iao(1) = 1
+ return
+c------------- end of coocsr -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine coicsr (n,nnz,job,a,ja,ia,iwk)
+ integer ia(nnz),ja(nnz),iwk(n+1)
+ real*8 a(*)
+c------------------------------------------------------------------------
+c IN-PLACE coo-csr conversion routine.
+c------------------------------------------------------------------------
+c this subroutine converts a matrix stored in coordinate format into
+c the csr format. The conversion is done in place in that the arrays
+c a,ja,ia of the result are overwritten onto the original arrays.
+c------------------------------------------------------------------------
+c on entry:
+c---------
+c n = integer. row dimension of A.
+c nnz = integer. number of nonzero elements in A.
+c job = integer. Job indicator. when job=1, the real values in a are
+c filled. Otherwise a is not touched and the structure of the
+c array only (i.e. ja, ia) is obtained.
+c a = real array of size nnz (number of nonzero elements in A)
+c containing the nonzero elements
+c ja = integer array of length nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer array of length nnz containing the row positions
+c of the corresponding elements in a.
+c iwk = integer work array of length n+1
+c on return:
+c----------
+c a
+c ja
+c ia = contains the compressed sparse row data structure for the
+c resulting matrix.
+c Note:
+c-------
+c the entries of the output matrix are not sorted (the column
+c indices in each are not in increasing order) use coocsr
+c if you want them sorted.
+c----------------------------------------------------------------------c
+c Coded by Y. Saad, Sep. 26 1989 c
+c----------------------------------------------------------------------c
+ real*8 t,tnext
+ logical values
+c-----------------------------------------------------------------------
+ values = (job .eq. 1)
+c find pointer array for resulting matrix.
+ do 35 i=1,n+1
+ iwk(i) = 0
+ 35 continue
+ do 4 k=1,nnz
+ i = ia(k)
+ iwk(i+1) = iwk(i+1)+1
+ 4 continue
+c------------------------------------------------------------------------
+ iwk(1) = 1
+ do 44 i=2,n
+ iwk(i) = iwk(i-1) + iwk(i)
+ 44 continue
+c
+c loop for a cycle in chasing process.
+c
+ init = 1
+ k = 0
+ 5 if (values) t = a(init)
+ i = ia(init)
+ j = ja(init)
+ ia(init) = -1
+c------------------------------------------------------------------------
+ 6 k = k+1
+c current row number is i. determine where to go.
+ ipos = iwk(i)
+c save the chased element.
+ if (values) tnext = a(ipos)
+ inext = ia(ipos)
+ jnext = ja(ipos)
+c then occupy its location.
+ if (values) a(ipos) = t
+ ja(ipos) = j
+c update pointer information for next element to come in row i.
+ iwk(i) = ipos+1
+c determine next element to be chased,
+ if (ia(ipos) .lt. 0) goto 65
+ t = tnext
+ i = inext
+ j = jnext
+ ia(ipos) = -1
+ if (k .lt. nnz) goto 6
+ goto 70
+ 65 init = init+1
+ if (init .gt. nnz) goto 70
+ if (ia(init) .lt. 0) goto 65
+c restart chasing --
+ goto 5
+ 70 do 80 i=1,n
+ ia(i+1) = iwk(i)
+ 80 continue
+ ia(1) = 1
+ return
+c----------------- end of coicsr ----------------------------------------
+c------------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrcoo (nrow,job,nzmax,a,ja,ia,nnz,ao,ir,jc,ierr)
+c-----------------------------------------------------------------------
+ real*8 a(*),ao(*)
+ integer ir(*),jc(*),ja(*),ia(nrow+1)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Coordinate
+c-----------------------------------------------------------------------
+c converts a matrix that is stored in coordinate format
+c a, ir, jc into a row general sparse ao, jao, iao format.
+c
+c on entry:
+c---------
+c nrow = dimension of the matrix.
+c job = integer serving as a job indicator.
+c if job = 1 fill in only the array ir, ignore jc, and ao.
+c if job = 2 fill in ir, and jc but not ao
+c if job = 3 fill in everything.
+c The reason why these options are provided is that on return
+c ao and jc are the same as a, ja. So when job = 3, a and ja are
+c simply copied into ao, jc. When job=2, only jc and ir are
+c returned. With job=1 only the array ir is returned. Moreover,
+c the algorithm is in place:
+c call csrcoo (nrow,1,nzmax,a,ja,ia,nnz,a,ia,ja,ierr)
+c will write the output matrix in coordinate format on a, ja,ia.
+c
+c a,
+c ja,
+c ia = matrix in compressed sparse row format.
+c nzmax = length of space available in ao, ir, jc.
+c the code will stop immediatly if the number of
+c nonzero elements found in input matrix exceeds nzmax.
+c
+c on return:
+c-----------
+c ao, ir, jc = matrix in coordinate format.
+c
+c nnz = number of nonzero elements in matrix.
+c ierr = integer error indicator.
+c ierr .eq. 0 means normal retur
+c ierr .eq. 1 means that the the code stopped
+c because there was no space in ao, ir, jc
+c (according to the value of nzmax).
+c
+c NOTES: 1)This routine is PARTIALLY in place: csrcoo can be called with
+c ao being the same array as as a, and jc the same array as ja.
+c but ir CANNOT be the same as ia.
+c 2) note the order in the output arrays,
+c------------------------------------------------------------------------
+ ierr = 0
+ nnz = ia(nrow+1)-1
+ if (nnz .gt. nzmax) then
+ ierr = 1
+ return
+ endif
+c------------------------------------------------------------------------
+ goto (3,2,1) job
+ 1 do 10 k=1,nnz
+ ao(k) = a(k)
+ 10 continue
+ 2 do 11 k=1,nnz
+ jc(k) = ja(k)
+ 11 continue
+c
+c copy backward to allow for in-place processing.
+c
+ 3 do 13 i=nrow,1,-1
+ k1 = ia(i+1)-1
+ k2 = ia(i)
+ do 12 k=k1,k2,-1
+ ir(k) = i
+ 12 continue
+ 13 continue
+ return
+c------------- end-of-csrcoo -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrssr (nrow,a,ja,ia,nzmax,ao,jao,iao,ierr)
+ real*8 a(*), ao(*), t
+ integer ia(*), ja(*), iao(*), jao(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Symmetric Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine extracts the lower triangular part of a matrix.
+c It can used as a means for converting a symmetric matrix for
+c which all the entries are stored in sparse format into one
+c in which only the lower part is stored. The routine is in place in
+c that the output matrix ao, jao, iao can be overwritten on
+c the input matrix a, ja, ia if desired. Csrssr has been coded to
+c put the diagonal elements of the matrix in the last position in
+c each row (i.e. in position ao(ia(i+1)-1 of ao and jao)
+c-----------------------------------------------------------------------
+c On entry
+c-----------
+c nrow = dimension of the matrix a.
+c a, ja,
+c ia = matrix stored in compressed row sparse format
+c
+c nzmax = length of arrays ao, and jao.
+c
+c On return:
+c-----------
+c ao, jao,
+c iao = lower part of input matrix (a,ja,ia) stored in compressed sparse
+c row format format.
+c
+c ierr = integer error indicator.
+c ierr .eq. 0 means normal return
+c ierr .eq. i means that the code has stopped when processing
+c row number i, because there is not enough space in ao, jao
+c (according to the value of nzmax)
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ ko = 0
+c-----------------------------------------------------------------------
+ do 7 i=1, nrow
+ kold = ko
+ kdiag = 0
+ do 71 k = ia(i), ia(i+1) -1
+ if (ja(k) .gt. i) goto 71
+ ko = ko+1
+ if (ko .gt. nzmax) then
+ ierr = i
+ return
+ endif
+ ao(ko) = a(k)
+ jao(ko) = ja(k)
+ if (ja(k) .eq. i) kdiag = ko
+ 71 continue
+ if (kdiag .eq. 0 .or. kdiag .eq. ko) goto 72
+c
+c exchange
+c
+ t = ao(kdiag)
+ ao(kdiag) = ao(ko)
+ ao(ko) = t
+c
+ k = jao(kdiag)
+ jao(kdiag) = jao(ko)
+ jao(ko) = k
+ 72 iao(i) = kold+1
+ 7 continue
+c redefine iao(n+1)
+ iao(nrow+1) = ko+1
+ return
+c--------- end of csrssr -----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ssrcsr(job, value2, nrow, a, ja, ia, nzmax,
+ & ao, jao, iao, indu, iwk, ierr)
+c .. Scalar Arguments ..
+ integer ierr, job, nrow, nzmax, value2
+c ..
+c .. Array Arguments ..
+ integer ia(nrow+1), iao(nrow+1), indu(nrow),
+ & iwk(nrow+1), ja(*), jao(nzmax)
+ real*8 a(*), ao(nzmax)
+c ..
+c-----------------------------------------------------------------------
+c Symmetric Sparse Row to Compressed Sparse Row format
+c-----------------------------------------------------------------------
+c This subroutine converts a given matrix in SSR format to regular
+c CSR format by computing Ao = A + A' - diag(A), where A' is A
+c transpose.
+c
+c Typically this routine is used to expand the SSR matrix of
+c Harwell Boeing matrices, or to obtain a symmetrized graph of
+c unsymmetric matrices.
+c
+c This routine is inplace, i.e., (Ao,jao,iao) may be same as
+c (a,ja,ia).
+c
+c It is possible to input an arbitrary CSR matrix to this routine,
+c since there is no syntactical difference between CSR and SSR
+c format. It also removes duplicate entries and perform a partial
+c ordering. The output matrix has an order of lower half, main
+c diagonal and upper half after the partial ordering.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c
+c job = options
+c 0 -- duplicate entries are not removed. If the input matrix is
+c SSR (not an arbitary CSR) matrix, no duplicate entry should
+c arise from this routine.
+c 1 -- eliminate duplicate entries, zero entries.
+c 2 -- eliminate duplicate entries and perform partial ordering.
+c 3 -- eliminate duplicate entries, sort the entries in the
+c increasing order of clumn indices.
+c
+c value2= will the values of A be copied?
+c 0 -- only expand the graph (a, ao are not touched)
+c 1 -- expand the matrix with the values.
+c
+c nrow = column dimension of inout matrix
+c a,
+c ia,
+c ja = matrix in compressed sparse row format.
+c
+c nzmax = size of arrays ao and jao. SSRCSR will abort if the storage
+c provided in ao, jao is not sufficient to store A. See ierr.
+c
+c on return:
+c----------
+c ao, jao, iao
+c = output matrix in compressed sparse row format. The resulting
+c matrix is symmetric and is equal to A+A'-D. ao, jao, iao,
+c can be the same as a, ja, ia in the calling sequence.
+c
+c indu = integer array of length nrow. INDU will contain pointers
+c to the beginning of upper traigular part if job > 1.
+c Otherwise it is also used as a work array (size nrow).
+c
+c iwk = integer work space (size nrow+1).
+c
+c ierr = integer. Serving as error message. If the length of the arrays
+c ao, jao exceeds nzmax, ierr returns the minimum value
+c needed for nzmax. otherwise ierr=0 (normal return).
+c
+c-----------------------------------------------------------------------
+c .. Local Scalars ..
+ integer i, ipos, j, k, kfirst, klast, ko, kosav, nnz
+ real*8 tmp
+c ..
+c .. Executable Statements ..
+ ierr = 0
+ do 10 i = 1, nrow
+ indu(i) = 0
+ iwk(i) = 0
+ 10 continue
+ iwk(nrow+1) = 0
+c
+c .. compute number of elements in each row of (A'-D)
+c put result in iwk(i+1) for row i.
+c
+ do 30 i = 1, nrow
+ do 20 k = ia(i), ia(i+1) - 1
+ j = ja(k)
+ if (j.ne.i)
+ & iwk(j+1) = iwk(j+1) + 1
+ 20 continue
+ 30 continue
+c
+c .. find addresses of first elements of ouput matrix. result in iwk
+c
+ iwk(1) = 1
+ do 40 i = 1, nrow
+ indu(i) = iwk(i) + ia(i+1) - ia(i)
+ iwk(i+1) = iwk(i+1) + indu(i)
+ indu(i) = indu(i) - 1
+ 40 continue
+c.....Have we been given enough storage in ao, jao ?
+ nnz = iwk(nrow+1) - 1
+ if (nnz.gt.nzmax) then
+ ierr = nnz
+ return
+ endif
+c
+c .. copy the existing matrix (backwards).
+c
+ kosav = iwk(nrow+1)
+ do 60 i = nrow, 1, -1
+ klast = ia(i+1) - 1
+ kfirst = ia(i)
+ iao(i+1) = kosav
+ kosav = iwk(i)
+ ko = iwk(i) - kfirst
+ iwk(i) = ko + klast + 1
+ do 50 k = klast, kfirst, -1
+ if (value2.ne.0)
+ & ao(k+ko) = a(k)
+ jao(k+ko) = ja(k)
+ 50 continue
+ 60 continue
+ iao(1) = 1
+c
+c now copy (A'-D). Go through the structure of ao, jao, iao
+c that has already been copied. iwk(i) is the address
+c of the next free location in row i for ao, jao.
+c
+ do 80 i = 1, nrow
+ do 70 k = iao(i), indu(i)
+ j = jao(k)
+ if (j.ne.i) then
+ ipos = iwk(j)
+ if (value2.ne.0)
+ & ao(ipos) = ao(k)
+ jao(ipos) = i
+ iwk(j) = ipos + 1
+ endif
+ 70 continue
+ 80 continue
+ if (job.le.0) return
+c
+c .. eliminate duplicate entries --
+c array INDU is used as marker for existing indices, it is also the
+c location of the entry.
+c IWK is used to stored the old IAO array.
+c matrix is copied to squeeze out the space taken by the duplicated
+c entries.
+c
+ do 90 i = 1, nrow
+ indu(i) = 0
+ iwk(i) = iao(i)
+ 90 continue
+ iwk(nrow+1) = iao(nrow+1)
+ k = 1
+ do 120 i = 1, nrow
+ iao(i) = k
+ ipos = iwk(i)
+ klast = iwk(i+1)
+ 100 if (ipos.lt.klast) then
+ j = jao(ipos)
+ if (indu(j).eq.0) then
+c .. new entry ..
+ if (value2.ne.0) then
+ if (ao(ipos) .ne. 0.0D0) then
+ indu(j) = k
+ jao(k) = jao(ipos)
+ ao(k) = ao(ipos)
+ k = k + 1
+ endif
+ else
+ indu(j) = k
+ jao(k) = jao(ipos)
+ k = k + 1
+ endif
+ else if (value2.ne.0) then
+c .. duplicate entry ..
+ ao(indu(j)) = ao(indu(j)) + ao(ipos)
+ endif
+ ipos = ipos + 1
+ go to 100
+ endif
+c .. remove marks before working on the next row ..
+ do 110 ipos = iao(i), k - 1
+ indu(jao(ipos)) = 0
+ 110 continue
+ 120 continue
+ iao(nrow+1) = k
+ if (job.le.1) return
+c
+c .. partial ordering ..
+c split the matrix into strict upper/lower triangular
+c parts, INDU points to the the beginning of the strict upper part.
+c
+ do 140 i = 1, nrow
+ klast = iao(i+1) - 1
+ kfirst = iao(i)
+ 130 if (klast.gt.kfirst) then
+ if (jao(klast).lt.i .and. jao(kfirst).ge.i) then
+c .. swap klast with kfirst ..
+ j = jao(klast)
+ jao(klast) = jao(kfirst)
+ jao(kfirst) = j
+ if (value2.ne.0) then
+ tmp = ao(klast)
+ ao(klast) = ao(kfirst)
+ ao(kfirst) = tmp
+ endif
+ endif
+ if (jao(klast).ge.i)
+ & klast = klast - 1
+ if (jao(kfirst).lt.i)
+ & kfirst = kfirst + 1
+ go to 130
+ endif
+c
+ if (jao(klast).lt.i) then
+ indu(i) = klast + 1
+ else
+ indu(i) = klast
+ endif
+ 140 continue
+ if (job.le.2) return
+c
+c .. order the entries according to column indices
+c bubble-sort is used
+c
+ do 190 i = 1, nrow
+ do 160 ipos = iao(i), indu(i)-1
+ do 150 j = indu(i)-1, ipos+1, -1
+ k = j - 1
+ if (jao(k).gt.jao(j)) then
+ ko = jao(k)
+ jao(k) = jao(j)
+ jao(j) = ko
+ if (value2.ne.0) then
+ tmp = ao(k)
+ ao(k) = ao(j)
+ ao(j) = tmp
+ endif
+ endif
+ 150 continue
+ 160 continue
+ do 180 ipos = indu(i), iao(i+1)-1
+ do 170 j = iao(i+1)-1, ipos+1, -1
+ k = j - 1
+ if (jao(k).gt.jao(j)) then
+ ko = jao(k)
+ jao(k) = jao(j)
+ jao(j) = ko
+ if (value2.ne.0) then
+ tmp = ao(k)
+ ao(k) = ao(j)
+ ao(j) = tmp
+ endif
+ endif
+ 170 continue
+ 180 continue
+ 190 continue
+c
+ return
+c---- end of ssrcsr ----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine xssrcsr (nrow,a,ja,ia,nzmax,ao,jao,iao,indu,ierr)
+ integer ia(nrow+1),iao(nrow+1),ja(*),jao(nzmax),indu(nrow+1)
+ real*8 a(*),ao(nzmax)
+c-----------------------------------------------------------------------
+c Symmetric Sparse Row to (regular) Compressed Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine converts a symmetric matrix in which only the lower
+c part is stored in compressed sparse row format, i.e.,
+c a matrix stored in symmetric sparse format, into a fully stored matrix
+c i.e., a matrix where both the lower and upper parts are stored in
+c compressed sparse row format. the algorithm is in place (i.e. result
+c may be overwritten onto the input matrix a, ja, ia ----- ).
+c the output matrix delivered by ssrcsr is such that each row starts with
+c the elements of the lower part followed by those of the upper part.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c
+c nrow = row dimension of inout matrix
+c a,
+c ia,
+c ja = matrix in compressed sparse row format. This is assumed to be
+c a lower triangular matrix.
+c
+c nzmax = size of arrays ao and jao. ssrcsr will abort if the storage
+c provided in a, ja is not sufficient to store A. See ierr.
+c
+c on return:
+c----------
+c ao, iao,
+c jao = output matrix in compressed sparse row format. The resulting
+c matrix is symmetric and is equal to A+A**T - D, if
+c A is the original lower triangular matrix. ao, jao, iao,
+c can be the same as a, ja, ia in the calling sequence.
+c
+c indu = integer array of length nrow+1. If the input matrix is such
+c that the last element in each row is its diagonal element then
+c on return, indu will contain the pointers to the diagonal
+c element in each row of the output matrix. Otherwise used as
+c work array.
+c ierr = integer. Serving as error message. If the length of the arrays
+c ao, jao exceeds nzmax, ierr returns the minimum value
+c needed for nzmax. otherwise ierr=0 (normal return).
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ do 1 i=1,nrow+1
+ indu(i) = 0
+ 1 continue
+c
+c compute number of elements in each row of strict upper part.
+c put result in indu(i+1) for row i.
+c
+ do 3 i=1, nrow
+ do 2 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ if (j .lt. i) indu(j+1) = indu(j+1)+1
+ 2 continue
+ 3 continue
+c-----------
+c find addresses of first elements of ouput matrix. result in indu
+c-----------
+ indu(1) = 1
+ do 4 i=1,nrow
+ lenrow = ia(i+1)-ia(i)
+ indu(i+1) = indu(i) + indu(i+1) + lenrow
+ 4 continue
+c--------------------- enough storage in a, ja ? --------
+ nnz = indu(nrow+1)-1
+ if (nnz .gt. nzmax) then
+ ierr = nnz
+ return
+ endif
+c
+c now copy lower part (backwards).
+c
+ kosav = indu(nrow+1)
+ do 6 i=nrow,1,-1
+ klast = ia(i+1)-1
+ kfirst = ia(i)
+ iao(i+1) = kosav
+ ko = indu(i)
+ kosav = ko
+ do 5 k = kfirst, klast
+ ao(ko) = a(k)
+ jao(ko) = ja(k)
+ ko = ko+1
+ 5 continue
+ indu(i) = ko
+ 6 continue
+ iao(1) = 1
+c
+c now copy upper part. Go through the structure of ao, jao, iao
+c that has already been copied (lower part). indu(i) is the address
+c of the next free location in row i for ao, jao.
+c
+ do 8 i=1,nrow
+c i-th row is now in ao, jao, iao structure -- lower half part
+ do 9 k=iao(i), iao(i+1)-1
+ j = jao(k)
+ if (j .ge. i) goto 8
+ ipos = indu(j)
+ ao(ipos) = ao(k)
+ jao(ipos) = i
+ indu(j) = indu(j) + 1
+ 9 continue
+ 8 continue
+ return
+c----- end of xssrcsr --------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrell (nrow,a,ja,ia,maxcol,coef,jcoef,ncoef,
+ * ndiag,ierr)
+ integer ia(nrow+1), ja(*), jcoef(ncoef,1)
+ real*8 a(*), coef(ncoef,1)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Ellpack - Itpack format
+c-----------------------------------------------------------------------
+c this subroutine converts matrix stored in the general a, ja, ia
+c format into the coef, jcoef itpack format.
+c
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c nrow = row dimension of the matrix A.
+c
+c a,
+c ia,
+c ja = input matrix in compressed sparse row format.
+c
+c ncoef = first dimension of arrays coef, and jcoef.
+c
+c maxcol = integer equal to the number of columns available in coef.
+c
+c on return:
+c----------
+c coef = real array containing the values of the matrix A in
+c itpack-ellpack format.
+c jcoef = integer array containing the column indices of coef(i,j)
+c in A.
+c ndiag = number of active 'diagonals' found.
+c
+c ierr = error message. 0 = correct return. If ierr .ne. 0 on
+c return this means that the number of diagonals found
+c (ndiag) exceeds maxcol.
+c
+c-----------------------------------------------------------------------
+c first determine the length of each row of lower-part-of(A)
+ ierr = 0
+ ndiag = 0
+ do 3 i=1, nrow
+ k = ia(i+1)-ia(i)
+ ndiag = max0(ndiag,k)
+ 3 continue
+c----- check whether sufficient columns are available. -----------------
+ if (ndiag .gt. maxcol) then
+ ierr = 1
+ return
+ endif
+c
+c fill coef with zero elements and jcoef with row numbers.------------
+c
+ do 4 j=1,ndiag
+ do 41 i=1,nrow
+ coef(i,j) = 0.0d0
+ jcoef(i,j) = i
+ 41 continue
+ 4 continue
+c
+c------- copy elements row by row.--------------------------------------
+c
+ do 6 i=1, nrow
+ k1 = ia(i)
+ k2 = ia(i+1)-1
+ do 5 k=k1,k2
+ coef(i,k-k1+1) = a(k)
+ jcoef(i,k-k1+1) = ja(k)
+ 5 continue
+ 6 continue
+ return
+c--- end of csrell------------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ellcsr(nrow,coef,jcoef,ncoef,ndiag,a,ja,ia,nzmax,ierr)
+ integer ia(nrow+1), ja(*), jcoef(ncoef,1)
+ real*8 a(*), coef(ncoef,1)
+c-----------------------------------------------------------------------
+c Ellpack - Itpack format to Compressed Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in ellpack-itpack format
+c coef-jcoef into the compressed sparse row format. It actually checks
+c whether an entry in the input matrix is a nonzero element before
+c putting it in the output matrix. The test does not account for small
+c values but only for exact zeros.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c
+c nrow = row dimension of the matrix A.
+c coef = array containing the values of the matrix A in ellpack format.
+c jcoef = integer arraycontains the column indices of coef(i,j) in A.
+c ncoef = first dimension of arrays coef, and jcoef.
+c ndiag = number of active columns in coef, jcoef.
+c
+c ndiag = on entry the number of columns made available in coef.
+c
+c on return:
+c----------
+c a, ia,
+c ja = matrix in a, ia, ja format where.
+c
+c nzmax = size of arrays a and ja. ellcsr will abort if the storage
+c provided in a, ja is not sufficient to store A. See ierr.
+c
+c ierr = integer. serves are output error message.
+c ierr = 0 means normal return.
+c ierr = 1 means that there is not enough space in
+c a and ja to store output matrix.
+c-----------------------------------------------------------------------
+c first determine the length of each row of lower-part-of(A)
+ ierr = 0
+c-----check whether sufficient columns are available. -----------------
+c
+c------- copy elements row by row.--------------------------------------
+ kpos = 1
+ ia(1) = kpos
+ do 6 i=1, nrow
+ do 5 k=1,ndiag
+ if (coef(i,k) .ne. 0.0d0) then
+ if (kpos .gt. nzmax) then
+ ierr = kpos
+ return
+ endif
+ a(kpos) = coef(i,k)
+ ja(kpos) = jcoef(i,k)
+ kpos = kpos+1
+ endif
+ 5 continue
+ ia(i+1) = kpos
+ 6 continue
+ return
+c--- end of ellcsr -----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrmsr (n,a,ja,ia,ao,jao,wk,iwk)
+ real*8 a(*),ao(*),wk(n)
+ integer ia(n+1),ja(*),jao(*),iwk(n+1)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Modified - Sparse Row
+c Sparse row with separate main diagonal
+c-----------------------------------------------------------------------
+c converts a general sparse matrix a, ja, ia into
+c a compressed matrix using a separated diagonal (referred to as
+c the bell-labs format as it is used by bell labs semi conductor
+c group. We refer to it here as the modified sparse row format.
+c Note: this has been coded in such a way that one can overwrite
+c the output matrix onto the input matrix if desired by a call of
+c the form
+c
+c call csrmsr (n, a, ja, ia, a, ja, wk,iwk)
+c
+c In case ao, jao, are different from a, ja, then one can
+c use ao, jao as the work arrays in the calling sequence:
+c
+c call csrmsr (n, a, ja, ia, ao, jao, ao,jao)
+c
+c-----------------------------------------------------------------------
+c
+c on entry :
+c---------
+c a, ja, ia = matrix in csr format. note that the
+c algorithm is in place: ao, jao can be the same
+c as a, ja, in which case it will be overwritten on it
+c upon return.
+c
+c on return :
+c-----------
+c
+c ao, jao = sparse matrix in modified sparse row storage format:
+c + ao(1:n) contains the diagonal of the matrix.
+c + ao(n+2:nnz) contains the nondiagonal elements of the
+c matrix, stored rowwise.
+c + jao(n+2:nnz) : their column indices
+c + jao(1:n+1) contains the pointer array for the nondiagonal
+c elements in ao(n+1:nnz) and jao(n+2:nnz).
+c i.e., for i .le. n+1 jao(i) points to beginning of row i
+c in arrays ao, jao.
+c here nnz = number of nonzero elements+1
+c work arrays:
+c------------
+c wk = real work array of length n
+c iwk = integer work array of length n+1
+c
+c notes:
+c-------
+c Algorithm is in place. i.e. both:
+c
+c call csrmsr (n, a, ja, ia, ao, jao, ao,jao)
+c (in which ao, jao, are different from a, ja)
+c and
+c call csrmsr (n, a, ja, ia, a, ja, wk,iwk)
+c (in which wk, jwk, are different from a, ja)
+c are OK.
+c--------
+c coded by Y. Saad Sep. 1989. Rechecked Feb 27, 1990.
+c-----------------------------------------------------------------------
+ icount = 0
+c
+c store away diagonal elements and count nonzero diagonal elements.
+c
+ do 1 i=1,n
+ wk(i) = 0.0d0
+ iwk(i+1) = ia(i+1)-ia(i)
+ do 2 k=ia(i),ia(i+1)-1
+ if (ja(k) .eq. i) then
+ wk(i) = a(k)
+ icount = icount + 1
+ iwk(i+1) = iwk(i+1)-1
+ endif
+ 2 continue
+ 1 continue
+c
+c compute total length
+c
+ iptr = n + ia(n+1) - icount
+c
+c copy backwards (to avoid collisions)
+c
+ do 500 ii=n,1,-1
+ do 100 k=ia(ii+1)-1,ia(ii),-1
+ j = ja(k)
+ if (j .ne. ii) then
+ ao(iptr) = a(k)
+ jao(iptr) = j
+ iptr = iptr-1
+ endif
+ 100 continue
+ 500 continue
+c
+c compute pointer values and copy wk(*)
+c
+ jao(1) = n+2
+ do 600 i=1,n
+ ao(i) = wk(i)
+ jao(i+1) = jao(i)+iwk(i+1)
+ 600 continue
+ return
+c------------ end of subroutine csrmsr ---------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine msrcsr (n,a,ja,ao,jao,iao,wk,iwk)
+ real*8 a(*),ao(*),wk(n)
+ integer ja(*),jao(*),iao(n+1),iwk(n+1)
+c-----------------------------------------------------------------------
+c Modified - Sparse Row to Compressed Sparse Row
+c
+c-----------------------------------------------------------------------
+c converts a compressed matrix using a separated diagonal
+c (modified sparse row format) in the Compressed Sparse Row
+c format.
+c does not check for zero elements in the diagonal.
+c
+c
+c on entry :
+c---------
+c n = row dimension of matrix
+c a, ja = sparse matrix in msr sparse storage format
+c see routine csrmsr for details on data structure
+c
+c on return :
+c-----------
+c
+c ao,jao,iao = output matrix in csr format.
+c
+c work arrays:
+c------------
+c wk = real work array of length n
+c iwk = integer work array of length n+1
+c
+c notes:
+c The original version of this was NOT in place, but has
+c been modified by adding the vector iwk to be in place.
+c The original version had ja instead of iwk everywhere in
+c loop 500. Modified Sun 29 May 1994 by R. Bramley (Indiana).
+c
+c-----------------------------------------------------------------------
+ logical added
+ do 1 i=1,n
+ wk(i) = a(i)
+ iwk(i) = ja(i)
+ 1 continue
+ iwk(n+1) = ja(n+1)
+ iao(1) = 1
+ iptr = 1
+c---------
+ do 500 ii=1,n
+ added = .false.
+ idiag = iptr + (iwk(ii+1)-iwk(ii))
+ do 100 k=iwk(ii),iwk(ii+1)-1
+ j = ja(k)
+ if (j .lt. ii) then
+ ao(iptr) = a(k)
+ jao(iptr) = j
+ iptr = iptr+1
+ elseif (added) then
+ ao(iptr) = a(k)
+ jao(iptr) = j
+ iptr = iptr+1
+ else
+c add diag element - only reserve a position for it.
+ idiag = iptr
+ iptr = iptr+1
+ added = .true.
+c then other element
+ ao(iptr) = a(k)
+ jao(iptr) = j
+ iptr = iptr+1
+ endif
+ 100 continue
+ ao(idiag) = wk(ii)
+ jao(idiag) = ii
+ if (.not. added) iptr = iptr+1
+ iao(ii+1) = iptr
+ 500 continue
+ return
+c------------ end of subroutine msrcsr ---------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrcsc (n,job,ipos,a,ja,ia,ao,jao,iao)
+ integer ia(n+1),iao(n+1),ja(*),jao(*)
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Compressed Sparse Column
+c
+c (transposition operation) Not in place.
+c-----------------------------------------------------------------------
+c -- not in place --
+c this subroutine transposes a matrix stored in a, ja, ia format.
+c ---------------
+c on entry:
+c----------
+c n = dimension of A.
+c job = integer to indicate whether to fill the values (job.eq.1) of the
+c matrix ao or only the pattern., i.e.,ia, and ja (job .ne.1)
+c
+c ipos = starting position in ao, jao of the transposed matrix.
+c the iao array takes this into account (thus iao(1) is set to ipos.)
+c Note: this may be useful if one needs to append the data structure
+c of the transpose to that of A. In this case use for example
+c call csrcsc (n,1,ia(n+1),a,ja,ia,a,ja,ia(n+2))
+c for any other normal usage, enter ipos=1.
+c a = real array of length nnz (nnz=number of nonzero elements in input
+c matrix) containing the nonzero elements.
+c ja = integer array of length nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer of size n+1. ia(k) contains the position in a, ja of
+c the beginning of the k-th row.
+c
+c on return:
+c ----------
+c output arguments:
+c ao = real array of size nzz containing the "a" part of the transpose
+c jao = integer array of size nnz containing the column indices.
+c iao = integer array of size n+1 containing the "ia" index array of
+c the transpose.
+c
+c-----------------------------------------------------------------------
+ call csrcsc2 (n,n,job,ipos,a,ja,ia,ao,jao,iao)
+ end
+c-----------------------------------------------------------------------
+ subroutine csrcsc2 (n,n2,job,ipos,a,ja,ia,ao,jao,iao)
+ integer ia(n+1),iao(n2+1),ja(*),jao(*)
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Compressed Sparse Column
+c
+c (transposition operation) Not in place.
+c-----------------------------------------------------------------------
+c Rectangular version. n is number of rows of CSR matrix,
+c n2 (input) is number of columns of CSC matrix.
+c-----------------------------------------------------------------------
+c -- not in place --
+c this subroutine transposes a matrix stored in a, ja, ia format.
+c ---------------
+c on entry:
+c----------
+c n = number of rows of CSR matrix.
+c n2 = number of columns of CSC matrix.
+c job = integer to indicate whether to fill the values (job.eq.1) of the
+c matrix ao or only the pattern., i.e.,ia, and ja (job .ne.1)
+c
+c ipos = starting position in ao, jao of the transposed matrix.
+c the iao array takes this into account (thus iao(1) is set to ipos.)
+c Note: this may be useful if one needs to append the data structure
+c of the transpose to that of A. In this case use for example
+c call csrcsc2 (n,n,1,ia(n+1),a,ja,ia,a,ja,ia(n+2))
+c for any other normal usage, enter ipos=1.
+c a = real array of length nnz (nnz=number of nonzero elements in input
+c matrix) containing the nonzero elements.
+c ja = integer array of length nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer of size n+1. ia(k) contains the position in a, ja of
+c the beginning of the k-th row.
+c
+c on return:
+c ----------
+c output arguments:
+c ao = real array of size nzz containing the "a" part of the transpose
+c jao = integer array of size nnz containing the column indices.
+c iao = integer array of size n+1 containing the "ia" index array of
+c the transpose.
+c
+c-----------------------------------------------------------------------
+c----------------- compute lengths of rows of transp(A) ----------------
+ do 1 i=1,n2+1
+ iao(i) = 0
+ 1 continue
+ do 3 i=1, n
+ do 2 k=ia(i), ia(i+1)-1
+ j = ja(k)+1
+ iao(j) = iao(j)+1
+ 2 continue
+ 3 continue
+c---------- compute pointers from lengths ------------------------------
+ iao(1) = ipos
+ do 4 i=1,n2
+ iao(i+1) = iao(i) + iao(i+1)
+ 4 continue
+c--------------- now do the actual copying -----------------------------
+ do 6 i=1,n
+ do 62 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ next = iao(j)
+ if (job .eq. 1) ao(next) = a(k)
+ jao(next) = i
+ iao(j) = next+1
+ 62 continue
+ 6 continue
+c-------------------------- reshift iao and leave ----------------------
+ do 7 i=n2,1,-1
+ iao(i+1) = iao(i)
+ 7 continue
+ iao(1) = ipos
+c--------------- end of csrcsc2 ----------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrlnk (n,a,ja,ia,link)
+ real*8 a(*)
+ integer n, ja(*), ia(n+1), link(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Linked storage format.
+c-----------------------------------------------------------------------
+c this subroutine translates a matrix stored in compressed sparse
+c row into one with a linked list storage format. Only the link
+c array needs to be obtained since the arrays a, ja, and ia may
+c be unchanged and carry the same meaning for the output matrix.
+c in other words a, ja, ia, link is the output linked list data
+c structure with a, ja, unchanged from input, and ia possibly
+c altered (in case therea re null rows in matrix). Details on
+c the output array link are given below.
+c-----------------------------------------------------------------------
+c Coded by Y. Saad, Feb 21, 1991.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = integer equal to the dimension of A.
+c
+c a = real array of size nna containing the nonzero elements
+c ja = integer array of size nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer of size n+1 containing the pointers to the beginning
+c of each row. ia(k) contains the position in a, ja of the
+c beginning of the k-th row.
+c
+c on return:
+c----------
+c a, ja, are not changed.
+c ia may be changed if there are null rows.
+c
+c a = nonzero elements.
+c ja = column positions.
+c ia = ia(i) points to the first element of row i in linked structure.
+c link = integer array of size containing the linked list information.
+c link(k) points to the next element of the row after element
+c a(k), ja(k). if link(k) = 0, then there is no next element,
+c i.e., a(k), jcol(k) is the last element of the current row.
+c
+c Thus row number i can be accessed as follows:
+c next = ia(i)
+c while(next .ne. 0) do
+c value = a(next) ! value a(i,j)
+c jcol = ja(next) ! column index j
+c next = link(next) ! address of next element in row
+c endwhile
+c notes:
+c ------ ia may be altered on return.
+c-----------------------------------------------------------------------
+c local variables
+ integer i, k
+c
+c loop through all rows
+c
+ do 100 i =1, n
+ istart = ia(i)
+ iend = ia(i+1)-1
+ if (iend .gt. istart) then
+ do 99 k=istart, iend-1
+ link(k) = k+1
+ 99 continue
+ link(iend) = 0
+ else
+ ia(i) = 0
+ endif
+ 100 continue
+c
+ return
+c-------------end-of-csrlnk --------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine lnkcsr (n, a, jcol, istart, link, ao, jao, iao)
+ real*8 a(*), ao(*)
+ integer n, jcol(*), istart(n), link(*), jao(*), iao(*)
+c-----------------------------------------------------------------------
+c Linked list storage format to Compressed Sparse Row format
+c-----------------------------------------------------------------------
+c this subroutine translates a matrix stored in linked list storage
+c format into the compressed sparse row format.
+c-----------------------------------------------------------------------
+c Coded by Y. Saad, Feb 21, 1991.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = integer equal to the dimension of A.
+c
+c a = real array of size nna containing the nonzero elements
+c jcol = integer array of size nnz containing the column positions
+c of the corresponding elements in a.
+c istart= integer array of size n poiting to the beginning of the rows.
+c istart(i) contains the position of the first element of
+c row i in data structure. (a, jcol, link).
+c if a row is empty istart(i) must be zero.
+c link = integer array of size nnz containing the links in the linked
+c list data structure. link(k) points to the next element
+c of the row after element ao(k), jcol(k). if link(k) = 0,
+c then there is no next element, i.e., ao(k), jcol(k) is
+c the last element of the current row.
+c
+c on return:
+c-----------
+c ao, jao, iao = matrix stored in csr format:
+c
+c ao = real array containing the values of the nonzero elements of
+c the matrix stored row-wise.
+c jao = integer array of size nnz containing the column indices.
+c iao = integer array of size n+1 containing the pointers array to the
+c beginning of each row. iao(i) is the address in ao,jao of
+c first element of row i.
+c
+c-----------------------------------------------------------------------
+c first determine individial bandwidths and pointers.
+c-----------------------------------------------------------------------
+c local variables
+ integer irow, ipos, next
+c-----------------------------------------------------------------------
+ ipos = 1
+ iao(1) = ipos
+c
+c loop through all rows
+c
+ do 100 irow =1, n
+c
+c unroll i-th row.
+c
+ next = istart(irow)
+ 10 if (next .eq. 0) goto 99
+ jao(ipos) = jcol(next)
+ ao(ipos) = a(next)
+ ipos = ipos+1
+ next = link(next)
+ goto 10
+ 99 iao(irow+1) = ipos
+ 100 continue
+c
+ return
+c-------------end-of-lnkcsr -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrdia (n,idiag,job,a,ja,ia,ndiag,
+ * diag,ioff,ao,jao,iao,ind)
+ real*8 diag(ndiag,idiag), a(*), ao(*)
+ integer ia(*), ind(*), ja(*), jao(*), iao(*), ioff(*)
+c-----------------------------------------------------------------------
+c Compressed sparse row to diagonal format
+c-----------------------------------------------------------------------
+c this subroutine extracts idiag diagonals from the input matrix a,
+c a, ia, and puts the rest of the matrix in the output matrix ao,
+c jao, iao. The diagonals to be extracted depend on the value of job
+c (see below for details.) In the first case, the diagonals to be
+c extracted are simply identified by their offsets provided in ioff
+c by the caller. In the second case, the code internally determines
+c the idiag most significant diagonals, i.e., those diagonals of the
+c matrix which have the largest number of nonzero elements, and
+c extracts them.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix a.
+c idiag = integer equal to the number of diagonals to be extracted.
+c Note: on return idiag may be modified.
+c a, ja,
+c ia = matrix stored in a, ja, ia, format
+c job = integer. serves as a job indicator. Job is better thought
+c of as a two-digit number job=xy. If the first (x) digit
+c is one on entry then the diagonals to be extracted are
+c internally determined. In this case csrdia exctracts the
+c idiag most important diagonals, i.e. those having the largest
+c number on nonzero elements. If the first digit is zero
+c then csrdia assumes that ioff(*) contains the offsets
+c of the diagonals to be extracted. there is no verification
+c that ioff(*) contains valid entries.
+c The second (y) digit of job determines whether or not
+c the remainder of the matrix is to be written on ao,jao,iao.
+c If it is zero then ao, jao, iao is not filled, i.e.,
+c the diagonals are found and put in array diag and the rest is
+c is discarded. if it is one, ao, jao, iao contains matrix
+c of the remaining elements.
+c Thus:
+c job= 0 means do not select diagonals internally (pick those
+c defined by ioff) and do not fill ao,jao,iao
+c job= 1 means do not select diagonals internally
+c and fill ao,jao,iao
+c job=10 means select diagonals internally
+c and do not fill ao,jao,iao
+c job=11 means select diagonals internally
+c and fill ao,jao,iao
+c
+c ndiag = integer equal to the first dimension of array diag.
+c
+c on return:
+c-----------
+c
+c idiag = number of diagonals found. This may be smaller than its value
+c on entry.
+c diag = real array of size (ndiag x idiag) containing the diagonals
+c of A on return
+c
+c ioff = integer array of length idiag, containing the offsets of the
+c diagonals to be extracted.
+c ao, jao
+c iao = remainder of the matrix in a, ja, ia format.
+c work arrays:
+c------------
+c ind = integer array of length 2*n-1 used as integer work space.
+c needed only when job.ge.10 i.e., in case the diagonals are to
+c be selected internally.
+c
+c Notes:
+c-------
+c 1) The algorithm is in place: ao, jao, iao can be overwritten on
+c a, ja, ia if desired
+c 2) When the code is required to select the diagonals (job .ge. 10)
+c the selection of the diagonals is done from left to right
+c as a result if several diagonals have the same weight (number
+c of nonzero elemnts) the leftmost one is selected first.
+c-----------------------------------------------------------------------
+ job1 = job/10
+ job2 = job-job1*10
+ if (job1 .eq. 0) goto 50
+ n2 = n+n-1
+ call infdia(n,ja,ia,ind,idum)
+c----------- determine diagonals to accept.----------------------------
+c-----------------------------------------------------------------------
+ ii = 0
+ 4 ii=ii+1
+ jmax = 0
+ do 41 k=1, n2
+ j = ind(k)
+ if (j .le. jmax) goto 41
+ i = k
+ jmax = j
+ 41 continue
+ if (jmax .le. 0) then
+ ii = ii-1
+ goto 42
+ endif
+ ioff(ii) = i-n
+ ind(i) = - jmax
+ if (ii .lt. idiag) goto 4
+ 42 idiag = ii
+c---------------- initialize diago to zero -----------------------------
+ 50 continue
+ do 55 j=1,idiag
+ do 54 i=1,n
+ diag(i,j) = 0.0d0
+ 54 continue
+ 55 continue
+c-----------------------------------------------------------------------
+ ko = 1
+c-----------------------------------------------------------------------
+c extract diagonals and accumulate remaining matrix.
+c-----------------------------------------------------------------------
+ do 6 i=1, n
+ do 51 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ do 52 l=1,idiag
+ if (j-i .ne. ioff(l)) goto 52
+ diag(i,l) = a(k)
+ goto 51
+ 52 continue
+c--------------- append element not in any diagonal to ao,jao,iao -----
+ if (job2 .eq. 0) goto 51
+ ao(ko) = a(k)
+ jao(ko) = j
+ ko = ko+1
+ 51 continue
+ if (job2 .ne. 0 ) ind(i+1) = ko
+ 6 continue
+ if (job2 .eq. 0) return
+c finish with iao
+ iao(1) = 1
+ do 7 i=2,n+1
+ iao(i) = ind(i)
+ 7 continue
+ return
+c----------- end of csrdia ---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine diacsr (n,job,idiag,diag,ndiag,ioff,a,ja,ia)
+ real*8 diag(ndiag,idiag), a(*), t
+ integer ia(*), ja(*), ioff(*)
+c-----------------------------------------------------------------------
+c diagonal format to compressed sparse row
+c-----------------------------------------------------------------------
+c this subroutine extract the idiag most important diagonals from the
+c input matrix a, ja, ia, i.e, those diagonals of the matrix which have
+c the largest number of nonzero elements. If requested (see job),
+c the rest of the matrix is put in a the output matrix ao, jao, iao
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer. dimension of the matrix a.
+c job = integer. job indicator with the following meaning.
+c if (job .eq. 0) then check for each entry in diag
+c whether this entry is zero. If it is then do not include
+c in the output matrix. Note that the test is a test for
+c an exact arithmetic zero. Be sure that the zeros are
+c actual zeros in double precision otherwise this would not
+c work.
+c
+c idiag = integer equal to the number of diagonals to be extracted.
+c Note: on return idiag may be modified.
+c
+c diag = real array of size (ndiag x idiag) containing the diagonals
+c of A on return.
+c
+c ndiag = integer equal to the first dimension of array diag.
+c
+c ioff = integer array of length idiag, containing the offsets of the
+c diagonals to be extracted.
+c
+c on return:
+c-----------
+c a,
+c ja,
+c ia = matrix stored in a, ja, ia, format
+c
+c Note:
+c ----- the arrays a and ja should be of length n*idiag.
+c
+c-----------------------------------------------------------------------
+ ia(1) = 1
+ ko = 1
+ do 80 i=1, n
+ do 70 jj = 1, idiag
+ j = i+ioff(jj)
+ if (j .lt. 1 .or. j .gt. n) goto 70
+ t = diag(i,jj)
+ if (job .eq. 0 .and. t .eq. 0.0d0) goto 70
+ a(ko) = t
+ ja(ko) = j
+ ko = ko+1
+ 70 continue
+ ia(i+1) = ko
+ 80 continue
+ return
+c----------- end of diacsr ---------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine bsrcsr (job, n, m, na, a, ja, ia, ao, jao, iao)
+ implicit none
+ integer job, n, m, na, ia(*), ja(*), jao(*), iao(n+1)
+ real*8 a(na,*), ao(*)
+c-----------------------------------------------------------------------
+c Block Sparse Row to Compressed Sparse Row.
+c-----------------------------------------------------------------------
+c NOTE: ** meanings of parameters may have changed wrt earlier versions
+c FORMAT DEFINITION HAS CHANGED WRT TO EARLIER VERSIONS...
+c-----------------------------------------------------------------------
+c
+c converts a matrix stored in block-reduced a, ja, ia format to the
+c general sparse row a, ja, ia format. A matrix that has a block
+c structure is a matrix whose entries are blocks of the same size m
+c (e.g. 3 x 3). Then it is often preferred to work with the reduced
+c graph of the matrix. Instead of storing one element at a time one can
+c store a whole block at a time. In this storage scheme an entry is a
+c square array holding the m**2 elements of a block.
+c
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c job = if job.eq.0 on entry, values are not copied (pattern only)
+c
+c n = the block row dimension of the matrix.
+c
+c m = the dimension of each block. Thus, the actual row dimension
+c of A is n x m.
+c
+c na = first dimension of array a as declared in calling program.
+c This should be .ge. m**2.
+c
+c a = real array containing the real entries of the matrix. Recall
+c that each entry is in fact an m x m block. These entries
+c are stored column-wise in locations a(1:m*m,k) for each k-th
+c entry. See details below.
+c
+c ja = integer array of length n. ja(k) contains the column index
+c of the leading element, i.e., the element (1,1) of the block
+c that is held in the column a(*,k) of the value array.
+c
+c ia = integer array of length n+1. ia(i) points to the beginning
+c of block row number i in the arrays a and ja.
+c
+c on return:
+c-----------
+c ao, jao,
+c iao = matrix stored in compressed sparse row format. The number of
+c rows in the new matrix is n x m.
+c
+c Notes: THIS CODE IS NOT IN PLACE.
+c
+c-----------------------------------------------------------------------
+c BSR FORMAT.
+c----------
+c Each row of A contains the m x m block matrix unpacked column-
+c wise (this allows the user to declare the array a as a(m,m,*) on entry
+c if desired). The block rows are stored in sequence just as for the
+c compressed sparse row format.
+c
+c-----------------------------------------------------------------------
+c example with m = 2:
+c 1 2 3
+c +-------|--------|--------+ +-------+
+c | 1 2 | 0 0 | 3 4 | Block | x 0 x | 1
+c | 5 6 | 0 0 | 7 8 | Representation: | 0 x x | 2
+c +-------+--------+--------+ | x 0 0 | 3
+c | 0 0 | 9 10 | 11 12 | +-------+
+c | 0 0 | 13 14 | 15 16 |
+c +-------+--------+--------+
+c | 17 18 | 0 0 | 0 0 |
+c | 22 23 | 0 0 | 0 0 |
+c +-------+--------+--------+
+c
+c For this matrix: n = 3
+c m = 2
+c nnz = 5
+c-----------------------------------------------------------------------
+c Data structure in Block Sparse Row format:
+c-------------------------------------------
+c Array A:
+c-------------------------
+c 1 3 9 11 17 <<--each m x m block is stored column-wise
+c 5 7 13 15 22 in a column of the array A.
+c 2 4 10 12 18
+c 6 8 14 16 23
+c-------------------------
+c JA 1 3 2 3 1 <<-- column indices for each block. Note that
+c------------------------- these indices are wrt block matrix.
+c IA 1 3 5 6 <<-- pointers to beginning of each block row
+c------------------------- in arrays A and JA.
+c-----------------------------------------------------------------------
+c locals
+c
+ integer i, i1, i2, ij, ii, irow, j, jstart, k, krow, no
+ logical val
+c
+ val = (job.ne.0)
+ no = n * m
+ irow = 1
+ krow = 1
+ iao(irow) = 1
+c-----------------------------------------------------------------------
+ do 2 ii=1, n
+c
+c recall: n is the block-row dimension
+c
+ i1 = ia(ii)
+ i2 = ia(ii+1)-1
+c
+c create m rows for each block row -- i.e., each k.
+c
+ do 23 i=1,m
+ do 21 k=i1, i2
+ jstart = m*(ja(k)-1)
+ do 22 j=1,m
+ ij = (j-1)*m + i
+ if (val) ao(krow) = a(ij,k)
+ jao(krow) = jstart+j
+ krow = krow+1
+ 22 continue
+ 21 continue
+ irow = irow+1
+ iao(irow) = krow
+ 23 continue
+ 2 continue
+ return
+c-------------end-of-bsrcsr --------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrbsr (job,nrow,m,na,a,ja,ia,ao,jao,iao,iw,ierr)
+ implicit none
+ integer job,ierr,nrow,m,na,ia(nrow+1),ja(*),jao(na),iao(*),iw(*)
+ real*8 a(*),ao(na,*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Block Sparse Row
+c-----------------------------------------------------------------------
+c
+c This subroutine converts a matrix stored in a general compressed a,
+c ja, ia format into a a block sparse row format a(m,m,*),ja(*),ia(*).
+c See routine bsrcsr for more details on data structure for block
+c matrices.
+c
+c NOTES: 1) the initial matrix does not have to have a block structure.
+c zero padding is done for general sparse matrices.
+c 2) For most practical purposes, na should be the same as m*m.
+c
+c-----------------------------------------------------------------------
+c
+c In what follows nr=1+(nrow-1)/m = block-row dimension of output matrix
+c
+c on entry:
+c----------
+c
+c job = job indicator.
+c job = 0 -> only the pattern of output matrix is generated
+c job > 0 -> both pattern and values are generated.
+c job = -1 -> iao(1) will return the number of nonzero blocks,
+c in the output matrix. In this case jao(1:nr) is used as
+c workspace, ao is untouched, iao is untouched except iao(1)
+c
+c nrow = integer, the actual row dimension of the matrix.
+c
+c m = integer equal to the dimension of each block. m should be > 0.
+c
+c na = first dimension of array ao as declared in calling program.
+c na should be .ge. m*m.
+c
+c a, ja,
+c ia = input matrix stored in compressed sparse row format.
+c
+c on return:
+c-----------
+c
+c ao = real array containing the values of the matrix. For details
+c on the format see below. Each row of a contains the m x m
+c block matrix unpacked column-wise (this allows the user to
+c declare the array a as ao(m,m,*) on entry if desired). The
+c block rows are stored in sequence just as for the compressed
+c sparse row format. The block dimension of the output matrix
+c is nr = 1 + (nrow-1) / m.
+c
+c jao = integer array. containing the block-column indices of the
+c block-matrix. Each jao(k) is an integer between 1 and nr
+c containing the block column index of the block ao(*,k).
+c
+c iao = integer array of length nr+1. iao(i) points to the beginning
+c of block row number i in the arrays ao and jao. When job=-1
+c iao(1) contains the number of nonzero blocks of the output
+c matrix and the rest of iao is unused. This is useful for
+c determining the lengths of ao and jao.
+c
+c ierr = integer, error code.
+c 0 -- normal termination
+c 1 -- m is equal to zero
+c 2 -- NA too small to hold the blocks (should be .ge. m**2)
+c
+c Work arrays:
+c-------------
+c iw = integer work array of dimension nr = 1 + (nrow-1) / m
+c
+c NOTES:
+c-------
+c 1) this code is not in place.
+c 2) see routine bsrcsr for details on data sctructure for block
+c sparse row format.
+c
+c-----------------------------------------------------------------------
+c nr is the block-dimension of the output matrix.
+c
+ integer nr, m2, io, ko, ii, len, k, jpos, j, i, ij, jr, irow
+ logical vals
+c-----
+ ierr = 0
+ if (m*m .gt. na) ierr = 2
+ if (m .eq. 0) ierr = 1
+ if (ierr .ne. 0) return
+c-----------------------------------------------------------------------
+ vals = (job .gt. 0)
+ nr = 1 + (nrow-1) / m
+ m2 = m*m
+ ko = 1
+ io = 1
+ iao(io) = 1
+ len = 0
+c
+c iw determines structure of block-row (nonzero indicator)
+c
+ do j=1, nr
+ iw(j) = 0
+ enddo
+c
+c big loop -- leap by m rows each time.
+c
+ do ii=1, nrow, m
+ irow = 0
+c
+c go through next m rows -- make sure not to go beyond nrow.
+c
+ do while (ii+irow .le. nrow .and. irow .le. m-1)
+ do k=ia(ii+irow),ia(ii+irow+1)-1
+c
+c block column index = (scalar column index -1) / m + 1
+c
+ j = ja(k)-1
+ jr = j/m + 1
+ j = j - (jr-1)*m
+ jpos = iw(jr)
+ if (jpos .eq. 0) then
+c
+c create a new block
+c
+ iw(jr) = ko
+ jao(ko) = jr
+ if (vals) then
+c
+c initialize new block to zero -- then copy nonzero element
+c
+ do i=1, m2
+ ao(i,ko) = 0.0d0
+ enddo
+ ij = j*m + irow + 1
+ ao(ij,ko) = a(k)
+ endif
+ ko = ko+1
+ else
+c
+c copy column index and nonzero element
+c
+ jao(jpos) = jr
+ ij = j*m + irow + 1
+ if (vals) ao(ij,jpos) = a(k)
+ endif
+ enddo
+ irow = irow+1
+ enddo
+c
+c refresh iw
+c
+ do j = iao(io),ko-1
+ iw(jao(j)) = 0
+ enddo
+ if (job .eq. -1) then
+ len = len + ko-1
+ ko = 1
+ else
+ io = io+1
+ iao(io) = ko
+ endif
+ enddo
+ if (job .eq. -1) iao(1) = len
+c
+ return
+c--------------end-of-csrbsr--------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrbnd (n,a,ja,ia,job,abd,nabd,lowd,ml,mu,ierr)
+ real*8 a(*),abd(nabd,n)
+ integer ia(n+1),ja(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Banded (Linpack ) format.
+c-----------------------------------------------------------------------
+c this subroutine converts a general sparse matrix stored in
+c compressed sparse row format into the banded format. for the
+c banded format,the Linpack conventions are assumed (see below).
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer,the actual row dimension of the matrix.
+c
+c a,
+c ja,
+c ia = input matrix stored in compressed sparse row format.
+c
+c job = integer. if job=1 then the values of the lower bandwith ml
+c and the upper bandwidth mu are determined internally.
+c otherwise it is assumed that the values of ml and mu
+c are the correct bandwidths on input. See ml and mu below.
+c
+c nabd = integer. first dimension of array abd.
+c
+c lowd = integer. this should be set to the row number in abd where
+c the lowest diagonal (leftmost) of A is located.
+c lowd should be ( 1 .le. lowd .le. nabd).
+c if it is not known in advance what lowd should be
+c enter lowd = 0 and the default value lowd = ml+mu+1
+c will be chosen. Alternative: call routine getbwd from unary
+c first to detrermione ml and mu then define lowd accordingly.
+c (Note: the banded solvers in linpack use lowd=2*ml+mu+1. )
+c
+c ml = integer. equal to the bandwidth of the strict lower part of A
+c mu = integer. equal to the bandwidth of the strict upper part of A
+c thus the total bandwidth of A is ml+mu+1.
+c if ml+mu+1 is found to be larger than lowd then an error
+c flag is raised (unless lowd = 0). see ierr.
+c
+c note: ml and mu are assumed to have the correct bandwidth values
+c as defined above if job is set to zero on entry.
+c
+c on return:
+c-----------
+c
+c abd = real array of dimension abd(nabd,n).
+c on return contains the values of the matrix stored in
+c banded form. The j-th column of abd contains the elements
+c of the j-th column of the original matrix comprised in the
+c band ( i in (j-ml,j+mu) ) with the lowest diagonal at
+c the bottom row (row lowd). See details below for this format.
+c
+c ml = integer. equal to the bandwidth of the strict lower part of A
+c mu = integer. equal to the bandwidth of the strict upper part of A
+c if job=1 on entry then these two values are internally computed.
+c
+c lowd = integer. row number in abd where the lowest diagonal
+c (leftmost) of A is located on return. In case lowd = 0
+c on return, then it is defined to ml+mu+1 on return and the
+c lowd will contain this value on return. `
+c
+c ierr = integer. used for error messages. On return:
+c ierr .eq. 0 :means normal return
+c ierr .eq. -1 : means invalid value for lowd. (either .lt. 0
+c or larger than nabd).
+c ierr .eq. -2 : means that lowd is not large enough and as
+c result the matrix cannot be stored in array abd.
+c lowd should be at least ml+mu+1, where ml and mu are as
+c provided on output.
+c
+c----------------------------------------------------------------------*
+c Additional details on banded format. (this closely follows the *
+c format used in linpack. may be useful for converting a matrix into *
+c this storage format in order to use the linpack banded solvers). *
+c----------------------------------------------------------------------*
+c --- band storage format for matrix abd --- *
+c uses ml+mu+1 rows of abd(nabd,*) to store the diagonals of *
+c a in rows of abd starting from the lowest (sub)-diagonal which is *
+c stored in row number lowd of abd. the minimum number of rows needed *
+c in abd is ml+mu+1, i.e., the minimum value for lowd is ml+mu+1. the *
+c j-th column of abd contains the elements of the j-th column of a, *
+c from bottom to top: the element a(j+ml,j) is stored in position *
+c abd(lowd,j), then a(j+ml-1,j) in position abd(lowd-1,j) and so on. *
+c Generally, the element a(j+k,j) of original matrix a is stored in *
+c position abd(lowd+k-ml,j), for k=ml,ml-1,..,0,-1, -mu. *
+c The first dimension nabd of abd must be .ge. lowd *
+c *
+c example [from linpack ]: if the original matrix is *
+c *
+c 11 12 13 0 0 0 *
+c 21 22 23 24 0 0 *
+c 0 32 33 34 35 0 original banded matrix *
+c 0 0 43 44 45 46 *
+c 0 0 0 54 55 56 *
+c 0 0 0 0 65 66 *
+c *
+c then n = 6, ml = 1, mu = 2. lowd should be .ge. 4 (=ml+mu+1) and *
+c if lowd = 5 for example, abd should be: *
+c *
+c untouched --> x x x x x x *
+c * * 13 24 35 46 *
+c * 12 23 34 45 56 resulting abd matrix in banded *
+c 11 22 33 44 55 66 format *
+c row lowd--> 21 32 43 54 65 * *
+c *
+c * = not used *
+c
+*
+c----------------------------------------------------------------------*
+c first determine ml and mu.
+c-----------------------------------------------------------------------
+ ierr = 0
+c-----------
+ if (job .eq. 1) call getbwd(n,a,ja,ia,ml,mu)
+ m = ml+mu+1
+ if (lowd .eq. 0) lowd = m
+ if (m .gt. lowd) ierr = -2
+ if (lowd .gt. nabd .or. lowd .lt. 0) ierr = -1
+ if (ierr .lt. 0) return
+c------------
+ do 15 i=1,m
+ ii = lowd -i+1
+ do 10 j=1,n
+ abd(ii,j) = 0.0d0
+ 10 continue
+ 15 continue
+c---------------------------------------------------------------------
+ mdiag = lowd-ml
+ do 30 i=1,n
+ do 20 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ abd(i-j+mdiag,j) = a(k)
+ 20 continue
+ 30 continue
+ return
+c------------- end of csrbnd -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine bndcsr (n,abd,nabd,lowd,ml,mu,a,ja,ia,len,ierr)
+ real*8 a(*),abd(nabd,*), t
+ integer ia(n+1),ja(*)
+c-----------------------------------------------------------------------
+c Banded (Linpack ) format to Compressed Sparse Row format.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer,the actual row dimension of the matrix.
+c
+c nabd = first dimension of array abd.
+c
+c abd = real array containing the values of the matrix stored in
+c banded form. The j-th column of abd contains the elements
+c of the j-th column of the original matrix,comprised in the
+c band ( i in (j-ml,j+mu) ) with the lowest diagonal located
+c in row lowd (see below).
+c
+c lowd = integer. this should be set to the row number in abd where
+c the lowest diagonal (leftmost) of A is located.
+c lowd should be s.t. ( 1 .le. lowd .le. nabd).
+c The subroutines dgbco, ... of linpack use lowd=2*ml+mu+1.
+c
+c ml = integer. equal to the bandwidth of the strict lower part of A
+c mu = integer. equal to the bandwidth of the strict upper part of A
+c thus the total bandwidth of A is ml+mu+1.
+c if ml+mu+1 is found to be larger than nabd then an error
+c message is set. see ierr.
+c
+c len = integer. length of arrays a and ja. bndcsr will stop if the
+c length of the arrays a and ja is insufficient to store the
+c matrix. see ierr.
+c
+c on return:
+c-----------
+c a,
+c ja,
+c ia = input matrix stored in compressed sparse row format.
+c
+c lowd = if on entry lowd was zero then lowd is reset to the default
+c value ml+mu+l.
+c
+c ierr = integer. used for error message output.
+c ierr .eq. 0 :means normal return
+c ierr .eq. -1 : means invalid value for lowd.
+c ierr .gt. 0 : means that there was not enough storage in a and ja
+c for storing the ourput matrix. The process ran out of space
+c (as indicated by len) while trying to fill row number ierr.
+c This should give an idea of much more storage might be required.
+c Moreover, the first irow-1 rows are correctly filled.
+c
+c notes: the values in abd found to be equal to zero
+c ----- (actual test: if (abd(...) .eq. 0.0d0) are removed.
+c The resulting may not be identical to a csr matrix
+c originally transformed to a bnd format.
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+c-----------
+ if (lowd .gt. nabd .or. lowd .le. 0) then
+ ierr = -1
+ return
+ endif
+c-----------
+ ko = 1
+ ia(1) = 1
+ do 30 irow=1,n
+c-----------------------------------------------------------------------
+ i = lowd
+ do 20 j=irow-ml,irow+mu
+ if (j .le. 0 ) goto 19
+ if (j .gt. n) goto 21
+ t = abd(i,j)
+ if (t .eq. 0.0d0) goto 19
+ if (ko .gt. len) then
+ ierr = irow
+ return
+ endif
+ a(ko) = t
+ ja(ko) = j
+ ko = ko+1
+ 19 i = i-1
+ 20 continue
+c end for row irow
+ 21 ia(irow+1) = ko
+ 30 continue
+ return
+c------------- end of bndcsr -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrssk (n,imod,a,ja,ia,asky,isky,nzmax,ierr)
+ real*8 a(*),asky(nzmax)
+ integer n, imod, nzmax, ierr, ia(n+1), isky(n+1), ja(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Symmetric Skyline Format
+c or Symmetric Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine translates a compressed sparse row or a symmetric
+c sparse row format into a symmetric skyline format.
+c the input matrix can be in either compressed sparse row or the
+c symmetric sparse row format. The output matrix is in a symmetric
+c skyline format: a real array containing the (active portions) of the
+c rows in sequence and a pointer to the beginning of each row.
+c
+c This module is NOT in place.
+c-----------------------------------------------------------------------
+c Coded by Y. Saad, Oct 5, 1989. Revised Feb. 18, 1991.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = integer equal to the dimension of A.
+c imod = integer indicating the variant of skyline format wanted:
+c imod = 0 means the pointer isky points to the `zeroth'
+c element of the row, i.e., to the position of the diagonal
+c element of previous row (for i=1, isky(1)= 0)
+c imod = 1 means that itpr points to the beginning of the row.
+c imod = 2 means that isky points to the end of the row (diagonal
+c element)
+c
+c a = real array of size nna containing the nonzero elements
+c ja = integer array of size nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer of size n+1. ia(k) contains the position in a, ja of
+c the beginning of the k-th row.
+c nzmax = integer. must be set to the number of available locations
+c in the output array asky.
+c
+c on return:
+c----------
+c
+c asky = real array containing the values of the matrix stored in skyline
+c format. asky contains the sequence of active rows from
+c i=1, to n, an active row being the row of elemnts of
+c the matrix contained between the leftmost nonzero element
+c and the diagonal element.
+c isky = integer array of size n+1 containing the pointer array to
+c each row. The meaning of isky depends on the input value of
+c imod (see above).
+c ierr = integer. Error message. If the length of the
+c output array asky exceeds nzmax. ierr returns the minimum value
+c needed for nzmax. otherwise ierr=0 (normal return).
+c
+c Notes:
+c 1) This module is NOT in place.
+c 2) even when imod = 2, length of isky is n+1, not n.
+c
+c-----------------------------------------------------------------------
+c first determine individial bandwidths and pointers.
+c-----------------------------------------------------------------------
+ ierr = 0
+ isky(1) = 0
+ do 3 i=1,n
+ ml = 0
+ do 31 k=ia(i),ia(i+1)-1
+ ml = max(ml,i-ja(k)+1)
+ 31 continue
+ isky(i+1) = isky(i)+ml
+ 3 continue
+c
+c test if there is enough space asky to do the copying.
+c
+ nnz = isky(n+1)
+ if (nnz .gt. nzmax) then
+ ierr = nnz
+ return
+ endif
+c
+c fill asky with zeros.
+c
+ do 1 k=1, nnz
+ asky(k) = 0.0d0
+ 1 continue
+c
+c copy nonzero elements.
+c
+ do 4 i=1,n
+ kend = isky(i+1)
+ do 41 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ if (j .le. i) asky(kend+j-i) = a(k)
+ 41 continue
+ 4 continue
+c
+c modify pointer according to imod if necessary.
+c
+ if (imod .eq. 0) return
+ if (imod .eq. 1) then
+ do 50 k=1, n+1
+ isky(k) = isky(k)+1
+ 50 continue
+ endif
+ if (imod .eq. 2) then
+ do 60 k=1, n
+ isky(k) = isky(k+1)
+ 60 continue
+ endif
+c
+ return
+c------------- end of csrssk -------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine sskssr (n,imod,asky,isky,ao,jao,iao,nzmax,ierr)
+ real*8 asky(*),ao(nzmax)
+ integer n, imod,nzmax,ierr, isky(n+1),iao(n+1),jao(nzmax)
+c-----------------------------------------------------------------------
+c Symmetric Skyline Format to Symmetric Sparse Row format.
+c-----------------------------------------------------------------------
+c tests for exact zeros in skyline matrix (and ignores them in
+c output matrix). In place routine (a, isky :: ao, iao)
+c-----------------------------------------------------------------------
+c this subroutine translates a symmetric skyline format into a
+c symmetric sparse row format. Each element is tested to see if it is
+c a zero element. Only the actual nonzero elements are retained. Note
+c that the test used is simple and does take into account the smallness
+c of a value. the subroutine filter (see unary module) can be used
+c for this purpose.
+c-----------------------------------------------------------------------
+c Coded by Y. Saad, Oct 5, 1989. Revised Feb 18, 1991./
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = integer equal to the dimension of A.
+c imod = integer indicating the variant of skyline format used:
+c imod = 0 means the pointer iao points to the `zeroth'
+c element of the row, i.e., to the position of the diagonal
+c element of previous row (for i=1, iao(1)= 0)
+c imod = 1 means that itpr points to the beginning of the row.
+c imod = 2 means that iao points to the end of the row
+c (diagonal element)
+c asky = real array containing the values of the matrix. asky contains
+c the sequence of active rows from i=1, to n, an active row
+c being the row of elemnts of the matrix contained between the
+c leftmost nonzero element and the diagonal element.
+c isky = integer array of size n+1 containing the pointer array to
+c each row. isky (k) contains the address of the beginning of the
+c k-th active row in the array asky.
+c nzmax = integer. equal to the number of available locations in the
+c output array ao.
+c
+c on return:
+c ----------
+c ao = real array of size nna containing the nonzero elements
+c jao = integer array of size nnz containing the column positions
+c of the corresponding elements in a.
+c iao = integer of size n+1. iao(k) contains the position in a, ja of
+c the beginning of the k-th row.
+c ierr = integer. Serving as error message. If the length of the
+c output arrays ao, jao exceeds nzmax then ierr returns
+c the row number where the algorithm stopped: rows
+c i, to ierr-1 have been processed succesfully.
+c ierr = 0 means normal return.
+c ierr = -1 : illegal value for imod
+c Notes:
+c-------
+c This module is in place: ao and iao can be the same as asky, and isky.
+c-----------------------------------------------------------------------
+c local variables
+ integer next, kend, kstart, i, j
+ ierr = 0
+c
+c check for validity of imod
+c
+ if (imod.ne.0 .and. imod.ne.1 .and. imod .ne. 2) then
+ ierr =-1
+ return
+ endif
+c
+c next = pointer to next available position in output matrix
+c kend = pointer to end of current row in skyline matrix.
+c
+ next = 1
+c
+c set kend = start position -1 in skyline matrix.
+c
+ kend = 0
+ if (imod .eq. 1) kend = isky(1)-1
+ if (imod .eq. 0) kend = isky(1)
+c
+c loop through all rows
+c
+ do 50 i=1,n
+c
+c save value of pointer to ith row in output matrix
+c
+ iao(i) = next
+c
+c get beginnning and end of skyline row
+c
+ kstart = kend+1
+ if (imod .eq. 0) kend = isky(i+1)
+ if (imod .eq. 1) kend = isky(i+1)-1
+ if (imod .eq. 2) kend = isky(i)
+c
+c copy element into output matrix unless it is a zero element.
+c
+ do 40 k=kstart,kend
+ if (asky(k) .eq. 0.0d0) goto 40
+ j = i-(kend-k)
+ jao(next) = j
+ ao(next) = asky(k)
+ next=next+1
+ if (next .gt. nzmax+1) then
+ ierr = i
+ return
+ endif
+ 40 continue
+ 50 continue
+ iao(n+1) = next
+ return
+c-------------end-of-sskssr --------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrjad (nrow, a, ja, ia, idiag, iperm, ao, jao, iao)
+ integer ja(*), jao(*), ia(nrow+1), iperm(nrow), iao(nrow)
+ real*8 a(*), ao(*)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to JAgged Diagonal storage.
+c-----------------------------------------------------------------------
+c this subroutine converts matrix stored in the compressed sparse
+c row format to the jagged diagonal format. The data structure
+c for the JAD (Jagged Diagonal storage) is as follows. The rows of
+c the matrix are (implicitly) permuted so that their lengths are in
+c decreasing order. The real entries ao(*) and their column indices
+c jao(*) are stored in succession. The number of such diagonals is idiag.
+c the lengths of each of these diagonals is stored in iao(*).
+c For more details see [E. Anderson and Y. Saad,
+c ``Solving sparse triangular systems on parallel computers'' in
+c Inter. J. of High Speed Computing, Vol 1, pp. 73-96 (1989).]
+c or [Y. Saad, ``Krylov Subspace Methods on Supercomputers''
+c SIAM J. on Stat. Scient. Comput., volume 10, pp. 1200-1232 (1989).]
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c nrow = row dimension of the matrix A.
+c
+c a,
+c ia,
+c ja = input matrix in compressed sparse row format.
+c
+c on return:
+c----------
+c
+c idiag = integer. The number of jagged diagonals in the matrix.
+c
+c iperm = integer array of length nrow containing the permutation
+c of the rows that leads to a decreasing order of the
+c number of nonzero elements.
+c
+c ao = real array containing the values of the matrix A in
+c jagged diagonal storage. The j-diagonals are stored
+c in ao in sequence.
+c
+c jao = integer array containing the column indices of the
+c entries in ao.
+c
+c iao = integer array containing pointers to the beginning
+c of each j-diagonal in ao, jao. iao is also used as
+c a work array and it should be of length n at least.
+c
+c-----------------------------------------------------------------------
+c ---- define initial iperm and get lengths of each row
+c ---- jao is used a work vector to store tehse lengths
+c
+ idiag = 0
+ ilo = nrow
+ do 10 j=1, nrow
+ iperm(j) = j
+ len = ia(j+1) - ia(j)
+ ilo = min(ilo,len)
+ idiag = max(idiag,len)
+ jao(j) = len
+ 10 continue
+c
+c call sorter to get permutation. use iao as work array.
+c
+ call dcsort (jao, nrow, iao, iperm, ilo, idiag)
+c
+c define output data structure. first lengths of j-diagonals
+c
+ do 20 j=1, nrow
+ iao(j) = 0
+ 20 continue
+ do 40 k=1, nrow
+ len = jao(iperm(k))
+ do 30 i=1,len
+ iao(i) = iao(i)+1
+ 30 continue
+ 40 continue
+c
+c get the output matrix itself
+c
+ k1 = 1
+ k0 = k1
+ do 60 jj=1, idiag
+ len = iao(jj)
+ do 50 k=1,len
+ i = ia(iperm(k))+jj-1
+ ao(k1) = a(i)
+ jao(k1) = ja(i)
+ k1 = k1+1
+ 50 continue
+ iao(jj) = k0
+ k0 = k1
+ 60 continue
+ iao(idiag+1) = k1
+ return
+c----------end-of-csrjad------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine jadcsr (nrow, idiag, a, ja, ia, iperm, ao, jao, iao)
+ integer ja(*), jao(*), ia(idiag+1), iperm(nrow), iao(nrow+1)
+ real*8 a(*), ao(*)
+c-----------------------------------------------------------------------
+c Jagged Diagonal Storage to Compressed Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in the jagged diagonal format
+c to the compressed sparse row format.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c nrow = integer. the row dimension of the matrix A.
+c
+c idiag = integer. The number of jagged diagonals in the data
+c structure a, ja, ia.
+c
+c a,
+c ja,
+c ia = input matrix in jagged diagonal format.
+c
+c iperm = permutation of the rows used to obtain the JAD ordering.
+c
+c on return:
+c----------
+c
+c ao, jao,
+c iao = matrix in CSR format.
+c-----------------------------------------------------------------------
+c determine first the pointers for output matrix. Go through the
+c structure once:
+c
+ do 137 j=1,nrow
+ jao(j) = 0
+ 137 continue
+c
+c compute the lengths of each row of output matrix -
+c
+ do 140 i=1, idiag
+ len = ia(i+1)-ia(i)
+ do 138 k=1,len
+ jao(iperm(k)) = jao(iperm(k))+1
+ 138 continue
+ 140 continue
+c
+c remember to permute
+c
+ kpos = 1
+ iao(1) = 1
+ do 141 i=1, nrow
+ kpos = kpos+jao(i)
+ iao(i+1) = kpos
+ 141 continue
+c
+c copy elemnts one at a time.
+c
+ do 200 jj = 1, idiag
+ k1 = ia(jj)-1
+ len = ia(jj+1)-k1-1
+ do 160 k=1,len
+ kpos = iao(iperm(k))
+ ao(kpos) = a(k1+k)
+ jao(kpos) = ja(k1+k)
+ iao(iperm(k)) = kpos+1
+ 160 continue
+ 200 continue
+c
+c rewind pointers
+c
+ do 5 j=nrow,1,-1
+ iao(j+1) = iao(j)
+ 5 continue
+ iao(1) = 1
+ return
+c----------end-of-jadcsr------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+ subroutine dcsort(ival, n, icnt, index, ilo, ihi)
+c-----------------------------------------------------------------------
+c Specifications for arguments:
+c ----------------------------
+ integer n, ilo, ihi, ival(n), icnt(ilo:ihi), index(n)
+c-----------------------------------------------------------------------
+c This routine computes a permutation which, when applied to the
+c input vector ival, sorts the integers in ival in descending
+c order. The permutation is represented by the vector index. The
+c permuted ival can be interpreted as follows:
+c ival(index(i-1)) .ge. ival(index(i)) .ge. ival(index(i+1))
+c
+c A specialized sort, the distribution counting sort, is used
+c which takes advantage of the knowledge that
+c 1) The values are in the (small) range [ ilo, ihi ]
+c 2) Values are likely to be repeated often
+c
+c contributed to SPARSKIT by Mike Heroux. (Cray Research)
+c ---------------------------------------
+c-----------------------------------------------------------------------
+c Usage:
+c------
+c call dcsort( ival, n, icnt, index, ilo, ihi )
+c
+c Arguments:
+c-----------
+c ival integer array (input)
+c On entry, ia is an n dimensional array that contains
+c the values to be sorted. ival is unchanged on exit.
+c
+c n integer (input)
+c On entry, n is the number of elements in ival and index.
+c
+c icnt integer (work)
+c On entry, is an integer work vector of length
+c (ihi - ilo + 1).
+c
+c index integer array (output)
+c On exit, index is an n-length integer vector containing
+c the permutation which sorts the vector ival.
+c
+c ilo integer (input)
+c On entry, ilo is .le. to the minimum value in ival.
+c
+c ihi integer (input)
+c On entry, ihi is .ge. to the maximum value in ival.
+c
+c Remarks:
+c---------
+c The permutation is NOT applied to the vector ival.
+c
+c----------------------------------------------------------------
+c
+c Local variables:
+c Other integer values are temporary indices.
+c
+c Author:
+c--------
+c Michael Heroux
+c Sandra Carney
+c Mathematical Software Research Group
+c Cray Research, Inc.
+c
+c References:
+c Knuth, Donald E., "The Art of Computer Programming, Volume 3:
+c Sorting and Searching," Addison-Wesley, Reading, Massachusetts,
+c 1973, pp. 78-79.
+c
+c Revision history:
+c 05/09/90: Original implementation. A variation of the
+c Distribution Counting Sort recommended by
+c Sandra Carney. (Mike Heroux)
+c
+c-----------------------------------------------------------------
+c ----------------------------------
+c Specifications for local variables
+c ----------------------------------
+ integer i, j, ivalj
+c
+c --------------------------
+c First executable statement
+c --------------------------
+ do 10 i = ilo, ihi
+ icnt(i) = 0
+ 10 continue
+c
+ do 20 i = 1, n
+ icnt(ival(i)) = icnt(ival(i)) + 1
+ 20 continue
+c
+ do 30 i = ihi-1,ilo,-1
+ icnt(i) = icnt(i) + icnt(i+1)
+ 30 continue
+c
+ do 40 j = n, 1, -1
+ ivalj = ival(j)
+ index(icnt(ivalj)) = j
+ icnt(ivalj) = icnt(ivalj) - 1
+ 40 continue
+ return
+ end
+c-------end-of-dcsort---------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine cooell(job,n,nnz,a,ja,ia,ao,jao,lda,ncmax,nc,ierr)
+ implicit none
+ integer job,n,nnz,lda,ncmax,nc,ierr
+ integer ja(nnz),ia(nnz),jao(lda,ncmax)
+ real*8 a(nnz),ao(lda,ncmax)
+c-----------------------------------------------------------------------
+c COOrdinate format to ELLpack format
+c-----------------------------------------------------------------------
+c On entry:
+c job -- 0 if only pattern is to be processed(AO is not touched)
+c n -- number of rows in the matrix
+c a,ja,ia -- input matix in COO format
+c lda -- leading dimension of array AO and JAO
+c ncmax -- size of the second dimension of array AO and JAO
+c
+c On exit:
+c ao,jao -- the matrix in ELL format
+c nc -- maximum number of nonzeros per row
+c ierr -- 0 if convertion succeeded
+c -1 if LDA < N
+c nc if NC > ncmax
+c
+c NOTE: the last column of JAO is used as work space!!
+c-----------------------------------------------------------------------
+ integer i,j,k,ip
+ real*8 zero
+ logical copyval
+ parameter (zero=0.0D0)
+c .. first executable statement ..
+ copyval = (job.ne.0)
+ if (lda .lt. n) then
+ ierr = -1
+ return
+ endif
+c .. use the last column of JAO as workspace
+c .. initialize the work space
+ do i = 1, n
+ jao(i,ncmax) = 0
+ enddo
+ nc = 0
+c .. go through ia and ja to find out number nonzero per row
+ do k = 1, nnz
+ i = ia(k)
+ jao(i,ncmax) = jao(i,ncmax) + 1
+ enddo
+c .. maximum number of nonzero per row
+ nc = 0
+ do i = 1, n
+ if (nc.lt.jao(i,ncmax)) nc = jao(i,ncmax)
+ jao(i,ncmax) = 0
+ enddo
+c .. if nc > ncmax retrun now
+ if (nc.gt.ncmax) then
+ ierr = nc
+ return
+ endif
+c .. go through ia and ja to copy the matrix to AO and JAO
+ do k = 1, nnz
+ i = ia(k)
+ j = ja(k)
+ jao(i,ncmax) = jao(i,ncmax) + 1
+ ip = jao(i,ncmax)
+ if (ip.gt.nc) nc = ip
+ if (copyval) ao(i,ip) = a(k)
+ jao(i,ip) = j
+ enddo
+c .. fill the unspecified elements of AO and JAO with zero diagonals
+ do i = 1, n
+ do j = ia(i+1)-ia(i)+1, nc
+ jao(i,j)=i
+ if(copyval) ao(i,j) = zero
+ enddo
+ enddo
+ ierr = 0
+c
+ return
+ end
+c-----end-of-cooell-----------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine xcooell(n,nnz,a,ja,ia,ac,jac,nac,ner,ncmax,ierr)
+C-----------------------------------------------------------------------
+C coordinate format to ellpack format.
+C-----------------------------------------------------------------------
+C
+C DATE WRITTEN: June 4, 1989.
+C
+C PURPOSE
+C -------
+C This subroutine takes a sparse matrix in coordinate format and
+C converts it into the Ellpack-Itpack storage.
+C
+C Example:
+C -------
+C ( 11 0 13 0 0 0 )
+C | 21 22 0 24 0 0 |
+C | 0 32 33 0 35 0 |
+C A = | 0 0 43 44 0 46 |
+C | 51 0 0 54 55 0 |
+C ( 61 62 0 0 65 66 )
+C
+C Coordinate storage scheme:
+C
+C A = (11,22,33,44,55,66,13,21,24,32,35,43,46,51,54,61,62,65)
+C IA = (1, 2, 3, 4, 5, 6, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6 )
+C JA = ( 1, 2, 3, 4, 5, 6, 3, 1, 4, 2, 5, 3, 6, 1, 4, 1, 2, 5)
+C
+C Ellpack-Itpack storage scheme:
+C
+C ( 11 13 0 0 ) ( 1 3 * * )
+C | 22 21 24 0 | | 2 1 4 * |
+C AC = | 33 32 35 0 | JAC = | 3 2 5 * |
+C | 44 43 46 0 | | 4 3 6 * |
+C | 55 51 54 0 | | 5 1 4 * |
+C ( 66 61 62 65 ) ( 6 1 2 5 )
+C
+C Note: * means that you can store values from 1 to 6 (1 to n, where
+C n is the order of the matrix) in that position in the array.
+C
+C Contributed by:
+C ---------------
+C Ernest E. Rothman
+C Cornell Thoery Center/Cornell National Supercomputer Facility
+C e-mail address: BITNET: EER@CORNELLF.BITNET
+C INTERNET: eer@cornellf.tn.cornell.edu
+C
+C checked and modified 04/13/90 Y.Saad.
+C
+C REFERENCES
+C ----------
+C Kincaid, D. R.; Oppe, T. C.; Respess, J. R.; Young, D. M. 1984.
+C ITPACKV 2C User's Guide, CNA-191. Center for Numerical Analysis,
+C University of Texas at Austin.
+C
+C "Engineering and Scientific Subroutine Library; Guide and
+C Reference; Release 3 (SC23-0184-3). Pp. 79-86.
+C
+C-----------------------------------------------------------------------
+C
+C INPUT PARAMETERS
+C ----------------
+C N - Integer. The size of the square matrix.
+C
+C NNZ - Integer. Must be greater than or equal to the number of
+C nonzero elements in the sparse matrix. Dimension of A, IA
+C and JA.
+C
+C NCA - Integer. First dimension of output arrays ca and jac.
+C
+C A(NNZ) - Real array. (Double precision)
+C Stored entries of the sparse matrix A.
+C NNZ is the number of nonzeros.
+C
+C IA(NNZ) - Integer array.
+C Pointers to specify rows for the stored nonzero entries
+C in A.
+C
+C JA(NNZ) - Integer array.
+C Pointers to specify columns for the stored nonzero
+C entries in A.
+C
+C NER - Integer. Must be set greater than or equal to the maximum
+C number of nonzeros in any row of the sparse matrix.
+C
+C OUTPUT PARAMETERS
+C -----------------
+C AC(NAC,*) - Real array. (Double precision)
+C Stored entries of the sparse matrix A in compressed
+C storage mode.
+C
+C JAC(NAC,*) - Integer array.
+C Contains the column numbers of the sparse matrix
+C elements stored in the corresponding positions in
+C array AC.
+C
+C NCMAX - Integer. Equals the maximum number of nonzeros in any
+C row of the sparse matrix.
+C
+C IERR - Error parameter is returned as zero on successful
+C execution of the subroutin<e.
+C Error diagnostics are given by means of positive values
+C of this parameter as follows:
+C
+C IERR = -1 - NER is too small and should be set equal
+C to NCMAX. The array AC may not be large
+C enough to accomodate all the non-zeros of
+C of the sparse matrix.
+C IERR = 1 - The array AC has a zero column. (Warning)
+C IERR = 2 - The array AC has a zero row. (Warning)
+C
+C---------------------------------------------------------------------
+ real*8 a(nnz), ac(nac,ner)
+ integer ja(nnz), ia(nnz), jac(nac,ner), ierr, ncmax, icount
+c
+c- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c Initial error parameter to zero:
+c
+ ierr = 0
+c
+c- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c Initial output arrays to zero:
+c
+ do 4 in = 1,ner
+ do 4 innz =1,n
+ jac(innz,in) = n
+ ac(innz,in) = 0.0d0
+ 4 continue
+c
+c- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c
+c Assign nonzero elements of the sparse matrix (stored in the one
+c dimensional array A to the two dimensional array AC.
+c Also, assign the correct values with information about their
+c column indices to the two dimensional array KA. And at the same
+c time count the number of nonzeros in each row so that the
+c parameter NCMAX equals the maximum number of nonzeros in any row
+c of the sparse matrix.
+c
+ ncmax = 1
+ do 10 is = 1,n
+ k = 0
+ do 30 ii = 1,nnz
+ if(ia(ii).eq.is)then
+ k = k + 1
+ if (k .le. ner) then
+ ac(is,k) = a(ii)
+ jac(is,k) = ja(ii)
+ endif
+ endif
+ 30 continue
+ if (k.ge.ncmax) ncmax = k
+ 10 continue
+c- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c
+c Perform some simple error checks:
+c
+check maximum number of nonzeros in each row:
+ if (ncmax.eq.ner) ierr = 0
+ if (ncmax.gt.ner) then
+ ierr = -1
+ return
+ endif
+c
+check if there are any zero columns in AC:
+c
+ do 45 in = 1,ncmax
+ icount = 0
+ do 44 inn =1,n
+ if (ac(inn,in).ne.0.0d0) icount = 1
+ 44 continue
+ if (icount.eq.0) then
+ ierr = 1
+ return
+ endif
+ 45 continue
+c
+check if there are any zero rows in AC:
+c
+ do 55 inn = 1,n
+ icount = 0
+ do 54 in =1,ncmax
+ if (ac(inn,in).ne.0.0d0) icount = 1
+ 54 continue
+ if (icount.eq.0) then
+ ierr = 2
+ return
+ endif
+ 55 continue
+ return
+c------------- end of xcooell -------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csruss (nrow,a,ja,ia,diag,al,jal,ial,au,jau,iau)
+ real*8 a(*),al(*),diag(*),au(*)
+ integer nrow,ja(*),ia(nrow+1),jal(*),ial(nrow+1),jau(*),
+ * iau(nrow+1)
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Unsymmetric Sparse Skyline format
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in csr format into a nonsym.
+c sparse skyline format. This latter format does not assume
+c that the matrix has a symmetric pattern and consists of the following
+c * the diagonal of A stored separately in diag(*);
+c * The strict lower part of A is stored in CSR format in al,jal,ial
+c * The strict upper part is stored in CSC format in au,jau,iau.
+c-----------------------------------------------------------------------
+c On entry
+c---------
+c nrow = dimension of the matrix a.
+c a = real array containing the nonzero values of the matrix
+c stored rowwise.
+c ja = column indices of the values in array a
+c ia = integer array of length n+1 containing the pointers to
+c beginning of each row in arrays a, ja.
+c
+c On return
+c----------
+c diag = array containing the diagonal entries of A
+c al,jal,ial = matrix in CSR format storing the strict lower
+c trangular part of A.
+c au,jau,iau = matrix in CSC format storing the strict upper
+c triangular part of A.
+c-----------------------------------------------------------------------
+ integer i, j, k, kl, ku
+c
+c determine U's data structure first
+c
+ do 1 i=1,nrow+1
+ iau(i) = 0
+ 1 continue
+ do 3 i=1, nrow
+ do 2 k=ia(i), ia(i+1)-1
+ j = ja(k)
+ if (j .gt. i) iau(j+1) = iau(j+1)+1
+ 2 continue
+ 3 continue
+c
+c compute pointers from lengths
+c
+ iau(1) = 1
+ do 4 i=1,nrow
+ iau(i+1) = iau(i)+iau(i+1)
+ ial(i+1) = ial(i)+ial(i+1)
+ 4 continue
+c
+c now do the extractions. scan all rows.
+c
+ kl = 1
+ ial(1) = kl
+ do 7 i=1, nrow
+c
+c scan all elements in a row
+c
+ do 71 k = ia(i), ia(i+1)-1
+ j = ja(k)
+c
+c if in upper part, store in row j (of transp(U) )
+c
+ if (j .gt. i) then
+ ku = iau(j)
+ au(ku) = a(k)
+ jau(ku) = i
+ iau(j) = ku+1
+ elseif (j .eq. i) then
+ diag(i) = a(k)
+ elseif (j .lt. i) then
+ al(kl) = a(k)
+ jal(kl) = j
+ kl = kl+1
+ endif
+ 71 continue
+ ial(i+1) = kl
+ 7 continue
+c
+c readjust iau
+c
+ do 8 i=nrow,1,-1
+ iau(i+1) = iau(i)
+ 8 continue
+ iau(1) = 1
+c--------------- end-of-csruss -----------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine usscsr (nrow,a,ja,ia,diag,al,jal,ial,au,jau,iau)
+ real*8 a(*),al(*),diag(*),au(*)
+ integer ja(*),ia(nrow+1),jal(*),ial(nrow+1),jau(*),iau(nrow+1)
+c-----------------------------------------------------------------------
+c Unsymmetric Sparse Skyline format to Compressed Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in nonsymmetric sparse
+c skyline format into csr format. The sparse skyline format is
+c described in routine csruss.
+c-----------------------------------------------------------------------
+c-----------------------------------------------------------------------
+c On entry
+c-----------------------------------------------------------------------
+c nrow = dimension of the matrix a.
+c diag = array containing the diagonal entries of A
+c al,jal,ial = matrix in CSR format storing the strict lower
+c trangular part of A.
+c au,jau,iau = matrix in CSC format storing the strict upper
+c trangular part of A.
+c On return
+c ---------
+c a = real array containing the nonzero values of the matrix
+c stored rowwise.
+c ja = column indices of the values in array a
+c ia = integer array of length n+1 containing the pointers to
+c beginning of each row in arrays a, ja.
+c
+c-----------------------------------------------------------------------
+c
+c count elements in lower part + diagonal
+c
+ do 1 i=1, nrow
+ ia(i+1) = ial(i+1)-ial(i)+1
+ 1 continue
+c
+c count elements in upper part
+c
+ do 3 i=1, nrow
+ do 2 k=iau(i), iau(i+1)-1
+ j = jau(k)
+ ia(j+1) = ia(j+1)+1
+ 2 continue
+ 3 continue
+c---------- compute pointers from lengths ------------------------------
+ ia(1) = 1
+ do 4 i=1,nrow
+ ia(i+1) = ia(i)+ia(i+1)
+ 4 continue
+c
+c copy lower part + diagonal
+c
+ do 6 i=1, nrow
+ ka = ia(i)
+ do 5 k=ial(i), ial(i+1)-1
+ a(ka) = al(k)
+ ja(ka) = jal(k)
+ ka = ka+1
+ 5 continue
+ a(ka) = diag(i)
+ ja(ka) = i
+ ia(i) = ka+1
+ 6 continue
+c
+c copy upper part
+c
+ do 8 i=1, nrow
+ do 7 k=iau(i), iau(i+1)-1
+c
+c row number
+c
+ jak = jau(k)
+c
+c where element goes
+c
+ ka = ia(jak)
+ a(ka) = au(k)
+ ja(ka) = i
+ ia(jak) = ka+1
+ 7 continue
+ 8 continue
+c
+c readjust ia
+c
+ do 9 i=nrow,1,-1
+ ia(i+1) = ia(i)
+ 9 continue
+ ia(1) = 1
+c----------end-of-usscsr------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrsss (nrow,a,ja,ia,sorted,diag,al,jal,ial,au)
+ real*8 a(*),al(*),diag(*),au(*)
+ integer ja(*),ia(nrow+1),jal(*),ial(nrow+1)
+ logical sorted
+c-----------------------------------------------------------------------
+c Compressed Sparse Row to Symmetric Sparse Skyline format
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in csr format into the
+c Symmetric sparse skyline format. This latter format assumes that
+c that the matrix has a symmetric pattern. It consists of the following
+c * the diagonal of A stored separately in diag(*);
+c * The strict lower part of A is stored in csr format in al,jal,ial
+c * The values only of strict upper part as stored in csc format in au.
+c-----------------------------------------------------------------------
+c On entry
+c-----------
+c nrow = dimension of the matrix a.
+c a = real array containing the nonzero values of the matrix
+c stored rowwise.
+c ja = column indices of the values in array a
+c ia = integer array of length n+1 containing the pointers to
+c beginning of each row in arrays a, ja.
+c sorted= a logical indicating whether or not the elements in a,ja,ia
+c are sorted.
+c
+c On return
+c ---------
+c diag = array containing the diagonal entries of A
+c al,jal,ial = matrix in csr format storing the strict lower
+c trangular part of A.
+c au = values of the strict upper trangular part of A, column wise.
+c-----------------------------------------------------------------------
+c
+c extract lower part and diagonal.
+c
+ kl = 1
+ ial(1) = kl
+ do 7 i=1, nrow
+c
+c scan all elements in a row
+c
+ do 71 k = ia(i), ia(i+1)-1
+ jak = ja(k)
+ if (jak .eq. i) then
+ diag(i) = a(k)
+ elseif (jak .lt. i) then
+ al(kl) = a(k)
+ jal(kl) = jak
+ kl = kl+1
+ endif
+ 71 continue
+ ial(i+1) = kl
+ 7 continue
+c
+c sort if not sorted
+c
+ if (.not. sorted) then
+c%%%%%---- incompatible arg list!
+ call csort (nrow, al, jal, ial, au, .true.)
+ endif
+c
+c copy u
+c
+ do 8 i=1, nrow
+c
+c scan all elements in a row
+c
+ do 81 k = ia(i), ia(i+1)-1
+ jak = ja(k)
+ if (jak .gt. i) then
+ ku = ial(jak)
+ au(ku) = a(k)
+ ial(jak) = ku+1
+ endif
+ 81 continue
+ 8 continue
+c
+c readjust ial
+c
+ do 9 i=nrow,1,-1
+ ial(i+1) = ial(i)
+ 9 continue
+ ial(1) = 1
+c--------------- end-of-csrsss -----------------------------------------
+c-----------------------------------------------------------------------
+ end
+c
+ subroutine ssscsr (nrow,a,ja,ia,diag,al,jal,ial,au)
+ real*8 a(*),al(*),diag(*),au(*)
+ integer ja(*),ia(nrow+1),jal(*),ial(nrow+1)
+c-----------------------------------------------------------------------
+c Unsymmetric Sparse Skyline format to Compressed Sparse Row
+c-----------------------------------------------------------------------
+c this subroutine converts a matrix stored in nonsymmetric sparse
+c skyline format into csr format. The sparse skyline format is
+c described in routine csruss.
+c-----------------------------------------------------------------------
+c On entry
+c---------
+c diag = array containing the diagonal entries of A
+c al,jal,ial = matrix in csr format storing the strict lower
+c trangular part of A.
+c au = values of strict upper part.
+c
+c On return
+c ---------
+c nrow = dimension of the matrix a.
+c a = real array containing the nonzero values of the matrix
+c stored rowwise.
+c ja = column indices of the values in array a
+c ia = integer array of length n+1 containing the pointers to
+c beginning of each row in arrays a, ja.
+c
+c-----------------------------------------------------------------------
+c
+c count elements in lower part + diagonal
+c
+ do 1 i=1, nrow
+ ia(i+1) = ial(i+1)-ial(i)+1
+ 1 continue
+c
+c count elements in upper part
+c
+ do 3 i=1, nrow
+ do 2 k=ial(i), ial(i+1)-1
+ j = jal(k)
+ ia(j+1) = ia(j+1)+1
+ 2 continue
+ 3 continue
+c---------- compute pointers from lengths ------------------------------
+ ia(1) = 1
+ do 4 i=1,nrow
+ ia(i+1) = ia(i)+ia(i+1)
+ 4 continue
+c
+c copy lower part + diagonal
+c
+ do 6 i=1, nrow
+ ka = ia(i)
+ do 5 k=ial(i), ial(i+1)-1
+ a(ka) = al(k)
+ ja(ka) = jal(k)
+ ka = ka+1
+ 5 continue
+ a(ka) = diag(i)
+ ia(i) = ka+1
+ 6 continue
+c
+c copy upper part
+c
+ do 8 i=1, nrow
+ do 7 k=ial(i), ial(i+1)-1
+c
+c row number
+c
+ jak = jal(k)
+c
+c where element goes
+c
+ ka = ia(jak)
+ a(ka) = au(k)
+ ja(ka) = i
+ ia(jak) = ka+1
+ 7 continue
+ 8 continue
+c
+c readjust ia
+c
+ do 9 i=nrow,1,-1
+ ia(i+1) = ia(i)
+ 9 continue
+ ia(1) = 1
+c----------end-of-ssscsr------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrvbr(n,ia,ja,a,nr,nc,kvstr,kvstc,ib,jb,kb,
+ & b, job, iwk, nkmax, nzmax, ierr )
+c-----------------------------------------------------------------------
+ integer n, ia(n+1), ja(*), nr, nc, ib(*), jb(nkmax-1), kb(nkmax)
+ integer kvstr(*), kvstc(*), job, iwk(*), nkmax, nzmax, ierr
+ real*8 a(*), b(nzmax)
+c-----------------------------------------------------------------------
+c Converts compressed sparse row to variable block row format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c n = number of matrix rows
+c ia,ja,a = input matrix in CSR format
+c
+c job = job indicator.
+c If job=0, kvstr and kvstc are used as supplied.
+c If job=1, kvstr and kvstc are determined by the code.
+c If job=2, a conformal row/col partitioning is found and
+c returned in both kvstr and kvstc. In the latter two cases,
+c an optimized algorithm can be used to perform the
+c conversion because all blocks are full.
+c
+c nkmax = size of supplied jb and kb arrays
+c nzmax = size of supplied b array
+c
+c If job=0 then the following are input:
+c nr,nc = matrix block row and block column dimension
+c kvstr = first row number for each block row
+c kvstc = first column number for each block column.
+c (kvstr and kvstc may be the same array)
+c
+c On return:
+c---------------
+c
+c ib,jb,kb,b = output matrix in VBR format
+c
+c ierr = error message
+c ierr = 0 means normal return
+c ierr = 1 out of space in jb and/or kb arrays
+c ierr = 2 out of space in b array
+c ierr = 3 nonsquare matrix used with job=2
+c
+c If job=1,2 then the following are output:
+c nr,nc = matrix block row and block column dimension
+c kvstr = first row number for each block row
+c kvstc = first column number for each block column
+c If job=2, then kvstr and kvstc contain the same info.
+c
+c Work space:
+c----------------
+c iwk(1:ncol) = inverse kvstc array. If job=1,2 then we also need:
+c iwk(ncol+1:ncol+nr) = used to help determine sparsity of each block row.
+c The workspace is not assumed to be initialized to zero, nor is it
+c left that way.
+c
+c Algorithms:
+c----------------
+c There are two conversion codes in this routine. The first assumes
+c that all blocks are full (there is a nonzero in the CSR data
+c structure for each entry in the block), and is used if the routine
+c determines the block partitioning itself. The second code makes
+c no assumptions about the block partitioning, and is used if the
+c caller provides the partitioning. The second code is much less
+c efficient than the first code.
+c
+c In the first code, the CSR data structure is traversed sequentially
+c and entries are placed into the VBR data structure with stride
+c equal to the row dimension of the block row. The columns of the
+c CSR data structure are sorted first if necessary.
+c
+c In the second code, the block sparsity pattern is first determined.
+c This is done by traversing the CSR data structure and using an
+c implied linked list to determine which blocks are nonzero. Then
+c the VBR data structure is filled by mapping each individual entry
+c in the CSR data structure into the VBR data structure. The columns
+c of the CSR data structure are sorted first if necessary.
+c
+c-----------------------------------------------------------------------
+c Local variables:
+c---------------------
+ integer ncol, nb, neqr, numc, a0, b0, b1, k0, i, ii, j, jj, jnew
+ logical sorted
+c
+c ncol = number of scalar columns in matrix
+c nb = number of blocks in conformal row/col partitioning
+c neqr = number of rows in block row
+c numc = number of nonzero columns in row
+c a0 = index for entries in CSR a array
+c b0 = index for entries in VBR b array
+c b1 = temp
+c k0 = index for entries in VBR kb array
+c i = loop index for block rows
+c ii = loop index for scalar rows in block row
+c j = loop index for block columns
+c jj = loop index for scalar columns in block column
+c jnew = block column number
+c sorted = used to indicate if matrix already sorted by columns
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+c-----sort matrix by column indices
+ call csorted(n, ia, ja, sorted)
+ if (.not. sorted) then
+ call csort (n, a, ja, ia, b, .true.)
+ endif
+ if (job .eq. 1 .or. job .eq. 2) then
+c--------need to zero workspace; first find ncol
+ ncol = 0
+ do i = 2, n
+ ncol = max0(ncol, ja(ia(i)-1))
+ enddo
+ do i = 1, ncol
+ iwk(i) = 0
+ enddo
+ call csrkvstr(n, ia, ja, nr, kvstr)
+ call csrkvstc(n, ia, ja, nc, kvstc, iwk)
+ endif
+c-----check if want conformal partitioning
+ if (job .eq. 2) then
+ if (kvstr(nr+1) .ne. kvstc(nc+1)) then
+ ierr = 3
+ return
+ endif
+c use iwk temporarily
+ call kvstmerge(nr, kvstr, nc, kvstc, nb, iwk)
+ nr = nb
+ nc = nb
+ do i = 1, nb+1
+ kvstr(i) = iwk(i)
+ kvstc(i) = iwk(i)
+ enddo
+ endif
+c-----------------------------------------------------------------------
+c inverse kvst (scalar col number) = block col number
+c stored in iwk(1:n)
+c-----------------------------------------------------------------------
+ do i = 1, nc
+ do j = kvstc(i), kvstc(i+1)-1
+ iwk(j) = i
+ enddo
+ enddo
+ ncol = kvstc(nc+1)-1
+c-----jump to conversion routine
+ if (job .eq. 0) goto 400
+c-----------------------------------------------------------------------
+c Fast conversion for computed block partitioning
+c-----------------------------------------------------------------------
+ a0 = 1
+ b0 = 1
+ k0 = 1
+ kb(1) = 1
+c-----loop on block rows
+ do i = 1, nr
+ neqr = kvstr(i+1) - kvstr(i)
+ numc = ia(kvstr(i)+1) - ia(kvstr(i))
+ ib(i) = k0
+c--------loop on first row in block row to determine block sparsity
+ j = 0
+ do jj = ia(kvstr(i)), ia(kvstr(i)+1)-1
+ jnew = iwk(ja(jj))
+ if (jnew .ne. j) then
+c--------------check there is enough space in kb and jb arrays
+ if (k0+1 .gt. nkmax) then
+ ierr = 1
+ write (*,*) 'csrvbr: no space in kb for block row ', i
+ return
+ endif
+c--------------set entries for this block
+ j = jnew
+ b0 = b0 + neqr * (kvstc(j+1) - kvstc(j))
+ kb(k0+1) = b0
+ jb(k0) = j
+ k0 = k0 + 1
+ endif
+ enddo
+c--------loop on scalar rows in block row
+ do ii = 0, neqr-1
+ b1 = kb(ib(i))+ii
+c-----------loop on elements in a scalar row
+ do jj = 1, numc
+c--------------check there is enough space in b array
+ if (b1 .gt. nzmax) then
+ ierr = 2
+ write (*,*) 'csrvbr: no space in b for block row ', i
+ return
+ endif
+ b(b1) = a(a0)
+ b1 = b1 + neqr
+ a0 = a0 + 1
+ enddo
+ enddo
+ enddo
+ ib(nr+1) = k0
+ return
+c-----------------------------------------------------------------------
+c Conversion for user supplied block partitioning
+c-----------------------------------------------------------------------
+ 400 continue
+c-----initialize workspace for sparsity indicator
+ do i = ncol+1, ncol+nc
+ iwk(i) = 0
+ enddo
+ k0 = 1
+ kb(1) = 1
+c-----find sparsity of block rows
+ do i = 1, nr
+ neqr = kvstr(i+1) - kvstr(i)
+ numc = ia(kvstr(i)+1) - ia(kvstr(i))
+ ib(i) = k0
+c--------loop on all the elements in the block row to determine block sparsity
+ do jj = ia(kvstr(i)), ia(kvstr(i+1))-1
+ iwk(iwk(ja(jj))+ncol) = 1
+ enddo
+c--------use sparsity to set jb and kb arrays
+ do j = 1, nc
+ if (iwk(j+ncol) .ne. 0) then
+c--------------check there is enough space in kb and jb arrays
+ if (k0+1 .gt. nkmax) then
+ ierr = 1
+ write (*,*) 'csrvbr: no space in kb for block row ', i
+ return
+ endif
+ kb(k0+1) = kb(k0) + neqr * (kvstc(j+1) - kvstc(j))
+ jb(k0) = j
+ k0 = k0 + 1
+ iwk(j+ncol) = 0
+ endif
+ enddo
+ enddo
+ ib(nr+1) = k0
+c-----Fill b with entries from a by traversing VBR data structure.
+ a0 = 1
+c-----loop on block rows
+ do i = 1, nr
+ neqr = kvstr(i+1) - kvstr(i)
+c--------loop on scalar rows in block row
+ do ii = 0, neqr-1
+ b0 = kb(ib(i)) + ii
+c-----------loop on block columns
+ do j = ib(i), ib(i+1)-1
+c--------------loop on scalar columns within block column
+ do jj = kvstc(jb(j)), kvstc(jb(j)+1)-1
+c-----------------check there is enough space in b array
+ if (b0 .gt. nzmax) then
+ ierr = 2
+ write (*,*)'csrvbr: no space in b for blk row',i
+ return
+ endif
+ if (a0 .ge. ia(kvstr(i)+ii+1)) then
+ b(b0) = 0.d0
+ else
+ if (jj .eq. ja(a0)) then
+ b(b0) = a(a0)
+ a0 = a0 + 1
+ else
+ b(b0) = 0.d0
+ endif
+ endif
+ b0 = b0 + neqr
+c--------------endloop on scalar columns
+ enddo
+c-----------endloop on block columns
+ enddo
+ 2020 continue
+ enddo
+ enddo
+ return
+ end
+c-----------------------------------------------------------------------
+c----------------------------end-of-csrvbr------------------------------
+c----------------------------------------------------------------------c
+ subroutine vbrcsr(ia, ja, a, nr, kvstr, kvstc, ib, jb, kb,
+ & b, nzmax, ierr)
+c-----------------------------------------------------------------------
+ integer ia(*), ja(*), nr, ib(nr+1), jb(*), kb(*)
+ integer kvstr(nr+1), kvstc(*), nzmax, ierr
+ real*8 a(*), b(nzmax)
+c-----------------------------------------------------------------------
+c Converts variable block row to compressed sparse row format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c nr = number of block rows
+c kvstr = first row number for each block row
+c kvstc = first column number for each block column
+c ib,jb,kb,b = input matrix in VBR format
+c nzmax = size of supplied ja and a arrays
+c
+c On return:
+c---------------
+c ia,ja,a = output matrix in CSR format
+c
+c ierr = error message
+c ierr = 0 means normal return
+c ierr = negative row number when out of space in
+c ja and a arrays
+c
+c Work space:
+c----------------
+c None
+c
+c Algorithm:
+c---------------
+c The VBR data structure is traversed in the order that is required
+c to fill the CSR data structure. In a given block row, consecutive
+c entries in the CSR data structure are entries in the VBR data
+c structure with stride equal to the row dimension of the block.
+c The VBR data structure is assumed to be sorted by block columns.
+c
+c-----------------------------------------------------------------------
+c Local variables:
+c---------------------
+ integer neqr, numc, a0, b0, i, ii, j, jj
+c
+c neqr = number of rows in block row
+c numc = number of nonzero columns in row
+c a0 = index for entries in CSR a array
+c b0 = index for entries in VBR b array
+c i = loop index for block rows
+c ii = loop index for scalar rows in block row
+c j = loop index for block columns
+c jj = loop index for scalar columns in block column
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ a0 = 1
+ b0 = 1
+c-----loop on block rows
+ do i = 1, nr
+c--------set num of rows in block row, and num of nonzero cols in row
+ neqr = kvstr(i+1) - kvstr(i)
+ numc = ( kb(ib(i+1)) - kb(ib(i)) ) / neqr
+c--------construct ja for a scalar row
+ do j = ib(i), ib(i+1)-1
+ do jj = kvstc(jb(j)), kvstc(jb(j)+1)-1
+ ja(a0) = jj
+ a0 = a0 + 1
+ enddo
+ enddo
+c--------construct neqr-1 additional copies of ja for the block row
+ do ii = 1, neqr-1
+ do j = 1, numc
+ ja(a0) = ja(a0-numc)
+ a0 = a0 + 1
+ enddo
+ enddo
+c--------reset a0 back to beginning of block row
+ a0 = kb(ib(i))
+c--------loop on scalar rows in block row
+ do ii = 0, neqr-1
+ ia(kvstr(i)+ii) = a0
+ b0 = kb(ib(i)) + ii
+c-----------loop on elements in a scalar row
+ do jj = 1, numc
+c--------------check there is enough space in a array
+ if (a0 .gt. nzmax) then
+ ierr = -(kvstr(i)+ii)
+ write (*,*) 'vbrcsr: no space for row ', -ierr
+ return
+ endif
+ a(a0) = b(b0)
+ a0 = a0 + 1
+ b0 = b0 + neqr
+ enddo
+ enddo
+c-----endloop on block rows
+ enddo
+ ia(kvstr(nr+1)) = a0
+ return
+ end
+c-----------------------------------------------------------------------
+c---------------------------end-of-vbrcsr-------------------------------
+c-----------------------------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine csorted(n, ia, ja, sorted)
+c-----------------------------------------------------------------------
+ integer n, ia(n+1), ja(*)
+ logical sorted
+c-----------------------------------------------------------------------
+c Checks if matrix in CSR format is sorted by columns.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c n = number of rows in matrix
+c ia, ja = sparsity structure of matrix in CSR format
+c
+c On return:
+c---------------
+c sorted = indicates if matrix is sorted by columns
+c
+c-----------------------------------------------------------------------
+c-----local variables
+ integer i,j
+c---------------------------------
+ do i = 1, n
+ do j = ia(i)+1, ia(i+1)-1
+ if (ja(j-1) .ge. ja(j)) then
+ sorted = .false.
+ return
+ endif
+ enddo
+ enddo
+ sorted = .true.
+ return
+ end
+c-----------------------------------------------------------------------
+c------------------------end-of-csorted---------------------------------
diff --git a/FORMATS/makefile b/FORMATS/makefile
new file mode 100644
index 0000000..69ba330
--- /dev/null
+++ b/FORMATS/makefile
@@ -0,0 +1,28 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES1 = chkun.o
+FILES2 = chkfmt1.o
+FILES3 = rvbr.o
+
+un.ex: $(FILES1) ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o un.ex $(FILES1) ../MATGEN/FDIF/functns.o ../libskit.a
+
+fmt.ex: $(FILES2) ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o fmt.ex $(FILES2) ../MATGEN/FDIF/functns.o ../libskit.a
+
+rvbr.ex: $(FILES3) ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o rvbr.ex $(FILES3) ../MATGEN/FDIF/functns.o ../libskit.a
+
+clean:
+ rm -f *.o *.ex core *.trace
+
+../MATGEN/FDIF/functns.o:
+ (cd ../MATGEN/FDIF; $(F77) $(FFLAGS) -c functns.f)
+
+../libskit.a:
+ (cd ..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
diff --git a/FORMATS/rvbr.f b/FORMATS/rvbr.f
new file mode 100644
index 0000000..3ce9823
--- /dev/null
+++ b/FORMATS/rvbr.f
@@ -0,0 +1,142 @@
+ program rvbr
+c-----------------------------------------------------------------------
+c SPARSKIT test program for Variable Block Matrix Support
+c-----------------------------------------------------------------------
+c This program tests all three conversion routines of csrvbr.
+c For each conversion to VBR, the format is converted back to CSR
+c with vbrcsr. The subroutines csrkvstr, csrkvstc, and kvstmerge
+c become tested in the process. The subroutines vbrinfo and vbrmv
+c are also tested.
+c-----------------------------------------------------------------------
+ integer nxmax, nmx, nnzmax
+ parameter (nxmax = 10, nmx = nxmax*nxmax, nnzmax=10*nmx)
+ integer ia(nmx+1),ja(nnzmax),ia1(nnzmax),ja1(nnzmax), iwk(nmx*2+1)
+ real*8 stencil(7,100),a(nnzmax),a1(nnzmax)
+ integer ib(nmx+1),kvstr(nmx+1),kvstc(nmx+1),jb(nmx*10),kb(nmx*10)
+ real*8 b(nnzmax)
+ real*8 x(nmx),rhs(nmx),ans(nmx)
+ integer n, na, nx, ny, nz, nfree
+ integer nr, nc, i, job, maxblock, ierr
+ real*8 rnd
+c-----dimension of grid
+ nx = 4
+ ny = 2
+ nz = 1
+ nfree = 2
+c-----generate grid problem.
+ na = nfree*nfree
+ call gen57bl (nx,ny,nz,nfree,na,n,a1,ja1,ia1,iwk,stencil)
+c-----convert matrix to CSR
+ call bsrcsr (1,n,nfree,na,a1,ja1,ia1,a,ja,ia)
+ n = n * nfree
+c call dump(1, n, .true., a, ja, ia, 6)
+c-----generate random x vector for testing matrix-vector product
+ do i = 1, n
+ x(i) = rnd()
+ enddo
+c-----generate correct solution for matrix-vector product
+ call amux(n, x, ans, a, ja, ia)
+ do job = 0, 2
+ write (*,*) 'Testing job = ', job
+ if (job .eq. 0) then
+c-----------maximum blocksize for random block partitioning
+ maxblock = n/4
+c-----------generate random block partitioning for rows
+ nr = 1
+ kvstr(1) = 1
+ 2000 continue
+ nr = nr + 1
+ kvstr(nr) = kvstr(nr-1) + int(rnd()*maxblock)+1
+ if (kvstr(nr) .lt. n+1) goto 2000
+ kvstr(nr) = n+1
+ nr = nr - 1
+c-----------generate random block partitioning for columns
+ nc = 1
+ kvstc(1) = 1
+ 2010 continue
+ nc = nc + 1
+ kvstc(nc) = kvstc(nc-1) + int(rnd()*maxblock)+1
+ if (kvstc(nc) .lt. n+1) goto 2010
+ kvstc(nc) = n+1
+ nc = nc - 1
+ endif
+c--------convert to VBR format------------------------------------------
+ call csrvbr(n, ia, ja, a, nr, nc, kvstr, kvstc, ib, jb, kb,
+ & b, job, iwk, nmx*10, nnzmax, ierr)
+c--------convert back to CSR format-------------------------------------
+ call vbrcsr(ia1, ja1, a1, nr, kvstr, kvstc, ib, jb, kb,
+ & b, nnzmax, ierr)
+c--------compare original and converted CSR structures if job not 0
+ write (*,*) 'Checking conversions....'
+ if (job .ne. 0) then
+ do i = 1, n
+ if (ia(i) .ne. ia1(i)) then
+ write (*,*) 'csrvbr or vbrcsr conversion mismatch'
+ stop
+ endif
+ enddo
+ do i = 1, ia(n+1)-1
+ if ((ja(i) .ne. ja1(i)) .or. (a(i) .ne. a1(i))) then
+ write (*,*) 'csrvbr or vbrcsr conversion mismatch'
+ stop
+ endif
+ enddo
+ endif
+c--------test vbrinfo---------------------------------------------------
+ call vbrinfo(nr, nc, kvstr, kvstc, ib, jb, kb, iwk, 6)
+c--------test vbrmv-----------------------------------------------------
+ call vbrmv(nr, nc, ib, jb, kb, b, kvstr, kvstc, x, rhs)
+c--------compare answer with answer computed with CSR format
+ do i = 1, n
+ if (abs(ans(i) - rhs(i)) .gt. abs(0.001d0*ans(i))) then
+ write (*,*) 'VBR matrix-vector product is erroneous ',i
+ stop
+ endif
+ enddo
+c--------fill CSR structure with garbage
+ do i = 1, ia1(n+1)-1
+ ja1(i) = -1
+ a1(i) = -1.d0
+ enddo
+ do i = 1, n+1
+ ia1(i) = -1
+ enddo
+c--------fill VBR structure with garbage
+ do i = 1, kb(ib(nr+1))-1
+ b(i) = -1.d0
+ enddo
+ do i = 1, ib(nr+1)
+ jb(i) = -1
+ kb(i) = -1
+ enddo
+ do i = 1, nr+1
+ ib(i) = -1
+ enddo
+c--------fill kvstr and kvstc with garbage
+ do i = 1, nr+1
+ kvstr(i) = -1
+ enddo
+ do i = 1, nc+1
+ kvstc(i) = -1
+ enddo
+c--------fill rhs with garbage
+ do i = 1, n
+ rhs(i) = -1.d0
+ enddo
+c-----endloop on job
+ enddo
+ stop
+ end
+c-----------------------------------------------------------------------
+ function rnd()
+ real*8 rnd
+ integer im, ia, ic, jran
+ save jran
+ data im /6075/, ia /106/, ic /1283/, jran/1/
+ jran = mod(jran*ia+ic, im)
+ rnd = dble(jran)/dble(im)
+ return
+ end
+c-----------------------------------------------------------------------
+c Coded by Edmond Chow, chow@cs.umn.edu
+c-----------------------------------------------------------------------
diff --git a/FORMATS/unary.f b/FORMATS/unary.f
new file mode 100644
index 0000000..00860c7
--- /dev/null
+++ b/FORMATS/unary.f
@@ -0,0 +1,3141 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c UNARY SUBROUTINES MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c submat : extracts a submatrix from a sparse matrix. c
+c filter : filters elements from a matrix according to their magnitude.c
+c filterm: same as above, but for the MSR format c
+c csort : sorts the elements in increasing order of columns c
+c clncsr : clean up the CSR format matrix, remove duplicate entry, etc c
+c transp : in-place transposition routine (see also csrcsc in formats) c
+c copmat : copy of a matrix into another matrix (both stored csr) c
+c msrcop : copies a matrix in MSR format into a matrix in MSR format c
+c getelm : returns a(i,j) for any (i,j) from a CSR-stored matrix. c
+c getdia : extracts a specified diagonal from a matrix. c
+c getl : extracts lower triangular part c
+c getu : extracts upper triangular part c
+c levels : gets the level scheduling structure for lower triangular c
+c matrices. c
+c amask : extracts C = A mask M c
+c rperm : permutes the rows of a matrix (B = P A) c
+c cperm : permutes the columns of a matrix (B = A Q) c
+c dperm : permutes both the rows and columns of a matrix (B = P A Q ) c
+c dperm1 : general extractiob routine (extracts arbitrary rows) c
+c dperm2 : general submatrix permutation/extraction routine c
+c dmperm : symmetric permutation of row and column (B=PAP') in MSR fmt c
+c dvperm : permutes a real vector (in-place) c
+c ivperm : permutes an integer vector (in-place) c
+c retmx : returns the max absolute value in each row of the matrix c
+c diapos : returns the positions of the diagonal elements in A. c
+c extbdg : extracts the main diagonal blocks of a matrix. c
+c getbwd : returns the bandwidth information on a matrix. c
+c blkfnd : finds the block-size of a matrix. c
+c blkchk : checks whether a given integer is the block size of A. c
+c infdia : obtains information on the diagonals of A. c
+c amubdg : gets number of nonzeros in each row of A*B (as well as NNZ) c
+c aplbdg : gets number of nonzeros in each row of A+B (as well as NNZ) c
+c rnrms : computes the norms of the rows of A c
+c cnrms : computes the norms of the columns of A c
+c roscal : scales the rows of a matrix by their norms. c
+c coscal : scales the columns of a matrix by their norms. c
+c addblk : Adds a matrix B into a block of A. c
+c get1up : Collects the first elements of each row of the upper c
+c triangular portion of the matrix. c
+c xtrows : extracts given rows from a matrix in CSR format. c
+c csrkvstr: Finds block row partitioning of matrix in CSR format c
+c csrkvstc: Finds block column partitioning of matrix in CSR format c
+c kvstmerge: Merges block partitionings, for conformal row/col pattern c
+c----------------------------------------------------------------------c
+ subroutine submat (n,job,i1,i2,j1,j2,a,ja,ia,nr,nc,ao,jao,iao)
+ integer n,job,i1,i2,j1,j2,nr,nc,ia(*),ja(*),jao(*),iao(*)
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c extracts the submatrix A(i1:i2,j1:j2) and puts the result in
+c matrix ao,iao,jao
+c---- In place: ao,jao,iao may be the same as a,ja,ia.
+c--------------
+c on input
+c---------
+c n = row dimension of the matrix
+c i1,i2 = two integers with i2 .ge. i1 indicating the range of rows to be
+c extracted.
+c j1,j2 = two integers with j2 .ge. j1 indicating the range of columns
+c to be extracted.
+c * There is no checking whether the input values for i1, i2, j1,
+c j2 are between 1 and n.
+c a,
+c ja,
+c ia = matrix in compressed sparse row format.
+c
+c job = job indicator: if job .ne. 1 then the real values in a are NOT
+c extracted, only the column indices (i.e. data structure) are.
+c otherwise values as well as column indices are extracted...
+c
+c on output
+c--------------
+c nr = number of rows of submatrix
+c nc = number of columns of submatrix
+c * if either of nr or nc is nonpositive the code will quit.
+c
+c ao,
+c jao,iao = extracted matrix in general sparse format with jao containing
+c the column indices,and iao being the pointer to the beginning
+c of the row,in arrays a,ja.
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ nr = i2-i1+1
+ nc = j2-j1+1
+c
+ if ( nr .le. 0 .or. nc .le. 0) return
+c
+ klen = 0
+c
+c simple procedure. proceeds row-wise...
+c
+ do 100 i = 1,nr
+ ii = i1+i-1
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ iao(i) = klen+1
+c-----------------------------------------------------------------------
+ do 60 k=k1,k2
+ j = ja(k)
+ if (j .ge. j1 .and. j .le. j2) then
+ klen = klen+1
+ if (job .eq. 1) ao(klen) = a(k)
+ jao(klen) = j - j1+1
+ endif
+ 60 continue
+ 100 continue
+ iao(nr+1) = klen+1
+ return
+c------------end-of submat----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine filter(n,job,drptol,a,ja,ia,b,jb,ib,len,ierr)
+ real*8 a(*),b(*),drptol
+ integer ja(*),jb(*),ia(*),ib(*),n,job,len,ierr
+c-----------------------------------------------------------------------
+c This module removes any elements whose absolute value
+c is small from an input matrix A and puts the resulting
+c matrix in B. The input parameter job selects a definition
+c of small.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = integer. row dimension of matrix
+c job = integer. used to determine strategy chosen by caller to
+c drop elements from matrix A.
+c job = 1
+c Elements whose absolute value is less than the
+c drop tolerance are removed.
+c job = 2
+c Elements whose absolute value is less than the
+c product of the drop tolerance and the Euclidean
+c norm of the row are removed.
+c job = 3
+c Elements whose absolute value is less that the
+c product of the drop tolerance and the largest
+c element in the row are removed.
+c
+c drptol = real. drop tolerance used for dropping strategy.
+c a
+c ja
+c ia = input matrix in compressed sparse format
+c len = integer. the amount of space available in arrays b and jb.
+c
+c on return:
+c----------
+c b
+c jb
+c ib = resulting matrix in compressed sparse format.
+c
+c ierr = integer. containing error message.
+c ierr .eq. 0 indicates normal return
+c ierr .gt. 0 indicates that there is'nt enough
+c space is a and ja to store the resulting matrix.
+c ierr then contains the row number where filter stopped.
+c note:
+c------ This module is in place. (b,jb,ib can ne the same as
+c a, ja, ia in which case the result will be overwritten).
+c----------------------------------------------------------------------c
+c contributed by David Day, Sep 19, 1989. c
+c----------------------------------------------------------------------c
+c local variables
+ real*8 norm,loctol
+ integer index,row,k,k1,k2
+c
+ index = 1
+ do 10 row= 1,n
+ k1 = ia(row)
+ k2 = ia(row+1) - 1
+ ib(row) = index
+ goto (100,200,300) job
+ 100 norm = 1.0d0
+ goto 400
+ 200 norm = 0.0d0
+ do 22 k = k1,k2
+ norm = norm + a(k) * a(k)
+ 22 continue
+ norm = sqrt(norm)
+ goto 400
+ 300 norm = 0.0d0
+ do 23 k = k1,k2
+ if( abs(a(k)) .gt. norm) then
+ norm = abs(a(k))
+ endif
+ 23 continue
+ 400 loctol = drptol * norm
+ do 30 k = k1,k2
+ if( abs(a(k)) .gt. loctol)then
+ if (index .gt. len) then
+ ierr = row
+ return
+ endif
+ b(index) = a(k)
+ jb(index) = ja(k)
+ index = index + 1
+ endif
+ 30 continue
+ 10 continue
+ ib(n+1) = index
+ return
+c--------------------end-of-filter -------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine filterm (n,job,drop,a,ja,b,jb,len,ierr)
+ real*8 a(*),b(*),drop
+ integer ja(*),jb(*),n,job,len,ierr
+c-----------------------------------------------------------------------
+c This subroutine removes any elements whose absolute value
+c is small from an input matrix A. Same as filter but
+c uses the MSR format.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = integer. row dimension of matrix
+c job = integer. used to determine strategy chosen by caller to
+c drop elements from matrix A.
+c job = 1
+c Elements whose absolute value is less than the
+c drop tolerance are removed.
+c job = 2
+c Elements whose absolute value is less than the
+c product of the drop tolerance and the Euclidean
+c norm of the row are removed.
+c job = 3
+c Elements whose absolute value is less that the
+c product of the drop tolerance and the largest
+c element in the row are removed.
+c
+c drop = real. drop tolerance used for dropping strategy.
+c a
+c ja = input matrix in Modifief Sparse Row format
+c len = integer. the amount of space in arrays b and jb.
+c
+c on return:
+c----------
+c
+c b, jb = resulting matrix in Modifief Sparse Row format
+c
+c ierr = integer. containing error message.
+c ierr .eq. 0 indicates normal return
+c ierr .gt. 0 indicates that there is'nt enough
+c space is a and ja to store the resulting matrix.
+c ierr then contains the row number where filter stopped.
+c note:
+c------ This module is in place. (b,jb can ne the same as
+c a, ja in which case the result will be overwritten).
+c----------------------------------------------------------------------c
+c contributed by David Day, Sep 19, 1989. c
+c----------------------------------------------------------------------c
+c local variables
+c
+ real*8 norm,loctol
+ integer index,row,k,k1,k2
+c
+ index = n+2
+ do 10 row= 1,n
+ k1 = ja(row)
+ k2 = ja(row+1) - 1
+ jb(row) = index
+ goto (100,200,300) job
+ 100 norm = 1.0d0
+ goto 400
+ 200 norm = a(row)**2
+ do 22 k = k1,k2
+ norm = norm + a(k) * a(k)
+ 22 continue
+ norm = sqrt(norm)
+ goto 400
+ 300 norm = abs(a(row))
+ do 23 k = k1,k2
+ norm = max(abs(a(k)),norm)
+ 23 continue
+ 400 loctol = drop * norm
+ do 30 k = k1,k2
+ if( abs(a(k)) .gt. loctol)then
+ if (index .gt. len) then
+ ierr = row
+ return
+ endif
+ b(index) = a(k)
+ jb(index) = ja(k)
+ index = index + 1
+ endif
+ 30 continue
+ 10 continue
+ jb(n+1) = index
+ return
+c--------------------end-of-filterm-------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csort (n,a,ja,ia,iwork,values)
+ logical values
+ integer n, ja(*), ia(n+1), iwork(*)
+ real*8 a(*)
+c-----------------------------------------------------------------------
+c This routine sorts the elements of a matrix (stored in Compressed
+c Sparse Row Format) in increasing order of their column indices within
+c each row. It uses a form of bucket sort with a cost of O(nnz) where
+c nnz = number of nonzero elements.
+c requires an integer work array of length 2*nnz.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = the row dimension of the matrix
+c a = the matrix A in compressed sparse row format.
+c ja = the array of column indices of the elements in array a.
+c ia = the array of pointers to the rows.
+c iwork = integer work array of length max ( m+1, 2*nnz )
+c where m = column dimension of the matrix
+c nnz = (ia(n+1)-ia(1))
+c values= logical indicating whether or not the real values a(*) must
+c also be permuted. if (.not. values) then the array a is not
+c touched by csort and can be a dummy array.
+c
+c on return:
+c----------
+c the matrix stored in the structure a, ja, ia is permuted in such a
+c way that the column indices are in increasing order within each row.
+c iwork(1:nnz) contains the permutation used to rearrange the elements.
+c-----------------------------------------------------------------------
+c Y. Saad - Feb. 1, 1991.
+c L. M. Baker - Oct. 15, 2009. Correct computation of column pointers
+c for rectangular matrices
+c-----------------------------------------------------------------------
+c local variables
+ integer i, k, j, m, ifirst, nnz, next
+c
+c count the number of elements in each column
+c
+ m = 0
+ do 11 i=1, n
+ do 1 k=ia(i), ia(i+1)-1
+ m = max( m, ja(k) )
+ 1 continue
+ 11 continue
+ do 2 j=1,m
+ iwork(j+1) = 0
+ 2 continue
+ do 33 i=1, n
+ do 3 k=ia(i), ia(i+1)-1
+ j = ja(k)
+ iwork(j+1) = iwork(j+1)+1
+ 3 continue
+ 33 continue
+c
+c compute pointers from lengths.
+c
+ iwork(1) = 1
+ do 4 i=1,m
+ iwork(i+1) = iwork(i) + iwork(i+1)
+ 4 continue
+c
+c get the positions of the nonzero elements in order of columns.
+c
+ ifirst = ia(1)
+ nnz = ia(n+1)-ifirst
+ do 5 i=1,n
+ do 51 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ next = iwork(j)
+ iwork(nnz+next) = k
+ iwork(j) = next+1
+ 51 continue
+ 5 continue
+c
+c convert to coordinate format
+c
+ do 6 i=1, n
+ do 61 k=ia(i), ia(i+1)-1
+ iwork(k) = i
+ 61 continue
+ 6 continue
+c
+c loop to find permutation: for each element find the correct
+c position in (sorted) arrays a, ja. Record this in iwork.
+c
+ do 7 k=1, nnz
+ ko = iwork(nnz+k)
+ irow = iwork(ko)
+ next = ia(irow)
+c
+c the current element should go in next position in row. iwork
+c records this position.
+c
+ iwork(ko) = next
+ ia(irow) = next+1
+ 7 continue
+c
+c perform an in-place permutation of the arrays.
+c
+ call ivperm (nnz, ja(ifirst), iwork)
+ if (values) call dvperm (nnz, a(ifirst), iwork)
+c
+c reshift the pointers of the original matrix back.
+c
+ do 8 i=n,1,-1
+ ia(i+1) = ia(i)
+ 8 continue
+ ia(1) = ifirst
+c
+ return
+c---------------end-of-csort--------------------------------------------
+c-----------------------------------------------------------------------
+ end
+
+
+c-----------------------------------------------------------------------
+ subroutine clncsr(job,value2,nrow,a,ja,ia,indu,iwk)
+c .. Scalar Arguments ..
+ integer job, nrow, value2
+c ..
+c .. Array Arguments ..
+ integer ia(nrow+1),indu(nrow),iwk(nrow+1),ja(*)
+ real*8 a(*)
+c ..
+c
+c This routine performs two tasks to clean up a CSR matrix
+c -- remove duplicate/zero entries,
+c -- perform a partial ordering, new order lower triangular part,
+c main diagonal, upper triangular part.
+c
+c On entry:
+c
+c job = options
+c 0 -- nothing is done
+c 1 -- eliminate duplicate entries, zero entries.
+c 2 -- eliminate duplicate entries and perform partial ordering.
+c 3 -- eliminate duplicate entries, sort the entries in the
+c increasing order of clumn indices.
+c
+c value2 -- 0 the matrix is pattern only (a is not touched)
+c 1 matrix has values too.
+c nrow -- row dimension of the matrix
+c a,ja,ia -- input matrix in CSR format
+c
+c On return:
+c a,ja,ia -- cleaned matrix
+c indu -- pointers to the beginning of the upper triangular
+c portion if job > 1
+c
+c Work space:
+c iwk -- integer work space of size nrow+1
+c
+c .. Local Scalars ..
+ integer i,j,k,ko,ipos,kfirst,klast
+ real*8 tmp
+c ..
+c
+ if (job.le.0) return
+c
+c .. eliminate duplicate entries --
+c array INDU is used as marker for existing indices, it is also the
+c location of the entry.
+c IWK is used to stored the old IA array.
+c matrix is copied to squeeze out the space taken by the duplicated
+c entries.
+c
+ do 90 i = 1, nrow
+ indu(i) = 0
+ iwk(i) = ia(i)
+ 90 continue
+ iwk(nrow+1) = ia(nrow+1)
+ k = 1
+ do 120 i = 1, nrow
+ ia(i) = k
+ ipos = iwk(i)
+ klast = iwk(i+1)
+ 100 if (ipos.lt.klast) then
+ j = ja(ipos)
+ if (indu(j).eq.0) then
+c .. new entry ..
+ if (value2.ne.0) then
+ if (a(ipos) .ne. 0.0D0) then
+ indu(j) = k
+ ja(k) = ja(ipos)
+ a(k) = a(ipos)
+ k = k + 1
+ endif
+ else
+ indu(j) = k
+ ja(k) = ja(ipos)
+ k = k + 1
+ endif
+ else if (value2.ne.0) then
+c .. duplicate entry ..
+ a(indu(j)) = a(indu(j)) + a(ipos)
+ endif
+ ipos = ipos + 1
+ go to 100
+ endif
+c .. remove marks before working on the next row ..
+ do 110 ipos = ia(i), k - 1
+ indu(ja(ipos)) = 0
+ 110 continue
+ 120 continue
+ ia(nrow+1) = k
+ if (job.le.1) return
+c
+c .. partial ordering ..
+c split the matrix into strict upper/lower triangular
+c parts, INDU points to the the beginning of the upper part.
+c
+ do 140 i = 1, nrow
+ klast = ia(i+1) - 1
+ kfirst = ia(i)
+ 130 if (klast.gt.kfirst) then
+ if (ja(klast).lt.i .and. ja(kfirst).ge.i) then
+c .. swap klast with kfirst ..
+ j = ja(klast)
+ ja(klast) = ja(kfirst)
+ ja(kfirst) = j
+ if (value2.ne.0) then
+ tmp = a(klast)
+ a(klast) = a(kfirst)
+ a(kfirst) = tmp
+ endif
+ endif
+ if (ja(klast).ge.i)
+ & klast = klast - 1
+ if (ja(kfirst).lt.i)
+ & kfirst = kfirst + 1
+ go to 130
+ endif
+c
+ if (ja(klast).lt.i) then
+ indu(i) = klast + 1
+ else
+ indu(i) = klast
+ endif
+ 140 continue
+ if (job.le.2) return
+c
+c .. order the entries according to column indices
+c burble-sort is used
+c
+ do 190 i = 1, nrow
+ do 160 ipos = ia(i), indu(i)-1
+ do 150 j = indu(i)-1, ipos+1, -1
+ k = j - 1
+ if (ja(k).gt.ja(j)) then
+ ko = ja(k)
+ ja(k) = ja(j)
+ ja(j) = ko
+ if (value2.ne.0) then
+ tmp = a(k)
+ a(k) = a(j)
+ a(j) = tmp
+ endif
+ endif
+ 150 continue
+ 160 continue
+ do 180 ipos = indu(i), ia(i+1)-1
+ do 170 j = ia(i+1)-1, ipos+1, -1
+ k = j - 1
+ if (ja(k).gt.ja(j)) then
+ ko = ja(k)
+ ja(k) = ja(j)
+ ja(j) = ko
+ if (value2.ne.0) then
+ tmp = a(k)
+ a(k) = a(j)
+ a(j) = tmp
+ endif
+ endif
+ 170 continue
+ 180 continue
+ 190 continue
+ return
+c---- end of clncsr ----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine copmat (nrow,a,ja,ia,ao,jao,iao,ipos,job)
+ real*8 a(*),ao(*)
+ integer nrow, ia(*),ja(*),jao(*),iao(*), ipos, job
+c----------------------------------------------------------------------
+c copies the matrix a, ja, ia, into the matrix ao, jao, iao.
+c----------------------------------------------------------------------
+c on entry:
+c---------
+c nrow = row dimension of the matrix
+c a,
+c ja,
+c ia = input matrix in compressed sparse row format.
+c ipos = integer. indicates the position in the array ao, jao
+c where the first element should be copied. Thus
+c iao(1) = ipos on return.
+c job = job indicator. if (job .ne. 1) the values are not copies
+c (i.e., pattern only is copied in the form of arrays ja, ia).
+c
+c on return:
+c----------
+c ao,
+c jao,
+c iao = output matrix containing the same data as a, ja, ia.
+c-----------------------------------------------------------------------
+c Y. Saad, March 1990.
+c-----------------------------------------------------------------------
+c local variables
+ integer kst, i, k
+c
+ kst = ipos -ia(1)
+ do 100 i = 1, nrow+1
+ iao(i) = ia(i) + kst
+ 100 continue
+c
+ do 200 k=ia(1), ia(nrow+1)-1
+ jao(kst+k)= ja(k)
+ 200 continue
+c
+ if (job .ne. 1) return
+ do 201 k=ia(1), ia(nrow+1)-1
+ ao(kst+k) = a(k)
+ 201 continue
+c
+ return
+c--------end-of-copmat -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine msrcop (nrow,a,ja,ao,jao,job)
+ real*8 a(*),ao(*)
+ integer nrow, ja(*),jao(*), job
+c----------------------------------------------------------------------
+c copies the MSR matrix a, ja, into the MSR matrix ao, jao
+c----------------------------------------------------------------------
+c on entry:
+c---------
+c nrow = row dimension of the matrix
+c a,ja = input matrix in Modified compressed sparse row format.
+c job = job indicator. Values are not copied if job .ne. 1
+c
+c on return:
+c----------
+c ao, jao = output matrix containing the same data as a, ja.
+c-----------------------------------------------------------------------
+c Y. Saad,
+c-----------------------------------------------------------------------
+c local variables
+ integer i, k
+c
+ do 100 i = 1, nrow+1
+ jao(i) = ja(i)
+ 100 continue
+c
+ do 200 k=ja(1), ja(nrow+1)-1
+ jao(k)= ja(k)
+ 200 continue
+c
+ if (job .ne. 1) return
+ do 201 k=ja(1), ja(nrow+1)-1
+ ao(k) = a(k)
+ 201 continue
+ do 202 k=1,nrow
+ ao(k) = a(k)
+ 202 continue
+c
+ return
+c--------end-of-msrcop -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ double precision function getelm (i,j,a,ja,ia,iadd,sorted)
+c-----------------------------------------------------------------------
+c purpose:
+c --------
+c this function returns the element a(i,j) of a matrix a,
+c for any pair (i,j). the matrix is assumed to be stored
+c in compressed sparse row (csr) format. getelm performs a
+c binary search in the case where it is known that the elements
+c are sorted so that the column indices are in increasing order.
+c also returns (in iadd) the address of the element a(i,j) in
+c arrays a and ja when the search is successsful (zero if not).
+c-----
+c first contributed by noel nachtigal (mit).
+c recoded jan. 20, 1991, by y. saad [in particular
+c added handling of the non-sorted case + the iadd output]
+c-----------------------------------------------------------------------
+c parameters:
+c -----------
+c on entry:
+c----------
+c i = the row index of the element sought (input).
+c j = the column index of the element sought (input).
+c a = the matrix a in compressed sparse row format (input).
+c ja = the array of column indices (input).
+c ia = the array of pointers to the rows' data (input).
+c sorted = logical indicating whether the matrix is knonw to
+c have its column indices sorted in increasing order
+c (sorted=.true.) or not (sorted=.false.).
+c (input).
+c on return:
+c-----------
+c getelm = value of a(i,j).
+c iadd = address of element a(i,j) in arrays a, ja if found,
+c zero if not found. (output)
+c
+c note: the inputs i and j are not checked for validity.
+c-----------------------------------------------------------------------
+c noel m. nachtigal october 28, 1990 -- youcef saad jan 20, 1991.
+c-----------------------------------------------------------------------
+ integer i, ia(*), iadd, j, ja(*)
+ double precision a(*)
+ logical sorted
+c
+c local variables.
+c
+ integer ibeg, iend, imid, k
+c
+c initialization
+c
+ iadd = 0
+ getelm = 0.0
+ ibeg = ia(i)
+ iend = ia(i+1)-1
+c
+c case where matrix is not necessarily sorted
+c
+ if (.not. sorted) then
+c
+c scan the row - exit as soon as a(i,j) is found
+c
+ do 5 k=ibeg, iend
+ if (ja(k) .eq. j) then
+ iadd = k
+ goto 20
+ endif
+ 5 continue
+c
+c end unsorted case. begin sorted case
+c
+ else
+c
+c begin binary search. compute the middle index.
+c
+ 10 imid = ( ibeg + iend ) / 2
+c
+c test if found
+c
+ if (ja(imid).eq.j) then
+ iadd = imid
+ goto 20
+ endif
+ if (ibeg .ge. iend) goto 20
+c
+c else update the interval bounds.
+c
+ if (ja(imid).gt.j) then
+ iend = imid -1
+ else
+ ibeg = imid +1
+ endif
+ goto 10
+c
+c end both cases
+c
+ endif
+c
+ 20 if (iadd .ne. 0) getelm = a(iadd)
+c
+ return
+c--------end-of-getelm--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine getdia (nrow,ncol,job,a,ja,ia,len,diag,idiag,ioff)
+ real*8 diag(*),a(*)
+ integer nrow, ncol, job, len, ioff, ia(*), ja(*), idiag(*)
+c-----------------------------------------------------------------------
+c this subroutine extracts a given diagonal from a matrix stored in csr
+c format. the output matrix may be transformed with the diagonal removed
+c from it if desired (as indicated by job.)
+c-----------------------------------------------------------------------
+c our definition of a diagonal of matrix is a vector of length nrow
+c (always) which contains the elements in rows 1 to nrow of
+c the matrix that are contained in the diagonal offset by ioff
+c with respect to the main diagonal. if the diagonal element
+c falls outside the matrix then it is defined as a zero entry.
+c thus the proper definition of diag(*) with offset ioff is
+c
+c diag(i) = a(i,ioff+i) i=1,2,...,nrow
+c with elements falling outside the matrix being defined as zero.
+c
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c
+c nrow = integer. the row dimension of the matrix a.
+c ncol = integer. the column dimension of the matrix a.
+c job = integer. job indicator. if job = 0 then
+c the matrix a, ja, ia, is not altered on return.
+c if job.ne.0 then getdia will remove the entries
+c collected in diag from the original matrix.
+c this is done in place.
+c
+c a,ja,
+c ia = matrix stored in compressed sparse row a,ja,ia,format
+c ioff = integer,containing the offset of the wanted diagonal
+c the diagonal extracted is the one corresponding to the
+c entries a(i,j) with j-i = ioff.
+c thus ioff = 0 means the main diagonal
+c
+c on return:
+c-----------
+c len = number of nonzero elements found in diag.
+c (len .le. min(nrow,ncol-ioff)-max(1,1-ioff) + 1 )
+c
+c diag = real*8 array of length nrow containing the wanted diagonal.
+c diag contains the diagonal (a(i,j),j-i = ioff ) as defined
+c above.
+c
+c idiag = integer array of length len, containing the poisitions
+c in the original arrays a and ja of the diagonal elements
+c collected in diag. a zero entry in idiag(i) means that
+c there was no entry found in row i belonging to the diagonal.
+c
+c a, ja,
+c ia = if job .ne. 0 the matrix is unchanged. otherwise the nonzero
+c diagonal entries collected in diag are removed from the
+c matrix and therefore the arrays a, ja, ia will change.
+c (the matrix a, ja, ia will contain len fewer elements)
+c
+c----------------------------------------------------------------------c
+c Y. Saad, sep. 21 1989 - modified and retested Feb 17, 1996. c
+c----------------------------------------------------------------------c
+c local variables
+ integer istart, max, iend, i, kold, k, kdiag, ko
+c
+ istart = max(0,-ioff)
+ iend = min(nrow,ncol-ioff)
+ len = 0
+ do 1 i=1,nrow
+ idiag(i) = 0
+ diag(i) = 0.0d0
+ 1 continue
+c
+c extract diagonal elements
+c
+ do 6 i=istart+1, iend
+ do 51 k= ia(i),ia(i+1) -1
+ if (ja(k)-i .eq. ioff) then
+ diag(i)= a(k)
+ idiag(i) = k
+ len = len+1
+ goto 6
+ endif
+ 51 continue
+ 6 continue
+ if (job .eq. 0 .or. len .eq.0) return
+c
+c remove diagonal elements and rewind structure
+c
+ ko = 0
+ do 7 i=1, nrow
+ kold = ko
+ kdiag = idiag(i)
+ do 71 k= ia(i), ia(i+1)-1
+ if (k .ne. kdiag) then
+ ko = ko+1
+ a(ko) = a(k)
+ ja(ko) = ja(k)
+ endif
+ 71 continue
+ ia(i) = kold+1
+ 7 continue
+c
+c redefine ia(nrow+1)
+c
+ ia(nrow+1) = ko+1
+ return
+c------------end-of-getdia----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine transp (nrow,ncol,a,ja,ia,iwk,ierr)
+ integer nrow, ncol, ia(*), ja(*), iwk(*), ierr
+ real*8 a(*)
+c------------------------------------------------------------------------
+c In-place transposition routine.
+c------------------------------------------------------------------------
+c this subroutine transposes a matrix stored in compressed sparse row
+c format. the transposition is done in place in that the arrays a,ja,ia
+c of the transpose are overwritten onto the original arrays.
+c------------------------------------------------------------------------
+c on entry:
+c---------
+c nrow = integer. The row dimension of A.
+c ncol = integer. The column dimension of A.
+c a = real array of size nnz (number of nonzero elements in A).
+c containing the nonzero elements
+c ja = integer array of length nnz containing the column positions
+c of the corresponding elements in a.
+c ia = integer of size n+1, where n = max(nrow,ncol). On entry
+c ia(k) contains the position in a,ja of the beginning of
+c the k-th row.
+c
+c iwk = integer work array of same length as ja.
+c
+c on return:
+c----------
+c
+c ncol = actual row dimension of the transpose of the input matrix.
+c Note that this may be .le. the input value for ncol, in
+c case some of the last columns of the input matrix are zero
+c columns. In the case where the actual number of rows found
+c in transp(A) exceeds the input value of ncol, transp will
+c return without completing the transposition. see ierr.
+c a,
+c ja,
+c ia = contains the transposed matrix in compressed sparse
+c row format. The row dimension of a, ja, ia is now ncol.
+c
+c ierr = integer. error message. If the number of rows for the
+c transposed matrix exceeds the input value of ncol,
+c then ierr is set to that number and transp quits.
+c Otherwise ierr is set to 0 (normal return).
+c
+c Note:
+c----- 1) If you do not need the transposition to be done in place
+c it is preferrable to use the conversion routine csrcsc
+c (see conversion routines in formats).
+c 2) the entries of the output matrix are not sorted (the column
+c indices in each are not in increasing order) use csrcsc
+c if you want them sorted.
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c modified Oct. 11, 1989. c
+c----------------------------------------------------------------------c
+c local variables
+ real*8 t, t1
+ ierr = 0
+ nnz = ia(nrow+1)-1
+c
+c determine column dimension
+c
+ jcol = 0
+ do 1 k=1, nnz
+ jcol = max(jcol,ja(k))
+ 1 continue
+ if (jcol .gt. ncol) then
+ ierr = jcol
+ return
+ endif
+c
+c convert to coordinate format. use iwk for row indices.
+c
+ ncol = jcol
+c
+ do 3 i=1,nrow
+ do 2 k=ia(i),ia(i+1)-1
+ iwk(k) = i
+ 2 continue
+ 3 continue
+c find pointer array for transpose.
+ do 35 i=1,ncol+1
+ ia(i) = 0
+ 35 continue
+ do 4 k=1,nnz
+ i = ja(k)
+ ia(i+1) = ia(i+1)+1
+ 4 continue
+ ia(1) = 1
+c------------------------------------------------------------------------
+ do 44 i=1,ncol
+ ia(i+1) = ia(i) + ia(i+1)
+ 44 continue
+c
+c loop for a cycle in chasing process.
+c
+ init = 1
+ k = 0
+ 5 t = a(init)
+ i = ja(init)
+ j = iwk(init)
+ iwk(init) = -1
+c------------------------------------------------------------------------
+ 6 k = k+1
+c current row number is i. determine where to go.
+ l = ia(i)
+c save the chased element.
+ t1 = a(l)
+ inext = ja(l)
+c then occupy its location.
+ a(l) = t
+ ja(l) = j
+c update pointer information for next element to be put in row i.
+ ia(i) = l+1
+c determine next element to be chased
+ if (iwk(l) .lt. 0) goto 65
+ t = t1
+ i = inext
+ j = iwk(l)
+ iwk(l) = -1
+ if (k .lt. nnz) goto 6
+ goto 70
+ 65 init = init+1
+ if (init .gt. nnz) goto 70
+ if (iwk(init) .lt. 0) goto 65
+c restart chasing --
+ goto 5
+ 70 continue
+ do 80 i=ncol,1,-1
+ ia(i+1) = ia(i)
+ 80 continue
+ ia(1) = 1
+c
+ return
+c------------------end-of-transp ----------------------------------------
+c------------------------------------------------------------------------
+ end
+c------------------------------------------------------------------------
+ subroutine getl (n,a,ja,ia,ao,jao,iao)
+ integer n, ia(*), ja(*), iao(*), jao(*)
+ real*8 a(*), ao(*)
+c------------------------------------------------------------------------
+c this subroutine extracts the lower triangular part of a matrix
+c and writes the result ao, jao, iao. The routine is in place in
+c that ao, jao, iao can be the same as a, ja, ia if desired.
+c-----------
+c on input:
+c
+c n = dimension of the matrix a.
+c a, ja,
+c ia = matrix stored in compressed sparse row format.
+c On return:
+c ao, jao,
+c iao = lower triangular matrix (lower part of a)
+c stored in a, ja, ia, format
+c note: the diagonal element is the last element in each row.
+c i.e. in a(ia(i+1)-1 )
+c ao, jao, iao may be the same as a, ja, ia on entry -- in which case
+c getl will overwrite the result on a, ja, ia.
+c
+c------------------------------------------------------------------------
+c local variables
+ real*8 t
+ integer ko, kold, kdiag, k, i
+c
+c inititialize ko (pointer for output matrix)
+c
+ ko = 0
+ do 7 i=1, n
+ kold = ko
+ kdiag = 0
+ do 71 k = ia(i), ia(i+1) -1
+ if (ja(k) .gt. i) goto 71
+ ko = ko+1
+ ao(ko) = a(k)
+ jao(ko) = ja(k)
+ if (ja(k) .eq. i) kdiag = ko
+ 71 continue
+ if (kdiag .eq. 0 .or. kdiag .eq. ko) goto 72
+c
+c exchange
+c
+ t = ao(kdiag)
+ ao(kdiag) = ao(ko)
+ ao(ko) = t
+c
+ k = jao(kdiag)
+ jao(kdiag) = jao(ko)
+ jao(ko) = k
+ 72 iao(i) = kold+1
+ 7 continue
+c redefine iao(n+1)
+ iao(n+1) = ko+1
+ return
+c----------end-of-getl -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine getu (n,a,ja,ia,ao,jao,iao)
+ integer n, ia(*), ja(*), iao(*), jao(*)
+ real*8 a(*), ao(*)
+c------------------------------------------------------------------------
+c this subroutine extracts the upper triangular part of a matrix
+c and writes the result ao, jao, iao. The routine is in place in
+c that ao, jao, iao can be the same as a, ja, ia if desired.
+c-----------
+c on input:
+c
+c n = dimension of the matrix a.
+c a, ja,
+c ia = matrix stored in a, ja, ia, format
+c On return:
+c ao, jao,
+c iao = upper triangular matrix (upper part of a)
+c stored in compressed sparse row format
+c note: the diagonal element is the last element in each row.
+c i.e. in a(ia(i+1)-1 )
+c ao, jao, iao may be the same as a, ja, ia on entry -- in which case
+c getu will overwrite the result on a, ja, ia.
+c
+c------------------------------------------------------------------------
+c local variables
+ real*8 t
+ integer ko, k, i, kdiag, kfirst
+ ko = 0
+ do 7 i=1, n
+ kfirst = ko+1
+ kdiag = 0
+ do 71 k = ia(i), ia(i+1) -1
+ if (ja(k) .lt. i) goto 71
+ ko = ko+1
+ ao(ko) = a(k)
+ jao(ko) = ja(k)
+ if (ja(k) .eq. i) kdiag = ko
+ 71 continue
+ if (kdiag .eq. 0 .or. kdiag .eq. kfirst) goto 72
+c exchange
+ t = ao(kdiag)
+ ao(kdiag) = ao(kfirst)
+ ao(kfirst) = t
+c
+ k = jao(kdiag)
+ jao(kdiag) = jao(kfirst)
+ jao(kfirst) = k
+ 72 iao(i) = kfirst
+ 7 continue
+c redefine iao(n+1)
+ iao(n+1) = ko+1
+ return
+c----------end-of-getu -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine levels (n, jal, ial, nlev, lev, ilev, levnum)
+ integer jal(*),ial(*), levnum(*), ilev(*), lev(*)
+c-----------------------------------------------------------------------
+c levels gets the level structure of a lower triangular matrix
+c for level scheduling in the parallel solution of triangular systems
+c strict lower matrices (e.g. unit) as well matrices with their main
+c diagonal are accepted.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer. The row dimension of the matrix
+c jal, ial =
+c
+c on return:
+c-----------
+c nlev = integer. number of levels found
+c lev = integer array of length n containing the level
+c scheduling permutation.
+c ilev = integer array. pointer to beginning of levels in lev.
+c the numbers lev(i) to lev(i+1)-1 contain the row numbers
+c that belong to level number i, in the level scheduling
+c ordering. The equations of the same level can be solved
+c in parallel, once those of all the previous levels have
+c been solved.
+c work arrays:
+c-------------
+c levnum = integer array of length n (containing the level numbers
+c of each unknown on return)
+c-----------------------------------------------------------------------
+ do 10 i = 1, n
+ levnum(i) = 0
+ 10 continue
+c
+c compute level of each node --
+c
+ nlev = 0
+ do 20 i = 1, n
+ levi = 0
+ do 15 j = ial(i), ial(i+1) - 1
+ levi = max (levi, levnum(jal(j)))
+ 15 continue
+ levi = levi+1
+ levnum(i) = levi
+ nlev = max(nlev,levi)
+ 20 continue
+c-------------set data structure --------------------------------------
+ do 21 j=1, nlev+1
+ ilev(j) = 0
+ 21 continue
+c------count number of elements in each level -----------------------
+ do 22 j=1, n
+ i = levnum(j)+1
+ ilev(i) = ilev(i)+1
+ 22 continue
+c---- set up pointer for each level ----------------------------------
+ ilev(1) = 1
+ do 23 j=1, nlev
+ ilev(j+1) = ilev(j)+ilev(j+1)
+ 23 continue
+c-----determine elements of each level --------------------------------
+ do 30 j=1,n
+ i = levnum(j)
+ lev(ilev(i)) = j
+ ilev(i) = ilev(i)+1
+ 30 continue
+c reset pointers backwards
+ do 35 j=nlev, 1, -1
+ ilev(j+1) = ilev(j)
+ 35 continue
+ ilev(1) = 1
+ return
+c----------end-of-levels------------------------------------------------
+C-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amask (nrow,ncol,a,ja,ia,jmask,imask,
+ * c,jc,ic,iw,nzmax,ierr)
+c---------------------------------------------------------------------
+ real*8 a(*),c(*)
+ integer ia(nrow+1),ja(*),jc(*),ic(nrow+1),jmask(*),imask(nrow+1)
+ logical iw(ncol)
+c-----------------------------------------------------------------------
+c This subroutine builds a sparse matrix from an input matrix by
+c extracting only elements in positions defined by the mask jmask, imask
+c-----------------------------------------------------------------------
+c On entry:
+c---------
+c nrow = integer. row dimension of input matrix
+c ncol = integer. Column dimension of input matrix.
+c
+c a,
+c ja,
+c ia = matrix in Compressed Sparse Row format
+c
+c jmask,
+c imask = matrix defining mask (pattern only) stored in compressed
+c sparse row format.
+c
+c nzmax = length of arrays c and jc. see ierr.
+c
+c On return:
+c-----------
+c
+c a, ja, ia and jmask, imask are unchanged.
+c
+c c
+c jc,
+c ic = the output matrix in Compressed Sparse Row format.
+c
+c ierr = integer. serving as error message.c
+c ierr = 1 means normal return
+c ierr .gt. 1 means that amask stopped when processing
+c row number ierr, because there was not enough space in
+c c, jc according to the value of nzmax.
+c
+c work arrays:
+c-------------
+c iw = logical work array of length ncol.
+c
+c note:
+c------ the algorithm is in place: c, jc, ic can be the same as
+c a, ja, ia in which cas the code will overwrite the matrix c
+c on a, ja, ia
+c
+c-----------------------------------------------------------------------
+ ierr = 0
+ len = 0
+ do 1 j=1, ncol
+ iw(j) = .false.
+ 1 continue
+c unpack the mask for row ii in iw
+ do 100 ii=1, nrow
+c save pointer in order to be able to do things in place
+ do 2 k=imask(ii), imask(ii+1)-1
+ iw(jmask(k)) = .true.
+ 2 continue
+c add umasked elemnts of row ii
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ ic(ii) = len+1
+ do 200 k=k1,k2
+ j = ja(k)
+ if (iw(j)) then
+ len = len+1
+ if (len .gt. nzmax) then
+ ierr = ii
+ return
+ endif
+ jc(len) = j
+ c(len) = a(k)
+ endif
+ 200 continue
+c
+ do 3 k=imask(ii), imask(ii+1)-1
+ iw(jmask(k)) = .false.
+ 3 continue
+ 100 continue
+ ic(nrow+1)=len+1
+c
+ return
+c-----end-of-amask -----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine rperm (nrow,a,ja,ia,ao,jao,iao,perm,job)
+ integer nrow,ja(*),ia(nrow+1),jao(*),iao(nrow+1),perm(nrow),job
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c this subroutine permutes the rows of a matrix in CSR format.
+c rperm computes B = P A where P is a permutation matrix.
+c the permutation P is defined through the array perm: for each j,
+c perm(j) represents the destination row number of row number j.
+c Youcef Saad -- recoded Jan 28, 1991.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix
+c a, ja, ia = input matrix in csr format
+c perm = integer array of length nrow containing the permutation arrays
+c for the rows: perm(i) is the destination of row i in the
+c permuted matrix.
+c ---> a(i,j) in the original matrix becomes a(perm(i),j)
+c in the output matrix.
+c
+c job = integer indicating the work to be done:
+c job = 1 permute a, ja, ia into ao, jao, iao
+c (including the copying of real values ao and
+c the array iao).
+c job .ne. 1 : ignore real values.
+c (in which case arrays a and ao are not needed nor
+c used).
+c
+c------------
+c on return:
+c------------
+c ao, jao, iao = input matrix in a, ja, ia format
+c note :
+c if (job.ne.1) then the arrays a and ao are not used.
+c----------------------------------------------------------------------c
+c Y. Saad, May 2, 1990 c
+c----------------------------------------------------------------------c
+ logical values
+ values = (job .eq. 1)
+c
+c determine pointers for output matix.
+c
+ do 50 j=1,nrow
+ i = perm(j)
+ iao(i+1) = ia(j+1) - ia(j)
+ 50 continue
+c
+c get pointers from lengths
+c
+ iao(1) = 1
+ do 51 j=1,nrow
+ iao(j+1)=iao(j+1)+iao(j)
+ 51 continue
+c
+c copying
+c
+ do 100 ii=1,nrow
+c
+c old row = ii -- new row = iperm(ii) -- ko = new pointer
+c
+ ko = iao(perm(ii))
+ do 60 k=ia(ii), ia(ii+1)-1
+ jao(ko) = ja(k)
+ if (values) ao(ko) = a(k)
+ ko = ko+1
+ 60 continue
+ 100 continue
+c
+ return
+c---------end-of-rperm -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine cperm (nrow,a,ja,ia,ao,jao,iao,perm,job)
+ integer nrow,ja(*),ia(nrow+1),jao(*),iao(nrow+1),perm(*), job
+ real*8 a(*), ao(*)
+c-----------------------------------------------------------------------
+c this subroutine permutes the columns of a matrix a, ja, ia.
+c the result is written in the output matrix ao, jao, iao.
+c cperm computes B = A P, where P is a permutation matrix
+c that maps column j into column perm(j), i.e., on return
+c a(i,j) becomes a(i,perm(j)) in new matrix
+c Y. Saad, May 2, 1990 / modified Jan. 28, 1991.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c nrow = row dimension of the matrix
+c
+c a, ja, ia = input matrix in csr format.
+c
+c perm = integer array of length ncol (number of columns of A
+c containing the permutation array the columns:
+c a(i,j) in the original matrix becomes a(i,perm(j))
+c in the output matrix.
+c
+c job = integer indicating the work to be done:
+c job = 1 permute a, ja, ia into ao, jao, iao
+c (including the copying of real values ao and
+c the array iao).
+c job .ne. 1 : ignore real values ao and ignore iao.
+c
+c------------
+c on return:
+c------------
+c ao, jao, iao = input matrix in a, ja, ia format (array ao not needed)
+c
+c Notes:
+c-------
+c 1. if job=1 then ao, iao are not used.
+c 2. This routine is in place: ja, jao can be the same.
+c 3. If the matrix is initially sorted (by increasing column number)
+c then ao,jao,iao may not be on return.
+c
+c----------------------------------------------------------------------c
+c local parameters:
+ integer k, i, nnz
+c
+ nnz = ia(nrow+1)-1
+ do 100 k=1,nnz
+ jao(k) = perm(ja(k))
+ 100 continue
+c
+c done with ja array. return if no need to touch values.
+c
+ if (job .ne. 1) return
+c
+c else get new pointers -- and copy values too.
+c
+ do 1 i=1, nrow+1
+ iao(i) = ia(i)
+ 1 continue
+c
+ do 2 k=1, nnz
+ ao(k) = a(k)
+ 2 continue
+c
+ return
+c---------end-of-cperm--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dperm (nrow,a,ja,ia,ao,jao,iao,perm,qperm,job)
+ integer nrow,ja(*),ia(nrow+1),jao(*),iao(nrow+1),perm(nrow),
+ + qperm(*),job
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c This routine permutes the rows and columns of a matrix stored in CSR
+c format. i.e., it computes P A Q, where P, Q are permutation matrices.
+c P maps row i into row perm(i) and Q maps column j into column qperm(j):
+c a(i,j) becomes a(perm(i),qperm(j)) in new matrix
+c In the particular case where Q is the transpose of P (symmetric
+c permutation of A) then qperm is not needed.
+c note that qperm should be of length ncol (number of columns) but this
+c is not checked.
+c-----------------------------------------------------------------------
+c Y. Saad, Sep. 21 1989 / recoded Jan. 28 1991.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix
+c a, ja,
+c ia = input matrix in a, ja, ia format
+c perm = integer array of length n containing the permutation arrays
+c for the rows: perm(i) is the destination of row i in the
+c permuted matrix -- also the destination of column i in case
+c permutation is symmetric (job .le. 2)
+c
+c qperm = same thing for the columns. This should be provided only
+c if job=3 or job=4, i.e., only in the case of a nonsymmetric
+c permutation of rows and columns. Otherwise qperm is a dummy
+c
+c job = integer indicating the work to be done:
+c * job = 1,2 permutation is symmetric Ao :== P * A * transp(P)
+c job = 1 permute a, ja, ia into ao, jao, iao
+c job = 2 permute matrix ignoring real values.
+c * job = 3,4 permutation is non-symmetric Ao :== P * A * Q
+c job = 3 permute a, ja, ia into ao, jao, iao
+c job = 4 permute matrix ignoring real values.
+c
+c on return:
+c-----------
+c ao, jao, iao = input matrix in a, ja, ia format
+c
+c in case job .eq. 2 or job .eq. 4, a and ao are never referred to
+c and can be dummy arguments.
+c Notes:
+c-------
+c 1) algorithm is in place
+c 2) column indices may not be sorted on return even though they may be
+c on entry.
+c----------------------------------------------------------------------c
+c local variables
+ integer locjob, mod
+c
+c locjob indicates whether or not real values must be copied.
+c
+ locjob = mod(job,2)
+c
+c permute rows first
+c
+ call rperm (nrow,a,ja,ia,ao,jao,iao,perm,locjob)
+c
+c then permute columns
+c
+ locjob = 0
+c
+ if (job .le. 2) then
+ call cperm (nrow,ao,jao,iao,ao,jao,iao,perm,locjob)
+ else
+ call cperm (nrow,ao,jao,iao,ao,jao,iao,qperm,locjob)
+ endif
+c
+ return
+c-------end-of-dperm----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dperm1 (i1,i2,a,ja,ia,b,jb,ib,perm,ipos,job)
+ integer i1,i2,job,ja(*),ia(*),jb(*),ib(*),perm(*)
+ real*8 a(*),b(*)
+c-----------------------------------------------------------------------
+c general submatrix extraction routine.
+c-----------------------------------------------------------------------
+c extracts rows perm(i1), perm(i1+1), ..., perm(i2) (in this order)
+c from a matrix (doing nothing in the column indices.) The resulting
+c submatrix is constructed in b, jb, ib. A pointer ipos to the
+c beginning of arrays b,jb,is also allowed (i.e., nonzero elements
+c are accumulated starting in position ipos of b, jb).
+c-----------------------------------------------------------------------
+c Y. Saad,Sep. 21 1989 / recoded Jan. 28 1991 / modified for PSPARSLIB
+c Sept. 1997..
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix
+c a,ja,
+c ia = input matrix in CSR format
+c perm = integer array of length n containing the indices of the rows
+c to be extracted.
+c
+c job = job indicator. if (job .ne.1) values are not copied (i.e.,
+c only pattern is copied).
+c
+c on return:
+c-----------
+c b,ja,
+c ib = matrix in csr format. b(ipos:ipos+nnz-1),jb(ipos:ipos+nnz-1)
+c contain the value and column indices respectively of the nnz
+c nonzero elements of the permuted matrix. thus ib(1)=ipos.
+c
+c Notes:
+c-------
+c algorithm is NOT in place
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer ko,irow,k
+ logical values
+c-----------------------------------------------------------------------
+ values = (job .eq. 1)
+ ko = ipos
+ ib(1) = ko
+ do 900 i=i1,i2
+ irow = perm(i)
+ do 800 k=ia(irow),ia(irow+1)-1
+ if (values) b(ko) = a(k)
+ jb(ko) = ja(k)
+ ko=ko+1
+ 800 continue
+ ib(i-i1+2) = ko
+ 900 continue
+ return
+c--------end-of-dperm1--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dperm2 (i1,i2,a,ja,ia,b,jb,ib,cperm,rperm,istart,
+ * ipos,job)
+ integer i1,i2,job,istart,ja(*),ia(*),jb(*),ib(*),cperm(*),rperm(*)
+ real*8 a(*),b(*)
+c-----------------------------------------------------------------------
+c general submatrix permutation/ extraction routine.
+c-----------------------------------------------------------------------
+c extracts rows rperm(i1), rperm(i1+1), ..., rperm(i2) and does an
+c associated column permutation (using array cperm). The resulting
+c submatrix is constructed in b, jb, ib. For added flexibility, the
+c extracted elements are put in sequence starting from row 'istart'
+c of B. In addition a pointer ipos to the beginning of arrays b,jb,
+c is also allowed (i.e., nonzero elements are accumulated starting in
+c position ipos of b, jb). In most applications istart and ipos are
+c equal to one. However, the generality adds substantial flexiblity.
+c EXPLE: (1) to permute msr to msr (excluding diagonals)
+c call dperm2 (1,n,a,ja,ja,b,jb,jb,rperm,rperm,1,n+2)
+c (2) To extract rows 1 to 10: define rperm and cperm to be
+c identity permutations (rperm(i)=i, i=1,n) and then
+c call dperm2 (1,10,a,ja,ia,b,jb,ib,rperm,rperm,1,1)
+c (3) to achieve a symmetric permutation as defined by perm:
+c call dperm2 (1,10,a,ja,ia,b,jb,ib,perm,perm,1,1)
+c (4) to get a symmetric permutation of A and append the
+c resulting data structure to A's data structure (useful!)
+c call dperm2 (1,10,a,ja,ia,a,ja,ia(n+1),perm,perm,1,ia(n+1))
+c-----------------------------------------------------------------------
+c Y. Saad,Sep. 21 1989 / recoded Jan. 28 1991.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix
+c i1,i2 = extract rows rperm(i1) to rperm(i2) of A, with i1<i2.
+c
+c a,ja,
+c ia = input matrix in CSR format
+c cperm = integer array of length n containing the permutation arrays
+c for the columns: cperm(i) is the destination of column j,
+c i.e., any column index ja(k) is transformed into cperm(ja(k))
+c
+c rperm = permutation array for the rows. rperm(i) = origin (in A) of
+c row i in B. This is the reverse permutation relative to the
+c ones used in routines cperm, dperm,....
+c rows rperm(i1), rperm(i1)+1, ... rperm(i2) are
+c extracted from A and stacked into B, starting in row istart
+c of B.
+c istart= starting row for B where extracted matrix is to be added.
+c this is also only a pointer of the be beginning address for
+c ib , on return.
+c ipos = beginning position in arrays b and jb where to start copying
+c elements. Thus, ib(istart) = ipos.
+c
+c job = job indicator. if (job .ne.1) values are not copied (i.e.,
+c only pattern is copied).
+c
+c on return:
+c-----------
+c b,ja,
+c ib = matrix in csr format. positions 1,2,...,istart-1 of ib
+c are not touched. b(ipos:ipos+nnz-1),jb(ipos:ipos+nnz-1)
+c contain the value and column indices respectively of the nnz
+c nonzero elements of the permuted matrix. thus ib(istart)=ipos.
+c
+c Notes:
+c-------
+c 1) algorithm is NOT in place
+c 2) column indices may not be sorted on return even though they
+c may be on entry.
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer ko,irow,k
+ logical values
+c-----------------------------------------------------------------------
+ values = (job .eq. 1)
+ ko = ipos
+ ib(istart) = ko
+ do 900 i=i1,i2
+ irow = rperm(i)
+ do 800 k=ia(irow),ia(irow+1)-1
+ if (values) b(ko) = a(k)
+ jb(ko) = cperm(ja(k))
+ ko=ko+1
+ 800 continue
+ ib(istart+i-i1+1) = ko
+ 900 continue
+ return
+c--------end-of-dperm2--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dmperm (nrow,a,ja,ao,jao,perm,job)
+ integer nrow,ja(*),jao(*),perm(nrow),job
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c This routine performs a symmetric permutation of the rows and
+c columns of a matrix stored in MSR format. i.e., it computes
+c B = P A transp(P), where P, is a permutation matrix.
+c P maps row i into row perm(i) and column j into column perm(j):
+c a(i,j) becomes a(perm(i),perm(j)) in new matrix
+c (i.e. ao(perm(i),perm(j)) = a(i,j) )
+c calls dperm.
+c-----------------------------------------------------------------------
+c Y. Saad, Nov 15, 1991.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix
+c a, ja = input matrix in MSR format.
+c perm = integer array of length n containing the permutation arrays
+c for the rows: perm(i) is the destination of row i in the
+c permuted matrix -- also the destination of column i in case
+c permutation is symmetric (job .le. 2)
+c
+c job = integer indicating the work to be done:
+c job = 1 permute a, ja, ia into ao, jao, iao
+c job = 2 permute matrix ignoring real values.
+c
+c on return:
+c-----------
+c ao, jao = output matrix in MSR.
+c
+c in case job .eq. 2 a and ao are never referred to and can be dummy
+c arguments.
+c
+c Notes:
+c-------
+c 1) algorithm is NOT in place
+c 2) column indices may not be sorted on return even though they may be
+c on entry.
+c----------------------------------------------------------------------c
+c local variables
+c
+ integer n1, n2
+ n1 = nrow+1
+ n2 = n1+1
+c
+ call dperm (nrow,a,ja,ja,ao(n2),jao(n2),jao,perm,perm,job)
+c
+ jao(1) = n2
+ do 101 j=1, nrow
+ ao(perm(j)) = a(j)
+ jao(j+1) = jao(j+1)+n1
+ 101 continue
+c
+c done
+c
+ return
+c-----------------------------------------------------------------------
+c--------end-of-dmperm--------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dvperm (n, x, perm)
+ integer n, perm(n)
+ real*8 x(n)
+c-----------------------------------------------------------------------
+c this subroutine performs an in-place permutation of a real vector x
+c according to the permutation array perm(*), i.e., on return,
+c the vector x satisfies,
+c
+c x(perm(j)) :== x(j), j=1,2,.., n
+c
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = length of vector x.
+c perm = integer array of length n containing the permutation array.
+c x = input vector
+c
+c on return:
+c----------
+c x = vector x permuted according to x(perm(*)) := x(*)
+c
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+c local variables
+ real*8 tmp, tmp1
+c
+ init = 1
+ tmp = x(init)
+ ii = perm(init)
+ perm(init)= -perm(init)
+ k = 0
+c
+c loop
+c
+ 6 k = k+1
+c
+c save the chased element --
+c
+ tmp1 = x(ii)
+ x(ii) = tmp
+ next = perm(ii)
+ if (next .lt. 0 ) goto 65
+c
+c test for end
+c
+ if (k .gt. n) goto 101
+ tmp = tmp1
+ perm(ii) = - perm(ii)
+ ii = next
+c
+c end loop
+c
+ goto 6
+c
+c reinitilaize cycle --
+c
+ 65 init = init+1
+ if (init .gt. n) goto 101
+ if (perm(init) .lt. 0) goto 65
+ tmp = x(init)
+ ii = perm(init)
+ perm(init)=-perm(init)
+ goto 6
+c
+ 101 continue
+ do 200 j=1, n
+ perm(j) = -perm(j)
+ 200 continue
+c
+ return
+c-------------------end-of-dvperm---------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ivperm (n, ix, perm)
+ integer n, perm(n), ix(n)
+c-----------------------------------------------------------------------
+c this subroutine performs an in-place permutation of an integer vector
+c ix according to the permutation array perm(*), i.e., on return,
+c the vector x satisfies,
+c
+c ix(perm(j)) :== ix(j), j=1,2,.., n
+c
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = length of vector x.
+c perm = integer array of length n containing the permutation array.
+c ix = input vector
+c
+c on return:
+c----------
+c ix = vector x permuted according to ix(perm(*)) := ix(*)
+c
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+c local variables
+ integer tmp, tmp1
+c
+ init = 1
+ tmp = ix(init)
+ ii = perm(init)
+ perm(init)= -perm(init)
+ k = 0
+c
+c loop
+c
+ 6 k = k+1
+c
+c save the chased element --
+c
+ tmp1 = ix(ii)
+ ix(ii) = tmp
+ next = perm(ii)
+ if (next .lt. 0 ) goto 65
+c
+c test for end
+c
+ if (k .gt. n) goto 101
+ tmp = tmp1
+ perm(ii) = - perm(ii)
+ ii = next
+c
+c end loop
+c
+ goto 6
+c
+c reinitilaize cycle --
+c
+ 65 init = init+1
+ if (init .gt. n) goto 101
+ if (perm(init) .lt. 0) goto 65
+ tmp = ix(init)
+ ii = perm(init)
+ perm(init)=-perm(init)
+ goto 6
+c
+ 101 continue
+ do 200 j=1, n
+ perm(j) = -perm(j)
+ 200 continue
+c
+ return
+c-------------------end-of-ivperm---------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine retmx (n,a,ja,ia,dd)
+ real*8 a(*),dd(*)
+ integer n,ia(*),ja(*)
+c-----------------------------------------------------------------------
+c returns in dd(*) the max absolute value of elements in row *.
+c used for scaling purposes. superseded by rnrms .
+c
+c on entry:
+c n = dimension of A
+c a,ja,ia
+c = matrix stored in compressed sparse row format
+c dd = real*8 array of length n. On output,entry dd(i) contains
+c the element of row i that has the largest absolute value.
+c Moreover the sign of dd is modified such that it is the
+c same as that of the diagonal element in row i.
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+c local variables
+ integer k2, i, k1, k
+ real*8 t, t1, t2
+c
+c initialize
+c
+ k2 = 1
+ do 11 i=1,n
+ k1 = k2
+ k2 = ia(i+1) - 1
+ t = 0.0d0
+ do 101 k=k1,k2
+ t1 = abs(a(k))
+ if (t1 .gt. t) t = t1
+ if (ja(k) .eq. i) then
+ if (a(k) .ge. 0.0) then
+ t2 = a(k)
+ else
+ t2 = - a(k)
+ endif
+ endif
+ 101 continue
+ dd(i) = t2*t
+c we do not invert diag
+ 11 continue
+ return
+c---------end of retmx -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine diapos (n,ja,ia,idiag)
+ integer ia(n+1), ja(*), idiag(n)
+c-----------------------------------------------------------------------
+c this subroutine returns the positions of the diagonal elements of a
+c sparse matrix a, ja, ia, in the array idiag.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c
+c n = integer. row dimension of the matrix a.
+c a,ja,
+c ia = matrix stored compressed sparse row format. a array skipped.
+c
+c on return:
+c-----------
+c idiag = integer array of length n. The i-th entry of idiag
+c points to the diagonal element a(i,i) in the arrays
+c a, ja. (i.e., a(idiag(i)) = element A(i,i) of matrix A)
+c if no diagonal element is found the entry is set to 0.
+c----------------------------------------------------------------------c
+c Y. Saad, March, 1990
+c----------------------------------------------------------------------c
+ do 1 i=1, n
+ idiag(i) = 0
+ 1 continue
+c
+c sweep through data structure.
+c
+ do 6 i=1,n
+ do 51 k= ia(i),ia(i+1) -1
+ if (ja(k) .eq. i) idiag(i) = k
+ 51 continue
+ 6 continue
+c----------- -end-of-diapos---------------------------------------------
+c-----------------------------------------------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine dscaldg (n,a,ja,ia,diag,job)
+ real*8 a(*), diag(*),t
+ integer ia(*),ja(*)
+c-----------------------------------------------------------------------
+c scales rows by diag where diag is either given (job=0)
+c or to be computed:
+c job = 1 ,scale row i by by +/- max |a(i,j) | and put inverse of
+c scaling factor in diag(i),where +/- is the sign of a(i,i).
+c job = 2 scale by 2-norm of each row..
+c if diag(i) = 0,then diag(i) is replaced by one
+c (no scaling)..
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ goto (12,11,10) job+1
+ 10 do 110 j=1,n
+ k1= ia(j)
+ k2 = ia(j+1)-1
+ t = 0.0d0
+ do 111 k = k1,k2
+ 111 t = t+a(k)*a(k)
+ 110 diag(j) = sqrt(t)
+ goto 12
+ 11 continue
+ call retmx (n,a,ja,ia,diag)
+c------
+ 12 do 1 j=1,n
+ if (diag(j) .ne. 0.0d0) then
+ diag(j) = 1.0d0/diag(j)
+ else
+ diag(j) = 1.0d0
+ endif
+ 1 continue
+ do 2 i=1,n
+ t = diag(i)
+ do 21 k=ia(i),ia(i+1) -1
+ a(k) = a(k)*t
+ 21 continue
+ 2 continue
+ return
+c--------end of dscaldg -----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine extbdg (n,a,ja,ia,bdiag,nblk,ao,jao,iao)
+ implicit real*8 (a-h,o-z)
+ real*8 bdiag(*),a(*),ao(*)
+ integer ia(*),ja(*),jao(*),iao(*)
+c-----------------------------------------------------------------------
+c this subroutine extracts the main diagonal blocks of a
+c matrix stored in compressed sparse row format and puts the result
+c into the array bdiag and the remainder in ao,jao,iao.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer. The row dimension of the matrix a.
+c a,
+c ja,
+c ia = matrix stored in csr format
+c nblk = dimension of each diagonal block. The diagonal blocks are
+c stored in compressed format rowwise,i.e.,we store in
+c succession the i nonzeros of the i-th row after those of
+c row number i-1..
+c
+c on return:
+c----------
+c bdiag = real*8 array of size (n x nblk) containing the diagonal
+c blocks of A on return
+c ao,
+c jao,
+C iao = remainder of the matrix stored in csr format.
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ m = 1 + (n-1)/nblk
+c this version is sequential -- there is a more parallel version
+c that goes through the structure twice ....
+ ltr = ((nblk-1)*nblk)/2
+ l = m * ltr
+ do 1 i=1,l
+ bdiag(i) = 0.0d0
+ 1 continue
+ ko = 0
+ kb = 1
+ iao(1) = 1
+c-------------------------
+ do 11 jj = 1,m
+ j1 = (jj-1)*nblk+1
+ j2 = min0 (n,j1+nblk-1)
+ do 12 j=j1,j2
+ do 13 i=ia(j),ia(j+1) -1
+ k = ja(i)
+ if (k .lt. j1) then
+ ko = ko+1
+ ao(ko) = a(i)
+ jao(ko) = k
+ else if (k .lt. j) then
+c kb = (jj-1)*ltr+((j-j1)*(j-j1-1))/2+k-j1+1
+c bdiag(kb) = a(i)
+ bdiag(kb+k-j1) = a(i)
+ endif
+ 13 continue
+ kb = kb + j-j1
+ iao(j+1) = ko+1
+ 12 continue
+ 11 continue
+ return
+c---------end-of-extbdg-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine getbwd(n,a,ja,ia,ml,mu)
+c-----------------------------------------------------------------------
+c gets the bandwidth of lower part and upper part of A.
+c does not assume that A is sorted.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer = the row dimension of the matrix
+c a, ja,
+c ia = matrix in compressed sparse row format.
+c
+c on return:
+c-----------
+c ml = integer. The bandwidth of the strict lower part of A
+c mu = integer. The bandwidth of the strict upper part of A
+c
+c Notes:
+c ===== ml and mu are allowed to be negative or return. This may be
+c useful since it will tell us whether a band is confined
+c in the strict upper/lower triangular part.
+c indeed the definitions of ml and mu are
+c
+c ml = max ( (i-j) s.t. a(i,j) .ne. 0 )
+c mu = max ( (j-i) s.t. a(i,j) .ne. 0 )
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ real*8 a(*)
+ integer ja(*),ia(n+1),ml,mu,ldist,i,k
+ ml = - n
+ mu = - n
+ do 3 i=1,n
+ do 31 k=ia(i),ia(i+1)-1
+ ldist = i-ja(k)
+ ml = max(ml,ldist)
+ mu = max(mu,-ldist)
+ 31 continue
+ 3 continue
+ return
+c---------------end-of-getbwd ------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine blkfnd (nrow,ja,ia,nblk)
+c-----------------------------------------------------------------------
+c This routine attemptps to determine whether or not the input
+c matrix has a block structure and finds the blocks size
+c if it does. A block matrix is one which is
+c comprised of small square dense blocks. If there are zero
+c elements within the square blocks and the original data structure
+c takes these zeros into account then blkchk may fail to find the
+c correct block size.
+c-----------------------------------------------------------------------
+c on entry
+c---------
+c nrow = integer equal to the row dimension of the matrix.
+c ja = integer array containing the column indices of the entries
+c nonzero entries of the matrix stored by row.
+c ia = integer array of length nrow + 1 containing the pointers
+c beginning of each row in array ja.
+c
+c nblk = integer containing the assumed value of nblk if job = 0
+c
+c on return
+c----------
+c nblk = integer containing the value found for nblk when job = 1.
+c if imsg .ne. 0 this value is meaningless however.
+c
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ integer ia(nrow+1),ja(*)
+c-----------------------------------------------------------------------
+c first part of code will find candidate block sizes.
+c criterion used here is a simple one: scan rows and determine groups
+c of rows that have the same length and such that the first column
+c number and the last column number are identical.
+c-----------------------------------------------------------------------
+ minlen = ia(2)-ia(1)
+ irow = 1
+ do 1 i=2,nrow
+ len = ia(i+1)-ia(i)
+ if (len .lt. minlen) then
+ minlen = len
+ irow = i
+ endif
+ 1 continue
+c
+c ---- candidates are all dividers of minlen
+c
+ nblk = 1
+ if (minlen .le. 1) return
+c
+ do 99 iblk = minlen, 1, -1
+ if (mod(minlen,iblk) .ne. 0) goto 99
+ len = ia(2) - ia(1)
+ len0 = len
+ jfirst = ja(1)
+ jlast = ja(ia(2)-1)
+ do 10 jrow = irow+1,irow+nblk-1
+ i1 = ia(jrow)
+ i2 = ia(jrow+1)-1
+ len = i2+1-i1
+ jf = ja(i1)
+ jl = ja(i2)
+ if (len .ne. len0 .or. jf .ne. jfirst .or.
+ * jl .ne. jlast) goto 99
+ 10 continue
+c
+c check for this candidate ----
+c
+ call blkchk (nrow,ja,ia,iblk,imsg)
+ if (imsg .eq. 0) then
+c
+c block size found
+c
+ nblk = iblk
+ return
+ endif
+ 99 continue
+c--------end-of-blkfnd -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine blkchk (nrow,ja,ia,nblk,imsg)
+c-----------------------------------------------------------------------
+c This routine checks whether the input matrix is a block
+c matrix with block size of nblk. A block matrix is one which is
+c comprised of small square dense blocks. If there are zero
+c elements within the square blocks and the data structure
+c takes them into account then blkchk may fail to find the
+c correct block size.
+c-----------------------------------------------------------------------
+c on entry
+c---------
+c nrow = integer equal to the row dimension of the matrix.
+c ja = integer array containing the column indices of the entries
+c nonzero entries of the matrix stored by row.
+c ia = integer array of length nrow + 1 containing the pointers
+c beginning of each row in array ja.
+c
+c nblk = integer containing the value of nblk to be checked.
+c
+c on return
+c----------
+c
+c imsg = integer containing a message with the following meaning.
+c imsg = 0 means that the output value of nblk is a correct
+c block size. nblk .lt. 0 means nblk not correct
+c block size.
+c imsg = -1 : nblk does not divide nrow
+c imsg = -2 : a starting element in a row is at wrong position
+c (j .ne. mult*nblk +1 )
+c imsg = -3 : nblk does divide a row length -
+c imsg = -4 : an element is isolated outside a block or
+c two rows in same group have different lengths
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ integer ia(nrow+1),ja(*)
+c----------------------------------------------------------------------
+c first part of code will find candidate block sizes.
+c this is not guaranteed to work . so a check is done at the end
+c the criterion used here is a simple one:
+c scan rows and determine groups of rows that have the same length
+c and such that the first column number and the last column number
+c are identical.
+c----------------------------------------------------------------------
+ imsg = 0
+ if (nblk .le. 1) return
+ nr = nrow/nblk
+ if (nr*nblk .ne. nrow) goto 101
+c-- main loop ---------------------------------------------------------
+ irow = 1
+ do 20 ii=1, nr
+c i1= starting position for group of nblk rows in original matrix
+ i1 = ia(irow)
+ j2 = i1
+c lena = length of each row in that group in the original matrix
+ lena = ia(irow+1)-i1
+c len = length of each block-row in that group in the output matrix
+ len = lena/nblk
+ if (len* nblk .ne. lena) goto 103
+c
+c for each row
+c
+ do 6 i = 1, nblk
+ irow = irow + 1
+ if (ia(irow)-ia(irow-1) .ne. lena ) goto 104
+c
+c for each block
+c
+ do 7 k=0, len-1
+ jstart = ja(i1+nblk*k)-1
+ if ( (jstart/nblk)*nblk .ne. jstart) goto 102
+c
+c for each column
+c
+ do 5 j=1, nblk
+ if (jstart+j .ne. ja(j2) ) goto 104
+ j2 = j2+1
+ 5 continue
+ 7 continue
+ 6 continue
+ 20 continue
+c went through all loops successfully:
+ return
+ 101 imsg = -1
+ return
+ 102 imsg = -2
+ return
+ 103 imsg = -3
+ return
+ 104 imsg = -4
+c----------------end of chkblk -----------------------------------------
+c-----------------------------------------------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine infdia (n,ja,ia,ind,idiag)
+ integer ia(*), ind(*), ja(*)
+c-----------------------------------------------------------------------
+c obtains information on the diagonals of A.
+c-----------------------------------------------------------------------
+c this subroutine finds the lengths of each of the 2*n-1 diagonals of A
+c it also outputs the number of nonzero diagonals found.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of the matrix a.
+c
+c a, ..... not needed here.
+c ja,
+c ia = matrix stored in csr format
+c
+c on return:
+c-----------
+c
+c idiag = integer. number of nonzero diagonals found.
+c
+c ind = integer array of length at least 2*n-1. The k-th entry in
+c ind contains the number of nonzero elements in the diagonal
+c number k, the numbering beeing from the lowermost diagonal
+c (bottom-left). In other words ind(k) = length of diagonal
+c whose offset wrt the main diagonal is = - n + k.
+c----------------------------------------------------------------------c
+c Y. Saad, Sep. 21 1989 c
+c----------------------------------------------------------------------c
+ n2= n+n-1
+ do 1 i=1,n2
+ ind(i) = 0
+ 1 continue
+ do 3 i=1, n
+ do 2 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ ind(n+j-i) = ind(n+j-i) +1
+ 2 continue
+ 3 continue
+c count the nonzero ones.
+ idiag = 0
+ do 41 k=1, n2
+ if (ind(k) .ne. 0) idiag = idiag+1
+ 41 continue
+ return
+c done
+c------end-of-infdia ---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine amubdg (nrow,ncol,ncolb,ja,ia,jb,ib,ndegr,nnz,iw)
+ integer ja(*),jb(*),ia(nrow+1),ib(ncol+1),ndegr(nrow),iw(ncolb)
+c-----------------------------------------------------------------------
+c gets the number of nonzero elements in each row of A*B and the total
+c number of nonzero elements in A*B.
+c-----------------------------------------------------------------------
+c on entry:
+c --------
+c
+c nrow = integer. row dimension of matrix A
+c ncol = integer. column dimension of matrix A = row dimension of
+c matrix B.
+c ncolb = integer. the colum dimension of the matrix B.
+c
+c ja, ia= row structure of input matrix A: ja = column indices of
+c the nonzero elements of A stored by rows.
+c ia = pointer to beginning of each row in ja.
+c
+c jb, ib= row structure of input matrix B: jb = column indices of
+c the nonzero elements of A stored by rows.
+c ib = pointer to beginning of each row in jb.
+c
+c on return:
+c ---------
+c ndegr = integer array of length nrow containing the degrees (i.e.,
+c the number of nonzeros in each row of the matrix A * B
+c
+c nnz = total number of nonzero elements found in A * B
+c
+c work arrays:
+c-------------
+c iw = integer work array of length ncolb.
+c-----------------------------------------------------------------------
+ do 1 k=1, ncolb
+ iw(k) = 0
+ 1 continue
+
+ do 2 k=1, nrow
+ ndegr(k) = 0
+ 2 continue
+c
+c method used: Transp(A) * A = sum [over i=1, nrow] a(i)^T a(i)
+c where a(i) = i-th row of A. We must be careful not to add the
+c elements already accounted for.
+c
+c
+ do 7 ii=1,nrow
+c
+c for each row of A
+c
+ ldg = 0
+c
+c end-of-linked list
+c
+ last = -1
+ do 6 j = ia(ii),ia(ii+1)-1
+c
+c row number to be added:
+c
+ jr = ja(j)
+ do 5 k=ib(jr),ib(jr+1)-1
+ jc = jb(k)
+ if (iw(jc) .eq. 0) then
+c
+c add one element to the linked list
+c
+ ldg = ldg + 1
+ iw(jc) = last
+ last = jc
+ endif
+ 5 continue
+ 6 continue
+ ndegr(ii) = ldg
+c
+c reset iw to zero
+c
+ do 61 k=1,ldg
+ j = iw(last)
+ iw(last) = 0
+ last = j
+ 61 continue
+c-----------------------------------------------------------------------
+ 7 continue
+c
+ nnz = 0
+ do 8 ii=1, nrow
+ nnz = nnz+ndegr(ii)
+ 8 continue
+c
+ return
+c---------------end-of-amubdg ------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine aplbdg (nrow,ncol,ja,ia,jb,ib,ndegr,nnz,iw)
+ integer ja(*),jb(*),ia(nrow+1),ib(nrow+1),iw(ncol),ndegr(nrow)
+c-----------------------------------------------------------------------
+c gets the number of nonzero elements in each row of A+B and the total
+c number of nonzero elements in A+B.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A and B
+c ncol = integer. The column dimension of A and B.
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c b,
+c jb,
+c ib = Matrix B in compressed sparse row format.
+c
+c on return:
+c----------
+c ndegr = integer array of length nrow containing the degrees (i.e.,
+c the number of nonzeros in each row of the matrix A + B.
+c
+c nnz = total number of nonzero elements found in A * B
+c
+c work arrays:
+c------------
+c iw = integer work array of length equal to ncol.
+c
+c-----------------------------------------------------------------------
+ do 1 k=1, ncol
+ iw(k) = 0
+ 1 continue
+c
+ do 2 k=1, nrow
+ ndegr(k) = 0
+ 2 continue
+c
+ do 7 ii=1,nrow
+ ldg = 0
+c
+c end-of-linked list
+c
+ last = -1
+c
+c row of A
+c
+ do 5 j = ia(ii),ia(ii+1)-1
+ jr = ja(j)
+c
+c add element to the linked list
+c
+ ldg = ldg + 1
+ iw(jr) = last
+ last = jr
+ 5 continue
+c
+c row of B
+c
+ do 6 j=ib(ii),ib(ii+1)-1
+ jc = jb(j)
+ if (iw(jc) .eq. 0) then
+c
+c add one element to the linked list
+c
+ ldg = ldg + 1
+ iw(jc) = last
+ last = jc
+ endif
+ 6 continue
+c done with row ii.
+ ndegr(ii) = ldg
+c
+c reset iw to zero
+c
+ do 61 k=1,ldg
+ j = iw(last)
+ iw(last) = 0
+ last = j
+ 61 continue
+c-----------------------------------------------------------------------
+ 7 continue
+c
+ nnz = 0
+ do 8 ii=1, nrow
+ nnz = nnz+ndegr(ii)
+ 8 continue
+ return
+c----------------end-of-aplbdg -----------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine rnrms (nrow, nrm, a, ja, ia, diag)
+ real*8 a(*), diag(nrow), scal
+ integer ja(*), ia(nrow+1)
+c-----------------------------------------------------------------------
+c gets the norms of each row of A. (choice of three norms)
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c nrm = integer. norm indicator. nrm = 1, means 1-norm, nrm =2
+c means the 2-nrm, nrm = 0 means max norm
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c on return:
+c----------
+c
+c diag = real vector of length nrow containing the norms
+c
+c-----------------------------------------------------------------
+ do 1 ii=1,nrow
+c
+c compute the norm if each element.
+c
+ scal = 0.0d0
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ if (nrm .eq. 0) then
+ do 2 k=k1, k2
+ scal = max(scal,abs(a(k) ) )
+ 2 continue
+ elseif (nrm .eq. 1) then
+ do 3 k=k1, k2
+ scal = scal + abs(a(k) )
+ 3 continue
+ else
+ do 4 k=k1, k2
+ scal = scal+a(k)**2
+ 4 continue
+ endif
+ if (nrm .eq. 2) scal = sqrt(scal)
+ diag(ii) = scal
+ 1 continue
+ return
+c-----------------------------------------------------------------------
+c-------------end-of-rnrms----------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine cnrms (nrow, nrm, a, ja, ia, diag)
+ real*8 a(*), diag(nrow)
+ integer ja(*), ia(nrow+1)
+c-----------------------------------------------------------------------
+c gets the norms of each column of A. (choice of three norms)
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c nrm = integer. norm indicator. nrm = 1, means 1-norm, nrm =2
+c means the 2-nrm, nrm = 0 means max norm
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c on return:
+c----------
+c
+c diag = real vector of length nrow containing the norms
+c NOTE: this is designed for square matrices. For the case
+c nrow .ne. ncol -- diag must be of size max(nrow,ncol) even
+c though only the ncol first entries will be filled..
+c [report E. Canot 10/20/05 ]
+c-----------------------------------------------------------------
+ do 10 k=1, nrow
+ diag(k) = 0.0d0
+ 10 continue
+ do 1 ii=1,nrow
+ k1 = ia(ii)
+ k2 = ia(ii+1)-1
+ do 2 k=k1, k2
+ j = ja(k)
+c update the norm of each column
+ if (nrm .eq. 0) then
+ diag(j) = max(diag(j),abs(a(k) ) )
+ elseif (nrm .eq. 1) then
+ diag(j) = diag(j) + abs(a(k) )
+ else
+ diag(j) = diag(j)+a(k)**2
+ endif
+ 2 continue
+ 1 continue
+ if (nrm .ne. 2) return
+ do 3 k=1, nrow
+ diag(k) = sqrt(diag(k))
+ 3 continue
+ return
+c-----------------------------------------------------------------------
+c------------end-of-cnrms-----------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine roscal(nrow,job,nrm,a,ja,ia,diag,b,jb,ib,ierr)
+ real*8 a(*), b(*), diag(nrow)
+ integer nrow,job,nrm,ja(*),jb(*),ia(nrow+1),ib(nrow+1),ierr
+c-----------------------------------------------------------------------
+c scales the rows of A such that their norms are one on return
+c 3 choices of norms: 1-norm, 2-norm, max-norm.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c job = integer. job indicator. Job=0 means get array b only
+c job = 1 means get b, and the integer arrays ib, jb.
+c
+c nrm = integer. norm indicator. nrm = 1, means 1-norm, nrm =2
+c means the 2-nrm, nrm = 0 means max norm
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c on return:
+c----------
+c
+c diag = diagonal matrix stored as a vector containing the matrix
+c by which the rows have been scaled, i.e., on return
+c we have B = Diag*A.
+c
+c b,
+c jb,
+c ib = resulting matrix B in compressed sparse row sparse format.
+c
+c ierr = error message. ierr=0 : Normal return
+c ierr=i > 0 : Row number i is a zero row.
+c Notes:
+c-------
+c 1) The column dimension of A is not needed.
+c 2) algorithm in place (B can take the place of A).
+c-----------------------------------------------------------------
+ call rnrms (nrow,nrm,a,ja,ia,diag)
+ ierr = 0
+ do 1 j=1, nrow
+ if (diag(j) .eq. 0.0d0) then
+ ierr = j
+ return
+ else
+ diag(j) = 1.0d0/diag(j)
+ endif
+ 1 continue
+ call diamua(nrow,job,a,ja,ia,diag,b,jb,ib)
+ return
+c-------end-of-roscal---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine coscal(nrow,job,nrm,a,ja,ia,diag,b,jb,ib,ierr)
+c-----------------------------------------------------------------------
+ real*8 a(*),b(*),diag(nrow)
+ integer nrow,job,ja(*),jb(*),ia(nrow+1),ib(nrow+1),ierr
+c-----------------------------------------------------------------------
+c scales the columns of A such that their norms are one on return
+c result matrix written on b, or overwritten on A.
+c 3 choices of norms: 1-norm, 2-norm, max-norm. in place.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrow = integer. The row dimension of A
+c
+c job = integer. job indicator. Job=0 means get array b only
+c job = 1 means get b, and the integer arrays ib, jb.
+c
+c nrm = integer. norm indicator. nrm = 1, means 1-norm, nrm =2
+c means the 2-nrm, nrm = 0 means max norm
+c
+c a,
+c ja,
+c ia = Matrix A in compressed sparse row format.
+c
+c on return:
+c----------
+c
+c diag = diagonal matrix stored as a vector containing the matrix
+c by which the columns have been scaled, i.e., on return
+c we have B = A * Diag
+c
+c b,
+c jb,
+c ib = resulting matrix B in compressed sparse row sparse format.
+c
+c ierr = error message. ierr=0 : Normal return
+c ierr=i > 0 : Column number i is a zero row.
+c Notes:
+c-------
+c 1) The column dimension of A is not needed.
+c 2) algorithm in place (B can take the place of A).
+c-----------------------------------------------------------------
+ call cnrms (nrow,nrm,a,ja,ia,diag)
+ ierr = 0
+ do 1 j=1, nrow
+ if (diag(j) .eq. 0.0) then
+ ierr = j
+ return
+ else
+ diag(j) = 1.0d0/diag(j)
+ endif
+ 1 continue
+ call amudia (nrow,job,a,ja,ia,diag,b,jb,ib)
+ return
+c--------end-of-coscal--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine addblk(nrowa, ncola, a, ja, ia, ipos, jpos, job,
+ & nrowb, ncolb, b, jb, ib, nrowc, ncolc, c, jc, ic, nzmx, ierr)
+c implicit none
+ integer nrowa, nrowb, nrowc, ncola, ncolb, ncolc, ipos, jpos
+ integer nzmx, ierr, job
+ integer ja(1:*), ia(1:*), jb(1:*), ib(1:*), jc(1:*), ic(1:*)
+ real*8 a(1:*), b(1:*), c(1:*)
+c-----------------------------------------------------------------------
+c This subroutine adds a matrix B into a submatrix of A whose
+c (1,1) element is located in the starting position (ipos, jpos).
+c The resulting matrix is allowed to be larger than A (and B),
+c and the resulting dimensions nrowc, ncolc will be redefined
+c accordingly upon return.
+c The input matrices are assumed to be sorted, i.e. in each row
+c the column indices appear in ascending order in the CSR format.
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c nrowa = number of rows in A.
+c bcola = number of columns in A.
+c a,ja,ia = Matrix A in compressed sparse row format with entries sorted
+c nrowb = number of rows in B.
+c ncolb = number of columns in B.
+c b,jb,ib = Matrix B in compressed sparse row format with entries sorted
+c
+c nzmax = integer. The length of the arrays c and jc. addblk will
+c stop if the number of nonzero elements in the matrix C
+c exceeds nzmax. See ierr.
+c
+c on return:
+c----------
+c nrowc = number of rows in C.
+c ncolc = number of columns in C.
+c c,jc,ic = resulting matrix C in compressed sparse row sparse format
+c with entries sorted ascendly in each row.
+c
+c ierr = integer. serving as error message.
+c ierr = 0 means normal return,
+c ierr .gt. 0 means that addblk stopped while computing the
+c i-th row of C with i=ierr, because the number
+c of elements in C exceeds nzmax.
+c
+c Notes:
+c-------
+c this will not work if any of the two input matrices is not sorted
+c-----------------------------------------------------------------------
+ logical values
+ integer i,j1,j2,ka,kb,kc,kamax,kbmax
+ values = (job .ne. 0)
+ ierr = 0
+ nrowc = max(nrowa, nrowb+ipos-1)
+ ncolc = max(ncola, ncolb+jpos-1)
+ kc = 1
+ kbmax = 0
+ ic(1) = kc
+c
+ do 10 i=1, nrowc
+ if (i.le.nrowa) then
+ ka = ia(i)
+ kamax = ia(i+1)-1
+ else
+ ka = ia(nrowa+1)
+ end if
+ if ((i.ge.ipos).and.((i-ipos).le.nrowb)) then
+ kb = ib(i-ipos+1)
+ kbmax = ib(i-ipos+2)-1
+ else
+ kb = ib(nrowb+1)
+ end if
+c
+c a do-while type loop -- goes through all the elements in a row.
+c
+ 20 continue
+ if (ka .le. kamax) then
+ j1 = ja(ka)
+ else
+ j1 = ncolc+1
+ endif
+ if (kb .le. kbmax) then
+ j2 = jb(kb) + jpos - 1
+ else
+ j2 = ncolc+1
+ endif
+c
+c if there are more elements to be added.
+c
+ if ((ka .le. kamax .or. kb .le. kbmax) .and.
+ & (j1 .le. ncolc .or. j2 .le. ncolc)) then
+c
+c three cases
+c
+ if (j1 .eq. j2) then
+ if (values) c(kc) = a(ka)+b(kb)
+ jc(kc) = j1
+ ka = ka+1
+ kb = kb+1
+ kc = kc+1
+ else if (j1 .lt. j2) then
+ jc(kc) = j1
+ if (values) c(kc) = a(ka)
+ ka = ka+1
+ kc = kc+1
+ else if (j1 .gt. j2) then
+ jc(kc) = j2
+ if (values) c(kc) = b(kb)
+ kb = kb+1
+ kc = kc+1
+ endif
+ if (kc .gt. nzmx) goto 999
+ goto 20
+ end if
+ ic(i+1) = kc
+ 10 continue
+ return
+ 999 ierr = i
+ return
+c---------end-of-addblk-------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine get1up (n,ja,ia,ju)
+ integer n, ja(*),ia(*),ju(*)
+c----------------------------------------------------------------------
+c obtains the first element of each row of the upper triangular part
+c of a matrix. Assumes that the matrix is already sorted.
+c-----------------------------------------------------------------------
+c parameters
+c input
+c -----
+c ja = integer array containing the column indices of aij
+c ia = pointer array. ia(j) contains the position of the
+c beginning of row j in ja
+c
+c output
+c ------
+c ju = integer array of length n. ju(i) is the address in ja
+c of the first element of the uper triangular part of
+c of A (including rthe diagonal. Thus if row i does have
+c a nonzero diagonal element then ju(i) will point to it.
+c This is a more general version of diapos.
+c-----------------------------------------------------------------------
+c local vAriables
+ integer i, k
+c
+ do 5 i=1, n
+ ju(i) = 0
+ k = ia(i)
+c
+ 1 continue
+ if (ja(k) .ge. i) then
+ ju(i) = k
+ goto 5
+ elseif (k .lt. ia(i+1) -1) then
+ k=k+1
+c
+c go try next element in row
+c
+ goto 1
+ endif
+ 5 continue
+ return
+c-----end-of-get1up-----------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine xtrows (i1,i2,a,ja,ia,ao,jao,iao,iperm,job)
+ integer i1,i2,ja(*),ia(*),jao(*),iao(*),iperm(*),job
+ real*8 a(*),ao(*)
+c-----------------------------------------------------------------------
+c this subroutine extracts given rows from a matrix in CSR format.
+c Specifically, rows number iperm(i1), iperm(i1+1), ...., iperm(i2)
+c are extracted and put in the output matrix ao, jao, iao, in CSR
+c format. NOT in place.
+c Youcef Saad -- coded Feb 15, 1992.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c i1,i2 = two integers indicating the rows to be extracted.
+c xtrows will extract rows iperm(i1), iperm(i1+1),..,iperm(i2),
+c from original matrix and stack them in output matrix
+c ao, jao, iao in csr format
+c
+c a, ja, ia = input matrix in csr format
+c
+c iperm = integer array of length nrow containing the reverse permutation
+c array for the rows. row number iperm(j) in permuted matrix PA
+c used to be row number j in unpermuted matrix.
+c ---> a(i,j) in the permuted matrix was a(iperm(i),j)
+c in the inout matrix.
+c
+c job = integer indicating the work to be done:
+c job .ne. 1 : get structure only of output matrix,,
+c i.e., ignore real values. (in which case arrays a
+c and ao are not used nor accessed).
+c job = 1 get complete data structure of output matrix.
+c (i.e., including arrays ao and iao).
+c------------
+c on return:
+c------------
+c ao, jao, iao = input matrix in a, ja, ia format
+c note :
+c if (job.ne.1) then the arrays a and ao are not used.
+c----------------------------------------------------------------------c
+c Y. Saad, revised May 2, 1990 c
+c----------------------------------------------------------------------c
+ logical values
+ values = (job .eq. 1)
+c
+c copying
+c
+ ko = 1
+ iao(1) = ko
+ do 100 j=i1,i2
+c
+c ii=iperm(j) is the index of old row to be copied.
+c
+ ii = iperm(j)
+ do 60 k=ia(ii), ia(ii+1)-1
+ jao(ko) = ja(k)
+ if (values) ao(ko) = a(k)
+ ko = ko+1
+ 60 continue
+ iao(j-i1+2) = ko
+ 100 continue
+c
+ return
+c---------end-of-xtrows-------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine csrkvstr(n, ia, ja, nr, kvstr)
+c-----------------------------------------------------------------------
+ integer n, ia(n+1), ja(*), nr, kvstr(*)
+c-----------------------------------------------------------------------
+c Finds block row partitioning of matrix in CSR format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c n = number of matrix scalar rows
+c ia,ja = input matrix sparsity structure in CSR format
+c
+c On return:
+c---------------
+c nr = number of block rows
+c kvstr = first row number for each block row
+c
+c Notes:
+c-----------
+c Assumes that the matrix is sorted by columns.
+c This routine does not need any workspace.
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer i, j, jdiff
+c-----------------------------------------------------------------------
+ nr = 1
+ kvstr(1) = 1
+c---------------------------------
+ do i = 2, n
+ jdiff = ia(i+1)-ia(i)
+ if (jdiff .eq. ia(i)-ia(i-1)) then
+ do j = ia(i), ia(i+1)-1
+ if (ja(j) .ne. ja(j-jdiff)) then
+ nr = nr + 1
+ kvstr(nr) = i
+ goto 299
+ endif
+ enddo
+ 299 continue
+ else
+ 300 nr = nr + 1
+ kvstr(nr) = i
+ endif
+ enddo
+ kvstr(nr+1) = n+1
+c---------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+c------------------------end-of-csrkvstr--------------------------------
+ subroutine csrkvstc(n, ia, ja, nc, kvstc, iwk)
+c-----------------------------------------------------------------------
+ integer n, ia(n+1), ja(*), nc, kvstc(*), iwk(*)
+c-----------------------------------------------------------------------
+c Finds block column partitioning of matrix in CSR format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c n = number of matrix scalar rows
+c ia,ja = input matrix sparsity structure in CSR format
+c
+c On return:
+c---------------
+c nc = number of block columns
+c kvstc = first column number for each block column
+c
+c Work space:
+c----------------
+c iwk(*) of size equal to the number of scalar columns plus one.
+c Assumed initialized to 0, and left initialized on return.
+c
+c Notes:
+c-----------
+c Assumes that the matrix is sorted by columns.
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer i, j, k, ncol
+c
+c-----------------------------------------------------------------------
+c-----use ncol to find maximum scalar column number
+ ncol = 0
+c-----mark the beginning position of the blocks in iwk
+ do i = 1, n
+ if (ia(i) .lt. ia(i+1)) then
+ j = ja(ia(i))
+ iwk(j) = 1
+ do k = ia(i)+1, ia(i+1)-1
+ j = ja(k)
+ if (ja(k-1).ne.j-1) then
+ iwk(j) = 1
+ iwk(ja(k-1)+1) = 1
+ endif
+ enddo
+ iwk(j+1) = 1
+ ncol = max0(ncol, j)
+ endif
+ enddo
+c---------------------------------
+ nc = 1
+ kvstc(1) = 1
+ do i = 2, ncol+1
+ if (iwk(i).ne.0) then
+ nc = nc + 1
+ kvstc(nc) = i
+ iwk(i) = 0
+ endif
+ enddo
+ nc = nc - 1
+c---------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+c------------------------end-of-csrkvstc--------------------------------
+c-----------------------------------------------------------------------
+ subroutine kvstmerge(nr, kvstr, nc, kvstc, n, kvst)
+c-----------------------------------------------------------------------
+ integer nr, kvstr(nr+1), nc, kvstc(nc+1), n, kvst(*)
+c-----------------------------------------------------------------------
+c Merges block partitionings, for conformal row/col pattern.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c nr,nc = matrix block row and block column dimension
+c kvstr = first row number for each block row
+c kvstc = first column number for each block column
+c
+c On return:
+c---------------
+c n = conformal row/col matrix block dimension
+c kvst = conformal row/col block partitioning
+c
+c Notes:
+c-----------
+c If matrix is not square, this routine returns without warning.
+c
+c-----------------------------------------------------------------------
+c-----local variables
+ integer i,j
+c---------------------------------
+ if (kvstr(nr+1) .ne. kvstc(nc+1)) return
+ i = 1
+ j = 1
+ n = 1
+ 200 if (i .gt. nr+1) then
+ kvst(n) = kvstc(j)
+ j = j + 1
+ elseif (j .gt. nc+1) then
+ kvst(n) = kvstr(i)
+ i = i + 1
+ elseif (kvstc(j) .eq. kvstr(i)) then
+ kvst(n) = kvstc(j)
+ j = j + 1
+ i = i + 1
+ elseif (kvstc(j) .lt. kvstr(i)) then
+ kvst(n) = kvstc(j)
+ j = j + 1
+ else
+ kvst(n) = kvstr(i)
+ i = i + 1
+ endif
+ n = n + 1
+ if (i.le.nr+1 .or. j.le.nc+1) goto 200
+ n = n - 2
+c---------------------------------
+ return
+c------------------------end-of-kvstmerge-------------------------------
+ end
diff --git a/INFO/README b/INFO/README
new file mode 100644
index 0000000..05dff92
--- /dev/null
+++ b/INFO/README
@@ -0,0 +1,66 @@
+c------------------------------------------------------------------------------c
+c INFO MODULE c
+c------------------------------------------------------------------------------c
+c The INFO module provides some elementary information on a sparse c
+c matrix. Geared towards a matrix in Harwell-Boeing format. c
+c There is also a short main program that will read a Harwell-Boeing c
+c matrix and produce the information on the standard output. See below. c
+c c
+c------------------------------------------------------------------------------c
+c infofun.f contains subroutines: c
+c------------------------------------------------------------------------------c
+c bandwidth : computes the lower, upper, maximum, and average bandwidths. c
+c nonz : computes maximum numbers of nonzero elements per column/row, c
+c minimum numbers of nonzero elements per column/row, and c
+c numbers of zero columns/rows. c
+c diag_domi : computes the percentage of weakly diagonally dominant c
+c rows/columns. c
+c frobnorm : computes the Frobenius norm of A. c
+c ansym : computes the Frobenius norm of the symmetric and non-symmetricc
+c parts of A, computes number of matching elements in symmetry c
+c and relative symmetry match. c
+c distaij : computes the average distance of a(i,j) from diag and standardc
+c deviation for this average. c
+c skyline : computes the number of nonzeros in the skyline storage. c
+c distdiag : computes the numbers of elements in each diagonal. c
+c bandpart : computes the bandwidth of the banded matrix, which contains c
+c 'nper' percent of the original matrix. c
+c n_imp_diag: computes the most important diagonals. c
+c nonz_lud : computes the number of nonzero elements in strict lower part, c
+c strict upper part, and main diagonal. c
+c avnz_col : computes average number of nonzero elements/column and std c
+c deviation for this average. c
+c vbrinfo : Print info on matrix in variable block row format c
+c------------------------------------------------------------------------------c
+c rinfo1.f : contains the main program to produce an executable c
+c rinfoC.f : same thing in C -- info1.ex is made by makeC makefile c
+c------------------------------------------------------------------------------c
+c dinfo13.f : contains the main subroutine called by rinfo1.f c
+c------------------------------------------------------------------------------c
+c makefile: contains the make file to produce info1.ex c
+c makeC: contains the make file to produce info1.ex from rinfoC.c c
+c------------------------------------------------------------------------------c
+c saylr1 : contains the Harwell-Boeing matrix saylr1 for testing purposes. c
+c------------------------------------------------------------------------------c
+c info.saylr1 : contains a sample output (see below) for the matrix saylr1. c
+c------------------------------------------------------------------------------c
+c------------------------------------------------------------------------------c
+c Notes: c
+c------------------------------------------------------------------------------c
+c The makefile will actually create an executable tool called info1.ex c
+c which will provide some information on a Harwell/Boeing matrix. c
+c c
+c Once you have made the executable info1 using the makefile, c
+c you can execute for a matrix stored in the Harwell-Boeing c
+c format. You will need to have a matrix in the harwell/boeing c
+c format and type c
+c c
+c info1.ex < HB_file c
+c c
+c This will dump the info on the standard output/ c
+c c
+c for example typing info1.ex < saylr1 > info.saylr1 c
+c c
+c produces the file info.saylr1. [info.saylr1 is included in this directory c
+c to check whether you get the same answers]. c
+c------------------------------------------------------------------------------c
diff --git a/INFO/dinfo13.f b/INFO/dinfo13.f
new file mode 100644
index 0000000..156c052
--- /dev/null
+++ b/INFO/dinfo13.f
@@ -0,0 +1,394 @@
+ subroutine dinfo1(n,iout,a,ja,ia,valued,
+ * title,key,type,ao,jao,iao)
+ implicit real*8 (a-h,o-z)
+ real*8 a(*),ao(*)
+ integer ja(*),ia(n+1),jao(*),iao(n+1),nzdiag
+ character title*72,key*8,type*3
+ logical valued
+c----------------------------------------------------------------------c
+c SPARSKIT: ELEMENTARY INFORMATION ROUTINE. c
+c----------------------------------------------------------------------c
+c info1 obtains a number of statistics on a sparse matrix and writes c
+c it into the output unit iout. The matrix is assumed c
+c to be stored in the compressed sparse COLUMN format sparse a, ja, ia c
+c----------------------------------------------------------------------c
+c Modified Nov 1, 1989. 1) Assumes A is stored in column
+c format. 2) Takes symmetry into account, i.e., handles Harwell-Boeing
+c matrices correctly.
+c *** (Because of the recent modification the words row and
+c column may be mixed-up at occasions... to be checked...
+c
+c bug-fix July 25: 'upper' 'lower' mixed up in formats 108-107.
+c
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c iout = integer. unit number where the information it to be output.
+c a = real array containing the nonzero elements of the matrix
+c the elements are stored by columns in order
+c (i.e. column i comes before column i+1, but the elements
+c within each column can be disordered).
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c
+c valued= logical equal to .true. if values are provided and .false.
+c if only the pattern of the matrix is provided. (in that
+c case a(*) and ao(*) are dummy arrays.
+c
+c title = a 72-character title describing the matrix
+c NOTE: The first character in title is ignored (it is often
+c a one).
+c
+c key = an 8-character key for the matrix
+c type = a 3-character string to describe the type of the matrix.
+c see harwell/Boeing documentation for more details on the
+c above three parameters.
+c
+c on return
+c----------
+c 1) elementary statistics on the matrix is written on output unit
+c iout. See below for detailed explanation of typical output.
+c 2) the entries of a, ja, ia are sorted.
+c
+c----------
+c
+c ao = real*8 array of length nnz used as work array.
+c jao = integer work array of length max(2*n+1,nnz)
+c iao = integer work array of length n+1
+c
+c Note : title, key, type are the same paramaters as those
+c used for Harwell-Bowing matrices.
+c
+c-----------------------------------------------------------------------
+c Output description:
+c--------------------
+c *** The following info needs to be updated.
+c
+c + A header containing the Title, key, type of the matrix and, if values
+c are not provided a message to that effect.
+c * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+c * SYMMETRIC STRUCTURE MEDIEVAL RUSSIAN TOWNS
+c * Key = RUSSIANT , Type = SSA
+c * No values provided - Information of pattern only
+c * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+c
+c + dimension n, number of nonzero elements nnz, average number of
+c nonzero elements per column, standard deviation for this average.
+c + if the matrix is upper or lower triangular a message to that effect
+c is printed. Also the number of nonzeros in the strict upper
+c (lower) parts and the main diagonal are printed.
+c + weight of longest column. This is the largest number of nonzero
+c elements in a column encountered. Similarly for weight of
+c largest/smallest row.
+c + lower dandwidth as defined by
+c ml = max ( i-j, / all a(i,j).ne. 0 )
+c + upper bandwidth as defined by
+c mu = max ( j-i, / all a(i,j).ne. 0 )
+c NOTE that ml or mu can be negative. ml .lt. 0 would mean
+c that A is confined to the strict upper part above the diagonal
+c number -ml. Similarly for mu.
+c
+c + maximun bandwidth as defined by
+c Max ( Max [ j ; a(i,j) .ne. 0 ] - Min [ j ; a(i,j) .ne. 0 ] )
+c i
+c + average bandwidth = average over all columns of the widths each column.
+c
+c + If there are zero columns /or rows a message is printed
+c giving the number of such columns/rows.
+c
+c + matching elements in A and transp(A) :this counts the number of
+c positions (i,j) such that if a(i,j) .ne. 0 then a(j,i) .ne. 0.
+c if this number is equal to nnz then the matrix is symmetric.
+c + Relative symmetry match : this is the ratio of the previous integer
+c over nnz. If this ratio is equal to one then the matrix has a
+c symmetric structure.
+c
+c + average distance of a given element from the diagonal, standard dev.
+c the distance of a(i,j) is defined as iabs(j-i).
+c
+c + Frobenius norm of A
+c Frobenius norm of 0.5*(A + transp(A))
+c Frobenius norm of 0.5*(A - transp(A))
+c these numbers provide information on the degree of symmetry
+c of the matrix. If the norm of the nonsymmetric part is
+c zero then the matrix is symmetric.
+c
+c + 90% of matrix is in the band of width k, means that
+c by moving away and in a symmetric manner from the main
+c diagonal you would have to include exactly k diagonals
+c (k is always odd), in order to include 90% of the nonzero
+c elements of A. The same thing is then for 80%.
+c
+c + The total number of nonvoid diagonals, i.e., among the
+c 2n-1 diagonals of the matrix which have at least one nonxero
+c element.
+c
+c + Most important diagonals. The code selects a number of k
+c (k .le. 10) diagonals that are the most important ones, i.e.
+c that have the largest number of nonzero elements. Any diagonal
+c that has fewer than 1% of the nonzero elements of A is dropped.
+c the numbers printed are the offsets with respect to the
+c main diagonal, going from left tp right.
+c Thus 0 means the main diagonal -1 means the subdiagonal, and
+c +10 means the 10th upper diagonal.
+c + The accumulated percentages in the next line represent the
+c percentage of the nonzero elements represented by the diagonals
+c up the current one put together.
+c Thus:
+c * The 10 most important diagonals are (offsets) : *
+c * 0 1 2 24 21 4 23 22 20 19 *
+c * The accumulated percentages they represent are : *
+c * 40.4 68.1 77.7 80.9 84.0 86.2 87.2 88.3 89.4 90.4 *
+c *-----------------------------------------------------------------*
+c shows the offsets of the most important diagonals and
+c 40.4 represent ratio of the number of nonzero elements in the
+c diagonal zero (main diagonal) over the total number of nonzero
+c elements. the second number indicates that the diagonal 0 and the
+c diagonal 1 together hold 68.1% of the matrix, etc..
+c
+c + Block structure:
+c if the matrix has a block structure then the block size is found
+c and printed. Otherwise the info1 will say that the matrix
+c does not have a block structure. Note that block struture has
+c a very specific meaning here. the matrix has a block structure
+c if it consists of square blocks that are dense. even if there
+c are zero elements in the blocks they should be represented
+c otherwise it would be possible to determine the block size.
+c
+c-----------------------------------------------------------------------
+ real*8 dcount(20),amx
+ integer ioff(20)
+ character*61 tmpst
+ logical sym
+c-----------------------------------------------------------------------
+ data ipar1 /1/
+ write (iout,99)
+ write (iout,97) title(2:72), key, type
+ 97 format(2x,' * ',a71,' *'/,
+ * 2x,' *',20x,'Key = ',a8,' , Type = ',a3,25x,' *')
+ if (.not. valued) write (iout,98)
+ 98 format(2x,' * No values provided - Information on pattern only',
+ * 23x,' *')
+c---------------------------------------------------------------------
+ nnz = ia(n+1)-ia(1)
+ sym = ((type(2:2) .eq. 'S') .or. (type(2:2) .eq. 'Z')
+ * .or. (type(2:2) .eq. 's') .or. (type(2:2) .eq. 'z'))
+c
+ write (iout, 99)
+ write(iout, 100) n, nnz
+ job = 0
+ if (valued) job = 1
+ ipos = 1
+ call csrcsc(n, job, ipos, a, ja, ia, ao, jao, iao)
+ call csrcsc(n, job, ipos, ao, jao, iao, a, ja, ia)
+c-------------------------------------------------------------------
+c computing max bandwith, max number of nonzero elements per column
+c min nonzero elements per column/row, row/column diagonal dominance
+c occurences, average distance of an element from diagonal, number of
+c elemnts in lower and upper parts, ...
+c------------------------------------------------------------------
+c jao will be modified later, so we call skyline here
+ call skyline(n,sym,ja,ia,jao,iao,nsky)
+ call nonz_lud(n,ja,ia,nlower, nupper, ndiag)
+ call avnz_col(n,ja,ia,iao, ndiag, av, st)
+c------ write out info ----------------------------------------------
+ if (sym) nupper = nlower
+ write(iout, 101) av, st
+ if (nlower .eq. 0 ) write(iout, 105)
+ 1 if (nupper .eq. 0) write(iout, 106)
+ write(iout, 107) nlower
+ write(iout, 108) nupper
+ write(iout, 109) ndiag
+c
+ call nonz(n,sym, ja, ia, iao, nzmaxc, nzminc,
+ * nzmaxr, nzminr, nzcol, nzrow)
+ write(iout, 1020) nzmaxc, nzminc
+c
+ if (.not. sym) write(iout, 1021) nzmaxr, nzminr
+c
+ if (nzcol .ne. 0) write(iout,116) nzcol
+ if (nzrow .ne. 0) write(iout,115) nzrow
+c
+ call diag_domi(n,sym,valued,a, ja,ia,ao, jao, iao,
+ * ddomc, ddomr)
+c-----------------------------------------------------------------------
+c symmetry and near symmetry - Frobenius norms
+c-----------------------------------------------------------------------
+ call frobnorm(n,sym,a,ja,ia,Fnorm)
+ call ansym(n,sym,a,ja,ia,ao,jao,iao,imatch,av,fas,fan)
+ call distaij(n,nnz,sym,ja,ia,dist, std)
+ amx = 0.0d0
+ do 40 k=1, nnz
+ amx = max(amx, abs(a(k)) )
+ 40 continue
+ write (iout,103) imatch, av, dist, std
+ write(iout,96)
+ if (valued) then
+ write(iout,104) Fnorm, fas, fan, amx, ddomr, ddomc
+ write (iout,96)
+ endif
+c-----------------------------------------------------------------------
+c--------------------bandedness- main diagonals ----------------------- -
+c-----------------------------------------------------------------------
+ n2 = n+n-1
+ do 8 i=1, n2
+ jao(i) = 0
+ 8 continue
+ do 9 i=1, n
+ k1 = ia(i)
+ k2 = ia(i+1) -1
+ do 91 k=k1, k2
+ j = ja(k)
+ jao(n+i-j) = jao(n+i-j) +1
+ 91 continue
+ 9 continue
+c
+ call bandwidth(n,ja, ia, ml, mu, iband, bndav)
+c
+c write bandwidth information .
+c
+ write(iout,117) ml, mu, iband, bndav
+c
+ write(iout,1175) nsky
+c
+c call percentage_matrix(n,nnz,ja,ia,jao,90,jb2)
+c call percentage_matrix(n,nnz,ja,ia,jao,80,jb1)
+ nrow = n
+ ncol = n
+ call distdiag(nrow,ncol,ja,ia,jao)
+ call bandpart(n,ja,ia,jao,90,jb2)
+ call bandpart(n,ja,ia,jao,80,jb1)
+ write (iout,112) 2*jb2+1, 2*jb1+1
+c-----------------------------------------------------------------
+ nzdiag = 0
+ n2 = n+n-1
+ do 42 i=1, n2
+ if (jao(i) .ne. 0) nzdiag=nzdiag+1
+ 42 continue
+ call n_imp_diag(n,nnz,jao,ipar1, ndiag,ioff,dcount)
+ write (iout,118) nzdiag
+ write (tmpst,'(10i6)') (ioff(j),j=1,ndiag)
+ write (iout,110) ndiag,tmpst
+ write (tmpst,'(10f6.1)')(dcount(j), j=1,ndiag)
+ write (iout,111) tmpst
+ write (iout, 96)
+c jump to next page -- optional //
+c write (iout,'(1h1)')
+c-----------------------------------------------------------------------
+c determine block size if matrix is a block matrix..
+c-----------------------------------------------------------------------
+ call blkfnd(n, ja, ia, nblk)
+ if (nblk .le. 1) then
+ write(iout,113)
+ else
+ write(iout,114) nblk
+ endif
+ write (iout,96)
+c
+c---------- done. Next define all the formats --------------------------
+c
+ 99 format (2x,38(2h *))
+ 96 format (6x,' *',65(1h-),'*')
+c-----------------------------------------------------------------------
+ 100 format(
+ * 6x,' * Dimension N = ',
+ * i10,' *'/
+ * 6x,' * Number of nonzero elements = ',
+ * i10,' *')
+ 101 format(
+ * 6x,' * Average number of nonzero elements/Column = ',
+ * f10.4,' *'/
+ * 6x,' * Standard deviation for above average = ',
+ * f10.4,' *')
+c-----------------------------------------------------------------------
+ 1020 format(
+ * 6x,' * Weight of longest column = ',
+ * i10,' *'/
+ * 6x,' * Weight of shortest column = ',
+ * i10,' *')
+ 1021 format(
+ * 6x,' * Weight of longest row = ',
+ * i10,' *'/
+ * 6x,' * Weight of shortest row = ',
+ * i10,' *')
+ 117 format(
+ * 6x,' * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = ',
+ * i10,' *'/
+ * 6x,' * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = ',
+ * i10,' *'/
+ * 6x,' * Maximum Bandwidth = ',
+ * i10,' *'/
+ * 6x,' * Average Bandwidth = ',
+ * e10.3,' *')
+ 1175 format(
+ * 6x,' * Number of nonzeros in skyline storage = ',
+ * i10,' *')
+ 103 format(
+ * 6x,' * Matching elements in symmetry = ',
+ * i10,' *'/
+ * 6x,' * Relative Symmetry Match (symmetry=1) = ',
+ * f10.4,' *'/
+ * 6x,' * Average distance of a(i,j) from diag. = ',
+ * e10.3,' *'/
+ * 6x,' * Standard deviation for above average = ',
+ * e10.3,' *')
+ 104 format(
+ * 6x,' * Frobenius norm of A = ',
+ * e10.3,' *'/
+ * 6x,' * Frobenius norm of symmetric part = ',
+ * e10.3,' *'/
+ * 6x,' * Frobenius norm of nonsymmetric part = ',
+ * e10.3,' *'/
+ * 6x,' * Maximum element in A = ',
+ * e10.3,' *'/
+ * 6x,' * Percentage of weakly diagonally dominant rows = ',
+ * e10.3,' *'/
+ * 6x,' * Percentage of weakly diagonally dominant columns = ',
+ * e10.3,' *')
+ 105 format(
+ * 6x,' * The matrix is lower triangular ... ',21x,' *')
+ 106 format(
+ * 6x,' * The matrix is upper triangular ... ',21x,' *')
+ 107 format(
+ * 6x,' * Nonzero elements in strict lower part = ',
+ * i10,' *')
+ 108 format(
+ * 6x,' * Nonzero elements in strict upper part = ',
+ * i10,' *')
+ 109 format(
+ * 6x,' * Nonzero elements in main diagonal = ',
+ * i10,' *')
+ 110 format(6x,' * The ', i2, ' most important',
+ * ' diagonals are (offsets) : ',10x,' *',/,
+ * 6x,' *',a61,3x,' *')
+ 111 format(6x,' * The accumulated percentages they represent are ',
+ * ' : ', 10x,' *',/,
+ * 6x,' *',a61,3x,' *')
+c 111 format(
+c * 6x,' * They constitute the following % of A = ',
+c * f8.1,' % *')
+ 112 format(
+ * 6x,' * 90% of matrix is in the band of width = ',
+ * i10,' *',/,
+ * 6x,' * 80% of matrix is in the band of width = ',
+ * i10,' *')
+ 113 format(
+ * 6x,' * The matrix does not have a block structure ',19x,
+ * ' *')
+ 114 format(
+ * 6x,' * Block structure found with block size = ',
+ * i10,' *')
+ 115 format(
+ * 6x,' * There are zero rows. Number of such rows = ',
+ * i10,' *')
+ 116 format(
+ * 6x,' * There are zero columns. Number of such columns = ',
+ * i10,' *')
+ 118 format(
+ * 6x,' * The total number of nonvoid diagonals is = ',
+ * i10,' *')
+c-------------------------- end of dinfo --------------------------
+ return
+ end
diff --git a/INFO/info.saylr1 b/INFO/info.saylr1
new file mode 100644
index 0000000..5f301b0
--- /dev/null
+++ b/INFO/info.saylr1
@@ -0,0 +1,42 @@
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * unsymmetric matrix of paul saylor - 14 by 17 2d grid may, 1983 *
+ * Key = saylr1 , Type = rua *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Dimension N = 238 *
+ * Number of nonzero elements = 1128 *
+ * Average number of nonzero elements/Column = 4.7395 *
+ * Standard deviation for above average = 0.4757 *
+ * Nonzero elements in strict lower part = 445 *
+ * Nonzero elements in strict upper part = 445 *
+ * Nonzero elements in main diagonal = 238 *
+ * Weight of longest column = 5 *
+ * Weight of shortest column = 3 *
+ * Weight of longest row = 5 *
+ * Weight of shortest row = 3 *
+ * Matching elements in symmetry = 1128 *
+ * Relative Symmetry Match (symmetry=1) = 1.0000 *
+ * Average distance of a(i,j) from diag. = 0.595E+01 *
+ * Standard deviation for above average = 0.654E+01 *
+ *-----------------------------------------------------------------*
+ * Frobenius norm of A = 0.886E+09 *
+ * Frobenius norm of symmetric part = 0.991E+09 *
+ * Frobenius norm of nonsymmetric part = 0.443E+09 *
+ * Maximum element in A = 0.306E+09 *
+ * Percentage of weakly diagonally dominant rows = 0.761E+00 *
+ * Percentage of weakly diagonally dominant columns = 0.744E+00 *
+ *-----------------------------------------------------------------*
+ * Lower bandwidth (max: i-j, a(i,j) .ne. 0) = 14 *
+ * Upper bandwidth (max: j-i, a(i,j) .ne. 0) = 14 *
+ * Maximum Bandwidth = 29 *
+ * Average Bandwidth = 0.275E+02 *
+ * Number of nonzeros in skyline storage = 6536 *
+ * 90% of matrix is in the band of width = 27 *
+ * 80% of matrix is in the band of width = 27 *
+ * The total number of nonvoid diagonals is = 5 *
+ * The 5 most important diagonals are (offsets) : *
+ * 0 14 -14 1 -1 *
+ * The accumulated percentages they represent are : *
+ * 21.1 41.0 60.8 80.4 100.0 *
+ *-----------------------------------------------------------------*
+ * The matrix does not have a block structure *
+ *-----------------------------------------------------------------*
diff --git a/INFO/infofun.f b/INFO/infofun.f
new file mode 100644
index 0000000..85b4c7f
--- /dev/null
+++ b/INFO/infofun.f
@@ -0,0 +1,800 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c INFORMATION ROUTINES. INFO MODULE c
+c----------------------------------------------------------------------c
+c bandwidth : Computes ml = lower_bandwidth(A) c
+c mu = upper_bandwidth(A) c
+c iband = max_bandwidth(A) c
+c bndav = average_bandwidth(A) c
+c nonz : Computes nzmaxc = max_column_length(A) c
+c nzminc = min_column_length(A) c
+c nzmaxr = max_row_length(A) c
+c nzminr = min_row_length(A) c
+c nzcol = zero_column_number(A) c
+c nzrow = zero_row_number(A) c
+c diag_domi : Computes ddomc = diag_domi_column_percentage(A) c
+c ddomr = diag_domi_row_percentage(A) c
+c frobnorm : Computes Fnorm = Frobenius_norm(A) c
+c ansym : Computes fas = sym_part_Frobenius_norm(A) c
+c fan = nonsym_part_Frobenius_norm(A) c
+c imatch = matching_elements_number(A) c
+c av = relative_sym_match(A) c
+c distaij : Computes dist = average_dist_of_a(i,j)(A) c
+c std = standard_deviation(A) c
+c skyline : Computes nsky = nonzero_number_in_skyline(A) c
+c distdiag : Computes dist = element_number_in_eachdiag(A) c
+c bandpart : Computes band = bandwidth_width(A) c
+c n_imp_diag: Computes ndiag = important_diag_number(A) c
+c nonz_lud : Computes nlower = nonzero_number_of_lower_part(A) c
+c nupper = nonzero_number_of_upper_part(A) c
+c ndiag = nonzero_number_of_maindiag(A) c
+c avnz_col : Computes av = average_nonzero_number_in_column(A) c
+c st = standard_deviation(A) c
+c vbrinfo : Print info on matrix in variable block row format c
+c----------------------------------------------------------------------c
+ subroutine bandwidth(n,ja, ia, ml, mu, iband, bndav)
+ implicit none
+ integer n, ml, mu, iband
+ integer ja(*), ia(n+1)
+ real*8 bndav
+c-----------------------------------------------------------------------
+c this routine computes the lower, upper, maximum, and average
+c bandwidths. revised -- July 12, 2001 -- bug fix -- YS.
+c-----------------------------------------------------------------------
+c On Entry:
+c----------
+c n = integer. column dimension of matrix
+c a = real array containing the nonzero elements of the matrix
+c the elements are stored by columns in order
+c (i.e. column i comes before column i+1, but the elements
+c within each column can be disordered).
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c
+c on return
+c----------
+c ml = lower bandwidth as defined by
+c ml = max(i-j | all a(i,j).ne. 0)
+c mu = upper bandwidth as defined by
+c mu = max ( j-i | all a(i,j).ne. 0 )
+c iband = maximum bandwidth as defined by
+c iband = Max ( Max [ j | a(i,j) .ne. 0 ] -
+c Min [ j | a(i,j) .ne. 0 ] )
+c bndav = Average Bandwidth
+c-----------------------------------------------------------------------
+c locals
+ integer max
+ integer j0, j1, jminc, jmaxc, i
+c-----------------------------------------------------------------------
+ ml = -n
+ mu = -n
+ bndav = 0.0d0
+ iband = 0
+ do 10 i=1,n
+ j0 = ia(i)
+ j1 = ia(i+1) - 1
+ jminc = ja(j0)
+ jmaxc = ja(j1)
+ ml = max(ml,i-jminc)
+ mu = max(mu,jmaxc-i)
+ iband = max(iband,jmaxc-jminc+1)
+ bndav = bndav+real( jmaxc-jminc+1)
+ 10 continue
+ bndav = bndav/real(n)
+ return
+c-----end-of-bandwidth--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine nonz(n,sym, ja, ia, iao, nzmaxc, nzminc,
+ * nzmaxr, nzminr, nzcol, nzrow)
+ implicit none
+ integer n , nzmaxc, nzminc, nzmaxr, nzminr, nzcol, nzrow
+ integer ja(*), ia(n+1), iao(n+1)
+ logical sym
+c----------------------------------------------------------------------
+c this routine computes maximum numbers of nonzero elements
+c per column/row, minimum numbers of nonzero elements per column/row,
+c and numbers of zero columns/rows.
+c----------------------------------------------------------------------
+c On Entry:
+c----------
+c n = integer column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c iao = similar array for the transpose of the matrix.
+c sym = logical variable indicating whether or not the matrix is
+c stored in symmetric mode.
+c on return
+c----------
+c nzmaxc = max length of columns
+c nzminc = min length of columns
+c nzmaxr = max length of rows
+c nzminr = min length of rows
+c nzcol = number of zero columns
+c nzrow = number of zero rows
+c-----------------------------------------------------------------------
+ integer i, j0, j0r, j1r, indiag, k, j1, lenc, lenr
+c
+ nzmaxc = 0
+ nzminc = n
+ nzmaxr = 0
+ nzminr = n
+ nzcol = 0
+ nzrow = 0
+c-----------------------------------------------------------------------
+ do 10 i = 1, n
+ j0 = ia(i)
+ j1 = ia(i+1)
+ j0r = iao(i)
+ j1r = iao(i+1)
+ indiag = 0
+ do 20 k=j0, j1-1
+ if (ja(k) .eq. i) indiag = 1
+ 20 continue
+c
+ lenc = j1-j0
+ lenr = j1r-j0r
+c
+ if (sym) lenc = lenc + lenr - indiag
+ if (lenc .le. 0) nzcol = nzcol +1
+ nzmaxc = max0(nzmaxc,lenc)
+ nzminc = min0(nzminc,lenc)
+ if (lenr .le. 0) nzrow = nzrow+1
+ nzmaxr = max0(nzmaxr,lenr)
+ nzminr = min0(nzminr,lenr)
+ 10 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine diag_domi(n,sym,valued,a, ja,ia,ao,jao, iao,
+ * ddomc, ddomr)
+ implicit none
+ real*8 a(*), ao(*), ddomc, ddomr
+ integer n, ja(*), ia(n+1), jao(*), iao(n+1)
+ logical sym, valued
+c-----------------------------------------------------------------
+c this routine computes the percentage of weakly diagonally
+c dominant rows/columns
+c-----------------------------------------------------------------
+c on entry:
+c ---------
+c n = integer column dimension of matrix
+c a = real array containing the nonzero elements of the matrix
+c the elements are stored by columns in order
+c (i.e. column i comes before column i+1, but the elements
+c within each column can be disordered).
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c ao = real array containing the nonzero elements of the matrix
+c the elements are stored by rows in order
+c (i.e. row i comes before row i+1, but the elements
+c within each row can be disordered).
+c ao,jao, iao,
+c structure for transpose of a
+c sym = logical variable indicating whether or not the matrix is
+c symmetric.
+c valued= logical equal to .true. if values are provided and .false.
+c if only the pattern of the matrix is provided. (in that
+c case a(*) and ao(*) are dummy arrays.
+c
+c ON RETURN
+c----------
+c ddomc = percentage of weakly diagonally dominant columns
+c ddomr = percentage of weakly diagonally dominant rows
+c-------------------------------------------------------------------
+c locals
+ integer i, j0, j1, k, j
+ real*8 aii, dsumr, dsumc
+c number of diagonally dominant columns
+c real arithmetic used to avoid problems.. YS. 03/27/01
+ ddomc = 0.0
+c number of diagonally dominant rows
+ ddomr = 0.0
+ do 10 i = 1, n
+ j0 = ia(i)
+ j1 = ia(i+1) - 1
+ if (valued) then
+ aii = 0.0d0
+ dsumc = 0.0d0
+ do 20 k=j0,j1
+ j = ja(k)
+ if (j .eq. i) then
+ aii = abs(a(k))
+ else
+ dsumc = dsumc + abs(a(k))
+ endif
+ 20 continue
+ dsumr = 0.0d0
+ if (.not. sym) then
+ do 30 k=iao(i), iao(i+1)-1
+ if (jao(k) .ne. i) dsumr = dsumr+abs(ao(k))
+ 30 continue
+ else
+ dsumr = dsumc
+ endif
+ if (dsumc .le. aii) ddomc = ddomc + 1.0
+ if (dsumr .le. aii) ddomr = ddomr + 1.0
+ endif
+ 10 continue
+ ddomr = ddomr / real(n)
+ ddomc = ddomc / real(n)
+ return
+c-----------------------------------------------------------------------
+c--------end-of-diag_moni-----------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine frobnorm(n,sym,a,ja,ia,Fnorm)
+ implicit none
+ integer n
+ real*8 a(*),Fnorm
+ integer ja(*),ia(n+1)
+ logical sym
+c--------------------------------------------------------------------------
+c this routine computes the Frobenius norm of A.
+c--------------------------------------------------------------------------
+c on entry:
+c-----------
+c n = integer colum dimension of matrix
+c a = real array containing the nonzero elements of the matrix
+c the elements are stored by columns in order
+c (i.e. column i comes before column i+1, but the elements
+c within each column can be disordered).
+c ja = integer array containing the row indices of elements in a.
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and
+c ja. It is assumed that ia(*)= 1 and ia(n+1) = nnz +1.
+c sym = logical variable indicating whether or not the matrix is
+c symmetric.
+c
+c on return
+c-----------
+c Fnorm = Frobenius norm of A.
+c--------------------------------------------------------------------------
+ real*8 Fdiag
+ integer i, k
+ Fdiag = 0.0
+ Fnorm = 0.0
+ do i =1,n
+ do k = ia(i), ia(i+1)-1
+ if (ja(k) .eq. i) then
+ Fdiag = Fdiag + a(k)**2
+ else
+ Fnorm = Fnorm + a(k)**2
+ endif
+ enddo
+ enddo
+ if (sym) then
+ Fnorm = 2*Fnorm +Fdiag
+ else
+ Fnorm = Fnorm + Fdiag
+ endif
+ Fnorm = sqrt(Fnorm)
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine ansym(n,sym,a,ja,ia,ao,jao,iao,imatch,
+ * av,fas,fan)
+c---------------------------------------------------------------------
+c this routine computes the Frobenius norm of the symmetric and
+c non-symmetric parts of A, computes number of matching elements
+c in symmetry and relative symmetry match.
+c---------------------------------------------------------------------
+c on entry:
+c----------
+c n = integer column dimension of matrix
+c a = real array containing the nonzero elements of the matrix
+c the elements are stored by columns in order
+c (i.e. column i comes before column i+1, but the elements
+c within each column can be disordered).
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c sym = logical variable indicating whether or not the matrix is
+c symmetric.
+c on return
+c----------
+c fas = Frobenius norm of symmetric part
+c fan = Frobenius norm of non-symmetric part
+c imatch = number of matching elements in symmetry
+c av = relative symmetry match (symmetry = 1)
+c ao,jao,iao = transpose of A just as a, ja, ia contains
+c information of A.
+c-----------------------------------------------------------------------
+ implicit real*8 (a-h, o-z)
+ real*8 a(*),ao(*),fas,fan,av, Fnorm, st
+ integer n, ja(*), ia(n+1), jao(*), iao(n+1),imatch
+ logical sym
+c-----------------------------------------------------------------------
+ nnz = ia(n+1)-ia(1)
+ call csrcsc(n,1,1,a,ja,ia,ao,jao,iao)
+ if (sym) goto 7
+ st = 0.0d0
+ fas = 0.0d0
+ fan = 0.0d0
+ imatch = 0
+ do 6 i=1,n
+ k1 = ia(i)
+ k2 = iao(i)
+ k1max = ia(i+1) - 1
+ k2max = iao(i+1) - 1
+c
+ 5 if (k1 .gt. k1max .or. k2 .gt. k2max) goto 6
+c
+ j1 = ja(k1)
+ j2 = jao(k2)
+ if (j1 .ne. j2 ) goto 51
+ fas = fas + (a(k1)+ao(k2))**2
+ fan = fan + (a(k1)-ao(k2))**2
+ st = st + a(k1)**2
+ imatch = imatch + 1
+ 51 k1 = k1+1
+ k2 = k2+1
+ if (j1 .lt. j2) k2 = k2 - 1
+ if (j1 .gt. j2) k1 = k1 - 1
+ goto 5
+ 6 continue
+ fas = 0.25D0 * fas
+ fan = 0.25D0 * fan
+ 7 call frobnorm(n,sym,ao,jao,iao,Fnorm)
+ if (sym) then
+ imatch = nnz
+ fas = Fnorm
+ fan = 0.0d0
+ else
+ if (imatch.eq.nnz) then
+ st = 0.0D0
+ else
+ st = 0.5D0 * (Fnorm**2 - st)
+ if (st.lt.0.0D0) st = 0.0D0
+ endif
+ fas = sqrt(fas + st)
+ fan = sqrt(fan + st)
+ endif
+ av = real(imatch)/real(nnz)
+ return
+ end
+c------end-of-ansym-----------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine distaij(n,nnz,sym,ja,ia,dist, std)
+ implicit real*8 (a-h, o-z)
+ real*8 dist, std
+ integer ja(*), ia(n+1)
+c-----------------------------------------------------------------------
+c this routine computes the average distance of a(i,j) from diag and
+c standard deviation for this average.
+c-----------------------------------------------------------------------
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c nnz = number of nonzero elements of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c sym = logical variable indicating whether or not the matrix is
+c symmetric.
+c on return
+c----------
+c dist = average distance of a(i,j) from diag.
+c std = standard deviation for above average.
+c-----------------------------------------------------------------------
+c
+c distance of an element from diagonal.
+c
+ dist = 0.0
+ std = 0.0
+ do 3 i=1,n
+ j0 = ia(i)
+ j1 = ia(i+1) - 1
+ do 31 k=j0, j1
+ j=ja(k)
+ dist = dist + real(iabs(j-i) )
+ 31 continue
+ 3 continue
+ dist = dist/real(nnz)
+ do 6 i = 1, n
+ do 61 k=ia(i), ia(i+1) - 1
+ std=std+(dist-real(iabs(ja(k)-i)))**2
+ 61 continue
+ 6 continue
+ std = sqrt(std/ real(nnz))
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine skyline(n,sym,ja,ia,jao,iao,nsky)
+ implicit real*8 (a-h, o-z)
+ integer n, ja(*), ia(n+1), jao(*), iao(n+1)
+ integer nskyl, nskyu, nsky
+ logical sym
+c-------------------------------------------------------------------
+c this routine computes the number of nonzeros in the skyline storage.
+c-------------------------------------------------------------------
+c
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c iao = integer array containing of length n+1 containing the
+c pointers to the beginning of the rows in arrays ao and jao.
+c It is assumed that iao(*) = 1 and iao(n+1) = nzz+1.
+c jao = integer array containing the column indices of elements in ao.
+c sym = logical variable indicating whether or not the matrix is
+c symmetric.
+c on return
+c----------
+c nsky = number of nonzeros in skyline storage
+c-------------------------------------------------------------------
+c
+c nskyu = skyline storage for upper part
+ nskyu = 0
+c nskyl = skyline storage for lower part
+ nskyl = 0
+ do 10 i=1,n
+ j0 = ia(i)
+ j0r = iao(i)
+
+ jminc = ja(j0)
+ jminr = jao(j0r)
+ if (sym) jminc = jminr
+
+ nskyl = nskyl + i-jminr + 1
+ nskyu = nskyu + i-jminc + 1
+
+ 10 continue
+ nsky = nskyl+nskyu-n
+ if (sym) nsky = nskyl
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine distdiag(nrow,ncol,ja,ia,dist)
+ implicit real*8 (a-h, o-z)
+ integer nrow,ncol,ja(*), ia(nrow+1),dist(*)
+c----------------------------------------------------------------------
+c this routine computes the numbers of elements in each diagonal.
+c----------------------------------------------------------------------
+c On entry :
+c-----------
+c nrow = integer. row dimension of matrix
+c ncol = integer. column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c on return
+c----------
+c dist = integer array containing the numbers of elements in each of
+c the nrow+ncol-1 diagonals of A. dist(k) contains the
+c number of elements in diagonal '-nrow+k'. k ranges from
+c 1 to (nrow+ncol-1).
+c----------------------------------------------------------------------
+ nnz = ia(nrow+1)-ia(1)
+ n2 = nrow+ncol-1
+ do 8 i=1, n2
+ dist(i) = 0
+ 8 continue
+ do 9 i=1, nrow
+ k1 = ia(i)
+ k2 = ia(i+1) -1
+ do 91 k=k1, k2
+ j = ja(k)
+ dist(nrow+j-i) = dist(nrow+j-i) +1
+ 91 continue
+ 9 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine bandpart(n,ja,ia,dist,nper,band)
+ implicit real*8 (a-h, o-z)
+ integer n,ja(*), ia(n+1),dist(*)
+ integer nper,band
+c-------------------------------------------------------------------------
+c this routine computes the bandwidth of the banded matrix, which contains
+c 'nper' percent of the original matrix.
+c-------------------------------------------------------------------------
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c dist = integer array containing the numbers of elements in the
+c matrix with different distance of row indices and column
+c indices.
+c nper = percentage of matrix within the bandwidth
+c on return
+c----------
+c band = the width of the bandwidth
+c----------------------------------------------------------------------
+ nnz = ia(n+1)-ia(1)
+ iacc = dist(n)
+ band = 0
+ j = 0
+ 10 j = j+1
+ iacc = iacc + dist(n+j) +dist(n-j)
+ if (iacc*100 .le. nnz*nper) then
+ band = band +1
+ goto 10
+ endif
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine n_imp_diag(n,nnz,dist, ipar1,ndiag,ioff,dcount)
+ implicit real*8 (a-h, o-z)
+ real*8 dcount(*)
+ integer n,nnz, dist(*), ndiag, ioff(*), ipar1
+c-----------------------------------------------------------------------
+c this routine computes the most important diagonals.
+c-----------------------------------------------------------------------
+c
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c nnz = number of nonzero elements of matrix
+c dist = integer array containing the numbers of elements in the
+c matrix with different distance of row indices and column
+c indices. ipar1 = percentage of nonzero elements of A that
+c a diagonal should have in order to be an important diagonal
+c on return
+c----------
+c ndiag = number of the most important diagonals
+c ioff = the offsets with respect to the main diagonal
+c dcount= the accumulated percentages
+c-----------------------------------------------------------------------
+ n2 = n+n-1
+ ndiag = 10
+ ndiag = min0(n2,ndiag)
+ itot = 0
+ ii = 0
+ idiag = 0
+c sort diagonals by decreasing order of weights.
+ 40 jmax = 0
+ i = 1
+ do 41 k=1, n2
+ j = dist(k)
+ if (j .lt. jmax) goto 41
+ i = k
+ jmax = j
+ 41 continue
+c permute ----
+c save offsets and accumulated count if diagonal is acceptable
+c (if it has at least ipar1*nnz/100 nonzero elements)
+c quite if no more acceptable diagonals --
+c
+ if (jmax*100 .lt. ipar1*nnz) goto 4
+ ii = ii+1
+ ioff(ii) = i-n
+ dist(i) = - jmax
+ itot = itot + jmax
+ dcount(ii) = real(100*itot)/real(nnz)
+ if (ii .lt. ndiag) goto 40
+ 4 continue
+ ndiag = ii
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine nonz_lud(n,ja,ia,nlower, nupper, ndiag)
+ implicit real*8 (a-h, o-z)
+ integer n, ja(*), ia(n+1)
+ integer nlower, nupper, ndiag
+c-----------------------------------------------------------------------
+c this routine computes the number of nonzero elements in strict lower
+c part, strict upper part, and main diagonal.
+c-----------------------------------------------------------------------
+c
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c on return
+c----------
+c nlower= number of nonzero elements in strict lower part
+c nupper= number of nonzero elements in strict upper part
+c ndiag = number of nonzero elements in main diagonal
+c-------------------------------------------------------------------
+c
+c number of nonzero elements in upper part
+c
+ nupper = 0
+ ndiag = 0
+
+ do 3 i=1,n
+c indiag = nonzero diagonal element indicator
+ do 31 k=ia(i), ia(i+1)-1
+ j=ja(k)
+ if (j .lt. i) nupper = nupper+1
+ if (j .eq. i) ndiag = ndiag + 1
+ 31 continue
+ 3 continue
+ nlower = ia(n+1)-1-nupper-ndiag
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine avnz_col(n,ja,ia,iao, ndiag, av, st)
+ implicit real*8 (a-h, o-z)
+ real*8 av, st
+ integer n, ja(*), ia(n+1), iao(n+1)
+c---------------------------------------------------------------------
+c this routine computes average number of nonzero elements/column and
+c standard deviation for this average
+c---------------------------------------------------------------------
+c
+c On entry :
+c-----------
+c n = integer. column dimension of matrix
+c ja = integer array containing the row indices of elements in a
+c ia = integer array containing of length n+1 containing the
+c pointers to the beginning of the columns in arrays a and ja.
+c It is assumed that ia(*) = 1 and ia(n+1) = nzz+1.
+c ndiag = number of the most important diagonals
+c On return
+c----------
+c av = average number of nonzero elements/column
+c st = standard deviation for this average
+c Notes
+c---------
+c standard deviation will not be correct for symmetric storage.
+c----------------------------------------------------------------------
+c standard deviatioan for the average
+ st = 0.0d0
+c average and standard deviation
+c
+ av = real(ia(n+1)-1)/real(n)
+c
+c will be corrected later.
+c
+ do 3 i=1,n
+ j0 = ia(i)
+ j1 = ia(i+1) - 1
+c indiag = nonzero diagonal element indicator
+ do 31 k=j0, j1
+ j=ja(k)
+ 31 continue
+ lenc = j1+1-j0
+ st = st + (real(lenc) - av)**2
+ 3 continue
+c
+ st = sqrt( st / real(n) )
+ return
+ end
+c-----------------------------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine vbrinfo(nr, nc, kvstr, kvstc, ia, ja, ka, iwk, iout)
+c-----------------------------------------------------------------------
+ integer nr, nc, kvstr(nr+1), kvstc(nc+1), ia(nr+1), ja(*), ka(*)
+ integer iwk(nr+nc+2+nr), iout
+c-----------------------------------------------------------------------
+c Print info on matrix in variable block row format.
+c-----------------------------------------------------------------------
+c On entry:
+c--------------
+c nr,nc = matrix block row and block column dimension
+c kvstr = first row number for each block row
+c kvstc = first column number for each block column
+c ia,ja,ka,a = input matrix in VBR format
+c iout = unit number for printed output
+c
+c On return:
+c---------------
+c Printed output to unit number specified in iout. If a non-square
+c matrix is provided, the analysis will be performed on the block
+c rows, otherwise a row/column conformal partitioning will be used.
+c
+c Work space:
+c----------------
+c iwk(1:nb+1) = conformal block partitioning
+c (nb is unknown at start but is no more than nr+nc)
+c iwk(nb+2:nb+2+nr) = frequency of each blocksize
+c The workspace is not assumed to be initialized to zero, nor is it
+c left that way.
+c
+c-----------------------------------------------------------------------
+c-----local variables
+ integer n, nb, nnz, nnzb, i, j, neq, max, num
+ character*101 tmpst
+ integer bsiz(10), freq(10)
+c-----------------------------------------------------------------------
+ n = kvstr(nr+1)-1
+ nnz = ka(ia(nr+1)) - ka(1)
+ nnzb = ia(nr+1) - ia(1)
+ write (iout, 96)
+ write (iout, 100) n, nnz, real(nnz)/real(n)
+ write (iout, 101) nr, nnzb, real(nnzb)/real(nr)
+c-----if non-square matrix, do analysis on block rows,
+c else do analysis on conformal partitioning
+ if (kvstr(nr+1) .ne. kvstc(nc+1)) then
+ write (iout, 103)
+ do i = 1, nr+1
+ iwk(i) = kvstr(i)
+ enddo
+ nb = nr
+ else
+ call kvstmerge(nr, kvstr, nc, kvstc, nb, iwk)
+ if ((nr .ne. nc) .or. (nc .ne. nb)) write (iout, 104) nb
+ endif
+c-----accumulate frequencies of each blocksize
+ max = 1
+ iwk(1+nb+2) = 0
+ do i = 1, nb
+ neq = iwk(i+1) - iwk(i)
+ if (neq .gt. max) then
+ do j = max+1, neq
+ iwk(j+nb+2) = 0
+ enddo
+ max = neq
+ endif
+ iwk(neq+nb+2) = iwk(neq+nb+2) + 1
+ enddo
+c-----store largest 10 of these blocksizes
+ num = 0
+ do i = max, 1, -1
+ if ((iwk(i+nb+2) .ne. 0) .and. (num .lt. 10)) then
+ num = num + 1
+ bsiz(num) = i
+ freq(num) = iwk(i+nb+2)
+ endif
+ enddo
+c-----print information about blocksizes
+ write (iout, 109) num
+ write (tmpst,'(10i6)') (bsiz(j),j=1,num)
+ write (iout,110) num,tmpst
+ write (tmpst,'(10i6)') (freq(j),j=1,num)
+ write (iout,111) tmpst
+ write (iout, 96)
+c-----------------------------------------------------------------------
+ 99 format (2x,38(2h *))
+ 96 format (6x,' *',65(1h-),'*')
+ 100 format(
+ * 6x,' * Number of rows = ',
+ * i10,' *'/
+ * 6x,' * Number of nonzero elements = ',
+ * i10,' *'/
+ * 6x,' * Average number of nonzero elements/Row = ',
+ * f10.4,' *')
+ 101 format(
+ * 6x,' * Number of block rows = ',
+ * i10,' *'/
+ * 6x,' * Number of nonzero blocks = ',
+ * i10,' *'/
+ * 6x,' * Average number of nonzero blocks/Block row = ',
+ * f10.4,' *')
+ 103 format(
+ * 6x,' * Non-square matrix. ',
+ * ' *'/
+ * 6x,' * Performing analysis on block rows. ',
+ * ' *')
+ 104 format(
+ * 6x,' * Non row-column conformal partitioning supplied. ',
+ * ' *'/
+ * 6x,' * Using conformal partitioning. Number of bl rows = ',
+ * i10,' *')
+ 109 format(
+ * 6x,' * Number of different blocksizes = ',
+ * i10,' *')
+ 110 format(6x,' * The ', i2, ' largest dimension nodes',
+ * ' have dimension : ',10x,' *',/,
+ * 6x,' *',a61,3x,' *')
+ 111 format(6x,' * The frequency of nodes these ',
+ * 'dimensions are : ',10x,' *',/,
+ * 6x,' *',a61,3x,' *')
+c---------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+c-----------------------end-of-vbrinfo----------------------------------
diff --git a/INFO/makefile b/INFO/makefile
new file mode 100644
index 0000000..8e1acac
--- /dev/null
+++ b/INFO/makefile
@@ -0,0 +1,18 @@
+#
+F77 = f77
+#F77 = cf77
+FFLAGS = -g -Wall
+
+FILES = rinfo1.o dinfo13.o
+## needs library libskit.a in whatever machine version --
+
+LIB = -L/project/darpa/lib/PC -lskit
+##LIB = -L/project/darpa/lib/solaris -lskit
+
+info1.ex: $(FILES)
+ $(F77) -o info1.ex $(FILES) $(LIB)
+
+clean:
+ rm -f *.o *.ex core *.trace *~
+
+.f.o : ; $(F77) $(FFLAGS) -c $*.f -o $*.o \ No newline at end of file
diff --git a/INFO/rinfo1.f b/INFO/rinfo1.f
new file mode 100644
index 0000000..9ebbc82
--- /dev/null
+++ b/INFO/rinfo1.f
@@ -0,0 +1,39 @@
+ program info1
+c----------------------------------------------------------------------
+c usage info1.ex < HB_file
+c
+c where info1 is the executable generated by makefile, HB_file is a
+c file containing a matrix stored in Harwell-Boeing matrices.
+c Info1 will then dump the information into the standard output.
+c
+c To use with larger matrices, increase nmax and nzmax.
+c----------------------------------------------------------------------
+ implicit none
+ integer nmax, nzmax
+ parameter (nmax = 30000, nzmax = 800000)
+ integer ia(nmax+1),ia1(nmax+1),ja(nzmax),ja1(nzmax)
+ real*8 a(nzmax),a1(nzmax),rhs(1)
+ character title*72, type*3, key*8, guesol*2
+ logical valued
+c
+ integer job, iin, nrow,ncol,nnz,ierr, nrhs, iout
+c--------------
+ data iin /5/, iout/6/
+c--------------
+ job = 2
+ nrhs = 0
+ call readmt (nmax,nzmax,job,iin,a,ja,ia, rhs, nrhs,
+ * guesol,nrow,ncol,nnz,title,key,type,ierr)
+c---- if not readable return
+ if (ierr .ne. 0) then
+ write (iout,100) ierr
+ 100 format(' **ERROR: Unable to read matrix',/,
+ * ' Message returned fom readmt was ierr =',i3)
+ stop
+ endif
+ valued = (job .ge. 2)
+c-------
+ call dinfo1(ncol,iout,a,ja,ia,valued,title,key,type,a1,ja1,ia1)
+c--------------------end------------------------------------------------
+c-----------------------------------------------------------------------
+ end
diff --git a/INFO/rinfoC.c b/INFO/rinfoC.c
new file mode 100644
index 0000000..65253a4
--- /dev/null
+++ b/INFO/rinfoC.c
@@ -0,0 +1,104 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#define readmtc readmtc_
+#define dinfo1 dinfo1_
+
+#define max(a,b) (((a)>(b))?(a):(b))
+
+void errexit( char *f_str, ... )
+{
+ va_list argp;
+ char out1[256], out2[256];
+
+ va_start(argp, f_str);
+ vsprintf(out1, f_str, argp);
+ va_end(argp);
+
+ sprintf(out2, "Error! %s\n", out1);
+
+ fprintf(stdout, out2);
+ fflush(stdout);
+
+ exit( -1 );
+}
+
+void *Malloc( int nbytes, char *msg )
+{
+ void *ptr;
+
+ if (nbytes == 0)
+ return NULL;
+
+ ptr = (void *)malloc(nbytes);
+ if (ptr == NULL)
+ errexit( "Not enough mem for %s. Requested size: %d bytes", msg, nbytes );
+
+ return ptr;
+}
+
+int main( int argc, char **argv )
+{
+/*----------------------------------------------------------------------
+ * usage info1.ex HB_file
+ *
+ * where info1 is the executable generated by makefile, HB_file is a
+ * file containing a matrix stored in Harwell-Boeing matrices.
+ * Info1 will then dump the information into the standard output.
+ *--------------------------------------------------------------------*/
+ int job, ncol, nrow, nnz, nrhs, ierr, valued = 0;
+ char guesol[3], title[73], key[9], type[4];
+ int *ia = NULL, *ja = NULL, *ia1 = NULL, *ja1 = NULL;
+ double *a = NULL, *a1 = NULL, *rhs = NULL;
+ int tmp1, tmp2, maxnnz;
+ int iout = 6;
+
+ if( argc < 2 ) {
+ printf( "usage: info1.ex HB_file\n" );
+ return 0;
+ }
+
+/* find out size of Harwell-Boeing matrix ---------------------------*/
+ job = 0;
+ tmp1 = tmp2 = 1;
+ readmtc( &tmp1, &tmp2, &job, argv[1], a, ja, ia, rhs, &nrhs,
+ guesol, &nrow, &ncol, &nnz, title, key, type, &ierr );
+ if( ierr != 0 ) {
+ fprintf( stderr, "readhb: err in read matrix header = %d\n", ierr );
+ exit(-1);
+ }
+/* allocate space ---------------------------------------------------*/
+ maxnnz = max( nnz, 2*ncol+1 );
+ ia = (int *)Malloc( sizeof(int)*(ncol+1), "readhb" );
+ ja = (int *)Malloc( sizeof(int)*nnz, "readhb" );
+ a = (double *)Malloc( sizeof(double)*nnz, "readhb" );
+ ia1 = (int *)Malloc( sizeof(int)*(ncol+1), "readhb" );
+ ja1 = (int *)Malloc( sizeof(int)*maxnnz, "readhb" );
+ a1 = (double *)Malloc( sizeof(double)*nnz, "readhb" );
+/* read matrix ------------------------------------------------------*/
+ job = 2;
+ nrhs = 0;
+ tmp1 = ncol+1;
+ tmp2 = nnz;
+ readmtc( &tmp1, &tmp2, &job, argv[1], a, ja, ia, rhs, &nrhs,
+ guesol, &nrow, &ncol, &nnz, title, key, type, &ierr );
+ if( ierr != 0 ) {
+ fprintf( stderr, "readhb: err in read matrix data = %d\n", ierr );
+ exit(-1);
+ }
+
+ if( job >= 2 ) valued = 1;
+
+ dinfo1( &ncol, &iout, a, ja, ia, &valued, title, key, type,
+ a1, ja1, ia1 );
+
+ free( ia );
+ free( ja );
+ free( a );
+ free( ia1 );
+ free( ja1 );
+ free( a1 );
+
+ return 0;
+}
diff --git a/INFO/saylr1 b/INFO/saylr1
new file mode 100644
index 0000000..0ed933c
--- /dev/null
+++ b/INFO/saylr1
@@ -0,0 +1,368 @@
+1unsymmetric matrix of paul saylor - 14 by 17 2d grid may, 1983 saylr1
+ 363 24 113 226 0
+rua 238 238 1128 0
+(10i8) (10i8) (5e16.8)
+ 1 4 8 12 16 20 24 28 32 36
+ 40 44 48 52 55 59 64 69 74 79
+ 84 89 94 99 104 109 114 119 123 127
+ 132 137 142 147 152 157 162 167 172 177
+ 182 187 191 195 200 205 210 215 220 225
+ 230 235 240 245 250 255 259 263 268 273
+ 278 283 288 293 298 303 308 313 318 323
+ 327 331 336 341 346 351 356 361 366 371
+ 376 381 386 391 395 399 404 409 414 419
+ 424 429 434 439 444 449 454 459 463 467
+ 472 477 482 487 492 497 502 507 512 517
+ 522 527 531 535 540 545 550 555 560 565
+ 570 575 580 585 590 595 599 603 608 613
+ 618 623 628 633 638 643 648 653 658 663
+ 667 671 676 681 686 691 696 701 706 711
+ 716 721 726 731 735 739 744 749 754 759
+ 764 769 774 779 784 789 794 799 803 807
+ 812 817 822 827 832 837 842 847 852 857
+ 862 867 871 875 880 885 890 895 900 905
+ 910 915 920 925 930 935 939 943 948 953
+ 958 963 968 973 978 983 988 993 998 1003
+ 1007 1011 1016 1021 1026 1031 1036 1041 1046 1051
+ 1056 1061 1066 1071 1075 1078 1082 1086 1090 1094
+ 1098 1102 1106 1110 1114 1118 1122 1126 1129
+ 1 2 15 1 2 3 16 2 3 4
+ 17 3 4 5 18 4 5 6 19 5
+ 6 7 20 6 7 8 21 7 8 9
+ 22 8 9 10 23 9 10 11 24 10
+ 11 12 25 11 12 13 26 12 13 14
+ 27 13 14 28 1 15 16 29 2 15
+ 16 17 30 3 16 17 18 31 4 17
+ 18 19 32 5 18 19 20 33 6 19
+ 20 21 34 7 20 21 22 35 8 21
+ 22 23 36 9 22 23 24 37 10 23
+ 24 25 38 11 24 25 26 39 12 25
+ 26 27 40 13 26 27 28 41 14 27
+ 28 42 15 29 30 43 16 29 30 31
+ 44 17 30 31 32 45 18 31 32 33
+ 46 19 32 33 34 47 20 33 34 35
+ 48 21 34 35 36 49 22 35 36 37
+ 50 23 36 37 38 51 24 37 38 39
+ 52 25 38 39 40 53 26 39 40 41
+ 54 27 40 41 42 55 28 41 42 56
+ 29 43 44 57 30 43 44 45 58 31
+ 44 45 46 59 32 45 46 47 60 33
+ 46 47 48 61 34 47 48 49 62 35
+ 48 49 50 63 36 49 50 51 64 37
+ 50 51 52 65 38 51 52 53 66 39
+ 52 53 54 67 40 53 54 55 68 41
+ 54 55 56 69 42 55 56 70 43 57
+ 58 71 44 57 58 59 72 45 58 59
+ 60 73 46 59 60 61 74 47 60 61
+ 62 75 48 61 62 63 76 49 62 63
+ 64 77 50 63 64 65 78 51 64 65
+ 66 79 52 65 66 67 80 53 66 67
+ 68 81 54 67 68 69 82 55 68 69
+ 70 83 56 69 70 84 57 71 72 85
+ 58 71 72 73 86 59 72 73 74 87
+ 60 73 74 75 88 61 74 75 76 89
+ 62 75 76 77 90 63 76 77 78 91
+ 64 77 78 79 92 65 78 79 80 93
+ 66 79 80 81 94 67 80 81 82 95
+ 68 81 82 83 96 69 82 83 84 97
+ 70 83 84 98 71 85 86 99 72 85
+ 86 87 100 73 86 87 88 101 74 87
+ 88 89 102 75 88 89 90 103 76 89
+ 90 91 104 77 90 91 92 105 78 91
+ 92 93 106 79 92 93 94 107 80 93
+ 94 95 108 81 94 95 96 109 82 95
+ 96 97 110 83 96 97 98 111 84 97
+ 98 112 85 99 100 113 86 99 100 101
+ 114 87 100 101 102 115 88 101 102 103
+ 116 89 102 103 104 117 90 103 104 105
+ 118 91 104 105 106 119 92 105 106 107
+ 120 93 106 107 108 121 94 107 108 109
+ 122 95 108 109 110 123 96 109 110 111
+ 124 97 110 111 112 125 98 111 112 126
+ 99 113 114 127 100 113 114 115 128 101
+ 114 115 116 129 102 115 116 117 130 103
+ 116 117 118 131 104 117 118 119 132 105
+ 118 119 120 133 106 119 120 121 134 107
+ 120 121 122 135 108 121 122 123 136 109
+ 122 123 124 137 110 123 124 125 138 111
+ 124 125 126 139 112 125 126 140 113 127
+ 128 141 114 127 128 129 142 115 128 129
+ 130 143 116 129 130 131 144 117 130 131
+ 132 145 118 131 132 133 146 119 132 133
+ 134 147 120 133 134 135 148 121 134 135
+ 136 149 122 135 136 137 150 123 136 137
+ 138 151 124 137 138 139 152 125 138 139
+ 140 153 126 139 140 154 127 141 142 155
+ 128 141 142 143 156 129 142 143 144 157
+ 130 143 144 145 158 131 144 145 146 159
+ 132 145 146 147 160 133 146 147 148 161
+ 134 147 148 149 162 135 148 149 150 163
+ 136 149 150 151 164 137 150 151 152 165
+ 138 151 152 153 166 139 152 153 154 167
+ 140 153 154 168 141 155 156 169 142 155
+ 156 157 170 143 156 157 158 171 144 157
+ 158 159 172 145 158 159 160 173 146 159
+ 160 161 174 147 160 161 162 175 148 161
+ 162 163 176 149 162 163 164 177 150 163
+ 164 165 178 151 164 165 166 179 152 165
+ 166 167 180 153 166 167 168 181 154 167
+ 168 182 155 169 170 183 156 169 170 171
+ 184 157 170 171 172 185 158 171 172 173
+ 186 159 172 173 174 187 160 173 174 175
+ 188 161 174 175 176 189 162 175 176 177
+ 190 163 176 177 178 191 164 177 178 179
+ 192 165 178 179 180 193 166 179 180 181
+ 194 167 180 181 182 195 168 181 182 196
+ 169 183 184 197 170 183 184 185 198 171
+ 184 185 186 199 172 185 186 187 200 173
+ 186 187 188 201 174 187 188 189 202 175
+ 188 189 190 203 176 189 190 191 204 177
+ 190 191 192 205 178 191 192 193 206 179
+ 192 193 194 207 180 193 194 195 208 181
+ 194 195 196 209 182 195 196 210 183 197
+ 198 211 184 197 198 199 212 185 198 199
+ 200 213 186 199 200 201 214 187 200 201
+ 202 215 188 201 202 203 216 189 202 203
+ 204 217 190 203 204 205 218 191 204 205
+ 206 219 192 205 206 207 220 193 206 207
+ 208 221 194 207 208 209 222 195 208 209
+ 210 223 196 209 210 224 197 211 212 225
+ 198 211 212 213 226 199 212 213 214 227
+ 200 213 214 215 228 201 214 215 216 229
+ 202 215 216 217 230 203 216 217 218 231
+ 204 217 218 219 232 205 218 219 220 233
+ 206 219 220 221 234 207 220 221 222 235
+ 208 221 222 223 236 209 222 223 224 237
+ 210 223 224 238 211 225 226 212 225 226
+ 227 213 226 227 228 214 227 228 229 215
+ 228 229 230 216 229 230 231 217 230 231
+ 232 218 231 232 233 219 232 233 234 220
+ 233 234 235 221 234 235 236 222 235 236
+ 237 223 236 237 238 224 237 238
+ -0.19315001E+02 0.19311001E+02 0.44227000E-02 0.19311001E+02 -0.38639999E+02
+ 0.19311001E+02 0.17690999E-01 0.19311001E+02 -0.38693001E+02 0.19311001E+02
+ 0.70762999E-01 0.19311001E+02 -0.38904999E+02 0.19311001E+02 0.28305000E+00
+ 0.19311001E+02 -0.39755001E+02 0.19311001E+02 0.11322000E+01 0.19311001E+02
+ -0.43155998E+02 0.19311001E+02 0.45289001E+01 0.19311001E+02 -0.56756001E+02
+ 0.19311001E+02 0.18115000E+02 0.19311001E+02 -0.11116000E+03 0.19311001E+02
+ 0.72461998E+02 0.19311001E+02 -0.32876999E+03 0.19311001E+02 0.28985001E+03
+ 0.19311001E+02 -0.11992000E+04 0.19309999E+02 0.11593000E+04 0.19309999E+02
+ -0.46805000E+04 0.19309000E+02 0.46370000E+04 0.19309000E+02 -0.18586000E+05
+ 0.11061000E+02 0.18536000E+05 0.11060000E+02 -0.75788000E+05 0.19722000E+02
+ 0.75689000E+05 0.19698999E+02 -0.41574000E+08 0.41579000E+08 0.44227000E-02
+ -0.10241000E+04 0.10230000E+04 0.11876000E+01 0.17690999E-01 0.10230000E+04
+ -0.20507000E+04 0.10230000E+04 0.47505999E+01 0.70762999E-01 0.10230000E+04
+ -0.20650000E+04 0.10230000E+04 0.19002001E+02 0.28305000E+00 0.10230000E+04
+ -0.21222000E+04 0.10230000E+04 0.76009003E+02 0.11322000E+01 0.10230000E+04
+ -0.23511001E+04 0.10230000E+04 0.30404001E+03 0.45288000E+01 0.10230000E+04
+ -0.32666001E+04 0.10230000E+04 0.12161000E+04 0.18115000E+02 0.10230000E+04
+ -0.69286001E+04 0.10229000E+04 0.48646001E+04 0.72460999E+02 0.10229000E+04
+ -0.21577000E+05 0.10230000E+04 0.19458000E+05 0.28984000E+03 0.10230000E+04
+ -0.80170000E+05 0.10229000E+04 0.77833000E+05 0.11593000E+04 0.10229000E+04
+ -0.31474000E+06 0.10229000E+04 0.31153000E+06 0.46368999E+04 0.10229000E+04
+ -0.12527000E+07 0.10229000E+04 0.12460000E+07 0.18536000E+05 0.10229000E+04
+ -0.50005000E+07 0.34723999E+03 0.49805000E+07 0.75682000E+05 0.34710001E+03
+ -0.27150000E+08 0.13908000E+04 0.27075000E+08 0.41574000E+08 0.13891000E+04
+ -0.90850000E+08 0.49273000E+08 0.11876000E+01 -0.19842000E+03 0.19612000E+03
+ 0.11083000E+01 0.47505002E+01 0.19612000E+03 -0.40142999E+03 0.19612000E+03
+ 0.44330001E+01 0.19002001E+02 0.19612000E+03 -0.42898001E+03 0.19612000E+03
+ 0.17732000E+02 0.76008003E+02 0.19612000E+03 -0.53917999E+03 0.19612000E+03
+ 0.70928001E+02 0.30403000E+03 0.19612000E+03 -0.97998999E+03 0.19612000E+03
+ 0.28370999E+03 0.12161000E+04 0.19612000E+03 -0.27432000E+04 0.19612000E+03
+ 0.11348000E+04 0.48645000E+04 0.19612000E+03 -0.97962002E+04 0.19612000E+03
+ 0.45393999E+04 0.19458000E+05 0.19612000E+03 -0.38008000E+05 0.19612000E+03
+ 0.18158000E+05 0.77832000E+05 0.19612000E+03 -0.15086000E+06 0.19612000E+03
+ 0.72630000E+05 0.31152000E+06 0.19612000E+03 -0.60243000E+06 0.19612000E+03
+ 0.29051000E+06 0.12460000E+07 0.19612000E+03 -0.24083000E+07 0.19611000E+03
+ 0.11619000E+07 0.49805000E+07 0.19610001E+03 -0.96025000E+07 0.19986000E+03
+ 0.46215000E+07 0.27072000E+08 0.19977000E+03 -0.52340000E+08 0.26682999E+03
+ 0.25265000E+08 0.49269000E+08 0.26651001E+03 -0.20234000E+09 0.15307000E+09
+ 0.11082000E+01 -0.61428001E+02 0.59667999E+02 0.65183997E+00 0.44330001E+01
+ 0.59667999E+02 -0.12638000E+03 0.59667000E+02 0.26073999E+01 0.17732000E+02
+ 0.59667000E+02 -0.14750000E+03 0.59667000E+02 0.10429000E+02 0.70928001E+02
+ 0.59667000E+02 -0.23198000E+03 0.59667000E+02 0.41717999E+02 0.28370999E+03
+ 0.59667000E+02 -0.56991998E+03 0.59667000E+02 0.16687000E+03 0.11348000E+04
+ 0.59667000E+02 -0.19217000E+04 0.59667999E+02 0.66747998E+03 0.45393999E+04
+ 0.59667999E+02 -0.73287002E+04 0.59667000E+02 0.26698999E+04 0.18158000E+05
+ 0.59667000E+02 -0.28957000E+05 0.59667999E+02 0.10680000E+05 0.72630000E+05
+ 0.59667999E+02 -0.11547000E+06 0.59667000E+02 0.42719000E+05 0.29051000E+06
+ 0.59667000E+02 -0.46144000E+06 0.59645000E+02 0.17081000E+06 0.11619000E+07
+ 0.59645000E+02 -0.18448000E+07 0.59602001E+02 0.68272000E+06 0.46215000E+07
+ 0.59601002E+02 -0.73360000E+07 0.60827999E+02 0.27143000E+07 0.25264000E+08
+ 0.60799999E+02 -0.40130000E+08 0.81210999E+02 0.14866000E+08 0.15306000E+09
+ 0.81112999E+02 -0.30614000E+09 0.15307000E+09 0.65183997E+00 -0.60994999E+02
+ 0.59561001E+02 0.78232998E+00 0.26073000E+01 0.59561001E+02 -0.12486000E+03
+ 0.59561001E+02 0.31293001E+01 0.10429000E+02 0.59561001E+02 -0.14207001E+03
+ 0.59561001E+02 0.12517000E+02 0.41717999E+02 0.59561001E+02 -0.21091000E+03
+ 0.59561001E+02 0.50069000E+02 0.16687000E+03 0.59561001E+02 -0.48626999E+03
+ 0.59561001E+02 0.20028000E+03 0.66747998E+03 0.59561001E+02 -0.15877000E+04
+ 0.59561001E+02 0.80109998E+03 0.26698999E+04 0.59561001E+02 -0.59935000E+04
+ 0.59561001E+02 0.32043999E+04 0.10680000E+05 0.59561001E+02 -0.23616000E+05
+ 0.59561001E+02 0.12818000E+05 0.42719000E+05 0.59561001E+02 -0.94109000E+05
+ 0.59561001E+02 0.51271000E+05 0.17081000E+06 0.59561001E+02 -0.37593000E+06
+ 0.59539001E+02 0.20500000E+06 0.68272000E+06 0.59539001E+02 -0.15022000E+07
+ 0.59495998E+02 0.81940000E+06 0.27143000E+07 0.59494999E+02 -0.59721000E+07
+ 0.60830002E+02 0.32577000E+07 0.14865000E+08 0.60801998E+02 -0.32739000E+08
+ 0.81213997E+02 0.17875000E+08 0.15307000E+09 0.81115997E+02 -0.21674000E+09
+ 0.63673000E+08 0.78232002E+00 -0.66882001E+03 0.66802002E+03 0.10723000E-01
+ 0.31293001E+01 0.66802002E+03 -0.13392000E+04 0.66802002E+03 0.42892002E-01
+ 0.12517000E+02 0.66802002E+03 -0.13487000E+04 0.66802002E+03 0.17157000E+00
+ 0.50069000E+02 0.66802002E+03 -0.13868000E+04 0.66802002E+03 0.68627000E+00
+ 0.20027000E+03 0.66802002E+03 -0.15391000E+04 0.66802002E+03 0.27451000E+01
+ 0.80109998E+03 0.66802002E+03 -0.21482000E+04 0.66803003E+03 0.10980000E+02
+ 0.32043999E+04 0.66803003E+03 -0.45843999E+04 0.66802002E+03 0.43921001E+02
+ 0.12818000E+05 0.66802002E+03 -0.14330000E+05 0.66803003E+03 0.17569000E+03
+ 0.51270000E+05 0.66803003E+03 -0.53311000E+05 0.66802002E+03 0.70273999E+03
+ 0.20500000E+06 0.66802002E+03 -0.20915000E+06 0.66777002E+03 0.28098999E+04
+ 0.81939000E+06 0.66777002E+03 -0.83198000E+06 0.66728998E+03 0.11231000E+05
+ 0.32577000E+07 0.66728998E+03 -0.33028000E+07 0.68526001E+03 0.43718000E+05
+ 0.17873000E+08 0.68491998E+03 -0.18122000E+08 0.91488000E+03 0.24607000E+06
+ 0.63668000E+08 0.91378998E+03 -0.11417000E+09 0.50497000E+08 0.10723000E-01
+ -0.73415001E+02 0.73396004E+02 0.79712998E-02 0.42892002E-01 0.73396004E+02
+ -0.14687000E+03 0.73396004E+02 0.31885002E-01 0.17157000E+00 0.73396004E+02
+ -0.14709000E+03 0.73396004E+02 0.12754001E+00 0.68625998E+00 0.73396004E+02
+ -0.14799001E+03 0.73396004E+02 0.51016003E+00 0.27451000E+01 0.73396004E+02
+ -0.15158000E+03 0.73396004E+02 0.20406001E+01 0.10980000E+02 0.73396004E+02
+ -0.16594000E+03 0.73396004E+02 0.81625996E+01 0.43921001E+02 0.73396004E+02
+ -0.22339999E+03 0.73394997E+02 0.32650002E+02 0.17567999E+03 0.73394997E+02
+ -0.45320999E+03 0.73396004E+02 0.13060001E+03 0.70272998E+03 0.73396004E+02
+ -0.13725000E+04 0.73396004E+02 0.52240002E+03 0.28098999E+04 0.73396004E+02
+ -0.50431001E+04 0.73213997E+02 0.20845000E+04 0.11231000E+05 0.73213997E+02
+ -0.19682000E+05 0.72862000E+02 0.82962998E+04 0.43717000E+05 0.72861000E+02
+ -0.75025000E+05 0.76553001E+02 0.31124000E+05 0.24605000E+06 0.76514000E+02
+ -0.43229000E+06 0.10220000E+03 0.18599000E+06 0.50492000E+08 0.10208000E+03
+ -0.14275000E+09 0.92259000E+08 0.79712002E-02 -0.18212000E+02 0.18188000E+02
+ 0.16022000E-01 0.31885002E-01 0.18188000E+02 -0.36471001E+02 0.18188000E+02
+ 0.64087003E-01 0.12754001E+00 0.18188000E+02 -0.36758999E+02 0.18188000E+02
+ 0.25635001E+00 0.51016003E+00 0.18188000E+02 -0.37910999E+02 0.18188000E+02
+ 0.10254000E+01 0.20406001E+01 0.18188000E+02 -0.42518002E+02 0.18188000E+02
+ 0.41016002E+01 0.81625004E+01 0.18188000E+02 -0.60946999E+02 0.18188000E+02
+ 0.16406000E+02 0.32650002E+02 0.18188000E+02 -0.13466000E+03 0.18187000E+02
+ 0.65625000E+02 0.13060001E+03 0.18187000E+02 -0.42953000E+03 0.18188000E+02
+ 0.26250000E+03 0.52240002E+03 0.18188000E+02 -0.16090000E+04 0.18188000E+02
+ 0.10500000E+04 0.20845000E+04 0.18188000E+02 -0.63057002E+04 0.17983000E+02
+ 0.41842998E+04 0.82962998E+04 0.17983000E+02 -0.24946000E+05 0.17992001E+02
+ 0.16611000E+05 0.31123000E+05 0.17992001E+02 -0.91145000E+05 0.19391001E+02
+ 0.59971000E+05 0.18598000E+06 0.19379999E+02 -0.56810000E+06 0.25884001E+02
+ 0.38205000E+06 0.92255000E+08 0.25853001E+02 -0.23912000E+09 0.14687000E+09
+ 0.16022000E-01 -0.17169001E+02 0.17139000E+02 0.13402000E-01 0.64087003E-01
+ 0.17139000E+02 -0.34396000E+02 0.17139000E+02 0.53610001E-01 0.25635001E+00
+ 0.17139000E+02 -0.34750000E+02 0.17139000E+02 0.21444000E+00 0.10254000E+01
+ 0.17139000E+02 -0.36161999E+02 0.17139000E+02 0.85776001E+00 0.41015000E+01
+ 0.17139000E+02 -0.41812000E+02 0.17139000E+02 0.34310000E+01 0.16406000E+02
+ 0.17139000E+02 -0.64412003E+02 0.17139000E+02 0.13724000E+02 0.65625000E+02
+ 0.17139000E+02 -0.15481000E+03 0.17139000E+02 0.54896999E+02 0.26250000E+03
+ 0.17139000E+02 -0.51640997E+03 0.17139000E+02 0.21959000E+03 0.10500000E+04
+ 0.17139000E+02 -0.19628000E+04 0.17139000E+02 0.87834998E+03 0.41842002E+04
+ 0.17139000E+02 -0.77191001E+04 0.16943001E+02 0.35000000E+04 0.16611000E+05
+ 0.16943001E+02 -0.29996000E+05 0.16965000E+02 0.13348000E+05 0.59971000E+05
+ 0.16965000E+02 -0.10824000E+06 0.18620001E+02 0.48224000E+05 0.38204000E+06
+ 0.18610001E+02 -0.70770000E+06 0.24850000E+02 0.32559000E+06 0.14686000E+09
+ 0.24820000E+02 -0.27202000E+09 0.12516000E+09 0.13402000E-01 -0.23312000E+02
+ 0.23288000E+02 0.10209000E-01 0.53610001E-01 0.23288000E+02 -0.46669998E+02
+ 0.23288000E+02 0.40837999E-01 0.21444000E+00 0.23288000E+02 -0.46953999E+02
+ 0.23288000E+02 0.16335000E+00 0.85776001E+00 0.23288000E+02 -0.48087002E+02
+ 0.23288000E+02 0.65341002E+00 0.34310000E+01 0.23288000E+02 -0.52622002E+02
+ 0.23288000E+02 0.26136000E+01 0.13724000E+02 0.23288000E+02 -0.70759003E+02
+ 0.23288000E+02 0.10454000E+02 0.54896000E+02 0.23288000E+02 -0.14331000E+03
+ 0.23288000E+02 0.41818001E+02 0.21959000E+03 0.23288000E+02 -0.43350000E+03
+ 0.23288000E+02 0.16727000E+03 0.87834003E+03 0.23288000E+02 -0.15943000E+04
+ 0.23289000E+02 0.66909003E+03 0.35000000E+04 0.23289000E+02 -0.62015000E+04
+ 0.22726999E+02 0.26543000E+04 0.13348000E+05 0.22726999E+02 -0.23849000E+05
+ 0.22785999E+02 0.10451000E+05 0.48224000E+05 0.22785999E+02 -0.82693000E+05
+ 0.26002001E+02 0.34403000E+05 0.32558000E+06 0.25988001E+02 -0.58040000E+06
+ 0.34688000E+02 0.25473000E+06 0.12516000E+09 0.34646000E+02 -0.22308000E+09
+ 0.97921000E+08 0.10209000E-01 -0.26198999E+02 0.26172001E+02 0.17565999E-01
+ 0.40837999E-01 0.26172001E+02 -0.52453999E+02 0.26171000E+02 0.70262000E-01
+ 0.16335000E+00 0.26171000E+02 -0.52786999E+02 0.26171000E+02 0.28105000E+00
+ 0.65340000E+00 0.26171000E+02 -0.54120998E+02 0.26172001E+02 0.11242000E+01
+ 0.26136000E+01 0.26172001E+02 -0.59455002E+02 0.26171000E+02 0.44967999E+01
+ 0.10454000E+02 0.26171000E+02 -0.80790001E+02 0.26172001E+02 0.17987000E+02
+ 0.41818001E+02 0.26172001E+02 -0.16613000E+03 0.26171000E+02 0.71948997E+02
+ 0.16727000E+03 0.26171000E+02 -0.50748999E+03 0.26172001E+02 0.28779001E+03
+ 0.66908002E+03 0.26172001E+02 -0.18729000E+04 0.26173000E+02 0.11512000E+04
+ 0.26543000E+04 0.26173000E+02 -0.72782998E+04 0.25355000E+02 0.45712002E+04
+ 0.10451000E+05 0.25355000E+02 -0.28384000E+05 0.25518000E+02 0.17877000E+05
+ 0.34402000E+05 0.25518000E+02 -0.91977000E+05 0.31083000E+02 0.57497000E+05
+ 0.25472000E+06 0.31065001E+02 -0.72041000E+06 0.41421001E+02 0.46560000E+06
+ 0.97916000E+08 0.41370998E+02 -0.18360000E+09 0.85686000E+08 0.17565999E-01
+ -0.20525000E+03 0.20514000E+03 0.10188000E+00 0.70262000E-01 0.20514000E+03
+ -0.41075000E+03 0.20513000E+03 0.40752000E+00 0.28105000E+00 0.20513000E+03
+ -0.41217999E+03 0.20513000E+03 0.16301000E+01 0.11242000E+01 0.20513000E+03
+ -0.41791000E+03 0.20513000E+03 0.65202999E+01 0.44967999E+01 0.20513000E+03
+ -0.44085001E+03 0.20513000E+03 0.26080999E+02 0.17987000E+02 0.20513000E+03
+ -0.53259003E+03 0.20514000E+03 0.10433000E+03 0.71947998E+02 0.20514000E+03
+ -0.89954999E+03 0.20513000E+03 0.41729999E+03 0.28779001E+03 0.20513000E+03
+ -0.23673999E+04 0.20514000E+03 0.16692000E+04 0.11512000E+04 0.20514000E+03
+ -0.82387998E+04 0.20519000E+03 0.66767998E+04 0.45711001E+04 0.20519000E+03
+ -0.31292000E+05 0.19413000E+03 0.26319000E+05 0.17877000E+05 0.19413000E+03
+ -0.11990000E+06 0.20783000E+03 0.10161000E+06 0.57497000E+05 0.20783000E+03
+ -0.62841000E+06 0.27437000E+03 0.57044000E+06 0.46557000E+06 0.27420999E+03
+ -0.34580000E+07 0.35998999E+03 0.29918000E+07 0.85682000E+08 0.35954999E+03
+ -0.16566000E+09 0.79979000E+08 0.10188000E+00 -0.64082999E+01 0.62616000E+01
+ 0.44813000E-01 0.40752000E+00 0.62616000E+01 -0.13110000E+02 0.62616000E+01
+ 0.17925000E+00 0.16301000E+01 0.62616000E+01 -0.14870000E+02 0.62616000E+01
+ 0.71701002E+00 0.65202999E+01 0.62616000E+01 -0.21912001E+02 0.62616000E+01
+ 0.28680999E+01 0.26080999E+02 0.62616000E+01 -0.50077000E+02 0.62616000E+01
+ 0.11472000E+02 0.10432000E+03 0.62616000E+01 -0.16274001E+03 0.62617002E+01
+ 0.45889000E+02 0.41729999E+03 0.62617002E+01 -0.61339001E+03 0.62616000E+01
+ 0.18356000E+03 0.16692000E+04 0.62616000E+01 -0.24160000E+04 0.62617002E+01
+ 0.73421997E+03 0.66767998E+04 0.62617002E+01 -0.96262998E+04 0.62676001E+01
+ 0.29368999E+04 0.26319000E+05 0.62676001E+01 -0.38082000E+05 0.57582002E+01
+ 0.11750000E+05 0.10161000E+06 0.57582002E+01 -0.14865000E+06 0.98239002E+01
+ 0.47020000E+05 0.57041000E+06 0.98231001E+01 -0.82070000E+06 0.13079000E+02
+ 0.25026000E+06 0.29917000E+07 0.13071000E+02 -0.39935000E+07 0.13096000E+02
+ 0.10017000E+07 0.79974000E+08 0.13080000E+02 -0.13032000E+09 0.50342000E+08
+ 0.44810999E-01 -0.15302000E+03 0.15298000E+03 0.17261000E-02 0.17924000E+00
+ 0.15298000E+03 -0.30614001E+03 0.15298000E+03 0.69044000E-02 0.71697003E+00
+ 0.15298000E+03 -0.30670001E+03 0.15298000E+03 0.27618000E-01 0.28678999E+01
+ 0.15298000E+03 -0.30892999E+03 0.15298000E+03 0.11047000E+00 0.11472000E+02
+ 0.15298000E+03 -0.31787000E+03 0.15298000E+03 0.44187999E+00 0.45886002E+02
+ 0.15298000E+03 -0.35362000E+03 0.15298000E+03 0.17675000E+01 0.18353999E+03
+ 0.15298000E+03 -0.49660001E+03 0.15298000E+03 0.70700998E+01 0.73417999E+03
+ 0.15298000E+03 -0.10685000E+04 0.15298000E+03 0.28280001E+02 0.29367000E+04
+ 0.15298000E+03 -0.33563000E+04 0.15298000E+03 0.11312000E+03 0.11749000E+05
+ 0.15298000E+03 -0.12510000E+05 0.15298000E+03 0.45248999E+03 0.47017000E+05
+ 0.15298000E+03 -0.49142000E+05 0.15300000E+03 0.18100000E+04 0.25023000E+06
+ 0.15298000E+03 -0.25783000E+06 0.15310001E+03 0.72407998E+04 0.10016000E+07
+ 0.15300999E+03 -0.10311000E+07 0.15331000E+03 0.28983000E+05 0.50337000E+08
+ 0.15312000E+03 -0.87166000E+08 0.36828000E+08 0.17259000E-02 -0.27385000E+02
+ 0.27382000E+02 0.12300001E-02 0.69034998E-02 0.27382000E+02 -0.54775002E+02
+ 0.27382000E+02 0.49200999E-02 0.27613999E-01 0.27382000E+02 -0.54811001E+02
+ 0.27382000E+02 0.19680001E-01 0.11046000E+00 0.27382000E+02 -0.54952999E+02
+ 0.27382000E+02 0.78722000E-01 0.44183001E+00 0.27382000E+02 -0.55521000E+02
+ 0.27382000E+02 0.31489000E+00 0.17673000E+01 0.27382000E+02 -0.57793999E+02
+ 0.27382000E+02 0.12595000E+01 0.70692000E+01 0.27382000E+02 -0.66887001E+02
+ 0.27381001E+02 0.50381999E+01 0.28277000E+02 0.27381001E+02 -0.10326000E+03
+ 0.27382000E+02 0.20153000E+02 0.11311000E+03 0.27382000E+02 -0.24875000E+03
+ 0.27382000E+02 0.80611000E+02 0.45242999E+03 0.27381001E+02 -0.83071997E+03
+ 0.27382000E+02 0.32245001E+03 0.18098000E+04 0.27382000E+02 -0.31587000E+04
+ 0.27385000E+02 0.12898000E+04 0.72398999E+04 0.27382000E+02 -0.12472000E+05
+ 0.27403000E+02 0.51597998E+04 0.28980000E+05 0.27386999E+02 -0.49758000E+05
+ 0.27440001E+02 0.20654000E+05 0.36824000E+08 0.27407000E+02 -0.87893000E+08
+ 0.51069000E+08 0.12299001E-02 -0.11818000E+02 0.11816000E+02 0.71976997E-03
+ 0.49196999E-02 0.11816000E+02 -0.23639000E+02 0.11816000E+02 0.28790999E-02
+ 0.19679001E-01 0.11816000E+02 -0.23662001E+02 0.11816000E+02 0.11516000E-01
+ 0.78713998E-01 0.11816000E+02 -0.23756001E+02 0.11816000E+02 0.46064999E-01
+ 0.31485999E+00 0.11816000E+02 -0.24131001E+02 0.11816000E+02 0.18426000E+00
+ 0.12594000E+01 0.11816000E+02 -0.25629999E+02 0.11816000E+02 0.73703998E+00
+ 0.50377002E+01 0.11816000E+02 -0.31624001E+02 0.11816000E+02 0.29482000E+01
+ 0.20150999E+02 0.11816000E+02 -0.55603001E+02 0.11816000E+02 0.11793000E+02
+ 0.80603996E+02 0.11816000E+02 -0.15152000E+03 0.11816000E+02 0.47171001E+02
+ 0.32242001E+03 0.11816000E+02 -0.53519000E+03 0.11816000E+02 0.18867999E+03
+ 0.12897000E+04 0.11816000E+02 -0.20698999E+04 0.11817000E+02 0.75475000E+03
+ 0.51593999E+04 0.11816000E+02 -0.82095996E+04 0.11825000E+02 0.30193000E+04
+ 0.20652000E+05 0.11818000E+02 -0.32791000E+05 0.11841000E+02 0.12086000E+05
+ 0.51064000E+08 0.11827000E+02 -0.80948000E+08 0.29884000E+08 0.71965001E-03
+ -0.55196999E+02 0.55195999E+02 0.28786000E-02 0.55195999E+02 -0.11039000E+03
+ 0.55195999E+02 0.11514000E-01 0.55195999E+02 -0.11040000E+03 0.55195999E+02
+ 0.46057999E-01 0.55195999E+02 -0.11044000E+03 0.55195999E+02 0.18423000E+00
+ 0.55195999E+02 -0.11058000E+03 0.55195999E+02 0.73693001E+00 0.55195999E+02
+ -0.11114000E+03 0.55195999E+02 0.29477000E+01 0.55195999E+02 -0.11337000E+03
+ 0.55195000E+02 0.11791000E+02 0.55195000E+02 -0.12232000E+03 0.55195999E+02
+ 0.47162998E+02 0.55195999E+02 -0.15809000E+03 0.55195999E+02 0.18864999E+03
+ 0.55195000E+02 -0.30120001E+03 0.55196999E+02 0.75463000E+03 0.55195999E+02
+ -0.87365002E+03 0.55202999E+02 0.30188999E+04 0.55196999E+02 -0.31638000E+04
+ 0.55240002E+02 0.12084000E+05 0.55206001E+02 -0.12333000E+05 0.55314999E+02
+ 0.29879000E+08 0.55248001E+02 -0.29912000E+08
+
diff --git a/INOUT/README b/INOUT/README
new file mode 100644
index 0000000..e104ff3
--- /dev/null
+++ b/INOUT/README
@@ -0,0 +1,23 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+C INPUT-OUTPUT MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c readmt : reads matrices in the Boeing/Harwell format. c
+c prtmt : prints matrices in the Boeing/Harwell format. c
+c dump : outputs matrix rows in a simple format (debugging purposes)c
+c pspltm : generates a post-script plot of the non-zero pattern of A c
+c pltmt : produces a 'pic' file for plotting a sparse matrix c
+c smms : write the matrx in a format used in SMMS package c
+c readsm : reads matrics in coordinate format (as in SMMS package) c
+c readsk : reads matrices in CSR format (simplified H/B formate). c
+c skit : writes matrics to a file, format same as above. c
+c prtunf : writes matrics (in CSR format) unformatted c
+c readunf: reads unformatted data of matrics (in CSR format) c
+c----------------------------------------------------------------------c
+
+To visualize a Harwell-Boeing matrix on a Unix workstation, it is easiest
+to convert it to a postscript file and then view it with ghostview or gs.
+The program hb2ps.ex may be used for the former purpose.
diff --git a/INOUT/chkio.f b/INOUT/chkio.f
new file mode 100644
index 0000000..0d66deb
--- /dev/null
+++ b/INOUT/chkio.f
@@ -0,0 +1,100 @@
+ program chkio
+c------------------------------------------------------------------c
+c test suite for Part I : I/O routines. c
+c tests the following : gen5pt.f, prtmt, readmt, amd pltmt. c
+c 1) generates a 100 x 100 5pt matrix, c
+c 2) prints it with a given format in file 'first.mat' c
+c 3) reads the matrix from 'first.mat' using readmat c
+c 4) prints it again in file 'second.mat' in a different format c
+c 5) makes 4 pic files to show the different options of pltmt. c
+c these are in job0.pic, job01.pic, job10.pic, job11.pic c
+c coded by Y. Saad, RIACS, 08/31/1989. c
+c------------------------------------------------------------------c
+ parameter (nxmax = 20, nmx = nxmax*nxmax)
+ implicit real*8 (a-h,o-z)
+ integer ia(nmx),ja(7*nmx),iau(nmx)
+ real*8 a(7*nmx),rhs(3*nmx),al(6)
+ character title*72, key*8, type*3, guesol*2
+c----- open statements ----------------
+ open (unit=7,file='first.mat')
+ open (unit=8,file='second.mat')
+ open (unit=20,file='job00.pic')
+ open (unit=21,file='job01.pic')
+ open (unit=22,file='job10.pic')
+ open (unit=23,file='job11.pic')
+c
+c---- dimension of grid
+c
+ nx = 10
+ ny = 10
+ nz = 1
+ al(1) = 1.0D0
+ al(2) = 0.0D0
+ al(3) = 2.3D1
+ al(4) = 0.4D0
+ al(5) = 0.0D0
+ al(6) = 8.2D-2
+c
+c---- generate grid problem.
+c
+ call gen57pt (nx,ny,nz,al,0,n,a,ja,ia,iau,rhs)
+c
+c---- create the Harwell-Boeing matrix. Start by defining title,
+c and type. them define format and print it.
+c
+ write (title,9) nx, ny
+ 9 format('Five-point matrix on a square region',
+ * ' using a ',I2,' by ',I2,' grid *SPARSKIT*')
+ key = 'Fivept10'
+ type= 'RSA'
+ ifmt = 5
+ job = 3
+ guesol = 'GX'
+c
+c define a right hand side of ones, an initial guess of two's
+c and an exact solution of three's.
+c
+ do 2 k=1, 3*n
+ rhs(k) = real( 1 + (k-1)/n )
+ 2 continue
+c
+ call prtmt (n,n,a,ja,ia,rhs,guesol,title,key,type,
+ 1 ifmt,job,7)
+c---- read it again in same matrix a, ja, ia
+ nmax = nmx
+ nzmax = 7*nmx
+ do 3 k=1, 3*n
+ rhs(k) = 0.0
+ 3 continue
+ job = 3
+c
+ rewind 7
+c
+ nrhs = 3*n
+c
+ call readmt (nmax,nzmax,job,7,a,ja,ia,rhs,nrhs,guesol,
+ 1 nrow,ncol,nnz,title,key,type,ierr)
+ print *, ' ierr = ', ierr, ' nrhs ' , nrhs
+c
+c matrix read. print it again in a different format
+c
+ ifmt = 102
+ ncol = nrow
+ job = 3
+c
+ call prtmt (nrow,ncol,a,ja,ia,rhs,guesol,title,key,type,
+ 1 ifmt,job,8)
+c
+c---- print four pic files
+c
+ mode = 0
+ do 10 i=1, 2
+ do 11 j=1, 2
+ job = (i-1)*10 +j-1
+ iout = 20+(i-1)*2+j-1
+ call pltmt (nrow,ncol,mode,ja,ia,title,key,type,job,iout)
+ 11 continue
+ 10 continue
+c--------
+ stop
+ end
diff --git a/INOUT/hb2pic.f b/INOUT/hb2pic.f
new file mode 100644
index 0000000..358ff5c
--- /dev/null
+++ b/INOUT/hb2pic.f
@@ -0,0 +1,35 @@
+ program hb2pic
+c------------------------------------------------------------------c
+c
+c reads a harwell-Boeing matrix and creates a pic file for pattern.
+c
+c------------------------------------------------------------------c
+ implicit real*8 (a-h,o-z)
+ parameter (nmax = 5000, nzmax = 70000)
+ integer ia(nmax+1), ja(nzmax)
+ real*8 a(nzmax), rhs(1)
+ character title*72, key*8, guesol*2
+ logical valued
+c--------------
+ data iin /5/, iout/6/
+c--------------
+ job = 2
+ nrhs = 0
+ call readmt (nmax,nzmax,job,iin,a,ja,ia, rhs, nrhs,
+ * guesol,nrow,ncol,nnz,title,key,type,ierr)
+c---- if not readable return
+ if (ierr .ne. 0) then
+ write (iout,100) ierr
+ 100 format(' **ERROR: Unable to read matrix',/,
+ * ' Message returned fom readmt was ierr =',i3)
+ stop
+ endif
+ valued = (job .ge. 2)
+c-------
+ mode = 1
+ iounit = 6
+ job = 11
+ call pltmt (nrow,ncol,mode,ja,ia,title,key,type,job,iout)
+c-----------------------------------------------------------------------
+ stop
+ end
diff --git a/INOUT/hb2ps.f b/INOUT/hb2ps.f
new file mode 100644
index 0000000..83d0b1f
--- /dev/null
+++ b/INOUT/hb2ps.f
@@ -0,0 +1,42 @@
+ program hb2ps
+c----------------------------------------------------------------------
+c translates a harwell - boeing file into a post-script file. Usage:
+c hb2ps < HB_file > Postscript_file
+c where hb2ps is the executable generated from this program,
+c HB_file is a file containing a matrix stored in Harwell-Boeing
+c format and Postscript_file is a file to contain the post-script file.
+c----------------------------------------------------------------------
+ parameter (nmax = 10000, nzmax = 100000)
+ integer ia(nmax+1),ja(nzmax), idummy(1), ptitle
+ real*8 a(1),rhs(1)
+ real size
+ character title*72, key*8, guesol*2, munt*2
+ data iin /5/, iout/6/, size/5.0/, nlines/0/, ptitle/0/,mode/0/
+ data munt/'in'/
+c-----------------------------------------------------------------------
+ job = 1
+ nrhs = 0
+c
+c read matrix in Harwell-Boeing format
+c
+ call readmt (nmax,nzmax,job,iin,a,ja,ia, rhs, nrhs,
+ * guesol,nrow,ncol,nnz,title,key,type,ierr)
+c
+c if not readable return
+c
+ if (ierr .ne. 0) then
+ write (iout,100) ierr
+ stop
+ endif
+c
+c call post script generator
+c
+ call pspltm(nrow,ncol,mode,ja,ia,title,ptitle,size,munt,
+ * nlines,idummy,iout)
+c
+ 100 format(' **ERROR: Unable to read matrix',/,
+ * ' Message returned fom readmt was ierr =',i3)
+c-----------------------------------------------------------------------
+ stop
+ end
+
diff --git a/INOUT/inout.f b/INOUT/inout.f
new file mode 100644
index 0000000..820c548
--- /dev/null
+++ b/INOUT/inout.f
@@ -0,0 +1,1504 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+C INPUT-OUTPUT MODULE c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c readmt : reads matrices in the Boeing/Harwell format. c
+c prtmt : prints matrices in the Boeing/Harwell format. c
+c dump : outputs matrix rows in a simple format (debugging purposes)c
+c pspltm : generates a post-script plot of the non-zero pattern of A c
+c pltmt : produces a 'pic' file for plotting a sparse matrix c
+c smms : write the matrx in a format used in SMMS package c
+c readsm : reads matrics in coordinate format (as in SMMS package) c
+c readsk : reads matrices in CSR format (simplified H/B formate). c
+c skit : writes matrics to a file, format same as above. c
+c prtunf : writes matrics (in CSR format) unformatted c
+c readunf: reads unformatted data of matrics (in CSR format) c
+c----------------------------------------------------------------------c
+ subroutine readmt (nmax,nzmax,job,iounit,a,ja,ia,rhs,nrhs,
+ * guesol,nrow,ncol,nnz,title,key,type,ierr)
+c-----------------------------------------------------------------------
+c this subroutine reads a boeing/harwell matrix. handles right hand
+c sides in full format only (no sparse right hand sides).
+c Also the matrix must be in assembled forms.
+c Author: Youcef Saad - Date: Sept., 1989
+c updated Oct 31, 1989.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c nmax = max column dimension allowed for matrix. The array ia should
+c be of length at least ncol+1 (see below) if job.gt.0
+c nzmax = max number of nonzeros elements allowed. the arrays a,
+c and ja should be of length equal to nnz (see below) if these
+c arrays are to be read (see job).
+c
+c job = integer to indicate what is to be read. (note: job is an
+c input and output parameter, it can be modified on return)
+c job = 0 read the values of ncol, nrow, nnz, title, key,
+c type and return. matrix is not read and arrays
+c a, ja, ia, rhs are not touched.
+c job = 1 read srtucture only, i.e., the arrays ja and ia.
+c job = 2 read matrix including values, i.e., a, ja, ia
+c job = 3 read matrix and right hand sides: a,ja,ia,rhs.
+c rhs may contain initial guesses and exact
+c solutions appended to the actual right hand sides.
+c this will be indicated by the output parameter
+c guesol [see below].
+c
+c nrhs = integer. nrhs is an input as well as ouput parameter.
+c at input nrhs contains the total length of the array rhs.
+c See also ierr and nrhs in output parameters.
+c
+c iounit = logical unit number where to read the matrix from.
+c
+c on return:
+c----------
+c job = on return job may be modified to the highest job it could
+c do: if job=2 on entry but no matrix values are available it
+c is reset to job=1 on return. Similarly of job=3 but no rhs
+c is provided then it is rest to job=2 or job=1 depending on
+c whether or not matrix values are provided.
+c Note that no error message is triggered (i.e. ierr = 0
+c on return in these cases. It is therefore important to
+c compare the values of job on entry and return ).
+c
+c a = the a matrix in the a, ia, ja (column) storage format
+c ja = row number of element a(i,j) in array a.
+c ia = pointer array. ia(i) points to the beginning of column i.
+c
+c rhs = real array of size nrow + 1 if available (see job)
+c
+c nrhs = integer containing the number of right-hand sides found
+c each right hand side may be accompanied with an intial guess
+c and also the exact solution.
+c
+c guesol = a 2-character string indicating whether an initial guess
+c (1-st character) and / or the exact solution (2-nd
+c character) is provided with the right hand side.
+c if the first character of guesol is 'G' it means that an
+c an intial guess is provided for each right-hand side.
+c These are appended to the right hand-sides in the array rhs.
+c if the second character of guesol is 'X' it means that an
+c exact solution is provided for each right-hand side.
+c These are appended to the right hand-sides
+c and the initial guesses (if any) in the array rhs.
+c
+c nrow = number of rows in matrix
+c ncol = number of columns in matrix
+c nnz = number of nonzero elements in A. This info is returned
+c even if there is not enough space in a, ja, ia, in order
+c to determine the minimum storage needed.
+c
+c title = character*72 = title of matrix test ( character a*72).
+c key = character*8 = key of matrix
+c type = charatcer*3 = type of matrix.
+c for meaning of title, key and type refer to documentation
+c Harwell/Boeing matrices.
+c
+c ierr = integer used for error messages
+c * ierr = 0 means that the matrix has been read normally.
+c * ierr = 1 means that the array matrix could not be read
+c because ncol+1 .gt. nmax
+c * ierr = 2 means that the array matrix could not be read
+c because nnz .gt. nzmax
+c * ierr = 3 means that the array matrix could not be read
+c because both (ncol+1 .gt. nmax) and (nnz .gt. nzmax )
+c * ierr = 4 means that the right hand side (s) initial
+c guesse (s) and exact solution (s) could not be
+c read because they are stored in sparse format (not handled
+c by this routine ...)
+c * ierr = 5 means that the right-hand-sides, initial guesses
+c and exact solutions could not be read because the length of
+c rhs as specified by the input value of nrhs is not
+c sufficient to store them. The rest of the matrix may have
+c been read normally.
+c
+c Notes:
+c-------
+c 1) The file inout must be open (and possibly rewound if necessary)
+c prior to calling readmt.
+c 2) Refer to the documentation on the Harwell-Boeing formats
+c for details on the format assumed by readmt.
+c We summarize the format here for convenience.
+c
+c a) all lines in inout are assumed to be 80 character long.
+c b) the file consists of a header followed by the block of the
+c column start pointers followed by the block of the
+c row indices, followed by the block of the real values and
+c finally the numerical values of the right-hand-side if a
+c right hand side is supplied.
+c c) the file starts by a header which contains four lines if no
+c right hand side is supplied and five lines otherwise.
+c * first line contains the title (72 characters long) followed by
+c the 8-character identifier (name of the matrix, called key)
+c [ A72,A8 ]
+c * second line contains the number of lines for each
+c of the following data blocks (4 of them) and the total number
+c of lines excluding the header.
+c [5i4]
+c * the third line contains a three character string identifying
+c the type of matrices as they are referenced in the Harwell
+c Boeing documentation [e.g., rua, rsa,..] and the number of
+c rows, columns, nonzero entries.
+c [A3,11X,4I14]
+c * The fourth line contains the variable fortran format
+c for the following data blocks.
+c [2A16,2A20]
+c * The fifth line is only present if right-hand-sides are
+c supplied. It consists of three one character-strings containing
+c the storage format for the right-hand-sides
+c ('F'= full,'M'=sparse=same as matrix), an initial guess
+c indicator ('G' for yes), an exact solution indicator
+c ('X' for yes), followed by the number of right-hand-sides
+c and then the number of row indices.
+c [A3,11X,2I14]
+c d) The three following blocks follow the header as described
+c above.
+c e) In case the right hand-side are in sparse formats then
+c the fourth block uses the same storage format as for the matrix
+c to describe the NRHS right hand sides provided, with a column
+c being replaced by a right hand side.
+c-----------------------------------------------------------------------
+ character title*72, key*8, type*3, ptrfmt*16, indfmt*16,
+ 1 valfmt*20, rhsfmt*20, rhstyp*3, guesol*2
+ integer totcrd, ptrcrd, indcrd, valcrd, rhscrd, nrow, ncol,
+ 1 nnz, neltvl, nrhs, nmax, nzmax, nrwindx
+ integer ia (nmax+1), ja (nzmax)
+ real*8 a(nzmax), rhs(*)
+c-----------------------------------------------------------------------
+ ierr = 0
+ lenrhs = nrhs
+c
+ read (iounit,10) title, key, totcrd, ptrcrd, indcrd, valcrd,
+ 1 rhscrd, type, nrow, ncol, nnz, neltvl, ptrfmt, indfmt,
+ 2 valfmt, rhsfmt
+ 10 format (a72, a8 / 5i14 / a3, 11x, 4i14 / 2a16, 2a20)
+c
+ if (rhscrd .gt. 0) read (iounit,11) rhstyp, nrhs, nrwindx
+ 11 format (a3,11x,i14,i14)
+c
+c anything else to read ?
+c
+ if (job .le. 0) return
+c ---- check whether matrix is readable ------
+ n = ncol
+ if (ncol .gt. nmax) ierr = 1
+ if (nnz .gt. nzmax) ierr = ierr + 2
+ if (ierr .ne. 0) return
+c ---- read pointer and row numbers ----------
+ read (iounit,ptrfmt) (ia (i), i = 1, n+1)
+ read (iounit,indfmt) (ja (i), i = 1, nnz)
+c --- reading values of matrix if required....
+ if (job .le. 1) return
+c --- and if available -----------------------
+ if (valcrd .le. 0) then
+ job = 1
+ return
+ endif
+ read (iounit,valfmt) (a(i), i = 1, nnz)
+c --- reading rhs if required ----------------
+ if (job .le. 2) return
+c --- and if available -----------------------
+ if ( rhscrd .le. 0) then
+ job = 2
+ nrhs = 0
+ return
+ endif
+c
+c --- read right-hand-side.--------------------
+c
+ if (rhstyp(1:1) .eq. 'M') then
+ ierr = 4
+ return
+ endif
+c
+ guesol = rhstyp(2:3)
+c
+ nvec = 1
+ if (guesol(1:1) .eq. 'G' .or. guesol(1:1) .eq. 'g') nvec=nvec+1
+ if (guesol(2:2) .eq. 'X' .or. guesol(2:2) .eq. 'x') nvec=nvec+1
+c
+ len = nrhs*nrow
+c
+ if (len*nvec .gt. lenrhs) then
+ ierr = 5
+ return
+ endif
+c
+c read right-hand-sides
+c
+ next = 1
+ iend = len
+ read(iounit,rhsfmt) (rhs(i), i = next, iend)
+c
+c read initial guesses if available
+c
+ if (guesol(1:1) .eq. 'G' .or. guesol(1:1) .eq. 'g') then
+ next = next+len
+ iend = iend+ len
+ read(iounit,valfmt) (rhs(i), i = next, iend)
+ endif
+c
+c read exact solutions if available
+c
+ if (guesol(2:2) .eq. 'X' .or. guesol(2:2) .eq. 'x') then
+ next = next+len
+ iend = iend+ len
+ read(iounit,valfmt) (rhs(i), i = next, iend)
+ endif
+c
+ return
+c--------- end of readmt -----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine prtmt (nrow,ncol,a,ja,ia,rhs,guesol,title,key,type,
+ 1 ifmt,job,iounit)
+c-----------------------------------------------------------------------
+c writes a matrix in Harwell-Boeing format into a file.
+c assumes that the matrix is stored in COMPRESSED SPARSE COLUMN FORMAT.
+c some limited functionality for right hand sides.
+c Author: Youcef Saad - Date: Sept., 1989 - updated Oct. 31, 1989 to
+c cope with new format.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c nrow = number of rows in matrix
+c ncol = number of columns in matrix
+c a = real*8 array containing the values of the matrix stored
+c columnwise
+c ja = integer array of the same length as a containing the column
+c indices of the corresponding matrix elements of array a.
+c ia = integer array of containing the pointers to the beginning of
+c the row in arrays a and ja.
+c rhs = real array containing the right-hand-side (s) and optionally
+c the associated initial guesses and/or exact solutions
+c in this order. See also guesol for details. the vector rhs will
+c be used only if job .gt. 2 (see below). Only full storage for
+c the right hand sides is supported.
+c
+c guesol = a 2-character string indicating whether an initial guess
+c (1-st character) and / or the exact solution (2-nd)
+c character) is provided with the right hand side.
+c if the first character of guesol is 'G' it means that an
+c an intial guess is provided for each right-hand sides.
+c These are assumed to be appended to the right hand-sides in
+c the array rhs.
+c if the second character of guesol is 'X' it means that an
+c exact solution is provided for each right-hand side.
+c These are assumed to be appended to the right hand-sides
+c and the initial guesses (if any) in the array rhs.
+c
+c title = character*72 = title of matrix test ( character a*72 ).
+c key = character*8 = key of matrix
+c type = charatcer*3 = type of matrix.
+c
+c ifmt = integer specifying the format chosen for the real values
+c to be output (i.e., for a, and for rhs-guess-sol if
+c applicable). The meaning of ifmt is as follows.
+c * if (ifmt .lt. 100) then the D descriptor is used,
+c format Dd.m, in which the length (m) of the mantissa is
+c precisely the integer ifmt (and d = ifmt+6)
+c * if (ifmt .gt. 100) then prtmt will use the
+c F- descriptor (format Fd.m) in which the length of the
+c mantissa (m) is the integer mod(ifmt,100) and the length
+c of the integer part is k=ifmt/100 (and d = k+m+2)
+c Thus ifmt= 4 means D10.4 +.xxxxD+ee while
+c ifmt=104 means F7.4 +x.xxxx
+c ifmt=205 means F9.5 +xx.xxxxx
+c Note: formats for ja, and ia are internally computed.
+c
+c job = integer to indicate whether matrix values and
+c a right-hand-side is available to be written
+c job = 1 write srtucture only, i.e., the arrays ja and ia.
+c job = 2 write matrix including values, i.e., a, ja, ia
+c job = 3 write matrix and one right hand side: a,ja,ia,rhs.
+c job = nrhs+2 write matrix and nrhs successive right hand sides
+c Note that there cannot be any right-hand-side if the matrix
+c has no values. Also the initial guess and exact solutions when
+c provided are for each right hand side. For example if nrhs=2
+c and guesol='GX' there are 6 vectors to write.
+c
+c
+c iounit = logical unit number where to write the matrix into.
+c
+c on return:
+c----------
+c the matrix a, ja, ia will be written in output unit iounit
+c in the Harwell-Boeing format. None of the inputs is modofied.
+c
+c Notes: 1) This code attempts to pack as many elements as possible per
+c 80-character line.
+c 2) this code attempts to avoid as much as possible to put
+c blanks in the formats that are written in the 4-line header
+c (This is done for purely esthetical reasons since blanks
+c are ignored in format descriptors.)
+c 3) sparse formats for right hand sides and guesses are not
+c supported.
+c-----------------------------------------------------------------------
+ character title*72,key*8,type*3,ptrfmt*16,indfmt*16,valfmt*20,
+ 1 guesol*2, rhstyp*3
+ integer totcrd, ptrcrd, indcrd, valcrd, rhscrd, nrow, ncol,
+ 1 nnz, nrhs, len, nperli, nrwindx
+ integer ja(*), ia(*)
+ real*8 a(*),rhs(*)
+c--------------
+c compute pointer format
+c--------------
+ nnz = ia(ncol+1) -1
+ if (nnz .eq. 0) then
+ return
+ endif
+ len = int ( alog10(0.1+real(nnz+1))) + 1
+ nperli = 80/len
+ ptrcrd = ncol/nperli + 1
+ if (len .gt. 9) then
+ assign 101 to ix
+ else
+ assign 100 to ix
+ endif
+ write (ptrfmt,ix) nperli,len
+ 100 format(1h(,i2,1HI,i1,1h) )
+ 101 format(1h(,i2,1HI,i2,1h) )
+c----------------------------
+c compute ROW index format
+c----------------------------
+ len = int ( alog10(0.1+real(nrow) )) + 1
+ nperli = min0(80/len,nnz)
+ indcrd = (nnz-1)/nperli+1
+ write (indfmt,100) nperli,len
+c---------------
+c compute values and rhs format (using the same for both)
+c---------------
+ valcrd = 0
+ rhscrd = 0
+c quit this part if no values provided.
+ if (job .le. 1) goto 20
+c
+ if (ifmt .ge. 100) then
+ ihead = ifmt/100
+ ifmt = ifmt-100*ihead
+ len = ihead+ifmt+2
+ nperli = 80/len
+c
+ if (len .le. 9 ) then
+ assign 102 to ix
+ elseif (ifmt .le. 9) then
+ assign 103 to ix
+ else
+ assign 104 to ix
+ endif
+c
+ write(valfmt,ix) nperli,len,ifmt
+ 102 format(1h(,i2,1hF,i1,1h.,i1,1h) )
+ 103 format(1h(,i2,1hF,i2,1h.,i1,1h) )
+ 104 format(1h(,i2,1hF,i2,1h.,i2,1h) )
+C
+ else
+ len = ifmt + 6
+ nperli = 80/len
+c try to minimize the blanks in the format strings.
+ if (nperli .le. 9) then
+ if (len .le. 9 ) then
+ assign 105 to ix
+ elseif (ifmt .le. 9) then
+ assign 106 to ix
+ else
+ assign 107 to ix
+ endif
+ else
+ if (len .le. 9 ) then
+ assign 108 to ix
+ elseif (ifmt .le. 9) then
+ assign 109 to ix
+ else
+ assign 110 to ix
+ endif
+ endif
+c-----------
+ write(valfmt,ix) nperli,len,ifmt
+ 105 format(1h(,i1,1hD,i1,1h.,i1,1h) )
+ 106 format(1h(,i1,1hD,i2,1h.,i1,1h) )
+ 107 format(1h(,i1,1hD,i2,1h.,i2,1h) )
+ 108 format(1h(,i2,1hD,i1,1h.,i1,1h) )
+ 109 format(1h(,i2,1hD,i2,1h.,i1,1h) )
+ 110 format(1h(,i2,1hD,i2,1h.,i2,1h) )
+c
+ endif
+ valcrd = (nnz-1)/nperli+1
+ nrhs = job -2
+ if (nrhs .ge. 1) then
+ i = (nrhs*nrow-1)/nperli+1
+ rhscrd = i
+ if (guesol(1:1) .eq. 'G' .or. guesol(1:1) .eq. 'g')
+ + rhscrd = rhscrd+i
+ if (guesol(2:2) .eq. 'X' .or. guesol(2:2) .eq. 'x')
+ + rhscrd = rhscrd+i
+ rhstyp = 'F'//guesol
+ endif
+ 20 continue
+c
+ totcrd = ptrcrd+indcrd+valcrd+rhscrd
+c write 4-line or five line header
+ write(iounit,10) title,key,totcrd,ptrcrd,indcrd,valcrd,
+ 1 rhscrd,type,nrow,ncol,nnz,nrhs,ptrfmt,indfmt,valfmt,valfmt
+c-----------------------------------------------------------------------
+ nrwindx = 0
+ if (nrhs .ge. 1) write (iounit,11) rhstyp, nrhs, nrwindx
+ 10 format (a72, a8 / 5i14 / a3, 11x, 4i14 / 2a16, 2a20)
+ 11 format(A3,11x,i14,i14)
+c
+ write(iounit,ptrfmt) (ia (i), i = 1, ncol+1)
+ write(iounit,indfmt) (ja (i), i = 1, nnz)
+ if (job .le. 1) return
+ write(iounit,valfmt) (a(i), i = 1, nnz)
+ if (job .le. 2) return
+ len = nrow*nrhs
+ next = 1
+ iend = len
+ write(iounit,valfmt) (rhs(i), i = next, iend)
+c
+c write initial guesses if available
+c
+ if (guesol(1:1) .eq. 'G' .or. guesol(1:1) .eq. 'g') then
+ next = next+len
+ iend = iend+ len
+ write(iounit,valfmt) (rhs(i), i = next, iend)
+ endif
+c
+c write exact solutions if available
+c
+ if (guesol(2:2) .eq. 'X' .or. guesol(2:2) .eq. 'x') then
+ next = next+len
+ iend = iend+ len
+ write(iounit,valfmt) (rhs(i), i = next, iend)
+ endif
+c
+ return
+c----------end of prtmt ------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine dump (i1,i2,values,a,ja,ia,iout)
+ integer i1, i2, ia(*), ja(*), iout
+ real*8 a(*)
+ logical values
+c-----------------------------------------------------------------------
+c outputs rows i1 through i2 of a sparse matrix stored in CSR format
+c (or columns i1 through i2 of a matrix stored in CSC format) in a file,
+c one (column) row at a time in a nice readable format.
+c This is a simple routine which is useful for debugging.
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c i1 = first row (column) to print out
+c i2 = last row (column) to print out
+c values= logical. indicates whether or not to print real values.
+c if value = .false. only the pattern will be output.
+c a,
+c ja,
+c ia = matrix in CSR format (or CSC format)
+c iout = logical unit number for output.
+c----------
+c the output file iout will have written in it the rows or columns
+c of the matrix in one of two possible formats (depending on the max
+c number of elements per row. The values are output with only
+c two digits of accuracy (D9.2). )
+c-----------------------------------------------------------------------
+c local variables
+ integer maxr, i, k1, k2
+c
+c select mode horizontal or vertical
+c
+ maxr = 0
+ do 1 i=i1, i2
+ maxr = max0(maxr,ia(i+1)-ia(i))
+ 1 continue
+
+ if (maxr .le. 8) then
+c
+c able to do one row acros line
+c
+ do 2 i=i1, i2
+ write(iout,100) i
+ k1=ia(i)
+ k2 = ia(i+1)-1
+ write (iout,101) (ja(k),k=k1,k2)
+ if (values) write (iout,102) (a(k),k=k1,k2)
+ 2 continue
+ else
+c
+c unable to one row acros line. do three items at a time
+c across a line
+ do 3 i=i1, i2
+ if (values) then
+ write(iout,200) i
+ else
+ write(iout,203) i
+ endif
+ k1=ia(i)
+ k2 = ia(i+1)-1
+ if (values) then
+ write (iout,201) (ja(k),a(k),k=k1,k2)
+ else
+ write (iout,202) (ja(k),k=k1,k2)
+ endif
+ 3 continue
+ endif
+c
+c formats :
+c
+ 100 format (1h ,34(1h-),' row',i6,1x,34(1h-) )
+ 101 format(' col:',8(i5,6h : ))
+ 102 format(' val:',8(D9.2,2h :) )
+ 200 format (1h ,30(1h-),' row',i3,1x,30(1h-),/
+ * 3(' columns : values * ') )
+c-------------xiiiiiihhhhhhddddddddd-*-
+ 201 format(3(1h ,i6,6h : ,D9.2,3h * ) )
+ 202 format(6(1h ,i5,6h * ) )
+ 203 format (1h ,30(1h-),' row',i3,1x,30(1h-),/
+ * 3(' column : column *') )
+ return
+c----end-of-dump--------------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine pspltm(nrow,ncol,mode,ja,ia,title,ptitle,size,munt,
+ * nlines,lines,iunt)
+c-----------------------------------------------------------------------
+ integer nrow,ncol,ptitle,mode,iunt, ja(*), ia(*), lines(nlines)
+ real size
+ character title*(*), munt*2
+c-----------------------------------------------------------------------
+c PSPLTM - PostScript PLoTer of a (sparse) Matrix
+c This version by loris renggli (renggli@masg1.epfl.ch), Dec 1991
+c and Youcef Saad
+c------
+c Loris RENGGLI, Swiss Federal Institute of Technology, Math. Dept
+c CH-1015 Lausanne (Switzerland) -- e-mail: renggli@masg1.epfl.ch
+c Modified by Youcef Saad -- June 24, 1992 to add a few features:
+c separation lines + acceptance of MSR format.
+c-----------------------------------------------------------------------
+c input arguments description :
+c
+c nrow = number of rows in matrix
+c
+c ncol = number of columns in matrix
+c
+c mode = integer indicating whether the matrix is stored in
+c CSR mode (mode=0) or CSC mode (mode=1) or MSR mode (mode=2)
+c
+c ja = column indices of nonzero elements when matrix is
+c stored rowise. Row indices if stores column-wise.
+c ia = integer array of containing the pointers to the
+c beginning of the columns in arrays a, ja.
+c
+c title = character*(*). a title of arbitrary length to be printed
+c as a caption to the figure. Can be a blank character if no
+c caption is desired.
+c
+c ptitle = position of title; 0 under the drawing, else above
+c
+c size = size of the drawing
+c
+c munt = units used for size : 'cm' or 'in'
+c
+c nlines = number of separation lines to draw for showing a partionning
+c of the matrix. enter zero if no partition lines are wanted.
+c
+c lines = integer array of length nlines containing the coordinates of
+c the desired partition lines . The partitioning is symmetric:
+c a horizontal line across the matrix will be drawn in
+c between rows lines(i) and lines(i)+1 for i=1, 2, ..., nlines
+c an a vertical line will be similarly drawn between columns
+c lines(i) and lines(i)+1 for i=1,2,...,nlines
+c
+c iunt = logical unit number where to write the matrix into.
+c-----------------------------------------------------------------------
+c additional note: use of 'cm' assumes european format for paper size
+c (21cm wide) and use of 'in' assumes american format (8.5in wide).
+c The correct centering of the figure depends on the proper choice. Y.S.
+c-----------------------------------------------------------------------
+c external
+ integer LENSTR
+ external LENSTR
+c local variables ---------------------------------------------------
+ integer n,nr,nc,maxdim,istart,ilast,ii,k,ltit
+ real lrmrgn,botmrgn,xtit,ytit,ytitof,fnstit,siz
+ real xl,xr, yb,yt, scfct,u2dot,frlw,delt,paperx,conv,xx,yy
+ logical square
+c change square to .true. if you prefer a square frame around
+c a rectangular matrix
+ data haf /0.5/, zero/0.0/, conv/2.54/,square/.false./
+c-----------------------------------------------------------------------
+ siz = size
+ nr = nrow
+ nc = ncol
+ n = nc
+ if (mode .eq. 0) n = nr
+c nnz = ia(n+1) - ia(1)
+ maxdim = max(nrow, ncol)
+ m = 1 + maxdim
+ nc = nc+1
+ nr = nr+1
+c
+c units (cm or in) to dot conversion factor and paper size
+c
+ if (munt.eq.'cm' .or. munt.eq.'CM') then
+ u2dot = 72.0/conv
+ paperx = 21.0
+ else
+ u2dot = 72.0
+ paperx = 8.5*conv
+ siz = siz*conv
+ end if
+c
+c left and right margins (drawing is centered)
+c
+ lrmrgn = (paperx-siz)/2.0
+c
+c bottom margin : 2 cm
+c
+ botmrgn = 2.0
+c scaling factor
+ scfct = siz*u2dot/m
+c matrix frame line witdh
+ frlw = 0.25
+c font size for title (cm)
+ fnstit = 0.5
+ ltit = LENSTR(title)
+c position of title : centered horizontally
+c at 1.0 cm vertically over the drawing
+ ytitof = 1.0
+ xtit = paperx/2.0
+ ytit = botmrgn+siz*nr/m + ytitof
+c almost exact bounding box
+ xl = lrmrgn*u2dot - scfct*frlw/2
+ xr = (lrmrgn+siz)*u2dot + scfct*frlw/2
+ yb = botmrgn*u2dot - scfct*frlw/2
+ yt = (botmrgn+siz*nr/m)*u2dot + scfct*frlw/2
+ if (ltit.gt.0) then
+ yt = yt + (ytitof+fnstit*0.70)*u2dot
+ end if
+c add some room to bounding box
+ delt = 10.0
+ xl = xl-delt
+ xr = xr+delt
+ yb = yb-delt
+ yt = yt+delt
+c
+c correction for title under the drawing
+ if (ptitle.eq.0 .and. ltit.gt.0) then
+ ytit = botmrgn + fnstit*0.3
+ botmrgn = botmrgn + ytitof + fnstit*0.7
+ end if
+c begin of output
+c
+ write(iunt,10) '%!'
+ write(iunt,10) '%%Creator: PSPLTM routine'
+ write(iunt,12) '%%BoundingBox:',xl,yb,xr,yt
+ write(iunt,10) '%%EndComments'
+ write(iunt,10) '/cm {72 mul 2.54 div} def'
+ write(iunt,10) '/mc {72 div 2.54 mul} def'
+ write(iunt,10) '/pnum { 72 div 2.54 mul 20 string'
+ write(iunt,10) 'cvs print ( ) print} def'
+ write(iunt,10)
+ 1 '/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def'
+c
+c we leave margins etc. in cm so it is easy to modify them if
+c needed by editing the output file
+ write(iunt,10) 'gsave'
+ if (ltit.gt.0) then
+ write(iunt,*) '/Helvetica findfont ',fnstit,
+ & ' cm scalefont setfont '
+ write(iunt,*) xtit,' cm ',ytit,' cm moveto '
+ write(iunt,'(3A)') '(',title(1:ltit),') Cshow'
+ end if
+ write(iunt,*) lrmrgn,' cm ',botmrgn,' cm translate'
+ write(iunt,*) siz,' cm ',m,' div dup scale '
+c-------
+c draw a frame around the matrix
+ write(iunt,*) frlw,' setlinewidth'
+ write(iunt,10) 'newpath'
+ write(iunt,11) 0, 0, ' moveto'
+ if (square) then
+ write(iunt,11) m,0,' lineto'
+ write(iunt,11) m, m, ' lineto'
+ write(iunt,11) 0,m,' lineto'
+ else
+ write(iunt,11) nc,0,' lineto'
+ write(iunt,11) nc,nr,' lineto'
+ write(iunt,11) 0,nr,' lineto'
+ end if
+ write(iunt,10) 'closepath stroke'
+c
+c drawing the separation lines
+c
+ write(iunt,*) ' 0.2 setlinewidth'
+ do 22 kol=1, nlines
+ isep = lines(kol)
+c
+c horizontal lines
+c
+ yy = real(nrow-isep) + haf
+ xx = real(ncol+1)
+ write(iunt,13) zero, yy, ' moveto '
+ write(iunt,13) xx, yy, ' lineto stroke '
+c
+c vertical lines
+c
+ xx = real(isep) + haf
+ yy = real(nrow+1)
+ write(iunt,13) xx, zero,' moveto '
+ write(iunt,13) xx, yy, ' lineto stroke '
+ 22 continue
+c
+c----------- plotting loop ---------------------------------------------
+c
+ write(iunt,10) '1 1 translate'
+ write(iunt,10) '0.8 setlinewidth'
+ write(iunt,10) '/p {moveto 0 -.40 rmoveto '
+ write(iunt,10) ' 0 .80 rlineto stroke} def'
+c
+ do 1 ii=1, n
+ istart = ia(ii)
+ ilast = ia(ii+1)-1
+ if (mode .eq. 1) then
+ do 2 k=istart, ilast
+ write(iunt,11) ii-1, nrow-ja(k), ' p'
+ 2 continue
+ else
+ do 3 k=istart, ilast
+ write(iunt,11) ja(k)-1, nrow-ii, ' p'
+ 3 continue
+c add diagonal element if MSR mode.
+ if (mode .eq. 2)
+ * write(iunt,11) ii-1, nrow-ii, ' p'
+c
+ endif
+ 1 continue
+c-----------------------------------------------------------------------
+ write(iunt,10) 'showpage'
+ return
+c
+ 10 format (A)
+ 11 format (2(I6,1x),A)
+ 12 format (A,4(1x,F9.2))
+ 13 format (2(F9.2,1x),A)
+c-----------------------------------------------------------------------
+ end
+c
+ integer function lenstr(s)
+c-----------------------------------------------------------------------
+c return length of the string S
+c-----------------------------------------------------------------------
+ character*(*) s
+ integer len
+ intrinsic len
+ integer n
+c-----------------------------------------------------------------------
+ n = len(s)
+10 continue
+ if (s(n:n).eq.' ') then
+ n = n-1
+ if (n.gt.0) go to 10
+ end if
+ lenstr = n
+c
+ return
+c--------end-of-pspltm--------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine pltmt (nrow,ncol,mode,ja,ia,title,key,type,
+ 1 job, iounit)
+c-----------------------------------------------------------------------
+c this subroutine creates a 'pic' file for plotting the pattern of
+c a sparse matrix stored in general sparse format. it is not intended
+c to be a means of plotting large matrices (it is very inefficient).
+c It is however useful for small matrices and can be used for example
+c for inserting matrix plots in a text. The size of the plot can be
+c 7in x 7in or 5 in x 5in .. There is also an option for writing a
+c 3-line header in troff (see description of parameter job).
+c Author: Youcef Saad - Date: Sept., 1989
+c See SPARSKIT/UNSUPP/ for a version of this to produce a post-script
+c file.
+c-----------------------------------------------------------------------
+c nrow = number of rows in matrix
+c
+c ncol = number of columns in matrix
+c
+c mode = integer indicating whether the matrix is stored
+c row-wise (mode = 0) or column-wise (mode=1)
+c
+c ja = column indices of nonzero elements when matrix is
+c stored rowise. Row indices if stores column-wise.
+c ia = integer array of containing the pointers to the
+c beginning of the columns in arrays a, ja.
+c
+c title = character*71 = title of matrix test ( character a*71 ).
+c key = character*8 = key of matrix
+c type = character*3 = type of matrix.
+c
+c job = this integer parameter allows to set a few minor
+c options. First it tells pltmt whether or not to
+c reduce the plot. The standard size of 7in is then
+c replaced by a 5in plot. It also tells pltmt whether or
+c not to append to the pic file a few 'troff' lines that
+c produce a centered caption includingg the title, key and
+c types as well as the size and number of nonzero elements.
+c job = 0 : do not reduce and do not make caption.
+c job = 1 : reduce and do not make caption.
+c job = 10 : do not reduce and make caption
+c job = 11 : reduce and make caption.
+c (i.e. trailing digit for reduction, leading digit for caption)
+c
+c iounit = logical unit number where to write the matrix into.
+c
+c-----------------------------------------------------------------------
+c example of usage .
+c-----------------
+c In the fortran code:
+c a) read a Harwell/Boeing matrix
+c call readmt (.....)
+c iout = 13
+c b) generate pic file:
+c call pltmt (nrow,ncol,mode,ja,ia,title,key,type,iout)
+c stop
+c ---------
+c Then in a unix environment plot the matrix by the command
+c
+c pic FOR013.DAT | troff -me | lpr -Ppsx
+c
+c-----------------------------------------------------------------------
+c notes: 1) Plots square as well as rectangular matrices.
+c (however not as much tested with rectangular matrices.)
+c 2) the dot-size is adapted according to the size of the
+c matrix.
+c 3) This is not meant at all as a way of plotting large
+c matrices. The pic file generaled will have one line for
+c each nonzero element. It is only meant for use in
+c such things as document poreparations etc..
+c 4) The caption written will print the 71 character long
+c title. This may not be centered correctly if the
+c title has trailing blanks (a problem with Troff).
+c if you want the title centered then you can center
+c the string in title before calling pltmt.
+c
+c-----------------------------------------------------------------------
+ integer ja(*), ia(*)
+ character key*8,title*72,type*3
+ real x, y
+c-------
+ n = ncol
+ if (mode .eq. 0) n = nrow
+ nnz = ia(n+1) - ia(1)
+ maxdim = max0 (nrow, ncol)
+ xnrow = real(nrow)
+ ptsize = 0.08
+ hscale = (7.0 -2.0*ptsize)/real(maxdim-1)
+ vscale = hscale
+ xwid = ptsize + real(ncol-1)*hscale + ptsize
+ xht = ptsize + real(nrow-1)*vscale + ptsize
+ xshift = (7.0-xwid)/2.0
+ yshift = (7.0-xht)/2.0
+c------
+ if (mod(job,10) .eq. 1) then
+ write (iounit,88)
+ else
+ write (iounit,89)
+ endif
+ 88 format('.PS 5in',/,'.po 1.8i')
+ 89 format('.PS',/,'.po 0.7i')
+ write(iounit,90)
+ 90 format('box invisible wid 7.0 ht 7.0 with .sw at (0.0,0.0) ')
+ write(iounit,91) xwid, xht, xshift, yshift
+ 91 format('box wid ',f5.2,' ht ',f5.2,
+ * ' with .sw at (',f5.2,',',f5.2,')' )
+c
+c shift points slightly to account for size of dot , etc..
+c
+ tiny = 0.03
+ if (mod(job,10) .eq. 1) tiny = 0.05
+ xshift = xshift + ptsize - tiny
+ yshift = yshift + ptsize + tiny
+c
+c-----------------------------------------------------------------------
+c
+ ips = 8
+ if (maxdim .le. 500) ips = 10
+ if (maxdim .le. 300) ips = 12
+ if (maxdim .le. 100) ips = 16
+ if (maxdim .lt. 50) ips = 24
+ write(iounit,92) ips
+ 92 format ('.ps ',i2)
+c
+c-----------plottingloop ---------------------------------------------
+c
+ do 1 ii=1, n
+ istart = ia(ii)
+ ilast = ia(ii+1)-1
+ if (mode .ne. 0) then
+ x = real(ii-1)
+ do 2 k=istart, ilast
+ y = xnrow-real(ja(k))
+ write(iounit,128) xshift+x*hscale, yshift+y*vscale
+ 2 continue
+ else
+ y = xnrow - real(ii)
+ do 3 k=istart, ilast
+ x = real(ja(k)-1)
+ write(iounit,128) xshift+x*hscale, yshift+y*vscale
+ 3 continue
+ endif
+ 1 continue
+c-----------------------------------------------------------------------
+ 128 format(7h"." at ,f6.3,1h,,f6.3,8h ljust )
+ write (iounit, 129)
+ 129 format('.PE')
+c quit if caption not desired.
+ if ( (job/10) .ne. 1) return
+c
+ write(iounit,127) key, type, title
+ write(iounit,130) nrow,ncol,nnz
+ 127 format('.sp 4'/'.ll 7i'/'.ps 12'/'.po 0.7i'/'.ce 3'/,
+ * 'Matrix: ',a8,', Type: ',a3,/,a72)
+ 130 format('Dimension: ',i4,' x ',i4,', Nonzero elements: ',i5)
+ return
+c----------------end-of-pltmt ------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine smms (n,first,last,mode,a,ja,ia,iout)
+ integer ia(*), ja(*), n, first, last, mode, iout
+ real*8 a(*)
+c-----------------------------------------------------------------------
+c writes a matrix in Coordinate (SMMS) format --
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = integer = size of matrix -- number of rows (columns if matrix
+c is stored columnwise)
+c first = first row (column) to be output. This routine will output
+c rows (colums) first to last.
+c last = last row (column) to be output.
+c mode = integer giving some information about the storage of the
+c matrix. A 3-digit decimal number. 'htu'
+c * u = 0 means that matrix is stored row-wise
+c * u = 1 means that matrix is stored column-wise
+c * t = 0 indicates that the matrix is stored in CSR format
+c * t = 1 indicates that the matrix is stored in MSR format.
+c * h = ... to be added.
+c a,
+c ja,
+c ia = matrix in CSR or MSR format (see mode)
+c iout = output unit number.
+c
+c on return:
+c----------
+c the output file iout will have written in it the matrix in smms
+c (coordinate format)
+c
+c-----------------------------------------------------------------------
+ logical msr, csc
+c
+c determine mode ( msr or csr )
+c
+ msr = .false.
+ csc = .false.
+ if (mod(mode,10) .eq. 1) csc = .true.
+ if ( (mode/10) .eq. 1) msr = .true.
+
+ write (iout,*) n
+ do 2 i=first, last
+ k1=ia(i)
+ k2 = ia(i+1)-1
+c write (iout,*) ' row ', i
+ if (msr) write(iout,'(2i6,e22.14)') i, i, a(i)
+ do 10 k=k1, k2
+ if (csc) then
+ write(iout,'(2i6,e22.14)') ja(k), i, a(k)
+ else
+ write(iout,'(2i6,e22.14)') i, ja(k), a(k)
+ endif
+ 10 continue
+ 2 continue
+c----end-of-smms--------------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine readsm (nmax,nzmax,n,nnz,ia,ja,a,iout,ierr)
+ integer nmax, nzmax, row, n, iout, i, j, k, ierr
+ integer ia(nmax+1), ja(nzmax)
+ real*8 a(nzmax), x
+c-----------------------------------------------------------------------
+c read a matrix in coordinate format as is used in the SMMS
+c package (F. Alvarado), i.e. the row is in ascending order.
+c Outputs the matrix in CSR format.
+c-----------------------------------------------------------------------
+c coded by Kesheng Wu on Oct 21, 1991 with the supervision of Y. Saad
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c nmax = the maximum size of array
+c nzmax = the maximum number of nonzeros
+c iout = the I/O unit that has the data file
+c
+c on return:
+c----------
+c n = integer = size of matrix
+c nnz = number of non-zero entries in the matrix
+c a,
+c ja,
+c ia = matrix in CSR format
+c ierr = error code,
+c 0 -- subroutine end with intended job done
+c 1 -- error in I/O unit iout
+c 2 -- end-of-file reached while reading n, i.e. a empty data file
+c 3 -- n non-positive or too large
+c 4 -- nnz is zero or larger than nzmax
+c 5 -- data file is not orgnized in the order of ascending
+c row indices
+c
+c in case of errors:
+c n will be set to zero (0). In case the data file has more than nzmax
+c number of entries, the first nzmax entries will be read, and are not
+c cleared on return. The total number of entry is determined.
+c Ierr is set.
+c-----------------------------------------------------------------------
+c
+ rewind(iout)
+ nnz = 0
+ ia(1) = 1
+ row = 1
+c
+ read (iout,*, err=1000, end=1010) n
+ if ((n.le.0) .or. (n.gt.nmax)) goto 1020
+c
+ 10 nnz = nnz + 1
+ read (iout, *, err=1000, end=100) i, j, x
+
+c set the pointers when needed
+ if (i.gt.row) then
+ do 20 k = row+1, i
+ ia(k) = nnz
+ 20 continue
+ row = i
+ else if (i.lt.row) then
+ goto 1040
+ endif
+
+ ja(nnz) = j
+ a (nnz) = x
+
+ if (nnz.lt.nzmax) then
+ goto 10
+ else
+ goto 1030
+ endif
+
+c normal return -- end of file reached
+ 100 ia(row+1) = nnz
+ nnz = nnz - 1
+ if (nnz.eq.0) goto 1030
+c
+c everything seems to be OK.
+c
+ ierr = 0
+ return
+c
+c error handling code
+c
+c error in reading data entries
+c
+ 1000 ierr = 1
+ goto 2000
+c
+c empty file
+c
+ 1010 ierr = 2
+ goto 2000
+c
+c problem with n
+c
+ 1020 ierr = 3
+ goto 2000
+c
+c problem with nnz
+c
+ 1030 ierr = 4
+c
+c try to determine the real number of entries, in case needed
+c
+ if (nnz.ge.nzmax) then
+ 200 read(iout, *, err=210, end=210) i, j, x
+ nnz = nnz + 1
+ goto 200
+ 210 continue
+ endif
+ goto 2000
+c
+c data entries not ordered
+c
+ 1040 ierr = 5
+ 2000 n = 0
+ return
+c----end-of-readsm------------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine readsk (nmax,nzmax,n,nnz,a,ja,ia,iounit,ierr)
+ integer nmax, nzmax, iounit, n, nnz, i, ierr
+ integer ia(nmax+1), ja(nzmax)
+ real*8 a(nzmax)
+c-----------------------------------------------------------------------
+c Reads matrix in Compressed Saprse Row format. The data is supposed to
+c appear in the following order -- n, ia, ja, a
+c Only square matrices accepted. Format has following features
+c (1) each number is separated by at least one space (or end-of-line),
+c (2) each array starts with a new line.
+c-----------------------------------------------------------------------
+c coded by Kesheng Wu on Oct 21, 1991 with supervision of Y. Saad
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c nmax = max column dimension allowed for matrix.
+c nzmax = max number of nonzeros elements allowed. the arrays a,
+c and ja should be of length equal to nnz (see below).
+c iounit = logical unit number where to read the matrix from.
+c
+c on return:
+c----------
+c ia,
+c ja,
+c a = matrx in CSR format
+c n = number of rows(columns) in matrix
+c nnz = number of nonzero elements in A. This info is returned
+c even if there is not enough space in a, ja, ia, in order
+c to determine the minimum storage needed.
+c ierr = error code,
+c 0 : OK;
+c 1 : error when try to read the specified I/O unit.
+c 2 : end-of-file reached during reading of data file.
+c 3 : array size in data file is negtive or larger than nmax;
+c 4 : nunmer of nonzeros in data file is negtive or larger than nzmax
+c in case of errors:
+c---------
+c n is set to 0 (zero), at the same time ierr is set.
+c-----------------------------------------------------------------------
+c
+c read the size of the matrix
+c
+ rewind(iounit)
+ read (iounit, *, err=1000, end=1010) n
+ if ((n.le.0).or.(n.gt.nmax)) goto 1020
+c
+c read the pointer array ia(*)
+c
+ read (iounit, *, err=1000, end=1010) (ia(i), i=1, n+1)
+c
+c Number of None-Zeros
+c
+ nnz = ia(n+1) - 1
+ if ((nnz.le.0).or.(nnz.gt.nzmax)) goto 1030
+c
+c read the column indices array
+c
+ read (iounit, *, err=1000, end=1010) (ja(i), i=1, nnz)
+c
+c read the matrix elements
+c
+ read (iounit, *, err=1000, end=1010) (a(i), i=1, nnz)
+c
+c normal return
+c
+ ierr = 0
+ return
+c
+c error handling code
+c
+c error in reading I/O unit
+ 1000 ierr = 1
+ goto 2000
+c
+c EOF reached in reading
+ 1010 ierr =2
+ goto 2000
+c
+c n non-positive or too large
+ 1020 ierr = 3
+ n = 0
+ goto 2000
+c
+c NNZ non-positive or too large
+ 1030 ierr = 4
+c
+c the real return statement
+c
+ 2000 n = 0
+ return
+c---------end of readsk ------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine skit (n, a, ja, ia, ifmt, iounit, ierr)
+c-----------------------------------------------------------------------
+c Writes a matrix in Compressed Sparse Row format to an I/O unit.
+c It tryes to pack as many number as possible into lines of less than
+c 80 characters. Space is inserted in between numbers for separation
+c to avoid carrying a header in the data file. This can be viewed
+c as a simplified Harwell-Boeing format.
+c-----------------------------------------------------------------------
+c Modified from subroutine prtmt written by Y. Saad
+c-----------------------------------------------------------------------
+c on entry:
+c---------
+c n = number of rows(columns) in matrix
+c a = real*8 array containing the values of the matrix stored
+c columnwise
+c ja = integer array of the same length as a containing the column
+c indices of the corresponding matrix elements of array a.
+c ia = integer array of containing the pointers to the beginning of
+c the row in arrays a and ja.
+c ifmt = integer specifying the format chosen for the real values
+c to be output (i.e., for a, and for rhs-guess-sol if
+c applicable). The meaning of ifmt is as follows.
+c * if (ifmt .lt. 100) then the D descriptor is used,
+c format Dd.m, in which the length (m) of the mantissa is
+c precisely the integer ifmt (and d = ifmt+6)
+c * if (ifmt .gt. 100) then prtmt will use the
+c F- descriptor (format Fd.m) in which the length of the
+c mantissa (m) is the integer mod(ifmt,100) and the length
+c of the integer part is k=ifmt/100 (and d = k+m+2)
+c Thus ifmt= 4 means D10.4 +.xxxxD+ee while
+c ifmt=104 means F7.4 +x.xxxx
+c ifmt=205 means F9.5 +xx.xxxxx
+c Note: formats for ja, and ia are internally computed.
+c
+c iounit = logical unit number where to write the matrix into.
+c
+c on return:
+c----------
+c ierr = error code, 0 for normal 1 for error in writing to iounit.
+c
+c on error:
+c--------
+c If error is encontacted when writing the matrix, the whole matrix
+c is written to the standard output.
+c ierr is set to 1.
+c-----------------------------------------------------------------------
+ character ptrfmt*16,indfmt*16,valfmt*20
+ integer iounit, n, ifmt, len, nperli, nnz, i, ihead
+ integer ja(*), ia(*), ierr
+ real*8 a(*)
+c--------------
+c compute pointer format
+c--------------
+ nnz = ia(n+1)
+ len = int ( alog10(0.1+real(nnz))) + 2
+ nnz = nnz - 1
+ nperli = 80/len
+
+ print *, ' skit entries:', n, nnz, len, nperli
+
+ if (len .gt. 9) then
+ assign 101 to ix
+ else
+ assign 100 to ix
+ endif
+ write (ptrfmt,ix) nperli,len
+ 100 format(1h(,i2,1HI,i1,1h) )
+ 101 format(1h(,i2,1HI,i2,1h) )
+c----------------------------
+c compute ROW index format
+c----------------------------
+ len = int ( alog10(0.1+real(n) )) + 2
+ nperli = min0(80/len,nnz)
+ write (indfmt,100) nperli,len
+c---------------------------
+c compute value format
+c---------------------------
+ if (ifmt .ge. 100) then
+ ihead = ifmt/100
+ ifmt = ifmt-100*ihead
+ len = ihead+ifmt+3
+ nperli = 80/len
+c
+ if (len .le. 9 ) then
+ assign 102 to ix
+ elseif (ifmt .le. 9) then
+ assign 103 to ix
+ else
+ assign 104 to ix
+ endif
+c
+ write(valfmt,ix) nperli,len,ifmt
+ 102 format(1h(,i2,1hF,i1,1h.,i1,1h) )
+ 103 format(1h(,i2,1hF,i2,1h.,i1,1h) )
+ 104 format(1h(,i2,1hF,i2,1h.,i2,1h) )
+C
+ else
+ len = ifmt + 7
+ nperli = 80/len
+c try to minimize the blanks in the format strings.
+ if (nperli .le. 9) then
+ if (len .le. 9 ) then
+ assign 105 to ix
+ elseif (ifmt .le. 9) then
+ assign 106 to ix
+ else
+ assign 107 to ix
+ endif
+ else
+ if (len .le. 9 ) then
+ assign 108 to ix
+ elseif (ifmt .le. 9) then
+ assign 109 to ix
+ else
+ assign 110 to ix
+ endif
+ endif
+c-----------
+ write(valfmt,ix) nperli,len,ifmt
+ 105 format(1h(,i1,1hD,i1,1h.,i1,1h) )
+ 106 format(1h(,i1,1hD,i2,1h.,i1,1h) )
+ 107 format(1h(,i1,1hD,i2,1h.,i2,1h) )
+ 108 format(1h(,i2,1hD,i1,1h.,i1,1h) )
+ 109 format(1h(,i2,1hD,i2,1h.,i1,1h) )
+ 110 format(1h(,i2,1hD,i2,1h.,i2,1h) )
+c
+ endif
+c
+c output the data
+c
+ write(iounit, *) n
+ write(iounit,ptrfmt,err=1000) (ia(i), i = 1, n+1)
+ write(iounit,indfmt,err=1000) (ja(i), i = 1, nnz)
+ write(iounit,valfmt,err=1000) ( a(i), i = 1, nnz)
+c
+c done, if no trouble is encounted in writing data
+c
+ ierr = 0
+ return
+c
+c if can't write the data to the I/O unit specified, should be able to
+c write everything to standard output (unit 6)
+c
+ 1000 write(0, *) 'Error, Can''t write data to sepcified unit',iounit
+ write(0, *) 'Write the matrix into standard output instead!'
+ ierr = 1
+ write(6,*) n
+ write(6,ptrfmt) (ia(i), i=1, n+1)
+ write(6,indfmt) (ja(i), i=1, nnz)
+ write(6,valfmt) ( a(i), i=1, nnz)
+ return
+c----------end of skit -------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine prtunf(n, a, ja, ia, iout, ierr)
+c-----------------------------------------------------------------------
+c This subroutine dumps the arrays used for storing sparse compressed row
+c format in machine code, i.e. unformatted using standard FORTRAN term.
+c-----------------------------------------------------------------------
+c First coded by Kesheng Wu on Oct 21, 1991 under the instruction of
+c Prof. Y. Saad
+c-----------------------------------------------------------------------
+c On entry:
+c n: the size of the matrix (matrix is n X n)
+c ia: integer array stores the stariting position of each row.
+c ja: integer array stores the column indices of each entry.
+c a: the non-zero entries of the matrix.
+c iout: the unit number opened for storing the matrix.
+c On return:
+c ierr: a error, 0 if everything's OK, else 1 if error in writing data.
+c On error:
+c set ierr to 1.
+c No redirection is made, since direct the machine code to the standard
+c output may cause unpridictable consequences.
+c-----------------------------------------------------------------------
+ integer iout, n, nnz, ierr, ia(*), ja(*)
+ real*8 a(*)
+ nnz = ia(n+1)-ia(1)
+c
+ write(unit=iout, err=1000) n
+ write(unit=iout, err=1000) (ia(k),k=1,n+1)
+ if (nnz .gt. 0) then
+ write(unit=iout, err=1000) (ja(k),k=1,nnz)
+ write(unit=iout, err=1000) ( a(k),k=1,nnz)
+ endif
+c
+ ierr = 0
+ return
+c
+ 1000 ierr = 1
+ return
+ end
+c---------end of prtunf ------------------------------------------------
+c
+c-----------------------------------------------------------------------
+ subroutine readunf(nmax,nzmax,n,nnz,a,ja,ia,iounit,ierr)
+c-----------------------------------------------------------------------
+c This subroutine reads a matix store in machine code (FORTRAN
+c unformatted form). The matrix is in CSR format.
+c-----------------------------------------------------------------------
+c First coded by Kesheng Wu on Oct 21, 1991 under the instruction of
+c Prof. Y. Saad
+c-----------------------------------------------------------------------
+c On entry:
+c nmax: the maximum value of matrix size.
+c nzmax: the maximum number of non-zero entries.
+c iounit: the I/O unit that opened for reading.
+c On return:
+c n: the actual size of array.
+c nnz: the actual number of non-zero entries.
+c ia,ja,a: the matrix in CSR format.
+c ierr: a error code, it's same as that used in reaadsk
+c 0 -- OK
+c 1 -- error in reading iounit
+c 2 -- end-of-file reached while reading data file
+c 3 -- n is non-positive or too large
+c 4 -- nnz is non-positive or too large
+c On error:
+c return with n set to 0 (zero). nnz is kept if it's set already,
+c in case one want to use it to determine the size of array needed
+c to hold the data.
+c-----------------------------------------------------------------------
+c
+ integer nmax, nzmax, n, iounit, nnz, k
+ integer ia(nmax+1), ja(nzmax)
+ real*8 a(nzmax)
+c
+ rewind iounit
+c
+ read (unit=iounit, err=1000, end=1010) n
+ if ((n.le.0) .or. (n.gt.nmax)) goto 1020
+c
+ read(unit=iounit, err=1000, end=1010) (ia(k),k=1,n+1)
+c
+ nnz = ia(n+1) - 1
+ if ((nnz.le.0) .or. (nnz.gt.nzmax)) goto 1030
+c
+ read(unit=iounit, err=1000, end=1010) (ja(k),k=1,nnz)
+ read(unit=iounit, err=1000, end=1010) (a(k),k=1,nnz)
+c
+c everything seems to be OK.
+c
+ ierr = 0
+ return
+c
+c error handling
+c
+ 1000 ierr = 1
+ goto 2000
+ 1010 ierr = 2
+ goto 2000
+ 1020 ierr = 3
+ goto 2000
+ 1030 ierr = 4
+ 2000 n = 0
+ return
+ end
+c---------end of readunf ----------------------------------------------
diff --git a/INOUT/makefile b/INOUT/makefile
new file mode 100644
index 0000000..993582c
--- /dev/null
+++ b/INOUT/makefile
@@ -0,0 +1,28 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES1 = chkio.o
+FILES2 = hb2ps.o
+FILES3 = hb2pic.o
+
+chk.ex: $(FILES1) ../MATGEN/FDIF/functns.o ../libskit.a
+ $(F77) $(FFLAGS) -o chk.ex $(FILES1) ../MATGEN/FDIF/functns.o ../libskit.a
+
+hb2ps.ex: $(FILES2) ../libskit32.a
+ $(F77) $(FFLAGS) -o hb2ps.ex $(FILES2) ../libskit32.a
+
+hb2pic.ex: $(FILES3) ../libskit.a
+ $(F77) $(FFLAGS) -o hb2pic.ex $(FILES3) ../libskit.a
+
+clean:
+ rm -f *.o *.ex core *.trace *.pic *.mat *.ps
+
+../MATGEN/FDIF/functns.o:
+ (cd ../MATGEN/FDIF; $(F77) $(FFLAGS) -c functns.f)
+
+../libskit.a:
+ (cd ..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
diff --git a/INOUT/semantic.cache b/INOUT/semantic.cache
new file mode 100644
index 0000000..5676fe7
--- /dev/null
+++ b/INOUT/semantic.cache
@@ -0,0 +1,15 @@
+;; Object INOUT/
+;; SEMANTICDB Tags save file
+(semanticdb-project-database-file "INOUT/"
+ :tables (list
+ (semanticdb-table "makefile"
+ :major-mode 'makefile-mode
+ :tags '(("FFLAGS" variable nil nil [1 11]) ("F77" variable (:default-value ("f77")) nil [11 21]) ("FILES1" variable (:default-value ("chkio.o")) nil [54 71]) ("FILES2" variable (:default-value ("hb2ps.o")) nil [71 89]) ("FILES3" variable (:default-value ("hb2pic.o")) nil [89 108]) ("chk.ex" function (:arguments ("$(FILES1)" "../MATGEN/FDIF/functns.o" "../libskit.a")) nil [109 242]) ("hb2ps.ex" function (:arguments ("$(FILES2)" "../libskit32.a")) nil [242 333]) ("hb2pic.ex" function (:arguments ("$(FILES3)" "../libskit.a")) nil [333 422]) ("clean" function nil nil [422 476]) ("../MATGEN/FDIF/functns.o" function nil nil [476 555]) ("../libskit.a" function nil nil [555 611]))
+ :file "makefile"
+ :pointmax 611
+ )
+ )
+ :file "semantic.cache"
+ :semantic-tag-version "2.0pre3"
+ :semanticdb-version "2.0pre3"
+ )
diff --git a/ITSOL/README b/ITSOL/README
new file mode 100644
index 0000000..e362ada
--- /dev/null
+++ b/ITSOL/README
@@ -0,0 +1,63 @@
+
+ -----------------
+ Current contents:
+ -----------------
+
+ Solvers
+ -------
+
+ iters.f : This file currently has several basic iterative linear system
+ solvers. They are:
+ CG -- Conjugate Gradient Method
+ CGNR -- Conjugate Gradient Method on Normal Residual equation
+ BCG -- Bi-Conjugate Gradient Method
+ BCGSTAB -- BCG stablized
+ TFQMR -- Transpose-Free Quasi-Minimum Residual method
+ GMRES -- Generalized Minimum RESidual method
+ FGMRES -- Flexible version of Generalized Minimum RESidual method
+ DQGMRES -- Direct verions of Quasi Generalized Minimum Residual
+ method
+ DBCG -- BCG with partial pivoting
+
+ Preconditioners
+ ---------------
+
+ ilut.f : ILUT + GMRES: a combination of a robust preconditioner
+ using dual thresholding for dropping strategy and
+ the GMRES algorithm. ILU0 and MILU0 are also provided
+ for comparison purposes.
+ large number of updates on Feb 10, 1992 Y.S.
+ ILUTP, or ILUT with partial pivoting is also provided.
+
+ Drivers
+ -------
+
+ rilut.f : test program for GMRES/ILU*.
+ It tests three preconditioners ilu0, milu0 and ilut using
+ GMRES as the solver.
+
+riters.f : test program for ITERS -- the basic iterative solvers
+ with reverse communication.
+ The test matrix is generated with GEN57PT.
+
+riter2.f : test program for ITERS. It reads a Harwell/Boeing matrix
+ from the standard input.
+
+ Other
+ -----
+
+ itaux.f : The file contains some of the auxiliary functions that is
+ required to run the test prgram rilut.f and riters.f It
+ includes the routine that drive the reverse-communincation
+ routines and the definitions of the partial differential
+ equations used to generate the matrix in rilut.f and
+ riters.f.
+
+ executables
+ -----------
+
+ rilut.ex : generated by "make rilut.ex" from the driver rilut.f
+riters.ex : generated by "make riters.ex" from the driver riters.f
+riter2.ex : generated by "make riter2.ex" from the driver riter2.f
+
+ see makefile for the details of the dependencies.
diff --git a/ITSOL/ilut.f b/ITSOL/ilut.f
new file mode 100644
index 0000000..5136347
--- /dev/null
+++ b/ITSOL/ilut.f
@@ -0,0 +1,2430 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c ITERATIVE SOLVERS MODULE c
+c----------------------------------------------------------------------c
+c This Version Dated: August 13, 1996. Warning: meaning of some c
+c ============ arguments have changed w.r.t. earlier versions. Some c
+c Calling sequences may also have changed c
+c----------------------------------------------------------------------c
+c Contents: c
+c-------------------------preconditioners------------------------------c
+c c
+c ILUT : Incomplete LU factorization with dual truncation strategy c
+c ILUTP : ILUT with column pivoting c
+c ILUD : ILU with single dropping + diagonal compensation (~MILUT) c
+c ILUDP : ILUD with column pivoting c
+c ILUK : level-k ILU c
+c ILU0 : simple ILU(0) preconditioning c
+c MILU0 : MILU(0) preconditioning c
+c c
+c----------sample-accelerator-and-LU-solvers---------------------------c
+c c
+c PGMRES : preconditioned GMRES solver c
+c LUSOL : forward followed by backward triangular solve (Precond.) c
+c LUTSOL : solving v = (LU)^{-T} u (used for preconditioning) c
+c c
+c-------------------------utility-routine------------------------------c
+c c
+c QSPLIT : quick split routine used by ilut to sort out the k largest c
+c elements in absolute value c
+c c
+c----------------------------------------------------------------------c
+c c
+c Note: all preconditioners are preprocessors to pgmres. c
+c usage: call preconditioner then call pgmres c
+c c
+c----------------------------------------------------------------------c
+ subroutine ilut(n,a,ja,ia,lfil,droptol,alu,jlu,ju,iwk,w,jw,ierr)
+c-----------------------------------------------------------------------
+ implicit none
+ integer n
+ real*8 a(*),alu(*),w(n+1),droptol
+ integer ja(*),ia(n+1),jlu(*),ju(n),jw(2*n),lfil,iwk,ierr
+c----------------------------------------------------------------------*
+c *** ILUT preconditioner *** *
+c incomplete LU factorization with dual truncation mechanism *
+c----------------------------------------------------------------------*
+c Author: Yousef Saad *May, 5, 1990, Latest revision, August 1996 *
+c----------------------------------------------------------------------*
+c PARAMETERS
+c-----------
+c
+c on entry:
+c==========
+c n = integer. The row dimension of the matrix A. The matrix
+c
+c a,ja,ia = matrix stored in Compressed Sparse Row format.
+c
+c lfil = integer. The fill-in parameter. Each row of L and each row
+c of U will have a maximum of lfil elements (excluding the
+c diagonal element). lfil must be .ge. 0.
+c ** WARNING: THE MEANING OF LFIL HAS CHANGED WITH RESPECT TO
+c EARLIER VERSIONS.
+c
+c droptol = real*8. Sets the threshold for dropping small terms in the
+c factorization. See below for details on dropping strategy.
+c
+c
+c iwk = integer. The lengths of arrays alu and jlu. If the arrays
+c are not big enough to store the ILU factorizations, ilut
+c will stop with an error message.
+c
+c On return:
+c===========
+c
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = integer array of length n containing the pointers to
+c the beginning of each row of U in the matrix alu,jlu.
+c
+c ierr = integer. Error message with the following meaning.
+c ierr = 0 --> successful return.
+c ierr .gt. 0 --> zero pivot encountered at step number ierr.
+c ierr = -1 --> Error. input matrix may be wrong.
+c (The elimination process has generated a
+c row in L or U whose length is .gt. n.)
+c ierr = -2 --> The matrix L overflows the array al.
+c ierr = -3 --> The matrix U overflows the array alu.
+c ierr = -4 --> Illegal value for lfil.
+c ierr = -5 --> zero row encountered.
+c
+c work arrays:
+c=============
+c jw = integer work array of length 2*n.
+c w = real work array of length n+1.
+c
+c----------------------------------------------------------------------
+c w, ju (1:n) store the working array [1:ii-1 = L-part, ii:n = u]
+c jw(n+1:2n) stores nonzero indicators
+c
+c Notes:
+c ------
+c The diagonal elements of the input matrix must be nonzero (at least
+c 'structurally').
+c
+c----------------------------------------------------------------------*
+c---- Dual drop strategy works as follows. *
+c *
+c 1) Theresholding in L and U as set by droptol. Any element whose *
+c magnitude is less than some tolerance (relative to the abs *
+c value of diagonal element in u) is dropped. *
+c *
+c 2) Keeping only the largest lfil elements in the i-th row of L *
+c and the largest lfil elements in the i-th row of U (excluding *
+c diagonal elements). *
+c *
+c Flexibility: one can use droptol=0 to get a strategy based on *
+c keeping the largest elements in each row of L and U. Taking *
+c droptol .ne. 0 but lfil=n will give the usual threshold strategy *
+c (however, fill-in is then mpredictible). *
+c----------------------------------------------------------------------*
+c locals
+ integer ju0,k,j1,j2,j,ii,i,lenl,lenu,jj,jrow,jpos,len
+ real*8 tnorm, t, abs, s, fact
+ if (lfil .lt. 0) goto 998
+c-----------------------------------------------------------------------
+c initialize ju0 (points to next element to be added to alu,jlu)
+c and pointer array.
+c-----------------------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c initialize nonzero indicator array.
+c
+ do 1 j=1,n
+ jw(n+j) = 0
+ 1 continue
+c-----------------------------------------------------------------------
+c beginning of main loop.
+c-----------------------------------------------------------------------
+ do 500 ii = 1, n
+ j1 = ia(ii)
+ j2 = ia(ii+1) - 1
+ tnorm = 0.0d0
+ do 501 k=j1,j2
+ tnorm = tnorm+abs(a(k))
+ 501 continue
+ if (tnorm .eq. 0.0) goto 999
+ tnorm = tnorm/real(j2-j1+1)
+c
+c unpack L-part and U-part of row of A in arrays w
+c
+ lenu = 1
+ lenl = 0
+ jw(ii) = ii
+ w(ii) = 0.0
+ jw(n+ii) = ii
+c
+ do 170 j = j1, j2
+ k = ja(j)
+ t = a(j)
+ if (k .lt. ii) then
+ lenl = lenl+1
+ jw(lenl) = k
+ w(lenl) = t
+ jw(n+k) = lenl
+ else if (k .eq. ii) then
+ w(ii) = t
+ else
+ lenu = lenu+1
+ jpos = ii+lenu-1
+ jw(jpos) = k
+ w(jpos) = t
+ jw(n+k) = jpos
+ endif
+ 170 continue
+ jj = 0
+ len = 0
+c
+c eliminate previous rows
+c
+ 150 jj = jj+1
+ if (jj .gt. lenl) goto 160
+c-----------------------------------------------------------------------
+c in order to do the elimination in the correct order we must select
+c the smallest column index among jw(k), k=jj+1, ..., lenl.
+c-----------------------------------------------------------------------
+ jrow = jw(jj)
+ k = jj
+c
+c determine smallest column index
+c
+ do 151 j=jj+1,lenl
+ if (jw(j) .lt. jrow) then
+ jrow = jw(j)
+ k = j
+ endif
+ 151 continue
+c
+ if (k .ne. jj) then
+c exchange in jw
+ j = jw(jj)
+ jw(jj) = jw(k)
+ jw(k) = j
+c exchange in jr
+ jw(n+jrow) = jj
+ jw(n+j) = k
+c exchange in w
+ s = w(jj)
+ w(jj) = w(k)
+ w(k) = s
+ endif
+c
+c zero out element in row by setting jw(n+jrow) to zero.
+c
+ jw(n+jrow) = 0
+c
+c get the multiplier for row to be eliminated (jrow).
+c
+ fact = w(jj)*alu(jrow)
+ if (abs(fact) .le. droptol) goto 150
+c
+c combine current row and row jrow
+c
+ do 203 k = ju(jrow), jlu(jrow+1)-1
+ s = fact*alu(k)
+ j = jlu(k)
+ jpos = jw(n+j)
+ if (j .ge. ii) then
+c
+c dealing with upper part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenu = lenu+1
+ if (lenu .gt. n) goto 995
+ i = ii+lenu-1
+ jw(i) = j
+ jw(n+j) = i
+ w(i) = - s
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+
+ endif
+ else
+c
+c dealing with lower part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenl = lenl+1
+ if (lenl .gt. n) goto 995
+ jw(lenl) = j
+ jw(n+j) = lenl
+ w(lenl) = - s
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ endif
+ endif
+ 203 continue
+c
+c store this pivot element -- (from left to right -- no danger of
+c overlap with the working elements in L (pivots).
+c
+ len = len+1
+ w(len) = fact
+ jw(len) = jrow
+ goto 150
+ 160 continue
+c
+c reset double-pointer to zero (U-part)
+c
+ do 308 k=1, lenu
+ jw(n+jw(ii+k-1)) = 0
+ 308 continue
+c
+c update L-matrix
+c
+ lenl = len
+ len = min0(lenl,lfil)
+c
+c sort by quick-split
+c
+ call qsplit (w,jw,lenl,len)
+c
+c store L-part
+c
+ do 204 k=1, len
+ if (ju0 .gt. iwk) goto 996
+ alu(ju0) = w(k)
+ jlu(ju0) = jw(k)
+ ju0 = ju0+1
+ 204 continue
+c
+c save pointer to beginning of row ii of U
+c
+ ju(ii) = ju0
+c
+c update U-matrix -- first apply dropping strategy
+c
+ len = 0
+ do k=1, lenu-1
+ if (abs(w(ii+k)) .gt. droptol*tnorm) then
+ len = len+1
+ w(ii+len) = w(ii+k)
+ jw(ii+len) = jw(ii+k)
+ endif
+ enddo
+ lenu = len+1
+ len = min0(lenu,lfil)
+c
+ call qsplit (w(ii+1), jw(ii+1), lenu-1,len)
+c
+c copy
+c
+ t = abs(w(ii))
+ if (len + ju0 .gt. iwk) goto 997
+ do 302 k=ii+1,ii+len-1
+ jlu(ju0) = jw(k)
+ alu(ju0) = w(k)
+ t = t + abs(w(k) )
+ ju0 = ju0+1
+ 302 continue
+c
+c store inverse of diagonal element of u
+c
+ if (w(ii) .eq. 0.0) w(ii) = (0.0001 + droptol)*tnorm
+c
+ alu(ii) = 1.0d0/ w(ii)
+c
+c update pointer to beginning of next row of U.
+c
+ jlu(ii+1) = ju0
+c-----------------------------------------------------------------------
+c end main loop
+c-----------------------------------------------------------------------
+ 500 continue
+ ierr = 0
+ return
+c
+c incomprehensible error. Matrix must be wrong.
+c
+ 995 ierr = -1
+ return
+c
+c insufficient storage in L.
+c
+ 996 ierr = -2
+ return
+c
+c insufficient storage in U.
+c
+ 997 ierr = -3
+ return
+c
+c illegal lfil entered.
+c
+ 998 ierr = -4
+ return
+c
+c zero row encountered
+c
+ 999 ierr = -5
+ return
+c----------------end-of-ilut--------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine ilutp(n,a,ja,ia,lfil,droptol,permtol,mbloc,alu,
+ * jlu,ju,iwk,w,jw,iperm,ierr)
+c-----------------------------------------------------------------------
+c implicit none
+ integer n,ja(*),ia(n+1),lfil,jlu(*),ju(n),jw(2*n),iwk,
+ * iperm(2*n),ierr
+ real*8 a(*), alu(*), w(n+1), droptol
+c----------------------------------------------------------------------*
+c *** ILUTP preconditioner -- ILUT with pivoting *** *
+c incomplete LU factorization with dual truncation mechanism *
+c----------------------------------------------------------------------*
+c author Yousef Saad *Sep 8, 1993 -- Latest revision, August 1996. *
+c----------------------------------------------------------------------*
+c on entry:
+c==========
+c n = integer. The dimension of the matrix A.
+c
+c a,ja,ia = matrix stored in Compressed Sparse Row format.
+c ON RETURN THE COLUMNS OF A ARE PERMUTED. SEE BELOW FOR
+c DETAILS.
+c
+c lfil = integer. The fill-in parameter. Each row of L and each row
+c of U will have a maximum of lfil elements (excluding the
+c diagonal element). lfil must be .ge. 0.
+c ** WARNING: THE MEANING OF LFIL HAS CHANGED WITH RESPECT TO
+c EARLIER VERSIONS.
+c
+c droptol = real*8. Sets the threshold for dropping small terms in the
+c factorization. See below for details on dropping strategy.
+c
+c lfil = integer. The fill-in parameter. Each row of L and
+c each row of U will have a maximum of lfil elements.
+c WARNING: THE MEANING OF LFIL HAS CHANGED WITH RESPECT TO
+c EARLIER VERSIONS.
+c lfil must be .ge. 0.
+c
+c permtol = tolerance ratio used to determne whether or not to permute
+c two columns. At step i columns i and j are permuted when
+c
+c abs(a(i,j))*permtol .gt. abs(a(i,i))
+c
+c [0 --> never permute; good values 0.1 to 0.01]
+c
+c mbloc = if desired, permuting can be done only within the diagonal
+c blocks of size mbloc. Useful for PDE problems with several
+c degrees of freedom.. If feature not wanted take mbloc=n.
+c
+c
+c iwk = integer. The lengths of arrays alu and jlu. If the arrays
+c are not big enough to store the ILU factorizations, ilut
+c will stop with an error message.
+c
+c On return:
+c===========
+c
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = integer array of length n containing the pointers to
+c the beginning of each row of U in the matrix alu,jlu.
+c
+c iperm = contains the permutation arrays.
+c iperm(1:n) = old numbers of unknowns
+c iperm(n+1:2*n) = reverse permutation = new unknowns.
+c
+c ierr = integer. Error message with the following meaning.
+c ierr = 0 --> successful return.
+c ierr .gt. 0 --> zero pivot encountered at step number ierr.
+c ierr = -1 --> Error. input matrix may be wrong.
+c (The elimination process has generated a
+c row in L or U whose length is .gt. n.)
+c ierr = -2 --> The matrix L overflows the array al.
+c ierr = -3 --> The matrix U overflows the array alu.
+c ierr = -4 --> Illegal value for lfil.
+c ierr = -5 --> zero row encountered.
+c
+c work arrays:
+c=============
+c jw = integer work array of length 2*n.
+c w = real work array of length n
+c
+c IMPORTANR NOTE:
+c --------------
+c TO AVOID PERMUTING THE SOLUTION VECTORS ARRAYS FOR EACH LU-SOLVE,
+C THE MATRIX A IS PERMUTED ON RETURN. [all column indices are
+c changed]. SIMILARLY FOR THE U MATRIX.
+c To permute the matrix back to its original state use the loop:
+c
+c do k=ia(1), ia(n+1)-1
+c ja(k) = iperm(ja(k))
+c enddo
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer k,i,j,jrow,ju0,ii,j1,j2,jpos,len,imax,lenu,lenl,jj,mbloc,
+ * icut
+ real*8 s, tmp, tnorm,xmax,xmax0, fact, abs, t, permtol
+c
+ if (lfil .lt. 0) goto 998
+c-----------------------------------------------------------------------
+c initialize ju0 (points to next element to be added to alu,jlu)
+c and pointer array.
+c-----------------------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c integer double pointer array.
+c
+ do 1 j=1, n
+ jw(n+j) = 0
+ iperm(j) = j
+ iperm(n+j) = j
+ 1 continue
+c-----------------------------------------------------------------------
+c beginning of main loop.
+c-----------------------------------------------------------------------
+ do 500 ii = 1, n
+ j1 = ia(ii)
+ j2 = ia(ii+1) - 1
+ tnorm = 0.0d0
+ do 501 k=j1,j2
+ tnorm = tnorm+abs(a(k))
+ 501 continue
+ if (tnorm .eq. 0.0) goto 999
+ tnorm = tnorm/(j2-j1+1)
+c
+c unpack L-part and U-part of row of A in arrays w --
+c
+ lenu = 1
+ lenl = 0
+ jw(ii) = ii
+ w(ii) = 0.0
+ jw(n+ii) = ii
+c
+ do 170 j = j1, j2
+ k = iperm(n+ja(j))
+ t = a(j)
+ if (k .lt. ii) then
+ lenl = lenl+1
+ jw(lenl) = k
+ w(lenl) = t
+ jw(n+k) = lenl
+ else if (k .eq. ii) then
+ w(ii) = t
+ else
+ lenu = lenu+1
+ jpos = ii+lenu-1
+ jw(jpos) = k
+ w(jpos) = t
+ jw(n+k) = jpos
+ endif
+ 170 continue
+ jj = 0
+ len = 0
+c
+c eliminate previous rows
+c
+ 150 jj = jj+1
+ if (jj .gt. lenl) goto 160
+c-----------------------------------------------------------------------
+c in order to do the elimination in the correct order we must select
+c the smallest column index among jw(k), k=jj+1, ..., lenl.
+c-----------------------------------------------------------------------
+ jrow = jw(jj)
+ k = jj
+c
+c determine smallest column index
+c
+ do 151 j=jj+1,lenl
+ if (jw(j) .lt. jrow) then
+ jrow = jw(j)
+ k = j
+ endif
+ 151 continue
+c
+ if (k .ne. jj) then
+c exchange in jw
+ j = jw(jj)
+ jw(jj) = jw(k)
+ jw(k) = j
+c exchange in jr
+ jw(n+jrow) = jj
+ jw(n+j) = k
+c exchange in w
+ s = w(jj)
+ w(jj) = w(k)
+ w(k) = s
+ endif
+c
+c zero out element in row by resetting jw(n+jrow) to zero.
+c
+ jw(n+jrow) = 0
+c
+c get the multiplier for row to be eliminated: jrow
+c
+ fact = w(jj)*alu(jrow)
+c
+c drop term if small
+c
+ if (abs(fact) .le. droptol) goto 150
+c
+c combine current row and row jrow
+c
+ do 203 k = ju(jrow), jlu(jrow+1)-1
+ s = fact*alu(k)
+c new column number
+ j = iperm(n+jlu(k))
+ jpos = jw(n+j)
+ if (j .ge. ii) then
+c
+c dealing with upper part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenu = lenu+1
+ i = ii+lenu-1
+ if (lenu .gt. n) goto 995
+ jw(i) = j
+ jw(n+j) = i
+ w(i) = - s
+ else
+c no fill-in element --
+ w(jpos) = w(jpos) - s
+ endif
+ else
+c
+c dealing with lower part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenl = lenl+1
+ if (lenl .gt. n) goto 995
+ jw(lenl) = j
+ jw(n+j) = lenl
+ w(lenl) = - s
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ endif
+ endif
+ 203 continue
+c
+c store this pivot element -- (from left to right -- no danger of
+c overlap with the working elements in L (pivots).
+c
+ len = len+1
+ w(len) = fact
+ jw(len) = jrow
+ goto 150
+ 160 continue
+c
+c reset double-pointer to zero (U-part)
+c
+ do 308 k=1, lenu
+ jw(n+jw(ii+k-1)) = 0
+ 308 continue
+c
+c update L-matrix
+c
+ lenl = len
+ len = min0(lenl,lfil)
+c
+c sort by quick-split
+c
+ call qsplit (w,jw,lenl,len)
+c
+c store L-part -- in original coordinates ..
+c
+ do 204 k=1, len
+ if (ju0 .gt. iwk) goto 996
+ alu(ju0) = w(k)
+ jlu(ju0) = iperm(jw(k))
+ ju0 = ju0+1
+ 204 continue
+c
+c save pointer to beginning of row ii of U
+c
+ ju(ii) = ju0
+c
+c update U-matrix -- first apply dropping strategy
+c
+ len = 0
+ do k=1, lenu-1
+ if (abs(w(ii+k)) .gt. droptol*tnorm) then
+ len = len+1
+ w(ii+len) = w(ii+k)
+ jw(ii+len) = jw(ii+k)
+ endif
+ enddo
+ lenu = len+1
+ len = min0(lenu,lfil)
+ call qsplit (w(ii+1), jw(ii+1), lenu-1,len)
+c
+c determine next pivot --
+c
+ imax = ii
+ xmax = abs(w(imax))
+ xmax0 = xmax
+ icut = ii - 1 + mbloc - mod(ii-1,mbloc)
+ do k=ii+1,ii+len-1
+ t = abs(w(k))
+ if (t .gt. xmax .and. t*permtol .gt. xmax0 .and.
+ * jw(k) .le. icut) then
+ imax = k
+ xmax = t
+ endif
+ enddo
+c
+c exchange w's
+c
+ tmp = w(ii)
+ w(ii) = w(imax)
+ w(imax) = tmp
+c
+c update iperm and reverse iperm
+c
+ j = jw(imax)
+ i = iperm(ii)
+ iperm(ii) = iperm(j)
+ iperm(j) = i
+c
+c reverse iperm
+c
+ iperm(n+iperm(ii)) = ii
+ iperm(n+iperm(j)) = j
+c-----------------------------------------------------------------------
+c
+ if (len + ju0 .gt. iwk) goto 997
+c
+c copy U-part in original coordinates
+c
+ do 302 k=ii+1,ii+len-1
+ jlu(ju0) = iperm(jw(k))
+ alu(ju0) = w(k)
+ ju0 = ju0+1
+ 302 continue
+c
+c store inverse of diagonal element of u
+c
+ if (w(ii) .eq. 0.0) w(ii) = (1.0D-4 + droptol)*tnorm
+ alu(ii) = 1.0d0/ w(ii)
+c
+c update pointer to beginning of next row of U.
+c
+ jlu(ii+1) = ju0
+c-----------------------------------------------------------------------
+c end main loop
+c-----------------------------------------------------------------------
+ 500 continue
+c
+c permute all column indices of LU ...
+c
+ do k = jlu(1),jlu(n+1)-1
+ jlu(k) = iperm(n+jlu(k))
+ enddo
+c
+c ...and of A
+c
+ do k=ia(1), ia(n+1)-1
+ ja(k) = iperm(n+ja(k))
+ enddo
+c
+ ierr = 0
+ return
+c
+c incomprehensible error. Matrix must be wrong.
+c
+ 995 ierr = -1
+ return
+c
+c insufficient storage in L.
+c
+ 996 ierr = -2
+ return
+c
+c insufficient storage in U.
+c
+ 997 ierr = -3
+ return
+c
+c illegal lfil entered.
+c
+ 998 ierr = -4
+ return
+c
+c zero row encountered
+c
+ 999 ierr = -5
+ return
+c----------------end-of-ilutp-------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine ilud(n,a,ja,ia,alph,tol,alu,jlu,ju,iwk,w,jw,ierr)
+c-----------------------------------------------------------------------
+ implicit none
+ integer n
+ real*8 a(*),alu(*),w(2*n),tol, alph
+ integer ja(*),ia(n+1),jlu(*),ju(n),jw(2*n),iwk,ierr
+c----------------------------------------------------------------------*
+c *** ILUD preconditioner *** *
+c incomplete LU factorization with standard droppoing strategy *
+c----------------------------------------------------------------------*
+c Author: Yousef Saad * Aug. 1995 -- *
+c----------------------------------------------------------------------*
+c This routine computes the ILU factorization with standard threshold *
+c dropping: at i-th step of elimination, an element a(i,j) in row i is *
+c dropped if it satisfies the criterion: *
+c *
+c abs(a(i,j)) < tol * [average magnitude of elements in row i of A] *
+c *
+c There is no control on memory size required for the factors as is *
+c done in ILUT. This routines computes also various diagonal compensa- *
+c tion ILU's such MILU. These are defined through the parameter alph *
+c----------------------------------------------------------------------*
+c on entry:
+c==========
+c n = integer. The row dimension of the matrix A. The matrix
+c
+c a,ja,ia = matrix stored in Compressed Sparse Row format
+c
+c alph = diagonal compensation parameter -- the term:
+c
+c alph*(sum of all dropped out elements in a given row)
+c
+c is added to the diagonal element of U of the factorization
+c Thus: alph = 0 ---> ~ ILU with threshold,
+c alph = 1 ---> ~ MILU with threshold.
+c
+c tol = Threshold parameter for dropping small terms in the
+c factorization. During the elimination, a term a(i,j) is
+c dropped whenever abs(a(i,j)) .lt. tol * [weighted norm of
+c row i]. Here weighted norm = 1-norm / number of nnz
+c elements in the row.
+c
+c iwk = The length of arrays alu and jlu -- this routine will stop
+c if storage for the factors L and U is not sufficient
+c
+c On return:
+c===========
+c
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = integer array of length n containing the pointers to
+c the beginning of each row of U in the matrix alu,jlu.
+c
+c ierr = integer. Error message with the following meaning.
+c ierr = 0 --> successful return.
+c ierr .gt. 0 --> zero pivot encountered at step number ierr.
+c ierr = -1 --> Error. input matrix may be wrong.
+c (The elimination process has generated a
+c row in L or U whose length is .gt. n.)
+c ierr = -2 --> Insufficient storage for the LU factors --
+c arrays alu/ jalu are overflowed.
+c ierr = -3 --> Zero row encountered.
+c
+c Work Arrays:
+c=============
+c jw = integer work array of length 2*n.
+c w = real work array of length n
+c
+c----------------------------------------------------------------------
+c
+c w, ju (1:n) store the working array [1:ii-1 = L-part, ii:n = u]
+c jw(n+1:2n) stores the nonzero indicator.
+c
+c Notes:
+c ------
+c All diagonal elements of the input matrix must be nonzero.
+c
+c-----------------------------------------------------------------------
+c locals
+ integer ju0,k,j1,j2,j,ii,i,lenl,lenu,jj,jrow,jpos,len
+ real*8 tnorm, t, abs, s, fact, dropsum
+c-----------------------------------------------------------------------
+c initialize ju0 (points to next element to be added to alu,jlu)
+c and pointer array.
+c-----------------------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c initialize nonzero indicator array.
+c
+ do 1 j=1,n
+ jw(n+j) = 0
+ 1 continue
+c-----------------------------------------------------------------------
+c beginning of main loop.
+c-----------------------------------------------------------------------
+ do 500 ii = 1, n
+ j1 = ia(ii)
+ j2 = ia(ii+1) - 1
+ dropsum = 0.0d0
+ tnorm = 0.0d0
+ do 501 k=j1,j2
+ tnorm = tnorm + abs(a(k))
+ 501 continue
+ if (tnorm .eq. 0.0) goto 997
+ tnorm = tnorm / real(j2-j1+1)
+c
+c unpack L-part and U-part of row of A in arrays w
+c
+ lenu = 1
+ lenl = 0
+ jw(ii) = ii
+ w(ii) = 0.0
+ jw(n+ii) = ii
+c
+ do 170 j = j1, j2
+ k = ja(j)
+ t = a(j)
+ if (k .lt. ii) then
+ lenl = lenl+1
+ jw(lenl) = k
+ w(lenl) = t
+ jw(n+k) = lenl
+ else if (k .eq. ii) then
+ w(ii) = t
+ else
+ lenu = lenu+1
+ jpos = ii+lenu-1
+ jw(jpos) = k
+ w(jpos) = t
+ jw(n+k) = jpos
+ endif
+ 170 continue
+ jj = 0
+ len = 0
+c
+c eliminate previous rows
+c
+ 150 jj = jj+1
+ if (jj .gt. lenl) goto 160
+c-----------------------------------------------------------------------
+c in order to do the elimination in the correct order we must select
+c the smallest column index among jw(k), k=jj+1, ..., lenl.
+c-----------------------------------------------------------------------
+ jrow = jw(jj)
+ k = jj
+c
+c determine smallest column index
+c
+ do 151 j=jj+1,lenl
+ if (jw(j) .lt. jrow) then
+ jrow = jw(j)
+ k = j
+ endif
+ 151 continue
+c
+ if (k .ne. jj) then
+c exchange in jw
+ j = jw(jj)
+ jw(jj) = jw(k)
+ jw(k) = j
+c exchange in jr
+ jw(n+jrow) = jj
+ jw(n+j) = k
+c exchange in w
+ s = w(jj)
+ w(jj) = w(k)
+ w(k) = s
+ endif
+c
+c zero out element in row by setting resetting jw(n+jrow) to zero.
+c
+ jw(n+jrow) = 0
+c
+c drop term if small
+c
+c if (abs(w(jj)) .le. tol*tnorm) then
+c dropsum = dropsum + w(jj)
+c goto 150
+c endif
+c
+c get the multiplier for row to be eliminated (jrow).
+c
+ fact = w(jj)*alu(jrow)
+c
+c drop term if small
+c
+ if (abs(fact) .le. tol) then
+ dropsum = dropsum + w(jj)
+ goto 150
+ endif
+c
+c combine current row and row jrow
+c
+ do 203 k = ju(jrow), jlu(jrow+1)-1
+ s = fact*alu(k)
+ j = jlu(k)
+ jpos = jw(n+j)
+ if (j .ge. ii) then
+c
+c dealing with upper part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenu = lenu+1
+ if (lenu .gt. n) goto 995
+ i = ii+lenu-1
+ jw(i) = j
+ jw(n+j) = i
+ w(i) = - s
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ endif
+ else
+c
+c dealing with lower part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenl = lenl+1
+ if (lenl .gt. n) goto 995
+ jw(lenl) = j
+ jw(n+j) = lenl
+ w(lenl) = - s
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ endif
+ endif
+ 203 continue
+ len = len+1
+ w(len) = fact
+ jw(len) = jrow
+ goto 150
+ 160 continue
+c
+c reset double-pointer to zero (For U-part only)
+c
+ do 308 k=1, lenu
+ jw(n+jw(ii+k-1)) = 0
+ 308 continue
+c
+c update l-matrix
+c
+ do 204 k=1, len
+ if (ju0 .gt. iwk) goto 996
+ alu(ju0) = w(k)
+ jlu(ju0) = jw(k)
+ ju0 = ju0+1
+ 204 continue
+c
+c save pointer to beginning of row ii of U
+c
+ ju(ii) = ju0
+c
+c go through elements in U-part of w to determine elements to keep
+c
+ len = 0
+ do k=1, lenu-1
+c if (abs(w(ii+k)) .gt. tnorm*tol) then
+ if (abs(w(ii+k)) .gt. abs(w(ii))*tol) then
+ len = len+1
+ w(ii+len) = w(ii+k)
+ jw(ii+len) = jw(ii+k)
+ else
+ dropsum = dropsum + w(ii+k)
+ endif
+ enddo
+c
+c now update u-matrix
+c
+ if (ju0 + len-1 .gt. iwk) goto 996
+ do 302 k=ii+1,ii+len
+ jlu(ju0) = jw(k)
+ alu(ju0) = w(k)
+ ju0 = ju0+1
+ 302 continue
+c
+c define diagonal element
+c
+ w(ii) = w(ii) + alph*dropsum
+c
+c store inverse of diagonal element of u
+c
+ if (w(ii) .eq. 0.0) w(ii) = (0.0001 + tol)*tnorm
+c
+ alu(ii) = 1.0d0/ w(ii)
+c
+c update pointer to beginning of next row of U.
+c
+ jlu(ii+1) = ju0
+c-----------------------------------------------------------------------
+c end main loop
+c-----------------------------------------------------------------------
+ 500 continue
+ ierr = 0
+ return
+c
+c incomprehensible error. Matrix must be wrong.
+c
+ 995 ierr = -1
+ return
+c
+c insufficient storage in alu/ jlu arrays for L / U factors
+c
+ 996 ierr = -2
+ return
+c
+c zero row encountered
+c
+ 997 ierr = -3
+ return
+c----------------end-of-ilud ------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine iludp(n,a,ja,ia,alph,droptol,permtol,mbloc,alu,
+ * jlu,ju,iwk,w,jw,iperm,ierr)
+c-----------------------------------------------------------------------
+ implicit none
+ integer n,ja(*),ia(n+1),mbloc,jlu(*),ju(n),jw(2*n),iwk,
+ * iperm(2*n),ierr
+ real*8 a(*), alu(*), w(2*n), alph, droptol, permtol
+c----------------------------------------------------------------------*
+c *** ILUDP preconditioner *** *
+c incomplete LU factorization with standard droppoing strategy *
+c and column pivoting *
+c----------------------------------------------------------------------*
+c author Yousef Saad -- Aug 1995. *
+c----------------------------------------------------------------------*
+c on entry:
+c==========
+c n = integer. The dimension of the matrix A.
+c
+c a,ja,ia = matrix stored in Compressed Sparse Row format.
+c ON RETURN THE COLUMNS OF A ARE PERMUTED.
+c
+c alph = diagonal compensation parameter -- the term:
+c
+c alph*(sum of all dropped out elements in a given row)
+c
+c is added to the diagonal element of U of the factorization
+c Thus: alph = 0 ---> ~ ILU with threshold,
+c alph = 1 ---> ~ MILU with threshold.
+c
+c droptol = tolerance used for dropping elements in L and U.
+c elements are dropped if they are .lt. norm(row) x droptol
+c row = row being eliminated
+c
+c permtol = tolerance ratio used for determning whether to permute
+c two columns. Two columns are permuted only when
+c abs(a(i,j))*permtol .gt. abs(a(i,i))
+c [0 --> never permute; good values 0.1 to 0.01]
+c
+c mbloc = if desired, permuting can be done only within the diagonal
+c blocks of size mbloc. Useful for PDE problems with several
+c degrees of freedom.. If feature not wanted take mbloc=n.
+c
+c iwk = integer. The declared lengths of arrays alu and jlu
+c if iwk is not large enough the code will stop prematurely
+c with ierr = -2 or ierr = -3 (see below).
+c
+c On return:
+c===========
+c
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = integer array of length n containing the pointers to
+c the beginning of each row of U in the matrix alu,jlu.
+c iperm = contains the permutation arrays ..
+c iperm(1:n) = old numbers of unknowns
+c iperm(n+1:2*n) = reverse permutation = new unknowns.
+c
+c ierr = integer. Error message with the following meaning.
+c ierr = 0 --> successful return.
+c ierr .gt. 0 --> zero pivot encountered at step number ierr.
+c ierr = -1 --> Error. input matrix may be wrong.
+c (The elimination process has generated a
+c row in L or U whose length is .gt. n.)
+c ierr = -2 --> The L/U matrix overflows the arrays alu,jlu
+c ierr = -3 --> zero row encountered.
+c
+c work arrays:
+c=============
+c jw = integer work array of length 2*n.
+c w = real work array of length 2*n
+c
+c Notes:
+c ------
+c IMPORTANT: TO AVOID PERMUTING THE SOLUTION VECTORS ARRAYS FOR EACH
+c LU-SOLVE, THE MATRIX A IS PERMUTED ON RETURN. [all column indices are
+c changed]. SIMILARLY FOR THE U MATRIX.
+c To permute the matrix back to its original state use the loop:
+c
+c do k=ia(1), ia(n+1)-1
+c ja(k) = perm(ja(k))
+c enddo
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer k,i,j,jrow,ju0,ii,j1,j2,jpos,len,imax,lenu,lenl,jj,icut
+ real*8 s,tmp,tnorm,xmax,xmax0,fact,abs,t,dropsum
+c-----------------------------------------------------------------------
+c initialize ju0 (points to next element to be added to alu,jlu)
+c and pointer array.
+c-----------------------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c integer double pointer array.
+c
+ do 1 j=1,n
+ jw(n+j) = 0
+ iperm(j) = j
+ iperm(n+j) = j
+ 1 continue
+c-----------------------------------------------------------------------
+c beginning of main loop.
+c-----------------------------------------------------------------------
+ do 500 ii = 1, n
+ j1 = ia(ii)
+ j2 = ia(ii+1) - 1
+ dropsum = 0.0d0
+ tnorm = 0.0d0
+ do 501 k=j1,j2
+ tnorm = tnorm+abs(a(k))
+ 501 continue
+ if (tnorm .eq. 0.0) goto 997
+ tnorm = tnorm/(j2-j1+1)
+c
+c unpack L-part and U-part of row of A in arrays w --
+c
+ lenu = 1
+ lenl = 0
+ jw(ii) = ii
+ w(ii) = 0.0
+ jw(n+ii) = ii
+c
+ do 170 j = j1, j2
+ k = iperm(n+ja(j))
+ t = a(j)
+ if (k .lt. ii) then
+ lenl = lenl+1
+ jw(lenl) = k
+ w(lenl) = t
+ jw(n+k) = lenl
+ else if (k .eq. ii) then
+ w(ii) = t
+ else
+ lenu = lenu+1
+ jpos = ii+lenu-1
+ jw(jpos) = k
+ w(jpos) = t
+ jw(n+k) = jpos
+ endif
+ 170 continue
+ jj = 0
+ len = 0
+c
+c eliminate previous rows
+c
+ 150 jj = jj+1
+ if (jj .gt. lenl) goto 160
+c-----------------------------------------------------------------------
+c in order to do the elimination in the correct order we must select
+c the smallest column index among jw(k), k=jj+1, ..., lenl.
+c-----------------------------------------------------------------------
+ jrow = jw(jj)
+ k = jj
+c
+c determine smallest column index
+c
+ do 151 j=jj+1,lenl
+ if (jw(j) .lt. jrow) then
+ jrow = jw(j)
+ k = j
+ endif
+ 151 continue
+c
+ if (k .ne. jj) then
+c exchange in jw
+ j = jw(jj)
+ jw(jj) = jw(k)
+ jw(k) = j
+c exchange in jr
+ jw(n+jrow) = jj
+ jw(n+j) = k
+c exchange in w
+ s = w(jj)
+ w(jj) = w(k)
+ w(k) = s
+ endif
+c
+c zero out element in row by resetting jw(n+jrow) to zero.
+c
+ jw(n+jrow) = 0
+c
+c drop term if small
+c
+ if (abs(w(jj)) .le. droptol*tnorm) then
+ dropsum = dropsum + w(jj)
+ goto 150
+ endif
+c
+c get the multiplier for row to be eliminated: jrow
+c
+ fact = w(jj)*alu(jrow)
+c
+c combine current row and row jrow
+c
+ do 203 k = ju(jrow), jlu(jrow+1)-1
+ s = fact*alu(k)
+c new column number
+ j = iperm(n+jlu(k))
+ jpos = jw(n+j)
+c
+c if fill-in element is small then disregard:
+c
+ if (j .ge. ii) then
+c
+c dealing with upper part.
+c
+ if (jpos .eq. 0) then
+c this is a fill-in element
+ lenu = lenu+1
+ i = ii+lenu-1
+ if (lenu .gt. n) goto 995
+ jw(i) = j
+ jw(n+j) = i
+ w(i) = - s
+ else
+c no fill-in element --
+ w(jpos) = w(jpos) - s
+ endif
+ else
+c
+c dealing with lower part.
+c
+ if (jpos .eq. 0) then
+c this is a fill-in element
+ lenl = lenl+1
+ if (lenl .gt. n) goto 995
+ jw(lenl) = j
+ jw(n+j) = lenl
+ w(lenl) = - s
+ else
+c no fill-in element --
+ w(jpos) = w(jpos) - s
+ endif
+ endif
+ 203 continue
+ len = len+1
+ w(len) = fact
+ jw(len) = jrow
+ goto 150
+ 160 continue
+c
+c reset double-pointer to zero (U-part)
+c
+ do 308 k=1, lenu
+ jw(n+jw(ii+k-1)) = 0
+ 308 continue
+c
+c update L-matrix
+c
+ do 204 k=1, len
+ if (ju0 .gt. iwk) goto 996
+ alu(ju0) = w(k)
+ jlu(ju0) = iperm(jw(k))
+ ju0 = ju0+1
+ 204 continue
+c
+c save pointer to beginning of row ii of U
+c
+ ju(ii) = ju0
+c
+c update u-matrix -- first apply dropping strategy
+c
+ len = 0
+ do k=1, lenu-1
+ if (abs(w(ii+k)) .gt. tnorm*droptol) then
+ len = len+1
+ w(ii+len) = w(ii+k)
+ jw(ii+len) = jw(ii+k)
+ else
+ dropsum = dropsum + w(ii+k)
+ endif
+ enddo
+c
+ imax = ii
+ xmax = abs(w(imax))
+ xmax0 = xmax
+ icut = ii - 1 + mbloc - mod(ii-1,mbloc)
+c
+c determine next pivot --
+c
+ do k=ii+1,ii+len
+ t = abs(w(k))
+ if (t .gt. xmax .and. t*permtol .gt. xmax0 .and.
+ * jw(k) .le. icut) then
+ imax = k
+ xmax = t
+ endif
+ enddo
+c
+c exchange w's
+c
+ tmp = w(ii)
+ w(ii) = w(imax)
+ w(imax) = tmp
+c
+c update iperm and reverse iperm
+c
+ j = jw(imax)
+ i = iperm(ii)
+ iperm(ii) = iperm(j)
+ iperm(j) = i
+c reverse iperm
+ iperm(n+iperm(ii)) = ii
+ iperm(n+iperm(j)) = j
+c-----------------------------------------------------------------------
+ if (len + ju0-1 .gt. iwk) goto 996
+c
+c copy U-part in original coordinates
+c
+ do 302 k=ii+1,ii+len
+ jlu(ju0) = iperm(jw(k))
+ alu(ju0) = w(k)
+ ju0 = ju0+1
+ 302 continue
+c
+c define diagonal element
+c
+ w(ii) = w(ii) + alph*dropsum
+c
+c store inverse of diagonal element of u
+c
+ if (w(ii) .eq. 0.0) w(ii) = (1.0D-4 + droptol)*tnorm
+c
+ alu(ii) = 1.0d0/ w(ii)
+c
+c update pointer to beginning of next row of U.
+c
+ jlu(ii+1) = ju0
+c-----------------------------------------------------------------------
+c end main loop
+c-----------------------------------------------------------------------
+ 500 continue
+c
+c permute all column indices of LU ...
+c
+ do k = jlu(1),jlu(n+1)-1
+ jlu(k) = iperm(n+jlu(k))
+ enddo
+c
+c ...and of A
+c
+ do k=ia(1), ia(n+1)-1
+ ja(k) = iperm(n+ja(k))
+ enddo
+c
+ ierr = 0
+ return
+c
+c incomprehensible error. Matrix must be wrong.
+c
+ 995 ierr = -1
+ return
+c
+c insufficient storage in arrays alu, jlu to store factors
+c
+ 996 ierr = -2
+ return
+c
+c zero row encountered
+c
+ 997 ierr = -3
+ return
+c----------------end-of-iludp---------------------------!----------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine iluk(n,a,ja,ia,lfil,alu,jlu,ju,levs,iwk,w,jw,ierr)
+ implicit none
+ integer n
+ real*8 a(*),alu(*),w(n)
+ integer ja(*),ia(n+1),jlu(*),ju(n),levs(*),jw(3*n),lfil,iwk,ierr
+c----------------------------------------------------------------------*
+c SPARSKIT ROUTINE ILUK -- ILU WITH LEVEL OF FILL-IN OF K (ILU(k)) *
+c----------------------------------------------------------------------*
+c
+c on entry:
+c==========
+c n = integer. The row dimension of the matrix A. The matrix
+c
+c a,ja,ia = matrix stored in Compressed Sparse Row format.
+c
+c lfil = integer. The fill-in parameter. Each element whose
+c leve-of-fill exceeds lfil during the ILU process is dropped.
+c lfil must be .ge. 0
+c
+c tol = real*8. Sets the threshold for dropping small terms in the
+c factorization. See below for details on dropping strategy.
+c
+c iwk = integer. The minimum length of arrays alu, jlu, and levs.
+c
+c On return:
+c===========
+c
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = integer array of length n containing the pointers to
+c the beginning of each row of U in the matrix alu,jlu.
+c
+c levs = integer (work) array of size iwk -- which contains the
+c levels of each element in alu, jlu.
+c
+c ierr = integer. Error message with the following meaning.
+c ierr = 0 --> successful return.
+c ierr .gt. 0 --> zero pivot encountered at step number ierr.
+c ierr = -1 --> Error. input matrix may be wrong.
+c (The elimination process has generated a
+c row in L or U whose length is .gt. n.)
+c ierr = -2 --> The matrix L overflows the array al.
+c ierr = -3 --> The matrix U overflows the array alu.
+c ierr = -4 --> Illegal value for lfil.
+c ierr = -5 --> zero row encountered in A or U.
+c
+c work arrays:
+c=============
+c jw = integer work array of length 3*n.
+c w = real work array of length n
+c
+c Notes/known bugs: This is not implemented efficiently storage-wise.
+c For example: Only the part of the array levs(*) associated with
+c the U-matrix is needed in the routine.. So some storage can
+c be saved if needed. The levels of fills in the LU matrix are
+c output for information only -- they are not needed by LU-solve.
+c
+c----------------------------------------------------------------------
+c w, ju (1:n) store the working array [1:ii-1 = L-part, ii:n = u]
+c jw(n+1:2n) stores the nonzero indicator.
+c
+c Notes:
+c ------
+c All the diagonal elements of the input matrix must be nonzero.
+c
+c----------------------------------------------------------------------*
+c locals
+ integer ju0,k,j1,j2,j,ii,i,lenl,lenu,jj,jrow,jpos,n2,
+ * jlev, min
+ real*8 t, s, fact
+ if (lfil .lt. 0) goto 998
+c-----------------------------------------------------------------------
+c initialize ju0 (points to next element to be added to alu,jlu)
+c and pointer array.
+c-----------------------------------------------------------------------
+ n2 = n+n
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c initialize nonzero indicator array + levs array --
+c
+ do 1 j=1,2*n
+ jw(j) = 0
+ 1 continue
+c-----------------------------------------------------------------------
+c beginning of main loop.
+c-----------------------------------------------------------------------
+ do 500 ii = 1, n
+ j1 = ia(ii)
+ j2 = ia(ii+1) - 1
+c
+c unpack L-part and U-part of row of A in arrays w
+c
+ lenu = 1
+ lenl = 0
+ jw(ii) = ii
+ w(ii) = 0.0
+ jw(n+ii) = ii
+c
+ do 170 j = j1, j2
+ k = ja(j)
+ t = a(j)
+ if (t .eq. 0.0) goto 170
+ if (k .lt. ii) then
+ lenl = lenl+1
+ jw(lenl) = k
+ w(lenl) = t
+ jw(n2+lenl) = 0
+ jw(n+k) = lenl
+ else if (k .eq. ii) then
+ w(ii) = t
+ jw(n2+ii) = 0
+ else
+ lenu = lenu+1
+ jpos = ii+lenu-1
+ jw(jpos) = k
+ w(jpos) = t
+ jw(n2+jpos) = 0
+ jw(n+k) = jpos
+ endif
+ 170 continue
+c
+ jj = 0
+c
+c eliminate previous rows
+c
+ 150 jj = jj+1
+ if (jj .gt. lenl) goto 160
+c-----------------------------------------------------------------------
+c in order to do the elimination in the correct order we must select
+c the smallest column index among jw(k), k=jj+1, ..., lenl.
+c-----------------------------------------------------------------------
+ jrow = jw(jj)
+ k = jj
+c
+c determine smallest column index
+c
+ do 151 j=jj+1,lenl
+ if (jw(j) .lt. jrow) then
+ jrow = jw(j)
+ k = j
+ endif
+ 151 continue
+c
+ if (k .ne. jj) then
+c exchange in jw
+ j = jw(jj)
+ jw(jj) = jw(k)
+ jw(k) = j
+c exchange in jw(n+ (pointers/ nonzero indicator).
+ jw(n+jrow) = jj
+ jw(n+j) = k
+c exchange in jw(n2+ (levels)
+ j = jw(n2+jj)
+ jw(n2+jj) = jw(n2+k)
+ jw(n2+k) = j
+c exchange in w
+ s = w(jj)
+ w(jj) = w(k)
+ w(k) = s
+ endif
+c
+c zero out element in row by resetting jw(n+jrow) to zero.
+c
+ jw(n+jrow) = 0
+c
+c get the multiplier for row to be eliminated (jrow) + its level
+c
+ fact = w(jj)*alu(jrow)
+ jlev = jw(n2+jj)
+ if (jlev .gt. lfil) goto 150
+c
+c combine current row and row jrow
+c
+ do 203 k = ju(jrow), jlu(jrow+1)-1
+ s = fact*alu(k)
+ j = jlu(k)
+ jpos = jw(n+j)
+ if (j .ge. ii) then
+c
+c dealing with upper part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenu = lenu+1
+ if (lenu .gt. n) goto 995
+ i = ii+lenu-1
+ jw(i) = j
+ jw(n+j) = i
+ w(i) = - s
+ jw(n2+i) = jlev+levs(k)+1
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ jw(n2+jpos) = min(jw(n2+jpos),jlev+levs(k)+1)
+ endif
+ else
+c
+c dealing with lower part.
+c
+ if (jpos .eq. 0) then
+c
+c this is a fill-in element
+c
+ lenl = lenl+1
+ if (lenl .gt. n) goto 995
+ jw(lenl) = j
+ jw(n+j) = lenl
+ w(lenl) = - s
+ jw(n2+lenl) = jlev+levs(k)+1
+ else
+c
+c this is not a fill-in element
+c
+ w(jpos) = w(jpos) - s
+ jw(n2+jpos) = min(jw(n2+jpos),jlev+levs(k)+1)
+ endif
+ endif
+ 203 continue
+ w(jj) = fact
+ jw(jj) = jrow
+ goto 150
+ 160 continue
+c
+c reset double-pointer to zero (U-part)
+c
+ do 308 k=1, lenu
+ jw(n+jw(ii+k-1)) = 0
+ 308 continue
+c
+c update l-matrix
+c
+ do 204 k=1, lenl
+ if (ju0 .gt. iwk) goto 996
+ if (jw(n2+k) .le. lfil) then
+ alu(ju0) = w(k)
+ jlu(ju0) = jw(k)
+ ju0 = ju0+1
+ endif
+ 204 continue
+c
+c save pointer to beginning of row ii of U
+c
+ ju(ii) = ju0
+c
+c update u-matrix
+c
+ do 302 k=ii+1,ii+lenu-1
+ if (jw(n2+k) .le. lfil) then
+ jlu(ju0) = jw(k)
+ alu(ju0) = w(k)
+ levs(ju0) = jw(n2+k)
+ ju0 = ju0+1
+ endif
+ 302 continue
+
+ if (w(ii) .eq. 0.0) goto 999
+c
+ alu(ii) = 1.0d0/ w(ii)
+c
+c update pointer to beginning of next row of U.
+c
+ jlu(ii+1) = ju0
+c-----------------------------------------------------------------------
+c end main loop
+c-----------------------------------------------------------------------
+ 500 continue
+ ierr = 0
+ return
+c
+c incomprehensible error. Matrix must be wrong.
+c
+ 995 ierr = -1
+ return
+c
+c insufficient storage in L.
+c
+ 996 ierr = -2
+ return
+c
+c insufficient storage in U.
+c
+ 997 ierr = -3
+ return
+c
+c illegal lfil entered.
+c
+ 998 ierr = -4
+ return
+c
+c zero row encountered in A or U.
+c
+ 999 ierr = -5
+ return
+c----------------end-of-iluk--------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine ilu0(n, a, ja, ia, alu, jlu, ju, iw, ierr)
+ implicit real*8 (a-h,o-z)
+ real*8 a(*), alu(*)
+ integer ja(*), ia(*), ju(*), jlu(*), iw(*)
+c------------------ right preconditioner ------------------------------*
+c *** ilu(0) preconditioner. *** *
+c----------------------------------------------------------------------*
+c Note that this has been coded in such a way that it can be used
+c with pgmres. Normally, since the data structure of the L+U matrix is
+c the same as that the A matrix, savings can be made. In fact with
+c some definitions (not correct for general sparse matrices) all we
+c need in addition to a, ja, ia is an additional diagonal.
+c ILU0 is not recommended for serious problems. It is only provided
+c here for comparison purposes.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c---------
+c n = dimension of matrix
+c a, ja,
+c ia = original matrix in compressed sparse row storage.
+c
+c on return:
+c-----------
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = pointer to the diagonal elements in alu, jlu.
+c
+c ierr = integer indicating error code on return
+c ierr = 0 --> normal return
+c ierr = k --> code encountered a zero pivot at step k.
+c work arrays:
+c-------------
+c iw = integer work array of length n.
+c------------
+c IMPORTANT
+c-----------
+c it is assumed that the the elements in the input matrix are stored
+c in such a way that in each row the lower part comes first and
+c then the upper part. To get the correct ILU factorization, it is
+c also necessary to have the elements of L sorted by increasing
+c column number. It may therefore be necessary to sort the
+c elements of a, ja, ia prior to calling ilu0. This can be
+c achieved by transposing the matrix twice using csrcsc.
+c
+c-----------------------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c
+c initialize work vector to zero's
+c
+ do 31 i=1, n
+ iw(i) = 0
+ 31 continue
+c
+c main loop
+c
+ do 500 ii = 1, n
+ js = ju0
+c
+c generating row number ii of L and U.
+c
+ do 100 j=ia(ii),ia(ii+1)-1
+c
+c copy row ii of a, ja, ia into row ii of alu, jlu (L/U) matrix.
+c
+ jcol = ja(j)
+ if (jcol .eq. ii) then
+ alu(ii) = a(j)
+ iw(jcol) = ii
+ ju(ii) = ju0
+ else
+ alu(ju0) = a(j)
+ jlu(ju0) = ja(j)
+ iw(jcol) = ju0
+ ju0 = ju0+1
+ endif
+ 100 continue
+ jlu(ii+1) = ju0
+ jf = ju0-1
+ jm = ju(ii)-1
+c
+c exit if diagonal element is reached.
+c
+ do 150 j=js, jm
+ jrow = jlu(j)
+ tl = alu(j)*alu(jrow)
+ alu(j) = tl
+c
+c perform linear combination
+c
+ do 140 jj = ju(jrow), jlu(jrow+1)-1
+ jw = iw(jlu(jj))
+ if (jw .ne. 0) alu(jw) = alu(jw) - tl*alu(jj)
+ 140 continue
+ 150 continue
+c
+c invert and store diagonal element.
+c
+ if (alu(ii) .eq. 0.0d0) goto 600
+ alu(ii) = 1.0d0/alu(ii)
+c
+c reset pointer iw to zero
+c
+ iw(ii) = 0
+ do 201 i = js, jf
+ 201 iw(jlu(i)) = 0
+ 500 continue
+ ierr = 0
+ return
+c
+c zero pivot :
+c
+ 600 ierr = ii
+c
+ return
+c------- end-of-ilu0 ---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine milu0(n, a, ja, ia, alu, jlu, ju, iw, ierr)
+ implicit real*8 (a-h,o-z)
+ real*8 a(*), alu(*)
+ integer ja(*), ia(*), ju(*), jlu(*), iw(*)
+c----------------------------------------------------------------------*
+c *** simple milu(0) preconditioner. *** *
+c----------------------------------------------------------------------*
+c Note that this has been coded in such a way that it can be used
+c with pgmres. Normally, since the data structure of a, ja, ia is
+c the same as that of a, ja, ia, savings can be made. In fact with
+c some definitions (not correct for general sparse matrices) all we
+c need in addition to a, ja, ia is an additional diagonal.
+c Ilu0 is not recommended for serious problems. It is only provided
+c here for comparison purposes.
+c-----------------------------------------------------------------------
+c
+c on entry:
+c----------
+c n = dimension of matrix
+c a, ja,
+c ia = original matrix in compressed sparse row storage.
+c
+c on return:
+c----------
+c alu,jlu = matrix stored in Modified Sparse Row (MSR) format containing
+c the L and U factors together. The diagonal (stored in
+c alu(1:n) ) is inverted. Each i-th row of the alu,jlu matrix
+c contains the i-th row of L (excluding the diagonal entry=1)
+c followed by the i-th row of U.
+c
+c ju = pointer to the diagonal elements in alu, jlu.
+c
+c ierr = integer indicating error code on return
+c ierr = 0 --> normal return
+c ierr = k --> code encountered a zero pivot at step k.
+c work arrays:
+c-------------
+c iw = integer work array of length n.
+c------------
+c Note (IMPORTANT):
+c-----------
+C it is assumed that the the elements in the input matrix are ordered
+c in such a way that in each row the lower part comes first and
+c then the upper part. To get the correct ILU factorization, it is
+c also necessary to have the elements of L ordered by increasing
+c column number. It may therefore be necessary to sort the
+c elements of a, ja, ia prior to calling milu0. This can be
+c achieved by transposing the matrix twice using csrcsc.
+c-----------------------------------------------------------
+ ju0 = n+2
+ jlu(1) = ju0
+c initialize work vector to zero's
+ do 31 i=1, n
+ 31 iw(i) = 0
+c
+c-------------- MAIN LOOP ----------------------------------
+c
+ do 500 ii = 1, n
+ js = ju0
+c
+c generating row number ii or L and U.
+c
+ do 100 j=ia(ii),ia(ii+1)-1
+c
+c copy row ii of a, ja, ia into row ii of alu, jlu (L/U) matrix.
+c
+ jcol = ja(j)
+ if (jcol .eq. ii) then
+ alu(ii) = a(j)
+ iw(jcol) = ii
+ ju(ii) = ju0
+ else
+ alu(ju0) = a(j)
+ jlu(ju0) = ja(j)
+ iw(jcol) = ju0
+ ju0 = ju0+1
+ endif
+ 100 continue
+ jlu(ii+1) = ju0
+ jf = ju0-1
+ jm = ju(ii)-1
+c s accumulates fill-in values
+ s = 0.0d0
+ do 150 j=js, jm
+ jrow = jlu(j)
+ tl = alu(j)*alu(jrow)
+ alu(j) = tl
+c-----------------------perform linear combination --------
+ do 140 jj = ju(jrow), jlu(jrow+1)-1
+ jw = iw(jlu(jj))
+ if (jw .ne. 0) then
+ alu(jw) = alu(jw) - tl*alu(jj)
+ else
+ s = s + tl*alu(jj)
+ endif
+ 140 continue
+ 150 continue
+c----------------------- invert and store diagonal element.
+ alu(ii) = alu(ii)-s
+ if (alu(ii) .eq. 0.0d0) goto 600
+ alu(ii) = 1.0d0/alu(ii)
+c----------------------- reset pointer iw to zero
+ iw(ii) = 0
+ do 201 i = js, jf
+ 201 iw(jlu(i)) = 0
+ 500 continue
+ ierr = 0
+ return
+c zero pivot :
+ 600 ierr = ii
+ return
+c------- end-of-milu0 --------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine pgmres(n, im, rhs, sol, vv, eps, maxits, iout,
+ * aa, ja, ia, alu, jlu, ju, ierr)
+c-----------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ integer n, im, maxits, iout, ierr, ja(*), ia(n+1), jlu(*), ju(n)
+ real*8 vv(n,*), rhs(n), sol(n), aa(*), alu(*), eps
+c----------------------------------------------------------------------*
+c *
+c *** ILUT - Preconditioned GMRES *** *
+c *
+c----------------------------------------------------------------------*
+c This is a simple version of the ILUT preconditioned GMRES algorithm. *
+c The ILUT preconditioner uses a dual strategy for dropping elements *
+c instead of the usual level of-fill-in approach. See details in ILUT *
+c subroutine documentation. PGMRES uses the L and U matrices generated *
+c from the subroutine ILUT to precondition the GMRES algorithm. *
+c The preconditioning is applied to the right. The stopping criterion *
+c utilized is based simply on reducing the residual norm by epsilon. *
+c This preconditioning is more reliable than ilu0 but requires more *
+c storage. It seems to be much less prone to difficulties related to *
+c strong nonsymmetries in the matrix. We recommend using a nonzero tol *
+c (tol=.005 or .001 usually give good results) in ILUT. Use a large *
+c lfil whenever possible (e.g. lfil = 5 to 10). The higher lfil the *
+c more reliable the code is. Efficiency may also be much improved. *
+c Note that lfil=n and tol=0.0 in ILUT will yield the same factors as *
+c Gaussian elimination without pivoting. *
+c *
+c ILU(0) and MILU(0) are also provided for comparison purposes *
+c USAGE: first call ILUT or ILU0 or MILU0 to set up preconditioner and *
+c then call pgmres. *
+c----------------------------------------------------------------------*
+c Coded by Y. Saad - This version dated May, 7, 1990. *
+c----------------------------------------------------------------------*
+c parameters *
+c----------- *
+c on entry: *
+c========== *
+c *
+c n == integer. The dimension of the matrix. *
+c im == size of krylov subspace: should not exceed 50 in this *
+c version (can be reset by changing parameter command for *
+c kmax below) *
+c rhs == real vector of length n containing the right hand side. *
+c Destroyed on return. *
+c sol == real vector of length n containing an initial guess to the *
+c solution on input. approximate solution on output *
+c eps == tolerance for stopping criterion. process is stopped *
+c as soon as ( ||.|| is the euclidean norm): *
+c || current residual||/||initial residual|| <= eps *
+c maxits== maximum number of iterations allowed *
+c iout == output unit number number for printing intermediate results *
+c if (iout .le. 0) nothing is printed out. *
+c *
+c aa, ja, *
+c ia == the input matrix in compressed sparse row format: *
+c aa(1:nnz) = nonzero elements of A stored row-wise in order *
+c ja(1:nnz) = corresponding column indices. *
+c ia(1:n+1) = pointer to beginning of each row in aa and ja. *
+c here nnz = number of nonzero elements in A = ia(n+1)-ia(1) *
+c *
+c alu,jlu== A matrix stored in Modified Sparse Row format containing *
+c the L and U factors, as computed by subroutine ilut. *
+c *
+c ju == integer array of length n containing the pointers to *
+c the beginning of each row of U in alu, jlu as computed *
+c by subroutine ILUT. *
+c *
+c on return: *
+c========== *
+c sol == contains an approximate solution (upon successful return). *
+c ierr == integer. Error message with the following meaning. *
+c ierr = 0 --> successful return. *
+c ierr = 1 --> convergence not achieved in itmax iterations. *
+c ierr =-1 --> the initial guess seems to be the exact *
+c solution (initial residual computed was zero) *
+c *
+c----------------------------------------------------------------------*
+c *
+c work arrays: *
+c============= *
+c vv == work array of length n x (im+1) (used to store the Arnoli *
+c basis) *
+c----------------------------------------------------------------------*
+c subroutines called : *
+c amux : SPARSKIT routine to do the matrix by vector multiplication *
+c delivers y=Ax, given x -- see SPARSKIT/BLASSM/amux *
+c lusol : combined forward and backward solves (Preconditioning ope.) *
+c BLAS1 routines. *
+c----------------------------------------------------------------------*
+ parameter (kmax=50)
+ real*8 hh(kmax+1,kmax), c(kmax), s(kmax), rs(kmax+1),t
+c-------------------------------------------------------------
+c arnoldi size should not exceed kmax=50 in this version..
+c to reset modify paramter kmax accordingly.
+c-------------------------------------------------------------
+ data epsmac/1.d-16/
+ n1 = n + 1
+ its = 0
+c-------------------------------------------------------------
+c outer loop starts here..
+c-------------- compute initial residual vector --------------
+ call amux (n, sol, vv, aa, ja, ia)
+ do 21 j=1,n
+ vv(j,1) = rhs(j) - vv(j,1)
+ 21 continue
+c-------------------------------------------------------------
+ 20 ro = dnrm2(n, vv, 1)
+ if (iout .gt. 0 .and. its .eq. 0)
+ * write(iout, 199) its, ro
+ if (ro .eq. 0.0d0) goto 999
+ t = 1.0d0/ ro
+ do 210 j=1, n
+ vv(j,1) = vv(j,1)*t
+ 210 continue
+ if (its .eq. 0) eps1=eps*ro
+c ** initialize 1-st term of rhs of hessenberg system..
+ rs(1) = ro
+ i = 0
+ 4 i=i+1
+ its = its + 1
+ i1 = i + 1
+ call lusol (n, vv(1,i), rhs, alu, jlu, ju)
+ call amux (n, rhs, vv(1,i1), aa, ja, ia)
+c-----------------------------------------
+c modified gram - schmidt...
+c-----------------------------------------
+ do 55 j=1, i
+ t = ddot(n, vv(1,j),1,vv(1,i1),1)
+ hh(j,i) = t
+ call daxpy(n, -t, vv(1,j), 1, vv(1,i1), 1)
+ 55 continue
+ t = dnrm2(n, vv(1,i1), 1)
+ hh(i1,i) = t
+ if ( t .eq. 0.0d0) goto 58
+ t = 1.0d0/t
+ do 57 k=1,n
+ vv(k,i1) = vv(k,i1)*t
+ 57 continue
+c
+c done with modified gram schimd and arnoldi step..
+c now update factorization of hh
+c
+ 58 if (i .eq. 1) goto 121
+c--------perfrom previous transformations on i-th column of h
+ do 66 k=2,i
+ k1 = k-1
+ t = hh(k1,i)
+ hh(k1,i) = c(k1)*t + s(k1)*hh(k,i)
+ hh(k,i) = -s(k1)*t + c(k1)*hh(k,i)
+ 66 continue
+ 121 gam = sqrt(hh(i,i)**2 + hh(i1,i)**2)
+c
+c if gamma is zero then any small value will do...
+c will affect only residual estimate
+c
+ if (gam .eq. 0.0d0) gam = epsmac
+c
+c get next plane rotation
+c
+ c(i) = hh(i,i)/gam
+ s(i) = hh(i1,i)/gam
+ rs(i1) = -s(i)*rs(i)
+ rs(i) = c(i)*rs(i)
+c
+c detrermine residual norm and test for convergence-
+c
+ hh(i,i) = c(i)*hh(i,i) + s(i)*hh(i1,i)
+ ro = abs(rs(i1))
+ 131 format(1h ,2e14.4)
+ if (iout .gt. 0)
+ * write(iout, 199) its, ro
+ if (i .lt. im .and. (ro .gt. eps1)) goto 4
+c
+c now compute solution. first solve upper triangular system.
+c
+ rs(i) = rs(i)/hh(i,i)
+ do 30 ii=2,i
+ k=i-ii+1
+ k1 = k+1
+ t=rs(k)
+ do 40 j=k1,i
+ t = t-hh(k,j)*rs(j)
+ 40 continue
+ rs(k) = t/hh(k,k)
+ 30 continue
+c
+c form linear combination of v(*,i)'s to get solution
+c
+ t = rs(1)
+ do 15 k=1, n
+ rhs(k) = vv(k,1)*t
+ 15 continue
+ do 16 j=2, i
+ t = rs(j)
+ do 161 k=1, n
+ rhs(k) = rhs(k)+t*vv(k,j)
+ 161 continue
+ 16 continue
+c
+c call preconditioner.
+c
+ call lusol (n, rhs, rhs, alu, jlu, ju)
+ do 17 k=1, n
+ sol(k) = sol(k) + rhs(k)
+ 17 continue
+c
+c restart outer loop when necessary
+c
+ if (ro .le. eps1) goto 990
+ if (its .ge. maxits) goto 991
+c
+c else compute residual vector and continue..
+c
+ do 24 j=1,i
+ jj = i1-j+1
+ rs(jj-1) = -s(jj-1)*rs(jj)
+ rs(jj) = c(jj-1)*rs(jj)
+ 24 continue
+ do 25 j=1,i1
+ t = rs(j)
+ if (j .eq. 1) t = t-1.0d0
+ call daxpy (n, t, vv(1,j), 1, vv, 1)
+ 25 continue
+ 199 format(' its =', i4, ' res. norm =', d20.6)
+c restart outer loop.
+ goto 20
+ 990 ierr = 0
+ return
+ 991 ierr = 1
+ return
+ 999 continue
+ ierr = -1
+ return
+c-----------------end of pgmres ---------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine lusol(n, y, x, alu, jlu, ju)
+ real*8 x(n), y(n), alu(*)
+ integer n, jlu(*), ju(*)
+c-----------------------------------------------------------------------
+c
+c This routine solves the system (LU) x = y,
+c given an LU decomposition of a matrix stored in (alu, jlu, ju)
+c modified sparse row format
+c
+c-----------------------------------------------------------------------
+c on entry:
+c n = dimension of system
+c y = the right-hand-side vector
+c alu, jlu, ju
+c = the LU matrix as provided from the ILU routines.
+c
+c on return
+c x = solution of LU x = y.
+c-----------------------------------------------------------------------
+c
+c Note: routine is in place: call lusol (n, x, x, alu, jlu, ju)
+c will solve the system with rhs x and overwrite the result on x .
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i,k
+c
+c forward solve
+c
+ do 40 i = 1, n
+ x(i) = y(i)
+ do 41 k=jlu(i),ju(i)-1
+ x(i) = x(i) - alu(k)* x(jlu(k))
+ 41 continue
+ 40 continue
+c
+c backward solve.
+c
+ do 90 i = n, 1, -1
+ do 91 k=ju(i),jlu(i+1)-1
+ x(i) = x(i) - alu(k)*x(jlu(k))
+ 91 continue
+ x(i) = alu(i)*x(i)
+ 90 continue
+c
+ return
+c----------------end of lusol ------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine lutsol(n, y, x, alu, jlu, ju)
+ real*8 x(n), y(n), alu(*)
+ integer n, jlu(*), ju(*)
+c-----------------------------------------------------------------------
+c
+c This routine solves the system Transp(LU) x = y,
+c given an LU decomposition of a matrix stored in (alu, jlu, ju)
+c modified sparse row format. Transp(M) is the transpose of M.
+c-----------------------------------------------------------------------
+c on entry:
+c n = dimension of system
+c y = the right-hand-side vector
+c alu, jlu, ju
+c = the LU matrix as provided from the ILU routines.
+c
+c on return
+c x = solution of transp(LU) x = y.
+c-----------------------------------------------------------------------
+c
+c Note: routine is in place: call lutsol (n, x, x, alu, jlu, ju)
+c will solve the system with rhs x and overwrite the result on x .
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i,k
+c
+ do 10 i = 1, n
+ x(i) = y(i)
+ 10 continue
+c
+c forward solve (with U^T)
+c
+ do 20 i = 1, n
+ x(i) = x(i) * alu(i)
+ do 30 k=ju(i),jlu(i+1)-1
+ x(jlu(k)) = x(jlu(k)) - alu(k)* x(i)
+ 30 continue
+ 20 continue
+c
+c backward solve (with L^T)
+c
+ do 40 i = n, 1, -1
+ do 50 k=jlu(i),ju(i)-1
+ x(jlu(k)) = x(jlu(k)) - alu(k)*x(i)
+ 50 continue
+ 40 continue
+c
+ return
+c----------------end of lutsol -----------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine qsplit(a,ind,n,ncut)
+ real*8 a(n)
+ integer ind(n), n, ncut
+c-----------------------------------------------------------------------
+c does a quick-sort split of a real array.
+c on input a(1:n). is a real array
+c on output a(1:n) is permuted such that its elements satisfy:
+c
+c abs(a(i)) .ge. abs(a(ncut)) for i .lt. ncut and
+c abs(a(i)) .le. abs(a(ncut)) for i .gt. ncut
+c
+c ind(1:n) is an integer array which permuted in the same way as a(*).
+c-----------------------------------------------------------------------
+ real*8 tmp, abskey
+ integer itmp, first, last
+c-----
+ first = 1
+ last = n
+ if (ncut .lt. first .or. ncut .gt. last) return
+c
+c outer loop -- while mid .ne. ncut do
+c
+ 1 mid = first
+ abskey = abs(a(mid))
+ do 2 j=first+1, last
+ if (abs(a(j)) .gt. abskey) then
+ mid = mid+1
+c interchange
+ tmp = a(mid)
+ itmp = ind(mid)
+ a(mid) = a(j)
+ ind(mid) = ind(j)
+ a(j) = tmp
+ ind(j) = itmp
+ endif
+ 2 continue
+c
+c interchange
+c
+ tmp = a(mid)
+ a(mid) = a(first)
+ a(first) = tmp
+c
+ itmp = ind(mid)
+ ind(mid) = ind(first)
+ ind(first) = itmp
+c
+c test for while loop
+c
+ if (mid .eq. ncut) return
+ if (mid .gt. ncut) then
+ last = mid-1
+ else
+ first = mid+1
+ endif
+ goto 1
+c----------------end-of-qsplit------------------------------------------
+c-----------------------------------------------------------------------
+ end
diff --git a/ITSOL/itaux.f b/ITSOL/itaux.f
new file mode 100644
index 0000000..cfb1820
--- /dev/null
+++ b/ITSOL/itaux.f
@@ -0,0 +1,217 @@
+ subroutine runrc(n,rhs,sol,ipar,fpar,wk,guess,a,ja,ia,
+ + au,jau,ju,solver)
+ implicit none
+ integer n,ipar(16),ia(n+1),ja(*),ju(*),jau(*)
+ real*8 fpar(16),rhs(n),sol(n),guess(n),wk(*),a(*),au(*)
+ external solver
+c-----------------------------------------------------------------------
+c the actual tester. It starts the iterative linear system solvers
+c with a initial guess suppied by the user.
+c
+c The structure {au, jau, ju} is assumed to have the output from
+c the ILU* routines in ilut.f.
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer i, iou, its
+ real*8 res, dnrm2
+c real dtime, dt(2), time
+c external dtime
+ external dnrm2
+ save its,res
+c
+c ipar(2) can be 0, 1, 2, please don't use 3
+c
+ if (ipar(2).gt.2) then
+ print *, 'I can not do both left and right preconditioning.'
+ return
+ endif
+c
+c normal execution
+c
+ its = 0
+ res = 0.0D0
+c
+ do i = 1, n
+ sol(i) = guess(i)
+ enddo
+c
+ iou = 6
+ ipar(1) = 0
+c time = dtime(dt)
+ 10 call solver(n,rhs,sol,ipar,fpar,wk)
+c
+c output the residuals
+c
+ if (ipar(7).ne.its) then
+ write (iou, *) its, real(res)
+ its = ipar(7)
+ endif
+ res = fpar(5)
+c
+ if (ipar(1).eq.1) then
+ call amux(n, wk(ipar(8)), wk(ipar(9)), a, ja, ia)
+ goto 10
+ else if (ipar(1).eq.2) then
+ call atmux(n, wk(ipar(8)), wk(ipar(9)), a, ja, ia)
+ goto 10
+ else if (ipar(1).eq.3 .or. ipar(1).eq.5) then
+ call lusol(n,wk(ipar(8)),wk(ipar(9)),au,jau,ju)
+ goto 10
+ else if (ipar(1).eq.4 .or. ipar(1).eq.6) then
+ call lutsol(n,wk(ipar(8)),wk(ipar(9)),au,jau,ju)
+ goto 10
+ else if (ipar(1).le.0) then
+ if (ipar(1).eq.0) then
+ print *, 'Iterative sovler has satisfied convergence test.'
+ else if (ipar(1).eq.-1) then
+ print *, 'Iterative solver has iterated too many times.'
+ else if (ipar(1).eq.-2) then
+ print *, 'Iterative solver was not given enough work space.'
+ print *, 'The work space should at least have ', ipar(4),
+ & ' elements.'
+ else if (ipar(1).eq.-3) then
+ print *, 'Iterative sovler is facing a break-down.'
+ else
+ print *, 'Iterative solver terminated. code =', ipar(1)
+ endif
+ endif
+c time = dtime(dt)
+ write (iou, *) ipar(7), real(fpar(6))
+ write (iou, *) '# retrun code =', ipar(1),
+ + ' convergence rate =', fpar(7)
+c write (iou, *) '# total execution time (sec)', time
+c
+c check the error
+c
+ call amux(n,sol,wk,a,ja,ia)
+ do i = 1, n
+ wk(n+i) = sol(i) -1.0D0
+ wk(i) = wk(i) - rhs(i)
+ enddo
+ write (iou, *) '# the actual residual norm is', dnrm2(n,wk,1)
+ write (iou, *) '# the error norm is', dnrm2(n,wk(1+n),1)
+c
+ if (iou.ne.6) close(iou)
+ return
+ end
+c-----end-of-runrc
+c-----------------------------------------------------------------------
+ function distdot(n,x,ix,y,iy)
+ integer n, ix, iy
+ real*8 distdot, x(*), y(*), ddot
+ external ddot
+ distdot = ddot(n,x,ix,y,iy)
+ return
+ end
+c-----end-of-distdot
+c-----------------------------------------------------------------------
+c
+ function afun (x,y,z)
+ real*8 afun, x,y, z
+ afun = -1.0D0
+ return
+ end
+
+ function bfun (x,y,z)
+ real*8 bfun, x,y, z
+ bfun = -1.0D0
+ return
+ end
+
+ function cfun (x,y,z)
+ real*8 cfun, x,y, z
+ cfun = -1.0D0
+ return
+ end
+
+ function dfun (x,y,z)
+ real*8 dfun, x,y, z, gammax, gammay, alpha
+ common /func/ gammax, gammay, alpha
+ dfun = gammax*exp(x*y)
+ return
+ end
+
+ function efun (x,y,z)
+ real*8 efun, x,y, z, gammax, gammay, alpha
+ common /func/ gammax, gammay, alpha
+ efun = gammay*exp(-x*y)
+ return
+ end
+
+ function ffun (x,y,z)
+ real*8 ffun, x,y, z
+ ffun = 0.0D0
+ return
+ end
+
+ function gfun (x,y,z)
+ real*8 gfun, x,y, z, gammax, gammay, alpha
+ common /func/ gammax, gammay, alpha
+ gfun = alpha
+ return
+ end
+
+ function hfun (x,y,z)
+ real*8 hfun, x,y, z, gammax, gammay, alpha
+ common /func/ gammax, gammay, alpha
+ hfun = alpha * sin(gammax*x+gammay*y-z)
+ return
+ end
+
+
+ function betfun(side, x, y, z)
+ real*8 betfun, x, y, z
+ character*2 side
+ betfun = 1.0
+ return
+ end
+
+ function gamfun(side, x, y, z)
+ real*8 gamfun, x, y, z
+ character*2 side
+ if (side.eq.'x2') then
+ gamfun = 5.0
+ else if (side.eq.'y1') then
+ gamfun = 2.0
+ else if (side.eq.'y2') then
+ gamfun = 7.0
+ else
+ gamfun = 0.0
+ endif
+ return
+ end
+c-----------------------------------------------------------------------
+c functions for the block PDE's
+c-----------------------------------------------------------------------
+ subroutine afunbl (nfree,x,y,z,coeff)
+ return
+ end
+c
+ subroutine bfunbl (nfree,x,y,z,coeff)
+ return
+ end
+
+ subroutine cfunbl (nfree,x,y,z,coeff)
+c
+ return
+ end
+
+ subroutine dfunbl (nfree,x,y,z,coeff)
+
+ return
+ end
+c
+ subroutine efunbl (nfree,x,y,z,coeff)
+ return
+ end
+c
+ subroutine ffunbl (nfree,x,y,z,coeff)
+ return
+ end
+c
+ subroutine gfunbl (nfree,x,y,z,coeff)
+ return
+ end
+
diff --git a/ITSOL/iters.f b/ITSOL/iters.f
new file mode 100644
index 0000000..f00c7d7
--- /dev/null
+++ b/ITSOL/iters.f
@@ -0,0 +1,3586 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c Basic Iterative Solvers with Reverse Communication c
+c----------------------------------------------------------------------c
+c This file currently has several basic iterative linear system c
+c solvers. They are: c
+c CG -- Conjugate Gradient Method c
+c CGNR -- Conjugate Gradient Method (Normal Residual equation) c
+c BCG -- Bi-Conjugate Gradient Method c
+c DBCG -- BCG with partial pivoting c
+c BCGSTAB -- BCG stabilized c
+c TFQMR -- Transpose-Free Quasi-Minimum Residual method c
+c FOM -- Full Orthogonalization Method c
+c GMRES -- Generalized Minimum RESidual method c
+c FGMRES -- Flexible version of Generalized Minimum c
+c RESidual method c
+c DQGMRES -- Direct versions of Quasi Generalize Minimum c
+c Residual method c
+c----------------------------------------------------------------------c
+c They all have the following calling sequence:
+c subroutine solver(n, rhs, sol, ipar, fpar, w)
+c integer n, ipar(16)
+c real*8 rhs(n), sol(n), fpar(16), w(*)
+c Where
+c (1) 'n' is the size of the linear system,
+c (2) 'rhs' is the right-hand side of the linear system,
+c (3) 'sol' is the solution to the linear system,
+c (4) 'ipar' is an integer parameter array for the reverse
+c communication protocol,
+c (5) 'fpar' is an floating-point parameter array storing
+c information to and from the iterative solvers.
+c (6) 'w' is the work space (size is specified in ipar)
+c
+c They are preconditioned iterative solvers with reverse
+c communication. The preconditioners can be applied from either
+c from left or right or both (specified by ipar(2), see below).
+c
+c Author: Kesheng John Wu (kewu@mail.cs.umn.edu) 1993
+c
+c NOTES:
+c
+c (1) Work space required by each of the iterative solver
+c routines is as follows:
+c CG == 5 * n
+c CGNR == 5 * n
+c BCG == 7 * n
+c DBCG == 11 * n
+c BCGSTAB == 8 * n
+c TFQMR == 11 * n
+c FOM == (n+3)*(m+2) + (m+1)*m/2 (m = ipar(5), default m=15)
+c GMRES == (n+3)*(m+2) + (m+1)*m/2 (m = ipar(5), default m=15)
+c FGMRES == 2*n*(m+1) + (m+1)*m/2 + 3*m + 2 (m = ipar(5),
+c default m=15)
+c DQGMRES == n + lb * (2*n+4) (lb=ipar(5)+1, default lb = 16)
+c
+c (2) ALL iterative solvers require a user-supplied DOT-product
+c routine named DISTDOT. The prototype of DISTDOT is
+c
+c real*8 function distdot(n,x,ix,y,iy)
+c integer n, ix, iy
+c real*8 x(1+(n-1)*ix), y(1+(n-1)*iy)
+c
+c This interface of DISTDOT is exactly the same as that of
+c DDOT (or SDOT if real == real*8) from BLAS-1. It should have
+c same functionality as DDOT on a single processor machine. On a
+c parallel/distributed environment, each processor can perform
+c DDOT on the data it has, then perform a summation on all the
+c partial results.
+c
+c (3) To use this set of routines under SPMD/MIMD program paradigm,
+c several things are to be noted: (a) 'n' should be the number of
+c vector elements of 'rhs' that is present on the local processor.
+c (b) if RHS(i) is on processor j, it is expected that SOL(i)
+c will be on the same processor, i.e. the vectors are distributed
+c to each processor in the same way. (c) the preconditioning and
+c stopping criteria specifications have to be the same on all
+c processor involved, ipar and fpar have to be the same on each
+c processor. (d) DISTDOT should be replaced by a distributed
+c dot-product function.
+c
+c ..................................................................
+c Reverse Communication Protocols
+c
+c When a reverse-communication routine returns, it could be either
+c that the routine has terminated or it simply requires the caller
+c to perform one matrix-vector multiplication. The possible matrices
+c that involve in the matrix-vector multiplications are:
+c A (the matrix of the linear system),
+c A^T (A transposed),
+c Ml^{-1} (inverse of the left preconditioner),
+c Ml^{-T} (inverse of the left preconditioner transposed),
+c Mr^{-1} (inverse of the right preconditioner),
+c Mr^{-T} (inverse of the right preconditioner transposed).
+c For all the matrix vector multiplication, v = A u. The input and
+c output vectors are supposed to be part of the work space 'w', and
+c the starting positions of them are stored in ipar(8:9), see below.
+c
+c The array 'ipar' is used to store the information about the solver.
+c Here is the list of what each element represents:
+c
+c ipar(1) -- status of the call/return.
+c A call to the solver with ipar(1) == 0 will initialize the
+c iterative solver. On return from the iterative solver, ipar(1)
+c carries the status flag which indicates the condition of the
+c return. The status information is divided into two categories,
+c (1) a positive value indicates the solver requires a matrix-vector
+c multiplication,
+c (2) a non-positive value indicates termination of the solver.
+c Here is the current definition:
+c 1 == request a matvec with A,
+c 2 == request a matvec with A^T,
+c 3 == request a left preconditioner solve (Ml^{-1}),
+c 4 == request a left preconditioner transposed solve (Ml^{-T}),
+c 5 == request a right preconditioner solve (Mr^{-1}),
+c 6 == request a right preconditioner transposed solve (Mr^{-T}),
+c 10 == request the caller to perform stopping test,
+c 0 == normal termination of the solver, satisfied the stopping
+c criteria,
+c -1 == termination because iteration number is greater than the
+c preset limit,
+c -2 == return due to insufficient work space,
+c -3 == return due to anticipated break-down / divide by zero,
+c in the case where Arnoldi procedure is used, additional
+c error code can be found in ipar(12), where ipar(12) is
+c the error code of orthogonalization procedure MGSRO:
+c -1: zero input vector
+c -2: input vector contains abnormal numbers
+c -3: input vector is a linear combination of others
+c -4: trianguler system in GMRES/FOM/etc. has nul rank
+c -4 == the values of fpar(1) and fpar(2) are both <= 0, the valid
+c ranges are 0 <= fpar(1) < 1, 0 <= fpar(2), and they can
+c not be zero at the same time
+c -9 == while trying to detect a break-down, an abnormal number is
+c detected.
+c -10 == return due to some non-numerical reasons, e.g. invalid
+c floating-point numbers etc.
+c
+c ipar(2) -- status of the preconditioning:
+c 0 == no preconditioning
+c 1 == left preconditioning only
+c 2 == right preconditioning only
+c 3 == both left and right preconditioning
+c
+c ipar(3) -- stopping criteria (details of this will be
+c discussed later).
+c
+c ipar(4) -- number of elements in the array 'w'. if this is less
+c than the desired size, it will be over-written with the minimum
+c requirement. In which case the status flag ipar(1) = -2.
+c
+c ipar(5) -- size of the Krylov subspace (used by GMRES and its
+c variants), e.g. GMRES(ipar(5)), FGMRES(ipar(5)),
+c DQGMRES(ipar(5)).
+c
+c ipar(6) -- maximum number of matrix-vector multiplies, if not a
+c positive number the iterative solver will run till convergence
+c test is satisfied.
+c
+c ipar(7) -- current number of matrix-vector multiplies. It is
+c incremented after each matrix-vector multiplication. If there
+c is preconditioning, the counter is incremented after the
+c preconditioning associated with each matrix-vector multiplication.
+c
+c ipar(8) -- pointer to the input vector to the requested matrix-
+c vector multiplication.
+c
+c ipar(9) -- pointer to the output vector of the requested matrix-
+c vector multiplication.
+c
+c To perform v = A * u, it is assumed that u is w(ipar(8):ipar(8)+n-1)
+c and v is stored as w(ipar(9):ipar(9)+n-1).
+c
+c ipar(10) -- the return address (used to determine where to go to
+c inside the iterative solvers after the caller has performed the
+c requested services).
+c
+c ipar(11) -- the result of the external convergence test
+c On final return from the iterative solvers, this value
+c will be reflected by ipar(1) = 0 (details discussed later)
+c
+c ipar(12) -- error code of MGSRO, it is
+c 1 if the input vector to MGSRO is linear combination
+c of others,
+c 0 if MGSRO was successful,
+c -1 if the input vector to MGSRO is zero,
+c -2 if the input vector contains invalid number.
+c
+c ipar(13) -- number of initializations. During each initilization
+c residual norm is computed directly from M_l(b - A x).
+c
+c ipar(14) to ipar(16) are NOT defined, they are NOT USED by
+c any iterative solver at this time.
+c
+c Information about the error and tolerance are stored in the array
+c FPAR. So are some internal variables that need to be saved from
+c one iteration to the next one. Since the internal variables are
+c not the same for each routine, we only define the common ones.
+c
+c The first two are input parameters:
+c fpar(1) -- the relative tolerance,
+c fpar(2) -- the absolute tolerance (details discussed later),
+c
+c When the iterative solver terminates,
+c fpar(3) -- initial residual/error norm,
+c fpar(4) -- target residual/error norm,
+c fpar(5) -- current residual norm (if available),
+c fpar(6) -- current residual/error norm,
+c fpar(7) -- convergence rate,
+c
+c fpar(8:10) are used by some of the iterative solvers to save some
+c internal information.
+c
+c fpar(11) -- number of floating-point operations. The iterative
+c solvers will add the number of FLOPS they used to this variable,
+c but they do NOT initialize it, nor add the number of FLOPS due to
+c matrix-vector multiplications (since matvec is outside of the
+c iterative solvers). To insure the correct FLOPS count, the
+c caller should set fpar(11) = 0 before invoking the iterative
+c solvers and account for the number of FLOPS from matrix-vector
+c multiplications and preconditioners.
+c
+c fpar(12:16) are not used in current implementation.
+c
+c Whether the content of fpar(3), fpar(4) and fpar(6) are residual
+c norms or error norms depends on ipar(3). If the requested
+c convergence test is based on the residual norm, they will be
+c residual norms. If the caller want to test convergence based the
+c error norms (estimated by the norm of the modifications applied
+c to the approximate solution), they will be error norms.
+c Convergence rate is defined by (Fortran 77 statement)
+c fpar(7) = log10(fpar(3) / fpar(6)) / (ipar(7)-ipar(13))
+c If fpar(7) = 0.5, it means that approximately every 2 (= 1/0.5)
+c steps the residual/error norm decrease by a factor of 10.
+c
+c ..................................................................
+c Stopping criteria,
+c
+c An iterative solver may be terminated due to (1) satisfying
+c convergence test; (2) exceeding iteration limit; (3) insufficient
+c work space; (4) break-down. Checking of the work space is
+c only done in the initialization stage, i.e. when it is called with
+c ipar(1) == 0. A complete convergence test is done after each
+c update of the solutions. Other conditions are monitored
+c continuously.
+c
+c With regard to the number of iteration, when ipar(6) is positive,
+c the current iteration number will be checked against it. If
+c current iteration number is greater the ipar(6) than the solver
+c will return with status -1. If ipar(6) is not positive, the
+c iteration will continue until convergence test is satisfied.
+c
+c Two things may be used in the convergence tests, one is the
+c residual 2-norm, the other one is 2-norm of the change in the
+c approximate solution. The residual and the change in approximate
+c solution are from the preconditioned system (if preconditioning
+c is applied). The DQGMRES and TFQMR use two estimates for the
+c residual norms. The estimates are not accurate, but they are
+c acceptable in most of the cases. Generally speaking, the error
+c of the TFQMR's estimate is less accurate.
+c
+c The convergence test type is indicated by ipar(3). There are four
+c type convergence tests: (1) tests based on the residual norm;
+c (2) tests based on change in approximate solution; (3) caller
+c does not care, the solver choose one from above two on its own;
+c (4) caller will perform the test, the solver should simply continue.
+c Here is the complete definition:
+c -2 == || dx(i) || <= rtol * || rhs || + atol
+c -1 == || dx(i) || <= rtol * || dx(1) || + atol
+c 0 == solver will choose test 1 (next)
+c 1 == || residual || <= rtol * || initial residual || + atol
+c 2 == || residual || <= rtol * || rhs || + atol
+c 999 == caller will perform the test
+c where dx(i) denote the change in the solution at the ith update.
+c ||.|| denotes 2-norm. rtol = fpar(1) and atol = fpar(2).
+c
+c If the caller is to perform the convergence test, the outcome
+c should be stored in ipar(11).
+c ipar(11) = 0 -- failed the convergence test, iterative solver
+c should continue
+c ipar(11) = 1 -- satisfied convergence test, iterative solver
+c should perform the clean up job and stop.
+c
+c Upon return with ipar(1) = 10,
+c ipar(8) points to the starting position of the change in
+c solution Sx, where the actual solution of the step is
+c x_j = x_0 + M_r^{-1} Sx.
+c Exception: ipar(8) < 0, Sx = 0. It is mostly used by
+c GMRES and variants to indicate (1) Sx was not necessary,
+c (2) intermediate result of Sx is not computed.
+c ipar(9) points to the starting position of a work vector that
+c can be used by the caller.
+c
+c NOTE: the caller should allow the iterative solver to perform
+c clean up job after the external convergence test is satisfied,
+c since some of the iterative solvers do not directly
+c update the 'sol' array. A typical clean-up stage includes
+c performing the final update of the approximate solution and
+c computing the convergence information (e.g. values of fpar(3:7)).
+c
+c NOTE: fpar(4) and fpar(6) are not set by the accelerators (the
+c routines implemented here) if ipar(3) = 999.
+c
+c ..................................................................
+c Usage:
+c
+c To start solving a linear system, the user needs to specify
+c first 6 elements of the ipar, and first 2 elements of fpar.
+c The user may optionally set fpar(11) = 0 if one wants to count
+c the number of floating-point operations. (Note: the iterative
+c solvers will only add the floating-point operations inside
+c themselves, the caller will have to add the FLOPS from the
+c matrix-vector multiplication routines and the preconditioning
+c routines in order to account for all the arithmetic operations.)
+c
+c Here is an example:
+c ipar(1) = 0 ! always 0 to start an iterative solver
+c ipar(2) = 2 ! right preconditioning
+c ipar(3) = 1 ! use convergence test scheme 1
+c ipar(4) = 10000 ! the 'w' has 10,000 elements
+c ipar(5) = 10 ! use *GMRES(10) (e.g. FGMRES(10))
+c ipar(6) = 100 ! use at most 100 matvec's
+c fpar(1) = 1.0E-6 ! relative tolerance 1.0E-6
+c fpar(2) = 1.0E-10 ! absolute tolerance 1.0E-10
+c fpar(11) = 0.0 ! clearing the FLOPS counter
+c
+c After the above specifications, one can start to call an iterative
+c solver, say BCG. Here is a piece of pseudo-code showing how it can
+c be done,
+c
+c 10 call bcg(n,rhs,sol,ipar,fpar,w)
+c if (ipar(1).eq.1) then
+c call amux(n,w(ipar(8)),w(ipar(9)),a,ja,ia)
+c goto 10
+c else if (ipar(1).eq.2) then
+c call atmux(n,w(ipar(8)),w(ipar(9)),a,ja,ia)
+c goto 10
+c else if (ipar(1).eq.3) then
+c left preconditioner solver
+c goto 10
+c else if (ipar(1).eq.4) then
+c left preconditioner transposed solve
+c goto 10
+c else if (ipar(1).eq.5) then
+c right preconditioner solve
+c goto 10
+c else if (ipar(1).eq.6) then
+c right preconditioner transposed solve
+c goto 10
+c else if (ipar(1).eq.10) then
+c call my own stopping test routine
+c goto 10
+c else if (ipar(1).gt.0) then
+c ipar(1) is an unspecified code
+c else
+c the iterative solver terminated with code = ipar(1)
+c endif
+c
+c This segment of pseudo-code assumes the matrix is in CSR format,
+c AMUX and ATMUX are two routines from the SPARSKIT MATVEC module.
+c They perform matrix-vector multiplications for CSR matrices,
+c where w(ipar(8)) is the first element of the input vectors to the
+c two routines, and w(ipar(9)) is the first element of the output
+c vectors from them. For simplicity, we did not show the name of
+c the routine that performs the preconditioning operations or the
+c convergence tests.
+c-----------------------------------------------------------------------
+ subroutine cg(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(n,*)
+c-----------------------------------------------------------------------
+c This is a implementation of the Conjugate Gradient (CG) method
+c for solving linear system.
+c
+c NOTE: This is not the PCG algorithm. It is a regular CG algorithm.
+c To be consistent with the other solvers, the preconditioners are
+c applied by performing Ml^{-1} A Mr^{-1} P in place of A P in the
+c CG algorithm. PCG uses the preconditioner differently.
+c
+c fpar(7) is used here internally to store <r, r>.
+c w(:,1) -- residual vector
+c w(:,2) -- P, the conjugate direction
+c w(:,3) -- A P, matrix multiply the conjugate direction
+c w(:,4) -- temporary storage for results of preconditioning
+c w(:,5) -- change in the solution (sol) is stored here until
+c termination of this solver
+c-----------------------------------------------------------------------
+c external functions used
+c
+ real*8 distdot
+ logical stopbis, brkdn
+ external distdot, stopbis, brkdn, bisinit
+c
+c local variables
+c
+ integer i
+ real*8 alpha
+ logical lp,rp
+ save
+c
+c check the status of the call
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 40, 50, 60, 70, 80), ipar(10)
+c
+c initialization
+c
+ call bisinit(ipar,fpar,5*n,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c request for matrix vector multiplication A*x in the initialization
+c
+ ipar(1) = 1
+ ipar(8) = n+1
+ ipar(9) = ipar(8) + n
+ ipar(10) = 1
+ do i = 1, n
+ w(i,2) = sol(i)
+ enddo
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = 1
+ do i = 1, n
+ w(i,2) = rhs(i) - w(i,3)
+ enddo
+ fpar(11) = fpar(11) + n
+c
+c if left preconditioned
+c
+ if (lp) then
+ ipar(1) = 3
+ ipar(9) = 1
+ ipar(10) = 2
+ return
+ endif
+c
+ 20 if (lp) then
+ do i = 1, n
+ w(i,2) = w(i,1)
+ enddo
+ else
+ do i = 1, n
+ w(i,1) = w(i,2)
+ enddo
+ endif
+c
+ fpar(7) = distdot(n,w,1,w,1)
+ fpar(11) = fpar(11) + 2 * n
+ fpar(3) = sqrt(fpar(7))
+ fpar(5) = fpar(3)
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2 * n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ endif
+c
+c before iteration can continue, we need to compute A * p, which
+c includes the preconditioning operations
+c
+ 30 if (rp) then
+ ipar(1) = 5
+ ipar(8) = n + 1
+ if (lp) then
+ ipar(9) = ipar(8) + n
+ else
+ ipar(9) = 3*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 40 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = n + 1
+ endif
+ if (lp) then
+ ipar(9) = 3*n+1
+ else
+ ipar(9) = n+n+1
+ endif
+ ipar(10) = 4
+ return
+c
+ 50 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = n+n+1
+ ipar(10) = 5
+ return
+ endif
+c
+c continuing with the iterations
+c
+ 60 ipar(7) = ipar(7) + 1
+ alpha = distdot(n,w(1,2),1,w(1,3),1)
+ fpar(11) = fpar(11) + 2*n
+ if (brkdn(alpha,ipar)) goto 900
+ alpha = fpar(7) / alpha
+ do i = 1, n
+ w(i,5) = w(i,5) + alpha * w(i,2)
+ w(i,1) = w(i,1) - alpha * w(i,3)
+ enddo
+ fpar(11) = fpar(11) + 4*n
+c
+c are we ready to terminate ?
+c
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 4*n + 1
+ ipar(9) = 3*n + 1
+ ipar(10) = 6
+ return
+ endif
+ 70 if (ipar(3).eq.999) then
+ if (ipar(11).eq.1) goto 900
+ else if (stopbis(n,ipar,1,fpar,w,w(1,2),alpha)) then
+ goto 900
+ endif
+c
+c continue the iterations
+c
+ alpha = fpar(5)*fpar(5) / fpar(7)
+ fpar(7) = fpar(5)*fpar(5)
+ do i = 1, n
+ w(i,2) = w(i,1) + alpha * w(i,2)
+ enddo
+ fpar(11) = fpar(11) + 2*n
+ goto 30
+c
+c clean up -- necessary to accommodate the right-preconditioning
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 4*n + 1
+ ipar(9) = ipar(8) - n
+ ipar(10) = 7
+ return
+ endif
+ 80 if (rp) then
+ call tidycg(n,ipar,fpar,sol,w(1,4))
+ else
+ call tidycg(n,ipar,fpar,sol,w(1,5))
+ endif
+c
+ return
+ end
+c-----end-of-cg
+c-----------------------------------------------------------------------
+ subroutine cgnr(n,rhs,sol,ipar,fpar,wk)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n),sol(n),fpar(16),wk(n,*)
+c-----------------------------------------------------------------------
+c CGNR -- Using CG algorithm solving A x = b by solving
+c Normal Residual equation: A^T A x = A^T b
+c As long as the matrix is not singular, A^T A is symmetric
+c positive definite, therefore CG (CGNR) will converge.
+c
+c Usage of the work space:
+c wk(:,1) == residual vector R
+c wk(:,2) == the conjugate direction vector P
+c wk(:,3) == a scratch vector holds A P, or A^T R
+c wk(:,4) == a scratch vector holds intermediate results of the
+c preconditioning
+c wk(:,5) == a place to hold the modification to SOL
+c
+c size of the work space WK is required = 5*n
+c-----------------------------------------------------------------------
+c external functions used
+c
+ real*8 distdot
+ logical stopbis, brkdn
+ external distdot, stopbis, brkdn, bisinit
+c
+c local variables
+c
+ integer i
+ real*8 alpha, zz, zzm1
+ logical lp, rp
+ save
+c
+c check the status of the call
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 40, 50, 60, 70, 80, 90, 100, 110), ipar(10)
+c
+c initialization
+c
+ call bisinit(ipar,fpar,5*n,1,lp,rp,wk)
+ if (ipar(1).lt.0) return
+c
+c request for matrix vector multiplication A*x in the initialization
+c
+ ipar(1) = 1
+ ipar(8) = 1
+ ipar(9) = 1 + n
+ ipar(10) = 1
+ do i = 1, n
+ wk(i,1) = sol(i)
+ enddo
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ do i = 1, n
+ wk(i,1) = rhs(i) - wk(i,2)
+ enddo
+ fpar(11) = fpar(11) + n
+c
+c if left preconditioned, precondition the initial residual
+c
+ if (lp) then
+ ipar(1) = 3
+ ipar(10) = 2
+ return
+ endif
+c
+ 20 if (lp) then
+ do i = 1, n
+ wk(i,1) = wk(i,2)
+ enddo
+ endif
+c
+ zz = distdot(n,wk,1,wk,1)
+ fpar(11) = fpar(11) + 2 * n
+ fpar(3) = sqrt(zz)
+ fpar(5) = fpar(3)
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2 * n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ endif
+c
+c normal iteration begins here, first half of the iteration
+c computes the conjugate direction
+c
+ 30 continue
+c
+c request the caller to perform a A^T r --> wk(:,3)
+c
+ if (lp) then
+ ipar(1) = 4
+ ipar(8) = 1
+ if (rp) then
+ ipar(9) = n + n + 1
+ else
+ ipar(9) = 3*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 40 ipar(1) = 2
+ if (lp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = 1
+ endif
+ if (rp) then
+ ipar(9) = 3*n + 1
+ else
+ ipar(9) = n + n + 1
+ endif
+ ipar(10) = 4
+ return
+c
+ 50 if (rp) then
+ ipar(1) = 6
+ ipar(8) = ipar(9)
+ ipar(9) = n + n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+ 60 ipar(7) = ipar(7) + 1
+ zzm1 = zz
+ zz = distdot(n,wk(1,3),1,wk(1,3),1)
+ fpar(11) = fpar(11) + 2 * n
+ if (brkdn(zz,ipar)) goto 900
+ if (ipar(7).gt.3) then
+ alpha = zz / zzm1
+ do i = 1, n
+ wk(i,2) = wk(i,3) + alpha * wk(i,2)
+ enddo
+ fpar(11) = fpar(11) + 2 * n
+ else
+ do i = 1, n
+ wk(i,2) = wk(i,3)
+ enddo
+ endif
+c
+c before iteration can continue, we need to compute A * p
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = n + 1
+ if (lp) then
+ ipar(9) = ipar(8) + n
+ else
+ ipar(9) = 3*n + 1
+ endif
+ ipar(10) = 6
+ return
+ endif
+c
+ 70 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = n + 1
+ endif
+ if (lp) then
+ ipar(9) = 3*n+1
+ else
+ ipar(9) = n+n+1
+ endif
+ ipar(10) = 7
+ return
+c
+ 80 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = n+n+1
+ ipar(10) = 8
+ return
+ endif
+c
+c update the solution -- accumulate the changes in w(:,5)
+c
+ 90 ipar(7) = ipar(7) + 1
+ alpha = distdot(n,wk(1,3),1,wk(1,3),1)
+ fpar(11) = fpar(11) + 2 * n
+ if (brkdn(alpha,ipar)) goto 900
+ alpha = zz / alpha
+ do i = 1, n
+ wk(i,5) = wk(i,5) + alpha * wk(i,2)
+ wk(i,1) = wk(i,1) - alpha * wk(i,3)
+ enddo
+ fpar(11) = fpar(11) + 4 * n
+c
+c are we ready to terminate ?
+c
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 4*n + 1
+ ipar(9) = 3*n + 1
+ ipar(10) = 9
+ return
+ endif
+ 100 if (ipar(3).eq.999) then
+ if (ipar(11).eq.1) goto 900
+ else if (stopbis(n,ipar,1,fpar,wk,wk(1,2),alpha)) then
+ goto 900
+ endif
+c
+c continue the iterations
+c
+ goto 30
+c
+c clean up -- necessary to accommodate the right-preconditioning
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 4*n + 1
+ ipar(9) = ipar(8) - n
+ ipar(10) = 10
+ return
+ endif
+ 110 if (rp) then
+ call tidycg(n,ipar,fpar,sol,wk(1,4))
+ else
+ call tidycg(n,ipar,fpar,sol,wk(1,5))
+ endif
+ return
+ end
+c-----end-of-cgnr
+c-----------------------------------------------------------------------
+ subroutine bcg(n,rhs,sol,ipar,fpar,w)
+ implicit none
+ integer n, ipar(16)
+ real*8 fpar(16), rhs(n), sol(n), w(n,*)
+c-----------------------------------------------------------------------
+c BCG: Bi Conjugate Gradient method. Programmed with reverse
+c communication, see the header for detailed specifications
+c of the protocol.
+c
+c in this routine, before successful return, the fpar's are
+c fpar(3) == initial residual norm
+c fpar(4) == target residual norm
+c fpar(5) == current residual norm
+c fpar(7) == current rho (rhok = <r, s>)
+c fpar(8) == previous rho (rhokm1)
+c
+c w(:,1) -- r, the residual
+c w(:,2) -- s, the dual of the 'r'
+c w(:,3) -- p, the projection direction
+c w(:,4) -- q, the dual of the 'p'
+c w(:,5) -- v, a scratch vector to store A*p, or A*q.
+c w(:,6) -- a scratch vector to store intermediate results
+c w(:,7) -- changes in the solution
+c-----------------------------------------------------------------------
+c external routines used
+c
+ real*8 distdot
+ logical stopbis,brkdn
+ external distdot, stopbis, brkdn
+c
+ real*8 one
+ parameter(one=1.0D0)
+c
+c local variables
+c
+ integer i
+ real*8 alpha
+ logical rp, lp
+ save
+c
+c status of the program
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 40, 50, 60, 70, 80, 90, 100, 110), ipar(10)
+c
+c initialization, initial residual
+c
+ call bisinit(ipar,fpar,7*n,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c compute initial residual, request a matvecc
+c
+ ipar(1) = 1
+ ipar(8) = 3*n+1
+ ipar(9) = ipar(8) + n
+ do i = 1, n
+ w(i,4) = sol(i)
+ enddo
+ ipar(10) = 1
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ do i = 1, n
+ w(i,1) = rhs(i) - w(i,5)
+ enddo
+ fpar(11) = fpar(11) + n
+ if (lp) then
+ ipar(1) = 3
+ ipar(8) = 1
+ ipar(9) = n+1
+ ipar(10) = 2
+ return
+ endif
+c
+ 20 if (lp) then
+ do i = 1, n
+ w(i,1) = w(i,2)
+ w(i,3) = w(i,2)
+ w(i,4) = w(i,2)
+ enddo
+ else
+ do i = 1, n
+ w(i,2) = w(i,1)
+ w(i,3) = w(i,1)
+ w(i,4) = w(i,1)
+ enddo
+ endif
+c
+ fpar(7) = distdot(n,w,1,w,1)
+ fpar(11) = fpar(11) + 2 * n
+ fpar(3) = sqrt(fpar(7))
+ fpar(5) = fpar(3)
+ fpar(8) = one
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2 * n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ endif
+ if (ipar(3).ge.0.and.fpar(5).le.fpar(4)) then
+ fpar(6) = fpar(5)
+ goto 900
+ endif
+c
+c end of initialization, begin iteration, v = A p
+c
+ 30 if (rp) then
+ ipar(1) = 5
+ ipar(8) = n + n + 1
+ if (lp) then
+ ipar(9) = 4*n + 1
+ else
+ ipar(9) = 5*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 40 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = n + n + 1
+ endif
+ if (lp) then
+ ipar(9) = 5*n + 1
+ else
+ ipar(9) = 4*n + 1
+ endif
+ ipar(10) = 4
+ return
+c
+ 50 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 4*n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+ 60 ipar(7) = ipar(7) + 1
+ alpha = distdot(n,w(1,4),1,w(1,5),1)
+ fpar(11) = fpar(11) + 2 * n
+ if (brkdn(alpha,ipar)) goto 900
+ alpha = fpar(7) / alpha
+ do i = 1, n
+ w(i,7) = w(i,7) + alpha * w(i,3)
+ w(i,1) = w(i,1) - alpha * w(i,5)
+ enddo
+ fpar(11) = fpar(11) + 4 * n
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 6*n + 1
+ ipar(9) = 5*n + 1
+ ipar(10) = 6
+ return
+ endif
+ 70 if (ipar(3).eq.999) then
+ if (ipar(11).eq.1) goto 900
+ else if (stopbis(n,ipar,1,fpar,w,w(1,3),alpha)) then
+ goto 900
+ endif
+c
+c A^t * x
+c
+ if (lp) then
+ ipar(1) = 4
+ ipar(8) = 3*n + 1
+ if (rp) then
+ ipar(9) = 4*n + 1
+ else
+ ipar(9) = 5*n + 1
+ endif
+ ipar(10) = 7
+ return
+ endif
+c
+ 80 ipar(1) = 2
+ if (lp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = 3*n + 1
+ endif
+ if (rp) then
+ ipar(9) = 5*n + 1
+ else
+ ipar(9) = 4*n + 1
+ endif
+ ipar(10) = 8
+ return
+c
+ 90 if (rp) then
+ ipar(1) = 6
+ ipar(8) = ipar(9)
+ ipar(9) = 4*n + 1
+ ipar(10) = 9
+ return
+ endif
+c
+ 100 ipar(7) = ipar(7) + 1
+ do i = 1, n
+ w(i,2) = w(i,2) - alpha * w(i,5)
+ enddo
+ fpar(8) = fpar(7)
+ fpar(7) = distdot(n,w,1,w(1,2),1)
+ fpar(11) = fpar(11) + 4 * n
+ if (brkdn(fpar(7), ipar)) return
+ alpha = fpar(7) / fpar(8)
+ do i = 1, n
+ w(i,3) = w(i,1) + alpha * w(i,3)
+ w(i,4) = w(i,2) + alpha * w(i,4)
+ enddo
+ fpar(11) = fpar(11) + 4 * n
+c
+c end of the iterations
+c
+ goto 30
+c
+c some clean up job to do
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 6*n + 1
+ ipar(9) = ipar(8) - n
+ ipar(10) = 10
+ return
+ endif
+ 110 if (rp) then
+ call tidycg(n,ipar,fpar,sol,w(1,6))
+ else
+ call tidycg(n,ipar,fpar,sol,w(1,7))
+ endif
+ return
+c-----end-of-bcg
+ end
+c-----------------------------------------------------------------------
+ subroutine bcgstab(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(n,8)
+c-----------------------------------------------------------------------
+c BCGSTAB --- Bi Conjugate Gradient stabilized (BCGSTAB)
+c This is an improved BCG routine. (1) no matrix transpose is
+c involved. (2) the convergence is smoother.
+c
+c
+c Algorithm:
+c Initialization - r = b - A x, r0 = r, p = r, rho = (r0, r),
+c Iterate -
+c (1) v = A p
+c (2) alpha = rho / (r0, v)
+c (3) s = r - alpha v
+c (4) t = A s
+c (5) omega = (t, s) / (t, t)
+c (6) x = x + alpha * p + omega * s
+c (7) r = s - omega * t
+c convergence test goes here
+c (8) beta = rho, rho = (r0, r), beta = rho * alpha / (beta * omega)
+c p = r + beta * (p - omega * v)
+c
+c in this routine, before successful return, the fpar's are
+c fpar(3) == initial (preconditionied-)residual norm
+c fpar(4) == target (preconditionied-)residual norm
+c fpar(5) == current (preconditionied-)residual norm
+c fpar(6) == current residual norm or error
+c fpar(7) == current rho (rhok = <r, r0>)
+c fpar(8) == alpha
+c fpar(9) == omega
+c
+c Usage of the work space W
+c w(:, 1) = r0, the initial residual vector
+c w(:, 2) = r, current residual vector
+c w(:, 3) = s
+c w(:, 4) = t
+c w(:, 5) = v
+c w(:, 6) = p
+c w(:, 7) = tmp, used in preconditioning, etc.
+c w(:, 8) = delta x, the correction to the answer is accumulated
+c here, so that the right-preconditioning may be applied
+c at the end
+c-----------------------------------------------------------------------
+c external routines used
+c
+ real*8 distdot
+ logical stopbis, brkdn
+ external distdot, stopbis, brkdn
+c
+ real*8 one
+ parameter(one=1.0D0)
+c
+c local variables
+c
+ integer i
+ real*8 alpha,beta,rho,omega
+ logical lp, rp
+ save lp, rp
+c
+c where to go
+c
+ if (ipar(1).gt.0) then
+ goto (10, 20, 40, 50, 60, 70, 80, 90, 100, 110) ipar(10)
+ else if (ipar(1).lt.0) then
+ goto 900
+ endif
+c
+c call the initialization routine
+c
+ call bisinit(ipar,fpar,8*n,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c perform a matvec to compute the initial residual
+c
+ ipar(1) = 1
+ ipar(8) = 1
+ ipar(9) = 1 + n
+ do i = 1, n
+ w(i,1) = sol(i)
+ enddo
+ ipar(10) = 1
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ do i = 1, n
+ w(i,1) = rhs(i) - w(i,2)
+ enddo
+ fpar(11) = fpar(11) + n
+ if (lp) then
+ ipar(1) = 3
+ ipar(10) = 2
+ return
+ endif
+c
+ 20 if (lp) then
+ do i = 1, n
+ w(i,1) = w(i,2)
+ w(i,6) = w(i,2)
+ enddo
+ else
+ do i = 1, n
+ w(i,2) = w(i,1)
+ w(i,6) = w(i,1)
+ enddo
+ endif
+c
+ fpar(7) = distdot(n,w,1,w,1)
+ fpar(11) = fpar(11) + 2 * n
+ fpar(5) = sqrt(fpar(7))
+ fpar(3) = fpar(5)
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2 * n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ endif
+ if (ipar(3).ge.0) fpar(6) = fpar(5)
+ if (ipar(3).ge.0 .and. fpar(5).le.fpar(4) .and.
+ + ipar(3).ne.999) then
+ goto 900
+ endif
+c
+c beginning of the iterations
+c
+c Step (1), v = A p
+ 30 if (rp) then
+ ipar(1) = 5
+ ipar(8) = 5*n+1
+ if (lp) then
+ ipar(9) = 4*n + 1
+ else
+ ipar(9) = 6*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 40 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = 5*n+1
+ endif
+ if (lp) then
+ ipar(9) = 6*n + 1
+ else
+ ipar(9) = 4*n + 1
+ endif
+ ipar(10) = 4
+ return
+ 50 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 4*n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+ 60 ipar(7) = ipar(7) + 1
+c
+c step (2)
+ alpha = distdot(n,w(1,1),1,w(1,5),1)
+ fpar(11) = fpar(11) + 2 * n
+ if (brkdn(alpha, ipar)) goto 900
+ alpha = fpar(7) / alpha
+ fpar(8) = alpha
+c
+c step (3)
+ do i = 1, n
+ w(i,3) = w(i,2) - alpha * w(i,5)
+ enddo
+ fpar(11) = fpar(11) + 2 * n
+c
+c Step (4): the second matvec -- t = A s
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = n+n+1
+ if (lp) then
+ ipar(9) = ipar(8)+n
+ else
+ ipar(9) = 6*n + 1
+ endif
+ ipar(10) = 6
+ return
+ endif
+c
+ 70 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = n+n+1
+ endif
+ if (lp) then
+ ipar(9) = 6*n + 1
+ else
+ ipar(9) = 3*n + 1
+ endif
+ ipar(10) = 7
+ return
+ 80 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 3*n + 1
+ ipar(10) = 8
+ return
+ endif
+ 90 ipar(7) = ipar(7) + 1
+c
+c step (5)
+ omega = distdot(n,w(1,4),1,w(1,4),1)
+ fpar(11) = fpar(11) + n + n
+ if (brkdn(omega,ipar)) goto 900
+ omega = distdot(n,w(1,4),1,w(1,3),1) / omega
+ fpar(11) = fpar(11) + n + n
+ if (brkdn(omega,ipar)) goto 900
+ fpar(9) = omega
+ alpha = fpar(8)
+c
+c step (6) and (7)
+ do i = 1, n
+ w(i,7) = alpha * w(i,6) + omega * w(i,3)
+ w(i,8) = w(i,8) + w(i,7)
+ w(i,2) = w(i,3) - omega * w(i,4)
+ enddo
+ fpar(11) = fpar(11) + 6 * n + 1
+c
+c convergence test
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 7*n + 1
+ ipar(9) = 6*n + 1
+ ipar(10) = 9
+ return
+ endif
+ if (stopbis(n,ipar,2,fpar,w(1,2),w(1,7),one)) goto 900
+ 100 if (ipar(3).eq.999.and.ipar(11).eq.1) goto 900
+c
+c step (8): computing new p and rho
+ rho = fpar(7)
+ fpar(7) = distdot(n,w(1,2),1,w(1,1),1)
+ omega = fpar(9)
+ beta = fpar(7) * fpar(8) / (fpar(9) * rho)
+ do i = 1, n
+ w(i,6) = w(i,2) + beta * (w(i,6) - omega * w(i,5))
+ enddo
+ fpar(11) = fpar(11) + 6 * n + 3
+ if (brkdn(fpar(7),ipar)) goto 900
+c
+c end of an iteration
+c
+ goto 30
+c
+c some clean up job to do
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 7*n + 1
+ ipar(9) = ipar(8) - n
+ ipar(10) = 10
+ return
+ endif
+ 110 if (rp) then
+ call tidycg(n,ipar,fpar,sol,w(1,7))
+ else
+ call tidycg(n,ipar,fpar,sol,w(1,8))
+ endif
+c
+ return
+c-----end-of-bcgstab
+ end
+c-----------------------------------------------------------------------
+ subroutine tfqmr(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(n,*)
+c-----------------------------------------------------------------------
+c TFQMR --- transpose-free Quasi-Minimum Residual method
+c This is developed from BCG based on the principle of Quasi-Minimum
+c Residual, and it is transpose-free.
+c
+c It uses approximate residual norm.
+c
+c Internally, the fpar's are used as following:
+c fpar(3) --- initial residual norm squared
+c fpar(4) --- target residual norm squared
+c fpar(5) --- current residual norm squared
+c
+c w(:,1) -- R, residual
+c w(:,2) -- R0, the initial residual
+c w(:,3) -- W
+c w(:,4) -- Y
+c w(:,5) -- Z
+c w(:,6) -- A * Y
+c w(:,7) -- A * Z
+c w(:,8) -- V
+c w(:,9) -- D
+c w(:,10) -- intermediate results of preconditioning
+c w(:,11) -- changes in the solution
+c-----------------------------------------------------------------------
+c external functions
+c
+ real*8 distdot
+ logical brkdn
+ external brkdn, distdot
+c
+ real*8 one,zero
+ parameter(one=1.0D0,zero=0.0D0)
+c
+c local variables
+c
+ integer i
+ logical lp, rp
+ real*8 eta,sigma,theta,te,alpha,rho,tao
+ save
+c
+c status of the call (where to go)
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10,20,40,50,60,70,80,90,100,110), ipar(10)
+c
+c initializations
+c
+ call bisinit(ipar,fpar,11*n,2,lp,rp,w)
+ if (ipar(1).lt.0) return
+ ipar(1) = 1
+ ipar(8) = 1
+ ipar(9) = 1 + 6*n
+ do i = 1, n
+ w(i,1) = sol(i)
+ enddo
+ ipar(10) = 1
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ do i = 1, n
+ w(i,1) = rhs(i) - w(i,7)
+ w(i,9) = zero
+ enddo
+ fpar(11) = fpar(11) + n
+c
+ if (lp) then
+ ipar(1) = 3
+ ipar(9) = n+1
+ ipar(10) = 2
+ return
+ endif
+ 20 continue
+ if (lp) then
+ do i = 1, n
+ w(i,1) = w(i,2)
+ w(i,3) = w(i,2)
+ enddo
+ else
+ do i = 1, n
+ w(i,2) = w(i,1)
+ w(i,3) = w(i,1)
+ enddo
+ endif
+c
+ fpar(5) = sqrt(distdot(n,w,1,w,1))
+ fpar(3) = fpar(5)
+ tao = fpar(5)
+ fpar(11) = fpar(11) + n + n
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + n + n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * tao + fpar(2)
+ endif
+ te = zero
+ rho = zero
+c
+c begin iteration
+c
+ 30 sigma = rho
+ rho = distdot(n,w(1,2),1,w(1,3),1)
+ fpar(11) = fpar(11) + n + n
+ if (brkdn(rho,ipar)) goto 900
+ if (ipar(7).eq.1) then
+ alpha = zero
+ else
+ alpha = rho / sigma
+ endif
+ do i = 1, n
+ w(i,4) = w(i,3) + alpha * w(i,5)
+ enddo
+ fpar(11) = fpar(11) + n + n
+c
+c A * x -- with preconditioning
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = 3*n + 1
+ if (lp) then
+ ipar(9) = 5*n + 1
+ else
+ ipar(9) = 9*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 40 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = 3*n + 1
+ endif
+ if (lp) then
+ ipar(9) = 9*n + 1
+ else
+ ipar(9) = 5*n + 1
+ endif
+ ipar(10) = 4
+ return
+c
+ 50 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 5*n + 1
+ ipar(10) = 5
+ return
+ endif
+ 60 ipar(7) = ipar(7) + 1
+ do i = 1, n
+ w(i,8) = w(i,6) + alpha * (w(i,7) + alpha * w(i,8))
+ enddo
+ sigma = distdot(n,w(1,2),1,w(1,8),1)
+ fpar(11) = fpar(11) + 6 * n
+ if (brkdn(sigma,ipar)) goto 900
+ alpha = rho / sigma
+ do i = 1, n
+ w(i,5) = w(i,4) - alpha * w(i,8)
+ enddo
+ fpar(11) = fpar(11) + 2*n
+c
+c the second A * x
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = 4*n + 1
+ if (lp) then
+ ipar(9) = 6*n + 1
+ else
+ ipar(9) = 9*n + 1
+ endif
+ ipar(10) = 6
+ return
+ endif
+c
+ 70 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = 4*n + 1
+ endif
+ if (lp) then
+ ipar(9) = 9*n + 1
+ else
+ ipar(9) = 6*n + 1
+ endif
+ ipar(10) = 7
+ return
+c
+ 80 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 6*n + 1
+ ipar(10) = 8
+ return
+ endif
+ 90 ipar(7) = ipar(7) + 1
+ do i = 1, n
+ w(i,3) = w(i,3) - alpha * w(i,6)
+ enddo
+c
+c update I
+c
+ theta = distdot(n,w(1,3),1,w(1,3),1) / (tao*tao)
+ sigma = one / (one + theta)
+ tao = tao * sqrt(sigma * theta)
+ fpar(11) = fpar(11) + 4*n + 6
+ if (brkdn(tao,ipar)) goto 900
+ eta = sigma * alpha
+ sigma = te / alpha
+ te = theta * eta
+ do i = 1, n
+ w(i,9) = w(i,4) + sigma * w(i,9)
+ w(i,11) = w(i,11) + eta * w(i,9)
+ w(i,3) = w(i,3) - alpha * w(i,7)
+ enddo
+ fpar(11) = fpar(11) + 6 * n + 6
+ if (ipar(7).eq.1) then
+ if (ipar(3).eq.-1) then
+ fpar(3) = eta * sqrt(distdot(n,w(1,9),1,w(1,9),1))
+ fpar(4) = fpar(1)*fpar(3) + fpar(2)
+ fpar(11) = fpar(11) + n + n + 4
+ endif
+ endif
+c
+c update II
+c
+ theta = distdot(n,w(1,3),1,w(1,3),1) / (tao*tao)
+ sigma = one / (one + theta)
+ tao = tao * sqrt(sigma * theta)
+ fpar(11) = fpar(11) + 8 + 2*n
+ if (brkdn(tao,ipar)) goto 900
+ eta = sigma * alpha
+ sigma = te / alpha
+ te = theta * eta
+ do i = 1, n
+ w(i,9) = w(i,5) + sigma * w(i,9)
+ w(i,11) = w(i,11) + eta * w(i,9)
+ enddo
+ fpar(11) = fpar(11) + 4*n + 3
+c
+c this is the correct over-estimate
+c fpar(5) = sqrt(real(ipar(7)+1)) * tao
+c this is an approximation
+ fpar(5) = tao
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 10*n + 1
+ ipar(9) = 9*n + 1
+ ipar(10) = 9
+ return
+ else if (ipar(3).lt.0) then
+ fpar(6) = eta * sqrt(distdot(n,w(1,9),1,w(1,9),1))
+ fpar(11) = fpar(11) + n + n + 2
+ else
+ fpar(6) = fpar(5)
+ endif
+ if (fpar(6).gt.fpar(4) .and. (ipar(7).lt.ipar(6)
+ + .or. ipar(6).le.0)) goto 30
+ 100 if (ipar(3).eq.999.and.ipar(11).eq.0) goto 30
+c
+c clean up
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 10*n + 1
+ ipar(9) = ipar(8) - n
+ ipar(10) = 10
+ return
+ endif
+ 110 if (rp) then
+ call tidycg(n,ipar,fpar,sol,w(1,10))
+ else
+ call tidycg(n,ipar,fpar,sol,w(1,11))
+ endif
+c
+ return
+ end
+c-----end-of-tfqmr
+c-----------------------------------------------------------------------
+ subroutine fom(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(*)
+c-----------------------------------------------------------------------
+c This a version of The Full Orthogonalization Method (FOM)
+c implemented with reverse communication. It is a simple restart
+c version of the FOM algorithm and is implemented with plane
+c rotations similarly to GMRES.
+c
+c parameters:
+c -----------
+c ipar(5) == the dimension of the Krylov subspace
+c after every ipar(5) iterations, the FOM will restart with
+c the updated solution and recomputed residual vector.
+c
+c the work space in `w' is used as follows:
+c (1) the basis for the Krylov subspace, size n*(m+1);
+c (2) the Hessenberg matrix, only the upper triangular
+c portion of the matrix is stored, size (m+1)*m/2 + 1
+c (3) three vectors, all are of size m, they are
+c the cosine and sine of the Givens rotations, the third one holds
+c the residuals, it is of size m+1.
+c
+c TOTAL SIZE REQUIRED == (n+3)*(m+2) + (m+1)*m/2
+c Note: m == ipar(5). The default value for this is 15 if
+c ipar(5) <= 1.
+c-----------------------------------------------------------------------
+c external functions used
+c
+ real*8 distdot
+ external distdot
+c
+ real*8 one, zero
+ parameter(one=1.0D0, zero=0.0D0)
+c
+c local variables, ptr and p2 are temporary pointers,
+c hes points to the Hessenberg matrix,
+c vc, vs point to the cosines and sines of the Givens rotations
+c vrn points to the vectors of residual norms, more precisely
+c the right hand side of the least square problem solved.
+c
+ integer i,ii,idx,k,m,ptr,p2,prs,hes,vc,vs,vrn
+ real*8 alpha, c, s
+ logical lp, rp
+ save
+c
+c check the status of the call
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 30, 40, 50, 60, 70) ipar(10)
+c
+c initialization
+c
+ if (ipar(5).le.1) then
+ m = 15
+ else
+ m = ipar(5)
+ endif
+ idx = n * (m+1)
+ hes = idx + n
+ vc = hes + (m+1) * m / 2 + 1
+ vs = vc + m
+ vrn = vs + m
+ i = vrn + m + 1
+ call bisinit(ipar,fpar,i,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c request for matrix vector multiplication A*x in the initialization
+c
+ 100 ipar(1) = 1
+ ipar(8) = n+1
+ ipar(9) = 1
+ ipar(10) = 1
+ k = 0
+ do i = 1, n
+ w(n+i) = sol(i)
+ enddo
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ if (lp) then
+ do i = 1, n
+ w(n+i) = rhs(i) - w(i)
+ enddo
+ ipar(1) = 3
+ ipar(10) = 2
+ return
+ else
+ do i = 1, n
+ w(i) = rhs(i) - w(i)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+ 20 alpha = sqrt(distdot(n,w,1,w,1))
+ fpar(11) = fpar(11) + 2*n + 1
+ if (ipar(7).eq.1 .and. ipar(3).ne.999) then
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2*n
+ else
+ fpar(4) = fpar(1) * alpha + fpar(2)
+ endif
+ fpar(3) = alpha
+ endif
+ fpar(5) = alpha
+ w(vrn+1) = alpha
+ if (alpha.le.fpar(4) .and. ipar(3).ge.0 .and. ipar(3).ne.999) then
+ ipar(1) = 0
+ fpar(6) = alpha
+ goto 300
+ endif
+ alpha = one / alpha
+ do ii = 1, n
+ w(ii) = alpha * w(ii)
+ enddo
+ fpar(11) = fpar(11) + n
+c
+c request for (1) right preconditioning
+c (2) matrix vector multiplication
+c (3) left preconditioning
+c
+ 110 k = k + 1
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = k*n - n + 1
+ if (lp) then
+ ipar(9) = k*n + 1
+ else
+ ipar(9) = idx + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 30 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = (k-1)*n + 1
+ endif
+ if (lp) then
+ ipar(9) = idx + 1
+ else
+ ipar(9) = 1 + k*n
+ endif
+ ipar(10) = 4
+ return
+c
+ 40 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = k*n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+c Modified Gram-Schmidt orthogonalization procedure
+c temporary pointer 'ptr' is pointing to the current column of the
+c Hessenberg matrix. 'p2' points to the new basis vector
+c
+ 50 ipar(7) = ipar(7) + 1
+ ptr = k * (k - 1) / 2 + hes
+ p2 = ipar(9)
+ call mgsro(.false.,n,n,k+1,k+1,fpar(11),w,w(ptr+1),
+ $ ipar(12))
+ if (ipar(12).lt.0) goto 200
+c
+c apply previous Givens rotations to column.
+c
+ p2 = ptr + 1
+ do i = 1, k-1
+ ptr = p2
+ p2 = p2 + 1
+ alpha = w(ptr)
+ c = w(vc+i)
+ s = w(vs+i)
+ w(ptr) = c * alpha + s * w(p2)
+ w(p2) = c * w(p2) - s * alpha
+ enddo
+c
+c end of one Arnoldi iteration, alpha will store the estimated
+c residual norm at current stage
+c
+ fpar(11) = fpar(11) + 6*k
+
+ prs = vrn+k
+ alpha = fpar(5)
+ if (w(p2) .ne. zero) alpha = abs(w(p2+1)*w(prs)/w(p2))
+ fpar(5) = alpha
+c
+ if (k.ge.m .or. (ipar(3).ge.0 .and. alpha.le.fpar(4))
+ + .or. (ipar(6).gt.0 .and. ipar(7).ge.ipar(6)))
+ + goto 200
+c
+ call givens(w(p2), w(p2+1), c, s)
+ w(vc+k) = c
+ w(vs+k) = s
+ alpha = - s * w(prs)
+ w(prs) = c * w(prs)
+ w(prs+1) = alpha
+c
+ if (w(p2).ne.zero) goto 110
+c
+c update the approximate solution, first solve the upper triangular
+c system, temporary pointer ptr points to the Hessenberg matrix,
+c prs points to the right-hand-side (also the solution) of the system.
+c
+ 200 ptr = hes + k * (k + 1) / 2
+ prs = vrn + k
+ if (w(ptr).eq.zero) then
+c
+c if the diagonal elements of the last column is zero, reduce k by 1
+c so that a smaller trianguler system is solved
+c
+ k = k - 1
+ if (k.gt.0) then
+ goto 200
+ else
+ ipar(1) = -3
+ ipar(12) = -4
+ goto 300
+ endif
+ endif
+ w(prs) = w(prs) / w(ptr)
+ do i = k-1, 1, -1
+ ptr = ptr - i - 1
+ do ii = 1, i
+ w(vrn+ii) = w(vrn+ii) - w(prs) * w(ptr+ii)
+ enddo
+ prs = prs - 1
+ w(prs) = w(prs) / w(ptr)
+ enddo
+c
+ do ii = 1, n
+ w(ii) = w(ii) * w(prs)
+ enddo
+ do i = 1, k-1
+ prs = prs + 1
+ ptr = i*n
+ do ii = 1, n
+ w(ii) = w(ii) + w(prs) * w(ptr+ii)
+ enddo
+ enddo
+ fpar(11) = fpar(11) + 2*(k-1)*n + n + k*(k+1)
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = 1
+ ipar(9) = idx + 1
+ ipar(10) = 6
+ return
+ endif
+c
+ 60 if (rp) then
+ do i = 1, n
+ sol(i) = sol(i) + w(idx+i)
+ enddo
+ else
+ do i = 1, n
+ sol(i) = sol(i) + w(i)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+c process the complete stopping criteria
+c
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = -1
+ ipar(9) = idx + 1
+ ipar(10) = 7
+ return
+ else if (ipar(3).lt.0) then
+ if (ipar(7).le.m+1) then
+ fpar(3) = abs(w(vrn+1))
+ if (ipar(3).eq.-1) fpar(4) = fpar(1)*fpar(3)+fpar(2)
+ endif
+ alpha = abs(w(vrn+k))
+ endif
+ fpar(6) = alpha
+c
+c do we need to restart ?
+c
+ 70 if (ipar(12).ne.0) then
+ ipar(1) = -3
+ goto 300
+ endif
+ if (ipar(7).lt.ipar(6) .or. ipar(6).le.0) then
+ if (ipar(3).ne.999) then
+ if (fpar(6).gt.fpar(4)) goto 100
+ else
+ if (ipar(11).eq.0) goto 100
+ endif
+ endif
+c
+c termination, set error code, compute convergence rate
+c
+ if (ipar(1).gt.0) then
+ if (ipar(3).eq.999 .and. ipar(11).eq.1) then
+ ipar(1) = 0
+ else if (ipar(3).ne.999 .and. fpar(6).le.fpar(4)) then
+ ipar(1) = 0
+ else if (ipar(7).ge.ipar(6) .and. ipar(6).gt.0) then
+ ipar(1) = -1
+ else
+ ipar(1) = -10
+ endif
+ endif
+ 300 if (fpar(3).ne.zero .and. fpar(6).ne.zero .and.
+ + ipar(7).gt.ipar(13)) then
+ fpar(7) = log10(fpar(3) / fpar(6)) / dble(ipar(7)-ipar(13))
+ else
+ fpar(7) = zero
+ endif
+ return
+ end
+c-----end-of-fom--------------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine gmres(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(*)
+c-----------------------------------------------------------------------
+c This a version of GMRES implemented with reverse communication.
+c It is a simple restart version of the GMRES algorithm.
+c
+c ipar(5) == the dimension of the Krylov subspace
+c after every ipar(5) iterations, the GMRES will restart with
+c the updated solution and recomputed residual vector.
+c
+c the space of the `w' is used as follows:
+c (1) the basis for the Krylov subspace, size n*(m+1);
+c (2) the Hessenberg matrix, only the upper triangular
+c portion of the matrix is stored, size (m+1)*m/2 + 1
+c (3) three vectors, all are of size m, they are
+c the cosine and sine of the Givens rotations, the third one holds
+c the residuals, it is of size m+1.
+c
+c TOTAL SIZE REQUIRED == (n+3)*(m+2) + (m+1)*m/2
+c Note: m == ipar(5). The default value for this is 15 if
+c ipar(5) <= 1.
+c-----------------------------------------------------------------------
+c external functions used
+c
+ real*8 distdot
+ external distdot
+c
+ real*8 one, zero
+ parameter(one=1.0D0, zero=0.0D0)
+c
+c local variables, ptr and p2 are temporary pointers,
+c hess points to the Hessenberg matrix,
+c vc, vs point to the cosines and sines of the Givens rotations
+c vrn points to the vectors of residual norms, more precisely
+c the right hand side of the least square problem solved.
+c
+ integer i,ii,idx,k,m,ptr,p2,hess,vc,vs,vrn
+ real*8 alpha, c, s
+ logical lp, rp
+ save
+c
+c check the status of the call
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 30, 40, 50, 60, 70) ipar(10)
+c
+c initialization
+c
+ if (ipar(5).le.1) then
+ m = 15
+ else
+ m = ipar(5)
+ endif
+ idx = n * (m+1)
+ hess = idx + n
+ vc = hess + (m+1) * m / 2 + 1
+ vs = vc + m
+ vrn = vs + m
+ i = vrn + m + 1
+ call bisinit(ipar,fpar,i,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c request for matrix vector multiplication A*x in the initialization
+c
+ 100 ipar(1) = 1
+ ipar(8) = n+1
+ ipar(9) = 1
+ ipar(10) = 1
+ k = 0
+ do i = 1, n
+ w(n+i) = sol(i)
+ enddo
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ if (lp) then
+ do i = 1, n
+ w(n+i) = rhs(i) - w(i)
+ enddo
+ ipar(1) = 3
+ ipar(10) = 2
+ return
+ else
+ do i = 1, n
+ w(i) = rhs(i) - w(i)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+ 20 alpha = sqrt(distdot(n,w,1,w,1))
+ fpar(11) = fpar(11) + 2*n
+ if (ipar(7).eq.1 .and. ipar(3).ne.999) then
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2*n
+ else
+ fpar(4) = fpar(1) * alpha + fpar(2)
+ endif
+ fpar(3) = alpha
+ endif
+ fpar(5) = alpha
+ w(vrn+1) = alpha
+ if (alpha.le.fpar(4) .and. ipar(3).ge.0 .and. ipar(3).ne.999) then
+ ipar(1) = 0
+ fpar(6) = alpha
+ goto 300
+ endif
+ alpha = one / alpha
+ do ii = 1, n
+ w(ii) = alpha * w(ii)
+ enddo
+ fpar(11) = fpar(11) + n
+c
+c request for (1) right preconditioning
+c (2) matrix vector multiplication
+c (3) left preconditioning
+c
+ 110 k = k + 1
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = k*n - n + 1
+ if (lp) then
+ ipar(9) = k*n + 1
+ else
+ ipar(9) = idx + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 30 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = (k-1)*n + 1
+ endif
+ if (lp) then
+ ipar(9) = idx + 1
+ else
+ ipar(9) = 1 + k*n
+ endif
+ ipar(10) = 4
+ return
+c
+ 40 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = k*n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+c Modified Gram-Schmidt orthogonalization procedure
+c temporary pointer 'ptr' is pointing to the current column of the
+c Hessenberg matrix. 'p2' points to the new basis vector
+c
+ 50 ipar(7) = ipar(7) + 1
+ ptr = k * (k - 1) / 2 + hess
+ p2 = ipar(9)
+ call mgsro(.false.,n,n,k+1,k+1,fpar(11),w,w(ptr+1),
+ $ ipar(12))
+ if (ipar(12).lt.0) goto 200
+c
+c apply previous Givens rotations and generate a new one to eliminate
+c the subdiagonal element.
+c
+ p2 = ptr + 1
+ do i = 1, k-1
+ ptr = p2
+ p2 = p2 + 1
+ alpha = w(ptr)
+ c = w(vc+i)
+ s = w(vs+i)
+ w(ptr) = c * alpha + s * w(p2)
+ w(p2) = c * w(p2) - s * alpha
+ enddo
+ call givens(w(p2), w(p2+1), c, s)
+ w(vc+k) = c
+ w(vs+k) = s
+ p2 = vrn + k
+ alpha = - s * w(p2)
+ w(p2) = c * w(p2)
+ w(p2+1) = alpha
+c
+c end of one Arnoldi iteration, alpha will store the estimated
+c residual norm at current stage
+c
+ fpar(11) = fpar(11) + 6*k + 2
+ alpha = abs(alpha)
+ fpar(5) = alpha
+ if (k.lt.m .and. .not.(ipar(3).ge.0 .and. alpha.le.fpar(4))
+ + .and. (ipar(6).le.0 .or. ipar(7).lt.ipar(6))) goto 110
+c
+c update the approximate solution, first solve the upper triangular
+c system, temporary pointer ptr points to the Hessenberg matrix,
+c p2 points to the right-hand-side (also the solution) of the system.
+c
+ 200 ptr = hess + k * (k + 1) / 2
+ p2 = vrn + k
+ if (w(ptr).eq.zero) then
+c
+c if the diagonal elements of the last column is zero, reduce k by 1
+c so that a smaller trianguler system is solved [It should only
+c happen when the matrix is singular, and at most once!]
+c
+ k = k - 1
+ if (k.gt.0) then
+ goto 200
+ else
+ ipar(1) = -3
+ ipar(12) = -4
+ goto 300
+ endif
+ endif
+ w(p2) = w(p2) / w(ptr)
+ do i = k-1, 1, -1
+ ptr = ptr - i - 1
+ do ii = 1, i
+ w(vrn+ii) = w(vrn+ii) - w(p2) * w(ptr+ii)
+ enddo
+ p2 = p2 - 1
+ w(p2) = w(p2) / w(ptr)
+ enddo
+c
+ do ii = 1, n
+ w(ii) = w(ii) * w(p2)
+ enddo
+ do i = 1, k-1
+ ptr = i*n
+ p2 = p2 + 1
+ do ii = 1, n
+ w(ii) = w(ii) + w(p2) * w(ptr+ii)
+ enddo
+ enddo
+ fpar(11) = fpar(11) + 2*k*n - n + k*(k+1)
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = 1
+ ipar(9) = idx + 1
+ ipar(10) = 6
+ return
+ endif
+c
+ 60 if (rp) then
+ do i = 1, n
+ sol(i) = sol(i) + w(idx+i)
+ enddo
+ else
+ do i = 1, n
+ sol(i) = sol(i) + w(i)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+c process the complete stopping criteria
+c
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = -1
+ ipar(9) = idx + 1
+ ipar(10) = 7
+ return
+ else if (ipar(3).lt.0) then
+ if (ipar(7).le.m+1) then
+ fpar(3) = abs(w(vrn+1))
+ if (ipar(3).eq.-1) fpar(4) = fpar(1)*fpar(3)+fpar(2)
+ endif
+ fpar(6) = abs(w(vrn+k))
+ else
+ fpar(6) = fpar(5)
+ endif
+c
+c do we need to restart ?
+c
+ 70 if (ipar(12).ne.0) then
+ ipar(1) = -3
+ goto 300
+ endif
+ if ((ipar(7).lt.ipar(6) .or. ipar(6).le.0) .and.
+ + ((ipar(3).eq.999.and.ipar(11).eq.0) .or.
+ + (ipar(3).ne.999.and.fpar(6).gt.fpar(4)))) goto 100
+c
+c termination, set error code, compute convergence rate
+c
+ if (ipar(1).gt.0) then
+ if (ipar(3).eq.999 .and. ipar(11).eq.1) then
+ ipar(1) = 0
+ else if (ipar(3).ne.999 .and. fpar(6).le.fpar(4)) then
+ ipar(1) = 0
+ else if (ipar(7).ge.ipar(6) .and. ipar(6).gt.0) then
+ ipar(1) = -1
+ else
+ ipar(1) = -10
+ endif
+ endif
+ 300 if (fpar(3).ne.zero .and. fpar(6).ne.zero .and.
+ + ipar(7).gt.ipar(13)) then
+ fpar(7) = log10(fpar(3) / fpar(6)) / dble(ipar(7)-ipar(13))
+ else
+ fpar(7) = zero
+ endif
+ return
+ end
+c-----end-of-gmres
+c-----------------------------------------------------------------------
+ subroutine dqgmres(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(*)
+c-----------------------------------------------------------------------
+c DQGMRES -- Flexible Direct version of Quasi-General Minimum
+c Residual method. The right preconditioning can be varied from
+c step to step.
+c
+c Work space used = n + lb * (2*n+4)
+c where lb = ipar(5) + 1 (default 16 if ipar(5) <= 1)
+c-----------------------------------------------------------------------
+c local variables
+c
+ real*8 one,zero,deps
+ parameter(one=1.0D0,zero=0.0D0)
+ parameter(deps=1.0D-33)
+c
+ integer i,ii,j,jp1,j0,k,ptrw,ptrv,iv,iw,ic,is,ihm,ihd,lb,ptr
+ real*8 alpha,beta,psi,c,s,distdot
+ logical lp,rp,full
+ external distdot,bisinit
+ save
+c
+c where to go
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 40, 50, 60, 70) ipar(10)
+c
+c locations of the work arrays. The arrangement is as follows:
+c w(1:n) -- temporary storage for the results of the preconditioning
+c w(iv+1:iw) -- the V's
+c w(iw+1:ic) -- the W's
+c w(ic+1:is) -- the COSINEs of the Givens rotations
+c w(is+1:ihm) -- the SINEs of the Givens rotations
+c w(ihm+1:ihd) -- the last column of the Hessenberg matrix
+c w(ihd+1:i) -- the inverse of the diagonals of the Hessenberg matrix
+c
+ if (ipar(5).le.1) then
+ lb = 16
+ else
+ lb = ipar(5) + 1
+ endif
+ iv = n
+ iw = iv + lb * n
+ ic = iw + lb * n
+ is = ic + lb
+ ihm = is + lb
+ ihd = ihm + lb
+ i = ihd + lb
+c
+c parameter check, initializations
+c
+ full = .false.
+ call bisinit(ipar,fpar,i,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+ ipar(1) = 1
+ if (lp) then
+ do ii = 1, n
+ w(iv+ii) = sol(ii)
+ enddo
+ ipar(8) = iv+1
+ ipar(9) = 1
+ else
+ do ii = 1, n
+ w(ii) = sol(ii)
+ enddo
+ ipar(8) = 1
+ ipar(9) = iv+1
+ endif
+ ipar(10) = 1
+ return
+c
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ if (lp) then
+ do i = 1, n
+ w(i) = rhs(i) - w(i)
+ enddo
+ ipar(1) = 3
+ ipar(8) = 1
+ ipar(9) = iv+1
+ ipar(10) = 2
+ return
+ else
+ do i = 1, n
+ w(iv+i) = rhs(i) - w(iv+i)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+ 20 alpha = sqrt(distdot(n, w(iv+1), 1, w(iv+1), 1))
+ fpar(11) = fpar(11) + (n + n)
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2*n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * alpha + fpar(2)
+ endif
+ fpar(3) = alpha
+ fpar(5) = alpha
+ psi = alpha
+ if (alpha.le.fpar(4)) then
+ ipar(1) = 0
+ fpar(6) = alpha
+ goto 80
+ endif
+ alpha = one / alpha
+ do i = 1, n
+ w(iv+i) = w(iv+i) * alpha
+ enddo
+ fpar(11) = fpar(11) + n
+ j = 0
+c
+c iterations start here
+c
+ 30 j = j + 1
+ if (j.gt.lb) j = j - lb
+ jp1 = j + 1
+ if (jp1.gt.lb) jp1 = jp1 - lb
+ ptrv = iv + (j-1)*n + 1
+ ptrw = iv + (jp1-1)*n + 1
+ if (.not.full) then
+ if (j.gt.jp1) full = .true.
+ endif
+ if (full) then
+ j0 = jp1+1
+ if (j0.gt.lb) j0 = j0 - lb
+ else
+ j0 = 1
+ endif
+c
+c request the caller to perform matrix-vector multiplication and
+c preconditioning
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = ptrv
+ ipar(9) = ptrv + iw - iv
+ ipar(10) = 3
+ return
+ else
+ do i = 0, n-1
+ w(ptrv+iw-iv+i) = w(ptrv+i)
+ enddo
+ endif
+c
+ 40 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = ptrv
+ endif
+ if (lp) then
+ ipar(9) = 1
+ else
+ ipar(9) = ptrw
+ endif
+ ipar(10) = 4
+ return
+c
+ 50 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = ptrw
+ ipar(10) = 5
+ return
+ endif
+c
+c compute the last column of the Hessenberg matrix
+c modified Gram-schmidt procedure, orthogonalize against (lb-1)
+c previous vectors
+c
+ 60 continue
+ call mgsro(full,n,n,lb,jp1,fpar(11),w(iv+1),w(ihm+1),
+ $ ipar(12))
+ if (ipar(12).lt.0) then
+ ipar(1) = -3
+ goto 80
+ endif
+ beta = w(ihm+jp1)
+c
+c incomplete factorization (QR factorization through Givens rotations)
+c (1) apply previous rotations [(lb-1) of them]
+c (2) generate a new rotation
+c
+ if (full) then
+ w(ihm+jp1) = w(ihm+j0) * w(is+jp1)
+ w(ihm+j0) = w(ihm+j0) * w(ic+jp1)
+ endif
+ i = j0
+ do while (i.ne.j)
+ k = i+1
+ if (k.gt.lb) k = k - lb
+ c = w(ic+i)
+ s = w(is+i)
+ alpha = w(ihm+i)
+ w(ihm+i) = c * alpha + s * w(ihm+k)
+ w(ihm+k) = c * w(ihm+k) - s * alpha
+ i = k
+ enddo
+ call givens(w(ihm+j), beta, c, s)
+ if (full) then
+ fpar(11) = fpar(11) + 6 * lb
+ else
+ fpar(11) = fpar(11) + 6 * j
+ endif
+c
+c detect whether diagonal element of this column is zero
+c
+ if (abs(w(ihm+j)).lt.deps) then
+ ipar(1) = -3
+ goto 80
+ endif
+ w(ihd+j) = one / w(ihm+j)
+ w(ic+j) = c
+ w(is+j) = s
+c
+c update the W's (the conjugate directions) -- essentially this is one
+c step of triangular solve.
+c
+ ptrw = iw+(j-1)*n + 1
+ if (full) then
+ do i = j+1, lb
+ alpha = -w(ihm+i)*w(ihd+i)
+ ptr = iw+(i-1)*n+1
+ do ii = 0, n-1
+ w(ptrw+ii) = w(ptrw+ii) + alpha * w(ptr+ii)
+ enddo
+ enddo
+ endif
+ do i = 1, j-1
+ alpha = -w(ihm+i)*w(ihd+i)
+ ptr = iw+(i-1)*n+1
+ do ii = 0, n-1
+ w(ptrw+ii) = w(ptrw+ii) + alpha * w(ptr+ii)
+ enddo
+ enddo
+c
+c update the solution to the linear system
+c
+ alpha = psi * c * w(ihd+j)
+ psi = - s * psi
+ do i = 1, n
+ sol(i) = sol(i) + alpha * w(ptrw-1+i)
+ enddo
+ if (full) then
+ fpar(11) = fpar(11) + lb * (n+n)
+ else
+ fpar(11) = fpar(11) + j * (n+n)
+ endif
+c
+c determine whether to continue,
+c compute the desired error/residual norm
+c
+ ipar(7) = ipar(7) + 1
+ fpar(5) = abs(psi)
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = -1
+ ipar(9) = 1
+ ipar(10) = 6
+ return
+ endif
+ if (ipar(3).lt.0) then
+ alpha = abs(alpha)
+ if (ipar(7).eq.2 .and. ipar(3).eq.-1) then
+ fpar(3) = alpha*sqrt(distdot(n, w(ptrw), 1, w(ptrw), 1))
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ fpar(6) = fpar(3)
+ else
+ fpar(6) = alpha*sqrt(distdot(n, w(ptrw), 1, w(ptrw), 1))
+ endif
+ fpar(11) = fpar(11) + 2 * n
+ else
+ fpar(6) = fpar(5)
+ endif
+ if (ipar(1).ge.0 .and. fpar(6).gt.fpar(4) .and. (ipar(6).le.0
+ + .or. ipar(7).lt.ipar(6))) goto 30
+ 70 if (ipar(3).eq.999 .and. ipar(11).eq.0) goto 30
+c
+c clean up the iterative solver
+c
+ 80 fpar(7) = zero
+ if (fpar(3).ne.zero .and. fpar(6).ne.zero .and.
+ + ipar(7).gt.ipar(13))
+ + fpar(7) = log10(fpar(3) / fpar(6)) / dble(ipar(7)-ipar(13))
+ if (ipar(1).gt.0) then
+ if (ipar(3).eq.999 .and. ipar(11).ne.0) then
+ ipar(1) = 0
+ else if (fpar(6).le.fpar(4)) then
+ ipar(1) = 0
+ else if (ipar(6).gt.0 .and. ipar(7).ge.ipar(6)) then
+ ipar(1) = -1
+ else
+ ipar(1) = -10
+ endif
+ endif
+ return
+ end
+c-----end-of-dqgmres
+c-----------------------------------------------------------------------
+ subroutine fgmres(n, rhs, sol, ipar, fpar, w)
+ implicit none
+ integer n, ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(*)
+c-----------------------------------------------------------------------
+c This a version of FGMRES implemented with reverse communication.
+c
+c ipar(5) == the dimension of the Krylov subspace
+c
+c the space of the `w' is used as follows:
+c >> V: the bases for the Krylov subspace, size n*(m+1);
+c >> W: the above bases after (left-)multiplying with the
+c right-preconditioner inverse, size m*n;
+c >> a temporary vector of size n;
+c >> the Hessenberg matrix, only the upper triangular portion
+c of the matrix is stored, size (m+1)*m/2 + 1
+c >> three vectors, first two are of size m, they are the cosine
+c and sine of the Givens rotations, the third one holds the
+c residuals, it is of size m+1.
+c
+c TOTAL SIZE REQUIRED == n*(2m+1) + (m+1)*m/2 + 3*m + 2
+c Note: m == ipar(5). The default value for this is 15 if
+c ipar(5) <= 1.
+c-----------------------------------------------------------------------
+c external functions used
+c
+ real*8 distdot
+ external distdot
+c
+ real*8 one, zero
+ parameter(one=1.0D0, zero=0.0D0)
+c
+c local variables, ptr and p2 are temporary pointers,
+c hess points to the Hessenberg matrix,
+c vc, vs point to the cosines and sines of the Givens rotations
+c vrn points to the vectors of residual norms, more precisely
+c the right hand side of the least square problem solved.
+c
+ integer i,ii,idx,iz,k,m,ptr,p2,hess,vc,vs,vrn
+ real*8 alpha, c, s
+ logical lp, rp
+ save
+c
+c check the status of the call
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (10, 20, 30, 40, 50, 60) ipar(10)
+c
+c initialization
+c
+ if (ipar(5).le.1) then
+ m = 15
+ else
+ m = ipar(5)
+ endif
+ idx = n * (m+1)
+ iz = idx + n
+ hess = iz + n*m
+ vc = hess + (m+1) * m / 2 + 1
+ vs = vc + m
+ vrn = vs + m
+ i = vrn + m + 1
+ call bisinit(ipar,fpar,i,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+c
+c request for matrix vector multiplication A*x in the initialization
+c
+ 100 ipar(1) = 1
+ ipar(8) = n+1
+ ipar(9) = 1
+ ipar(10) = 1
+ k = 0
+ do ii = 1, n
+ w(ii+n) = sol(ii)
+ enddo
+ return
+ 10 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ fpar(11) = fpar(11) + n
+ if (lp) then
+ do i = 1, n
+ w(n+i) = rhs(i) - w(i)
+ enddo
+ ipar(1) = 3
+ ipar(10) = 2
+ return
+ else
+ do i = 1, n
+ w(i) = rhs(i) - w(i)
+ enddo
+ endif
+c
+ 20 alpha = sqrt(distdot(n,w,1,w,1))
+ fpar(11) = fpar(11) + n + n
+ if (ipar(7).eq.1 .and. ipar(3).ne.999) then
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2*n
+ else
+ fpar(4) = fpar(1) * alpha + fpar(2)
+ endif
+ fpar(3) = alpha
+ endif
+ fpar(5) = alpha
+ w(vrn+1) = alpha
+ if (alpha.le.fpar(4) .and. ipar(3).ge.0 .and. ipar(3).ne.999) then
+ ipar(1) = 0
+ fpar(6) = alpha
+ goto 300
+ endif
+ alpha = one / alpha
+ do ii = 1, n
+ w(ii) = w(ii) * alpha
+ enddo
+ fpar(11) = fpar(11) + n
+c
+c request for (1) right preconditioning
+c (2) matrix vector multiplication
+c (3) left preconditioning
+c
+ 110 k = k + 1
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = k*n - n + 1
+ ipar(9) = iz + ipar(8)
+ ipar(10) = 3
+ return
+ else
+ do ii = 0, n-1
+ w(iz+k*n-ii) = w(k*n-ii)
+ enddo
+ endif
+c
+ 30 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = (k-1)*n + 1
+ endif
+ if (lp) then
+ ipar(9) = idx + 1
+ else
+ ipar(9) = 1 + k*n
+ endif
+ ipar(10) = 4
+ return
+c
+ 40 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = k*n + 1
+ ipar(10) = 5
+ return
+ endif
+c
+c Modified Gram-Schmidt orthogonalization procedure
+c temporary pointer 'ptr' is pointing to the current column of the
+c Hessenberg matrix. 'p2' points to the new basis vector
+c
+ 50 ptr = k * (k - 1) / 2 + hess
+ p2 = ipar(9)
+ ipar(7) = ipar(7) + 1
+ call mgsro(.false.,n,n,k+1,k+1,fpar(11),w,w(ptr+1),
+ $ ipar(12))
+ if (ipar(12).lt.0) goto 200
+c
+c apply previous Givens rotations and generate a new one to eliminate
+c the subdiagonal element.
+c
+ p2 = ptr + 1
+ do i = 1, k-1
+ ptr = p2
+ p2 = p2 + 1
+ alpha = w(ptr)
+ c = w(vc+i)
+ s = w(vs+i)
+ w(ptr) = c * alpha + s * w(p2)
+ w(p2) = c * w(p2) - s * alpha
+ enddo
+ call givens(w(p2), w(p2+1), c, s)
+ w(vc+k) = c
+ w(vs+k) = s
+ p2 = vrn + k
+ alpha = - s * w(p2)
+ w(p2) = c * w(p2)
+ w(p2+1) = alpha
+ fpar(11) = fpar(11) + 6 * k
+c
+c end of one Arnoldi iteration, alpha will store the estimated
+c residual norm at current stage
+c
+ alpha = abs(alpha)
+ fpar(5) = alpha
+ if (k.lt.m .and. .not.(ipar(3).ge.0 .and. alpha.le.fpar(4))
+ + .and. (ipar(6).le.0 .or. ipar(7).lt.ipar(6))) goto 110
+c
+c update the approximate solution, first solve the upper triangular
+c system, temporary pointer ptr points to the Hessenberg matrix,
+c p2 points to the right-hand-side (also the solution) of the system.
+c
+ 200 ptr = hess + k * (k + 1 ) / 2
+ p2 = vrn + k
+ if (w(ptr).eq.zero) then
+c
+c if the diagonal elements of the last column is zero, reduce k by 1
+c so that a smaller trianguler system is solved [It should only
+c happen when the matrix is singular!]
+c
+ k = k - 1
+ if (k.gt.0) then
+ goto 200
+ else
+ ipar(1) = -3
+ ipar(12) = -4
+ goto 300
+ endif
+ endif
+ w(p2) = w(p2) / w(ptr)
+ do i = k-1, 1, -1
+ ptr = ptr - i - 1
+ do ii = 1, i
+ w(vrn+ii) = w(vrn+ii) - w(p2) * w(ptr+ii)
+ enddo
+ p2 = p2 - 1
+ w(p2) = w(p2) / w(ptr)
+ enddo
+c
+ do i = 0, k-1
+ ptr = iz+i*n
+ do ii = 1, n
+ sol(ii) = sol(ii) + w(p2)*w(ptr+ii)
+ enddo
+ p2 = p2 + 1
+ enddo
+ fpar(11) = fpar(11) + 2*k*n + k*(k+1)
+c
+c process the complete stopping criteria
+c
+ if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = -1
+ ipar(9) = idx + 1
+ ipar(10) = 6
+ return
+ else if (ipar(3).lt.0) then
+ if (ipar(7).le.m+1) then
+ fpar(3) = abs(w(vrn+1))
+ if (ipar(3).eq.-1) fpar(4) = fpar(1)*fpar(3)+fpar(2)
+ endif
+ fpar(6) = abs(w(vrn+k))
+ else if (ipar(3).ne.999) then
+ fpar(6) = fpar(5)
+ endif
+c
+c do we need to restart ?
+c
+ 60 if (ipar(12).ne.0) then
+ ipar(1) = -3
+ goto 300
+ endif
+ if ((ipar(7).lt.ipar(6) .or. ipar(6).le.0).and.
+ + ((ipar(3).eq.999.and.ipar(11).eq.0) .or.
+ + (ipar(3).ne.999.and.fpar(6).gt.fpar(4)))) goto 100
+c
+c termination, set error code, compute convergence rate
+c
+ if (ipar(1).gt.0) then
+ if (ipar(3).eq.999 .and. ipar(11).eq.1) then
+ ipar(1) = 0
+ else if (ipar(3).ne.999 .and. fpar(6).le.fpar(4)) then
+ ipar(1) = 0
+ else if (ipar(7).ge.ipar(6) .and. ipar(6).gt.0) then
+ ipar(1) = -1
+ else
+ ipar(1) = -10
+ endif
+ endif
+ 300 if (fpar(3).ne.zero .and. fpar(6).ne.zero .and.
+ $ ipar(7).gt.ipar(13)) then
+ fpar(7) = log10(fpar(3) / fpar(6)) / dble(ipar(7)-ipar(13))
+ else
+ fpar(7) = zero
+ endif
+ return
+ end
+c-----end-of-fgmres
+c-----------------------------------------------------------------------
+ subroutine dbcg (n,rhs,sol,ipar,fpar,w)
+ implicit none
+ integer n,ipar(16)
+ real*8 rhs(n), sol(n), fpar(16), w(n,*)
+c-----------------------------------------------------------------------
+c Quasi GMRES method for solving a linear
+c system of equations a * sol = y. double precision version.
+c this version is without restarting and without preconditioning.
+c parameters :
+c -----------
+c n = dimension of the problem
+c
+c y = w(:,1) a temporary storage used for various operations
+c z = w(:,2) a work vector of length n.
+c v = w(:,3:4) size n x 2
+c w = w(:,5:6) size n x 2
+c p = w(:,7:9) work array of dimension n x 3
+c del x = w(:,10) accumulation of the changes in solution
+c tmp = w(:,11) a temporary vector used to hold intermediate result of
+c preconditioning, etc.
+c
+c sol = the solution of the problem . at input sol must contain an
+c initial guess to the solution.
+c *** note: y is destroyed on return.
+c
+c-----------------------------------------------------------------------
+c subroutines and functions called:
+c 1) matrix vector multiplication and preconditioning through reverse
+c communication
+c
+c 2) implu, uppdir, distdot (blas)
+c-----------------------------------------------------------------------
+c aug. 1983 version. author youcef saad. yale university computer
+c science dept. some changes made july 3, 1986.
+c references: siam j. sci. stat. comp., vol. 5, pp. 203-228 (1984)
+c-----------------------------------------------------------------------
+c local variables
+c
+ real*8 one,zero
+ parameter(one=1.0D0,zero=0.0D0)
+c
+ real*8 t,sqrt,distdot,ss,res,beta,ss1,delta,x,zeta,umm
+ integer k,j,i,i2,ip2,ju,lb,lbm1,np,indp
+ logical lp,rp,full, perm(3)
+ real*8 ypiv(3),u(3),usav(3)
+ external tidycg
+ save
+c
+c where to go
+c
+ if (ipar(1).le.0) ipar(10) = 0
+ goto (110, 120, 130, 140, 150, 160, 170, 180, 190, 200) ipar(10)
+c
+c initialization, parameter checking, clear the work arrays
+c
+ call bisinit(ipar,fpar,11*n,1,lp,rp,w)
+ if (ipar(1).lt.0) return
+ perm(1) = .false.
+ perm(2) = .false.
+ perm(3) = .false.
+ usav(1) = zero
+ usav(2) = zero
+ usav(3) = zero
+ ypiv(1) = zero
+ ypiv(2) = zero
+ ypiv(3) = zero
+c-----------------------------------------------------------------------
+c initialize constants for outer loop :
+c-----------------------------------------------------------------------
+ lb = 3
+ lbm1 = 2
+c
+c get initial residual vector and norm
+c
+ ipar(1) = 1
+ ipar(8) = 1
+ ipar(9) = 1 + n
+ do i = 1, n
+ w(i,1) = sol(i)
+ enddo
+ ipar(10) = 1
+ return
+ 110 ipar(7) = ipar(7) + 1
+ ipar(13) = ipar(13) + 1
+ if (lp) then
+ do i = 1, n
+ w(i,1) = rhs(i) - w(i,2)
+ enddo
+ ipar(1) = 3
+ ipar(8) = 1
+ ipar(9) = n+n+1
+ ipar(10) = 2
+ return
+ else
+ do i = 1, n
+ w(i,3) = rhs(i) - w(i,2)
+ enddo
+ endif
+ fpar(11) = fpar(11) + n
+c
+ 120 fpar(3) = sqrt(distdot(n,w(1,3),1,w(1,3),1))
+ fpar(11) = fpar(11) + n + n
+ fpar(5) = fpar(3)
+ fpar(7) = fpar(3)
+ zeta = fpar(3)
+ if (abs(ipar(3)).eq.2) then
+ fpar(4) = fpar(1) * sqrt(distdot(n,rhs,1,rhs,1)) + fpar(2)
+ fpar(11) = fpar(11) + 2*n
+ else if (ipar(3).ne.999) then
+ fpar(4) = fpar(1) * zeta + fpar(2)
+ endif
+ if (ipar(3).ge.0.and.fpar(5).le.fpar(4)) then
+ fpar(6) = fpar(5)
+ goto 900
+ endif
+c
+c normalize first arnoldi vector
+c
+ t = one/zeta
+ do 22 k=1,n
+ w(k,3) = w(k,3)*t
+ w(k,5) = w(k,3)
+ 22 continue
+ fpar(11) = fpar(11) + n
+c
+c initialize constants for main loop
+c
+ beta = zero
+ delta = zero
+ i2 = 1
+ indp = 0
+ i = 0
+c
+c main loop: i = index of the loop.
+c
+c-----------------------------------------------------------------------
+ 30 i = i + 1
+c
+ if (rp) then
+ ipar(1) = 5
+ ipar(8) = (1+i2)*n+1
+ if (lp) then
+ ipar(9) = 1
+ else
+ ipar(9) = 10*n + 1
+ endif
+ ipar(10) = 3
+ return
+ endif
+c
+ 130 ipar(1) = 1
+ if (rp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = (1+i2)*n + 1
+ endif
+ if (lp) then
+ ipar(9) = 10*n + 1
+ else
+ ipar(9) = 1
+ endif
+ ipar(10) = 4
+ return
+c
+ 140 if (lp) then
+ ipar(1) = 3
+ ipar(8) = ipar(9)
+ ipar(9) = 1
+ ipar(10) = 5
+ return
+ endif
+c
+c A^t * x
+c
+ 150 ipar(7) = ipar(7) + 1
+ if (lp) then
+ ipar(1) = 4
+ ipar(8) = (3+i2)*n + 1
+ if (rp) then
+ ipar(9) = n + 1
+ else
+ ipar(9) = 10*n + 1
+ endif
+ ipar(10) = 6
+ return
+ endif
+c
+ 160 ipar(1) = 2
+ if (lp) then
+ ipar(8) = ipar(9)
+ else
+ ipar(8) = (3+i2)*n + 1
+ endif
+ if (rp) then
+ ipar(9) = 10*n + 1
+ else
+ ipar(9) = n + 1
+ endif
+ ipar(10) = 7
+ return
+c
+ 170 if (rp) then
+ ipar(1) = 6
+ ipar(8) = ipar(9)
+ ipar(9) = n + 1
+ ipar(10) = 8
+ return
+ endif
+c-----------------------------------------------------------------------
+c orthogonalize current v against previous v's and
+c determine relevant part of i-th column of u(.,.) the
+c upper triangular matrix --
+c-----------------------------------------------------------------------
+ 180 ipar(7) = ipar(7) + 1
+ u(1) = zero
+ ju = 1
+ k = i2
+ if (i .le. lbm1) ju = 0
+ if (i .lt. lb) k = 0
+ 31 if (k .eq. lbm1) k=0
+ k=k+1
+c
+ if (k .ne. i2) then
+ ss = delta
+ ss1 = beta
+ ju = ju + 1
+ u(ju) = ss
+ else
+ ss = distdot(n,w(1,1),1,w(1,4+k),1)
+ fpar(11) = fpar(11) + 2*n
+ ss1= ss
+ ju = ju + 1
+ u(ju) = ss
+ endif
+c
+ do 32 j=1,n
+ w(j,1) = w(j,1) - ss*w(j,k+2)
+ w(j,2) = w(j,2) - ss1*w(j,k+4)
+ 32 continue
+ fpar(11) = fpar(11) + 4*n
+c
+ if (k .ne. i2) goto 31
+c
+c end of Mod. Gram. Schmidt loop
+c
+ t = distdot(n,w(1,2),1,w(1,1),1)
+c
+ beta = sqrt(abs(t))
+ delta = t/beta
+c
+ ss = one/beta
+ ss1 = one/ delta
+c
+c normalize and insert new vectors
+c
+ ip2 = i2
+ if (i2 .eq. lbm1) i2=0
+ i2=i2+1
+c
+ do 315 j=1,n
+ w(j,i2+2)=w(j,1)*ss
+ w(j,i2+4)=w(j,2)*ss1
+ 315 continue
+ fpar(11) = fpar(11) + 4*n
+c-----------------------------------------------------------------------
+c end of orthogonalization.
+c now compute the coefficients u(k) of the last
+c column of the l . u factorization of h .
+c-----------------------------------------------------------------------
+ np = min0(i,lb)
+ full = (i .ge. lb)
+ call implu(np, umm, beta, ypiv, u, perm, full)
+c-----------------------------------------------------------------------
+c update conjugate directions and solution
+c-----------------------------------------------------------------------
+ do 33 k=1,n
+ w(k,1) = w(k,ip2+2)
+ 33 continue
+ call uppdir(n, w(1,7), np, lb, indp, w, u, usav, fpar(11))
+c-----------------------------------------------------------------------
+ if (i .eq. 1) goto 34
+ j = np - 1
+ if (full) j = j-1
+ if (.not.perm(j)) zeta = -zeta*ypiv(j)
+ 34 x = zeta/u(np)
+ if (perm(np))goto 36
+ do 35 k=1,n
+ w(k,10) = w(k,10) + x*w(k,1)
+ 35 continue
+ fpar(11) = fpar(11) + 2 * n
+c-----------------------------------------------------------------------
+ 36 if (ipar(3).eq.999) then
+ ipar(1) = 10
+ ipar(8) = 9*n + 1
+ ipar(9) = 10*n + 1
+ ipar(10) = 9
+ return
+ endif
+ res = abs(beta*zeta/umm)
+ fpar(5) = res * sqrt(distdot(n, w(1,i2+2), 1, w(1,i2+2), 1))
+ fpar(11) = fpar(11) + 2 * n
+ if (ipar(3).lt.0) then
+ fpar(6) = x * sqrt(distdot(n,w,1,w,1))
+ fpar(11) = fpar(11) + 2 * n
+ if (ipar(7).le.3) then
+ fpar(3) = fpar(6)
+ if (ipar(3).eq.-1) then
+ fpar(4) = fpar(1) * sqrt(fpar(3)) + fpar(2)
+ endif
+ endif
+ else
+ fpar(6) = fpar(5)
+ endif
+c---- convergence test -----------------------------------------------
+ 190 if (ipar(3).eq.999.and.ipar(11).eq.0) then
+ goto 30
+ else if (fpar(6).gt.fpar(4) .and. (ipar(6).gt.ipar(7) .or.
+ + ipar(6).le.0)) then
+ goto 30
+ endif
+c-----------------------------------------------------------------------
+c here the fact that the last step is different is accounted for.
+c-----------------------------------------------------------------------
+ if (.not. perm(np)) goto 900
+ x = zeta/umm
+ do 40 k = 1,n
+ w(k,10) = w(k,10) + x*w(k,1)
+ 40 continue
+ fpar(11) = fpar(11) + 2 * n
+c
+c right preconditioning and clean-up jobs
+c
+ 900 if (rp) then
+ if (ipar(1).lt.0) ipar(12) = ipar(1)
+ ipar(1) = 5
+ ipar(8) = 9*n + 1
+ ipar(9) = ipar(8) + n
+ ipar(10) = 10
+ return
+ endif
+ 200 if (rp) then
+ call tidycg(n,ipar,fpar,sol,w(1,11))
+ else
+ call tidycg(n,ipar,fpar,sol,w(1,10))
+ endif
+ return
+ end
+c-----end-of-dbcg-------------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine implu(np,umm,beta,ypiv,u,permut,full)
+ real*8 umm,beta,ypiv(*),u(*),x, xpiv
+ logical full, perm, permut(*)
+ integer np,k,npm1
+c-----------------------------------------------------------------------
+c performs implicitly one step of the lu factorization of a
+c banded hessenberg matrix.
+c-----------------------------------------------------------------------
+ if (np .le. 1) goto 12
+ npm1 = np - 1
+c
+c -- perform previous step of the factorization-
+c
+ do 6 k=1,npm1
+ if (.not. permut(k)) goto 5
+ x=u(k)
+ u(k) = u(k+1)
+ u(k+1) = x
+ 5 u(k+1) = u(k+1) - ypiv(k)*u(k)
+ 6 continue
+c-----------------------------------------------------------------------
+c now determine pivotal information to be used in the next call
+c-----------------------------------------------------------------------
+ 12 umm = u(np)
+ perm = (beta .gt. abs(umm))
+ if (.not. perm) goto 4
+ xpiv = umm / beta
+ u(np) = beta
+ goto 8
+ 4 xpiv = beta/umm
+ 8 permut(np) = perm
+ ypiv(np) = xpiv
+ if (.not. full) return
+c shift everything up if full...
+ do 7 k=1,npm1
+ ypiv(k) = ypiv(k+1)
+ permut(k) = permut(k+1)
+ 7 continue
+ return
+c-----end-of-implu
+ end
+c-----------------------------------------------------------------------
+ subroutine uppdir(n,p,np,lbp,indp,y,u,usav,flops)
+ real*8 p(n,lbp), y(*), u(*), usav(*), x, flops
+ integer k,np,n,npm1,j,ju,indp,lbp
+c-----------------------------------------------------------------------
+c updates the conjugate directions p given the upper part of the
+c banded upper triangular matrix u. u contains the non zero
+c elements of the column of the triangular matrix..
+c-----------------------------------------------------------------------
+ real*8 zero
+ parameter(zero=0.0D0)
+c
+ npm1=np-1
+ if (np .le. 1) goto 12
+ j=indp
+ ju = npm1
+ 10 if (j .le. 0) j=lbp
+ x = u(ju) /usav(j)
+ if (x .eq. zero) goto 115
+ do 11 k=1,n
+ y(k) = y(k) - x*p(k,j)
+ 11 continue
+ flops = flops + 2*n
+ 115 j = j-1
+ ju = ju -1
+ if (ju .ge. 1) goto 10
+ 12 indp = indp + 1
+ if (indp .gt. lbp) indp = 1
+ usav(indp) = u(np)
+ do 13 k=1,n
+ p(k,indp) = y(k)
+ 13 continue
+ 208 return
+c-----------------------------------------------------------------------
+c-------end-of-uppdir---------------------------------------------------
+ end
+ subroutine givens(x,y,c,s)
+ real*8 x,y,c,s
+c-----------------------------------------------------------------------
+c Given x and y, this subroutine generates a Givens' rotation c, s.
+c And apply the rotation on (x,y) ==> (sqrt(x**2 + y**2), 0).
+c (See P 202 of "matrix computation" by Golub and van Loan.)
+c-----------------------------------------------------------------------
+ real*8 t,one,zero
+ parameter (zero=0.0D0,one=1.0D0)
+c
+ if (x.eq.zero .and. y.eq.zero) then
+ c = one
+ s = zero
+ else if (abs(y).gt.abs(x)) then
+ t = x / y
+ x = sqrt(one+t*t)
+ s = sign(one / x, y)
+ c = t*s
+ else if (abs(y).le.abs(x)) then
+ t = y / x
+ y = sqrt(one+t*t)
+ c = sign(one / y, x)
+ s = t*c
+ else
+c
+c X or Y must be an invalid floating-point number, set both to zero
+c
+ x = zero
+ y = zero
+ c = one
+ s = zero
+ endif
+ x = abs(x*y)
+c
+c end of givens
+c
+ return
+ end
+c-----end-of-givens
+c-----------------------------------------------------------------------
+ logical function stopbis(n,ipar,mvpi,fpar,r,delx,sx)
+ implicit none
+ integer n,mvpi,ipar(16)
+ real*8 fpar(16), r(n), delx(n), sx, distdot
+ external distdot
+c-----------------------------------------------------------------------
+c function for determining the stopping criteria. return value of
+c true if the stopbis criteria is satisfied.
+c-----------------------------------------------------------------------
+ if (ipar(11) .eq. 1) then
+ stopbis = .true.
+ else
+ stopbis = .false.
+ endif
+ if (ipar(6).gt.0 .and. ipar(7).ge.ipar(6)) then
+ ipar(1) = -1
+ stopbis = .true.
+ endif
+ if (stopbis) return
+c
+c computes errors
+c
+ fpar(5) = sqrt(distdot(n,r,1,r,1))
+ fpar(11) = fpar(11) + 2 * n
+ if (ipar(3).lt.0) then
+c
+c compute the change in the solution vector
+c
+ fpar(6) = sx * sqrt(distdot(n,delx,1,delx,1))
+ fpar(11) = fpar(11) + 2 * n
+ if (ipar(7).lt.mvpi+mvpi+1) then
+c
+c if this is the end of the first iteration, set fpar(3:4)
+c
+ fpar(3) = fpar(6)
+ if (ipar(3).eq.-1) then
+ fpar(4) = fpar(1) * fpar(3) + fpar(2)
+ endif
+ endif
+ else
+ fpar(6) = fpar(5)
+ endif
+c
+c .. the test is struct this way so that when the value in fpar(6)
+c is not a valid number, STOPBIS is set to .true.
+c
+ if (fpar(6).gt.fpar(4)) then
+ stopbis = .false.
+ ipar(11) = 0
+ else
+ stopbis = .true.
+ ipar(11) = 1
+ endif
+c
+ return
+ end
+c-----end-of-stopbis
+c-----------------------------------------------------------------------
+ subroutine tidycg(n,ipar,fpar,sol,delx)
+ implicit none
+ integer i,n,ipar(16)
+ real*8 fpar(16),sol(n),delx(n)
+c-----------------------------------------------------------------------
+c Some common operations required before terminating the CG routines
+c-----------------------------------------------------------------------
+ real*8 zero
+ parameter(zero=0.0D0)
+c
+ if (ipar(12).ne.0) then
+ ipar(1) = ipar(12)
+ else if (ipar(1).gt.0) then
+ if ((ipar(3).eq.999 .and. ipar(11).eq.1) .or.
+ + fpar(6).le.fpar(4)) then
+ ipar(1) = 0
+ else if (ipar(7).ge.ipar(6) .and. ipar(6).gt.0) then
+ ipar(1) = -1
+ else
+ ipar(1) = -10
+ endif
+ endif
+ if (fpar(3).gt.zero .and. fpar(6).gt.zero .and.
+ + ipar(7).gt.ipar(13)) then
+ fpar(7) = log10(fpar(3) / fpar(6)) / dble(ipar(7)-ipar(13))
+ else
+ fpar(7) = zero
+ endif
+ do i = 1, n
+ sol(i) = sol(i) + delx(i)
+ enddo
+ return
+ end
+c-----end-of-tidycg
+c-----------------------------------------------------------------------
+ logical function brkdn(alpha, ipar)
+ implicit none
+ integer ipar(16)
+ real*8 alpha, beta, zero, one
+ parameter (zero=0.0D0, one=1.0D0)
+c-----------------------------------------------------------------------
+c test whether alpha is zero or an abnormal number, if yes,
+c this routine will return .true.
+c
+c If alpha == 0, ipar(1) = -3,
+c if alpha is an abnormal number, ipar(1) = -9.
+c-----------------------------------------------------------------------
+ brkdn = .false.
+ if (alpha.gt.zero) then
+ beta = one / alpha
+ if (.not. beta.gt.zero) then
+ brkdn = .true.
+ ipar(1) = -9
+ endif
+ else if (alpha.lt.zero) then
+ beta = one / alpha
+ if (.not. beta.lt.zero) then
+ brkdn = .true.
+ ipar(1) = -9
+ endif
+ else if (alpha.eq.zero) then
+ brkdn = .true.
+ ipar(1) = -3
+ else
+ brkdn = .true.
+ ipar(1) = -9
+ endif
+ return
+ end
+c-----end-of-brkdn
+c-----------------------------------------------------------------------
+ subroutine bisinit(ipar,fpar,wksize,dsc,lp,rp,wk)
+ implicit none
+ integer i,ipar(16),wksize,dsc
+ logical lp,rp
+ real*8 fpar(16),wk(*)
+c-----------------------------------------------------------------------
+c some common initializations for the iterative solvers
+c-----------------------------------------------------------------------
+ real*8 zero, one
+ parameter(zero=0.0D0, one=1.0D0)
+c
+c ipar(1) = -2 inidcate that there are not enough space in the work
+c array
+c
+ if (ipar(4).lt.wksize) then
+ ipar(1) = -2
+ ipar(4) = wksize
+ return
+ endif
+c
+ if (ipar(2).gt.2) then
+ lp = .true.
+ rp = .true.
+ else if (ipar(2).eq.2) then
+ lp = .false.
+ rp = .true.
+ else if (ipar(2).eq.1) then
+ lp = .true.
+ rp = .false.
+ else
+ lp = .false.
+ rp = .false.
+ endif
+ if (ipar(3).eq.0) ipar(3) = dsc
+c .. clear the ipar elements used
+ ipar(7) = 0
+ ipar(8) = 0
+ ipar(9) = 0
+ ipar(10) = 0
+ ipar(11) = 0
+ ipar(12) = 0
+ ipar(13) = 0
+c
+c fpar(1) must be between (0, 1), fpar(2) must be positive,
+c fpar(1) and fpar(2) can NOT both be zero
+c Normally return ipar(1) = -4 to indicate any of above error
+c
+ if (fpar(1).lt.zero .or. fpar(1).ge.one .or. fpar(2).lt.zero .or.
+ & (fpar(1).eq.zero .and. fpar(2).eq.zero)) then
+ if (ipar(1).eq.0) then
+ ipar(1) = -4
+ return
+ else
+ fpar(1) = 1.0D-6
+ fpar(2) = 1.0D-16
+ endif
+ endif
+c .. clear the fpar elements
+ do i = 3, 10
+ fpar(i) = zero
+ enddo
+ if (fpar(11).lt.zero) fpar(11) = zero
+c .. clear the used portion of the work array to zero
+ do i = 1, wksize
+ wk(i) = zero
+ enddo
+c
+ return
+c-----end-of-bisinit
+ end
+c-----------------------------------------------------------------------
+ subroutine mgsro(full,lda,n,m,ind,ops,vec,hh,ierr)
+ implicit none
+ logical full
+ integer lda,m,n,ind,ierr
+ real*8 ops,hh(m),vec(lda,m)
+c-----------------------------------------------------------------------
+c MGSRO -- Modified Gram-Schmidt procedure with Selective Re-
+c Orthogonalization
+c The ind'th vector of VEC is orthogonalized against the rest of
+c the vectors.
+c
+c The test for performing re-orthogonalization is performed for
+c each indivadual vectors. If the cosine between the two vectors
+c is greater than 0.99 (REORTH = 0.99**2), re-orthogonalization is
+c performed. The norm of the 'new' vector is kept in variable NRM0,
+c and updated after operating with each vector.
+c
+c full -- .ture. if it is necessary to orthogonalize the ind'th
+c against all the vectors vec(:,1:ind-1), vec(:,ind+2:m)
+c .false. only orthogonalize againt vec(:,1:ind-1)
+c lda -- the leading dimension of VEC
+c n -- length of the vector in VEC
+c m -- number of vectors can be stored in VEC
+c ind -- index to the vector to be changed
+c ops -- operation counts
+c vec -- vector of LDA X M storing the vectors
+c hh -- coefficient of the orthogonalization
+c ierr -- error code
+c 0 : successful return
+c -1: zero input vector
+c -2: input vector contains abnormal numbers
+c -3: input vector is a linear combination of others
+c
+c External routines used: real*8 distdot
+c-----------------------------------------------------------------------
+ integer i,k
+ real*8 nrm0, nrm1, fct, thr, distdot, zero, one, reorth
+ parameter (zero=0.0D0, one=1.0D0, reorth=0.98D0)
+ external distdot
+c
+c compute the norm of the input vector
+c
+ nrm0 = distdot(n,vec(1,ind),1,vec(1,ind),1)
+ ops = ops + n + n
+ thr = nrm0 * reorth
+ if (nrm0.le.zero) then
+ ierr = - 1
+ return
+ else if (nrm0.gt.zero .and. one/nrm0.gt.zero) then
+ ierr = 0
+ else
+ ierr = -2
+ return
+ endif
+c
+c Modified Gram-Schmidt loop
+c
+ if (full) then
+ do 40 i = ind+1, m
+ fct = distdot(n,vec(1,ind),1,vec(1,i),1)
+ hh(i) = fct
+ do 20 k = 1, n
+ vec(k,ind) = vec(k,ind) - fct * vec(k,i)
+ 20 continue
+ ops = ops + 4 * n + 2
+ if (fct*fct.gt.thr) then
+ fct = distdot(n,vec(1,ind),1,vec(1,i),1)
+ hh(i) = hh(i) + fct
+ do 30 k = 1, n
+ vec(k,ind) = vec(k,ind) - fct * vec(k,i)
+ 30 continue
+ ops = ops + 4*n + 1
+ endif
+ nrm0 = nrm0 - hh(i) * hh(i)
+ if (nrm0.lt.zero) nrm0 = zero
+ thr = nrm0 * reorth
+ 40 continue
+ endif
+c
+ do 70 i = 1, ind-1
+ fct = distdot(n,vec(1,ind),1,vec(1,i),1)
+ hh(i) = fct
+ do 50 k = 1, n
+ vec(k,ind) = vec(k,ind) - fct * vec(k,i)
+ 50 continue
+ ops = ops + 4 * n + 2
+ if (fct*fct.gt.thr) then
+ fct = distdot(n,vec(1,ind),1,vec(1,i),1)
+ hh(i) = hh(i) + fct
+ do 60 k = 1, n
+ vec(k,ind) = vec(k,ind) - fct * vec(k,i)
+ 60 continue
+ ops = ops + 4*n + 1
+ endif
+ nrm0 = nrm0 - hh(i) * hh(i)
+ if (nrm0.lt.zero) nrm0 = zero
+ thr = nrm0 * reorth
+ 70 continue
+c
+c test the resulting vector
+c
+ nrm1 = sqrt(distdot(n,vec(1,ind),1,vec(1,ind),1))
+ ops = ops + n + n
+ 75 hh(ind) = nrm1
+ if (nrm1.le.zero) then
+ ierr = -3
+ return
+ endif
+c
+c scale the resulting vector
+c
+ fct = one / nrm1
+ do 80 k = 1, n
+ vec(k,ind) = vec(k,ind) * fct
+ 80 continue
+ ops = ops + n + 1
+c
+c normal return
+c
+ ierr = 0
+ return
+c end surbotine mgsro
+ end
diff --git a/ITSOL/makefile b/ITSOL/makefile
new file mode 100644
index 0000000..41bbeb7
--- /dev/null
+++ b/ITSOL/makefile
@@ -0,0 +1,27 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+LIBS = ../libskit.a ../UNSUPP/BLAS1/blas1.o
+
+riters.ex: riters.o iters.o ilut.o itaux.o $(LIBS)
+ $(F77) $(FFLAGS) -o riters.ex riters.o itaux.o $(LIBS)
+
+rilut.ex: rilut.o ilut.o iters.o itaux.o $(LIBS)
+ $(F77) $(FFLAGS) -o rilut.ex rilut.o itaux.o $(LIBS)
+
+riter2.ex: riter2.o iters.o ilut.o itaux.o $(LIBS)
+ $(F77) $(FFLAGS) -o riter2.ex riter2.o itaux.o $(LIBS)
+
+clean:
+ rm -f *.o *.ex core *.trace
+
+../UNSUPP/BLAS1/blas1.o:
+ (cd ../UNSUPP/BLAS1; $(F77) $(FFLAGS) -c blas1.f)
+
+../libskit.a:
+ (cd ..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
+
diff --git a/ITSOL/rilut.f b/ITSOL/rilut.f
new file mode 100644
index 0000000..ddf4a70
--- /dev/null
+++ b/ITSOL/rilut.f
@@ -0,0 +1,285 @@
+ program rilut
+c-----------------------------------------------------------------------
+c test program for ilut preconditioned gmres.
+c this program generates a sparse matrix using
+c matgen and then solves a linear system with an
+c artificial rhs.
+c-----------------------------------------------------------------------
+ implicit none
+c
+ integer nmax, nzmax
+ parameter (nmax=5000,nzmax=100000)
+ integer ia(nmax),ja(nzmax),jau(nzmax),ju(nzmax),iw(nmax*3),
+ & iperm(nmax*2),ipar(16), levs(nzmax)
+ real*8 a(nzmax),x(nmax),y(nmax),au(nzmax),vv(nmax,20),
+ * xran(nmax),rhs(nmax),al(nmax),fpar(16)
+c real t(2), t1, etime
+c
+ integer nx,ny,nz,n,j,k,ierr,meth,lfil,nwk,im,maxits,iout
+ real*8 tol,permtol,eps,alph,gammax,gammay,alpha
+ external gmres
+c
+ common /func/ gammax, gammay, alpha
+c-----------------------------------------------------------------------
+c pde to be discretized is :
+c---------------------------
+c
+c -Lap u + gammax exp (xy)delx u + gammay exp (-xy) dely u +alpha u
+c
+c where Lap = 2-D laplacean, delx = part. der. wrt x,
+c dely = part. der. wrt y.
+c gammax, gammay, and alpha are passed via the commun func.
+c
+c-----------------------------------------------------------------------
+c
+c data for PDE:
+c
+ nx = 30
+ ny = 30
+ nz = 1
+ alpha = -50.0
+ gammax = 10.0
+ gammay = 10.0
+c
+c data for preconditioner
+c
+ nwk = nzmax
+c
+c data for GMRES
+c
+ im = 10
+ eps = 1.0D-07
+ maxits = 100
+ iout = 6
+ permtol = 1.0
+ ipar(2) = 2
+ ipar(3) = 2
+ ipar(4) = 20*nmax
+ ipar(5) = im
+ ipar(6) = maxits
+ fpar(1) = eps
+ fpar(2) = 2.22D-16
+c
+c same initial guess for gmres
+c
+c--------------------------------------------------------------
+c call gen57 to generate matrix in compressed sparse row format
+c--------------------------------------------------------------
+c
+c define part of the boundary condition here
+c
+ al(1) = 0.0
+ al(2) = 1.0
+ al(3) = 0.0
+ al(4) = 0.0
+ al(5) = 0.0
+ al(6) = 0.0
+ call gen57pt(nx,ny,nz,al,0,n,a,ja,ia,ju,rhs)
+c
+c zero initial guess to the iterative solvers
+c
+ do j=1, n
+ xran(j) = 0.d0
+ enddo
+ print *, 'RILUT: generated a finite difference matrix'
+ print *, ' grid size = ', nx, ' X ', ny, ' X ', nz
+ print *, ' matrix size = ', n
+c--------------------------------------------------------------
+c gnerate right han side = A * (1,1,1,...,1)**T
+c--------------------------------------------------------------
+ do k=1,n
+ x(k) = 1.0
+ enddo
+ call amux(n, x, y, a, ja, ia)
+c--------------------------------------------------------------
+c test all different methods available:
+c ILU0, MILU0, ILUT and with different values of tol and lfil
+c ( from cheaper to more expensive preconditioners)
+c The more accurate the preconditioner the fewer iterations
+c are required in pgmres, in general.
+c
+c--------------------------------------------------------------
+ do 200 meth = 1, 15
+ goto (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) meth
+ 1 continue
+ write (iout,*) ' +++++ ILU(0) Preconditioner ++++ '
+c t1 = etime(t)
+ call ilu0 (n, a, ja, ia, au, jau, ju, iw, ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 2 continue
+ write (iout,*) ' +++++ MILU(0) Preconditioner ++++ '
+c t1 = etime(t)
+ call milu0 (n, a, ja, ia, au, jau, ju, iw, ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 3 continue
+ write (iout,*) ' +++++ ILUT Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = 0.0001, lfil=5 ++++ '
+ tol = 0.0001
+ lfil = 5
+c
+c t1 = etime(t)
+ call ilut (n,a,ja,ia,lfil,tol,au,jau,ju,nwk,vv,iw,ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 4 continue
+ write (iout,*) ' +++++ ILUT Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = 0.0001, lfil=10 ++++ '
+ tol = 0.0001
+ lfil = 10
+c
+c t1 = etime(t)
+ call ilut (n,a,ja,ia,lfil,tol,au,jau,ju,nwk,vv,iw,ierr)
+
+c t1 = etime(t) - t1
+ goto 100
+ 5 continue
+ write (iout,*) ' +++++ ILUT Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = .0001, lfil=15 ++++ '
+ tol = 0.0001
+ lfil = 15
+c
+c t1 = etime(t)
+ call ilut (n,a,ja,ia,lfil,tol,au,jau,ju,nwk,vv,iw,ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 6 continue
+ write (iout,*) ' +++++ ILUTP Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = 0.0001, lfil=5 ++++ '
+ tol = 0.0001
+ lfil = 5
+c
+c t1 = etime(t)
+ call ilutp(n,a,ja,ia,lfil,tol,permtol,n,au,jau,ju,nwk,
+ * vv,iw,iperm,ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 7 continue
+ write (iout,*) ' +++++ ILUTP Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = 0.0001, lfil=10 ++++ '
+ tol = 0.0001
+ lfil = 10
+c
+c t1 = etime(t)
+ call ilutp(n,a,ja,ia,lfil,tol,permtol,n,au,jau,ju,nwk,
+ * vv,iw,iperm,ierr)
+c t1 = etime(t) - t1
+ goto 100
+c-----------------------------------------------------------------------------
+ 8 continue
+ write (iout,*) ' +++++ ILUTP Preconditioner ++++ '
+ write (iout,*) ' +++++ tol = .0001, lfil=15 ++++ '
+ tol = 0.0001
+ lfil = 15
+c
+c t1 = etime(t)
+ call ilutp(n,a,ja,ia,lfil,tol,permtol,n,au,jau,ju,nwk,
+ * vv,iw,iperm,ierr)
+c t1 = etime(t) - t1
+ goto 100
+ 9 continue
+ write (iout,*) ' +++++ ILUK Preconditioner ++++ '
+ write (iout,*) ' +++++ lfil=0 ++++ '
+ lfil = 0
+c t1 = etime(t)
+ call iluk(n,a,ja,ia,lfil,au,jau,ju,levs,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+c
+ 10 continue
+ write (iout,*) ' +++++ ILUK Preconditioner ++++ '
+ write (iout,*) ' +++++ lfil=1 ++++ '
+ lfil = 1
+c t1 = etime(t)
+ call iluk(n,a,ja,ia,lfil,au,jau,ju,levs,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+c
+ 11 continue
+ write (iout,*) ' +++++ ILUK Preconditioner ++++ '
+ write (iout,*) ' +++++ lfil=3 ++++ '
+ lfil = 3
+c t1 = etime(t)
+ call iluk(n,a,ja,ia,lfil,au,jau,ju,levs,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+c
+ 12 continue
+ write (iout,*) ' +++++ ILUK Preconditioner ++++ '
+ write (iout,*) ' +++++ lfil=6 ++++ '
+ lfil = 6
+c t1 = etime(t)
+ call iluk(n,a,ja,ia,lfil,au,jau,ju,levs,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+c
+ 13 continue
+c-----------------------------------------------------------------------
+ write (iout,*) ' +++++ ILUD Preconditioner ++++ '
+ write (iout,*) ' +++++ tol=0.075, alpha=0.0 ++++ '
+ tol = 0.075
+ alph= 0.0
+c t1 = etime(t)
+ call ilud(n,a,ja,ia,alph,tol,au,jau,ju,nwk,vv,iw,ierr)
+c
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+c
+ 14 continue
+ write (iout,*) ' +++++ ILUD Preconditioner ++++ '
+ write (iout,*) ' +++++ tol=0.075, alpha=1.0 ++++ '
+ tol = 0.075
+ alph=1.0
+c t1 = etime(t)
+ call ilud(n,a,ja,ia,alph,tol,au,jau,ju,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+ goto 100
+
+ 15 continue
+ write (iout,*) ' +++++ ILUD Preconditioner ++++ '
+ write (iout,*) ' +++++ tol=0.01, alpha=1.0 ++++ '
+ tol = 0.01
+c t1 = etime(t)
+ call ilud(n,a,ja,ia,alph,tol,au,jau,ju,nwk,vv,iw,ierr)
+ print *, ' nnz for a =', ia(n+1) - ia(1)
+ print *, ' nnz for ilu =', jau(n+1) -jau(1) + n
+c t1 = etime(t) - t1
+c goto 100
+c
+ 100 continue
+c
+c check that return was succesful
+c
+c print *, ' ILU factorization time ', t1
+ print *, ' Precon set-up returned with ierr ', ierr
+ if (ierr .ne. 0) goto 200
+c--------------------------------------------------------------
+c call GMRES
+c--------------------------------------------------------------
+ call runrc(n,y,x,ipar,fpar,vv,xran,a,ja,ia,au,jau,ju,
+ + gmres)
+ print *, 'GMRES return status = ', ipar(1)
+ write (iout,*) ' '
+ 200 continue
+c
+c----------------------------------------------------------
+c
+ write (iout,*) ' **** SOLUTION **** '
+ write(iout, 111) (x(k),k=1,n)
+ 111 format (5d15.5)
+ stop
+ end
+
diff --git a/ITSOL/riter2.f b/ITSOL/riter2.f
new file mode 100644
index 0000000..01b50d6
--- /dev/null
+++ b/ITSOL/riter2.f
@@ -0,0 +1,102 @@
+ program riters
+c-----------------------------------------------------------------------
+c test program for iters -- the basic iterative solvers
+c
+c this program reads a Harwell/Boeing matrix from standard input
+c and solves the linear system with an artifical right-hand side
+c (the solution is a vector of (1,1,...,1)^T)
+c-----------------------------------------------------------------------
+c implicit none
+c implicit real*8 (a-h,o-z)
+ integer nmax, nzmax, maxits,lwk
+ parameter (nmax=5000,nzmax=100000,maxits=60,lwk=nmax*40)
+ integer ia(nmax),ja(nzmax),jau(nzmax),ju(nzmax),iw(nmax*3)
+ integer ipar(16),i,lfil,nwk,nrow,ierr
+ real*8 a(nzmax),sol(nmax),rhs(nmax),au(nzmax),wk(nmax*40)
+ real*8 xran(nmax), fpar(16), tol
+ character guesol*2, title*72, key*8, type*3
+ external cg,bcg,dbcg,bcgstab,tfqmr,gmres,fgmres,dqgmres
+ external cgnr, fom, runrc, ilut
+c
+c set the parameters for the iterative solvers
+c
+ ipar(2) = 2
+ ipar(3) = 1
+ ipar(4) = lwk
+ ipar(5) = 16
+ ipar(6) = maxits
+ fpar(1) = 1.0D-5
+ fpar(2) = 1.0D-10
+c--------------------------------------------------------------
+c read in a matrix from standard input
+c--------------------------------------------------------------
+ iounit = 5
+ job = 2
+ nrhs = 0
+ call readmt (nmax,nzmax,job,iounit,a,ja,ia,a,nrhs,
+ * guesol,nrow,ncol,nnz,title,key,type,ierr)
+ print *, 'READ the matrix ', key, type
+ print *, title
+ print *
+c
+c set-up the preconditioner ILUT(15, 1E-4) ! new definition of lfil
+c
+ lfil = 15
+ tol = 1.0D-4 ! this is too high for ilut for saylr1
+ tol = 1.0D-7
+ nwk = nzmax
+ call ilut (nrow,a,ja,ia,lfil,tol,au,jau,ju,nwk,
+ * wk,iw,ierr)
+ ipar(2) = 2
+c
+c generate a linear system with known solution
+c
+ do i = 1, nrow
+ sol(i) = 1.0D0
+ xran(i) = 0.D0
+ end do
+ call amux(nrow, sol, rhs, a, ja, ia)
+ print *, ' '
+ print *, ' *** CG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cg)
+ print *, ' '
+ print *, ' *** BCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcg)
+ print *, ' '
+ print *, ' *** DBCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dbcg)
+ print *, ' '
+ print *, ' *** CGNR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cgnr)
+ print *, ' '
+ print *, ' *** BCGSTAB ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcgstab)
+ print *, ' '
+ print *, ' *** TFQMR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + tfqmr)
+ print *, ' '
+ print *, ' *** FOM ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fom)
+ print *, ' '
+ print *, ' *** GMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + gmres)
+ print *, ' '
+ print *, ' *** FGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fgmres)
+ print *, ' '
+ print *, ' *** DQGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dqgmres)
+ stop
+ end
+c-----end-of-main
+c-----------------------------------------------------------------------
diff --git a/ITSOL/riters.f b/ITSOL/riters.f
new file mode 100644
index 0000000..1ad8e69
--- /dev/null
+++ b/ITSOL/riters.f
@@ -0,0 +1,129 @@
+ program riters
+c-----------------------------------------------------------------------
+c test program for iters -- the basic iterative solvers
+c
+c this program generates a sparse matrix using
+c GEN57PT and then solves a linear system with an
+c artificial rhs (the solution is a vector of (1,1,...,1)^T).
+c-----------------------------------------------------------------------
+c implicit none
+c implicit real*8 (a-h,o-z)
+ integer nmax, nzmax, maxits,lwk
+ parameter (nmax=5000,nzmax=100000,maxits=60,lwk=nmax*40)
+ integer ia(nmax),ja(nzmax),jau(nzmax),ju(nzmax),iw(nmax*3)
+ integer ipar(16),nx,ny,nz,i,lfil,nwk,nrow,ierr
+ real*8 a(nzmax),sol(nmax),rhs(nmax),au(nzmax),wk(nmax*40)
+ real*8 xran(nmax), fpar(16), al(nmax)
+ real*8 gammax,gammay,alpha,tol
+ external gen57pt,cg,bcg,dbcg,bcgstab,tfqmr,gmres,fgmres,dqgmres
+ external cgnr, fom, runrc, ilut
+c
+ common /func/ gammax, gammay, alpha
+c-----------------------------------------------------------------------
+c pde to be discretized is :
+c---------------------------
+c
+c -Lap u + gammax exp (xy)delx u + gammay exp (-xy) dely u +alpha u
+c
+c where Lap = 2-D laplacean, delx = part. der. wrt x,
+c dely = part. der. wrt y.
+c gammax, gammay, and alpha are passed via the commun func.
+c
+c-----------------------------------------------------------------------
+c
+c data for PDE:
+c
+ nx = 6
+ ny = 6
+ nz = 1
+ alpha = 0.0
+ gammax = 0.0
+ gammay = 0.0
+c
+c set the parameters for the iterative solvers
+c
+ ipar(2) = 2
+ ipar(3) = 1
+ ipar(4) = lwk
+ ipar(5) = 10
+ ipar(6) = maxits
+ fpar(1) = 1.0D-5
+ fpar(2) = 1.0D-10
+c--------------------------------------------------------------
+c call GEN57PT to generate matrix in compressed sparse row format
+c
+c al(1:6) are used to store part of the boundary conditions
+c (see documentation on GEN57PT.)
+c--------------------------------------------------------------
+ al(1) = 0.0
+ al(2) = 0.0
+ al(3) = 0.0
+ al(4) = 0.0
+ al(5) = 0.0
+ al(6) = 0.0
+ nrow = nx * ny * nz
+ call gen57pt(nx,ny,nz,al,0,nrow,a,ja,ia,ju,rhs)
+ print *, 'RITERS: generated a finite difference matrix'
+ print *, ' grid size = ', nx, ' X ', ny, ' X ', nz
+ print *, ' matrix size = ', nrow
+c
+c set-up the preconditioner ILUT(15, 1E-4) ! new definition of lfil
+c
+ lfil = 3
+ tol = 1.0D-4
+ nwk = nzmax
+ call ilut (nrow,a,ja,ia,lfil,tol,au,jau,ju,nwk,
+ * wk,iw,ierr)
+ ipar(2) = 2
+c
+c generate a linear system with known solution
+c
+ do i = 1, nrow
+ sol(i) = 1.0D0
+ xran(i) = 0.d0
+ end do
+ call amux(nrow, sol, rhs, a, ja, ia)
+ print *, ' '
+ print *, ' *** CG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cg)
+ print *, ' '
+ print *, ' *** BCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcg)
+ print *, ' '
+ print *, ' *** DBCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dbcg)
+ print *, ' '
+ print *, ' *** CGNR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cgnr)
+ print *, ' '
+ print *, ' *** BCGSTAB ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcgstab)
+ print *, ' '
+ print *, ' *** TFQMR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + tfqmr)
+ print *, ' '
+ print *, ' *** FOM ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fom)
+ print *, ' '
+ print *, ' *** GMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + gmres)
+ print *, ' '
+ print *, ' *** FGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fgmres)
+ print *, ' '
+ print *, ' *** DQGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dqgmres)
+ stop
+ end
+c-----end-of-main
+c-----------------------------------------------------------------------
diff --git a/ITSOL/riters_sav b/ITSOL/riters_sav
new file mode 100644
index 0000000..d4bc99a
--- /dev/null
+++ b/ITSOL/riters_sav
@@ -0,0 +1,129 @@
+ program riters
+c-----------------------------------------------------------------------
+c test program for iters -- the basic iterative solvers
+c
+c this program generates a sparse matrix using
+c GEN57PT and then solves a linear system with an
+c artificial rhs (the solution is a vector of (1,1,...,1)^T).
+c-----------------------------------------------------------------------
+c implicit none
+c implicit real*8 (a-h,o-z)
+ integer nmax, nzmax, maxits,lwk
+ parameter (nmax=5000,nzmax=100000,maxits=60,lwk=nmax*40)
+ integer ia(nmax),ja(nzmax),jau(nzmax),ju(nzmax),iw(nmax*3)
+ integer ipar(16),nx,ny,nz,i,lfil,nwk,nrow,ierr
+ real*8 a(nzmax),sol(nmax),rhs(nmax),au(nzmax),wk(nmax*40)
+ real*8 xran(nmax), fpar(16), al(nmax)
+ real*8 gammax,gammay,alpha,tol
+ external gen57pt,cg,bcg,dbcg,bcgstab,tfqmr,gmres,fgmres,dqgmres
+ external cgnr, fom, runrc, ilut
+c
+ common /func/ gammax, gammay, alpha
+c-----------------------------------------------------------------------
+c pde to be discretized is :
+c---------------------------
+c
+c -Lap u + gammax exp (xy)delx u + gammay exp (-xy) dely u +alpha u
+c
+c where Lap = 2-D laplacean, delx = part. der. wrt x,
+c dely = part. der. wrt y.
+c gammax, gammay, and alpha are passed via the commun func.
+c
+c-----------------------------------------------------------------------
+c
+c data for PDE:
+c
+ nx = 50
+ ny = 50
+ nz = 1
+ alpha = -50.0
+ gammax = 10.0
+ gammay = 10.0
+c
+c set the parameters for the iterative solvers
+c
+ ipar(2) = 2
+ ipar(3) = 1
+ ipar(4) = lwk
+ ipar(5) = 16
+ ipar(6) = maxits
+ fpar(1) = 1.0D-5
+ fpar(2) = 1.0D-10
+c--------------------------------------------------------------
+c call GEN57PT to generate matrix in compressed sparse row format
+c
+c al(1:6) are used to store part of the boundary conditions
+c (see documentation on GEN57PT.)
+c--------------------------------------------------------------
+ al(1) = 0.0
+ al(2) = 0.0
+ al(3) = 0.0
+ al(4) = 0.0
+ al(5) = 0.0
+ al(6) = 0.0
+ nrow = nx * ny * nz
+ call gen57pt(nx,ny,nz,al,0,nrow,a,ja,ia,ju,rhs)
+ print *, 'RITERS: generated a finite difference matrix'
+ print *, ' grid size = ', nx, ' X ', ny, ' X ', nz
+ print *, ' matrix size = ', nrow
+c
+c set-up the preconditioner ILUT(15, 1E-4) ! new definition of lfil
+c
+ lfil = 15
+ tol = 1.0D-4
+ nwk = nzmax
+ call ilut (nrow,a,ja,ia,lfil,tol,au,jau,ju,nwk,
+ * wk,iw,ierr)
+ ipar(2) = 2
+c
+c generate a linear system with known solution
+c
+ do i = 1, nrow
+ sol(i) = 1.0D0
+ xran(i) = 0.d0
+ end do
+ call amux(nrow, sol, rhs, a, ja, ia)
+ print *, ' '
+ print *, ' *** CG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cg)
+ print *, ' '
+ print *, ' *** BCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcg)
+ print *, ' '
+ print *, ' *** DBCG ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dbcg)
+ print *, ' '
+ print *, ' *** CGNR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + cgnr)
+ print *, ' '
+ print *, ' *** BCGSTAB ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + bcgstab)
+ print *, ' '
+ print *, ' *** TFQMR ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + tfqmr)
+ print *, ' '
+ print *, ' *** FOM ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fom)
+ print *, ' '
+ print *, ' *** GMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + gmres)
+ print *, ' '
+ print *, ' *** FGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + fgmres)
+ print *, ' '
+ print *, ' *** DQGMRES ***'
+ call runrc(nrow,rhs,sol,ipar,fpar,wk,xran,a,ja,ia,au,jau,ju,
+ + dqgmres)
+ stop
+ end
+c-----end-of-main
+c-----------------------------------------------------------------------
diff --git a/ITSOL/runilut.f b/ITSOL/runilut.f
new file mode 100644
index 0000000..8eb817f
--- /dev/null
+++ b/ITSOL/runilut.f
@@ -0,0 +1,264 @@
+ program runall
+c-----------------------------------------------------------------------
+c not present: CG and FGMRES
+c-----------------------------------------------------------------------
+c program for running all examples -- for book tables.
+c-----------------------------------------------------------------------
+ parameter (nmax=10000,np1=nmax+1,nt2=2*nmax,nzmax = 100000,
+ * lw=31*nmax,nzumax = 20*nzmax)
+c-----------------------------------------------------------------------
+ implicit none
+c
+ integer ia(nt2),ja(nzmax),jlu(nzumax),levs(nzumax),ju(nmax+1)
+ real*8 wk(lw),rhs(nmax),a(nzmax),alu(nzumax)
+ integer jw(nt2), iperm(nt2)
+ real*8 w(nt2),sol(nt2)
+ integer n, mbloc
+ character guesol*2, title*72, key*8, type*3
+c-----------------------------------------------------------------------
+ integer iout,lfil,j,k,maxits,i,ncol,numat,mat,iwk,nnz,ipo,ipi,iin,
+ * job,nrhs,im,outf,ipre,its,ierr,ipre1,ipre2,lf,it,itp,
+ * icode,imat,kk,lfinc, niter
+ character*50 filnam
+ integer iters(20)
+c
+c up to 10 matrices
+c
+ real*8 droptol, dropinc, t, permtol, tol, eps, rand, alph, dnrm2
+c
+c-----------------------------------------------------------------------
+ data iin/4/, iout/8/
+c-----------------------------------------------------------------------
+ iwk = nzumax
+c
+c read in matrix pathname from file. == then read matrix itself
+c
+ open (2, file ='matfile')
+ read (2,*) numat
+ i=20
+c-----------------------------------------------------------------------
+ open (iin,file='inputs')
+ read (iin,*) alph
+ read (iin,*) im, maxits
+ read (iin,*) eps
+ read (iin,*) ipre1, ipre2, niter
+ read (iin,*) tol, dropinc, permtol
+ read (iin,*) lf, lfinc
+ outf = 30
+c
+c BIG MATRIX LOOP
+c
+c-----------------------------------------------------------------------
+c LOOP THROUGH MATRICES
+c-----------------------------------------------------------------------
+ do 300 mat =1, numat
+ read (2,'(a50)') filnam
+ imat = 20
+ open (imat,file =filnam)
+ write (7,*) filnam
+ job = 3
+ nrhs = nmax
+ call readmt (nmax,nzmax,job,imat,a,ja,ia, rhs, nrhs,
+ * guesol,n,ncol,nnz,title,key,type,ierr)
+c-----------------------------------------------------------------------
+ rewind(imat)
+ write (7,*) ' -- read -- returned with ierr = ', ierr
+ write (7,*) ' matrix ', filnam
+ write (7,*) ' *** n = ', n, ' nnz ', nnz
+ if (ierr .ne. 0) stop ' not able to read *** '
+c
+c sort matrix
+c
+ call csort(n,a,ja,ia,jlu,.true.)
+ job = 0
+ call roscal(n,job,1,a,ja,ia,wk,a,ja,ia,ierr)
+ call coscal(n,job,1,a,ja,ia,wk,a,ja,ia,ierr)
+c-----------------------------------------------------------------------
+c LOOP THROUGH PRECONDITONERS
+c-----------------------------------------------------------------------
+ droptol = tol
+ lfil = lf
+ kk = 0
+ do 500 ipre = ipre1, ipre2
+c-----------------------------------------------------------------------
+c ipre = 1 --> ILUD
+c ipre = 2 --> ILUT
+c ipre = 3 --> ILUDP
+c ipre = 4 --> ILUTP
+c ipre = 5 --> ILUK
+c-----------------------------------------------------------------------
+ lfil = lf
+ droptol = tol
+ do 350 itp =1, niter
+ do k=1,n
+ sol(k) = 1.0
+ enddo
+c
+ call amux (n, sol, rhs, a, ja, ia)
+c
+ goto (1,2,3,4) ipre
+c
+ 1 continue
+ call ilud (n,a,ja,ia,alph,droptol,alu,jlu,ju,iwk,
+ * w,jw,ierr)
+ if (ierr .ne. 0) write (7,*) ' ilud ierr = ', ierr
+ call stb_test(n,rhs,alu,jlu,ju,t)
+ write (7,*) ' ILUD-drpt =', droptol, ' stbtest = ', t
+ write (7,*) ' --- fill-in =', jlu(n+1)-jlu(1)
+c
+ goto 100
+ 2 continue
+c
+ call ilutn (n,a,ja,ia,lfil,droptol,alu,jlu,ju,iwk,w,jw,
+ * ierr)
+ if (ierr .ne. 0) write (7,*) ' ILUT ierr = ', ierr
+ call stb_test(n,rhs,alu,jlu,ju,t)
+ write (7,*) ' ILUT-drpt =', droptol,
+ * ' lfil = ', lfil, ' stbtest = ', t
+ write (7,*) ' --- fill-in =', jlu(n+1)-jlu(1)
+c
+ goto 100
+c
+c pivoting codes
+c
+ 3 continue
+ mbloc = n
+ call iludp (n,a,ja,ia,alph,droptol,permtol,mbloc,alu,
+ * jlu,ju,iwk,w,jw,iperm,ierr)
+ if (ierr .ne. 0) write (7,*) ' ilud ierr = ', ierr
+ call stb_test(n,rhs,alu,jlu,ju,t)
+ write (7,*) ' ILUD-drpt =', droptol, ' stbtest = ', t
+ write (7,*) ' --- fill-in =', jlu(n+1)-jlu(1)
+ goto 100
+ 4 continue
+ mbloc = n
+ call ilutpn (n,a,ja,ia,lfil,droptol,permtol,mbloc,alu,
+ * jlu,ju,iwk,w,jw,iperm,ierr)
+ if (ierr .ne. 0) write (7,*) ' milutp ierr = ', ierr
+c
+ call stb_test(n,rhs,alu,jlu,ju,t)
+ write (7,*) ' ILUTP-drpt =', droptol,
+ * ' lfil = ', lfil, ' stbtest = ', t
+ write (7,*) ' --- fill-in =', jlu(n+1)-jlu(1)
+
+ goto 100
+ 5 continue
+c
+ call ilukn(n,a,ja,ia,lfil,alu,jlu,ju,levs,iwk,w,jw,ierr)
+ if (ierr .ne. 0) write (7,*) ' ILUT ierr = ', ierr
+ call stb_test(n,rhs,alu,jlu,ju,t)
+ write (7,*) ' ILUK -- lfil = ', lfil,' stbtest = ', t
+ write (7,*) ' --- fill-in =', jlu(n+1)-jlu(1)
+c goto 100
+c -----------
+c big loop --
+c -----------
+ 100 continue
+
+ do 11 k=1,n
+ sol(k) = 1.0
+ 11 continue
+
+ call amux (n, sol, rhs, a, ja, ia)
+ do 12 j=1, n
+ sol(j) = rand(j)
+ 12 continue
+ its = 0
+c-----------------------------------------------------------------------
+ 10 continue
+c
+ call fgmr (n,im,rhs,sol,it,wk,ipo,ipi,eps,maxits,0,icode)
+c-----------------------------------------------------------------------
+ if (icode.eq.1) then
+ call amux(n, wk(ipo), wk(ipi), a, ja, ia)
+ its = its+1
+ goto 10
+ else if (icode.eq.3 .or. icode.eq.5) then
+c
+c output the residuals here ...
+c
+ if (ipre .eq. 0) then
+c NOPRE
+ call dcopy(n, wk(ipo),1,wk(ipi),1)
+ else
+ call lusol(n,wk(ipo),wk(ipi),alu,jlu,ju)
+ endif
+ goto 10
+ endif
+c
+c done ***
+c
+ call amux(n,sol,wk,a,ja,ia)
+c
+ do i = 1, n
+ wk(n+i) = sol(i) -1.0D0
+ wk(i) = wk(i) - rhs(i)
+ end do
+c
+ kk = kk+1
+ iters(kk) = its
+c res(kk) = dnrm2(n,wk,1)
+c err(kk) = dnrm2(n,wk(n+1),1)
+ write (iout, *) '# actual residual norm ', dnrm2(n,wk,1)
+ write (iout, *) '# error norm ', dnrm2(n,wk(1+n),1)
+c
+ droptol = droptol*dropinc
+ lfil = lfil + lfinc
+c
+c pivoting codes
+c
+ if (ipre .ge. 3) then
+ do k=1, ia(n+1)-1
+ ja(k) = iperm(ja(k))
+ enddo
+ endif
+ 350 continue
+c
+ 500 continue
+ call entline(outf,filnam,iters,kk)
+ close (imat)
+ 300 continue
+ stop
+c-------------end-of-main-program-ilut_solve_new------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ function distdot(n,x,ix,y,iy)
+ integer n, ix, iy
+ real*8 distdot, x(*), y(*), ddot
+ external ddot
+ distdot = ddot(n,x,ix,y,iy)
+ return
+c-----end-of-distdot
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine entline(outf,mat,its,kk)
+ implicit none
+ integer outf, kk,its(kk),k
+ character mat*70
+c real*8 err(kk), res(kk)
+c-----------------------------------------------------------------------
+ write(outf,100) mat(19:29),(its(k),k=1,8)
+ 100 format
+ * (a,' & ', 8(i4,' & '),'\\\\ \\hline')
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine stb_test(n,sol,alu,jlu,ju,tmax)
+ implicit none
+ integer n, jlu(*),ju(*)
+ real*8 sol(n),alu(*),tmax
+c-----------------------------------------------------------------------
+ real*8 max, t, abs
+ integer j
+c
+ call lusol(n,sol,sol,alu,jlu,ju)
+c
+ tmax = 0.0
+ do j=1, n
+ t = abs(sol(j))
+ tmax = max(t,tmax)
+ enddo
+ return
+ end
diff --git a/ITSOL/saylr1 b/ITSOL/saylr1
new file mode 100644
index 0000000..a5a0f2f
--- /dev/null
+++ b/ITSOL/saylr1
@@ -0,0 +1,367 @@
+1UNSYMMETRIC MATRIX OF PAUL SAYLOR - 14 BY 17 2D GRID MAY, 1983 SAYLR1
+ 363 24 113 226 0
+RUA 238 238 1128 0
+(10I8) (10I8) (5E16.8)
+ 1 4 8 12 16 20 24 28 32 36
+ 40 44 48 52 55 59 64 69 74 79
+ 84 89 94 99 104 109 114 119 123 127
+ 132 137 142 147 152 157 162 167 172 177
+ 182 187 191 195 200 205 210 215 220 225
+ 230 235 240 245 250 255 259 263 268 273
+ 278 283 288 293 298 303 308 313 318 323
+ 327 331 336 341 346 351 356 361 366 371
+ 376 381 386 391 395 399 404 409 414 419
+ 424 429 434 439 444 449 454 459 463 467
+ 472 477 482 487 492 497 502 507 512 517
+ 522 527 531 535 540 545 550 555 560 565
+ 570 575 580 585 590 595 599 603 608 613
+ 618 623 628 633 638 643 648 653 658 663
+ 667 671 676 681 686 691 696 701 706 711
+ 716 721 726 731 735 739 744 749 754 759
+ 764 769 774 779 784 789 794 799 803 807
+ 812 817 822 827 832 837 842 847 852 857
+ 862 867 871 875 880 885 890 895 900 905
+ 910 915 920 925 930 935 939 943 948 953
+ 958 963 968 973 978 983 988 993 998 1003
+ 1007 1011 1016 1021 1026 1031 1036 1041 1046 1051
+ 1056 1061 1066 1071 1075 1078 1082 1086 1090 1094
+ 1098 1102 1106 1110 1114 1118 1122 1126 1129
+ 1 2 15 1 2 3 16 2 3 4
+ 17 3 4 5 18 4 5 6 19 5
+ 6 7 20 6 7 8 21 7 8 9
+ 22 8 9 10 23 9 10 11 24 10
+ 11 12 25 11 12 13 26 12 13 14
+ 27 13 14 28 1 15 16 29 2 15
+ 16 17 30 3 16 17 18 31 4 17
+ 18 19 32 5 18 19 20 33 6 19
+ 20 21 34 7 20 21 22 35 8 21
+ 22 23 36 9 22 23 24 37 10 23
+ 24 25 38 11 24 25 26 39 12 25
+ 26 27 40 13 26 27 28 41 14 27
+ 28 42 15 29 30 43 16 29 30 31
+ 44 17 30 31 32 45 18 31 32 33
+ 46 19 32 33 34 47 20 33 34 35
+ 48 21 34 35 36 49 22 35 36 37
+ 50 23 36 37 38 51 24 37 38 39
+ 52 25 38 39 40 53 26 39 40 41
+ 54 27 40 41 42 55 28 41 42 56
+ 29 43 44 57 30 43 44 45 58 31
+ 44 45 46 59 32 45 46 47 60 33
+ 46 47 48 61 34 47 48 49 62 35
+ 48 49 50 63 36 49 50 51 64 37
+ 50 51 52 65 38 51 52 53 66 39
+ 52 53 54 67 40 53 54 55 68 41
+ 54 55 56 69 42 55 56 70 43 57
+ 58 71 44 57 58 59 72 45 58 59
+ 60 73 46 59 60 61 74 47 60 61
+ 62 75 48 61 62 63 76 49 62 63
+ 64 77 50 63 64 65 78 51 64 65
+ 66 79 52 65 66 67 80 53 66 67
+ 68 81 54 67 68 69 82 55 68 69
+ 70 83 56 69 70 84 57 71 72 85
+ 58 71 72 73 86 59 72 73 74 87
+ 60 73 74 75 88 61 74 75 76 89
+ 62 75 76 77 90 63 76 77 78 91
+ 64 77 78 79 92 65 78 79 80 93
+ 66 79 80 81 94 67 80 81 82 95
+ 68 81 82 83 96 69 82 83 84 97
+ 70 83 84 98 71 85 86 99 72 85
+ 86 87 100 73 86 87 88 101 74 87
+ 88 89 102 75 88 89 90 103 76 89
+ 90 91 104 77 90 91 92 105 78 91
+ 92 93 106 79 92 93 94 107 80 93
+ 94 95 108 81 94 95 96 109 82 95
+ 96 97 110 83 96 97 98 111 84 97
+ 98 112 85 99 100 113 86 99 100 101
+ 114 87 100 101 102 115 88 101 102 103
+ 116 89 102 103 104 117 90 103 104 105
+ 118 91 104 105 106 119 92 105 106 107
+ 120 93 106 107 108 121 94 107 108 109
+ 122 95 108 109 110 123 96 109 110 111
+ 124 97 110 111 112 125 98 111 112 126
+ 99 113 114 127 100 113 114 115 128 101
+ 114 115 116 129 102 115 116 117 130 103
+ 116 117 118 131 104 117 118 119 132 105
+ 118 119 120 133 106 119 120 121 134 107
+ 120 121 122 135 108 121 122 123 136 109
+ 122 123 124 137 110 123 124 125 138 111
+ 124 125 126 139 112 125 126 140 113 127
+ 128 141 114 127 128 129 142 115 128 129
+ 130 143 116 129 130 131 144 117 130 131
+ 132 145 118 131 132 133 146 119 132 133
+ 134 147 120 133 134 135 148 121 134 135
+ 136 149 122 135 136 137 150 123 136 137
+ 138 151 124 137 138 139 152 125 138 139
+ 140 153 126 139 140 154 127 141 142 155
+ 128 141 142 143 156 129 142 143 144 157
+ 130 143 144 145 158 131 144 145 146 159
+ 132 145 146 147 160 133 146 147 148 161
+ 134 147 148 149 162 135 148 149 150 163
+ 136 149 150 151 164 137 150 151 152 165
+ 138 151 152 153 166 139 152 153 154 167
+ 140 153 154 168 141 155 156 169 142 155
+ 156 157 170 143 156 157 158 171 144 157
+ 158 159 172 145 158 159 160 173 146 159
+ 160 161 174 147 160 161 162 175 148 161
+ 162 163 176 149 162 163 164 177 150 163
+ 164 165 178 151 164 165 166 179 152 165
+ 166 167 180 153 166 167 168 181 154 167
+ 168 182 155 169 170 183 156 169 170 171
+ 184 157 170 171 172 185 158 171 172 173
+ 186 159 172 173 174 187 160 173 174 175
+ 188 161 174 175 176 189 162 175 176 177
+ 190 163 176 177 178 191 164 177 178 179
+ 192 165 178 179 180 193 166 179 180 181
+ 194 167 180 181 182 195 168 181 182 196
+ 169 183 184 197 170 183 184 185 198 171
+ 184 185 186 199 172 185 186 187 200 173
+ 186 187 188 201 174 187 188 189 202 175
+ 188 189 190 203 176 189 190 191 204 177
+ 190 191 192 205 178 191 192 193 206 179
+ 192 193 194 207 180 193 194 195 208 181
+ 194 195 196 209 182 195 196 210 183 197
+ 198 211 184 197 198 199 212 185 198 199
+ 200 213 186 199 200 201 214 187 200 201
+ 202 215 188 201 202 203 216 189 202 203
+ 204 217 190 203 204 205 218 191 204 205
+ 206 219 192 205 206 207 220 193 206 207
+ 208 221 194 207 208 209 222 195 208 209
+ 210 223 196 209 210 224 197 211 212 225
+ 198 211 212 213 226 199 212 213 214 227
+ 200 213 214 215 228 201 214 215 216 229
+ 202 215 216 217 230 203 216 217 218 231
+ 204 217 218 219 232 205 218 219 220 233
+ 206 219 220 221 234 207 220 221 222 235
+ 208 221 222 223 236 209 222 223 224 237
+ 210 223 224 238 211 225 226 212 225 226
+ 227 213 226 227 228 214 227 228 229 215
+ 228 229 230 216 229 230 231 217 230 231
+ 232 218 231 232 233 219 232 233 234 220
+ 233 234 235 221 234 235 236 222 235 236
+ 237 223 236 237 238 224 237 238
+ -.19315000E+02 .19311000E+02 .44227000E-02 .19311000E+02 -.38640000E+02
+ .19311000E+02 .17691000E-01 .19311000E+02 -.38693000E+02 .19311000E+02
+ .70763000E-01 .19311000E+02 -.38905000E+02 .19311000E+02 .28305000E+00
+ .19311000E+02 -.39755000E+02 .19311000E+02 .11322000E+01 .19311000E+02
+ -.43156000E+02 .19311000E+02 .45289000E+01 .19311000E+02 -.56756000E+02
+ .19311000E+02 .18115000E+02 .19311000E+02 -.11116000E+03 .19311000E+02
+ .72462000E+02 .19311000E+02 -.32877000E+03 .19311000E+02 .28985000E+03
+ .19311000E+02 -.11992000E+04 .19310000E+02 .11593000E+04 .19310000E+02
+ -.46805000E+04 .19309000E+02 .46370000E+04 .19309000E+02 -.18586000E+05
+ .11061000E+02 .18536000E+05 .11060000E+02 -.75788000E+05 .19722000E+02
+ .75689000E+05 .19699000E+02 -.41574000E+08 .41579000E+08 .44227000E-02
+ -.10241000E+04 .10230000E+04 .11876000E+01 .17691000E-01 .10230000E+04
+ -.20507000E+04 .10230000E+04 .47506000E+01 .70763000E-01 .10230000E+04
+ -.20650000E+04 .10230000E+04 .19002000E+02 .28305000E+00 .10230000E+04
+ -.21222000E+04 .10230000E+04 .76009000E+02 .11322000E+01 .10230000E+04
+ -.23511000E+04 .10230000E+04 .30404000E+03 .45288000E+01 .10230000E+04
+ -.32666000E+04 .10230000E+04 .12161000E+04 .18115000E+02 .10230000E+04
+ -.69286000E+04 .10229000E+04 .48646000E+04 .72461000E+02 .10229000E+04
+ -.21577000E+05 .10230000E+04 .19458000E+05 .28984000E+03 .10230000E+04
+ -.80170000E+05 .10229000E+04 .77833000E+05 .11593000E+04 .10229000E+04
+ -.31474000E+06 .10229000E+04 .31153000E+06 .46369000E+04 .10229000E+04
+ -.12527000E+07 .10229000E+04 .12460000E+07 .18536000E+05 .10229000E+04
+ -.50005000E+07 .34724000E+03 .49805000E+07 .75682000E+05 .34710000E+03
+ -.27150000E+08 .13908000E+04 .27075000E+08 .41574000E+08 .13891000E+04
+ -.90850000E+08 .49273000E+08 .11876000E+01 -.19842000E+03 .19612000E+03
+ .11083000E+01 .47505000E+01 .19612000E+03 -.40143000E+03 .19612000E+03
+ .44330000E+01 .19002000E+02 .19612000E+03 -.42898000E+03 .19612000E+03
+ .17732000E+02 .76008000E+02 .19612000E+03 -.53918000E+03 .19612000E+03
+ .70928000E+02 .30403000E+03 .19612000E+03 -.97999000E+03 .19612000E+03
+ .28371000E+03 .12161000E+04 .19612000E+03 -.27432000E+04 .19612000E+03
+ .11348000E+04 .48645000E+04 .19612000E+03 -.97962000E+04 .19612000E+03
+ .45394000E+04 .19458000E+05 .19612000E+03 -.38008000E+05 .19612000E+03
+ .18158000E+05 .77832000E+05 .19612000E+03 -.15086000E+06 .19612000E+03
+ .72630000E+05 .31152000E+06 .19612000E+03 -.60243000E+06 .19612000E+03
+ .29051000E+06 .12460000E+07 .19612000E+03 -.24083000E+07 .19611000E+03
+ .11619000E+07 .49805000E+07 .19610000E+03 -.96025000E+07 .19986000E+03
+ .46215000E+07 .27072000E+08 .19977000E+03 -.52340000E+08 .26683000E+03
+ .25265000E+08 .49269000E+08 .26651000E+03 -.20234000E+09 .15307000E+09
+ .11082000E+01 -.61428000E+02 .59668000E+02 .65184000E+00 .44330000E+01
+ .59668000E+02 -.12638000E+03 .59667000E+02 .26074000E+01 .17732000E+02
+ .59667000E+02 -.14750000E+03 .59667000E+02 .10429000E+02 .70928000E+02
+ .59667000E+02 -.23198000E+03 .59667000E+02 .41718000E+02 .28371000E+03
+ .59667000E+02 -.56992000E+03 .59667000E+02 .16687000E+03 .11348000E+04
+ .59667000E+02 -.19217000E+04 .59668000E+02 .66748000E+03 .45394000E+04
+ .59668000E+02 -.73287000E+04 .59667000E+02 .26699000E+04 .18158000E+05
+ .59667000E+02 -.28957000E+05 .59668000E+02 .10680000E+05 .72630000E+05
+ .59668000E+02 -.11547000E+06 .59667000E+02 .42719000E+05 .29051000E+06
+ .59667000E+02 -.46144000E+06 .59645000E+02 .17081000E+06 .11619000E+07
+ .59645000E+02 -.18448000E+07 .59602000E+02 .68272000E+06 .46215000E+07
+ .59601000E+02 -.73360000E+07 .60828000E+02 .27143000E+07 .25264000E+08
+ .60800000E+02 -.40130000E+08 .81211000E+02 .14866000E+08 .15306000E+09
+ .81113000E+02 -.30614000E+09 .15307000E+09 .65184000E+00 -.60995000E+02
+ .59561000E+02 .78233000E+00 .26073000E+01 .59561000E+02 -.12486000E+03
+ .59561000E+02 .31293000E+01 .10429000E+02 .59561000E+02 -.14207000E+03
+ .59561000E+02 .12517000E+02 .41718000E+02 .59561000E+02 -.21091000E+03
+ .59561000E+02 .50069000E+02 .16687000E+03 .59561000E+02 -.48627000E+03
+ .59561000E+02 .20028000E+03 .66748000E+03 .59561000E+02 -.15877000E+04
+ .59561000E+02 .80110000E+03 .26699000E+04 .59561000E+02 -.59935000E+04
+ .59561000E+02 .32044000E+04 .10680000E+05 .59561000E+02 -.23616000E+05
+ .59561000E+02 .12818000E+05 .42719000E+05 .59561000E+02 -.94109000E+05
+ .59561000E+02 .51271000E+05 .17081000E+06 .59561000E+02 -.37593000E+06
+ .59539000E+02 .20500000E+06 .68272000E+06 .59539000E+02 -.15022000E+07
+ .59496000E+02 .81940000E+06 .27143000E+07 .59495000E+02 -.59721000E+07
+ .60830000E+02 .32577000E+07 .14865000E+08 .60802000E+02 -.32739000E+08
+ .81214000E+02 .17875000E+08 .15307000E+09 .81116000E+02 -.21674000E+09
+ .63673000E+08 .78232000E+00 -.66882000E+03 .66802000E+03 .10723000E-01
+ .31293000E+01 .66802000E+03 -.13392000E+04 .66802000E+03 .42892000E-01
+ .12517000E+02 .66802000E+03 -.13487000E+04 .66802000E+03 .17157000E+00
+ .50069000E+02 .66802000E+03 -.13868000E+04 .66802000E+03 .68627000E+00
+ .20027000E+03 .66802000E+03 -.15391000E+04 .66802000E+03 .27451000E+01
+ .80110000E+03 .66802000E+03 -.21482000E+04 .66803000E+03 .10980000E+02
+ .32044000E+04 .66803000E+03 -.45844000E+04 .66802000E+03 .43921000E+02
+ .12818000E+05 .66802000E+03 -.14330000E+05 .66803000E+03 .17569000E+03
+ .51270000E+05 .66803000E+03 -.53311000E+05 .66802000E+03 .70274000E+03
+ .20500000E+06 .66802000E+03 -.20915000E+06 .66777000E+03 .28099000E+04
+ .81939000E+06 .66777000E+03 -.83198000E+06 .66729000E+03 .11231000E+05
+ .32577000E+07 .66729000E+03 -.33028000E+07 .68526000E+03 .43718000E+05
+ .17873000E+08 .68492000E+03 -.18122000E+08 .91488000E+03 .24607000E+06
+ .63668000E+08 .91379000E+03 -.11417000E+09 .50497000E+08 .10723000E-01
+ -.73415000E+02 .73396000E+02 .79713000E-02 .42892000E-01 .73396000E+02
+ -.14687000E+03 .73396000E+02 .31885000E-01 .17157000E+00 .73396000E+02
+ -.14709000E+03 .73396000E+02 .12754000E+00 .68626000E+00 .73396000E+02
+ -.14799000E+03 .73396000E+02 .51016000E+00 .27451000E+01 .73396000E+02
+ -.15158000E+03 .73396000E+02 .20406000E+01 .10980000E+02 .73396000E+02
+ -.16594000E+03 .73396000E+02 .81626000E+01 .43921000E+02 .73396000E+02
+ -.22340000E+03 .73395000E+02 .32650000E+02 .17568000E+03 .73395000E+02
+ -.45321000E+03 .73396000E+02 .13060000E+03 .70273000E+03 .73396000E+02
+ -.13725000E+04 .73396000E+02 .52240000E+03 .28099000E+04 .73396000E+02
+ -.50431000E+04 .73214000E+02 .20845000E+04 .11231000E+05 .73214000E+02
+ -.19682000E+05 .72862000E+02 .82963000E+04 .43717000E+05 .72861000E+02
+ -.75025000E+05 .76553000E+02 .31124000E+05 .24605000E+06 .76514000E+02
+ -.43229000E+06 .10220000E+03 .18599000E+06 .50492000E+08 .10208000E+03
+ -.14275000E+09 .92259000E+08 .79712000E-02 -.18212000E+02 .18188000E+02
+ .16022000E-01 .31885000E-01 .18188000E+02 -.36471000E+02 .18188000E+02
+ .64087000E-01 .12754000E+00 .18188000E+02 -.36759000E+02 .18188000E+02
+ .25635000E+00 .51016000E+00 .18188000E+02 -.37911000E+02 .18188000E+02
+ .10254000E+01 .20406000E+01 .18188000E+02 -.42518000E+02 .18188000E+02
+ .41016000E+01 .81625000E+01 .18188000E+02 -.60947000E+02 .18188000E+02
+ .16406000E+02 .32650000E+02 .18188000E+02 -.13466000E+03 .18187000E+02
+ .65625000E+02 .13060000E+03 .18187000E+02 -.42953000E+03 .18188000E+02
+ .26250000E+03 .52240000E+03 .18188000E+02 -.16090000E+04 .18188000E+02
+ .10500000E+04 .20845000E+04 .18188000E+02 -.63057000E+04 .17983000E+02
+ .41843000E+04 .82963000E+04 .17983000E+02 -.24946000E+05 .17992000E+02
+ .16611000E+05 .31123000E+05 .17992000E+02 -.91145000E+05 .19391000E+02
+ .59971000E+05 .18598000E+06 .19380000E+02 -.56810000E+06 .25884000E+02
+ .38205000E+06 .92255000E+08 .25853000E+02 -.23912000E+09 .14687000E+09
+ .16022000E-01 -.17169000E+02 .17139000E+02 .13402000E-01 .64087000E-01
+ .17139000E+02 -.34396000E+02 .17139000E+02 .53610000E-01 .25635000E+00
+ .17139000E+02 -.34750000E+02 .17139000E+02 .21444000E+00 .10254000E+01
+ .17139000E+02 -.36162000E+02 .17139000E+02 .85776000E+00 .41015000E+01
+ .17139000E+02 -.41812000E+02 .17139000E+02 .34310000E+01 .16406000E+02
+ .17139000E+02 -.64412000E+02 .17139000E+02 .13724000E+02 .65625000E+02
+ .17139000E+02 -.15481000E+03 .17139000E+02 .54897000E+02 .26250000E+03
+ .17139000E+02 -.51641000E+03 .17139000E+02 .21959000E+03 .10500000E+04
+ .17139000E+02 -.19628000E+04 .17139000E+02 .87835000E+03 .41842000E+04
+ .17139000E+02 -.77191000E+04 .16943000E+02 .35000000E+04 .16611000E+05
+ .16943000E+02 -.29996000E+05 .16965000E+02 .13348000E+05 .59971000E+05
+ .16965000E+02 -.10824000E+06 .18620000E+02 .48224000E+05 .38204000E+06
+ .18610000E+02 -.70770000E+06 .24850000E+02 .32559000E+06 .14686000E+09
+ .24820000E+02 -.27202000E+09 .12516000E+09 .13402000E-01 -.23312000E+02
+ .23288000E+02 .10209000E-01 .53610000E-01 .23288000E+02 -.46670000E+02
+ .23288000E+02 .40838000E-01 .21444000E+00 .23288000E+02 -.46954000E+02
+ .23288000E+02 .16335000E+00 .85776000E+00 .23288000E+02 -.48087000E+02
+ .23288000E+02 .65341000E+00 .34310000E+01 .23288000E+02 -.52622000E+02
+ .23288000E+02 .26136000E+01 .13724000E+02 .23288000E+02 -.70759000E+02
+ .23288000E+02 .10454000E+02 .54896000E+02 .23288000E+02 -.14331000E+03
+ .23288000E+02 .41818000E+02 .21959000E+03 .23288000E+02 -.43350000E+03
+ .23288000E+02 .16727000E+03 .87834000E+03 .23288000E+02 -.15943000E+04
+ .23289000E+02 .66909000E+03 .35000000E+04 .23289000E+02 -.62015000E+04
+ .22727000E+02 .26543000E+04 .13348000E+05 .22727000E+02 -.23849000E+05
+ .22786000E+02 .10451000E+05 .48224000E+05 .22786000E+02 -.82693000E+05
+ .26002000E+02 .34403000E+05 .32558000E+06 .25988000E+02 -.58040000E+06
+ .34688000E+02 .25473000E+06 .12516000E+09 .34646000E+02 -.22308000E+09
+ .97921000E+08 .10209000E-01 -.26199000E+02 .26172000E+02 .17566000E-01
+ .40838000E-01 .26172000E+02 -.52454000E+02 .26171000E+02 .70262000E-01
+ .16335000E+00 .26171000E+02 -.52787000E+02 .26171000E+02 .28105000E+00
+ .65340000E+00 .26171000E+02 -.54121000E+02 .26172000E+02 .11242000E+01
+ .26136000E+01 .26172000E+02 -.59455000E+02 .26171000E+02 .44968000E+01
+ .10454000E+02 .26171000E+02 -.80790000E+02 .26172000E+02 .17987000E+02
+ .41818000E+02 .26172000E+02 -.16613000E+03 .26171000E+02 .71949000E+02
+ .16727000E+03 .26171000E+02 -.50749000E+03 .26172000E+02 .28779000E+03
+ .66908000E+03 .26172000E+02 -.18729000E+04 .26173000E+02 .11512000E+04
+ .26543000E+04 .26173000E+02 -.72783000E+04 .25355000E+02 .45712000E+04
+ .10451000E+05 .25355000E+02 -.28384000E+05 .25518000E+02 .17877000E+05
+ .34402000E+05 .25518000E+02 -.91977000E+05 .31083000E+02 .57497000E+05
+ .25472000E+06 .31065000E+02 -.72041000E+06 .41421000E+02 .46560000E+06
+ .97916000E+08 .41371000E+02 -.18360000E+09 .85686000E+08 .17566000E-01
+ -.20525000E+03 .20514000E+03 .10188000E+00 .70262000E-01 .20514000E+03
+ -.41075000E+03 .20513000E+03 .40752000E+00 .28105000E+00 .20513000E+03
+ -.41218000E+03 .20513000E+03 .16301000E+01 .11242000E+01 .20513000E+03
+ -.41791000E+03 .20513000E+03 .65203000E+01 .44968000E+01 .20513000E+03
+ -.44085000E+03 .20513000E+03 .26081000E+02 .17987000E+02 .20513000E+03
+ -.53259000E+03 .20514000E+03 .10433000E+03 .71948000E+02 .20514000E+03
+ -.89955000E+03 .20513000E+03 .41730000E+03 .28779000E+03 .20513000E+03
+ -.23674000E+04 .20514000E+03 .16692000E+04 .11512000E+04 .20514000E+03
+ -.82388000E+04 .20519000E+03 .66768000E+04 .45711000E+04 .20519000E+03
+ -.31292000E+05 .19413000E+03 .26319000E+05 .17877000E+05 .19413000E+03
+ -.11990000E+06 .20783000E+03 .10161000E+06 .57497000E+05 .20783000E+03
+ -.62841000E+06 .27437000E+03 .57044000E+06 .46557000E+06 .27421000E+03
+ -.34580000E+07 .35999000E+03 .29918000E+07 .85682000E+08 .35955000E+03
+ -.16566000E+09 .79979000E+08 .10188000E+00 -.64083000E+01 .62616000E+01
+ .44813000E-01 .40752000E+00 .62616000E+01 -.13110000E+02 .62616000E+01
+ .17925000E+00 .16301000E+01 .62616000E+01 -.14870000E+02 .62616000E+01
+ .71701000E+00 .65203000E+01 .62616000E+01 -.21912000E+02 .62616000E+01
+ .28681000E+01 .26081000E+02 .62616000E+01 -.50077000E+02 .62616000E+01
+ .11472000E+02 .10432000E+03 .62616000E+01 -.16274000E+03 .62617000E+01
+ .45889000E+02 .41730000E+03 .62617000E+01 -.61339000E+03 .62616000E+01
+ .18356000E+03 .16692000E+04 .62616000E+01 -.24160000E+04 .62617000E+01
+ .73422000E+03 .66768000E+04 .62617000E+01 -.96263000E+04 .62676000E+01
+ .29369000E+04 .26319000E+05 .62676000E+01 -.38082000E+05 .57582000E+01
+ .11750000E+05 .10161000E+06 .57582000E+01 -.14865000E+06 .98239000E+01
+ .47020000E+05 .57041000E+06 .98231000E+01 -.82070000E+06 .13079000E+02
+ .25026000E+06 .29917000E+07 .13071000E+02 -.39935000E+07 .13096000E+02
+ .10017000E+07 .79974000E+08 .13080000E+02 -.13032000E+09 .50342000E+08
+ .44811000E-01 -.15302000E+03 .15298000E+03 .17261000E-02 .17924000E+00
+ .15298000E+03 -.30614000E+03 .15298000E+03 .69044000E-02 .71697000E+00
+ .15298000E+03 -.30670000E+03 .15298000E+03 .27618000E-01 .28679000E+01
+ .15298000E+03 -.30893000E+03 .15298000E+03 .11047000E+00 .11472000E+02
+ .15298000E+03 -.31787000E+03 .15298000E+03 .44188000E+00 .45886000E+02
+ .15298000E+03 -.35362000E+03 .15298000E+03 .17675000E+01 .18354000E+03
+ .15298000E+03 -.49660000E+03 .15298000E+03 .70701000E+01 .73418000E+03
+ .15298000E+03 -.10685000E+04 .15298000E+03 .28280000E+02 .29367000E+04
+ .15298000E+03 -.33563000E+04 .15298000E+03 .11312000E+03 .11749000E+05
+ .15298000E+03 -.12510000E+05 .15298000E+03 .45249000E+03 .47017000E+05
+ .15298000E+03 -.49142000E+05 .15300000E+03 .18100000E+04 .25023000E+06
+ .15298000E+03 -.25783000E+06 .15310000E+03 .72408000E+04 .10016000E+07
+ .15301000E+03 -.10311000E+07 .15331000E+03 .28983000E+05 .50337000E+08
+ .15312000E+03 -.87166000E+08 .36828000E+08 .17259000E-02 -.27385000E+02
+ .27382000E+02 .12300000E-02 .69035000E-02 .27382000E+02 -.54775000E+02
+ .27382000E+02 .49201000E-02 .27614000E-01 .27382000E+02 -.54811000E+02
+ .27382000E+02 .19680000E-01 .11046000E+00 .27382000E+02 -.54953000E+02
+ .27382000E+02 .78722000E-01 .44183000E+00 .27382000E+02 -.55521000E+02
+ .27382000E+02 .31489000E+00 .17673000E+01 .27382000E+02 -.57794000E+02
+ .27382000E+02 .12595000E+01 .70692000E+01 .27382000E+02 -.66887000E+02
+ .27381000E+02 .50382000E+01 .28277000E+02 .27381000E+02 -.10326000E+03
+ .27382000E+02 .20153000E+02 .11311000E+03 .27382000E+02 -.24875000E+03
+ .27382000E+02 .80611000E+02 .45243000E+03 .27381000E+02 -.83072000E+03
+ .27382000E+02 .32245000E+03 .18098000E+04 .27382000E+02 -.31587000E+04
+ .27385000E+02 .12898000E+04 .72399000E+04 .27382000E+02 -.12472000E+05
+ .27403000E+02 .51598000E+04 .28980000E+05 .27387000E+02 -.49758000E+05
+ .27440000E+02 .20654000E+05 .36824000E+08 .27407000E+02 -.87893000E+08
+ .51069000E+08 .12299000E-02 -.11818000E+02 .11816000E+02 .71977000E-03
+ .49197000E-02 .11816000E+02 -.23639000E+02 .11816000E+02 .28791000E-02
+ .19679000E-01 .11816000E+02 -.23662000E+02 .11816000E+02 .11516000E-01
+ .78714000E-01 .11816000E+02 -.23756000E+02 .11816000E+02 .46065000E-01
+ .31486000E+00 .11816000E+02 -.24131000E+02 .11816000E+02 .18426000E+00
+ .12594000E+01 .11816000E+02 -.25630000E+02 .11816000E+02 .73704000E+00
+ .50377000E+01 .11816000E+02 -.31624000E+02 .11816000E+02 .29482000E+01
+ .20151000E+02 .11816000E+02 -.55603000E+02 .11816000E+02 .11793000E+02
+ .80604000E+02 .11816000E+02 -.15152000E+03 .11816000E+02 .47171000E+02
+ .32242000E+03 .11816000E+02 -.53519000E+03 .11816000E+02 .18868000E+03
+ .12897000E+04 .11816000E+02 -.20699000E+04 .11817000E+02 .75475000E+03
+ .51594000E+04 .11816000E+02 -.82096000E+04 .11825000E+02 .30193000E+04
+ .20652000E+05 .11818000E+02 -.32791000E+05 .11841000E+02 .12086000E+05
+ .51064000E+08 .11827000E+02 -.80948000E+08 .29884000E+08 .71965000E-03
+ -.55197000E+02 .55196000E+02 .28786000E-02 .55196000E+02 -.11039000E+03
+ .55196000E+02 .11514000E-01 .55196000E+02 -.11040000E+03 .55196000E+02
+ .46058000E-01 .55196000E+02 -.11044000E+03 .55196000E+02 .18423000E+00
+ .55196000E+02 -.11058000E+03 .55196000E+02 .73693000E+00 .55196000E+02
+ -.11114000E+03 .55196000E+02 .29477000E+01 .55196000E+02 -.11337000E+03
+ .55195000E+02 .11791000E+02 .55195000E+02 -.12232000E+03 .55196000E+02
+ .47163000E+02 .55196000E+02 -.15809000E+03 .55196000E+02 .18865000E+03
+ .55195000E+02 -.30120000E+03 .55197000E+02 .75463000E+03 .55196000E+02
+ -.87365000E+03 .55203000E+02 .30189000E+04 .55197000E+02 -.31638000E+04
+ .55240000E+02 .12084000E+05 .55206000E+02 -.12333000E+05 .55315000E+02
+ .29879000E+08 .55248000E+02 -.29912000E+08
diff --git a/LGPL b/LGPL
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/LGPL
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/MATGEN/FDIF/README b/MATGEN/FDIF/README
new file mode 100644
index 0000000..0abf798
--- /dev/null
+++ b/MATGEN/FDIF/README
@@ -0,0 +1,31 @@
+This directory contains the routines that generate finite difference
+matrices from a second order elliptic operator.
+
+ 1) 5-pt and 7-pt matrices on rectangular regions discretizing
+ elliptic operators of the form:
+
+ L u == delx( a delx u ) + dely ( b dely u) + delz ( c delz u ) +
+ delx ( d u ) + dely (e u) + delz( f u ) + g u = h u
+
+ with Boundary conditions,
+ alpha del u / del n + beta u = gamma
+ on a rectangular 1-D, 2-D or 3-D grid using centered
+ difference scheme or upwind scheme.
+
+ The functions a, b, ..., h are known through the
+ subroutines afun, bfun, ..., hfun in the file
+ functns.f. The alpha is a constant on each side of the
+ rectanglar domain. the beta and the gamma are defined
+ by the functions betfun and gamfun (see functns.f for
+ examples).
+
+ 2) block version of the finite difference matrices (several degrees of
+ freedom per grid point. ) It only generates the matrix (without
+ the right-hand-side), only Dirichlet Boundary conditions are used.
+
+genmat.f ---- the matrix generation routines.
+functns.f --- functions used by the genmat.f
+
+to test the 5-point/7-point matrix please see mak57pt
+to test the block version of the 5-point/7-point matrix see mak57bl
+
diff --git a/MATGEN/FDIF/functns.f b/MATGEN/FDIF/functns.f
new file mode 100644
index 0000000..329f1ef
--- /dev/null
+++ b/MATGEN/FDIF/functns.f
@@ -0,0 +1,171 @@
+c-----------------------------------------------------------------------
+c contains the functions needed for defining the PDE poroblems.
+c
+c first for the scalar 5-point and 7-point PDE
+c-----------------------------------------------------------------------
+ function afun (x,y,z)
+ real*8 afun, x,y,z
+ afun = -1.0d0
+ return
+ end
+
+ function bfun (x,y,z)
+ real*8 bfun, x,y,z
+ bfun = -1.0d0
+ return
+ end
+
+ function cfun (x,y,z)
+ real*8 cfun, x,y,z
+ cfun = -1.0d0
+ return
+ end
+
+ function dfun (x,y,z)
+ real*8 dfun, x,y,z
+ data gamma /100.0/
+c dfun = gamma * exp( x * y )
+ dfun = 10.d0
+ return
+ end
+
+ function efun (x,y,z)
+ real*8 efun, x,y,z
+ data gamma /100.0/
+c efun = gamma * exp( (- x) * y )
+ efun = 0.d0
+ return
+ end
+
+ function ffun (x,y,z)
+ real*8 ffun, x,y,z
+ ffun = 0.0
+ return
+ end
+
+ function gfun (x,y,z)
+ real*8 gfun, x,y,z
+ gfun = 0.0
+ return
+ end
+
+ function hfun(x, y, z)
+ real*8 hfun, x, y, z
+ hfun = 0.0
+ return
+ end
+
+ function betfun(side, x, y, z)
+ real*8 betfun, x, y, z
+ character*2 side
+ betfun = 1.0
+ return
+ end
+
+ function gamfun(side, x, y, z)
+ real*8 gamfun, x, y, z
+ character*2 side
+ if (side.eq.'x2') then
+ gamfun = 5.0
+ else if (side.eq.'y1') then
+ gamfun = 2.0
+ else if (side.eq.'y2') then
+ gamfun = 7.0
+ else
+ gamfun = 0.0
+ endif
+ return
+ end
+
+c-----------------------------------------------------------------------
+c functions for the block PDE's
+c-----------------------------------------------------------------------
+ subroutine afunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine bfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine cfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine dfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine efunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine ffunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine gfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+c-----------------------------------------------------------------------
+c The material property function xyk for the
+c finite element problem
+c-----------------------------------------------------------------------
+ subroutine xyk(nel,xyke,x,y,ijk,node)
+ implicit real*8 (a-h,o-z)
+ dimension xyke(2,2), x(*), y(*), ijk(node,*)
+c
+c this is the identity matrix.
+c
+ xyke(1,1) = 1.0d0
+ xyke(2,2) = 1.0d0
+ xyke(1,2) = 0.0d0
+ xyke(2,1) = 0.0d0
+
+ return
+ end
diff --git a/MATGEN/FDIF/genmat.f b/MATGEN/FDIF/genmat.f
new file mode 100644
index 0000000..9d648e9
--- /dev/null
+++ b/MATGEN/FDIF/genmat.f
@@ -0,0 +1,1279 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c MATRIX GENERATION ROUTINES -- FINITE DIFFERENCE MATRICES c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c gen57pt : generates 5-point and 7-point matrices. c
+c gen57bl : generates block 5-point and 7-point matrices. c
+c c
+c supporting routines: c
+c--------- c
+c gensten : generate the stencil (point version) c
+c bsten : generate the stencil (block version) c
+c fdaddbc : finite difference add boundary conditions c
+c fdreduce : reduce the system to eliminate node with known values c
+c clrow : clear a row of a CSR matrix c
+c lctcsr : locate the position of A(i,j) in CSR format c
+c----------------------------------------------------------------------c
+ subroutine gen57pt(nx,ny,nz,al,mode,n,a,ja,ia,iau,rhs)
+ integer ja(*),ia(*),iau(*), nx, ny, nz, mode, n
+ real*8 a(*), rhs(*), al(6)
+c-----------------------------------------------------------------------
+c On entry:
+c
+c nx = number of grid points in x direction
+c ny = number of grid points in y direction
+c nz = number of grid points in z direction
+c al = array of size 6, carries the coefficient alpha of the
+c boundary conditions
+c mode = what to generate:
+c < 0 : generate the graph only,
+c = 0 : generate the matrix,
+c > 0 : generate the matrix and the right-hand side.
+c
+c On exit:
+c
+c n = number of nodes with unknown values, ie number of rows
+c in the matrix
+c
+c a,ja,ia = resulting matrix in row-sparse format
+c
+c iau = integer*n, containing the poisition of the diagonal element
+c in the a, ja, ia structure
+c
+c rhs = the right-hand side
+c
+c External functions needed (must be supplied by caller)
+c afun, bfun, cfun, dfun, efun, ffun, gfun, hfun
+c betfun, gamfun
+c They have the following prototype:
+c real*8 function xfun(x, y, z)
+c real*8 x, y, z
+c-----------------------------------------------------------------------
+c This subroutine computes the sparse matrix in compressed sparse row
+c format for the elliptic equation:
+c d du d du d du du du du
+c L u = --(A --) + --(B --) + --(C --) + D -- + E -- + F -- + G u = H u
+c dx dx dy dy dz dz dx dy dz
+c
+c with general Mixed Boundary conditions, on a rectangular 1-D,
+c 2-D or 3-D grid using 2nd order centered difference schemes.
+c
+c The functions a, b, ..., g, h are known through the
+c as afun, bfun, ..., gfun, hfun in this subroutine.
+c NOTE: To obtain the correct matrix, any function that is not
+c needed should be set to zero. For example for two-dimensional
+c problems, nz should be set to 1 and the functions cfun and ffun
+c should be zero functions.
+c
+c The Boundary condition is specified in the following form:
+c du
+c alpha -- + beta u = gamma
+c dn
+c Where alpha is constant at each side of the boundary surfaces. Alpha
+c is represented by parameter al. It is expected to an array that
+c contains enough elements to specify the boundaries for the problem,
+c 1-D case needs two elements, 2-D needs 4 and 3-D needs 6. The order
+c of the boundaries in the array is left(west), right(east),
+c bottom(south), top(north), front, rear. Beta and gamma are functions
+c of type real with three arguments x, y, z. These two functions are
+c known subroutine 'addbc' as betfun and gamfun. They should following
+c the same notion as afun ... hfun. For more restriction on afun ...
+c hfun, please read the documentation follows the subroutine 'getsten',
+c and, for more on betfun and gamfun, please refer to the documentation
+c under subroutine 'fdaddbc'.
+c
+c The nodes are ordered using natural ordering, first x direction, then
+c y, then z. The mesh size h is uniform and determined by grid points
+c in the x-direction.
+c
+c The domain specified for the problem is [0 .ge. x .ge. 1],
+c [0 .ge. y .ge. (ny-1)*h] and [0 .ge. z .ge. (nz-1)*h], where h is
+c 1 / (nx-1). Thus if non-Dirichlet boundary condition is specified,
+c the mesh will have nx points along the x direction, ny along y and
+c nz along z. For 1-D case, both y and z value are assumed to zero
+c when calling relavent functions that have three parameters.
+c Similarly, for 2-D case, z is assumed to be zero.
+c
+c About the expectation of nx, ny and nz:
+c nx is required to be .gt. 1 always;
+c if the second dimension is present in the problem, then ny should be
+c .gt. 1, else 1;
+c if the third dimension is present in the problem, nz .gt. 1, else 1.
+c when ny is 1, nz must be 1.
+c-----------------------------------------------------------------------
+c
+c stencil [1:7] has the following meaning:
+c
+c center point = stencil(1)
+c west point = stencil(2)
+c east point = stencil(3)
+c south point = stencil(4)
+c north point = stencil(5)
+c front point = stencil(6)
+c back point = stencil(7)
+c
+c al[1:6] carry the coefficient alpha in the similar order
+c
+c west side = al(1)
+c east side = al(2)
+c south side = al(3)
+c north side = al(4)
+c front side = al(5)
+c back side = al(6)
+c
+c al(4)
+c st(5)
+c |
+c |
+c | al(6)
+c | .st(7)
+c | .
+c al(1) | . al(2)
+c st(2) ----------- st(1) ---------- st(3)
+c . |
+c . |
+c . |
+c st(6) |
+c al(5) |
+c |
+c st(4)
+c al(3)
+c
+c-------------------------------------------------------------------
+c some constants
+c
+ real*8 one
+ parameter (one=1.0D0)
+c
+c local variables
+c
+ integer ix, iy, iz, kx, ky, kz, node, iedge
+ real*8 r, h, stencil(7)
+ logical value, genrhs
+c
+c nx has to be larger than 1
+c
+ if (nx.le.1) return
+ h = one / dble(nx-1)
+c
+c the mode
+c
+ value = (mode.ge.0)
+ genrhs = (mode.gt.0)
+c
+c first generate the whole matrix as if the boundary condition does
+c not exist
+c
+ kx = 1
+ ky = nx
+ kz = nx*ny
+ iedge = 1
+ node = 1
+ do 100 iz = 1,nz
+ do 90 iy = 1,ny
+ do 80 ix = 1,nx
+ ia(node) = iedge
+c
+c compute the stencil at the current node
+c
+ if (value) call
+ & getsten(nx,ny,nz,mode,ix-1,iy-1,iz-1,stencil,h,r)
+c west
+ if (ix.gt.1) then
+ ja(iedge)=node-kx
+ if (value) a(iedge) = stencil(2)
+ iedge=iedge + 1
+ end if
+c south
+ if (iy.gt.1) then
+ ja(iedge)=node-ky
+ if (value) a(iedge) = stencil(4)
+ iedge=iedge + 1
+ end if
+c front plane
+ if (iz.gt.1) then
+ ja(iedge)=node-kz
+ if (value) a(iedge) = stencil(6)
+ iedge=iedge + 1
+ endif
+c center node
+ ja(iedge) = node
+ iau(node) = iedge
+ if (value) a(iedge) = stencil(1)
+ iedge = iedge + 1
+c east
+ if (ix.lt.nx) then
+ ja(iedge)=node+kx
+ if (value) a(iedge) = stencil(3)
+ iedge=iedge + 1
+ end if
+c north
+ if (iy.lt.ny) then
+ ja(iedge)=node+ky
+ if (value) a(iedge) = stencil(5)
+ iedge=iedge + 1
+ end if
+c back plane
+ if (iz.lt.nz) then
+ ja(iedge)=node+kz
+ if (value) a(iedge) = stencil(7)
+ iedge=iedge + 1
+ end if
+c the right-hand side
+ if (genrhs) rhs(node) = r
+ node=node+1
+ 80 continue
+ 90 continue
+ 100 continue
+ ia(node)=iedge
+c
+c Add in the boundary conditions
+c
+ call fdaddbc(nx,ny,nz,a,ja,ia,iau,rhs,al,h)
+c
+c eliminate the boudary nodes from the matrix
+c
+ call fdreduce(nx,ny,nz,al,n,a,ja,ia,iau,rhs,stencil)
+c
+c done
+c
+ return
+c-----end-of-gen57pt----------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine getsten (nx,ny,nz,mode,kx,ky,kz,stencil,h,rhs)
+ integer nx,ny,nz,mode,kx,ky,kz
+ real*8 stencil(*),h,rhs,afun,bfun,cfun,dfun,efun,ffun,gfun,hfun
+ external afun,bfun,cfun,dfun,efun,ffun,gfun,hfun
+c-----------------------------------------------------------------------
+c This subroutine calculates the correct stencil values for
+c centered difference discretization of the elliptic operator
+c and the right-hand side
+c
+c L u = delx( A delx u ) + dely ( B dely u) + delz ( C delz u ) +
+c delx ( D u ) + dely (E u) + delz( F u ) + G u = H
+c
+c For 2-D problems the discretization formula that is used is:
+c
+c h**2 * Lu == A(i+1/2,j)*{u(i+1,j) - u(i,j)} +
+c A(i-1/2,j)*{u(i-1,j) - u(i,j)} +
+c B(i,j+1/2)*{u(i,j+1) - u(i,j)} +
+c B(i,j-1/2)*{u(i,j-1) - u(i,j)} +
+c (h/2)*D(i,j)*{u(i+1,j) - u(i-1,j)} +
+c (h/2)*E(i,j)*{u(i,j+1) - u(i,j-1)} +
+c (h/2)*E(i,j)*{u(i,j+1) - u(i,j-1)} +
+c (h**2)*G(i,j)*u(i,j)
+c-----------------------------------------------------------------------
+c some constants
+c
+ real*8 zero, half
+ parameter (zero=0.0D0,half=0.5D0)
+c
+c local variables
+c
+ integer k
+ real*8 hhalf,cntr, x, y, z, coeff
+c
+c if mode < 0, we shouldn't have come here
+c
+ if (mode .lt. 0) return
+c
+ do 200 k=1,7
+ stencil(k) = zero
+ 200 continue
+c
+ hhalf = h*half
+ x = h*dble(kx)
+ y = h*dble(ky)
+ z = h*dble(kz)
+ cntr = zero
+c differentiation wrt x:
+ coeff = afun(x+hhalf,y,z)
+ stencil(3) = stencil(3) + coeff
+ cntr = cntr + coeff
+c
+ coeff = afun(x-hhalf,y,z)
+ stencil(2) = stencil(2) + coeff
+ cntr = cntr + coeff
+c
+ coeff = dfun(x,y,z)*hhalf
+ stencil(3) = stencil(3) + coeff
+ stencil(2) = stencil(2) - coeff
+ if (ny .le. 1) goto 99
+c
+c differentiation wrt y:
+c
+ coeff = bfun(x,y+hhalf,z)
+ stencil(5) = stencil(5) + coeff
+ cntr = cntr + coeff
+c
+ coeff = bfun(x,y-hhalf,z)
+ stencil(4) = stencil(4) + coeff
+ cntr = cntr + coeff
+c
+ coeff = efun(x,y,z)*hhalf
+ stencil(5) = stencil(5) + coeff
+ stencil(4) = stencil(4) - coeff
+ if (nz .le. 1) goto 99
+c
+c differentiation wrt z:
+c
+ coeff = cfun(x,y,z+hhalf)
+ stencil(7) = stencil(7) + coeff
+ cntr = cntr + coeff
+c
+ coeff = cfun(x,y,z-hhalf)
+ stencil(6) = stencil(6) + coeff
+ cntr = cntr + coeff
+c
+ coeff = ffun(x,y,z)*hhalf
+ stencil(7) = stencil(7) + coeff
+ stencil(6) = stencil(6) - coeff
+c
+c contribution from function G:
+c
+ 99 coeff = gfun(x,y,z)
+ stencil(1) = h*h*coeff - cntr
+c
+c the right-hand side
+c
+ if (mode .gt. 0) rhs = h*h*hfun(x,y,z)
+c
+ return
+c------end-of-getsten---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine gen57bl (nx,ny,nz,nfree,na,n,a,ja,ia,iau,stencil)
+c implicit real*8 (a-h,o-z)
+ integer ja(*),ia(*),iau(*),nx,ny,nz,nfree,na,n
+ real*8 a(na,1), stencil(7,1)
+c--------------------------------------------------------------------
+c This subroutine computes the sparse matrix in compressed
+c format for the elliptic operator
+c
+c L u = delx( a . delx u ) + dely ( b . dely u) + delz ( c . delz u ) +
+c delx ( d . u ) + dely (e . u) + delz( f . u ) + g . u
+c
+c Here u is a vector of nfree componebts and each of the functions
+c a, b, c, d, e, f, g is an (nfree x nfree) matrix depending of
+c the coordinate (x,y,z).
+c with Dirichlet Boundary conditions, on a rectangular 1-D,
+c 2-D or 3-D grid using centered difference schemes.
+c
+c The functions a, b, ..., g are known through the
+c subroutines afunbl, bfunbl, ..., gfunbl. (user supplied) .
+c
+c uses natural ordering, first x direction, then y, then z
+c mesh size h is uniform and determined by grid points
+c in the x-direction.
+c
+c The output matrix is in Block -- Sparse Row format.
+c
+c--------------------------------------------------------------------
+c parameters:
+c-------------
+c Input:
+c ------
+c nx = number of points in x direction
+c ny = number of points in y direction
+c nz = number of points in z direction
+c nfree = number of degrees of freedom per point
+c na = first dimension of array a as declared in calling
+c program. Must be .ge. nfree**2
+c
+c Output:
+c ------
+c n = dimension of matrix (output)
+c
+c a, ja, ia = resulting matrix in Block Sparse Row format
+c a(1:nfree**2, j ) contains a nonzero block and ja(j)
+c contains the (block) column number of this block.
+c the block dimension of the matrix is n (output) and
+c therefore the total number of (scalar) rows is n x nfree.
+c
+c iau = integer*n containing the position of the diagonal element
+c in the a, ja, ia structure
+c
+c Work space:
+c------------
+c stencil = work array of size (7,nfree**2) [stores local stencils]
+c
+c--------------------------------------------------------------------
+c
+c stencil (1:7,*) has the following meaning:
+c
+c center point = stencil(1)
+c west point = stencil(2)
+c east point = stencil(3)
+c south point = stencil(4)
+c north point = stencil(5)
+c front point = stencil(6)
+c back point = stencil(7)
+c
+c
+c st(5)
+c |
+c |
+c |
+c | .st(7)
+c | .
+c | .
+c st(2) ----------- st(1) ---------- st(3)
+c . |
+c . |
+c . |
+c st(6) |
+c |
+c |
+c st(4)
+c
+c-------------------------------------------------------------------
+c some constants
+c
+ real*8 one
+ parameter (one=1.0D0)
+c
+c local variables
+c
+ integer iedge,ix,iy,iz,k,kx,ky,kz,nfree2,node
+ real*8 h
+c
+ h = one/dble(nx+1)
+ kx = 1
+ ky = nx
+ kz = nx*ny
+ nfree2 = nfree*nfree
+ iedge = 1
+ node = 1
+ do 100 iz = 1,nz
+ do 90 iy = 1,ny
+ do 80 ix = 1,nx
+ ia(node) = iedge
+ call bsten(nx,ny,nz,ix,iy,iz,nfree,stencil,h)
+c west
+ if (ix.gt.1) then
+ ja(iedge)=node-kx
+ do 4 k=1,nfree2
+ a(k,iedge) = stencil(2,k)
+ 4 continue
+ iedge=iedge + 1
+ end if
+c south
+ if (iy.gt.1) then
+ ja(iedge)=node-ky
+ do 5 k=1,nfree2
+ a(k,iedge) = stencil(4,k)
+ 5 continue
+ iedge=iedge + 1
+ end if
+c front plane
+ if (iz.gt.1) then
+ ja(iedge)=node-kz
+ do 6 k=1,nfree2
+ a(k,iedge) = stencil(6,k)
+ 6 continue
+ iedge=iedge + 1
+ endif
+c center node
+ ja(iedge) = node
+ iau(node) = iedge
+ do 7 k=1,nfree2
+ a(k,iedge) = stencil(1,k)
+ 7 continue
+ iedge = iedge + 1
+c -- upper part
+c east
+ if (ix.lt.nx) then
+ ja(iedge)=node+kx
+ do 8 k=1,nfree2
+ a(k,iedge) = stencil(3,k)
+ 8 continue
+ iedge=iedge + 1
+ end if
+c north
+ if (iy.lt.ny) then
+ ja(iedge)=node+ky
+ do 9 k=1,nfree2
+ a(k,iedge) = stencil(5,k)
+ 9 continue
+ iedge=iedge + 1
+ end if
+c back plane
+ if (iz.lt.nz) then
+ ja(iedge)=node+kz
+ do 10 k=1,nfree2
+ a(k,iedge) = stencil(7,k)
+ 10 continue
+ iedge=iedge + 1
+ end if
+c------next node -------------------------
+ node=node+1
+ 80 continue
+ 90 continue
+ 100 continue
+c
+c -- new version of BSR -- renumbering removed.
+c change numbering of nodes so that each ja(k) will contain the
+c actual column number in the original matrix of entry (1,1) of each
+c block (k).
+c do 101 k=1,iedge-1
+c ja(k) = (ja(k)-1)*nfree+1
+c 101 continue
+c
+c n = (node-1)*nfree
+ n = node-1
+ ia(node)=iedge
+ return
+c--------------end-of-gen57bl-------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine bsten (nx,ny,nz,kx,ky,kz,nfree,stencil,h)
+c-----------------------------------------------------------------------
+c This subroutine calcultes the correct block-stencil values for
+c centered difference discretization of the elliptic operator
+c (block version of stencil)
+c
+c L u = delx( a delx u ) + dely ( b dely u) + delz ( c delz u ) +
+c d delx ( u ) + e dely (u) + f delz( u ) + g u
+c
+c For 2-D problems the discretization formula that is used is:
+c
+c h**2 * Lu == a(i+1/2,j)*{u(i+1,j) - u(i,j)} +
+c a(i-1/2,j)*{u(i-1,j) - u(i,j)} +
+c b(i,j+1/2)*{u(i,j+1) - u(i,j)} +
+c b(i,j-1/2)*{u(i,j-1) - u(i,j)} +
+c (h/2)*d(i,j)*{u(i+1,j) - u(i-1,j)} +
+c (h/2)*e(i,j)*{u(i,j+1) - u(i,j-1)} +
+c (h/2)*e(i,j)*{u(i,j+1) - u(i,j-1)} +
+c (h**2)*g(i,j)*u(i,j)
+c-----------------------------------------------------------------------
+c some constants
+c
+ real*8 zero,half
+ parameter(zero=0.0D0,half=0.5D0)
+c
+c local variables
+c
+ integer i,k,kx,ky,kz,nfree,nfree2,nx,ny,nz
+ real*8 stencil(7,*), cntr(225), coeff(225),h,h2,hhalf,x,y,z
+c------------
+ if (nfree .gt. 15) then
+ print *, ' ERROR ** nfree too large '
+ stop
+ endif
+c
+ nfree2 = nfree*nfree
+ do 200 k=1, nfree2
+ cntr(k) = zero
+ do 199 i=1,7
+ stencil(i,k) = zero
+ 199 continue
+ 200 continue
+c------------
+ hhalf = h*half
+ h2 = h*h
+ x = h*dble(kx)
+ y = h*dble(ky)
+ z = h*dble(kz)
+c differentiation wrt x:
+ call afunbl(nfree,x+hhalf,y,z,coeff)
+ do 1 k=1, nfree2
+ stencil(3,k) = stencil(3,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 1 continue
+c
+ call afunbl(nfree,x-hhalf,y,z,coeff)
+ do 2 k=1, nfree2
+ stencil(2,k) = stencil(2,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 2 continue
+c
+ call dfunbl(nfree,x,y,z,coeff)
+ do 3 k=1, nfree2
+ stencil(3,k) = stencil(3,k) + coeff(k)*hhalf
+ stencil(2,k) = stencil(2,k) - coeff(k)*hhalf
+ 3 continue
+ if (ny .le. 1) goto 99
+c
+c differentiation wrt y:
+c
+ call bfunbl(nfree,x,y+hhalf,z,coeff)
+ do 4 k=1,nfree2
+ stencil(5,k) = stencil(5,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 4 continue
+c
+ call bfunbl(nfree,x,y-hhalf,z,coeff)
+ do 5 k=1, nfree2
+ stencil(4,k) = stencil(4,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 5 continue
+c
+ call efunbl(nfree,x,y,z,coeff)
+ do 6 k=1, nfree2
+ stencil(5,k) = stencil(5,k) + coeff(k)*hhalf
+ stencil(4,k) = stencil(4,k) - coeff(k)*hhalf
+ 6 continue
+ if (nz .le. 1) goto 99
+c
+c differentiation wrt z:
+c
+ call cfunbl(nfree,x,y,z+hhalf,coeff)
+ do 7 k=1, nfree2
+ stencil(7,k) = stencil(7,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 7 continue
+c
+ call cfunbl(nfree,x,y,z-hhalf,coeff)
+ do 8 k=1, nfree2
+ stencil(6,k) = stencil(6,k) + coeff(k)
+ cntr(k) = cntr(k) + coeff(k)
+ 8 continue
+c
+ call ffunbl(nfree,x,y,z,coeff)
+ do 9 k=1, nfree2
+ stencil(7,k) = stencil(7,k) + coeff(k)*hhalf
+ stencil(6,k) = stencil(6,k) - coeff(k)*hhalf
+ 9 continue
+c
+c discretization of product by g:
+c
+ 99 call gfunbl(nfree,x,y,z,coeff)
+ do 10 k=1, nfree2
+ stencil(1,k) = h2*coeff(k) - cntr(k)
+ 10 continue
+c
+ return
+c------------end of bsten-----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+ subroutine fdreduce(nx,ny,nz,alpha,n,a,ja,ia,iau,rhs,stencil)
+ implicit none
+ integer nx,ny, nz, n, ia(*), ja(*), iau(*)
+ real*8 alpha(*), a(*), rhs(*), stencil(*)
+c-----------------------------------------------------------------------
+c This subroutine tries to reduce the size of the matrix by looking
+c for Dirichlet boundary conditions at each surface and solve the boundary
+c value and modify the right-hand side of related nodes, then clapse all
+c the boundary nodes.
+c-----------------------------------------------------------------------
+c parameters
+c
+ real*8 zero
+ parameter(zero=0.0D0)
+c
+c local variables
+c
+ integer i,j,k,kx,ky,kz,lx,ux,ly,uy,lz,uz,node,nbnode,lk,ld,iedge
+ real*8 val
+ integer lctcsr
+ external lctcsr
+c
+c The first half of this subroutine will try to change the right-hand
+c side of all the nodes that has a neighbor with Dirichlet boundary
+c condition, since in this case the value of the boundary point is
+c known.
+c Then in the second half, we will try to eliminate the boundary
+c points with known values (with Dirichlet boundary condition).
+c
+ kx = 1
+ ky = nx
+ kz = nx*ny
+ lx = 1
+ ux = nx
+ ly = 1
+ uy = ny
+ lz = 1
+ uz = nz
+c
+c Here goes the first part. ----------------------------------------
+c
+c the left (west) side
+c
+ if (alpha(1) .eq. zero) then
+ lx = 2
+ do 10 k = 1, nz
+ do 11 j = 1, ny
+ node = (k-1)*kz + (j-1)*ky + 1
+ nbnode = node + kx
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 11 continue
+ 10 continue
+ endif
+c
+c right (east) side
+c
+ if (alpha(2) .eq. zero) then
+ ux = nx - 1
+ do 20 k = 1, nz
+ do 21 j = 1, ny
+ node = (k-1)*kz + (j-1)*ky + nx
+ nbnode = node - kx
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 21 continue
+ 20 continue
+ endif
+c
+c if it's only 1-D, skip the following part
+c
+ if (ny .le. 1) goto 100
+c
+c the bottom (south) side
+c
+ if (alpha(3) .eq. zero) then
+ ly = 2
+ do 30 k = 1, nz
+ do 31 i = lx, ux
+ node = (k-1)*kz + i
+ nbnode = node + ky
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 31 continue
+ 30 continue
+ endif
+c
+c top (north) side
+c
+ if (alpha(4) .eq. zero) then
+ uy = ny - 1
+ do 40 k = 1, nz
+ do 41 i = lx, ux
+ node = (k-1)*kz + i + (ny-1)*ky
+ nbnode = node - ky
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 41 continue
+ 40 continue
+ endif
+c
+c if only 2-D skip the following section on z
+c
+ if (nz .le. 1) goto 100
+c
+c the front surface
+c
+ if (alpha(5) .eq. zero) then
+ lz = 2
+ do 50 j = ly, uy
+ do 51 i = lx, ux
+ node = (j-1)*ky + i
+ nbnode = node + kz
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 51 continue
+ 50 continue
+ endif
+c
+c rear surface
+c
+ if (alpha(6) .eq. zero) then
+ uz = nz - 1
+ do 60 j = ly, uy
+ do 61 i = lx, ux
+ node = (nz-1)*kz + (j-1)*ky + i
+ nbnode = node - kz
+ lk = lctcsr(nbnode, node, ja, ia)
+ ld = iau(node)
+ val = rhs(node)/a(ld)
+c modify the rhs
+ rhs(nbnode) = rhs(nbnode) - a(lk)*val
+ 61 continue
+ 60 continue
+ endif
+c
+c now the second part ----------------------------------------------
+c
+c go through all the actual nodes with unknown values, collect all
+c of them to form a new matrix in compressed sparse row format.
+c
+ 100 kx = 1
+ ky = ux - lx + 1
+ kz = (uy - ly + 1) * ky
+ node = 1
+ iedge = 1
+ do 80 k = lz, uz
+ do 81 j = ly, uy
+ do 82 i = lx, ux
+c
+c the corresponding old node number
+ nbnode = ((k-1)*ny + j-1)*nx + i
+c
+c copy the row into local stencil, copy is done is the exact
+c same order as the stencil is written into array a
+ lk = ia(nbnode)
+ if (i.gt.1) then
+ stencil(2) = a(lk)
+ lk = lk + 1
+ end if
+ if (j.gt.1) then
+ stencil(4) = a(lk)
+ lk = lk + 1
+ end if
+ if (k.gt.1) then
+ stencil(6) = a(lk)
+ lk = lk + 1
+ end if
+ stencil(1) = a(lk)
+ lk = lk + 1
+ if (i.lt.nx) then
+ stencil(3) = a(lk)
+ lk = lk + 1
+ endif
+ if (j.lt.ny) then
+ stencil(5) = a(lk)
+ lk = lk + 1
+ end if
+ if (k.lt.nz) stencil(7) = a(lk)
+c
+c first the ia pointer -- points to the beginning of each row
+ ia(node) = iedge
+c
+c move the values from the local stencil to the new matrix
+c
+c the neighbor on the left (west)
+ if (i.gt.lx) then
+ ja(iedge)=node-kx
+ a(iedge) =stencil(2)
+ iedge=iedge + 1
+ end if
+c the neighbor below (south)
+ if (j.gt.ly) then
+ ja(iedge)=node-ky
+ a(iedge)=stencil(4)
+ iedge=iedge + 1
+ end if
+c the neighbor in the front
+ if (k.gt.lz) then
+ ja(iedge)=node-kz
+ a(iedge)=stencil(6)
+ iedge=iedge + 1
+ endif
+c center node (itself)
+ ja(iedge) = node
+ iau(node) = iedge
+ a(iedge) = stencil(1)
+ iedge = iedge + 1
+c the neighbor to the right (east)
+ if (i.lt.ux) then
+ ja(iedge)=node+kx
+ a(iedge)=stencil(3)
+ iedge=iedge + 1
+ end if
+c the neighbor above (north)
+ if (j.lt.uy) then
+ ja(iedge)=node+ky
+ a(iedge)=stencil(5)
+ iedge=iedge + 1
+ end if
+c the neighbor at the back
+ if (k.lt.uz) then
+ ja(iedge)=node+kz
+ a(iedge)=stencil(7)
+ iedge=iedge + 1
+ end if
+c the right-hand side
+ rhs(node) = rhs(nbnode)
+c------next node -------------------------
+ node=node+1
+c
+ 82 continue
+ 81 continue
+ 80 continue
+c
+ ia(node) = iedge
+c
+c the number of nodes in the final matrix is stored in n
+c
+ n = node - 1
+ return
+c-----------------------------------------------------------------------
+ end
+c-----end of fdreduce-----------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine fdaddbc(nx,ny,nz,a,ja,ia,iau,rhs,al,h)
+ integer nx, ny, nz, ia(nx*ny*nz), ja(7*nx*ny*nz), iau(nx*ny*nz)
+ real*8 h, al(6), a(7*nx*ny*nz), rhs(nx*ny*nz)
+c-----------------------------------------------------------------------
+c This subroutine will add the boundary condition to the linear system
+c consutructed without considering the boundary conditions
+c
+c The Boundary condition is specified in the following form:
+c du
+c alpha -- + beta u = gamma
+c dn
+c Alpha is stored in array AL. The six side of the boundary appares
+c in AL in the following order: left(west), right(east), bottom(south),
+c top(north), front, back(rear). (see also the illustration in gen57pt)
+c Beta and gamma appears as the functions, betfun and gamfun.
+c They have the following prototype
+c
+c real*8 function xxxfun(x, y, z)
+c real*8 x, y, z
+c
+c where x, y, z are vales in the range of [0, 1][0, (ny-1)*h]
+c [0, (nz-1)*h]
+c
+c At the corners or boundary lines, the boundary conditions are applied
+c in the follow order:
+c 1) if one side is Dirichlet boundary condition, the Dirichlet boundary
+c condition is used;
+c 2) if more than one sides are Dirichlet, the Direichlet condition
+c specified for X direction boundary will overwrite the one specified
+c for Y direction boundary which in turn has priority over Z
+c direction boundaries.
+c 3) when all sides are non-Dirichlet, the average values are used.
+c-----------------------------------------------------------------------
+c some constants
+c
+ real*8 half,zero,one,two
+ parameter(half=0.5D0,zero=0.0D0,one=1.0D0,two=2.0D0)
+c
+c local variables
+c
+ character*2 side
+ integer i,j,k,kx,ky,kz,node,nbr,ly,uy,lx,ux
+ real*8 coeff, ctr, hhalf, x, y, z
+ real*8 afun, bfun, cfun, dfun, efun, ffun, gfun, hfun
+ external afun, bfun, cfun, dfun, efun, ffun, gfun, hfun
+ real*8 betfun, gamfun
+ integer lctcsr
+ external lctcsr, betfun, gamfun
+c
+ hhalf = half * h
+ kx = 1
+ ky = nx
+ kz = nx*ny
+c
+c In 3-D case, we need to go through all 6 faces one by one. If
+c the actual dimension is lower, test on ny is performed first.
+c If ny is less or equals to 1, then the value of nz is not
+c checked.
+c-----
+c the surface on the left (west) side
+c Concentrate on the contribution from the derivatives related to x,
+c The terms with derivative of x was assumed to be:
+c
+c a(3/2,j,k)*[u(2,j,k)-u(1,j,k)] + a(1/2,j,k)*[u(0,j,k)-u(1,j,k)] +
+c h*d(1,j,k)*[u(2,j,k)-u(0,j,k)]/2
+c
+c But they actually are:
+c
+c 2*{a(3/2,j,k)*[u(2,j,k)-u(1,j,k)] -
+c h*a(1,j,k)*[beta*u(1,j,k)-gamma]/alpha]} +
+c h*h*d(1,j,k)*[beta*u(1,j,k)-gamma]/alpha
+c
+c Therefore, in terms of local stencil the right neighbor of a node
+c should be changed to 2*a(3/2,j,k),
+c The matrix never contains the left neighbor on this border, nothing
+c needs to be done about it.
+c The following terms should be added to the center stencil:
+c -a(3/2,j,k) + a(1/2,j,k) + [h*d(1,j,k)-2*a(1,j,k)]*h*beta/alpha
+c
+c And these terms should be added to the corresponding right-hand side
+c [h*d(1,j,k)-2*a(1,j,k)]*h*gamma/alpha
+c
+c Obviously, the formula do not apply for the Dirichlet Boundary
+c Condition, where alpha will be zero. In that case, we simply set
+c all the elements in the corresponding row to zero(0), then let
+c the diagonal element be beta, and the right-hand side be gamma.
+c Thus the value of u at that point will be set. Later on point
+c like this will be removed from the matrix, since they are of
+c know value before solving the system.(not done in this subroutine)
+c
+ x = zero
+ side = 'x1'
+ do 20 k = 1, nz
+ z = (k-1)*h
+ do 21 j = 1, ny
+ y = (j-1)*h
+ node = 1+(j-1)*ky+(k-1)*kz
+c
+c check to see if it's Dirichlet Boundary condition here
+c
+ if (al(1) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+c
+c compute the terms formulated above to modify the matrix.
+c
+c the right neighbor is stroed in nbr'th posiiton in the a
+ nbr = lctcsr(node, node+kx, ja, ia)
+c
+ coeff = two*afun(x,y,z)
+ ctr = (h*dfun(x,y,z) - coeff)*h/al(1)
+ rhs(node) = rhs(node) + ctr * gamfun(side,x,y,z)
+ ctr = afun(x-hhalf,y,z) + ctr * betfun(side,x,y,z)
+ coeff = afun(x+hhalf,y,z)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 21 continue
+ 20 continue
+c
+c the right (east) side boudary, similarly, the contirbution from
+c the terms containing the derivatives of x were assumed to be
+c
+c a(nx+1/2,j,k)*[u(nx+1,j,k)-u(nx,j,k)] +
+c a(nx-1/2,j,k)*[u(nx-1,j,k)-u(nx,j,k)] +
+c d(nx,j,k)*[u(nx+1,j,k)-u(nx-1,j,k)]*h/2
+c
+c Actualy they are:
+c
+c 2*{h*a(nx,j,k)*[gamma-beta*u(nx,j,k)]/alpha +
+c a(nx-1/2,j,k)*[u(nx-1,j,k)-u(nx,j,k)]} +
+c h*h*d(nx,j,k)*[gamma-beta*u(nx,j,k)]/alpha
+c
+c The left stencil has to be set to 2*a(nx-1/2,j,k)
+c
+c The following terms have to be added to the center stencil:
+c
+c -a(nx-1/2,j,k)+a(nx+1/2,j,k)-[2*a(nx,j,k)+h*d(nx,j,k)]*beta/alpha
+c
+c The following terms have to be added to the right-hand side:
+c
+c -[2*a(nx,j,k)+h*d(nx,j,k)]*h*gamma/alpha
+c
+ x = one
+ side = 'x2'
+ do 22 k = 1, nz
+ z = (k-1)*h
+ do 23 j = 1, ny
+ y = (j-1)*h
+ node = (k-1)*kz + j*ky
+c
+ if (al(2) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+ nbr = lctcsr(node, node-kx, ja, ia)
+c
+ coeff = two*afun(x,y,z)
+ ctr = (coeff + h*dfun(x,y,z))*h/al(2)
+ rhs(node) = rhs(node) - ctr * gamfun(side,x,y,z)
+ ctr = afun(x+hhalf,y,z) - ctr * betfun(side,x,y,z)
+ coeff = afun(x-hhalf,y,z)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 23 continue
+ 22 continue
+c
+c If only one dimension, return now
+c
+ if (ny .le. 1) return
+c
+c the bottom (south) side suface, This similar to the situation
+c with the left side, except all the function and realted variation
+c should be on the y.
+c
+c These two block if statment here is to resolve the possible conflict
+c of assign the boundary value differently by different side of the
+c Dirichlet Boundary Conditions. They ensure that the edges that have
+c be assigned a specific value will not be reassigned.
+c
+ if (al(1) .eq. zero) then
+ lx = 2
+ else
+ lx = 1
+ end if
+ if (al(2) .eq. zero) then
+ ux = nx-1
+ else
+ ux = nx
+ end if
+ y = zero
+ side = 'y1'
+ do 24 k = 1, nz
+ z = (k-1)*h
+ do 25 i = lx, ux
+ x = (i-1)*h
+ node = i + (k-1)*kz
+c
+ if (al(3) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+ nbr = lctcsr(node, node+ky, ja, ia)
+c
+ coeff = two*bfun(x,y,z)
+ ctr = (h*efun(x,y,z) - coeff)*h/al(3)
+ rhs(node) = rhs(node) + ctr * gamfun(side,x,y,z)
+ ctr = bfun(x,y-hhalf,z) + ctr * betfun(side,x,y,z)
+ coeff = bfun(x,y+hhalf,z)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 25 continue
+ 24 continue
+c
+c The top (north) side, similar to the right side
+c
+ y = (ny-1) * h
+ side = 'y2'
+ do 26 k = 1, nz
+ z = (k-1)*h
+ do 27 i = lx, ux
+ x = (i-1)*h
+ node = (k-1)*kz+(ny-1)*ky + i
+c
+ if (al(4) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+ nbr = lctcsr(node, node-ky, ja, ia)
+c
+ coeff = two*bfun(x,y,z)
+ ctr = (coeff + h*efun(x,y,z))*h/al(4)
+ rhs(node) = rhs(node) - ctr * gamfun(side,x,y,z)
+ ctr = bfun(x,y+hhalf,z) - ctr * betfun(side,x,y,z)
+ coeff = bfun(x,y-hhalf,z)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 27 continue
+ 26 continue
+c
+c If only has two dimesion to work on, return now
+c
+ if (nz .le. 1) return
+c
+c The front side boundary
+c
+c If the edges of the surface has been decided by Dirichlet Boundary
+c Condition, then leave them alone.
+c
+ if (al(3) .eq. zero) then
+ ly = 2
+ else
+ ly = 1
+ end if
+ if (al(4) .eq. zero) then
+ uy = ny-1
+ else
+ uy = ny
+ end if
+c
+ z = zero
+ side = 'z1'
+ do 28 j = ly, uy
+ y = (j-1)*h
+ do 29 i = lx, ux
+ x = (i-1)*h
+ node = i + (j-1)*ky
+c
+ if (al(5) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+ nbr = lctcsr(node, node+kz, ja, ia)
+c
+ coeff = two*cfun(x,y,z)
+ ctr = (h*ffun(x,y,z) - coeff)*h/al(5)
+ rhs(node) = rhs(node) + ctr * gamfun(side,x,y,z)
+ ctr = cfun(x,y,z-hhalf) + ctr * betfun(side,x,y,z)
+ coeff = cfun(x,y,z+hhalf)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 29 continue
+ 28 continue
+c
+c Similiarly for the top side of the boundary suface
+c
+ z = (nz - 1) * h
+ side = 'z2'
+ do 30 j = ly, uy
+ y = (j-1)*h
+ do 31 i = lx, ux
+ x = (i-1)*h
+ node = (nz-1)*kz + (j-1)*ky + i
+c
+ if (al(6) .eq. zero) then
+ call clrow(node, a, ja, ia)
+ a(iau(node)) = betfun(side,x,y,z)
+ rhs(node) = gamfun(side,x,y,z)
+ else
+ nbr = lctcsr(node, node-kz, ja, ia)
+c
+ coeff = two*cfun(x,y,z)
+ ctr = (coeff + h*ffun(x,y,z))*h/al(6)
+ rhs(node) = rhs(node) - ctr * gamfun(side,x,y,z)
+ ctr = cfun(x,y,z+hhalf) - ctr * betfun(side,x,y,z)
+ coeff = cfun(x,y,z-hhalf)
+ a(iau(node)) = a(iau(node)) - coeff + ctr
+ a(nbr) = two*coeff
+ end if
+ 31 continue
+ 30 continue
+c
+c all set
+c
+ return
+c-----------------------------------------------------------------------
+ end
+c-----end of fdaddbc----------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine clrow(i, a, ja, ia)
+ integer i, ja(*), ia(*), k
+ real *8 a(*)
+c-----------------------------------------------------------------------
+c clear the row i to all zero, but still keep the structure of the
+c CSR matrix
+c-----------------------------------------------------------------------
+ do 10 k = ia(i), ia(i+1)-1
+ a(k) = 0.0D0
+ 10 continue
+c
+ return
+c-----end of clrow------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ function lctcsr(i,j,ja,ia)
+ integer lctcsr, i, j, ja(*), ia(*), k
+c-----------------------------------------------------------------------
+c locate the position of a matrix element in a CSR format
+c returns -1 if the desired element is zero
+c-----------------------------------------------------------------------
+ lctcsr = -1
+ k = ia(i)
+ 10 if (k .lt. ia(i+1) .and. (lctcsr .eq. -1)) then
+ if (ja(k) .eq. j) lctcsr = k
+ k = k + 1
+ goto 10
+ end if
+c
+ return
+c-----------------------------------------------------------------------
+ end
+c-----end of lctcsr-----------------------------------------------------
+
+
diff --git a/MATGEN/FDIF/makefile b/MATGEN/FDIF/makefile
new file mode 100644
index 0000000..18978d2
--- /dev/null
+++ b/MATGEN/FDIF/makefile
@@ -0,0 +1,21 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES1 = rgen5pt.o functns.o
+
+gen5.ex: $(FILES1) ../../libskit.a
+ $(F77) $(FFLAGS) -o gen5.ex $(FILES1) ../../libskit.a
+
+FILES2 = rgenblk.o functns.o
+genbl.ex: $(FILES2) ../../libskit.a
+ $(F77) $(FFLAGS) -o genbl.ex $(FILES2) ../../libskit.a
+
+clean:
+ rm -f *.o *.ex core *.trace
+
+../../libskit.a:
+ (cd ../..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
diff --git a/MATGEN/FDIF/rgen5pt.f b/MATGEN/FDIF/rgen5pt.f
new file mode 100644
index 0000000..fb736f8
--- /dev/null
+++ b/MATGEN/FDIF/rgen5pt.f
@@ -0,0 +1,66 @@
+ program fivept
+c-----------------------------------------------------------------------
+c main program for generating 5 point and 7-point matrices in the
+c Harwell-Boeing format. Creates a file with containing a
+c harwell-boeing matrix. typical session:
+c user answer are after the colon
+c Enter nx, ny, nz : 10 10 1
+c Filename for matrix: test.mat
+c output matrix in data file : test.mat
+c
+c nz = 1 will create a 2-D problem
+c
+c-----------------------------------------------------------------------
+ integer nmx, nxmax
+ parameter (nxmax = 50, nmx = nxmax*nxmax)
+c implicit none
+ integer ia(nmx),ja(7*nmx),iau(nmx)
+ real*8 a(7*nmx),rhs(nmx),al(6)
+ character title*72, key*8, type*3, matfile*50, guesol*2
+c-----------------------------------------------------------------------
+ integer nx, ny, nz, iout, n, ifmt, job
+ write (6,*) ' '
+ write(6,'(22hEnter nx, ny, nz : ,$)')
+ read (5,*) nx, ny, nz
+ write(6,'(22hFilename for matrix : ,$)')
+ read(5,'(a50)') matfile
+ open (unit=7,file=matfile)
+c
+c boundary condition is partly specified here
+c
+c al(1) = 1.0D0
+c al(2) = 0.0D0
+c al(3) = 2.3D1
+c al(4) = 0.4D0
+c al(5) = 0.0D0
+c al(6) = 8.2D-2
+ al(1) = 0.0D0
+ al(2) = 0.0D0
+ al(3) = 0.0D1
+ al(4) = 0.0D0
+ al(5) = 0.0D0
+ al(6) = 0.0D0
+c
+ call gen57pt (nx,ny,nz,al,0,n,a,ja,ia,iau,rhs)
+ iout = 7
+c
+c write out the matrix
+c
+ guesol='NN'
+ title =
+ * ' 5-POINT TEST MATRIX FROM SPARSKIT '
+c '123456789012345678901234567890123456789012345678901234567890
+ type = 'RUA'
+ key ='SC5POINT'
+C 12345678
+ ifmt = 15
+ job = 2
+c upper part only??
+c call getu (n, a, ja, ia, a, ja, ia)
+ call prtmt (n,n,a,ja,ia,rhs,guesol,title,key,type,
+ 1 ifmt,job,iout)
+ write (6,*) ' output matrix in data file : ', matfile
+c
+ stop
+ end
+
diff --git a/MATGEN/FDIF/rgenblk.f b/MATGEN/FDIF/rgenblk.f
new file mode 100644
index 0000000..4df0c7a
--- /dev/null
+++ b/MATGEN/FDIF/rgenblk.f
@@ -0,0 +1,63 @@
+ program bfivept
+c-----------------------------------------------------------------------
+c main program for generating BLOCK 5 point and 7-point matrices in the
+c Harwell-Boeing format. Creates a file with containing a
+c harwell-boeing matrix.
+c
+c max block size = 5
+c max number of grid points = 8000 = ( nx * ny * nz .le. 8000)
+c matrix dimension = (nx*ny*nz* Block-size**2) .le. 8000 * 25= 200,000
+c
+c typical session:
+c Enter nx, ny, nz : 10 10 1
+c enter block-size : 4
+c enter filename for matrix: test.mat
+c output matrix in data file : test.mat
+c
+c nz =1 will create a 2-D problem
+c-----------------------------------------------------------------------
+ parameter (nxmax = 20, nmx = nxmax*nxmax*nxmax, ntot=nmx*25)
+ integer ia(ntot),ja(ntot),iau(ntot), iao(ntot),jao(ntot)
+ real*8 stencil(7,100), a(ntot), ao(ntot)
+ character title*72,key*8,type*3, matfile*50, guesol*2
+c-----------------------------------------------------------------------
+ write (6,*) ' '
+ write(6,'(22hEnter nx, ny, nz : ,$)')
+ read (5,*) nx, ny, nz
+ write(6,'(22hnfree (Block size) : ,$)')
+ read (5,*) nfree
+
+ write(6,'(22hFilename for matrix : ,$)')
+
+ read(5,'(a50)') matfile
+ open (unit=7,file=matfile)
+c
+ write (6,*) ' output in data file : ', matfile
+
+c------------------------------------------------------
+ na = nfree*nfree
+c
+ call gen57bl (nx,ny,nz,nfree,na,n,a,ja,ia,iau,stencil)
+c------------------------------------------------------
+
+ print *, ' n=', n, ' nfree ', nfree, ' na =', na
+
+ call bsrcsr(1,n,nfree, na, a, ja, ia, ao, jao, iao)
+ n = n * nfree ! Apr. 21, 1995
+
+ guesol='NN'
+
+ title =
+ * ' BLOCK 5-POINT TEST MATRIX FROM SPARSKIT '
+ type = 'RUA'
+ key = 'BLOCK5PT'
+C 12345678
+ ifmt = 15
+ job = 2
+ iout = 7
+ call prtmt (n,n,ao,jao,iao,rhs,guesol,title,key,type,
+ 1 ifmt,job,iout)
+ print *, ' output in data file : ', matfile
+c
+ stop
+ end
diff --git a/MATGEN/FEM/README b/MATGEN/FEM/README
new file mode 100644
index 0000000..cd1745b
--- /dev/null
+++ b/MATGEN/FEM/README
@@ -0,0 +1,26 @@
+---------------------------------------------------------------
+
+ SPARSKIT Modules FEM
+
+---------------------------------------------------------------
+
+ This directory contains the SPARSKIT FEM module,
+ a matrix generator for finite element matrices.
+
+contents:
+=========
+
+ convdif.f == a driver to generate a matrix and some associated plots
+ functns2.o == functions needed by the driver -- define the coefficients
+ of the PDE
+ meshes.f == set of sample meshes defined as inout to the driver
+ makefile == a makefile for an executable to generate a sample mesh
+ elmtlib2.f == a small finite element library
+
+mat.hb is a test matrix.
+
+Two output files are provided: mat.ps and msh.ps. You may wish to save
+these to another name before running the test program so that you may
+compare your output to these files.
+
+-----------------------------------------------------------------------
diff --git a/MATGEN/FEM/convdif.f b/MATGEN/FEM/convdif.f
new file mode 100644
index 0000000..e58fd8a
--- /dev/null
+++ b/MATGEN/FEM/convdif.f
@@ -0,0 +1,131 @@
+ program convdif
+c-----------------------------------------------------------------------
+c this driver will generate a finite element matrix for the
+c convection-diffusion problem
+c
+c - Div ( K(x,y) Grad u ) + C grad u = f
+c u = 0 on boundary
+c
+c (Dirichlet boundary conditions).
+c-----------------------------------------------------------------------
+c this code will prompt for desired mesh (from 0 to 9, with one being
+c a user input one) and will general the matrix in harewell-Boeing format
+c in the file mat.hb. It also generates two post script files, one
+c showing the pattern of the matrix (mat.ps) and the other showing the
+c corresponding mesh (msh.ps).
+c-----------------------------------------------------------------------
+c the structure and organization of the fem codes follow very closely
+c that of the book by Noborou Kikuchi (Finite element methods in
+c mechanics, Cambridge Univ. press, 1986).
+c-----------------------------------------------------------------------
+c coded Y. Saad and S. Ma -- this version dated August 11, 1993
+c-----------------------------------------------------------------------
+ implicit none
+ integer maxnx, maxnel
+ parameter (maxnx = 8000, maxnel = 15000)
+ real*8 a(7*maxnx),x(maxnx),y(maxnx),f(3*maxnx)
+ integer ijk(3,maxnel),ichild(12,maxnel),iparnts(2,maxnx),
+ * ia(maxnx),ja(7*maxnx),iwk(maxnx),jwk(maxnx),nodcode(maxnx),
+ * iperm(maxnx)
+c
+ character matfile*20, title*72, munt*2,key*8, type*3
+ real size
+c
+ integer iin,node,nx,nelx,iout,ndeg,na,nmesh,nref,nxmax,nelmax,nb,
+ * ii,nxnew, nelxnew,ierr,job,n,ncol,mode,ptitle,ifmt
+ external xyk, funb, func, fung
+ data iin/7/,node/3/,nx/0/,nelx/0/,iout/8/,ndeg/12/, na/3000/
+c--------------------------------------------------------------
+c choose starting mesh ---
+c--------------------------------------------------------------
+c files for output
+c
+ open(unit=10,file='mat.hb')
+ open(unit=11,file='msh.ps')
+ open(unit=12,file='mat.ps')
+c-----------------------------------------------------------------------
+ print *, ' enter chosen mesh '
+ read (*,*) nmesh
+ if (nmesh .eq. 0) then
+ print *, 'enter input file for initial mesh '
+ read(*,'(a20)') matfile
+ open (unit=7,file=matfile)
+ endif
+c-----------------------------------------------------------------------
+ print *, ' Enter the number of refinements desired '
+ read (*,*) nref
+ call inmesh (nmesh,iin,nx,nelx,node,x,y,nodcode,ijk,iperm)
+c
+c ...REFINE THE GRID
+c
+ nxmax = maxnx
+ nelmax= maxnel
+ nb = 0
+ do 10 ii = 1, nref
+c
+c estimate the number nx and nelx at next refinement level.
+c
+ call checkref(nx,nelx,ijk,node,nodcode,nb,nxnew,nelxnew)
+ if (nxnew .gt. nxmax .or. nelxnew .gt. nelmax) then
+ print *, ' Was able to do only ', ii-1 ,' refinements'
+ goto 11
+ endif
+c
+c ...if OK refine all elements
+c
+ call refall(nx,nelx,ijk,node,ndeg,x,y,ichild,iparnts,nodcode,
+ * nxmax, nelmax, ierr)
+ if (ierr .ne. 0) print *, '** ERROR IN REFALL : ierr =',ierr
+ 10 continue
+ 11 continue
+c-----------------------------------------------------------------------
+ job = 0
+c-----------------------------------------------------------------------
+c assemble the matrix in CSR format
+c-----------------------------------------------------------------------
+ call assmbo (nx,nelx,node,ijk,nodcode,x,y,
+ * a,ja,ia,f,iwk,jwk,ierr,xyk,funb,func,fung)
+ n = nx
+c----------------------Harewell-Boeing matrix---------------------------
+c---------------------1---------2---------3---------5---------6
+c 12345678901234567890123456789012345678901234567890
+ title='1Sample matrix from SPARSKIT '
+ key = 'SPARSKIT'
+ type = 'rua'
+ ifmt = 6
+ job = 2
+ call prtmt (n,n,a,ja,ia,f,'NN',title,key,type,ifmt,job,10)
+c----------------------Plot of mesh-------------------------------------
+c-----------------------------------------------------------------------
+ size = 6.0
+ munt = 'in'
+ mode = 0
+ title ='Finite element mesh '
+ ptitle = 1
+ call psgrid (nx,ja,ia,x,y,title,ptitle,size,munt,11)
+c hsize = 5.6
+c vsize = 5.6
+c xleft = 0.0
+c bot = 0.0
+c job = 30
+c call texgrd(nx,ja,ia,x,y,munt,size,vsize,hsize,
+c * xleft,bot,job,title,ptitle,ijk,node,nelx,11)
+c----------------------Plot of matrix-pattern---------------------------
+c-----------------------------------------------------------------------
+ size = 5.5
+ mode = 0
+ title = 'Assembled Matrix'
+ ptitle = 1
+ ncol = 0
+ iout = 12
+ call pspltm(n,n,mode,ja,ia,title,ptitle,size,munt,ncol,iwk,12)
+c xleft = 0.00
+c bot = 0.70
+c job = 0
+c call texplt(nx,nx,mode,ja,ia,munt,size,vsize,hsize,xleft,bot,
+c * job,title,ptitle,ncol,iwk,12)
+ stop
+c-----end-of-program-convdif--------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
diff --git a/MATGEN/FEM/elmtlib2.f b/MATGEN/FEM/elmtlib2.f
new file mode 100644
index 0000000..90f4cec
--- /dev/null
+++ b/MATGEN/FEM/elmtlib2.f
@@ -0,0 +1,1501 @@
+ subroutine refall(nx, nelx,ijk,node,ndeg,x,y,
+ * ichild,iparnts,nodcode,nxmax,nelmax,ierr)
+ implicit real*8 (a-h,o-z)
+ integer nx, nelx, node, ndeg, nxmax, nelmax
+ integer ichild(ndeg,1),iparnts(2,nx),ijk(node,*), nodcode(nx)
+ integer midnode(20),inod(20)
+ real*8 x(*),y(*)
+c-------------------------------------------------------------
+c refines a finite element grid using triangular elements.
+c uses mid points to refine all the elements of the grid.
+c
+c nx = number of nodes at input
+c nelx = number of elements at input
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c node = first dimension of array ijk [should be >=3]
+c ndeg = first dimension of array ichild which is at least as large
+c as the max degree of each node
+c x,y = real*8 arrays containing the x(*) and y(*) coordinates
+c resp. of the nodes.
+c ichild= list of the children of a node: ichild(1,k) stores
+c the position in ichild(*,k) of the last child so far.
+c (local use)
+c iparnts= list of the 2 parents of each node.
+c (local use)
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c corner elements are used only to generate the grid by refinement
+c since they do not correspond to real elements.
+c nxmax = maximum number of nodes allowed. If during the algorithm
+c the number of nodes being created exceeds nxmax then
+c refall quits without modifying the (x,y) xoordinates
+c and nx, nelx. ijk is modified. Also ierr is set to 1.
+c nelmax = same as above for number of elements allowed. See ierr..
+c ierr = error message:
+c 0 --> normal return
+c 1 --> refall quit because nxmax was exceeded.
+c 2 --> refall quit because nelmax was exceeded.
+c--------------------------------------------------------------
+c---------------------------------------------------------------
+c inilitialize lists of children and parents --
+c data structure is as follows
+c ichild(1,k) stores the position of last child of node k so far in list
+c ichild(j,k) , j .ge. 2 = list of children of node k.
+c iparnts(1,k) and iparnts(2,k) are the two parents of node k.
+c---------------------------------------------------------------
+c------ do a first check :
+ if (nx .ge. nxmax) goto 800
+ if (nelx .ge. nelmax) goto 900
+c------ initialize
+ do 1 k=1,nx
+ do 2 j=2,ndeg
+ ichild(j,k) = 0
+ 2 continue
+ ichild(1,k) = 1
+ iparnts(1,k)= 0
+ iparnts(2,k)= 0
+ 1 continue
+c------- initialize nelxnew and nxnew
+ nelxnew = nelx
+ nxnew = nx
+ ierr = 0
+c--------------------------------------------------------------
+c main loop: scan all elements
+c--------------------------------------------------------------
+c do 100 nel = nelx,1,-1
+ do 100 nel = 1, nelx
+c note : interesting question which order is best for parallelism?
+c alternative order: do 100 nel = nelx, 1, -1
+c
+c------ unpack nodes of element
+ do 101 i=1,node
+ inod(i) = ijk(i,nel)
+c convention: node after last node = first node.
+ inod(node+i) = inod(i)
+ midnode(i) = 0
+ 101 continue
+c--------------------------------------------------------------
+c for each new potential node determine if it has already been
+c numbered. a potential node is the middle of any two nodes ..
+c--------------------------------------------------------------
+ do 80 ii=1,node
+ k1 = inod(ii)
+ k2 = inod(ii+1)
+c------- test for current pair :
+ last = ichild(1,k1)
+ do 21 k=2,last
+ jchild = ichild(k,k1)
+ ipar1 = iparnts(1,jchild)
+ ipar2 = iparnts(2,jchild)
+ if( (ipar1 .eq. k1 .and. ipar2 .eq. k2) .or.
+ * (ipar2 .eq. k1 .and. ipar1 .eq. k2)) then
+c node has already been created and numbered ....
+ midnode(ii) = jchild
+c... therefore it must be an internal node
+ nodcode(jchild) = 0
+c... and no new node to create.
+ goto 80
+ endif
+c-----------------------------------------------------
+ 21 continue
+c
+c else create a new node
+c
+ nxnew = nxnew + 1
+ if (nxnew .gt. nxmax) goto 800
+c-------
+ x(nxnew) = (x(k1) + x(k2))*0.5
+ y(nxnew) = (y(k1) + y(k2))*0.5
+ midnode(ii) = nxnew
+c
+c update nodcode information -- normally min0(nodcode(k1),nodcode(k2))
+c
+ nodcode(nxnew) = min0(1,nodcode(k1),nodcode(k2))
+c
+c update parents and children's lists
+c
+ iparnts(1,nxnew) = k1
+ iparnts(2,nxnew) = k2
+c
+ last = last+1
+ ichild(last,k1) = nxnew
+ ichild(1,k1) = last
+c
+ last = ichild(1,k2)+1
+ ichild(last,k2) = nxnew
+ ichild(1,k2) = last
+c
+ 80 continue
+c
+c------- replace current element by new one
+c
+ do 81 i=1,node
+ jnod = midnode(i)
+ ijk(i,nel) = jnod
+ 81 continue
+c-------create new elements
+ do 82 ii=1, node
+ nelxnew = nelxnew+1
+ if (nelxnew .gt. nelmax) goto 900
+ ijk(1,nelxnew) = inod(ii)
+ k = ii
+ do jj=2,node
+ ijk(jj,nelxnew) = midnode(k)
+ k = k+2
+ if (k .gt. node) k = k-node
+ enddo
+ 82 continue
+c------ done !
+ 100 continue
+ nx = nxnew
+ nelx = nelxnew
+ return
+ 800 ierr = 1
+ return
+ 900 ierr = 2
+ return
+ end
+c
+ subroutine checkref(nx,nelx,ijk,node,nodcode,
+ * nbound, nxnew,nelxnew)
+c-------------------------------------------------------------
+c returns the expected the new number of nodes and
+c elemnts of refall is applied to current grid once.
+c
+c nx = number of nodes at input
+c nelx = number of elements at input
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c nbound = number of boundary points on entry - enter zero if
+c unknown
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c
+c nxnew = new number of nodes if refall were to be applied
+c nelxnew = same for nelx.
+c--------------------------------------------------------------
+ integer ijk(node,1),nodcode(nx)
+c
+ nelxnew = nelx*4
+c
+c count the number of boundary nodes
+c
+ if (nbound .ne. 0) goto 2
+ do 1 j=1, nx
+ if (nodcode(j) .ge. 1) nbound = nbound+1
+ 1 continue
+c number of edges=[3*(number of elmts) + number of bound nodes ]/ 2
+ 2 continue
+ nxnew = nx + (3*nelx+nbound)/2
+ nbound = 2*nbound
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine unassbl (a,na,f,nx,nelx,ijk,nodcode,
+ * node,x,y,ierr,xyk)
+c-----------------------------------------------------------------------
+c a = un-assembled matrix on output
+c na = 1-st dimension of a. a(na,node,node)
+c
+c f = right hand side (global load vector) in un-assembled form
+c nx = number of nodes at input
+c nelx = number of elements at input
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c node = total number of nodal points in each element
+c also second dimension of a.
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point (corner points
+c
+c x,y = real*8 arrays containing the $x$ and $y$ coordinates
+c resp. of the nodes.
+c K11, K22, and K12 at that element.
+c ierr = error message integer .
+c ierr = 0 --> normal return
+c ierr = 1 --> negative area encountered (due to bad
+c numbering of nodes of an element)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node)
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(na,node,node),ijk(node,1),x(1),y(1),f(node,1),
+ * ske(3,3),fe(3),xe(3),ye(3),xyke(2,2)
+ integer nodcode(1)
+ external xyk
+
+c--------------------------------------------------------------
+c initialize
+c--------------------------------------------------------------
+ do 100 i=1, node
+ do 100 j=1, nx
+ f(i,j) = 0.0d0
+ 100 continue
+c---------------------------------------------------
+c main loop
+c---------------------------------------------------
+ do 102 nel=1, nelx
+c
+c get coordinetes of nodal points
+c
+ do 104 i=1, node
+ j = ijk(i,nel)
+ xe(i) = x(j)
+ ye(i) = y(j)
+ 104 continue
+c
+c compute determinant
+c
+ det=xe(2)*(ye(3)-ye(1))+xe(3)*(ye(1)-ye(2))+xe(1)*(ye(2)-ye(3))
+ if ( det .le. 0.) then
+ print *, 'nel', nel, ' det = ' , det
+ print *, xe(1), xe(2), xe(3)
+ print *, ye(1), ye(2), ye(3)
+ end if
+c
+c set material properties
+c
+ call xyk(xyke,x,y)
+c
+c construct element stiffness matrix
+c
+ ierr = 0
+ call estif3(nel,ske,fe,det,xe,ye,xyke,ierr)
+ if (ierr .ne. 0) then
+ write (*,*) 'ERROR: estif3 gave an error',ierr
+ return
+ endif
+c write (8,'(9f8.4)') ((ske(i,j),j=1,3),i=1,3)
+c assemble: add element stiffness matrix to global matrix
+c
+ do 120 ka=1, node
+ f(ka,nel) = fe(ka)
+ do 108 kb = 1,node
+ a(nel,ka,kb) = ske(ka,kb)
+ 108 continue
+ 120 continue
+ 102 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine unassbl_lstif(a, na, f, nx, nelx, ijk, nodcode,
+ * node, x, y, ierr, xyk, funb, func, fung)
+c-----------------------------------------------------------------------
+c a = un-assembled matrix on output
+c
+c na = 1-st dimension of a. a(na,node,node)
+c
+c f = right hand side (global load vector) in un-assembled form
+c
+c nx = number of nodes at input
+c
+c nelx = number of elements at input
+c
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point (corner points
+c
+c node = total number of nodal points in each element
+c also second dimension of a.
+c
+c x,y = real*8 arrays containing the $x$ and $y$ coordinates
+c resp. of the nodes.
+c K11, K22, and K12 at that element.
+c
+c ierr = error message integer .
+c ierr = 0 --> normal return
+c ierr = 1 --> negative area encountered (due to bad
+c numbering of nodes of an element)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form: call xyk(xyke,x,y)
+c
+c funb, = functions needed for the definition of lstif3 problem
+c func,
+c fung
+c--------------------------------------------------------------
+c moulitsa@cs.umn.edu : It uses lstif3 problem
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(na,node,node), ijk(node,1), x(1), y(1), f(node,1),
+ & ske(3,3), fe(3), xe(3), ye(3)
+ integer nodcode(1)
+ external xyk, funb, func, fung
+c--------------------------------------------------------------
+c initialize
+c--------------------------------------------------------------
+ do i=1, node
+ do j=1, nx
+ f(i,j) = 0.0d0
+ end do
+ end do
+
+c---------------------------------------------------
+c main loop
+c---------------------------------------------------
+ do nel=1, nelx
+c
+c get coordinetes of nodal points
+c
+ do i=1, node
+ j = ijk(i,nel)
+ xe(i) = x(j)
+ ye(i) = y(j)
+ end do
+c
+c compute determinant
+c
+c det=xe(2)*(ye(3)-ye(1))+xe(3)*(ye(1)-ye(2))+xe(1)*(ye(2)-ye(3))
+c if ( det .le. 0.) then
+c print *, 'nel', nel, ' det = ' , det
+c print *, xe(1), xe(2), xe(3)
+c print *, ye(1), ye(2), ye(3)
+c end if
+c
+c construct element stiffness matrix
+c
+ ierr = 0
+
+ call lstif3(ske, fe, xe, ye, xyk, funb, func, fung)
+c write (8,'(9f8.4)') ((ske(i,j),j=1,3),i=1,3)
+c
+c assemble: add element stiffness matrix to global matrix
+c
+ do ka=1, node
+ f(ka,nel) = fe(ka)
+ do kb = 1,node
+ a(nel,ka,kb) = ske(ka,kb)
+ end do
+ end do
+
+ end do
+
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine assmbo (nx, nelx, node, ijk, nodcode, x, y, a, ja,
+ * ia, f, iwk, jwk, ierr, xyk, funb, func, fung)
+c-----------------------------------------------------------------------
+c nx = number of nodes at input
+c
+c nelx = number of elements at input
+c
+c node = total number of nodal points in each element
+c
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point (corner points
+c
+c x,y = real arrays containing the $x$ and $y$ coordinates
+c resp. of the nodes.
+c
+c a,ja,ia= assembled matrix on output
+c
+c f = right hand side (global load vector)
+c
+c iwk,jwk = two integer work arrays.
+c
+c ierr = error message integer .
+c ierr = 0 --> normal return
+c ierr = 1 --> negative area encountered (due to bad
+c numbering of nodes of an element)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c--------------------------------------------------------------
+c moulitsa@cs.umn.edu : It has been modified so as to handle
+c more types of domains/meshes i.e. |\ /|
+c | X |
+c |/ \|
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(*),ijk(node,1),x(1),y(1),f(1),ske(3,3),fe(3),
+ * xe(3),ye(3),iwk(1),jwk(1)
+ integer ia(1), ja(*), nodcode(1)
+ external xyk, funb, func, fung
+
+c--------------------------------------------------------------
+c initialize
+c--------------------------------------------------------------
+ do i=1,nx
+ f(i) = 0.0
+ end do
+c initialize pointer arrays.
+ do k=1,nx+1
+ ia(k) = 1
+ jwk(k) = 0
+ end do
+ do k=1,nelx
+ do j=1,node
+ knod = ijk(j,k)
+ ia(knod) = ia(knod) + 2
+ end do
+ end do
+c---------------------------------------------------
+ do k=1, nx
+ if (nodcode(k) .ge.1 ) ia(k)=ia(k)+1
+ end do
+c
+ ksav = ia(1)
+ ia(1) = 1
+ do j=2, nx+1
+ ksavn = ia(j)
+ ia(j) = ia(j-1) + ksav
+ iwk(j-1) = ia(j-1)-1
+ ksav = ksavn
+ end do
+
+c-----------------
+c main loop
+c-----------------
+ do nel=1, nelx
+c
+c get coordinates of nodal points
+c
+ do i=1, node
+ j = ijk(i,nel)
+ xe(i) = x(j)
+ ye(i) = y(j)
+ end do
+c
+c compute determinant
+c
+c det=xe(2)*(ye(3)-ye(1))+xe(3)*(ye(1)-ye(2))+xe(1)*(ye(2)-ye(3))
+c
+c set material properties
+c
+c call xyk(nel,xyke,x,y,ijk,node)
+c
+c construct element stiffness matrix
+c
+ ierr = 0
+c
+c call evalg(nel, fe, xe, ye, fung, ierr)
+c call estif3(nel,ske,fe,det,xe,ye,xyke,ierr)
+ call lstif3(ske, fe, xe, ye, xyk, funb, func, fung)
+ if (ierr .ne. 0) return
+c
+c assemble: add element stiffness matrix to global matrix
+c
+ do ka=1, node
+ ii = ijk(ka,nel)
+ f(ii) = f(ii) + fe(ka)
+c
+c unpack row into jwk1
+c
+ irowst = ia(ii)
+ ilast = iwk(ii)
+ do k=irowst,ilast
+ jwk(ja(k)) = k
+ end do
+c
+ do kb = 1,node
+c
+c column number = jj
+c
+ jj = ijk(kb,nel)
+ k = jwk(jj)
+ if (k .eq. 0) then
+ ilast = ilast+1
+ jwk(jj) = ilast
+ ja(ilast) = jj
+ a(ilast) = ske(ka,kb)
+ else
+ a(k) = a(k) + ske(ka,kb)
+ endif
+ end do
+c refresh jwk
+ do k=irowst,ilast
+ jwk(ja(k)) = 0
+ end do
+ iwk(ii) = ilast
+ end do
+c
+ end do
+
+c squeeze away the zero entries
+c added so as to handle more type of domains/meshes
+ do i=1, nx
+ ista=ia(i)
+ isto=ia(i+1)-1
+ do j=ista, isto
+ if (ja(j) .EQ. 0) then
+ iwk(i)=j-ista
+ go to 200
+ end if
+ end do
+ 200 continue
+ end do
+
+ do i=2, nx
+ ksav=ia(i)
+ ia(i)=ia(i-1)+iwk(i-1)
+ ksavn=ia(i)
+ do j=0, iwk(i)-1
+ ja(ksavn+j)=ja(ksav+j)
+ a(ksavn+j) = a(ksav+j)
+ end do
+ end do
+ ia(nx+1)=ia(nx)+iwk(nx)
+
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine assmbo2 (nx, nelx, node, ijk, nodcode, x, y, a, ja,
+ * ia, f, iwk, jwk, ierr, xyk, funb, func, fung)
+c-----------------------------------------------------------------------
+c nx = number of nodes at input
+c
+c nelx = number of elements at input
+c
+c node = total number of nodal points in each element
+c
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point (corner points
+c
+c x,y = real arrays containing the $x$ and $y$ coordinates
+c resp. of the nodes.
+c
+c a,ja,ia= assembled matrix on output
+c
+c f = right hand side (global load vector)
+c
+c iwk,jwk = two integer work arrays.
+c
+c ierr = error message integer .
+c ierr = 0 --> normal return
+c ierr = 1 --> negative area encountered (due to bad
+c numbering of nodes of an element)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c--------------------------------------------------------------
+c
+c moulitsa@cs.umn.edu : This routine yields the same results
+c as assmbo. It differs in that it constructs the ia array
+c by creating a list with the adjacent nodes for each node
+c
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(*),ijk(node,1),x(1),y(1),f(1),ske(3,3),fe(3),
+ * xe(3),ye(3),iwk(1),jwk(1), kwk(500)
+ integer ia(1), ja(*), nodcode(1)
+ external xyk, funb, func, fung
+
+c--------------------------------------------------------------
+c initialize
+c--------------------------------------------------------------
+ do i=1,nx
+ f(i) = 0.0
+ iwk(i) = 0
+ kwk(i) = 0
+ end do
+
+c iwk : how many elements a node belongs to
+ do k=1,nelx
+ do j=1,node
+ knod = ijk(j,k)
+ iwk(knod) = iwk(knod) + 1
+ end do
+ end do
+c
+c iwk : prepare for csr like format
+ ksav=iwk(1)
+ iwk(1)=1
+ do j=2, nx+1
+ ksavn = iwk(j)
+ iwk(j) = iwk(j-1) + ksav
+ ksav = ksavn
+ end do
+c
+c jwk : list of elements a node belongs to
+ k=1
+ do i=1,nelx
+ do j=1,node
+ knod = ijk(j,i)
+ k=iwk(knod)
+ jwk(k)=i
+ iwk(knod)=iwk(knod)+1
+ end do
+ end do
+
+c iwk : transform iwk back to what it was
+ do i=nx+1,2,-1
+ iwk(i)=iwk(i-1)
+ end do
+ iwk(1)=1
+
+c kwk : mark edges that a node is associated with
+ nedges=1
+ ia(1)=1
+ do i=1,nx
+ kwk(i)=i
+ do j=iwk(i), iwk(i+1)-1
+ do k=1, node
+ knod = ijk(k,jwk(j))
+ if ( kwk(knod) .NE. i) then
+ kwk(knod) = i
+ nedges=nedges+1
+ end if
+ end do
+ end do
+ ia(i+1)=nedges
+ end do
+ do i=2,nx+1
+ ia(i)=ia(i)+i-1
+ iwk(i-1)=ia(i-1)-1
+ jwk(i)=0
+ end do
+ jwk(1)=0
+
+c-----------------
+c main loop
+c-----------------
+ do nel=1, nelx
+c
+c get coordinates of nodal points
+c
+ do i=1, node
+ j = ijk(i,nel)
+ xe(i) = x(j)
+ ye(i) = y(j)
+ end do
+c
+c compute determinant
+c
+c det=xe(2)*(ye(3)-ye(1))+xe(3)*(ye(1)-ye(2))+xe(1)*(ye(2)-ye(3))
+c
+c set material properties
+c
+c call xyk(nel,xyke,x,y,ijk,node)
+c
+c construct element stiffness matrix
+c
+ ierr = 0
+c
+c call evalg(nel, fe, xe, ye, fung, ierr)
+c call estif3(nel,ske,fe,det,xe,ye,xyke,ierr)
+ call lstif3(ske, fe, xe, ye, xyk, funb, func, fung)
+ if (ierr .ne. 0) return
+c
+c assemble: add element stiffness matrix to global matrix
+c
+ do ka=1, node
+ ii = ijk(ka,nel)
+ f(ii) = f(ii) + fe(ka)
+c
+c unpack row into jwk1
+c
+ irowst = ia(ii)
+ ilast = iwk(ii)
+ do k=irowst,ilast
+ jwk(ja(k)) = k
+ end do
+c
+ do kb = 1,node
+c
+c column number = jj
+c
+ jj = ijk(kb,nel)
+ k = jwk(jj)
+ if (k .eq. 0) then
+ ilast = ilast+1
+ jwk(jj) = ilast
+ ja(ilast) = jj
+ a(ilast) = ske(ka,kb)
+ else
+ a(k) = a(k) + ske(ka,kb)
+ endif
+ end do
+c refresh jwk
+ do k=irowst,ilast
+ jwk(ja(k)) = 0
+ end do
+ iwk(ii) = ilast
+ end do
+c
+ end do
+
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine chkelmt (nx, x, y, nelx, ijk, node)
+ implicit real*8 (a-h,o-z)
+ dimension ijk(node,1),x(1),y(1)
+c-----------------------------------------------------------------------
+c this subsourine checks the labeling within each elment and reorders
+c the nodes in they ar not correctly ordered.
+c-----------------------------------------------------------------------
+ do 1 nel =1, nelx
+ det = x(ijk(2,nel))*(y(ijk(3,nel))-y(ijk(1,nel)))+
+ * x(ijk(3,nel))*(y(ijk(1,nel))-y(ijk(2,nel)))+
+ * x(ijk(1,nel))*(y(ijk(2,nel))-y(ijk(3,nel)))
+c
+c if determinant negative exchange last two nodes of elements.
+c
+ if (det .lt. 0.0d0) then
+ j = ijk(2,nel)
+ ijk(2,nel) = ijk(3,nel)
+ ijk(3,nel) = j
+ endif
+ 1 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ SUBROUTINE DLAUNY(X,Y,NODES,ELMNTS,NEMAX,NELMNT)
+ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c
+C code written by P.K. Sweby
+c simple delauney triangulation routine (non optimal)
+c
+C ******************************************************************
+C * *
+C * Performs a Delaunay triangularisation of a region given a set *
+C * of mesh points. *
+C * X,Y :- 1D arrays holding coordinates of mesh points. *
+C * dimensioned AT LEAST NODES+3. *
+C * NODES :- number of mesh points. *
+C * ELMNTS :- INTEGER array, dimensioned NEMAX x 3, which on exit*
+C * contains the index of global nodes associated with *
+C * each element. *
+C * NELMNT :- on exit contains the number of elements in the *
+C * triangularisation. *
+C * *
+C * P.K.Sweby *
+C * *
+C ******************************************************************
+C
+ INTEGER ELMNTS
+ DIMENSION X(NODES),Y(NODES),ELMNTS(NEMAX,3)
+C
+ PI=4.0*ATAN(1.0)
+C
+C Calculate artificial nodes NODES+i i=1,2,3,4 and construct first
+C two (artificial) elements.
+C
+ XMIN=X(1)
+ XMAX=X(1)
+ YMIN=Y(1)
+ YMAX=Y(1)
+ DO 10 I=2,NODES
+ XMIN=MIN(XMIN,X(I))
+ XMAX=MAX(XMAX,X(I))
+ YMIN=MIN(YMIN,Y(I))
+ YMAX=MAX(YMAX,Y(I))
+ 10 CONTINUE
+ DX=XMAX-XMIN
+ DY=YMAX-YMIN
+ XL=XMIN-4.0*DX
+ XR=XMAX+4.0*DX
+ YL=YMIN-4.0*DY
+ YR=YMAX+4.0*DY
+ X(NODES+1)=XL
+ Y(NODES+1)=YL
+ X(NODES+2)=XL
+ Y(NODES+2)=YR
+ X(NODES+3)=XR
+ Y(NODES+3)=YR
+ X(NODES+4)=XR
+ Y(NODES+4)=YL
+ ELMNTS(1,1)=NODES+1
+ ELMNTS(1,2)=NODES+2
+ ELMNTS(1,3)=NODES+3
+ ELMNTS(2,1)=NODES+3
+ ELMNTS(2,2)=NODES+4
+ ELMNTS(2,3)=NODES+1
+ NELMNT=2
+ DO 90 IN=1,NODES
+C
+C Add one mesh point at a time and remesh locally if necessary
+C
+ NDEL=0
+ NEWEL=0
+ DO 40 IE=1,NELMNT
+C
+C Is point IN insided circumcircle of element IE ?
+C
+ I1=ELMNTS(IE,1)
+ I2=ELMNTS(IE,2)
+ I3=ELMNTS(IE,3)
+ X2=X(I2)-X(I1)
+ X3=X(I3)-X(I1)
+ Y2=Y(I2)-Y(I1)
+ Y3=Y(I3)-Y(I1)
+ Z=(X2*(X2-X3)+Y2*(Y2-Y3))/(Y2*X3-Y3*X2)
+ CX=0.5*(X3-Z*Y3)
+ CY=0.5*(Y3+Z*X3)
+ R2=CX**2+CY**2
+ RN2=((X(IN)-X(I1)-CX)**2+(Y(IN)-Y(I1)-CY)**2)
+ IF(RN2.GT.R2)GOTO 40
+C
+C Yes it is inside,create new elements and mark old for deletion.
+C
+ DO 30 J=1,3
+ DO 20 K=1,3
+ ELMNTS(NELMNT+NEWEL+J,K)=ELMNTS(IE,K)
+ 20 CONTINUE
+ ELMNTS(NELMNT+NEWEL+J,J)=IN
+ 30 CONTINUE
+ NEWEL=NEWEL+3
+ ELMNTS(IE,1)=0
+ NDEL=NDEL+1
+C
+ 40 CONTINUE
+C
+C If IN was inside circumcircle of more than 1 element then will
+C have created 2 identical new elements: delete them both.
+C
+ IF(NDEL.GT.1)THEN
+ DO 60 IE=NELMNT+1,NELMNT+NEWEL-1
+ DO 60 JE=IE+1,NELMNT+NEWEL
+ MATCH=0
+ DO 50 K=1,3
+ DO 50 L=1,3
+ IF(ELMNTS(IE,K).EQ.ELMNTS(JE,L))MATCH=MATCH+1
+ 50 CONTINUE
+ IF(MATCH.EQ.3)THEN
+ ELMNTS(IE,1)=0
+ ELMNTS(JE,1)=0
+ NDEL=NDEL+2
+ ENDIF
+ 60 CONTINUE
+ ENDIF
+C
+C Delete any elements
+C
+ NN=NELMNT+NEWEL
+ IE=1
+ 70 CONTINUE
+ IF(ELMNTS(IE,1).EQ.0)THEN
+ DO 80 J=IE,NN-1
+ DO 80 K=1,3
+ ELMNTS(J,K)=ELMNTS(J+1,K)
+ 80 CONTINUE
+ NN=NN-1
+ IE=IE-1
+ ENDIF
+ IE=IE+1
+ IF(IE.LE.NN)GOTO 70
+ NELMNT=NN
+ 90 CONTINUE
+C
+C Finally remove elements containing artificial nodes
+C
+ IE=1
+ 100 CONTINUE
+ NART=0
+ DO 110 L=1,3
+ IF(ELMNTS(IE,L).GT.NODES)NART=NART+1
+ 110 CONTINUE
+ IF(NART.GT.0)THEN
+ DO 120 J=IE,NN-1
+ DO 120 K=1,3
+ ELMNTS(J,K)=ELMNTS(J+1,K)
+ 120 CONTINUE
+ NELMNT=NELMNT-1
+ IE=IE-1
+ ENDIF
+ IE=IE+1
+ IF(IE.LE.NELMNT)GOTO 100
+ RETURN
+ END
+c-----------------------------------------------------------------------
+ subroutine estif3(nel,ske,fe,det,xe,ye,xyke,ierr)
+c-----------------------------------------------------------------------
+c this subroutine constructs the element stiffness matrix for heat
+c condution problem
+c
+c - Div ( K(x,y) Grad u ) = f
+c u = 0 on boundary
+c
+c using 3-node triangular elements arguments:
+c nel = element number
+c ske = element stiffness matrix
+c fe = element load vector
+c det = 2*area of the triangle
+c xy, ye= coordinates of the three nodal points in an element.
+c xyke = material constants (kxx, kxy, kyx, kyy)
+c
+c------------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension ske(3,3), fe(3), xe(3), ye(3), dn(3,2),xyke(2,2)
+c
+c initialize
+c
+ area = 0.5*det
+c
+ do 200 i=1,3
+ do 200 j=1,3
+ ske(i,j) = 0.0d0
+ 200 continue
+c
+c get first gradient of shape function
+c
+ call gradi3(nel,xe,ye,dn,det,ierr)
+ if (ierr .ne. 0) return
+c
+ do 100 i=1,3
+ do 100 j=1,3
+ t = 0.0d0
+ do 102 k=1,2
+ do 102 l=1,2
+ 102 t = t+xyke(k,l)*dn(i,k)*dn(j,l)
+ 100 ske(i,j) = t*area
+c
+ return
+ end
+c-------------------------------------------------------
+ subroutine gradi3(nel, xe, ye, dn, det,ierr)
+c-------------------------------------------------------
+c constructs the first derivative of the shape functions.
+c arguments:
+c nel = element nuumber
+c xy, ye= coordinates of the three nodal points in an element.
+c dn = gradients (1-st derivatives) of the shape functions.
+c area = area of the triangle
+c
+c-------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension xe(3), ye(3), dn(3,2)
+ data eps/1.d-17/
+c compute area
+ ierr = 0
+ if (det .le. eps) goto 100
+c
+ dn(1,1) = (ye(2)-ye(3))/det
+ dn(2,1) = (ye(3)-ye(1))/det
+ dn(3,1) = (ye(1)-ye(2))/det
+ dn(1,2) = (xe(3)-xe(2))/det
+ dn(2,2) = (xe(1)-xe(3))/det
+ dn(3,2) = (xe(2)-xe(1))/det
+c
+ return
+c
+ 100 continue
+ ierr = 3
+ write(iout,*) 'ERROR:negative area encountered at elmt: ',nel
+c write(iout,*) det,(xe(i),ye(i),i=1,3)
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+ implicit real*8 (a-h,o-z)
+ real*8 x(*),y(*),fs(*),f(*),xe(3),ye(3),det,areao3
+ integer ijk(node,*)
+c
+c generates the load vector f in assembled/unassembled form from the
+c the element contributions fs.
+c indic = indicates if f is to be assembled (1) or not (zero)
+c note: f(*) not initilazed. because might use values from boundary
+c conditions.
+c
+ jnod = 0
+ do 130 nel = 1,nelx
+c
+c get coordinates of nodal points
+c
+ do 104 i=1, node
+ j = ijk(i,nel)
+ xe(i) = x(j)
+ ye(i) = y(j)
+ 104 continue
+c
+c compute determinant
+c
+ det=xe(2)*(ye(3)-ye(1))+xe(3)*(ye(1)-ye(2))+xe(1)*(ye(2)-ye(3))
+c area3 = area/3
+ areao3 = det/6.0
+c
+c contributions to nodes in the element
+c
+ if (indic .eq. 0) then
+ do 115 ka=1,node
+ jnod = jnod+1
+ f(jnod) = fs(nel)*areao3
+ 115 continue
+ else
+ do 120 ka=1, node
+ ii = ijk(ka,nel)
+ f(ii) = f(ii) + fs(nel)*areao3
+ 120 continue
+ endif
+c
+ 130 continue
+ return
+ end
+c----- end of hsourc ---------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine bound (nx,nelx,ijk,nodcode,node,nint,iperm,
+ * x,y,wk,iwk)
+c-----------------------------------------------------------------------
+c this routine counts the number of boundary points and
+c reorders the points in such a way that the boundary nodes
+c are last.
+c
+c nx, nelx, ijk, nodcode, node: see other subroutines
+c iperm = permutation array from old orderin to new ordering,
+c iwk = reverse permutation array or return.
+c wk = real work array
+c On return
+c x, y, nodecode, are permuted
+c ijk is updated according to new oerdering.
+c nint = number of interior points.
+c
+c-----------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension ijk(node,1),x(1),y(1),wk(1),iwk(1),iperm(1),
+ * nodcode(1)
+
+c put all boundary points at the end, backwards
+ nint = 1
+ nbound = nx
+ do 1 j=1, nx
+ if (nodcode(j) .eq. 0) then
+ iperm(nint) = j
+ nint = nint+1
+ else
+ iperm(nbound) = j
+ nbound = nbound-1
+ endif
+ 1 continue
+c-------------------------------------------------------------------
+ nint = nint-1
+c
+c permute x's
+c
+ do 2 k=1, nx
+ wk(k) = x(k)
+ 2 continue
+ do 3 k=1,nx
+ x(k) = wk(iperm(k))
+ 3 continue
+c
+c permute the y's
+c
+ do 4 k=1, nx
+ wk(k) = y(k)
+ 4 continue
+ do 5 k=1, nx
+ y(k) = wk(iperm(k))
+ 5 continue
+c
+c permute the boundary information
+c
+ do 6 k=1, nx
+ iwk(k) = nodcode(k)
+ 6 continue
+ do 7 k=1,nx
+ nodcode(k) = iwk(iperm(k))
+ 7 continue
+c
+c get reverse permutation
+c
+ do 8 k=1, nx
+ iwk(iperm(k)) = k
+ 8 continue
+c
+c update the elements connectivity matrix
+c
+ do 10 nel = 1, nelx
+ do 9 j=1, node
+ knod = ijk(j,nel)
+ ijk(j,nel) = iwk(knod)
+ 9 continue
+ 10 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine symbound (nx,nelx,ijk,nodcode,node,nint,
+ * iperm,wk,iwk)
+c-----------------------------------------------------------------------
+c this routine is a symbolic version of routine bound.
+c
+c nx, nelx, ijk, nodcode, node: see other subroutines
+c iperm = permutation array from old orderin to new ordering,
+c iwk = reverse permutation array or return.
+c wk = real work array
+c On return
+c ijk = is updated according to new oerdering.
+c nint = number of interior points.
+c
+c-----------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension ijk(node,1),wk(1),iwk(1),iperm(1),
+ * nodcode(1)
+
+c put all boundary points at the end, backwards
+ nint = 1
+ nbound = nx
+ do 1 j=1, nx
+ if (nodcode(j) .eq. 0) then
+ iperm(nint) = j
+ nint = nint+1
+ else
+ iperm(nbound) = j
+ nbound = nbound-1
+ endif
+ 1 continue
+c-------------------------------------------------------------------
+ nint = nint-1
+c
+c permute the boundary information
+c
+ do 6 k=1, nx
+ iwk(k) = nodcode(k)
+ 6 continue
+ do 7 k=1,nx
+ nodcode(k) = iwk(iperm(k))
+ 7 continue
+c
+c get reverse permutation
+c
+ do 8 k=1, nx
+ iwk(iperm(k)) = k
+ 8 continue
+c
+c update the elements connectivity matrix
+c
+ do 10 nel = 1, nelx
+ do 9 j=1, node
+ knod = ijk(j,nel)
+ ijk(j,nel) = iwk(knod)
+ 9 continue
+ 10 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine diric (nx,nint,a,ja,ia, f)
+c--------------------------------------------------------------
+c this routine takes into account the boundary conditions
+c and removes the unnecessary boundary points.
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(*),ia(*),ja(*),f(*)
+c call extract from UNARY
+ call submat (nx,1,1,nint,1,nint,a,ja,ia,nr,nc,a,ja,ia)
+ write (*,*) 'nr=',nr,'nc=',nc
+ return
+c----------- end of diric -------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine symdiric (nx,nint,a,ja,ia, f)
+c--------------------------------------------------------------
+c this routine takes into account the boundary conditions
+c and removes the unnecessary boundary points.
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension a(*),ia(*),ja(*),f(*)
+c call submat from UNARY, with job = 0,
+c meaning no movement of real values.
+ call submat (nx,0,1,nint,1,nint,a,ja,ia,nr,nc,a,ja,ia)
+ return
+c----------- end of symdiric -------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine cleannods (nx,x,y,nelx,ijk,node,nodcode,iperm)
+c implicit none
+ integer nx,nelx,node,ijk(node,nelx),nodcode(*),iperm(nx)
+ real*8 x(nx),y(nx)
+c-----------------------------------------------------------------------
+c this routine removes the nodes that do not belong to any element
+c (spurious points) and relabels the ijk array accordingly.
+c-----------------------------------------------------------------------
+ integer nel,i,k,j,indx
+c
+ do j=1, nx
+ iperm(j) = 0
+ enddo
+c
+ do nel = 1, nelx
+ do i=1,node
+ k = ijk(i,nel)
+ iperm(k) = nel
+ enddo
+ enddo
+c
+ indx = 0
+ do j =1, nx
+ if (iperm(j) .ne. 0) then
+ indx = indx+1
+ iperm(indx) = j
+ x(indx) = x(j)
+ y(indx) = y(j)
+ nodcode(indx) = nodcode(j)
+ endif
+ enddo
+c
+c update nx
+c
+ nx = indx
+c
+c old number to new numbers
+c
+ do j =1, nx
+ iperm(nx+iperm(j)) = j
+ enddo
+c
+c
+c change all node numbers in ijk
+c
+ do nel = 1, nelx
+ do i=1,node
+ k = ijk(i,nel)
+ k = iperm(nx+k)
+ ijk(i,nel) = k
+ enddo
+ enddo
+ return
+c-----------------------------------------------------------------------
+c-----end-of-cleannod---------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine cleanel (nelx,ijk,node,nodcode,nodexc)
+c implicit none
+ integer nelx,node,nodexc,ijk(node,nelx),nodcode(*)
+c-----------------------------------------------------------------------
+c this routine remove certain types of elements from the mesh
+c An element whose nodes are all labelled by the same label
+c nodexc are removed. nelx is changed accordingly on return.
+c-----------------------------------------------------------------------
+ logical exclude
+ integer nel, i,k
+ nel = 1
+ 1 continue
+ exclude = .true.
+ do i=1,node
+ k = ijk(i,nel)
+ exclude = (exclude .and. nodcode(k).eq. nodexc)
+ enddo
+c
+ if (exclude) then
+ do i=1,node
+ ijk(i,nel) = ijk(i,nelx)
+ enddo
+ nelx = nelx - 1
+ else
+ nel = nel+1
+ endif
+ if (nel .le. nelx) goto 1
+ return
+c-----------------------------------------------------------------------
+c-----end-of-cleanel----------------------------------------------------
+ end
+
+ subroutine lstif3(ske, fe, xe, ye,
+ 1 xyk, funb, func, fung)
+c---------------------------------------------------------------------------
+c
+c This subroutine computes the local stiffness matrix for the
+c Diffusion-Convection Equation with the
+c variable cofficients, 'K(x,y), B(x,y), C(x,y) '
+c
+c -Div( K(x,y) T(x,y)) + B(x,y) Tx + C(x,y) Ty = G
+c
+c Here K(x,y) is a 2x2 Matrix, where each entry is a function of x and y.
+c
+c K, B, C and G need to be supplied by user.
+c They need to be defined as externals in the calling routines.
+c
+c PSI(i,x,y) : i-th shape fucntions on the standard triangle N, i=1, 2, 3
+c where N is the following.
+c
+c (-1,1)
+c .
+c . .
+c . .
+c . .
+c . . . . . . (1,-1)
+c (-1,-1)
+c
+c Local stiffness matrix is obtained by integral on the current
+c element. To do so, change the current coordinates to N
+c by Affine mapping, sending
+c
+c (xe(1),ye(1)) ---> (-1,-1)
+c (xe(2),ye(2)) ---> (1,-1)
+c (xe(3),ye(3)) ---> (-1,1) .
+c
+c Then we perform the integration on N
+c by Gaussian Quadrature with 9 points.
+c
+c---------------------------------------------------------------------------
+c
+c on entry
+c ---------
+c
+c xe = x coordinates of the nodes in the current element.
+c ye = y coordinates of the nodes in the current element.
+c xyk = subroutine defining the function K(x,y).
+c funb = function defining the function b(x,y).
+c func = function defining the function c(x,y).
+c fung = function defining the function g(x,y).
+c
+c---------------------------------------------------------------------------
+c
+c on return
+c ---------
+c
+c ske : Local Stiffness Matrix.( 3x3 in this subroutine.)
+c fe : Local Load Vector.
+c
+c---------------------------------------------------------------------------
+ implicit real*8(a-h,o-z)
+ dimension ske(3,3), fe(3), xe(3), ye(3), dn(3,2),
+ 1 xyke(2,2), wei(9), gau1(9), gau2(9)
+ external xyk, funb, func, fung
+
+c Gau1 and Gau2 are the Gaussian Quadrature Points for the Traingle N,
+c and Wei, are the corresponding weights.
+c
+c They are derived from the 1-D case by Reiterated integrals.
+c
+ data gau1/-0.8, -0.1127016654, 0.5745966692, -0.8872983346, -0.5,
+ 1 -0.1127016654, -0.9745966692, -0.8872983346, -0.8 /
+ data gau2/3*-0.7745966692, 3*0., 3*0.7745966692 /
+ data wei/0.2738575107, 0.4381720172, 0.2738551072, 0.2469135803,
+ 1 0.3950617284, 0.2469135803, 0.03478446464,
+ 2 0.05565514341, 0.03478446464 /
+
+ npt = 9
+
+c
+c Compute the Affine mappings from the current triangle to the
+c standard triangle N. Integration will be performed on that
+c triangle by Gaussian quadrature.
+c
+c T = A X + B
+c
+c A11, A12, A21, A22, B1, B2 will denote the entries of
+c A & B.
+c
+ x1 = xe(1)
+ x2 = xe(2)
+ x3 = xe(3)
+ y1 = ye(1)
+ y2 = ye(2)
+ y3 = ye(3)
+
+ rj1 = (x3-x1)*(y2-y3) - (x2-x3)*(y3-y1)
+ rj2 = (x3-x1)*(y1-y2) - (x1-x2)*(y3-y1)
+ a11 = 2*(y1-y3)/rj1
+ a12 = 2*(x3-x1)/rj1
+ a21 = 2*(y1-y2)/rj2
+ a22 = 2*(x2-x1)/rj2
+ b1 = 1. - a11*x2 - a12*y2
+ b2 = -1. - a21*x2 - a22*y2
+
+c
+c Compute the first order partial derivatives of the shape functions.
+c dn(i,1) and dn(i,2) are the first order partial derivativ of i-th shape function
+c with respect to x and y, respectively.
+c
+ dn(1,1) = -0.5*(a11+a21)
+ dn(1,2) = -0.5*(a12+a22)
+ dn(2,1) = 0.5*a11
+ dn(2,2) = 0.5*a12
+ dn(3,1) = 0.5*a21
+ dn(3,2) = 0.5*a22
+c Compute the Jacobian associated with T.
+ Rja = a11*a22 - a12*a21
+c
+c Find the inverse mapping of T
+c
+
+ u11 = a22/rja
+ u12 = -a12/Rja
+ u21 = -a21/rja
+ u22 = a11/rja
+ v1 = -u11*b1 - u12*b2
+ v2 = -u21*b1 - u22*b2
+
+ do 200 i = 1 , 3
+ T4 = 0.
+ do 220 j = 1 , 3
+ T1 = 0.
+ T2 = 0.
+ T3 = 0.
+ do 250 k = 1, npt
+ r = gau1(k)
+ s = gau2(k)
+ w = wei(k)
+
+ x = u11*r + u12*s + v1
+ y = u21*r + u22*s + v2
+
+ call xyk(xyke, x, y)
+
+ derv2 = dn(i,1)*dn(j,1)*xyke(1,1)
+ 1 + dn(i,2)*dn(j,2)*xyke(2,2)
+ 2 + dn(i,1)*dn(j,2)*xyke(1,2)
+ 3 + dn(i,2)*dn(j,1)*xyke(2,1)
+ if(j .eq. 1) then
+ T4 = T4 + w*fung(x,y)*psi(i,r,s)
+ endif
+
+ T1 = T1 + w*derv2
+ T2 = T2 + w*funb(x,y)*psi(i,r,s)
+ T3 = T3 + w*func(x,y)*psi(i,r,s)
+250 continue
+
+ ske(i,j) = (T1 + T2*dn(j,1) + T3*dn(j,2))/Rja
+220 continue
+ fe(i) = T4/Rja
+200 continue
+
+ return
+ end
+c--- end of lstif3 ---------------------------------------------------------
+c---------------------------------------------------------------------------
+C Piecewise linear fucntions on triangle.
+ function psi(i,r,s)
+ implicit real*8(a-h,o-z)
+
+ goto (100,200,300) ,i
+
+100 psi = -(r+s)/2.
+ return
+200 psi = (r+1.)/2.
+ return
+300 psi = (s+1.)/2.
+ return
+ end
diff --git a/MATGEN/FEM/femgen.f b/MATGEN/FEM/femgen.f
new file mode 100644
index 0000000..41cf66c
--- /dev/null
+++ b/MATGEN/FEM/femgen.f
@@ -0,0 +1,620 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c MATRIX GENERATION ROUTINES - FINITE ELEMENT MATRICES c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c genfea : generates finite element matrices in assembled form c
+c genfea_wbc : generates finite element matrices in assembled form c
+c without applying the boundary conditions c
+c genfeu : generates finite element matrices in unassembled form c
+c genfeu_wbc : generates finite element matrices in unassembled form c
+c without applying the boundary conditions c
+c genfeu_lstif : generates finite element matrices in unassembled form c
+c using the lstif problem appearing in elmtlib2.f c
+c assmb1 : assembles an unassembled matrix (produced by genfeu) c
+c----------------------------------------------------------------------c
+ subroutine genfea (nx,nelx,node,job,x,y,ijk,nodcode,fs,nint,
+ * a,ja,ia,f,iwk,jwk,ierr,xyk)
+c-----------------------------------------------------------------------
+c this subroutine generates a finite element matrix in assembled form.
+c the matrix is assembled in compressed sparse row format. See genfeu
+c for matrices in unassembled form. The user must provide the grid,
+c (coordinates x, y and connectivity matrix ijk) as well as some
+c information on the nodes (nodcode) and the material properties
+c (the function K(x,y) above) in the form of a subroutine xyk.
+c----------------------------------------------------------------------
+c
+c on entry:
+c ---------
+c
+c nx = integer . the number of nodes in the grid .
+c nelx = integer . the number of elements in the grid.
+c node = integer = the number of nodes per element (should be
+c set to three in this version). also the first dimension
+c of ijk
+c job = integer. If job=0, it is assumed that there is no heat
+c source (i.e. fs = 0) and the right hand side
+c produced will therefore be a zero vector.
+c If job = 1 on entry then the contributions from the
+c heat source in each element are taken into account.
+c
+c x, y = two real arrays containing the coordinates of the nodes.
+c
+c ijk = an integer array containing the connectivity matrix.
+c ijk(i,nel), i=1,2,..node, is the list of the nodes
+c constituting the element nel, ans listed in
+c counter clockwise order.
+c
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node. [This node and the
+c corresponmding element are discarded.]
+c
+c fs = real array of length nelx on entry containing the heat
+c source for each element (job = 1 only)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c
+c on return
+c ---------
+c nint = integer. The number of active (nonboundary) nodes. Also
+c equal to the dimension of the assembled matrix.
+c
+c a, ja, ia = assembled matrix in compressed sparse row format.
+c
+c f = real array containing the right hand for the linears
+c system to solve.
+c
+c ierr = integer. Error message. If (ierr .ne. 0) on return
+c it means that one of the elements has a negative or zero
+c area probably because of a bad ordering of the nodes
+c (see ijk above). Use the subroutine chkelmt to reorder
+c the nodes properly if necessary.
+c iwk, jwk = two integer work arrays of length nx each.
+c
+c-----------------------------------------------------------------------
+ real*8 a(*),x(*),y(*),f(*),fs(*)
+ integer ijk(node,*), nodcode(*),ia(*),ja(*),iwk(*),jwk(*)
+ external xyk, funb, func, fung
+c
+ ierr = 0
+c
+c take into boundary conditions to remove boundary nodes.
+c
+ call bound (nx,nelx,ijk,nodcode,node,nint,jwk,
+ * x,y,f,iwk)
+c
+c assemble the matrix
+c
+ call assmbo (nx,nelx,node,ijk,nodcode,x,y,
+ * a,ja,ia,f,iwk,jwk,ierr,xyk, funb, func, fung)
+c
+c if applicable (job .eq. 1) get heat source function
+c
+ indic = 1
+ if (job .eq. 1)
+ * call hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+c
+c call diric for Dirichlet conditions
+c
+ call diric(nx,nint,a,ja,ia,f)
+c done
+ return
+c------end of genfea ---------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+ subroutine genfea_wbc (nx,nelx,node,job,x,y,ijk,nodcode,fs,
+ * a,ja,ia,f,iwk,jwk,ierr,xyk)
+c-----------------------------------------------------------------------
+c this subroutine generates a finite element matrix in assembled form.
+c the matrix is assembled in compressed sparse row format. See genfeu
+c for matrices in unassembled form. The user must provide the grid,
+c (coordinates x, y and connectivity matrix ijk) as well as some
+c information on the nodes (nodcode) and the material properties
+c (the function K(x,y) above) in the form of a subroutine xyk.
+c----------------------------------------------------------------------
+c Irene Moulitsas, moulitsa@cs.umn.edu : It does not apply boundary
+c conditions; variable nint is eliminated
+c----------------------------------------------------------------------
+c
+c on entry:
+c ---------
+c
+c nx = integer . the number of nodes in the grid .
+c nelx = integer . the number of elements in the grid.
+c node = integer = the number of nodes per element (should be
+c set to three in this version). also the first dimension
+c of ijk
+c job = integer. If job=0, it is assumed that there is no heat
+c source (i.e. fs = 0) and the right hand side
+c produced will therefore be a zero vector.
+c If job = 1 on entry then the contributions from the
+c heat source in each element are taken into account.
+c
+c x, y = two real arrays containing the coordinates of the nodes.
+c
+c ijk = an integer array containing the connectivity matrix.
+c ijk(i,nel), i=1,2,..node, is the list of the nodes
+c constituting the element nel, ans listed in
+c counter clockwise order.
+c
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node. [This node and the
+c corresponmding element are discarded.]
+c
+c fs = real array of length nelx on entry containing the heat
+c source for each element (job = 1 only)
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c
+c on return
+c ---------
+c a, ja, ia = assembled matrix in compressed sparse row format.
+c
+c f = real array containing the right hand for the linears
+c system to solve.
+c
+c ierr = integer. Error message. If (ierr .ne. 0) on return
+c it means that one of the elements has a negative or zero
+c area probably because of a bad ordering of the nodes
+c (see ijk above). Use the subroutine chkelmt to reorder
+c the nodes properly if necessary.
+c iwk, jwk = two integer work arrays of length nx each.
+c
+c-----------------------------------------------------------------------
+ real*8 a(*),x(*),y(*),f(*),fs(*)
+ integer ijk(node,*), nodcode(*),ia(*),ja(*),iwk(*),jwk(*)
+ external xyk, funb, func, fung
+c
+ ierr = 0
+c
+c assemble the matrix
+c
+ call assmbo (nx,nelx,node,ijk,nodcode,x,y,
+ * a,ja,ia,f,iwk,jwk,ierr,xyk, funb, func, fung)
+c
+c if applicable (job .eq. 1) get heat source function
+c
+ indic = 1
+ if (job .eq. 1)
+ * call hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+c
+c done
+ return
+c------end of genfea_wbc -----------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine genfeu (nx,nelx,node,job,x,y,ijk,nodcode,fs,
+ * nint,a,na,f,iwk,jwk,ierr,xyk)
+c-----------------------------------------------------------------------
+c this subroutine generates finite element matrices for heat
+c condution problem
+c
+c - Div ( K(x,y) Grad u ) = f
+c u = 0 on boundary
+c
+c (with Dirichlet boundary conditions). The matrix is returned
+c in unassembled form. The user must provide the grid,
+c (coordinates x, y and connectivity matrix ijk) as well as some
+c information on the nodes (nodcode) and the material properties
+c (the function K(x,y) above) in the form of a subroutine xyk.
+c
+c----------------------------------------------------------------------
+c
+c on entry:
+c ---------
+c
+c nx = integer . the number of nodes in the grid .
+c nelx = integer . the number of elements in the grid.
+c node = integer = the number of nodes per element (should be
+c set to three in this version). also the first dimension
+c of ijk
+c job = integer. If job=0, it is assumed that there is no heat
+c source (i.e. fs = 0) and the right hand side
+c produced will therefore be a zero vector.
+c If job = 1 on entry then the contributions from the
+c heat source in each element are taken into account.
+c
+c na = integer. The first dimension of the array a.
+c a is declared as an array of dimension a(na,node,node).
+c
+c x, y = two real arrays containing the coordinates of the nodes.
+c
+c ijk = an integer array containing the connectivity matrix.
+c ijk(i,nel), i=1,2,..node, is the list of the nodes
+c constituting the element nel, ans listed in
+c counter clockwise order.
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node. [This node and the
+c corresponmding element are discarded.]
+c
+c fs = real array of length nelx on entry containing the heat
+c source for each element (job = 1 only)
+c
+c on return
+c ---------
+c nint = integer. The number of active (nonboundary) nodes. Also
+c equal to the dimension of the assembled matrix.
+c
+c a = matrix in unassembled form. a(nel,*,*) contains the
+c element matrix for element nel.
+c
+c f = real array containing the right hand for the linears
+c system to solve, in assembled form.
+c
+c ierr = integer. Error message. If (ierr .ne. 0) on return
+c it means that one of the elements has a negative or zero
+c area probably because of a bad ordering of the nodes
+c (see ijk above). Use the subroutine chkelmt to reorder
+c the nodes properly if necessary.
+c iwk, jwk = two integer work arrays of length nx each.
+c
+c-----------------------------------------------------------------------
+ real*8 a(na,node,node),x(*),y(*),f(*), fs(*)
+ integer ijk(node,*), nodcode(*),iwk(*),jwk(*)
+ external xyk
+c
+ ierr = 0
+c
+c take boundary conditions into account to move boundary nodes to
+c the end..
+c
+ call bound (nx,nelx,ijk,nodcode,node,nint,jwk,
+ * x,y,f,iwk)
+c
+c assemble the matrix
+c
+ call unassbl (a,na,f,nx,nelx,ijk,nodcode,
+ * node,x,y,ierr,xyk)
+c
+c if applicable (job .eq. 1) get heat source function
+c
+ indic = 0
+ if (job .eq. 1)
+ * call hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+c
+c done
+c
+ return
+ end
+c----- end of genfeu ----------------------------------------------------
+ subroutine genfeu_wbc (nx,nelx,node,job,x,y,ijk,nodcode,fs,
+ * a,na,f,iwk,jwk,ierr,xyk)
+c-----------------------------------------------------------------------
+c this subroutine generates finite element matrices for heat
+c condution problem
+c
+c - Div ( K(x,y) Grad u ) = f
+c u = 0 on boundary
+c
+c (with Dirichlet boundary conditions). The matrix is returned
+c in unassembled form. The user must provide the grid,
+c (coordinates x, y and connectivity matrix ijk) as well as some
+c information on the nodes (nodcode) and the material properties
+c (the function K(x,y) above) in the form of a subroutine xyk.
+c
+c----------------------------------------------------------------------
+c moulitsa@cs : It does not apply boundary conditions
+c variable nint is eliminated
+c----------------------------------------------------------------------
+c
+c on entry:
+c ---------
+c
+c nx = integer . the number of nodes in the grid .
+c nelx = integer . the number of elements in the grid.
+c node = integer = the number of nodes per element (should be
+c set to three in this version). also the first dimension
+c of ijk
+c job = integer. If job=0, it is assumed that there is no heat
+c source (i.e. fs = 0) and the right hand side
+c produced will therefore be a zero vector.
+c If job = 1 on entry then the contributions from the
+c heat source in each element are taken into account.
+c
+c na = integer. The first dimension of the array a.
+c a is declared as an array of dimension a(na,node,node).
+c
+c x, y = two real arrays containing the coordinates of the nodes.
+c
+c ijk = an integer array containing the connectivity matrix.
+c ijk(i,nel), i=1,2,..node, is the list of the nodes
+c constituting the element nel, ans listed in
+c counter clockwise order.
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node. [This node and the
+c corresponmding element are discarded.]
+c
+c fs = real array of length nelx on entry containing the heat
+c source for each element (job = 1 only)
+c
+c on return
+c ---------
+c a = matrix in unassembled form. a(nel,*,*) contains the
+c element matrix for element nel.
+c
+c f = real array containing the right hand for the linears
+c system to solve, in assembled form.
+c
+c ierr = integer. Error message. If (ierr .ne. 0) on return
+c it means that one of the elements has a negative or zero
+c area probably because of a bad ordering of the nodes
+c (see ijk above). Use the subroutine chkelmt to reorder
+c the nodes properly if necessary.
+c iwk, jwk = two integer work arrays of length nx each.
+c
+c-----------------------------------------------------------------------
+ real*8 a(na,node,node),x(*),y(*),f(*), fs(*)
+ integer ijk(node,*), nodcode(*),iwk(*),jwk(*)
+ external xyk
+c
+ ierr = 0
+c
+c assemble the matrix
+c
+ call unassbl (a,na,f,nx,nelx,ijk,nodcode,
+ * node,x,y,ierr,xyk)
+c
+c if applicable (job .eq. 1) get heat source function
+c
+ indic = 0
+ if (job .eq. 1)
+ * call hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+c
+c done
+c
+ return
+ end
+c----- end of genfeu_wbc -----------------------------------------------
+ subroutine genfeu_lstif (nx,nelx,node,job,x,y,ijk,nodcode,fs,
+ * a,na,f,iwk,jwk,ierr,xyk)
+c-----------------------------------------------------------------------
+c this subroutine generates finite element matrices using unassmbl_lstif.
+c The matrix is returned in unassembled form.
+c The user must provide the grid, coordinates x, y and connectivity matrix
+c ijk) as well as some information on the nodes (nodcode) and the material
+c properties (the function K(x,y) above) in the form of a subroutine xyk.
+c
+c----------------------------------------------------------------------
+c moulitsa@cs.umn.edu : It does not apply boundary conditions
+c variable nint is eliminated
+c----------------------------------------------------------------------
+c
+c on entry:
+c ---------
+c
+c nx = integer . the number of nodes in the grid .
+c nelx = integer . the number of elements in the grid.
+c node = integer = the number of nodes per element (should be
+c set to three in this version). also the first dimension
+c of ijk
+c job = integer. If job=0, it is assumed that there is no heat
+c source (i.e. fs = 0) and the right hand side
+c produced will therefore be a zero vector.
+c If job = 1 on entry then the contributions from the
+c heat source in each element are taken into account.
+c
+c na = integer. The first dimension of the array a.
+c a is declared as an array of dimension a(na,node,node).
+c
+c x, y = two real arrays containing the coordinates of the nodes.
+c
+c ijk = an integer array containing the connectivity matrix.
+c ijk(i,nel), i=1,2,..node, is the list of the nodes
+c constituting the element nel, ans listed in
+c counter clockwise order.
+c
+c xyk = subroutine defining the material properties at each
+c element. Form:
+c call xyk(nel,xyke,x,y,ijk,node) with on return
+c xyke = material constant matrices.
+c for each element nel, xyke(1,nel),xyke(2,nel)
+c and xyke(3,nel) represent the constants
+c K11, K22, and K12 at that element.
+c
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node. [This node and the
+c corresponmding element are discarded.]
+c
+c fs = real array of length nelx on entry containing the heat
+c source for each element (job = 1 only)
+c
+c on return
+c ---------
+c a = matrix in unassembled form. a(nel,*,*) contains the
+c element matrix for element nel.
+c
+c f = real array containing the right hand for the linears
+c system to solve, in assembled form.
+c
+c ierr = integer. Error message. If (ierr .ne. 0) on return
+c it means that one of the elements has a negative or zero
+c area probably because of a bad ordering of the nodes
+c (see ijk above). Use the subroutine chkelmt to reorder
+c the nodes properly if necessary.
+c iwk, jwk = two integer work arrays of length nx each.
+c
+c-----------------------------------------------------------------------
+ real*8 a(na,node,node),x(*),y(*),f(*), fs(*)
+ integer ijk(node,*), nodcode(*),iwk(*),jwk(*)
+ external xyk, funb, func, fung
+c
+ ierr = 0
+c
+c assemble the matrix
+c
+ call unassbl_lstif (a,na,f,nx,nelx,ijk,nodcode,
+ * node,x,y,ierr,xyk,funb,func,fung)
+c
+c if applicable (job .eq. 1) get heat source function
+c
+ indic = 0
+ if (job .eq. 1)
+ * call hsourc (indic,nx,nelx,node,x,y,ijk,fs,f)
+c
+c done
+c
+ return
+ end
+c----- end of genfeu_lstif ---------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine assmb1 (u,nu,a,ja,ia,fu,f,nx,nelx,ijk,nodcode,
+ * node,iwk,jwk)
+c--------------------------------------------------------------
+c u = unassembled matrix u(na,node,node)
+c nu = 1-st dimension of u
+c a,ja,ia= assembled matrix on output
+c fu = unassembled right hand side
+c f = right hand side (global load vector) assembled
+c nx = number of nodes at input
+c nelx = number of elements at input
+c ijk = connectivity matrix: for node k, ijk(*,k) point to the
+c nodes of element k.
+c node = total number of nodal points in each element
+c
+c nodcode= boundary information list for each node with the
+c following meaning:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point (corner points
+c
+c x,y = real*8 arrays containing the $x$ and $y$ coordinates
+c resp. of the nodes.
+c K11, K22, and K12 at that element.
+c iwk,jwk = two integer work arrays.
+c ierr = error message integer .
+c ierr = 0 --> normal return
+c ierr = 1 --> negative area encountered (due to bad
+c numbering of nodes of an element- see
+c message printed in unit iout). not used..
+c iout = output unit (not used here).
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ real*8 u(nu,node,node),a(*),fu(node,*),f(*)
+ integer ja(*),ia(*),ijk(node,*),iwk(*),jwk(*),nodcode(*)
+c max number of nonzeros per row allowed = 200
+c--------------------------------------------------------------
+c initialize
+c--------------------------------------------------------------
+ do 100 i=1,nx
+ f(i) = 0.0d0
+ 100 continue
+c
+c initialize pointer arrays.
+c
+ do 5 k=1,nx+1
+ ia(k) = 1
+ jwk(k) = 0
+ 5 continue
+ do 6 k=1,nelx
+ do 59 j=1,node
+ knod = ijk(j,k)
+ ia(knod) = ia(knod) + 1
+ 59 continue
+ 6 continue
+c---------------------------------------------------
+ do 7 k=1, nx
+ if (nodcode(k) .ge.1 ) ia(k)=ia(k)+1
+ 7 continue
+c
+ ksav = ia(1)
+ ia(1) = 1
+ do 101 j=2, nx+1
+ ksavn = ia(j)
+ ia(j) = ia(j-1) + ksav
+ iwk(j-1) = ia(j-1)-1
+ ksav = ksavn
+ 101 continue
+c-----------------
+c main loop
+c-----------------
+ do 102 nel=1, nelx
+c
+c get nodal points
+c
+ do 120 ka=1, node
+ ii = ijk(ka,nel)
+ f(ii) = f(ii) + fu(ka,nel)
+c
+c unpack row into jwk1
+c
+ irowst = ia(ii)
+ ilast = iwk(ii)
+ do 109 k=irowst,ilast
+ jwk(ja(k)) = k
+ 109 continue
+c
+ do 108 kb = 1,node
+c
+c column number = jj
+c
+ jj = ijk(kb,nel)
+ k = jwk(jj)
+ if (k .eq. 0) then
+ ilast = ilast+1
+ jwk(jj) = ilast
+ ja(ilast) = jj
+ a(ilast) = u(nel,ka,kb)
+ else
+ a(k) = a(k) + u(nel,ka,kb)
+ endif
+ 108 continue
+c refresh jwk
+ do 119 k=irowst,ilast
+ jwk(ja(k)) = 0
+ 119 continue
+ iwk(ii) = ilast
+ 120 continue
+c
+ 102 continue
+ return
+c---------end-of-assmb1----------------------------------------------
+ end
+c--------------------------------------------------------------------
diff --git a/MATGEN/FEM/functns2.f b/MATGEN/FEM/functns2.f
new file mode 100644
index 0000000..090536c
--- /dev/null
+++ b/MATGEN/FEM/functns2.f
@@ -0,0 +1,225 @@
+c-----------------------------------------------------------------------
+c contains the functions needed for defining the PDE poroblems.
+c
+c first for the scalar 5-point and 7-point PDE
+c-----------------------------------------------------------------------
+ function afun (x,y,z)
+ real*8 afun, x,y,z
+ afun = -1.0
+ return
+ end
+
+ function bfun (x,y,z)
+ real*8 bfun, x,y,z
+ bfun = -1.0
+ return
+ end
+
+ function cfun (x,y,z)
+ real*8 cfun, x,y,z
+ cfun = -1.0d0
+ return
+ end
+
+ function dfun (x,y,z)
+ real*8 dfun, x,y,z
+ dfun = 10.d0
+ return
+ end
+
+ function efun (x,y,z)
+ real*8 efun, x,y,z
+ efun = 0.0d0
+ return
+ end
+
+ function ffun (x,y,z)
+ real*8 ffun, x,y,z
+ ffun = 0.0
+ return
+ end
+
+ function gfun (x,y,z)
+ real*8 gfun, x,y,z
+ gfun = 0.0
+ return
+ end
+
+ function hfun(x, y, z)
+ real*8 hfun, x, y, z
+ hfun = 0.0
+ return
+ end
+
+ function betfun(side, x, y, z)
+ real*8 betfun, x, y, z
+ character*2 side
+ betfun = 1.0
+ return
+ end
+
+ function gamfun(side, x, y, z)
+ real*8 gamfun, x, y, z
+ character*2 side
+ if (side.eq.'x2') then
+ gamfun = 5.0
+ else if (side.eq.'y1') then
+ gamfun = 2.0
+ else if (side.eq.'y2') then
+ gamfun = 7.0
+ else
+ gamfun = 0.0
+ endif
+ return
+ end
+
+c-----------------------------------------------------------------------
+c functions for the block PDE's
+c-----------------------------------------------------------------------
+ subroutine afunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine bfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine cfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ coeff((j-1)*nfree+j) = -1.0d0
+ 2 continue
+ return
+ end
+
+ subroutine dfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine efunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine ffunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+
+ subroutine gfunbl (nfree,x,y,z,coeff)
+ real*8 x, y, z, coeff(100)
+ do 2 j=1, nfree
+ do 1 i=1, nfree
+ coeff((j-1)*nfree+i) = 0.0d0
+ 1 continue
+ 2 continue
+ return
+ end
+c-----------------------------------------------------------------------
+c The material property function xyk for the
+c finite element problem
+c-----------------------------------------------------------------------
+c subroutine xyk(nel,xyke,x,y,ijk,node)
+c implicit real*8 (a-h,o-z)
+c dimension xyke(2,2), x(*), y(*), ijk(node,*)
+cc
+cc this is the identity matrix.
+cc
+c xyke(1,1) = 1.0d0
+c xyke(2,2) = 1.0d0
+c xyke(1,2) = 0.0d0
+c xyke(2,1) = 0.0d0
+cc
+c return
+c end
+c
+ subroutine xyk (xyke, x, y)
+ implicit real*8(a-h,o-z)
+ dimension xyke(2,2)
+
+ xyke(1,1) = 1.
+ xyke(1,1) = exp(x+y)
+ xyke(1,2) = 0.
+ xyke(2,1) = 0.
+ xyke(2,2) = 1.
+ xyke(2,2) = exp(x+y)
+ return
+ end
+
+ function funb(x,y)
+ implicit real*8(a-h,o-z)
+
+ funb = 0.
+ funb = 2.5
+ funb = 2*x
+ return
+ end
+
+ function func(x,y)
+ implicit real*8(a-h,o-z)
+
+ func = 0.
+ func = -1.5
+ func = -5*y
+ return
+ end
+
+ function fung(x,y)
+c Right hand side corresponding to the exact solution of
+c u = exp(x+y)*x*(1.-x)*y*(1.-y)
+c (That exact solution is defined in the function exact)
+ implicit real*8(a-h,o-z)
+
+c fung = 1. + x
+c fung = 2*y*(1.-y) + 2*x*(1.-x)
+c fung = 2*y*(1.-y) + 2*x*(1.-x) +2.5*(1-2*x)*y*(1-y)
+c 1 - 1.5*(1.-2*y)*x*(1-x)
+ r = exp(x+y)
+ fung = r*r*((x*x+3.*x)*y*(1.-y) +
+ 1 (y*y+3.*y)*x*(1.-x))
+ 2 + r*(r-2.*x)*(x*x+x-1.)*y*(1.-y)
+ 3 + r*(r+5.*y)*(y*y+y-1.)*x*(1.-x)
+ return
+ end
+
+ function exact(x,y)
+C Exact Solution.
+ implicit real*8(a-h,o-z)
+
+ exact = exp(x+y)*x*(1.-x)*y*(1.-y)
+
+ return
+ end
diff --git a/MATGEN/FEM/makefile b/MATGEN/FEM/makefile
new file mode 100644
index 0000000..2bc6e21
--- /dev/null
+++ b/MATGEN/FEM/makefile
@@ -0,0 +1,20 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES = convdif.o functns2.o
+
+fem.ex: $(FILES) ../../UNSUPP/PLOTS/psgrd.o ../../libskit32.a
+ $(F77) $(FFLAGS) -o fem.ex $(FILES) ../../UNSUPP/PLOTS/psgrd.o ../../libskit32.a
+
+clean:
+ rm -f *.o *.ex core *.trace
+
+../../libskit.a:
+ (cd ../..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
+../../UNSUPP/PLOTS/psgrd.o: ../../UNSUPP/PLOTS/psgrd.f
+ (cd ../../UNSUPP/PLOTS; $(F77) $(FFLAGS) -c psgrd.f)
+
diff --git a/MATGEN/FEM/mat.hb b/MATGEN/FEM/mat.hb
new file mode 100644
index 0000000..1444ca1
--- /dev/null
+++ b/MATGEN/FEM/mat.hb
@@ -0,0 +1,513 @@
+1Sample matrix from SPARSKIT SPARSKIT
+ 509 19 92 398 0
+rua 369 369 2385 0
+(20I4) (26I3) (6D12.6) (6D12.6)
+ 1 5 9 13 18 25 28 32 40 43 47 51 55 62 69 74 79 86 91 98
+ 103 108 115 122 127 132 139 144 151 156 163 168 173 178 185 192 199 206 213 220
+ 227 234 241 248 255 262 269 276 283 290 297 304 311 318 325 332 339 346 353 360
+ 367 374 381 388 395 400 407 414 419 426 431 438 443 450 455 462 467 474 479 484
+ 489 494 501 506 513 520 525 532 537 542 547 554 559 566 571 578 583 590 597 602
+ 609 614 619 624 629 634 641 648 655 662 669 676 683 690 697 704 711 718 725 732
+ 739 746 753 760 767 774 781 788 795 802 809 816 823 830 837 844 851 858 865 872
+ 879 886 893 900 907 914 921 928 935 942 949 956 963 970 977 984 991 99810051012
+10191026103310401047105410611068107510821089109611031110111711241131113811451152
+11591166117311801187119412011208121512221229123612431250125712641271127812851292
+12991306131313201327133413411348135513621369137613831390139714041411141814251432
+14391446145314601467147414811488149515021509151615231530153715441551155815651572
+15791586159316001607161416211628163516421649165616631670167716841691169817051712
+17191726173317401747175417611768177517821789179618031810181718241831183818451852
+18591866187318801887189419011906191319181925193219391946195119581963197019751980
+19871992199920042011201820232028203520402047205220592066207120762081208620912096
+21012106211321182125213021372144215121582163217021752182218721922197220222072212
+22192226223122382243225022552260226722742279228622912298230523122317232423292336
+2341234623512356236123662371237623812386
+ 1286287298 2300301306 3308309316 4294295322323 5290291304312314334 6318
+319 7330331338 8326327336340348354362 9364365 10342343346 11350351360 12356
+357368 13226227236237288293 14228229256257292297 15230231289296 16232233299303
+ 17234235242243302305 18238239307311 19240241244245310313 20246247317321 21248
+249315320 22250251260261324329 23252253262263328333 24254255325332 25258259335
+337 26264265268269341345 27266267339344 28270271278279349353 29272273347352 30
+274275284285355359 31276277358361 32280281363367 33282283366369 34106108140139
+226229 35107106143142228231 36108107137136227230 37109111149148232235 38110109
+152151234237 39111110146145233236 40112114158157238241 41113112161160240243 42
+114113155154239242 43115117167166244247 44116115170169246249 45117116164163245
+248 46118120176175250253 47119118179178252255 48120119173172251254 49121123185
+184256259 50122121188187258261 51123122182181257260 52124126194193262265 53125
+124197196264267 54126125191190263266 55127129203202268271 56128127206205270273
+ 57129128200199269272 58130132212211274277 59131130215214276279 60132131209208
+275278 61133135221220280283 62134133224223282285 63135134218217281284 64136138
+147146286288 65138137287289 66139141186185290292 67141140151153291293 68142144
+294296 69144143181183295297 70145147298299 71148150156155300302 72150149301303
+ 73153152160162304305 74154156306307 75157159168167308310 76159158309311 77162
+161163165312313 78165164314315 79166168316317 80169171318320 81171170319321 82
+172174183182322324 83174173323325 84175177195194326328 85177176187189327329 86
+178180330332 87180179190192331333 88184186334335 89189188336337 90192191338339
+ 91193195204203340341 92196198342344 93198197199201343345 94201200346347 95202
+204210209348349 96205207350352 97207206214216351353 98208210219218354355 99211
+213356358100213212223225357359101216215360361102217219362363103220222364366104
+222221365367105225224368369106107108228229 34 35106107108230231 35 36106107108
+226227 34 36109110111234235 37 38109110111236237 38 39109110111232233 37 39112
+113114240241 40 41112113114242243 41 42112113114238239 40 42115116117246247 43
+ 44115116117248249 44 45115116117244245 43 45118119120252253 46 47118119120254
+255 47 48118119120250251 46 48121122123258259 49 50121122123260261 50 51121122
+123256257 49 51124125126264265 52 53124125126266267 53 54124125126262263 52 54
+127128129270271 55 56127128129272273 56 57127128129268269 55 57130131132276277
+ 58 59130131132278279 59 60130131132274275 58 60133134135282283 61 62133134135
+284285 62 63133134135280281 61 63136137138227288 64 36136137138289230 36 65136
+137138286287 64 65139140141229292 66 34139140141293226 34 67139140141290291 66
+ 67142143144231296 68 35142143144297228 35 69142143144294295 68 69145146147233
+299 70 39145146147288236 39 64145146147298286 70 64148149150235302 71 37148149
+150303232 37 72148149150300301 71 72151152153237293 67 38151152153305234 38 73
+151152153291304 67 73154155156239307 74 42154155156302242 42 71154155156306300
+ 74 71157158159241310 75 40157158159311238 40 76157158159308309 75 76160161162
+243305 73 41160161162313240 41 77160161162304312 73 77163164165245313 77 45163
+164165315248 45 78163164165312314 77 78166167168247317 79 43166167168310244 43
+ 75166167168316308 79 75169170171249320 80 44169170171321246 44 81169170171318
+319 80 81172173174251324 82 48172173174325254 48 83172173174322323 82 83175176
+177253328 84 46175176177329250 46 85175176177326327 84 85178179180255332 86 47
+178179180333252 47 87178179180330331 86 87181182183257297 69 51181182183324260
+ 51 82181182183295322 69 82184185186259335 88 49184185186292256 49 66184185186
+334290 88 66187188189261329 85 50187188189337258 50 89187188189327336 85 89190
+191192263333 87 54190191192339266 54 90190191192331338 87 90193194195265341 91
+ 52193194195328262 52 84193194195340326 91 84196197198267344 92 53196197198345
+264 53 93196197198342343 92 93199200201269345 93 57199200201347272 57 94199200
+201343346 93 94202203204271349 95 55202203204341268 55 91202203204348340 95 91
+205206207273352 96 56205206207353270 56 97205206207350351 96 97208209210275355
+ 98 60208209210349278 60 95208209210354348 98 95211212213277358 99 58211212213
+359274 58100211212213356357 99100214215216279353 97 59214215216361276 59101214
+215216351360 97101217218219281363102 63217218219355284 63 98217218219362354102
+ 98220221222283366103 61220221222367280 61104220221222364365103104223224225285
+359100 62223224225369282 62105223224225357368100105226108227293140 13 34226108
+227136288 13 36228106229297143 14 35228106229139292 14 34230107231289137 15 36
+230107231142296 15 35232111233303149 16 37232111233145299 16 39234109235305152
+ 17 38234109235148302 17 37236110237288146 13 39236110237151293 13 38238114239
+311158 18 40238114239154307 18 42240112241313161 19 41240112241157310 19 40242
+113243302155 17 42242113243160305 17 41244117245310167 19 43244117245163313 19
+ 45246115247321170 20 44246115247166317 20 43248116249315164 21 45248116249169
+320 21 44250120251329176 22 46250120251172324 22 48252118253333179 23 47252118
+253175328 23 46254119255325173 24 48254119255178332 24 47256123257292185 14 49
+256123257181297 14 51258121259337188 25 50258121259184335 25 49260122261324182
+ 22 51260122261187329 22 50262126263328194 23 52262126263190333 23 54264124265
+345197 26 53264124265193341 26 52266125267339191 27 54266125267196344 27 53268
+129269341203 26 55268129269199345 26 57270127271353206 28 56270127271202349 28
+ 55272128273347200 29 57272128273205352 29 56274132275359212 30 58274132275208
+355 30 60276130277361215 31 59276130277211358 31 58278131279349209 28 60278131
+279214353 28 59280135281367221 32 61280135281217363 32 63282133283369224 33 62
+282133283220366 33 61284134285355218 30 63284134285223359 30 62286138287298147
+ 1 64286138287 1 65227136288146236 13 64289137230 15 65290141291334186 5 66
+290141291153304 5 67229139292185256 14 66293140226237151 13 67294144295 4 68
+294144295183322 4 69231142296 15 68297143228257181 14 69298147286 1 70233145
+299 16 70300150301306156 2 71300150301 2 72235148302155242 17 71303149232 16
+ 72291153304162312 5 73305152234243160 17 73306156300 2 74239154307 18 74308
+159309316168 3 75308159309 3 76241157310167244 19 75311158238 18 76304162312
+165314 5 77313161240245163 19 77312165314 5 78315164248 21 78316168308 3 79
+247166317 20 79318171319 6 80318171319 6 81249169320 21 80321170246 20 81322
+174323295183 4 82322174323 4 83251172324182260 22 82325173254 24 83326177327
+340195 8 84326177327189336 8 85253175328194262 23 84329176250261187 22 85330
+180331 7 86330180331192338 7 87255178332 24 86333179252263190 23 87334186290
+ 5 88259184335 25 88327189336 8 89337188258 25 89331192338 7 90339191266 27
+ 90340195326348204 8 91265193341203268 26 91342198343 10 92342198343201346 10
+ 93267196344 27 92345197264269199 26 93343201346 10 94347200272 29 94348204340
+354210 8 95271202349209278 28 95350207351 11 96350207351216360 11 97273205352
+ 29 96353206270279214 28 97354210348362219 8 98275208355218284 30 98356213357
+ 12 99356213357225368 12100277211358 31 99359212274285223 30100351216360 11101
+361215276 31101362219354 8102281217363 32102364222365 9103364222365 9104283
+220366 33103367221280 32104357225368 12105369224282 33105
+0.113853E+01-.195313E-02-.575124E+00-.561452E+000.422461E+01-.138777E+01
+-.140127E+01-.143557E+010.109521E+02-.363284E+01-.354984E+01-.376946E+01
+0.581191E+01-.126000E+01-.279169E+01-.106120E+00-.165409E+010.212429E+02
+-.714433E+010.605469E-01-.309815E+01-.345169E+01-.380250E+01-.380676E+01
+0.116662E+02-.587421E+01-.579202E+010.154372E+02-.349426E+01-.771406E+01
+-.422891E+010.596294E+02-.185829E+020.164713E+00-.863206E+01-.251953E+00
+-.107769E+02-.109829E+02-.105675E+020.332621E+02-.166681E+02-.165940E+02
+0.198031E+02-.933238E+010.310547E+00-.107813E+020.760070E+02-.251677E+02
+-.246854E+02-.261539E+020.779786E+02-.263571E+02-.261276E+02-.254939E+02
+0.109416E+02-.303909E+01-.264850E+01-.244798E+01-.280211E+010.292969E-01
+-.332031E-010.180320E+020.813802E-01-.400577E+01-.852864E-01-.502651E+01
+-.463328E+01-.436254E+010.352740E+01-.170153E+01-.540364E-01-.776606E+00
+-.995235E+000.352740E+010.188802E-01-.179267E+01-.844965E+00-.908646E+00
+0.177179E+02-.435213E+010.846354E-02-.439768E+01-.473607E+01-.189173E+01
+-.234874E+010.915553E+01-.315755E-01-.457737E+01-.216269E+01-.238390E+01
+0.292905E+02-.698365E+010.725911E-01-.761003E+01-.767969E+01-.345430E+01
+-.363545E+010.186563E+02-.708008E-01-.921896E+01-.451251E+01-.485402E+01
+0.184896E+02-.912196E+010.776367E-01-.457647E+01-.486883E+010.297222E+02
+-.823563E+01-.715474E+01-.664173E+01-.768616E+010.133463E+00-.137370E+00
+0.484203E+020.185547E+00-.110552E+02-.133835E+02-.231120E+00-.126784E+02
+-.112576E+020.957841E+01-.462286E+01-.158203E+00-.209077E+01-.270658E+01
+0.230525E+02-.117141E+020.112630E+00-.519240E+01-.625868E+010.805632E+02
+-.186550E+02-.183919E+02-.216064E+02-.219059E+020.279297E+00-.283203E+00
+0.254511E+020.258463E+00-.132299E+02-.559257E+01-.688712E+010.132081E+03
+-.304036E+00-.309451E+02-.329645E+02-.353405E+02-.148767E+02-.176501E+02
+0.630204E+02-.305362E+020.331380E+00-.152600E+02-.175555E+020.133373E+03
+-.239909E+00-.333526E+02-.318650E+02-.340234E+02-.158228E+02-.180697E+02
+0.103485E+03-.512571E+020.280924E+00-.261435E+02-.263649E+020.534711E+02
+-.786133E-01-.268678E+02-.129251E+02-.135996E+020.825567E+02-.414242E+02
+0.854492E-01-.198324E+02-.213854E+020.140459E+02-.340219E+010.553385E-01
+-.360060E+01-.592448E-01-.312354E+01-.391571E+010.109416E+02-.240631E+01
+-.279690E+01-.308076E+01-.265371E+01-.696614E-010.657552E-010.852390E+01
+-.436198E-01-.238653E+010.397135E-01-.189170E+01-.218080E+01-.206097E+01
+0.109416E+02-.299742E+01-.264329E+01-.248964E+01-.280732E+01-.716146E-02
+0.325521E-020.140459E+020.188802E-01-.316521E+01-.227865E-01-.387404E+01
+-.360581E+01-.339698E+010.852390E+01-.218601E+01-.716146E-02-.205576E+01
+0.325521E-02-.193337E+01-.234486E+010.230692E+02-.586496E+01-.546024E+01
+-.565662E+01-.607634E+010.465495E-01-.576172E-010.230692E+020.595703E-01
+-.565793E+01-.706380E-01-.586365E+01-.609066E+01-.544592E+010.179676E+02
+-.472175E+01-.445963E-01-.426237E+010.335286E-01-.439638E+01-.457606E+01
+0.335163E+02-.869232E+01-.681966E-01-.806989E+010.672200E-01-.813304E+01
+-.862006E+010.379785E+02-.920724E+01-.913758E+01-.977698E+01-.985576E+01
+0.737304E-01-.747070E-010.335163E+020.711263E-01-.863178E+01-.721028E-01
+-.812132E+01-.805426E+01-.870795E+010.381607E+02-.915874E+010.159505E+00
+-.990143E+01-.163411E+00-.856759E+01-.105290E+020.297222E+02-.660006E+01
+-.768095E+01-.827730E+01-.715995E+01-.173828E+000.169922E+000.231502E+02
+-.147786E+00-.647968E+010.143880E+00-.511171E+01-.596146E+01-.559348E+01
+0.297222E+02-.819397E+01-.714954E+01-.668339E+01-.769137E+010.970052E-01
+-.100911E+000.381607E+020.123047E+00-.860926E+01-.126953E+00-.104874E+02
+-.990663E+01-.915353E+010.231502E+02-.596666E+01-.111328E+00-.558827E+01
+0.107422E+00-.515338E+01-.643802E+010.627452E+02-.257161E+00-.145046E+02
+0.253255E+00-.168479E+02-.142676E+02-.171213E+020.627452E+02-.142051E+02
+0.268880E+00-.171838E+02-.272786E+00-.168947E+02-.144577E+020.488686E+02
+-.131830E+02-.134460E+02-.112311E+02-.110046E+020.242838E+00-.246745E+00
+0.103442E+03-.279722E+02-.293620E+00-.237650E+020.289713E+00-.240385E+02
+-.276623E+020.132819E+03-.308982E+02-.305987E+02-.354909E+02-.358269E+02
+0.315755E+00-.319661E+000.103442E+030.305338E+00-.277091E+02-.309245E+00
+-.239916E+02-.237025E+02-.280347E+020.170422E+03-.427835E+02-.399174E+02
+-.423668E+02-.453437E+020.254883E+00-.265950E+000.170422E+030.267904E+00
+-.423681E+02-.278971E+00-.427822E+02-.453580E+02-.399031E+020.132726E+03
+-.353262E+02-.252930E+00-.310746E+020.241862E+00-.329632E+02-.333513E+02
+0.132637E+03-.344472E+02-.322889E+02-.318755E+02-.340247E+020.815429E-01
+-.825195E-010.150297E+030.880534E-01-.361395E+02-.890299E-01-.390131E+02
+-.385711E+02-.365725E+020.117052E+03-.300119E+02-.851237E-01-.285091E+02
+0.841471E-01-.281035E+02-.304266E+020.664102E+01-.183434E+01-.159359E+01
+-.150244E+01-.170674E+010.136719E-01-.175781E-010.274844E+01-.133809E+01
+-.279948E-01-.620062E+00-.762297E+000.231502E+020.709635E-01-.519505E+01
+-.748698E-01-.639635E+01-.597187E+01-.558307E+010.180320E+02-.498484E+01
+-.435734E+01-.404744E+01-.463849E+01-.488281E-010.449219E-010.452761E+01
+-.217559E+01-.800781E-01-.128694E+01-.985008E+000.140459E+020.917968E-01
+-.308187E+01-.957031E-01-.395737E+01-.340739E+01-.359539E+010.274844E+01
+0.846354E-02-.139278E+01-.651963E+00-.712167E+000.138007E+02-.339177E+01
+-.175781E-01-.341806E+01-.366708E+01-.149280E+01-.181336E+010.452761E+01
+0.292969E-01-.230319E+01-.116389E+01-.108983E+010.227477E+02-.557786E+01
+0.345052E-01-.565923E+01-.610498E+01-.302509E+01-.241507E+010.713003E+01
+-.185547E-01-.357041E+01-.169095E+01-.185012E+010.292905E+02-.699797E+01
+0.595703E-01-.759831E+01-.766407E+01-.345560E+01-.363414E+010.117511E+02
+-.445963E-01-.586626E+01-.307075E+01-.276953E+010.292905E+02-.696933E+01
+0.856120E-01-.762175E+01-.769532E+01-.363675E+01-.345299E+010.163050E+02
+-.803864E+010.750325E-01-.403914E+01-.430222E+010.164716E+02-.642903E-01
+-.814476E+01-.398429E+01-.427830E+010.209652E+02-.103492E+020.802409E-01
+-.551123E+01-.518500E+010.211318E+02-.773112E-01-.104371E+02-.550554E+01
+-.511193E+010.180320E+02-.506818E+01-.436775E+01-.396411E+01-.462807E+01
+0.117838E+00-.121745E+000.746097E+01-.359019E+01-.132161E+00-.162049E+01
+-.211813E+010.621696E+020.175130E+00-.143059E+02-.170588E+02-.241536E+00
+-.162711E+02-.144674E+020.489960E+02-.134173E+02-.117193E+02-.110969E+02
+-.127585E+02-.152995E+000.149088E+000.122973E+02-.595625E+01-.184245E+00
+-.345476E+01-.270201E+010.377124E+020.195963E+00-.852593E+01-.105235E+02
+-.220703E+00-.875324E+01-.988495E+010.179731E+02-.914832E+010.865885E-01
+-.402784E+01-.488351E+010.295747E+02-.150012E+020.138672E+00-.801704E+01
+-.669513E+010.198226E+020.232422E+00-.103334E+02-.432566E+01-.539598E+01
+0.805632E+02-.187018E+02-.184544E+02-.215596E+02-.218434E+020.263672E+00
+-.267578E+000.326782E+020.284505E+00-.169416E+02-.879439E+01-.722671E+01
+0.805632E+02-.186081E+02-.183294E+02-.216533E+02-.219684E+02-.298828E+00
+0.294922E+000.489434E+02-.236400E+020.320963E+00-.118784E+02-.137459E+02
+0.102867E+03-.277995E+00-.240853E+02-.256429E+02-.275249E+02-.115446E+02
+-.137910E+020.810956E+02-.393881E+020.341797E+00-.224502E+02-.195991E+02
+0.169593E+03-.330078E+00-.397605E+02-.423694E+02-.453723E+02-.225942E+02
+-.191663E+020.103872E+03-.226888E+00-.260036E+02-.247751E+02-.264713E+02
+-.123095E+02-.140858E+020.103503E+03-.512715E+020.267904E+00-.261383E+02
+-.263610E+020.171253E+03-.252930E+00-.427848E+02-.409731E+02-.437237E+02
+-.231847E+02-.203343E+020.103466E+03-.512428E+020.293945E+00-.263688E+02
+-.261487E+020.472127E+02-.812174E-01-.237360E+02-.114068E+02-.119888E+02
+0.728635E+02-.365712E+020.789388E-01-.174914E+02-.188799E+020.605627E+02
+-.760091E-01-.304162E+02-.154253E+02-.146452E+020.935404E+02-.469226E+02
+0.919596E-01-.242237E+02-.224861E+020.123969E+020.605469E-01-.274222E+01
+-.347250E+01-.644531E-01-.317302E+01-.300524E+01-.566405E-010.965729E+01
+-.246881E+010.527342E-01-.233965E+01-.271360E+01-.213132E+01-.305992E+01
+-.265110E+010.109416E+02-.279951E+01-.242714E+01-.514321E-010.475259E-01
+0.123969E+02-.299742E+010.585945E-02-.976560E-02-.318083E+01-.280472E+01
+-.341000E+01-.280472E+010.109416E+02-.246881E+01-.264589E+01-.301826E+01
+-.149739E-010.110676E-01-.195312E-02-.265110E+010.965729E+01-.219382E+01
+-.195306E-02-.247662E+01-.233184E+010.230692E+02-.545308E+010.530599E-01
+-.641274E-01-.608350E+01-.565727E+01-.586431E+01-.536389E+010.203592E+02
+-.498737E+01-.481680E+01-.518008E+01-.576170E-010.465493E-01-.511067E-01
+-.518073E+010.203592E+02-.498672E+010.400391E-01-.535673E+01-.482396E+01
+0.356777E+02-.714518E-01-.865326E+01-.918055E+010.704751E-01-.858685E+01
+-.925607E+010.724282E-010.356777E+02-.857904E+01-.734047E-01-.926388E+01
+-.918641E+01-.864740E+01-.862592E+01-.870014E+010.335163E+02-.806208E+01
+-.812718E+010.691731E-01-.701496E-010.336781E+020.164713E+00-.752209E+01
+-.933322E+01-.168620E+00-.872124E+01-.809761E+01-.160807E+000.262311E+02
+-.676672E+010.156901E+00-.632864E+01-.732402E+01-.580781E+01-.825647E+01
+-.715735E+010.297222E+02-.768355E+01-.662089E+01-.155598E+000.151692E+00
+0.336781E+02-.808980E+010.110026E+00-.113932E+00-.872905E+01-.758459E+01
+-.927072E+01-.768876E+010.297222E+02-.666256E+01-.715214E+01-.821480E+01
+-.119140E+000.115234E+00-.106120E+00-.726152E+010.262311E+02-.587031E+01
+0.102214E+00-.677454E+01-.632083E+010.627452E+02-.144811E+02-.142363E+02
+-.171526E+02-.168713E+020.261068E+00-.264974E+00-.149238E+020.553739E+02
+0.255859E+00-.127429E+02-.259765E+00-.151999E+02-.125033E+02-.151686E+02
+-.251952E+000.553739E+020.248046E+00-.125346E+02-.149004E+02-.127663E+02
+0.117213E+03-.306641E+00-.272534E+02-.313331E+020.302734E+00-.269670E+02
+-.316560E+020.310546E+000.117213E+03-.269357E+02-.314452E+00-.316873E+02
+-.313565E+02-.272300E+02-.276857E+02-.280034E+020.103442E+03-.237338E+02
+-.240150E+020.297526E+00-.301432E+000.170422E+03-.399103E+020.261393E+00
+-.272460E+00-.453508E+02-.423674E+02-.427828E+02-.400294E+020.150398E+03
+-.373717E+02-.352129E+02-.377728E+02-.265950E+000.254882E+00-.259440E+00
+-.377734E+020.150398E+03-.373711E+020.248372E+00-.400223E+02-.352201E+02
+0.141191E+03-.343639E+020.847982E-01-.857745E-01-.362268E+02-.339407E+02
+-.366591E+02-.340240E+020.132637E+03-.318702E+02-.322895E+02-.344524E+02
+-.870765E-010.860999E-01-.838216E-01-.323742E+020.124601E+03-.299305E+02
+0.828451E-01-.319555E+02-.303400E+020.752370E+01-.181351E+010.266927E-01
+-.305989E-01-.192816E+01-.168330E+01-.209483E+01-.170413E+010.664102E+01
+-.148161E+01-.159619E+01-.185517E+01-.358072E-010.319009E-01-.227864E-01
+-.162224E+010.586205E+01-.132507E+010.188802E-01-.151026E+01-.140059E+01
+0.180320E+02-.402661E+01-.463589E+01-.435994E+01-.500568E+01-.670570E-01
+0.631508E-01-.441723E+010.159146E+02-.540365E-01-.355633E+010.501303E-01
+-.385060E+01-.408650E+01-.493276E+010.579428E-010.204314E+02-.618488E-01
+-.526275E+01-.564817E+01-.458380E+010.965729E+01-.748698E-01-.273443E+01
+-.211049E+010.709635E-01-.234226E+01-.246621E+010.787758E-010.123969E+02
+-.300784E+01-.826821E-01-.317042E+01-.272138E+01-.349333E+01-.238548E+01
+-.279430E+010.109416E+02-.265631E+01-.310159E+010.839841E-01-.878904E-01
+0.664102E+01-.181351E+01-.159099E+01-.170934E+01-.152328E+01-.455732E-02
+0.651076E-03-.170413E+010.752370E+010.846358E-02-.207399E+01-.123698E-01
+-.193076E+01-.181090E+01-.151286E+01-.455731E-020.586205E+010.651036E-03
+-.139798E+01-.134590E+01-.160140E+010.123969E+02-.123698E-01-.282555E+01
+-.338917E+010.846345E-02-.318344E+01-.299482E+010.162760E-010.965729E+01
+-.247923E+01-.201822E-01-.232924E+01-.263027E+01-.221465E+01-.297659E+01
+-.264068E+010.109416E+02-.280992E+01-.251048E+010.214844E-01-.253906E-01
+0.159146E+02-.408911E+01-.358074E-010.319009E-01-.384800E+01-.439640E+01
+-.357716E+01-.435473E+010.180320E+02-.496401E+01-.464109E+01-.406827E+01
+0.266925E-01-.305988E-010.397135E-01-.460464E+010.204314E+02-.562734E+01
+-.436199E-01-.493016E+01-.526536E+010.158571E+02-.404226E+01-.377385E+01
+-.415430E+01-.387559E+010.205077E-01-.315754E-01-.387624E+010.158571E+02
+0.270182E-01-.404160E+01-.380859E-01-.416146E+01-.376669E+01-.365992E+01
+-.250651E-010.139945E+020.139973E-01-.333634E+01-.341741E+01-.356976E+01
+0.261401E+020.530599E-01-.641668E+01-.663933E+01-.641276E-01-.689185E+01
+-.618116E+01-.511066E-010.230692E+02-.606918E+010.400389E-01-.546741E+01
+-.586561E+01-.565597E+01-.663998E+01-.618832E+010.261401E+02-.688469E+01
+-.641603E+01-.576170E-010.465493E-010.230692E+02-.609782E+01-.771484E-01
+0.660805E-01-.543876E+01-.586300E+01-.565858E+01-.615967E+010.261401E+02
+-.663738E+01-.691334E+01-.641863E+010.725910E-01-.836587E-010.791015E-01
+-.641928E+010.261401E+02-.663673E+01-.901692E-01-.615251E+01-.692050E+01
+0.314858E+02-.818577E+01-.708006E-010.698240E-01-.756120E+01-.762696E+01
+-.811091E+01-.804645E+010.335163E+02-.811546E+01-.871576E+01-.863764E+01
+0.730793E-01-.740559E-010.717773E-01-.811676E+010.314858E+02-.762110E+01
+-.727538E-01-.755339E+01-.819359E+010.335163E+02-.813890E+01-.807770E+01
+-.868451E+01-.861420E+010.652668E-01-.662434E-01-.809333E+010.314858E+02
+0.639647E-01-.764454E+01-.649413E-01-.816234E+01-.758464E+01-.815452E+01
+-.629882E-010.314858E+020.620115E-01-.759245E+01-.808747E+01-.765040E+01
+0.404278E+020.769856E-01-.104117E+02-.979716E+01-.779621E-01-.104937E+02
+-.972425E+01-.760089E-010.404278E+02-.104859E+020.750323E-01-.973206E+01
+-.980302E+01-.104058E+02-.104312E+02-.103570E+020.430349E+02-.111646E+02
+-.110812E+02-.792642E-010.782877E-010.204314E+02-.494318E+010.130859E+00
+-.134765E+00-.525234E+01-.450047E+01-.573150E+01-.462547E+010.180320E+02
+-.394327E+01-.437036E+01-.508901E+01-.139974E+000.136067E+00-.126953E+00
+-.450057E+010.159146E+02-.347300E+010.123047E+00-.407609E+01-.386102E+01
+0.489960E+02-.110761E+02-.127559E+02-.117219E+02-.134382E+02-.171223E+00
+0.167317E+00-.118834E+020.432402E+02-.158203E+00-.975299E+010.154297E+00
+-.103598E+02-.112401E+02-.132611E+020.162109E+000.555181E+02-.166015E+00
+-.144778E+02-.151757E+02-.125996E+020.262311E+02-.179036E+00-.734485E+01
+-.578698E+010.175130E+00-.633125E+01-.676412E+010.182942E+000.336781E+02
+-.810022E+01-.186848E+00-.871863E+01-.750126E+01-.935405E+01-.657922E+01
+-.767834E+010.297222E+02-.716256E+01-.829813E+010.188150E+00-.192057E+00
+0.180320E+02-.504734E+01-.436515E+01-.463068E+01-.398494E+010.996091E-01
+-.103515E+00-.452130E+010.204314E+020.112630E+00-.571067E+01-.116536E+00
+-.525494E+01-.494057E+01-.407869E+01-.108724E+000.159146E+020.104817E+00
+-.385841E+01-.349383E+01-.447973E+010.336781E+020.917968E-01-.760543E+01
+-.924988E+01-.957032E-01-.873165E+01-.808720E+01-.878904E-010.262311E+02
+-.677714E+010.839841E-01-.631823E+01-.724068E+01-.589114E+01-.817314E+01
+-.714693E+010.297222E+02-.769397E+01-.670422E+01-.826820E-010.787757E-01
+0.432402E+02-.112427E+02-.139974E+000.136067E+00-.103572E+02-.118625E+02
+-.977382E+01-.117167E+020.489960E+02-.133965E+02-.127611E+02-.111177E+02
+0.130859E+00-.134765E+000.143880E+00-.126205E+020.555181E+02-.151549E+02
+-.147786E+00-.132585E+02-.144804E+020.431278E+02-.233724E+00-.989852E+01
+-.116452E+020.229817E+00-.968498E+01-.118952E+020.237630E+000.431278E+02
+-.965373E+01-.241536E+00-.119264E+02-.116686E+02-.987509E+01-.103100E+02
+-.105548E+020.380615E+02-.849226E+01-.870060E+010.224609E+00-.228516E+00
+0.710981E+02-.162307E+020.258463E+00-.262369E+00-.193347E+02-.190560E+02
+-.164729E+02-.170901E+020.627452E+02-.168244E+02-.142988E+02-.145280E+02
+-.249349E+000.245443E+00-.254557E+00-.164963E+020.710981E+02-.190326E+02
+0.250650E+00-.193034E+02-.162619E+020.627452E+02-.169182E+02-.172151E+02
+-.141738E+02-.144343E+02-.280599E+000.276693E+00-.164026E+020.710981E+02
+-.285807E+00-.191263E+020.281900E+00-.161369E+02-.194284E+02-.161057E+02
+0.289713E+000.710981E+02-.293619E+00-.194597E+02-.163791E+02-.191498E+02
+0.912885E+02-.248119E+02-.304036E+000.300129E+00-.208486E+02-.211325E+02
+-.244916E+02-.236713E+020.103442E+03-.239681E+02-.280659E+02-.277326E+02
+0.313151E+00-.317057E+000.307943E+00-.245150E+020.912885E+02-.211090E+02
+-.311848E+00-.208174E+02-.248431E+020.103442E+03-.240619E+02-.237963E+02
+-.279409E+02-.276388E+020.281901E+00-.285807E+00-.244213E+020.912885E+02
+0.276692E+00-.212028E+02-.280598E+00-.247181E+02-.209424E+02-.246869E+02
+-.272786E+000.912885E+020.268879E+00-.209736E+02-.243978E+02-.212262E+02
+0.150502E+030.328776E+00-.402006E+02-.350300E+02-.332681E+00-.405496E+02
+-.347175E+02-.324869E+000.150502E+03-.405183E+020.320963E+00-.347487E+02
+-.350534E+02-.401772E+02-.397371E+02-.394194E+020.170539E+03-.458664E+02
+-.455123E+02-.337890E+000.333984E+000.117131E+03-.294485E+02-.274233E+02
+-.311749E+02-.290735E+020.228841E+00-.239908E+00-.290742E+020.117131E+03
+0.235351E+00-.294479E+02-.246419E+00-.311820E+02-.274162E+02-.275177E+02
+-.233398E+000.103369E+030.222330E+00-.241947E+02-.256423E+02-.260029E+02
+0.193113E+030.261393E+00-.480286E+02-.484596E+02-.272461E+00-.513737E+02
+-.452401E+02-.259439E+000.170422E+03-.453365E+020.248372E+00-.399246E+02
+-.427841E+02-.423661E+02-.484603E+02-.452473E+020.193113E+03-.513665E+02
+-.480280E+02-.265950E+000.254882E+000.170422E+03-.453651E+02-.285481E+00
+0.274413E+00-.398960E+02-.427815E+02-.423687E+02-.452187E+020.193113E+03
+-.484577E+02-.513952E+02-.480306E+020.280924E+00-.291992E+000.287435E+00
+-.480312E+020.193113E+03-.484570E+02-.298502E+00-.452115E+02-.514023E+02
+0.103299E+03-.268730E+02-.251723E+02-.264720E+02-.247804E+020.821937E-01
+-.831703E-01-.263873E+020.109961E+030.854492E-01-.285970E+02-.864258E-01
+-.281862E+02-.267890E+02-.248611E+02-.844727E-010.970402E+020.834959E-01
+-.236540E+02-.232659E+02-.252582E+020.141191E+030.802409E-01-.339459E+02
+-.366538E+02-.812175E-01-.362274E+02-.343632E+02-.792641E-010.124601E+03
+-.319562E+020.782875E-01-.303394E+02-.323689E+02-.299357E+02-.344420E+02
+-.322882E+020.132637E+03-.340253E+02-.318807E+02-.779619E-010.769854E-01
+0.159990E+03-.410668E+02-.922852E-010.913083E-01-.389233E+02-.415186E+02
+-.384806E+02-.414249E+020.170309E+03-.441801E+02-.437244E+02-.409783E+02
+0.900062E-01-.909827E-010.932617E-01-.436319E+020.181292E+03-.470183E+02
+-.942383E-01-.440883E+02-.465528E+020.123969E+02-.300263E+010.423177E-01
+-.317562E+01-.462240E-01-.276305E+01-.345167E+01-.384114E-01-.269277E+01
+0.965729E+010.345052E-01-.215215E+01-.247141E+01-.233705E+010.140459E+02
+-.310271E+01-.359800E+01-.393654E+01-.340479E+01-.774737E-010.735675E-01
+-.385321E+010.683594E-010.159146E+02-.408390E+01-.722657E-01-.443807E+01
+-.353550E+010.752370E+01-.488281E-01-.211566E+010.449219E-01-.166247E+01
+-.181611E+01-.192555E+01-.187087E+01-.217819E+010.852390E+01-.240736E+01
+-.206358E+010.579425E-01-.618488E-010.852390E+01-.232403E+01-.205316E+01
+-.195420E+01-.218861E+01-.149740E-010.110677E-01-.193337E+010.585932E-02
+0.752370E+01-.180830E+01-.976557E-02-.172497E+01-.205316E+010.159146E+02
+0.136719E-01-.359800E+01-.175781E-01-.437557E+01-.409171E+01-.384539E+01
+-.385321E+01-.339437E+010.140459E+02-.318604E+01-.360842E+01-.455719E-02
+0.650949E-030.965729E+01-.247402E+01-.201823E-01-.233444E+010.162761E-01
+-.267193E+01-.217299E+010.240885E-01-.278388E+010.123969E+02-.279948E-01
+-.343083E+01-.300003E+01-.317823E+010.203592E+02-.518138E+01-.483113E+01
+-.498607E+01-.534957E+010.335285E-01-.445962E-01-.471459E+01-.380859E-01
+0.179676E+02-.426953E+010.270182E-01-.439573E+01-.457672E+010.261401E+02
+0.660807E-01-.641798E+01-.771484E-01-.663803E+01-.690617E+01-.616683E+01
+-.663868E+01-.617399E+010.261401E+02-.641733E+01-.689901E+01-.706378E-01
+0.595701E-010.179676E+02-.472891E+01-.511067E-01-.425521E+010.400390E-01
+-.457541E+01-.439703E+010.530599E-01-.498802E+010.203592E+02-.641276E-01
+-.517943E+01-.480964E+01-.537105E+010.314858E+02-.817015E+01-.668944E-01
+-.757683E+010.659178E-01-.763868E+01-.809919E+010.678711E-01-.810505E+01
+0.314858E+02-.688476E-01-.763282E+01-.756901E+01-.817796E+010.379785E+02
+-.921310E+01-.914539E+01-.977112E+01-.984794E+010.717772E-01-.727538E-01
+-.924826E+01-.694986E-010.356777E+02-.859467E+010.685220E-01-.917469E+01
+-.865912E+010.356777E+020.743815E-01-.919227E+01-.753580E-01-.864154E+01
+-.927170E+01-.857123E+01-.920138E+01-.912977E+010.379785E+02-.978284E+01
+-.986357E+01-.766601E-010.756835E-010.336781E+02-.809501E+010.146484E+00
+-.872384E+01-.150391E+00-.754293E+01-.931238E+01-.142578E+00-.730318E+01
+0.262311E+020.138672E+00-.582864E+01-.676933E+01-.632604E+010.381607E+02
+-.854676E+01-.989882E+01-.105499E+02-.916134E+01-.181640E+000.177734E+00
+-.103624E+020.172526E+000.432402E+02-.112375E+02-.176432E+00-.119042E+02
+-.973215E+010.204314E+02-.152995E+00-.575234E+010.149088E+00-.447964E+01
+-.494578E+01-.524973E+01-.509088E+01-.595885E+010.231502E+02-.650052E+01
+-.559609E+010.162109E+00-.166015E+000.231502E+02-.641718E+01-.558567E+01
+-.517421E+01-.596927E+010.891924E-01-.930986E-01-.525754E+01-.983073E-01
+0.204314E+02-.493797E+010.944011E-01-.454213E+01-.568984E+010.432402E+02
+0.117838E+00-.979466E+01-.121745E+00-.118417E+02-.112453E+02-.103546E+02
+-.104665E+02-.915092E+010.381607E+02-.863009E+01-.990924E+01-.108724E+00
+0.104817E+000.262311E+02-.677193E+01-.124349E+00-.632343E+010.120443E+00
+-.728235E+01-.584948E+010.128255E+00-.756376E+010.336781E+02-.132161E+00
+-.929155E+01-.809241E+01-.872644E+010.553739E+02-.244141E+00-.127898E+02
+0.240234E+00-.148770E+02-.125658E+02-.151374E+02-.131596E+02-.134148E+02
+0.488686E+02-.112546E+02-.110358E+020.235026E+00-.238932E+000.710981E+02
+-.161682E+020.274088E+00-.193972E+02-.277994E+00-.191029E+02-.164260E+02
+-.270182E+00-.164494E+020.710981E+020.266276E+00-.190794E+02-.193659E+02
+-.161994E+020.488686E+02-.132064E+02-.134773E+02-.112077E+02-.109733E+02
+-.254557E+000.250651E+00-.124721E+020.263671E+000.553739E+02-.152311E+02
+-.267577E+00-.127195E+02-.149473E+020.912885E+02-.247494E+02-.288411E+00
+-.209111E+020.284504E+00-.211793E+02-.244447E+020.292318E+00-.244681E+02
+0.912885E+02-.296224E+00-.211559E+02-.208799E+02-.247806E+020.132819E+03
+-.309216E+02-.306300E+02-.354675E+02-.357956E+020.307942E+00-.311849E+00
+-.316248E+02-.298827E+000.117213E+03-.269982E+020.294921E+00-.313096E+02
+-.272769E+020.117213E+030.318359E+00-.313800E+02-.322265E+00-.272065E+02
+-.317185E+02-.269045E+02-.308748E+02-.305675E+020.132819E+03-.355144E+02
+-.358581E+02-.327474E+000.323568E+000.150398E+03-.377741E+02-.352273E+02
+-.373704E+02-.400151E+020.241862E+00-.252929E+00-.353190E+02-.246419E+00
+0.132726E+03-.310818E+020.235351E+00-.329626E+02-.333519E+020.193113E+03
+0.274414E+00-.480299E+02-.285482E+00-.484583E+02-.513880E+02-.452258E+02
+-.484590E+02-.452330E+020.193113E+03-.480293E+02-.513808E+02-.278971E+00
+0.267903E+000.132726E+03-.353334E+02-.259440E+00-.310675E+020.248372E+00
+-.333506E+02-.329639E+020.261393E+00-.373724E+020.150398E+03-.272461E+00
+-.377721E+02-.352058E+02-.400366E+020.117052E+03-.304214E+02-.285085E+02
+-.281087E+02-.300126E+020.795896E-01-.805661E-01-.281869E+02-.818685E-01
+0.109961E+03-.267884E+020.808920E-01-.263925E+02-.285918E+020.159990E+03
+0.867513E-01-.384858E+02-.877278E-01-.415134E+02-.410675E+02-.389226E+02
+-.390079E+02-.365718E+020.150297E+03-.361447E+02-.385717E+02-.844723E-01
+0.834958E-010.124601E+03-.319549E+02-.883789E-01-.303407E+020.874024E-01
+-.323794E+02-.299253E+020.893554E-01-.339355E+020.141191E+03-.903320E-01
+-.366643E+02-.343645E+02-.362261E+020.517462E+01-.141361E+01-.122644E+01
+-.118998E+01-.134069E+010.585934E-02-.976559E-02-.118998E+01-.149740E-01
+0.242618E+01-.557546E+00-.663682E+00-.236569E+01-.205837E+010.852391E+01
+-.191253E+01-.218340E+01-.253905E-010.214843E-010.311361E+01-.150765E+01
+-.410156E-01-.872309E+00-.692635E+000.262311E+020.657552E-01-.591198E+01
+-.696614E-01-.721985E+01-.677974E+01-.631562E+01-.637552E+01-.558046E+01
+0.231502E+02-.521588E+01-.597448E+01-.566404E-010.527341E-010.761718E-01
+-.456297E+010.204314E+02-.800781E-01-.566900E+01-.493536E+01-.526015E+01
+0.140459E+02-.389487E+01-.339958E+01-.314437E+01-.360321E+010.371092E-01
+-.410154E-010.512968E+01-.246360E+01-.930989E-01-.145987E+01-.111311E+01
+0.970052E-01-.270055E+010.123969E+02-.100911E+00-.351416E+01-.301044E+01
+-.316781E+01-.192295E+01-.670573E-010.399629E+01-.873490E+00-.113279E+01
+0.159146E+020.865885E-01-.351467E+01-.904948E-01-.445890E+01-.408130E+01
+-.385581E+010.242618E+010.325521E-02-.122644E+01-.571218E+00-.631781E+00
+0.136719E-01-.158057E+010.311361E+01-.803949E+00-.742765E+000.121801E+02
+-.299222E+01-.305988E-01-.301391E+01-.322371E+01-.133112E+01-.158850E+01
+0.345052E-01-.260943E+010.512968E+01-.131859E+01-.123615E+01-.384279E+01
+-.455719E-020.156370E+02-.387689E+01-.416862E+01-.206556E+01-.167860E+01
+0.399629E+010.240885E-01-.203233E+01-.960078E+00-.102798E+01-.631302E+01
+0.475261E-010.257754E+02-.641993E+01-.692766E+01-.342823E+01-.273407E+01
+0.200758E+02-.492755E+010.214845E-01-.498867E+01-.537821E+01-.213585E+01
+-.266703E+010.629050E+01-.120443E-01-.315259E+01-.149612E+01-.162975E+01
+-.250651E-01-.404291E+010.808013E+01-.210019E+01-.191197E+010.292905E+02
+-.700513E+010.530599E-01-.759245E+01-.765625E+01-.345625E+01-.363349E+01
+-.511067E-01-.664063E+010.133117E+02-.348473E+01-.313521E+01-.699081E+01
+0.660807E-010.292905E+02-.760417E+01-.767188E+01-.363480E+01-.345495E+01
+0.103729E+02-.380859E-01-.518203E+01-.244705E+01-.270573E+01-.696216E+01
+0.921223E-010.292905E+02-.762761E+01-.770313E+01-.363740E+01-.345234E+01
+0.292905E+02-.697649E+010.791015E-01-.761589E+01-.768750E+01-.345364E+01
+-.363610E+01-.754558E+010.737303E-010.153109E+02-.379452E+01-.404451E+01
+0.173632E+02-.856342E+010.763345E-01-.457664E+01-.429946E+010.154775E+02
+-.610351E-01-.765625E+01-.374423E+01-.401603E+01-.675455E-01-.866498E+01
+0.175298E+02-.455727E+01-.424005E+010.223239E+02-.110226E+020.815428E-01
+-.586396E+01-.551888E+01-.805664E-01-.111060E+020.224906E+02-.586282E+01
+-.544125E+01-.971643E+010.789386E-010.196887E+02-.487127E+01-.517996E+01
+0.198554E+02-.740560E-01-.980888E+01-.480275E+01-.516971E+010.140459E+02
+-.397821E+01-.341000E+01-.306104E+01-.359279E+010.110026E+00-.113932E+00
+-.316521E+01-.119141E+000.658497E+01-.142818E+01-.187244E+01-.645885E+01
+-.559088E+010.231502E+02-.513255E+01-.596406E+01-.129557E+000.125651E+00
+0.845361E+01-.407348E+01-.145182E+00-.239480E+01-.184014E+010.704458E+02
+0.169922E+00-.162637E+02-.192722E+02-.246744E+00-.184358E+02-.163974E+02
+-.171439E+02-.150038E+020.629087E+02-.143268E+02-.164304E+02-.160807E+00
+0.156901E+000.180338E+00-.125788E+020.548659E+02-.151061E+02-.236328E+00
+-.127630E+02-.143619E+020.381607E+02-.105082E+02-.915613E+01-.858842E+01
+-.990403E+010.141276E+00-.145182E+000.139338E+02-.676152E+01-.197266E+00
+-.390246E+01-.307260E+010.201172E+00-.748043E+010.332824E+02-.934122E+01
+-.215494E+00-.771536E+01-.873110E+01-.524713E+01-.171224E+000.108530E+02
+-.237650E+01-.305813E+010.427322E+020.190755E+00-.971132E+01-.118639E+02
+-.225911E+00-.111938E+02-.992792E+010.158717E+02-.808459E+010.735678E-01
+-.354830E+01-.431234E+01-.103519E+020.996094E-010.203543E+02-.552899E+01
+-.457296E+01-.169772E+020.151693E+000.335007E+02-.907282E+01-.760233E+01
+0.261101E+02-.132559E+020.125651E+00-.589605E+01-.708380E+010.219401E+00
+-.913289E+010.174941E+02-.380378E+01-.477684E+010.224612E+020.245443E+00
+-.116921E+02-.609583E+01-.491877E+010.805632E+02-.187253E+02-.184857E+02
+-.215361E+02-.218122E+020.255859E+00-.259765E+00-.186784E+02-.184232E+02
+0.805632E+02-.215830E+02-.218747E+02-.275390E+000.271484E+000.370285E+02
+0.297526E+00-.191732E+02-.993980E+01-.821301E+01-.185847E+02-.182982E+02
+0.805632E+02-.216767E+02-.219997E+02-.306640E+000.302734E+000.271484E+00
+-.149707E+020.288391E+02-.635783E+01-.778205E+010.805632E+02-.186315E+02
+-.183607E+02-.216299E+02-.219372E+020.287109E+00-.291015E+00-.207861E+02
+0.315754E+000.431196E+02-.104785E+02-.121707E+020.555425E+02-.268732E+02
+0.326171E+00-.155315E+02-.134640E+020.907806E+02-.264974E+00-.212497E+02
+-.226150E+02-.242904E+02-.101694E+02-.121911E+02-.291016E+00-.273003E+02
+0.116562E+03-.290748E+02-.311892E+02-.156013E+02-.131054E+020.919758E+02
+-.447154E+020.347004E+00-.253975E+02-.222099E+02-.343099E+00-.450696E+02
+0.192173E+03-.480319E+02-.514095E+02-.255663E+02-.217524E+02-.346862E+02
+0.336588E+000.714939E+02-.172945E+02-.198498E+020.149666E+03-.317057E+00
+-.350769E+02-.373730E+02-.400437E+02-.168864E+02-.199691E+020.916674E+02
+-.220378E+00-.229620E+02-.218434E+02-.233480E+02-.108561E+02-.124375E+02
+-.233398E+00-.294492E+020.117702E+03-.280983E+02-.300113E+02-.159534E+02
+-.139564E+020.103512E+03-.512786E+020.261393E+00-.261357E+02-.263590E+02
+-.259440E+00-.484609E+020.194055E+03-.464571E+02-.495640E+02-.262635E+02
+-.230501E+02-.512643E+020.274414E+000.103494E+03-.263629E+02-.261409E+02
+0.151131E+03-.246419E+00-.377747E+02-.361343E+02-.385704E+02-.179377E+02
+-.204676E+02-.512357E+020.300455E+000.103457E+03-.263707E+02-.261513E+02
+0.103476E+03-.512500E+020.287434E+00-.261461E+02-.263668E+020.443650E+02
+-.825195E-01-.223108E+02-.107157E+02-.112559E+02-.799153E-01-.252530E+02
+0.502441E+02-.127690E+02-.121422E+020.684528E+02-.343626E+020.756836E-01
+-.164264E+02-.177396E+02-.747070E-01-.323637E+020.644552E+02-.164275E+02
+-.155892E+02-.389220E+020.821941E-010.775587E+02-.200937E+02-.186252E+02
+0.569061E+02-.773112E-01-.285866E+02-.137583E+02-.144839E+02-.499403E+02
+0.952149E-010.995691E+02-.257812E+02-.239429E+020.878770E+02-.440877E+02
+0.887045E-01-.211177E+02-.227603E+02
diff --git a/MATGEN/FEM/meshes.f b/MATGEN/FEM/meshes.f
new file mode 100644
index 0000000..7e59850
--- /dev/null
+++ b/MATGEN/FEM/meshes.f
@@ -0,0 +1,986 @@
+ subroutine inmesh (nmesh,iin,nx,nelx,node,x,y,nodcode,ijk,iperm)
+ implicit none
+ real*8 x(*),y(*)
+ integer nmesh,iin,nx,nelx,node,nodcode(nx),ijk(node,nelx),
+ * iperm(nx)
+c-----------------------------------------------------------------------
+c this subroutine selects and initializes a mesh among a few
+c choices. So far there are 9 initial meshes provided and the user can
+c also enter his own mesh as a 10th option.
+c
+c on entry:
+c---------
+c nmesh = integer indicating the mesh chosen. nmesh=1,...,9
+c corresponds to one of the 9 examples supplied by
+c SPARSKIT. nmesh = 0 is a user supplied initial mesh.
+c see below for additional information for the format.
+c iin = integer containing the I/O unit number where to read
+c the data from in case nmesh = 1. A dummy integer
+c otherwise.
+c node = integer = the number of nodes per element (should be
+c set to node=3 in this version). node is also the first
+c dimension of the array ijk.
+c
+c on return
+c ---------
+c nx = integer . the number of nodes
+c nelx = integer . the number of elements
+c x, y = two real arrays containing the coordinates of the nodes.
+c nodcode = an integer array containing the boundary information for
+c each node with the following meaning.
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner node.
+c
+c ijk(node,*)= an integer array containing the connectivity matrix.
+c
+c-----------------------------------------------------------------------
+c format for user supplied mesh (when nmesh = 7)
+c
+c option nmesh = 0, is a user definied initial mesh.
+c---------
+c format is as follows:
+c line 1: two integers, the first containing the number of nodes
+c the second the number of elements.
+c line 2: to line nx+1: node information.
+c enter the following, one line per node:
+c * the number of the node in the numbering chosen (integer
+c taking the values 1 to nx), followed by,
+c * the coordinates of the nodes (2 reals) followed by
+c the boundary information, an integer taking one of the
+c values 0, 1, or 2, with the meaning explained above.
+c
+c line nx+2 to nx+nelx+1: connectivity matrix
+c enter the following one line per element:
+c * number of the element in the numbering chosen, followed by
+c * The three numbers of the nodes (according to the above numbering
+c of the nodes) that constitute the element, in a counter clock-wise
+c order (this is in fact not important since it is checked by the
+c subroutine chkelemt).
+c
+c AN EXAMPLE: consisting on one single element (a triangle)
+c------------
+c 3 1
+c 1 0.0000 0.0000 2
+c 2 4.0000 0.0000 2
+c 3 0.0000 4.0000 2
+c 1 1 2 3
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer i, j, ii
+c
+c print *, ' ----- nmesh = ', nmesh
+ goto (10,1,2,3,4,5,6,7,8,9) nmesh+1
+ 1 continue
+ call fmesh1 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 2 continue
+ call fmesh2 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 3 continue
+ call fmesh3 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 4 continue
+ call fmesh4 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 5 continue
+ call fmesh5 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 6 continue
+ call fmesh6 (nx,nelx,node,x,y,nodcode,ijk)
+ goto 18
+ 7 continue
+ call fmesh7 (nx,nelx,node,x,y,nodcode,ijk,iperm)
+ goto 18
+ 8 continue
+ call fmesh8 (nx,nelx,node,x,y,nodcode,ijk,iperm)
+ goto 18
+ 9 continue
+ call fmesh9(nx,nelx,node,x,y,nodcode,ijk,iperm)
+ goto 18
+ 10 continue
+c
+c-------option 0 : reading mesh from IO unit iin.
+c
+ read (iin,*) nx, nelx
+c
+ do 16 i=1,nx
+ read(iin,*) ii,x(ii),y(ii),nodcode(ii)
+ 16 continue
+ do 17 i=1,nelx
+ read(iin,*) ii,(ijk(j,ii),j=1,node)
+ if (ii. gt. nelx) nelx = ii
+ 17 continue
+c-----------------------------------------------------------------------
+ 18 continue
+c and return
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh1 (nx,nelx,node,x,y,nodcode,ijk)
+c--------------------------------------------------------------
+c
+c initial mesh for a simple square with two elemnts
+c 3 4
+c --------------
+c | . |
+c | 2 . |
+c | . |
+c | . 1 |
+c | . |
+c --------------
+c 1 2
+c--------------------------------------------------------------
+c input parameters: node = first dimensoin of ijk (must be .ge. 3)
+c output parameters:
+c nx = number of nodes
+c nelx = number of elemnts
+c (x(1:nx), y(1:nx)) = coordinates of nodes
+c nodcode(1:nx) = integer code for each node with the
+c following meening:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c ijk(1:3,1:nelx) = connectivity matrix. for a given element
+c number nel, ijk(k,nel), k=1,2,3 represent the nodes
+c composing the element nel.
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*)
+ real*8 x1(4),y1(4)
+ integer ijk1(2),ijk2(2),ijk3(2)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0, 1.0, 0.0, 1.0/
+ data y1/0.0, 0.0, 1.0, 1.0/
+c
+c------------------|--|
+c elements 1 2
+c------------------|--|
+ data ijk1 /1, 1/
+ data ijk2 /2, 4/
+ data ijk3 /4, 3/
+c
+ nx = 4
+c
+ do 1 k=1, nx
+ x(k) = x1(k)
+ y(k) = y1(k)
+ nodcode(k) = 1
+ 1 continue
+c
+ nodcode(2) = 2
+ nodcode(3) = 2
+c
+ nelx = 2
+c
+ do 2 k=1,nelx
+ ijk(1,k) = ijk1(k)
+ ijk(2,k) = ijk2(k)
+ ijk(3,k) = ijk3(k)
+ 2 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh2 (nx,nelx,node,x,y,nodcode,ijk)
+c---------------------------------------------------------------
+c initial mesh for a simple D-shaped region with 4 elemnts
+c 6
+c | .
+c | .
+c | .
+c | 4 .
+c | .
+c 4 -------------- 5
+c | . |
+c | 3 . |
+c | . |
+c | . 2 |
+c | . |
+c --------------
+c | 2 . 3
+c | .
+c | 1 .
+c | .
+c | .
+c |.
+c 1
+c--------------------------------------------------------------
+c input parameters: node = first dimensoin of ijk (must be .ge. 3)
+c output parameters:
+c nx = number of nodes
+c nelx = number of elemnts
+c (x(1:nx), y(1:nx)) = coordinates of nodes
+c nodcode(1:nx) = integer code for each node with the
+c following meening:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c ijk(1:3,1:nelx) = connectivity matrix. for a given element
+c number nel, ijk(k,nel), k=1,2,3 represent the nodes
+c composing the element nel.
+c
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*)
+ real*8 x1(6),y1(6)
+ integer ijk1(4),ijk2(4),ijk3(4)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0, 0.0, 1.0, 0.0, 1.0, 0.0/
+ data y1/0.0, 1.0, 1.0, 2.0, 2.0, 3.0/
+c
+c------------------|--|--|--|
+c elements 1 2 3 4
+c------------------|--|--|--|
+ data ijk1 /1, 2, 2, 4/
+ data ijk2 /3, 3, 5, 5/
+ data ijk3 /2, 5, 4, 6/
+c
+ nx = 6
+c
+ do 1 k=1, nx
+ x(k) = x1(k)
+ y(k) = y1(k)
+ nodcode(k) = 1
+ 1 continue
+c
+ nelx = 4
+c
+ do 2 k=1,nelx
+ ijk(1,k) = ijk1(k)
+ ijk(2,k) = ijk2(k)
+ ijk(3,k) = ijk3(k)
+ 2 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh3 (nx,nelx,node,x,y,nodcode,ijk)
+c---------------------------------------------------------------
+c initial mesh for a C-shaped region composed of 10 elements --
+c
+c
+c 10 11 12
+c ---------------------------
+c | . | . |
+c | 7 . | 9 . |
+c | . | . |
+c | . 8 | . 10 |
+c | . | . |
+c 7 ---------------------------
+c | . |8 9
+c | 5 . |
+c | . |
+c | . 6 |
+c 4 | . |5 6
+c ---------------------------
+c | . | . |
+c | 1 . | 3 . |
+c | . | . |
+c | . 2 | . 4 |
+c | . | . |
+c ---------------------------
+c 1 2 3
+c
+c--------------------------------------------------------------
+c input parameters: node = first dimensoin of ijk (must be .ge. 3)
+c nx = number of nodes
+c nelx = number of elemnts
+c (x(1:nx), y(1:nx)) = coordinates of nodes
+c nodcode(1:nx) = integer code for each node with the
+c following meening:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c ijk(1:3,1:nelx) = connectivity matrix. for a given element
+c number nel, ijk(k,nel), k=1,2,3 represent the nodes
+c composing the element nel.
+c
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*)
+ real*8 x1(12),y1(12)
+ integer ijk1(10),ijk2(10),ijk3(10)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0,0.0,1.0,2.0/
+ data y1/0.0,0.0,0.0,1.0,1.0,1.0,2.0,2.0,2.0,3.0,3.0,3.0/
+c
+c------------------|--|--|--|--|--|--|---|---|---|
+c elements 1 2 3 4 5 6 7 8 9 10
+c------------------|--|--|--|--|--|--|---|---|---|
+ data ijk1 /1, 1, 2, 2, 4, 4, 7, 7, 8, 8/
+ data ijk2 /5, 2, 6, 3, 8, 5, 11, 8, 12, 9/
+ data ijk3 /4, 5, 5, 6, 7, 8, 10, 11,11, 12/
+c
+ nx = 12
+c
+ do 1 k=1, nx
+ x(k) = x1(k)
+ y(k) = y1(k)
+ nodcode(k) = 1
+ 1 continue
+c
+ nodcode(3) = 2
+ nodcode(10) = 2
+ nodcode(9) = 2
+c
+ nelx = 10
+c
+ do 2 k=1,nelx
+ ijk(1,k) = ijk1(k)
+ ijk(2,k) = ijk2(k)
+ ijk(3,k) = ijk3(k)
+ 2 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh4 (nx,nelx,node,x,y,nodcode,ijk)
+c-----------------------------------------------------------------------
+c initial mesh for a C-shaped region composed of 10 elements --
+c 10 11
+c +------------------+ .
+c | . | .
+c | . 8 | . 12
+c | . | 9 . |
+c | 7 . | . |
+c 7 | . | . 10 |
+c -------------------+--------+ 9
+c | .| 8
+c | 5 . |
+c | . |
+c | . 6 |
+c |. | 5 6
+c 4 +------------------+--------+
+c | . | . 4 |
+c | 1 . | . |
+c | . | 3 .| 3
+c | . 2 | .
+c | . | .
+c --------------------
+c 1 2
+c--------------------------------------------------------------
+c input parameters: node = first dimensoin of ijk (must be .ge. 3)
+c nx = number of nodes
+c nelx = number of elemnts
+c (x(1:nx), y(1:nx)) = coordinates of nodes
+c nodcode(1:nx) = integer code for each node with the
+c following meening:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c ijk(1:3,1:nelx) = connectivity matrix. for a given element
+c number nel, ijk(k,nel), k=1,2,3 represent the nodes
+c composing the element nel.
+c
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*)
+ real*8 x1(12),y1(12)
+ integer ijk1(10),ijk2(10),ijk3(10)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0,1.0,1.5,0.0,1.0,1.5,0.0,1.0,1.5,0.0,1.0,1.5/
+ data y1/0.0,0.0,0.5,1.0,1.0,1.0,2.0,2.0,2.0,3.0,3.0,2.5/
+c
+c------------------|--|--|--|--|--|--|---|---|---|
+c elements 1 2 3 4 5 6 7 8 9 10
+c------------------|--|--|--|--|--|--|---|---|---|
+ data ijk1 /1, 1, 2, 5, 4, 4, 7, 10, 8, 8/
+ data ijk2 /5, 2, 3, 3, 8, 5, 8, 8, 12, 9/
+ data ijk3 /4, 5, 5, 6, 7, 8, 10, 11,11, 12/
+c
+ nx = 12
+c
+ do 1 k=1, nx
+ x(k) = x1(k)
+ y(k) = y1(k)
+ nodcode(k) = 1
+ 1 continue
+c
+ nodcode(6) = 2
+ nodcode(9) = 2
+c
+ nelx = 10
+c
+ do 2 k=1,nelx
+ ijk(1,k) = ijk1(k)
+ ijk(2,k) = ijk2(k)
+ ijk(3,k) = ijk3(k)
+ 2 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh5 (nx,nelx,node,x,y,nodcode,ijk)
+c---------------------------------------------------------------
+c initial mesh for a whrench shaped region composed of 14 elements --
+c
+c 13 15
+c . ----------. |-3
+c . . 13 . . |
+c . 12 . . 14 . |
+c 9 10 11 12 . . 14 . 16 |
+c ---------------------------------------------------------- |-2
+c | . | . | . | . | |
+c | 1 . | 3 . | 5 . | 7 . | |
+c | . 2 | . 4 | . 6 | . 8 | |
+c |. |. |. | . | |
+c ----------------------------------------------------------- |-1
+c 1 2 3 4 . 6 . . 8 |
+c . 9 . . 11 . |
+c . . 10 . . |
+c .___________. |-0
+c 5 7
+c
+c 0---------1--------2----------3--------------4-------------5
+c--------------------------------------------------------------
+c input parameters: node = first dimensoin of ijk (must be .ge. 3)
+c nx = number of nodes
+c nelx = number of elemnts
+c (x(1:nx), y(1:nx)) = coordinates of nodes
+c nodcode(1:nx) = integer code for each node with the
+c following meening:
+c nodcode(i) = 0 --> node i is internal
+c nodcode(i) = 1 --> node i is a boundary but not a corner point
+c nodcode(i) = 2 --> node i is a corner point.
+c ijk(1:3,1:nelx) = connectivity matrix. for a given element
+c number nel, ijk(k,nel), k=1,2,3 represent the nodes
+c composing the element nel.
+c
+c--------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*)
+ real*8 x1(16),y1(16)
+ integer ijk1(14),ijk2(14),ijk3(14)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.,1.,2.,3.,3.5,4.,4.5,5.,0.,1.,2.,3.,3.5,4.,4.5,5./
+ data y1/1.,1.,1.,1.,0.,1.,0.,1.,2.,2.,2.,2.,3.,2.,3.,2./
+c
+c------------------|--|--|--|--|--|--|---|---|---|--|---|---|---|
+c elements 1 2 3 4 5 6 7 8 9 10 11 12 13 14
+c------------------|--|--|--|--|--|--|---|---|---|--|---|---|---|
+ data ijk1 /1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 6, 12, 14, 14/
+ data ijk2 /10,2,11, 3,12, 4,14, 6, 5, 7, 7, 14, 15, 16/
+ data ijk3 /9,10,10,11,11,12,12, 14, 6, 6, 8, 13, 13, 15/
+c
+ nx = 16
+c
+ do 1 k=1, nx
+ x(k) = x1(k)
+ y(k) = y1(k)
+ nodcode(k) = 1
+ 1 continue
+c
+ nodcode(9) = 2
+ nodcode(8) = 2
+ nodcode(16) = 2
+c
+ nelx = 14
+c
+ do 2 k=1,nelx
+ ijk(1,k) = ijk1(k)
+ ijk(2,k) = ijk2(k)
+ ijk(3,k) = ijk3(k)
+ 2 continue
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh6 (nx,nelx,node,x,y,nodcode,ijk)
+c---------------------------------------------------------------
+c this generates a finite element mesh for an ellipse-shaped
+c domain.
+c---------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ dimension x(*),y(*),nodcode(*),ijk(node,*), ijktr(200,3)
+ integer nel(200)
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ nd = 8
+ nr = 3
+c
+c define axes of ellipse
+c
+ a = 2.0
+ b = 1.30
+c
+ nx = 1
+ pi = 4.0* atan(1.0)
+ theta = 2.0 * pi / real(nd)
+ x(1) = 0.0
+ y(1) = 0.0
+ delr = a / real(nr)
+ nx = 0
+ do i = 1, nr
+ ar = real(i)*delr
+ br = ar*b / a
+ do j=1, nd
+ nx = nx+1
+ x(nx) = a +ar*cos(real(j)*theta)
+ y(nx) = b +br*sin(real(j)*theta)
+c write (13,*) ' nod ', nx, ' x,y', x(nx), y(nx)
+ nodcode(nx) = 0
+ if (i .eq. nr) nodcode(nx) = 1
+ enddo
+ enddo
+c
+ nemax = 200
+ call dlauny(x,y,nx,ijktr,nemax,nelx)
+c
+c print *, ' delauny -- nx, nelx ', nx, nelx
+ do 3 j=1,nx
+ nel(j) = 0
+ 3 continue
+c transpose ijktr into ijk and count the number of
+c elemnts to which each node belongs
+c
+ do 4 j=1, nelx
+ do 41 k=1, node
+ i = ijktr(j,k)
+ ijk(k,j) = i
+ nel(i) = nel(i)+1
+ 41 continue
+ 4 continue
+c
+c take care of ordering within each element
+c
+ call chkelmt (nx, x, y, nelx, ijk, node)
+c
+ return
+ end
+c--------------------------------------------------------
+ subroutine fmesh7 (nx,nelx,node,x,y,nodcode,ijk,iperm)
+ implicit none
+ real*8 x(*),y(*)
+ integer nx,nelx,node,nodcode(nx),ijk(node,nelx),iperm(nx)
+c---------------------------------------------------------------
+c this generates a U-shaped domain with an elliptic inside.
+c then a Delauney triangulation is used to generate the mesh.
+c mesh needs to be post-processed -- see inmesh --
+c---------------------------------------------------------------
+ integer nr,nsec,i,k,nemax,j,nel(200),ijktr(200,3),nodexc
+ real*8 a,b,x1, y1, x2, y2, xcntr,ycntr, rad,pi,delr,xnew,ynew,
+ * arx, ary, cos, sin, theta,excl
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0/,y1/0.0/,x2/6.0/,y2/6.0/,nodexc/1/
+ xcntr = x2/3.0
+ ycntr = y2/2.0
+ rad = 1.8
+ nsec = 20
+ nr = 3
+c
+c exclusion zone near the boundary
+c
+ excl = 0.02*x2
+c-----------------------------------------------------------------------
+c enter the four corner points.
+c-----------------------------------------------------------------------
+ nx = 1
+ x(nx) = x1
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y2
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x1
+ y(nx) = y2
+ nodcode(nx) = 1
+c
+c define axes of ellipse
+c
+ a = 2.0
+ b = 1.30
+c-----------------------------------------------------------------------
+ pi = 4.0*atan(1.0)
+ delr = a / real(nr)
+ do 2 i = 1, nsec
+ theta = 2.0 * real(i-1) * pi / real(nsec)
+ xnew = xcntr + rad*cos(theta)
+ ynew = ycntr + rad*b*sin(theta)/a
+ if ((xnew .ge. x2) .or. (xnew .le. x1) .or. (ynew .ge. y2)
+ * .or. (ynew .le. y1)) goto 2
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = nodexc
+ arx = delr*cos(theta)
+ ary = delr*b*sin(theta)/a
+c
+c while inside domain do:
+c
+ 1 continue
+ xnew = x(nx) + arx
+ ynew = y(nx) + ary
+ if (xnew .ge. x2) then
+ x(nx) = x2
+ nodcode(nx) = 1
+ else if (xnew .le. x1) then
+ x(nx) = x1
+ nodcode(nx) = 1
+ else if (ynew .ge. y2) then
+ y(nx) = y2
+ nodcode(nx) = 1
+ else if (ynew .le. y1) then
+ y(nx) = y1
+ nodcode(nx) = 1
+ else
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = 0
+ call clos2bdr(nx,xnew,ynew,x,y,x1,x2,y1,y2,excl,nodcode)
+ endif
+c write (13,*) ' nod ', nx, ' x,y', x(nx), y(nx)
+c * ,' arx--ary ', arx, ary
+ arx = arx*1.2
+ ary = ary*1.2
+ if (nodcode(nx) .le. 0) goto 1
+ 2 continue
+c
+ nemax = 200
+ call dlauny(x,y,nx,ijktr,nemax,nelx)
+c
+c print *, ' delauny -- nx, nelx ', nx, nelx
+ do 3 j=1,nx
+ nel(j) = 0
+ 3 continue
+c
+c transpose ijktr into ijk and count the number of
+c elemnts to which each node belongs
+c
+ do 4 j=1, nelx
+ do 41 k=1, node
+ i = ijktr(j,k)
+ ijk(k,j) = i
+ nel(i) = nel(i)+1
+ 41 continue
+ 4 continue
+c
+c this mesh needs cleaning up --
+c
+ call cleanel (nelx,ijk, node,nodcode,nodexc)
+ call cleannods(nx,x,y,nelx,ijk,node,nodcode,iperm)
+c
+c take care of ordering within each element
+c
+ call chkelmt (nx, x, y, nelx, ijk, node)
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh8 (nx,nelx,node,x,y,nodcode,ijk,iperm)
+ implicit none
+ real*8 x(*),y(*)
+ integer nx,nelx,node,nodcode(nx),ijk(node,nelx),iperm(nx)
+c---------------------------------------------------------------
+c this generates a small rocket type shape inside a rectangle
+c then a Delauney triangulation is used to generate the mesh.
+c mesh needs to be post-processed -- see inmesh --
+c---------------------------------------------------------------
+ integer nr,nsec,i,k,nemax,j,nel(1500),ijktr(1500,3),nodexc
+ real*8 a,b,x1, y1, x2, y2, xcntr,ycntr, rad,pi,delr,xnew,ynew,
+ * arx, ary, cos, sin, theta,radi,excl
+c--------------------------------------------------------------
+c coordinates of corners + some additional data
+c--------------------------------------------------------------
+ data x1/0.0/,y1/0.0/,x2/6.0/,y2/6.0/,nodexc/3/
+ xcntr = 4.0
+ ycntr = y2/2.0
+ rad = 0.6
+c
+c exclusion zone near the boundary.
+c
+ excl = 0.02*x2
+ nsec = 30
+ nr = 4
+c-----------------------------------------------------------------------
+c enter the four corner points.
+c-----------------------------------------------------------------------
+ nx = 1
+ x(nx) = x1
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y2
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x1
+ y(nx) = y2
+ nodcode(nx) = 1
+c
+c define axes of ellipse /circle / object
+c
+ a = 2.0
+ b = 1.0
+c-----------------------------------------------------------------------
+ pi = 4.0*atan(1.0)
+ delr = 2.0*rad / real(nr)
+ do 2 i = 1, nsec
+ theta = 2.0*real(i-1) * pi / real(nsec)
+ if (theta .gt. pi) theta = theta - 2.0*pi
+ radi=rad*(1.0+0.05*((pi/2.0)**2-theta**2)**2)
+ * /(1.0+0.05*(pi/2.0)**4)
+ arx = radi*cos(theta)/real(nr)
+ ary = radi*sin(theta)/real(nr)
+c a hack!
+c arx = (abs(theta)+0.25)*cos(theta)/real(nr)
+c ary = (abs(theta)+0.25)*sin(theta)/real(nr)
+c
+ xnew = xcntr + radi*cos(theta)
+ ynew = ycntr + radi*b*sin(theta)/a
+ if ((xnew .ge. x2) .or. (xnew .le. x1) .or. (ynew .ge. y2)
+ * .or. (ynew .le. y1)) goto 2
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = nodexc
+c
+c while inside domain do:
+c
+ 1 continue
+ xnew = xnew + arx
+ ynew = ynew + ary
+ if (xnew .ge. x2) then
+ x(nx) = x2
+ nodcode(nx) = 1
+ else if (xnew .le. x1) then
+ x(nx) = x1
+ nodcode(nx) = 1
+ else if (ynew .ge. y2) then
+ y(nx) = y2
+ nodcode(nx) = 1
+ else if (ynew .le. y1) then
+ y(nx) = y1
+ nodcode(nx) = 1
+c
+c else we can add this as interior point
+c
+ else
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = 0
+c
+c do something if point is too close to boundary
+c
+ call clos2bdr(nx,xnew,ynew,x,y,x1,x2,y1,y2,excl,nodcode)
+ endif
+c
+ arx = arx*1.1
+ ary = ary*1.1
+ if (nodcode(nx) .eq. 0) goto 1
+ 2 continue
+c
+ nemax = 1500
+ call dlauny(x,y,nx,ijktr,nemax,nelx)
+c
+ print *, ' delauney -- nx, nelx ', nx, nelx
+ do 3 j=1,nx
+ nel(j) = 0
+ 3 continue
+c-----------------------------------------------------------------------
+c transpose ijktr into ijk and count the number of
+c elemnts to which each node belongs
+c-----------------------------------------------------------------------
+ do 4 j=1, nelx
+ do 41 k=1, node
+ i = ijktr(j,k)
+ ijk(k,j) = i
+ nel(i) = nel(i)+1
+ 41 continue
+ 4 continue
+c
+c this mesh needs cleaning up --
+c
+ call cleanel (nelx,ijk, node,nodcode,nodexc)
+ call cleannods(nx,x,y,nelx,ijk,node,nodcode,iperm)
+c
+c take care of ordering within each element
+c
+ call chkelmt (nx, x, y, nelx, ijk, node)
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine fmesh9 (nx,nelx,node,x,y,nodcode,ijk,iperm)
+ implicit none
+ real*8 x(*),y(*)
+ integer nx,nelx,node,nodcode(nx),ijk(node,nelx),iperm(nx)
+c---------------------------------------------------------------
+c this generates a U-shaped domain with an elliptic inside.
+c then a Delauney triangulation is used to generate the mesh.
+c mesh needs to be post-processed -- see inmesh --
+c---------------------------------------------------------------
+ integer nr,nsec,i,k,nemax,j,nel(1500),ijktr(1500,3),nodexc
+ real*8 x1, y1, x2, y2, xcntr,ycntr, rad,pi,delr,xnew,ynew,
+ * arx, ary, cos, sin, theta,excl
+c--------------------------------------------------------------
+c coordinates of nodal points
+c--------------------------------------------------------------
+ data x1/0.0/,y1/0.0/,x2/11.0/,y2/5.5/,nodexc/3/
+ xcntr = 1.50
+ ycntr = y2/2.0
+ rad = 0.6
+ nsec = 30
+ nr = 3
+c
+c-----------------------------------------------------------------------
+c enter the four corner points.
+c-----------------------------------------------------------------------
+ nx = 1
+ x(nx) = x1
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y1
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x2
+ y(nx) = y2
+ nodcode(nx) = 1
+ nx = nx+1
+ x(nx) = x1
+ y(nx) = y2
+ nodcode(nx) = 1
+c
+c define axes of ellipse
+c
+c-----------------------------------------------------------------------
+ pi = 4.0*atan(1.0)
+ delr = rad / real(nr)
+ do 2 i = 1, nsec
+ theta = 2.0 * real(i-1) * pi / real(nsec)
+ xnew = xcntr + rad*cos(theta)
+ ynew = ycntr + rad*sin(theta)
+ if ((xnew .ge. x2) .or. (xnew .le. x1) .or. (ynew .ge. y2)
+ * .or. (ynew .le. y1)) goto 2
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = nodexc
+ arx = delr*cos(theta)
+ ary = delr*sin(theta)
+c
+c exclusion zone near the boundary
+c
+c excl = 0.1*delr
+ excl = 0.15*delr
+c
+c while inside domain do:
+c
+ 1 continue
+ xnew = x(nx) + arx
+ ynew = y(nx) + ary
+ if (xnew .ge. x2) then
+ x(nx) = x2
+ nodcode(nx) = 1
+ else if (xnew .le. x1) then
+ x(nx) = x1
+ nodcode(nx) = 1
+ else if (ynew .ge. y2) then
+ y(nx) = y2
+ nodcode(nx) = 1
+ else if (ynew .le. y1) then
+ y(nx) = y1
+ nodcode(nx) = 1
+ else
+ nx = nx+1
+ x(nx) = xnew
+ y(nx) = ynew
+ nodcode(nx) = 0
+ call clos2bdr(nx,xnew,ynew,x,y,x1,x2,y1,y2,excl,nodcode)
+ endif
+ arx = arx*1.1
+ ary = ary*1.1
+ excl = excl*1.1
+ if (nodcode(nx) .le. 0) goto 1
+ 2 continue
+c
+ nemax = 1500
+ call dlauny(x,y,nx,ijktr,nemax,nelx)
+c
+c print *, ' delauny -- nx, nelx ', nx, nelx
+ do 3 j=1,nx
+ nel(j) = 0
+ 3 continue
+c
+c transpose ijktr into ijk and count the number of
+c elemnts to which each node belongs
+c
+ do 4 j=1, nelx
+ do 41 k=1, node
+ i = ijktr(j,k)
+ ijk(k,j) = i
+ nel(i) = nel(i)+1
+ 41 continue
+ 4 continue
+c
+c this mesh needs cleaning up --
+c
+ call cleanel (nelx,ijk, node,nodcode,nodexc)
+ call cleannods(nx,x,y,nelx,ijk,node,nodcode,iperm)
+c
+c take care of ordering within each element
+c
+ call chkelmt (nx, x, y, nelx, ijk, node)
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine clos2bdr (nx,xnew,ynew,x,y,x1,x2,y1,y2,excl,nodcode)
+ implicit none
+ integer nx,nodcode(nx)
+ real*8 x(nx),y(nx),xnew,ynew,x1,x2,y1,y2,excl
+c-----------------------------------------------------------------------
+c takes care of case where a point generated is too close to the
+c boundary -- in this case projects the previous point to the
+c rectangle boundary == that makes some exclusion criterion
+c violated... does a simple job.
+c-----------------------------------------------------------------------
+ if (xnew .ge. x2-excl) then
+ x(nx) = x2
+ y(nx) = y(nx-1)
+ nodcode(nx) = 1
+ endif
+ if (xnew .le. x1+excl) then
+ x(nx) = x1
+ y(nx) = y(nx-1)
+ nodcode(nx) = 1
+ endif
+ if (ynew .ge. y2-excl) then
+ y(nx) = y2
+ x(nx) = x(nx-1)
+ nodcode(nx) = 1
+ endif
+ if (ynew .le. y1+excl) then
+ y(nx) = y1
+ x(nx) = x(nx-1)
+ nodcode(nx) = 1
+ endif
+c
+ return
+ end
diff --git a/MATGEN/FEM/semantic.cache b/MATGEN/FEM/semantic.cache
new file mode 100644
index 0000000..bf87e70
--- /dev/null
+++ b/MATGEN/FEM/semantic.cache
@@ -0,0 +1,16 @@
+;; Object FEM/
+;; SEMANTICDB Tags save file
+(semanticdb-project-database-file "FEM/"
+ :tables (list
+ (semanticdb-table "makefile"
+ :major-mode 'makefile-mode
+ :tags '(("FFLAGS" variable nil nil [1 11]) ("F77" variable (:default-value ("f77")) nil [11 21]) ("FILES" variable (:default-value ("convdif.o" "functns2.o")) nil [54 83]) ("fem.ex" function (:arguments ("$(FILES)" "../../UNSUPP/PLOTS/psgrd.o" "../../libskit32.a")) nil [84 232]) ("clean" function nil nil [232 269]) ("../../libskit.a" function nil nil [269 331]) ("../../UNSUPP/PLOTS/psgrd.o" function (:arguments ("../../UNSUPP/PLOTS/psgrd.f")) nil [331 441]))
+ :file "makefile"
+ :pointmax 441
+ :unmatched-syntax 'nil
+ )
+ )
+ :file "semantic.cache"
+ :semantic-tag-version "2.0pre3"
+ :semanticdb-version "2.0pre3"
+ )
diff --git a/MATGEN/MISC/README b/MATGEN/MISC/README
new file mode 100644
index 0000000..96e8aa2
--- /dev/null
+++ b/MATGEN/MISC/README
@@ -0,0 +1,15 @@
+This directory contains the last two test problems as described in
+README of the directory above this one.
+
+ zlatev.f : three different codes to generate matrices from the
+ Zlatev et. al. paper (see above). Contributed by E. Rothman
+ (Cornell).
+
+ rzlatev.f : driver for a test program for the zlatev code.
+
+ makzlatev : makefiles. See above for details.
+
+ markov.f : a main program followed by a subroutine to generate
+ markov chain matrices modeling random walk on a triang.
+ grid. There is one parameter to the subroutine.
+
diff --git a/MATGEN/MISC/makefile b/MATGEN/MISC/makefile
new file mode 100644
index 0000000..bc0b41c
--- /dev/null
+++ b/MATGEN/MISC/makefile
@@ -0,0 +1,25 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES1 = rsobel.o
+FILES2 = rzlatev.o
+FILES3 = markov.o
+
+sobel.ex: $(FILES1) ../../libskit.a
+ $(F77) $(FFLAGS) -o sobel.ex $(FILES1) ../../libskit.a
+
+zlatev.ex: $(FILES2) ../../libskit.a
+ $(F77) $(FFLAGS) -o zlatev.ex $(FILES2) ../../libskit.a
+
+markov.ex: $(FILES3) ../../libskit.a
+ $(F77) $(FFLAGS) -o markov.ex $(FILES3) ../../libskit.a
+
+clean:
+ rm -f *.o *.ex core *.trace
+
+../../libskit.a:
+ (cd ../..; $(MAKE) $(MAKEFLAGS) libskit.a)
+
diff --git a/MATGEN/MISC/markov.f b/MATGEN/MISC/markov.f
new file mode 100644
index 0000000..00eb34f
--- /dev/null
+++ b/MATGEN/MISC/markov.f
@@ -0,0 +1,143 @@
+ program markov
+c-----------------------------------------------------------------------
+c
+c program to generate a Markov chain matrix (to test eigenvalue routines
+c or algorithms for singular systems (in which case use I-A ))
+c the matrix models simple random walk on a triangular grid.
+c see additional comments in subroutine.
+c -----
+c just compile this segment and link to the rest of sparskit
+c (uses subroutine prtmt from MATGEN)
+c will create a matrix in the HARWELL/BOEING format and put it in
+c the file markov.mat
+c
+c-----------------------------------------------------------------------
+ parameter (nmax=5000, nzmax= 4*nmax)
+ real*8 a(nzmax)
+ integer ja(nzmax), ia(nmax+1)
+c
+ character title*72,key*8,type*3
+ open (unit=11,file='markov.mat')
+c
+c read - in grid size - will not accept too large grids.
+c
+ write (6,'(17hEnter grid-size: ,$)')
+ read *, m
+ if (m*(m+1) .gt. 2*nmax ) then
+ print *, ' m too large - unable to produce matrix '
+ stop
+ endif
+c
+c call generator.
+c
+ call markgen (m, n, a, ja, ia)
+c-----------------------------------------------------------------------
+ title=' Test matrix from SPARSKIT - markov chain model '
+ key = 'randwk01'
+ type = 'rua'
+ iout = 11
+ job = 2
+ ifmt = 10
+ call prtmt (n, n, a, ja, ia, x,'NN',title,
+ * key, type,ifmt, job, iout)
+ stop
+ end
+c
+ subroutine markgen (m, n, a, ja, ia)
+c-----------------------------------------------------------------------
+c matrix generator for a markov model of a random walk on a triang. grid
+c-----------------------------------------------------------------------
+c this subroutine generates a test matrix that models a random
+c walk on a triangular grid. This test example was used by
+c G. W. Stewart ["{SRRIT} - a FORTRAN subroutine to calculate the
+c dominant invariant subspaces of a real matrix",
+c Tech. report. TR-514, University of Maryland (1978).] and in a few
+c papers on eigenvalue problems by Y. Saad [see e.g. LAA, vol. 34,
+c pp. 269-295 (1980) ]. These matrices provide reasonably easy
+c test problems for eigenvalue algorithms. The transpose of the
+c matrix is stochastic and so it is known that one is an exact
+c eigenvalue. One seeks the eigenvector of the transpose associated
+c with the eigenvalue unity. The problem is to calculate the
+c steady state probability distribution of the system, which is
+c the eigevector associated with the eigenvalue one and scaled in
+c such a way that the sum all the components is equal to one.
+c-----------------------------------------------------------------------
+c parameters
+c------------
+c on entry :
+c----------
+c m = integer. number of points in each direction.
+c
+c on return:
+c----------
+c n = integer. The dimension of the matrix. (In fact n is known
+c to be equal to (m(m+1))/2 )
+c a,
+c ja,
+c ia = the matrix stored in CSR format.
+c
+c-----------------------------------------------------------------------
+c Notes: 1) the code will actually compute the transpose of the
+c stochastic matrix that contains the transition probibilities.
+c 2) It should also be possible to have a matrix generator
+c with an additional parameter (basically redefining `half' below
+c to be another parameter and changing the rest accordingly, but
+c this is not as simple as it sounds). This is not likely to provide
+c any more interesting matrices.
+c-----------------------------------------------------------------------
+ real*8 a(*), cst, pd, pu, half
+ integer ja(*), ia(*)
+c-----------------------------------------------------------------------
+ data half/0.5d0/
+c
+ cst = half/real(m-1)
+c
+c --- ix counts the grid point (natural ordering used), i.e.,
+c --- the row number of the matrix.
+c
+ ix = 0
+ jax = 1
+ ia(1) = jax
+c
+c sweep y coordinates
+c
+ do 20 i=1,m
+ jmax = m-i+1
+c
+c sweep x coordinates
+c
+ do 10 j=1,jmax
+ ix = ix + 1
+ if (j .eq. jmax) goto 2
+ pd = cst*real(i+j-1)
+c
+c north
+c
+ a(jax) = pd
+ if (i.eq. 1) a(jax) = a(jax)+pd
+ ja(jax) = ix + 1
+ jax = jax+1
+c east
+ a(jax) = pd
+ if (j .eq. 1) a(jax) = a(jax)+pd
+ ja(jax) = ix + jmax
+ jax = jax+1
+c south
+ 2 pu = half - cst*real(i+j-3)
+ if ( j .gt. 1) then
+ a(jax) = pu
+ ja(jax) = ix-1
+ jax = jax+1
+ endif
+c west
+ if ( i .gt. 1) then
+ a(jax) = pu
+ ja(jax) = ix - jmax - 1
+ jax = jax+1
+ endif
+ ia(ix+1) = jax
+ 10 continue
+ 20 continue
+ n = ix
+ return
+ end
diff --git a/MATGEN/MISC/rsobel.f b/MATGEN/MISC/rsobel.f
new file mode 100644
index 0000000..5a3afab
--- /dev/null
+++ b/MATGEN/MISC/rsobel.f
@@ -0,0 +1,14 @@
+ program rsobel
+ integer n, ia(1:200), ja(1:1000), ib(1:200), jb(1:1000)
+ integer nrowc, ncolc
+ integer ic(1:200), jc(1:1000), ierr
+ real*8 a(1:1000), b(1:1000), c(1:1000)
+
+ write (*, '(1x, 9hInput n: ,$)')
+ read *, n
+ call sobel(n,nrowc,ncolc,c,jc,ic,a,ja,ia,b,jb,ib,1000,ierr)
+ print *, 'ierr =', ierr
+ print *, 'Nrow =', nrowc, ' Ncol =', ncolc
+ call dump(1, nrowc, .true., c, jc, ic, 6)
+ end
+
diff --git a/MATGEN/MISC/rzlatev.f b/MATGEN/MISC/rzlatev.f
new file mode 100644
index 0000000..25014af
--- /dev/null
+++ b/MATGEN/MISC/rzlatev.f
@@ -0,0 +1,108 @@
+ program zlatev
+c-----------------------------------------------------------------------
+c
+c test suite for zlatev matrices. generates three matrices and
+c writes them in three different files in Harwell-Boeing format.
+c zlatev1.mat produced from matrf2
+c zlatev2.mat produced from dcn
+c zlatev3.mat produced from ecn
+c
+c-----------------------------------------------------------------------
+ parameter (nmax = 1000, nzmax=20*nmax)
+ implicit real*8 (a-h,o-z)
+ integer ia(nzmax), ja(nzmax), iwk(nmax)
+ real*8 a(nzmax)
+ character title*72, key*3,type*8, guesol*2
+c
+ open (unit=7,file='zlatev1.mat')
+ open (unit=8,file='zlatev2.mat')
+ open (unit=9,file='zlatev3.mat')
+c
+ m = 100
+ n = m
+ ic = n/2
+ index = 10
+ alpha = 5.0
+ nn = nzmax
+c
+c call matrf2
+c
+ call matrf2(m,n,ic,index,alpha,nn,nz,a,ia,ja,ierr)
+ job = 1
+c do 110 i = 1, nz
+c print *, ia(i), ja(i), a(i)
+c 110 continue
+ call coicsr(n, nz, job, a, ja, ia, iwk)
+c-----
+ title = ' 1st matrix from zlatev examples '
+ type = 'RUA'
+ key = ' ZLATEV1'
+ iout = 7
+ guesol='NN'
+c
+ ifmt = 3
+ job = 2
+c
+c write result in H-B format.
+c
+c Replaces prtmt with smms in order to print matrix in format for
+c SMMS instead.
+c call smms (n,1,n,0,a,ja,ia,iout)
+ call prtmt (n,n,a,ja,ia,rhs,guesol,title,type,key,
+ 1 ifmt,job,iout)
+
+c-------- second type of matrices dcn matrices ---------------
+ n = 200
+ nn = nzmax
+ ic = 20
+c-------------------------------------------------------
+c matrix of the type e(c,n)
+c-------------------------------------------------------
+ call dcn(a,ia,ja,n,ne,ic,nn,ierr)
+c---------------------------------------------------
+ call coicsr(n, ne, job, a, ja, ia, iwk)
+ title = ' 2nd matrix from zlatev examples '
+ iout = iout+1
+ guesol='NN'
+ type = 'RUA'
+ key = ' ZLATEV2'
+c
+ ifmt = 3
+ job = 2
+c
+c write result in second file
+c
+c Replaced prtmt with smms in order to print matrix in format for
+c SMMS instead.
+c call smms (n,1,n,0,a,ja,ia,iout)
+ call prtmt (n,n,a,ja,ia,rhs,guesol,title,type,key,
+ 1 ifmt,job,iout)
+c-------------------------------------------------------
+c matrix of the type e(c,n)
+c-------------------------------------------------------
+ n = 200
+ ic = 20
+ nn = nzmax
+c
+c call ecn
+c
+ call ecn(n,ic,ne,ia,ja,a,nn,ierr)
+ call coicsr(n, ne, job, a, ja, ia, iwk)
+ title = ' 3nd matrix from zlatev examples '
+ guesol='NN'
+ type = 'RUA'
+ key = ' ZLATEV3'
+ iout = iout+1
+c
+ ifmt = 3
+ job = 2
+c
+c write resulting matrix in third file
+c
+c Replaced prtmt with smms in order to print matrix in format for
+c SMMS instead.
+c call smms (n,1,n,0,a,ja,ia,iout)
+ call prtmt (n,n,a,ja,ia,rhs,guesol,title,type,key,
+ 1 ifmt,job,iout)
+ stop
+ end
diff --git a/MATGEN/MISC/sobel.f b/MATGEN/MISC/sobel.f
new file mode 100644
index 0000000..2a25193
--- /dev/null
+++ b/MATGEN/MISC/sobel.f
@@ -0,0 +1,158 @@
+ subroutine sobel(n,nrowc,ncolc,c,jc,ic,a,ja,ia,b,jb,ib,nzmax,ierr)
+ integer i, n, ia(*), ja(*), ib(*), jb(*)
+ integer nrowa, ncola, nrowb, ncolb, nrowc, ncolc, ipos
+ integer ic(*), jc(*), offset, ierr
+ real*8 a(*), b(*), c(*)
+c-----------------------------------------------------------------------
+c This subroutine generates a matrix used in the statistical problem
+c presented by Prof. Sobel. The matrix is formed by a series of
+c small submatrix on or adjancent to the diagonal. The submatrix on
+c the diagonal is square and the size goes like 1, 1, 2, 2, 3, 3,...
+c Each of the diagonal block is a triadiagonal matrix, each of the
+c off-diagonal block is a bidiagonal block. The values of elements
+c in the off-diagonal block are all -1. So are the values of the
+c elements on the sub- and super-diagonal of the blocks on the
+c diagonal. The first element(1,1) of the diagonal block is alternating
+c between 3 and 5, the rest of the diagonal elements (of the block
+c on the diagonal) are 6.
+c-----------------------------------------------------------------------
+c This subroutine calls following subroutines to generate the three
+c thypes of submatrices:
+c diagblk -- generates diagonal block.
+c leftblk -- generates the block left of the diagonal one.
+c rightblk-- generates the block right of the diagonal one.
+c-----------------------------------------------------------------------
+ if (n.lt.2) return
+
+ ipos = 1
+ offset = 1
+ call diagblk(1, nrowc, ncolc, c, jc, ic)
+ do 10 i=2, n-2
+ nrowa = nrowc
+ ncola = ncolc
+ call copmat (nrowc,c,jc,ic,a,ja,ia,1,1)
+ call rightblk(i-1, nrowb, ncolb, b,jb,ib)
+ call addblk(nrowa,ncola,a,ja,ia,ipos,ipos+offset,1,
+ $ nrowb,ncolb,b,jb,ib,nrowc,ncolc,c,jc,ic,nzmax,ierr)
+ call leftblk(i,nrowb,ncolb,b,jb,ib)
+ call addblk(nrowc,ncolc,c,jc,ic,ipos+offset,ipos,1,
+ $ nrowb,ncolb,b,jb,ib,nrowa,ncola,a,ja,ia,nzmax,ierr)
+ ipos = ipos + offset
+ call diagblk(i,nrowb,ncolb,b,jb,ib)
+ call addblk(nrowa,ncola,a,ja,ia,ipos,ipos,1,
+ $ nrowb,ncolb,b,jb,ib,nrowc,ncolc,c,jc,ic,nzmax,ierr)
+ offset = 1 + (i-1)/2
+ 10 continue
+ end
+c-----------------------------------------------------------------------
+ subroutine diagblk(n, nrow, ncol, a, ja, ia)
+ implicit none
+ integer n, nrow, ncol, ia(1:*), ja(1:*)
+ real*8 a(1:*)
+c-----------------------------------------------------------------------
+c generates the diagonal block for the given problem.
+c-----------------------------------------------------------------------
+ integer i, k
+ nrow = 1 + (n-1)/2
+ ncol = nrow
+ k = 1
+ ia(1) = 1
+ ja(1) = 1
+ if (mod(n, 2) .eq. 1) then
+ a(1) = 3
+ else
+ a(1) = 5
+ end if
+ k = k + 1
+ if (ncol.gt.1) then
+ ja(2) = 2
+ a(2) = -1.0
+ k = k + 1
+ end if
+
+ do 10 i = 2, nrow
+ ia(i) = k
+ ja(k) = i-1
+ a(k) = -1.0
+ k = k + 1
+ ja(k) = i
+ a(k) = 6.0
+ k = k + 1
+ if (i.lt.nrow) then
+ ja(k) = i + 1
+ a(k) = -1.0
+ k = k+1
+ end if
+ 10 continue
+ ia(nrow+1) = k
+ return
+c---------end-of-diagblk------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine leftblk(n, nrow, ncol, a, ja, ia)
+ implicit none
+ integer n, nrow, ncol, ja(1:*), ia(1:*)
+ real*8 a(1:*)
+c-----------------------------------------------------------------------
+c Generate the subdiagonal block for the problem given.
+c-----------------------------------------------------------------------
+ integer i, k
+ nrow = 1 + (n-1)/2
+ ncol = n/2
+ k = 1
+ do 10 i = 1, nrow
+ ia(i) = k
+ if (nrow.ne.ncol) then
+ if (i.gt.1) then
+ ja(k) = i-1
+ a(k) = -1.0
+ k = k+1
+ end if
+ end if
+ if (i.le.ncol) then
+ ja(k) = i
+ a(k) = -1.0
+ k = k+1
+ end if
+ if (nrow.eq.ncol) then
+ if (i.lt.ncol) then
+ ja(k) = i+1
+ a(k) = -1.0
+ k = k+1
+ end if
+ end if
+ 10 continue
+ ia(nrow+1) = k
+ return
+c---------end-of-leftblk------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine rightblk(n, nrow, ncol, a, ja, ia)
+ implicit none
+ integer n, nrow, ncol, ja(1:*), ia(1:*)
+ real*8 a(1:*)
+ integer i, k
+ nrow = 1 + (n-1)/2
+ ncol = 1 + n/2
+ k = 1
+ do 10 i = 1, nrow
+ ia(i) = k
+ if (nrow.eq.ncol) then
+ if (i.gt.1) then
+ ja(k) = i-1
+ a(k) = -1.0
+ k = k+1
+ end if
+ end if
+ ja(k) = i
+ a(k) = -1.0
+ k = k+1
+ if (nrow.ne.ncol) then
+ ja(k) = i+1
+ a(k) = -1.0
+ k = k+1
+ end if
+ 10 continue
+ ia(nrow+1) = k
+c---------end-of-rightblk-----------------------------------------------
+ end
diff --git a/MATGEN/MISC/zlatev.f b/MATGEN/MISC/zlatev.f
new file mode 100644
index 0000000..d20a7fd
--- /dev/null
+++ b/MATGEN/MISC/zlatev.f
@@ -0,0 +1,542 @@
+ SUBROUTINE MATRF2(M,N,C,INDEX,ALPHA,NN,NZ,A,SNR,RNR,FEJLM)
+C--------------------------------------------------------------------
+C
+C PURPOSE
+C -------
+C The subroutine generates sparse (rectangular or square) matrices.
+C The dimensions of the matrix and the average number of nonzero
+C elements per row can be specified by the user. Moreover, the user
+C can also change the sparsity pattern and the condition number of the
+C matrix. The non-zero elements of the desired matrix will be
+C accumulated (in an arbitrary order) in the first NZ positions of
+C array A. The column and the row numbers of the non-zero element
+C stored in A(I), I=1,...,NZ, will be found in SNR(I) and RNR(I),
+C respectively. The matrix generated by this subroutine is of the
+C class F(M,N,C,R,ALPHA) (see reference).
+C
+C Note: If A is the sparse matrix of type F(M,N,C,R,ALPHA), then
+C
+C min|A(i,j)| = 1/ALPHA,
+C
+C max|A(i,j)| = max(INDEX*N - N,10*ALPHA).
+C
+C
+C CONTRIBUTOR: Ernest E. Rothman
+C Cornell Theory Center/Cornell National Supercomputer
+C Facility.
+C e-mail address: BITNET: eer@cornellf
+C INTERNET: eer@cornellf.tn.cornell.edu
+C
+C minor modifications by Y. Saad. April 26, 1990.
+C
+C Note: This subroutine has been copied from the following reference.
+C The allowable array sizes have been changed.
+C
+C REFERENCE: Zlatev, Zahari; Schaumburg, Kjeld; Wasniewski, Jerzy;
+C "A testing Scheme for Subroutines Solving Large Linear Problems",
+C Computers and Chemistry, Vol. 5, No. 2-3, pp. 91-100, 1981.
+C
+C
+C INPUT PARAMETERS
+C ----------------
+C M - Integer. The number of rows in the desired matrix.
+C N < M+1 < 9000001 must be specified.
+C
+C N - Integer. The number of columns in the desired matrix.
+C 21 < N < 9000001 must be specified.
+C
+C C - Integer. The sparsity pattern can be changed by means of this
+C parameter. 10 < C < N-10 must be specified.
+C
+C INDEX - Integer. The average number of non-zero elements per row in
+C the matrix will be equal to INDEX.
+C 1 < INDEX < N-C-8 must be specified.
+C
+C ALPHA - Real. The condition number of the matrix can be changed
+C BY THIS PARAMETER. ALPHA > 0.0 MUST BE SPECIFIED.
+C If ALPHA is approximately equal to 1.0 then the generated
+C matrix is well-conditioned. Large values of ALPHA will
+C usually produce ill-conditioned matrices. Note that no
+C round-off errors during the computations in this subroutine
+C are made if ALPHA = 2**I (where I is an arbitrary integer
+C which produces numbers in the machine range).
+C
+C NN - Integer. The length of arrays A, RNR, and SNR (see below).
+C INDEX*M+109 < NN < 9000001 must be specified.
+C
+C
+C OUTPUT PARAMETERS
+C -----------------
+C NZ - Integer. The number of non-zero elements in the matrix.
+C
+C A(NN) - Real array. The non-zero elements of the matrix generated
+C are accumulated in the first NZ locations of array A.
+C
+C SNR(NN) - INTEGER array. The column number of the non-zero element
+C kept in A(I), I=1,...NZ, is stored in SNR(I).
+C
+C RNR(NN) - Integer array. The row number of the non-zero element
+C kept in A(I), I=1,...NZ, is stored in RNR(I).
+C
+C FEJLM - Integer. FEJLM=0 indicates that the call is successful.
+C Error diagnostics are given by means of positive values of
+C this parameter as follows:
+C FEJLM = 1 - N is out of range.
+C FEJLM = 2 - M is out of range.
+C FEJLM = 3 - C is out of range.
+C FEJLM = 4 - INDEX is out of range.
+C FEJLM = 5 - NN is out of range.
+C FEJLM = 7 - ALPHA is out of range.
+C
+C
+C
+C
+ REAL*8 A, ALPHA, ALPHA1
+ INTEGER M, N, NZ, C, NN, FEJLM, M1, NZ1, RR1, RR2, RR3, K
+ INTEGER M2, N2
+ INTEGER SNR, RNR
+ DIMENSION A(NN), SNR(NN), RNR(NN)
+ M1 = M
+ FEJLM = 0
+ NZ1 = INDEX*M + 110
+ K = 1
+ ALPHA1 = ALPHA
+ INDEX1 = INDEX - 1
+C
+C Check the parameters.
+C
+ IF(N.GE.22) GO TO 1
+2 FEJLM = 1
+ RETURN
+1 IF(N.GT.9000000) GO TO 2
+ IF(M.GE.N) GO TO 3
+4 FEJLM = 2
+ RETURN
+3 IF(M.GT.9000000) GO TO 4
+ IF(C.LT.11)GO TO 6
+ IF(N-C.GE.11)GO TO 5
+6 FEJLM = 3
+ RETURN
+5 IF(INDEX.LT.1) GO TO 12
+ IF(N-C-INDEX.GE.9)GO TO 13
+12 FEJLM = 4
+13 IF(NN.GE.NZ1)GO TO 7
+8 FEJLM = 5
+ RETURN
+7 IF(NN.GT.9000000)GO TO 8
+ IF(ALPHA.GT.0.0)GO TO 9
+ FEJLM = 6
+ RETURN
+9 CONTINUE
+C
+C End of the error check. Begin to generate the non-zero elements of
+C the required matrix.
+C
+ DO 20 I=1,N
+ A(I) = 1.0d0
+ SNR(I) = I
+20 RNR(I) = I
+ NZ = N
+ J1 = 1
+ IF(INDEX1.EQ.0) GO TO 81
+ DO 21 J = 1,INDEX1
+ J1 = -J1
+ DO 22 I=1,N
+ A(NZ+I) = dfloat(J1*J*I)
+ IF(I+C+J-1.LE.N)SNR(NZ+I) = I + C + J - 1
+ IF(I+C+J-1.GT.N)SNR(NZ+I) = C + I + J - 1 - N
+22 RNR(NZ + I) = I
+21 NZ = NZ + N
+81 RR1 = 10
+ RR2 = NZ
+ RR3 = 1
+25 CONTINUE
+ DO 26 I=1,RR1
+ A(RR2 + I) = ALPHA*dfloat(I)
+ SNR(RR2+I) = N - RR1 + I
+ RNR(RR2+I) = RR3
+26 CONTINUE
+ IF(RR1.EQ.1) GO TO 27
+ RR2 = RR2 + RR1
+ RR1 = RR1 - 1
+ RR3 = RR3 + 1
+ GO TO 25
+27 NZ = NZ + 55
+29 M1 = M1 - N
+ ALPHA = 1.0d0/ALPHA
+ IF(M1.LE.0) GO TO 28
+ N2 = K*N
+ IF(M1.GE.N)M2 = N
+ IF(M1.LT.N)M2 = M1
+ DO 30 I=1,M2
+ A(NZ+I) = ALPHA*dfloat(K+1)
+ SNR(NZ + I) = I
+30 RNR(NZ + I) = N2 + I
+ NZ = NZ + M2
+ IF(INDEX1.EQ.0) GO TO 82
+ J1 = 1
+ DO 41 J = 1,INDEX1
+ J1 = -J1
+ DO 42 I = 1,M2
+ A(NZ+I) = ALPHA*dFLOAT(J*J1)*(dfloat((K+1)*I)+1.0d0)
+ IF(I+C+J-1.LE.N)SNR(NZ+I) = I + C + J - 1
+ IF(I+C+J-1.GT.N)SNR(NZ+I) = C + I + J - 1 - N
+42 RNR(NZ + I) = N2 + I
+41 NZ = NZ +M2
+82 K = K + 1
+ GO TO 29
+28 CONTINUE
+ ALPHA = 1.0d0/ALPHA1
+ RR1 = 1
+ RR2 = NZ
+35 CONTINUE
+ DO 36 I = 1,RR1
+ A(RR2+I) = ALPHA*dfloat(RR1+1-I)
+ SNR(RR2+I) = I
+ RNR(RR2+I) = N - 10 + RR1
+36 CONTINUE
+ IF(RR1.EQ.10) GO TO 34
+ RR2 = RR2 + RR1
+ RR1 = RR1 + 1
+ GO TO 35
+34 NZ = NZ + 55
+ ALPHA = ALPHA1
+ RETURN
+ END
+ SUBROUTINE DCN(AR,IA,JA,N,NE,IC,NN,IERR)
+C-----------------------------------------------------------------------
+C
+C PURPOSE
+C -------
+C The subroutine generates sparse (square) matrices of the type
+C D(N,C). This type of matrix has the following characteristics:
+C 1's in the diagonal, three bands at the distance C above the
+C diagonal (and reappearing cyclicly under it), and a 10 x 10
+C triangle of elements in the upper right-hand corner.
+C Different software libraries require different storage schemes.
+C This subroutine generates the matrix in the storage by
+C indices mode.
+C
+C
+C Note: If A is the sparse matrix of type D(N,C), then
+C
+C min|A(i,j)| = 1, max|A(i,j)| = max(1000,N + 1)
+C
+C
+C
+C CONTRIBUTOR: Ernest E. Rothman
+C Cornell Theory Center/Cornell National Supercomputer
+C Facility.
+C e-mail address: BITNET: eer@cornellf
+C INTERNET: eer@cornellf.tn.cornell.edu
+C
+C
+C REFERENCE
+C ---------
+C 1) Zlatev, Zahari; Schaumburg, Kjeld; Wasniewski, Jerzy;
+C "A Testing Scheme for Subroutines Solving Large Linear Problems",
+C Computers and Chemistry, Vol. 5, No. 2-3, pp. 91-100, 1981.
+C 2) Osterby, Ole and Zletev, Zahari;
+C "Direct Methods for Sparse Matrices";
+C Springer-Verlag 1983.
+C
+C
+C
+C INPUT PARAMETERS
+C ----------------
+C N - Integer. The size of the square matrix.
+C N > 13 must be specified.
+C
+C NN - Integer. The dimension of integer arrays IA and JA and
+C real array AR. Must be at least NE.
+C
+C IC - Integer. The sparsity pattern can be changed by means of this
+C parameter. 0 < IC < N-12 must be specified.
+C
+C
+C OUTPUT PARAMETERS
+C -----------------
+C NE - Integer. The number of nonzero elements in the sparse matrix
+C of the type D(N,C). NE = 4*N + 55.
+C
+C AR(NN) - Real array. (Double precision)
+C Stored entries of a sparse matrix to be generated by this
+C subroutine.
+C NN is greater then or equal to, NE, the number of
+C nonzeros including a mandatory diagonal entry for
+C each row. Entries are stored by indices.
+C
+C IA(NN) - Integer array.
+C Pointers to specify rows for the stored nonzero entries
+C in AR.
+C
+C JA(NN) - Integer array.
+C Pointers to specify columns for the stored nonzero entries
+C in AR.
+C
+C IERR - Error parameter is returned as zero on successful
+C execution of the subroutine.
+C Error diagnostics are given by means of positive values
+C of this parameter as follows:
+C IERR = 1 - N is out of range.
+C IERR = 2 - IC is out of range.
+C IERR = 3 - NN is out of range.
+C
+C----------------------------------------------------------------------
+C
+ real*8 ar(nn)
+ integer ia(nn), ja(nn), ierr
+ ierr = 0
+c
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+Check the input parameters:
+c
+ if(n.le.13)then
+ ierr = 1
+ return
+ endif
+ if(ic .le. 0 .or. ic .ge. n-12)then
+ ierr = 2
+ return
+ endif
+ ne = 4*n+55
+ if(nn.lt.ne)then
+ ierr = 3
+ return
+ endif
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c
+c Begin to generate the nonzero elements as well as the row and column
+c pointers:
+c
+ do 20 i=1,n
+ ar(i) = 1.0d0
+ ia(i) = i
+ ja(i) = i
+20 continue
+ ilast = n
+ do 30 i=1,n-ic
+ it = ilast + i
+ ar(it) = 1.0 + dfloat(i)
+ ia(it) = i
+ ja(it) = i+ic
+30 continue
+ ilast = ilast + n-ic
+ do 40 i=1,n-ic-1
+ it = ilast + i
+ ar(it) = -dfloat(i)
+ ia(it) = i
+ ja(it) = i+ic+1
+40 continue
+ ilast = ilast + n-ic-1
+ do 50 i=1,n-ic-2
+ it = ilast + i
+ ar(it) = 16.0d0
+ ia(it) = i
+ ja(it) = i+ic+2
+50 continue
+ ilast = ilast + n-ic-2
+ icount = 0
+ do 70 j=1,10
+ do 60 i=1,11-j
+ icount = icount + 1
+ it = ilast + icount
+ ar(it) = 100.0d0 * dfloat(j)
+ ia(it) = i
+ ja(it) = n-11+i+j
+60 continue
+70 continue
+ icount = 0
+ ilast = 55 + ilast
+ do 80 i=n-ic+1,n
+ icount = icount + 1
+ it = ilast + icount
+ ar(it) = 1.0d0 + dfloat(i)
+ ia(it) = i
+ ja(it) = i-n+ic
+80 continue
+ ilast = ilast + ic
+ icount = 0
+ do 90 i=n-ic,n
+ icount = icount + 1
+ it = ilast + icount
+ ar(it) = -dfloat(i)
+ ia(it) = i
+ ja(it) = i-n+ic+1
+90 continue
+ ilast = ilast + ic + 1
+ icount = 0
+ do 100 i=n-ic-1,n
+ icount = icount + 1
+ it = ilast + icount
+ ar(it) = 16.0d0
+ ia(it) = i
+ ja(it) = i-n+ic+2
+100 continue
+c ilast = ilast + ic + 2
+c if(ilast.ne.4*n+55) then
+c write(*,*)' ilast equal to ', ilast
+c write(*,*)' ILAST, the number of nonzeros, should = ', 4*n + 55
+c stop
+c end if
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ return
+ end
+ SUBROUTINE ECN(N,IC,NE,IA,JA,AR,NN,IERR)
+C----------------------------------------------------------------------
+C
+C PURPOSE
+C -------
+C The subroutine generates sparse (square) matrices of the type
+C E(N,C). This type of matrix has the following characteristics:
+C Symmetric, positive-definite, N x N matrices with 4 in the diagonal
+C and -1 in the two sidediagonal and in the two bands at the distance
+C C from the diagonal. These matrices are similar to matrices obtained
+C from using the five-point formula in the discretization of the
+C elliptic PDE.
+C
+C
+C Note: If A is the sparse matrix of type E(N,C), then
+C
+C min|A(i,j)| = 1, max|A(i,j)| = 4
+C
+C
+C
+C CONTRIBUTOR: Ernest E. Rothman
+C Cornell Theory Center/Cornell National Supercomputer
+C Facility.
+C e-mail address: BITNET: eer@cornellf
+C INTERNET: eer@cornellf.tn.cornell.edu
+C
+C
+C REFERENCE
+C ---------
+C 1) Zlatev, Zahari; Schaumburg, Kjeld; Wasniewski, Jerzy;
+C "A Testing Scheme for Subroutines Solving Large Linear Problems",
+C Computers and Chemistry, Vol. 5, No. 2-3, pp. 91-100, 1981.
+C 2) Osterby, Ole and Zletev, Zahari;
+C "Direct Methods for Sparse Matrices";
+C Springer-Verlag 1983.
+C
+C
+C
+C INPUT PARAMETERS
+C ----------------
+C N - Integer. The size of the square matrix.
+C N > 2 must be specified.
+C
+C NN - Integer. The dimension of integer arrays IA and JA and
+C real array AR. Must be at least NE.
+C
+C NN - Integer. The dimension of integer array JA. Must be at least
+C NE.
+C
+C IC - Integer. The sparsity pattern can be changed by means of this
+C parameter. 1 < IC < N must be specified.
+C
+C
+C
+C OUTPUT PARAMETERS
+C -----------------
+C NE - Integer. The number of nonzero elements in the sparse matrix
+C of the type E(N,C). NE = 5*N - 2*IC - 2 .
+C
+C AR(NN) - Real array.
+C Stored entries of the sparse matrix A.
+C NE is the number of nonzeros including a mandatory
+C diagonal entry for each row.
+C
+C IA(NN) - Integer array.(Double precision)
+C Pointers to specify rows for the stored nonzero entries
+C in AR.
+C
+C JA(NN) - Integer array.
+C Pointers to specify columns for the stored nonzero entries
+C in AR.
+C
+C IERR - Error parameter is returned as zero on successful
+C execution of the subroutine.
+C Error diagnostics are given by means of positive values
+C of this parameter as follows:
+C IERR = 1 - N is out of range.
+C IERR = 2 - IC is out of range.
+C IERR = 3 - NN is out of range.
+C
+C---------------------------------------------------------------------
+C
+C
+ real*8 ar(nn)
+ integer ia(nn), ja(nn), n, ne, ierr
+ ierr = 0
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c
+Check the input parameters:
+c
+ if(n.le.2)then
+ ierr = 1
+ return
+ endif
+ if(ic.le.1.or.ic.ge.n)then
+ ierr = 2
+ return
+ endif
+c
+ ne = 5*n-2*ic-2
+ if(nn.lt.ne)then
+ ierr = 3
+ return
+ endif
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+c
+c Begin to generate the nonzero elements as well as the row and column
+c pointers:
+c
+ do 20 i=1,n
+ ar(i) = 4.0d0
+ ia(i) = i
+ ja(i) = i
+20 continue
+ ilast = n
+ do 30 i=1,n-1
+ it = ilast + i
+ ar(it) = -1.0d0
+ ia(it) = i+1
+ ja(it) = i
+30 continue
+ ilast = ilast + n - 1
+ do 40 i=1,n-1
+ it = ilast + i
+ ar(it) = -1.0d0
+ ia(it) = i
+ ja(it) = i+1
+40 continue
+ ilast = ilast + n-1
+ do 50 i=1,n-ic
+ it = ilast + i
+ ar(it) = -1.0d0
+ ia(it) = i+ic
+ ja(it) = i
+50 continue
+ ilast = ilast + n-ic
+ do 60 I=1,n-ic
+ it = ilast + i
+ ar(it) = -1.0d0
+ ia(it) = i
+ ja(it) = i+ic
+60 continue
+c ilast = ilast + n-ic
+c if(ilast.ne.5*n-2*ic-2) then
+c write(*,*)' ilast equal to ', ilast
+c write(*,*)' ILAST, the no. of nonzeros, should = ', 5*n-2*ic-2
+c stop
+c end if
+c
+c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ return
+ end
+
diff --git a/MATGEN/README b/MATGEN/README
new file mode 100644
index 0000000..9e1564b
--- /dev/null
+++ b/MATGEN/README
@@ -0,0 +1,57 @@
+-------------------------------------------------------------
+ SPARSKIT MODULE MATGEN
+-------------------------------------------------------------
+
+ The current directory MATGEN contains a few subroutines and
+ drivers for generating sparse matrices.
+
+ 1) 5-pt and 7-pt matrices on rectangular regions discretizing
+ elliptic operators of the form:
+
+ L u == delx( a delx u ) + dely ( b dely u) + delz ( c delz u ) +
+ delx ( d u ) + dely (e u) + delz( f u ) + g u = h u
+
+ with Boundary conditions,
+ alpha del u / del n + beta u = gamma
+ on a rectangular 1-D, 2-D or 3-D grid using centered
+ difference scheme or upwind scheme.
+
+ The functions a, b, ..., h are known through the
+ subroutines afun, bfun, ..., hfun in the file
+ functns.f. The alpha is a constant on each side of the
+ rectanglar domain. the beta and the gamma are defined
+ by the functions betfun and gamfun (see functns.f for
+ examples).
+
+ 2) block version of the finite difference matrices (several degrees of
+ freedom per grid point. ) It only generates the matrix (without
+ the right-hand-side), only Dirichlet Boundary conditions are used.
+
+ 3) Finite element matrices for the convection-diffusion problem
+
+ - Div ( K(x,y) Grad u ) + C(x,y) Grad u = f
+ u = 0 on boundary
+
+ (with Dirichlet boundary conditions). The matrix is returned
+ assembled in compressed sparse row format. See genfeu for
+ matrices in unassembled form. The user must provide the grid,
+ (coordinates x, y and connectivity matrix ijk) as well as some
+ information on the nodes (nodcode) and the material properties
+ (the function K(x,y) above) in the form of a subroutine xyk.
+
+ 4) Markov chain matrices arising from a random walk on a
+ trangular grid. Useful for testing nonsymmetric eigenvalue
+ codes. Has been suggested by G.W. Stewart in one of his
+ papers. Used by Y. Saad in several papers as a test problem
+ for nonsymmetric eigenvalue methods.
+
+ 5) Matrices from the paper by Z. Zlatev, K. Schaumburg,
+ and J. Wasniewski. (``A testing scheme for subroutines solving
+ large linear problems.'' Computers and Chemistry, 5:91--100,
+ 1981.)
+
+----------------------------------------------------------------------
+ the items (1) and (2) are in directory FDIF,
+ the item (3) is in directory FEM
+ the items (4) and (5) are in directory MISC
+
diff --git a/ORDERINGS/README b/ORDERINGS/README
new file mode 100644
index 0000000..285a852
--- /dev/null
+++ b/ORDERINGS/README
@@ -0,0 +1,55 @@
+------------------------------------------------------------
+ SPARSKIT MODULE ORDERINGS
+-------------------------------------------------------------
+
+ The current directory ORDERINGS contains a few subroutines for
+ finding some of the standard reorderings for a given matrix.
+
+levset.f -- level set based algorithms
+
+ dblstr : doubled stripe partitioner
+ rdis : recursive dissection partitioner
+ dse2way : distributed site expansion usuing sites from dblstr
+ dse : distributed site expansion usuing sites from rdis
+ BFS : Breadth-First search traversal algorithm
+ add_lvst : routine to add a level -- used by BFS
+ stripes : finds the level set structure
+ stripes0 : finds a trivial one-way partitioning from level-sets
+ perphn : finds a pseudo-peripheral node and performs a BFS from it.
+ mapper4 : routine used by dse and dse2way to do center expansion
+ get_domns: routine to find subdomaine from linked lists found by
+ mapper4.
+ add_lk : routine to add entry to linked list -- used by mapper4.
+ find_ctr : routine to locate an approximate center of a subgraph.
+ rversp : routine to reverse a given permutation (e.g., for RCMK)
+ maskdeg : integer function to compute the `masked' of a node
+
+color.f -- algorithms for independent set ordering and multicolor
+ orderings
+
+ multic : greedy algorithm for multicoloring
+ indset0 : greedy algorithm for independent set ordering
+ indset1 : independent set ordering using minimal degree traversal
+ indset2 : independent set ordering with local minimization
+ indset3 : independent set ordering by vertex cover algorithm
+
+ccn.f -- code for strongly connected components
+
+ blccnx : Driver routine to reduce the structure of a matrix
+ to its strongly connected components.
+ cconex : Main routine to compute the strongly connected components
+ of a (block diagonal) matrix.
+ anccnx : We put in ICCNEX the vertices marked in the component MCCNEX.
+ newcnx : We put in ICCNEX the vertices marked in the component
+ MCCNEX. We modify also the vector KPW.
+ blccn1 : Parallel computation of the connected components of a
+ matrix. The parallel loop is performed only if the matrix
+ has a block diagonal structure.
+ icopy : We copy an integer vector into anothoer.
+ compos : We calculate the composition between two permutation
+ vectors.
+ invlpw : We calculate the inverse of a permutation vector.
+ numini : We initialize a vector to the identity.
+ tbzero : We initialize to ZERO an integer vector.
+ iplusa : Given two integers IALPHA and IBETA, for an integer vector
+ IA we calculate IA(i) = ialpha + ibeta * ia(i)
diff --git a/ORDERINGS/ccn.f b/ORDERINGS/ccn.f
new file mode 100644
index 0000000..eee5836
--- /dev/null
+++ b/ORDERINGS/ccn.f
@@ -0,0 +1,709 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c REORDERING ROUTINES -- STRONGLY CONNECTED COMPONENTS c
+c----------------------------------------------------------------------c
+c Contributed by:
+C Laura C. Dutto - email: dutto@cerca.umontreal.ca
+c July 1992 - Update: March 1994
+C-----------------------------------------------------------------------
+c CONTENTS:
+c --------
+c blccnx : Driver routine to reduce the structure of a matrix
+c to its strongly connected components.
+c cconex : Main routine to compute the strongly connected components
+c of a (block diagonal) matrix.
+c anccnx : We put in ICCNEX the vertices marked in the component MCCNEX.
+c newcnx : We put in ICCNEX the vertices marked in the component
+c MCCNEX. We modify also the vector KPW.
+c blccn1 : Parallel computation of the connected components of a
+c matrix. The parallel loop is performed only if the matrix
+c has a block diagonal structure.
+c ccnicopy:We copy an integer vector into anothoer.
+c compos : We calculate the composition between two permutation
+c vectors.
+c invlpw : We calculate the inverse of a permutation vector.
+c numini : We initialize a vector to the identity.
+c tbzero : We initialize to ZERO an integer vector.
+c iplusa : Given two integers IALPHA and IBETA, for an integer vector
+c IA we calculate IA(i) = ialpha + ibeta * ia(i)
+C
+c----------------------------------------------------------------------c
+ subroutine BLCCNX(n, nbloc, nblcmx, nsbloc, job, lpw, amat, ja,
+ * ia, iout, ier, izs, nw)
+C-----------------------------------------------------------------------
+c
+c This routine determines if the matrix given by the structure
+c IA et JA is irreductible. If not, it orders the unknowns such
+c that all the consecutive unknowns in KPW between NSBLOC(i-1)+1
+c and NSBLOC(i) belong to the ith component of the matrix.
+c The numerical values of the matrix are in AMAT. They are modified
+c only if JOB = 1 and if we have more than one connected component.
+c
+c On entry:
+c --------
+c n = row and column dimension of the matrix
+c nblcmx = maximum number of connected components allowed. The size
+c of NSBLOC is nblcmx + 1 (in fact, it starts at 0).
+c job = integer indicating the work to be done:
+c job = 1 if the permutation LPW is modified, we
+c permute not only the structure of the matrix
+c but also its numerical values.
+c job.ne.1 if the permutation LPW is modified, we permute
+c the structure of the matrix ignoring real values.
+c iout = impression parameter. If 0 < iout < 100, we print
+c comments and error messages on unit IOUT.
+c nw = length of the work vector IZS.
+c
+c Input / output:
+c --------------
+c nbloc = number of connected components of the matrix. If the
+c matrix is not irreductible, nbloc > 1. We allow
+c nbloc > 1 on entry; in this case we calculate the
+c number of connected components in each previous one.
+c nsbloc = integer array of length NBLOC + 1 containing the pointers
+c to the first node of each component on the old (input)
+c and on the new (output) ordering.
+c lpw = integer array of length N corresponding to the
+c permutation of the unknowns. We allow LPW to be a vector
+c different from the identity on input.
+c amat = real*8 values of the matrix given by the structure IA, JA.
+c ja = integer array of length NNZERO (= IA(N+1)-IA(1)) corresponding
+c to the column indices of nonzero elements of the matrix, stored
+c rowwise. It is modified only if the matrix has more
+c than one connected component.
+c ia = integer array of length N+1 corresponding to the
+c pointer to the beginning of each row in JA (compressed
+c sparse row storage). It is modified only if
+c the matrix has more than one connected component.
+c
+c On return:
+c ----------
+c ier = integer. Error message. Normal return ier = 0.
+c
+c Work space:
+c ----------
+c izs = integer vector of length NW
+c
+C-----------------------------------------------------------------------
+C Laura C. Dutto - email: dutto@cerca.umontreal.ca
+c July 1992 - Update: March 1994
+C-----------------------------------------------------------------------
+ integer izs(nw), lpw(n), nsbloc(0:nblcmx), ia(n+1), ja(*)
+ real*8 amat(*)
+ logical impr
+ character*6 chsubr
+C-----------------------------------------------------------------------
+ ier = 0
+ impr = iout.gt.0.and.iout.le.99
+ ntb = ia(n+1) - 1
+ mxccex = max(nblcmx,20)
+c.....The matrix AMAT is a real*8 vector
+ ireal = 2
+c
+c.....MXPTBL: maximal number of vertices by block
+ mxptbl = 0
+ do ibloc = 1, nbloc
+ mxptbl = max( mxptbl, nsbloc(ibloc) - nsbloc(ibloc-1))
+ enddo
+c
+ long1 = nbloc * mxptbl
+ long2 = nbloc * (mxccex+1)
+c.....Dynamic allocation of memory
+ iend = 1
+ iiend = iend
+ ilpw = iiend
+ ikpw = ilpw + n
+ ilccnx = ikpw + long1
+ imark = ilccnx + long2
+ iend = imark + n
+ if(iend .gt. nw) go to 220
+c
+ nbloc0 = nbloc
+ chsubr = 'BLCCN1'
+c.....We determine if the matrix has more than NBLOC0 connected components.
+ call BLCCN1(n, nbloc, nblcmx, nsbloc, izs(ilpw), izs(ikpw), ia,
+ * ja, izs(imark), mxccex, izs(ilccnx), mxptbl, iout,
+ * ier)
+ if(ier.ne.0) go to 210
+c
+ if(nbloc .gt. nbloc0) then
+c..........The matrix has more than NBLOC0 conneted components. So, we
+c..........modify the vectors IA and JA to take account of the new permutation.
+ nfree = iend - ikpw
+ call tbzero(izs(ikpw), nfree)
+ iiat = ikpw
+ ijat = iiat + n + 1
+ iamat = ijat + ntb
+ iend = iamat
+ if(job .eq. 1) iend = iamat + ireal * ntb
+ if(iend .gt. nw) go to 220
+c
+c..........We copy IA and JA on IAT and JAT respectively
+ call ccnicopy(n+1, ia, izs(iiat))
+ call ccnicopy(ntb, ja, izs(ijat))
+ if(job .eq. 1) call dcopy(ntb, amat, 1, izs(iamat), 1)
+ call dperm(n, izs(iamat), izs(ijat), izs(iiat), amat,
+ * ja, ia, izs(ilpw), izs(ilpw), job)
+ ipos = 1
+c..........We sort columns inside JA.
+ call csrcsc(n, job, ipos, amat, ja, ia, izs(iamat),
+ * izs(ijat), izs(iiat))
+ call csrcsc(n, job, ipos, izs(iamat), izs(ijat), izs(iiat),
+ * amat, ja, ia)
+ endif
+c.....We modify the ordering of unknowns in LPW
+ call compos(n, lpw, izs(ilpw))
+c
+ 120 nfree = iend - iiend
+ call tbzero(izs(iiend), nfree)
+ iend = iiend
+ return
+c
+ 210 IF(IMPR) WRITE(IOUT,310) chsubr,ier
+ go to 120
+ 220 IF(IMPR) WRITE(IOUT,320) nw, iend
+ if(ier.eq.0) ier = -1
+ go to 120
+c
+ 310 FORMAT(' ***BLCCNX*** ERROR IN ',a6,'. IER = ',i8)
+ 320 FORMAT(' ***BLCCNX*** THERE IS NOT ENOUGH MEMORY IN THE WORK',
+ 1 ' VECTOR.'/13X,' ALLOWED MEMORY = ',I10,' - NEEDED',
+ 2 ' MEMORY = ',I10)
+ end
+c **********************************************************************
+ subroutine CCONEX(n, icol0, mxccnx, lccnex, kpw, ia, ja, mark,
+ * iout, ier)
+C-----------------------------------------------------------------------
+c
+c This routine determines if the matrix given by the structure
+c IA and JA is irreductible. If not, it orders the unknowns such
+c that all the consecutive unknowns in KPW between LCCNEX(i-1)+1
+c and LCCNEX(i) belong to the ith component of the matrix.
+c The structure of the matrix could be nonsymmetric.
+c The diagonal vertices (if any) will belong to the last connected
+c component (convention).
+c
+c On entry:
+c --------
+c n = row and column dimension of the matrix
+c icol0 = the columns of the matrix are between ICOL0+1 and ICOL0+N
+c iout = impression parameter. If 0 < IOUT < 100, we print
+c comments and error messages on unit IOUT.
+c ia = integer array of length N+1 corresponding to the
+c pointer to the beginning of each row in JA (compressed
+c sparse row storage).
+c ja = integer array of length NNZERO (= IA(N+1)-IA(1))
+c corresponding to the column indices of nonzero elements
+c of the matrix, stored rowwise.
+c
+c Input/Output:
+c ------------
+c mxccnx = maximum number of connected components allowed on input,
+c and number of connected components of the matrix, on output.
+c
+c On return:
+c ----------
+c lccnex = integer array of length MXCCNX + 1 containing the pointers
+c to the first node of each component, in the vector KPW.
+c kpw = integer array of length N corresponding to the
+c inverse of permutation vector.
+c ier = integer. Error message. Normal return ier = 0.
+c
+c Work space:
+c ----------
+c mark = integer vector of length N
+c
+C-----------------------------------------------------------------------
+C Laura C. Dutto - email: dutto@cerca.umontreal.ca
+c July 1992 - Update: March 1994
+C-----------------------------------------------------------------------
+ dimension ia(n+1), lccnex(0:mxccnx), kpw(n), ja(*), mark(n)
+ logical impr
+C-----------------------------------------------------------------------
+ ier = 0
+ ipos = ia(1) - 1
+ impr = iout.gt.0.and.iout.le.99
+c
+ nccnex = 0
+c.....We initialize MARK to zero. At the end of the algorithm, it would
+c.....indicate the number of connected component associated with the vertex.
+c.....The number (-1) indicates that the row associated with this vertex
+c.....is a diagonal row. This value could be modified because we accept
+c.....a non symmetric matrix. All the diagonal vertices will be put in
+c.....the same connected component.
+ call tbzero(mark, n)
+c
+ 5 do i = 1,n
+ if(mark(i) .eq. 0) then
+ ideb = i
+ go to 15
+ endif
+ enddo
+ go to 35
+c
+ 15 if( ia(ideb+1) - ia(ideb) .eq. 1) then
+c..........The row is a diagonal row.
+ mark(ideb) = -1
+ go to 5
+ endif
+ iccnex = nccnex + 1
+ if(iccnex .gt. mxccnx) go to 220
+ index = 0
+ newind = 0
+ jref = 0
+ mark(ideb) = iccnex
+ index = index + 1
+ kpw(index) = ideb
+c
+ 20 jref = jref + 1
+ ideb = kpw(jref)
+
+ do 30 ir = ia(ideb)-ipos, ia(ideb+1)-ipos-1
+ j = ja(ir) - icol0
+ mccnex = mark(j)
+ if(mccnex .le. 0) then
+ index = index + 1
+ kpw(index) = j
+ mark(j) = iccnex
+ else if( mccnex .eq. iccnex) then
+ go to 30
+ else if( mccnex .gt. iccnex) then
+c.............We realize that the connected component MCCNX is,
+c.............in fact, included in this one. We modify MARK and KPW.
+ call NEWCNX(n, mccnex, iccnex, index, kpw, mark)
+ if(mccnex .eq. nccnex) nccnex = nccnex - 1
+ else
+c.............We realize that the previously marked vertices belong,
+c.............in fact, to the connected component ICCNX. We modify MARK.
+ call ANCCNX(n, iccnex, mccnex, mark, nwindx)
+ iccnex = mccnex
+ newind = newind + nwindx
+ endif
+ 30 continue
+ if(jref .lt. index) go to 20
+c
+c.....We have finished with this connected component.
+ index = index + newind
+ if(iccnex .eq. nccnex+1) nccnex = nccnex + 1
+ go to 5
+c.......................................................................
+c
+c We have partitioned the graph in its connected components!
+c
+c.......................................................................
+ 35 continue
+c
+c.....All the vertices have been already marked. Before modifying KPW
+c.....(if necessary), we put the diagonal vertex (if any) in the last
+c.....connected component.
+ call tbzero(lccnex(1), nccnex)
+c
+ idiag = 0
+ do i = 1, n
+ iccnex = mark(i)
+ if(iccnex .eq. -1) then
+ idiag = idiag + 1
+ if(idiag .eq. 1) then
+ nccnex = nccnex + 1
+ if(nccnex .gt. mxccnx) go to 220
+ if(impr) write(iout,340)
+ endif
+ mark(i) = nccnex
+ else
+ lccnex(iccnex) = lccnex(iccnex) + 1
+ endif
+ enddo
+ if(idiag .ge. 1) lccnex(nccnex) = idiag
+c
+ if(nccnex .eq. 1) then
+ lccnex(nccnex) = n
+ go to 40
+ endif
+c
+ iccnex = 1
+ 8 if(iccnex .gt. nccnex) go to 12
+ if(lccnex(iccnex) .le. 0) then
+ do i = 1, n
+ if(mark(i) .ge. iccnex) mark(i) = mark(i) - 1
+ enddo
+ nccnex = nccnex - 1
+ do mccnex = iccnex, nccnex
+ lccnex(mccnex) = lccnex(mccnex + 1)
+ enddo
+ else
+ iccnex = iccnex + 1
+ endif
+ go to 8
+c
+ 12 index = 0
+ do iccnex = 1, nccnex
+ noeicc = lccnex(iccnex)
+ lccnex(iccnex) = index
+ index = index + noeicc
+ enddo
+ if(index .ne. n) go to 210
+c
+c.....We define correctly KPW
+ do i = 1,n
+ iccnex = mark(i)
+ index = lccnex(iccnex) + 1
+ kpw(index) = i
+ lccnex(iccnex) = index
+ enddo
+c
+ 40 mxccnx = nccnex
+ lccnex(0) = nccnex
+ if(nccnex .eq. 1) call numini(n, kpw)
+ return
+c
+ 210 if(impr) write(iout,310) index,n
+ go to 235
+ 220 if(impr) write(iout,320) nccnex, mxccnx
+ go to 235
+ 235 ier = -1
+ return
+c
+ 310 format(' ***CCONEX*** ERROR TRYING TO DETERMINE THE NUMBER',
+ * ' OF CONNECTED COMPONENTS.'/13X,' NUMBER OF MARKED',
+ * ' VERTICES =',i7,3x,'TOTAL NUMBER OF VERTICES =',I7)
+ 320 format(' ***CCONEX*** THE ALLOWED NUMBER OF CONNECTED COMPONENTS',
+ * ' IS NOT ENOUGH.'/13X,' NECESSARY NUMBER = ',I4,
+ * 5x,' ALLOWED NUMBER = ',I4)
+ 323 format(' ***CCONEX*** ERROR IN ',A6,'. IER = ',I8)
+ 340 format(/' ***CCONEX*** THE LAST CONNECTED COMPONENT WILL',
+ * ' HAVE THE DIAGONAL VERTICES.')
+ end
+c **********************************************************************
+ subroutine ANCCNX(n, mccnex, iccnex, mark, ncount)
+C-----------------------------------------------------------------------
+c
+c We put in ICCNEX the vertices marked in the component MCCNEX.
+C
+C-----------------------------------------------------------------------
+c include "NSIMPLIC"
+ dimension mark(n)
+C-----------------------------------------------------------------------
+C Laura C. Dutto - email: dutto@cerca.umontreal.ca - December 1993
+C-----------------------------------------------------------------------
+ ncount = 0
+ do i = 1, n
+ if( mark(i) .eq. mccnex) then
+ mark(i) = iccnex
+ ncount = ncount + 1
+ endif
+ enddo
+c
+ return
+ end
+c **********************************************************************
+ subroutine NEWCNX(n, mccnex, iccnex, index, kpw, mark)
+C-----------------------------------------------------------------------
+c
+c We put in ICCNEX the vertices marked in the component MCCNEX. We
+c modify also the vector KPW.
+C
+C-----------------------------------------------------------------------
+c include "NSIMPLIC"
+ dimension kpw(*), mark(n)
+C-----------------------------------------------------------------------
+C Laura C. Dutto - email: dutto@cerca.umontreal.ca - December 1993
+C-----------------------------------------------------------------------
+ do i = 1, n
+ if( mark(i) .eq. mccnex) then
+ mark(i) = iccnex
+ index = index + 1
+ kpw(index) = i
+ endif
+ enddo
+c
+ return
+ end
+c **********************************************************************
+ subroutine BLCCN1(n, nbloc, nblcmx, nsbloc, lpw, kpw, ia, ja,
+ * mark, mxccex, lccnex, mxptbl, iout, ier)
+C-----------------------------------------------------------------------
+c
+c This routine determines if the matrix given by the structure
+c IA et JA is irreductible. If not, it orders the unknowns such
+c that all the consecutive unknowns in KPW between NSBLOC(i-1)+1
+c and NSBLOC(i) belong to the ith component of the matrix.
+c
+c On entry:
+c --------
+c n = row and column dimension of the matrix
+c nblcmx = The size of NSBLOC is nblcmx + 1 (in fact, it starts at 0).
+c ia = integer array of length N+1 corresponding to the
+c pointer to the beginning of each row in JA (compressed
+c sparse row storage).
+c ja = integer array of length NNZERO (= IA(N+1)-IA(1)) corresponding
+c to the column indices of nonzero elements of the matrix,
+c stored rowwise.
+c mxccex = maximum number of connected components allowed by block.
+c mxptbl = maximum number of points (or unknowns) in each connected
+c component (mxptbl .le. n).
+c iout = impression parameter. If 0 < iout < 100, we print
+c comments and error messages on unit IOUT.
+c
+c Input/Output:
+c ------------
+c nbloc = number of connected components of the matrix. If the
+c matrix is not irreductible, nbloc > 1. We allow
+c nbloc > 1 on entry; in this case we calculate the
+c number of connected components in each previous one.
+c nsbloc = integer array of length NBLOC + 1 containing the pointers
+c to the first node of each component on the new ordering.
+c Normally, on entry you put: NBLOC = 1, NSBLOC(0) = 0,
+c NSBLOC(NBLOC) = N.
+c
+c On return:
+c ----------
+c lpw = integer array of length N corresponding to the
+c permutation vector (the row i goes to lpw(i)).
+c ier = integer. Error message. Normal return ier = 0.
+c
+c Work space:
+c ----------
+c kpw = integer vector of length MXPTBL*NBLOC necessary for parallel
+c computation.
+c mark = integer vector of length N
+c lccnex = integer vector of length (MXCCEX+1)*NBLOC necessary for parallel
+c computation.
+c
+C-----------------------------------------------------------------------
+C Laura C. Dutto - e-mail: dutto@cerca.umontreal.ca
+c Juillet 1992. Update: March 1994
+C-----------------------------------------------------------------------
+ dimension lpw(n), kpw(mxptbl*nbloc), ia(n+1), ja(*),
+ * lccnex((mxccex+1)*nbloc), nsbloc(0:nbloc), mark(n)
+ logical impr
+ character chsubr*6
+C-----------------------------------------------------------------------
+ ier = 0
+ impr = iout.gt.0.and.iout.le.99
+ isor = 0
+c
+ chsubr = 'CCONEX'
+ newblc = 0
+C$DOACROSS if(nbloc.gt.1), LOCAL(ibloc, ik0, ik1, ins0, ntb0,
+C$& nccnex, ilccnx, info, kpibl), REDUCTION(ier, newblc)
+ do 100 ibloc = 1,nbloc
+ ik0 = nsbloc(ibloc - 1)
+ ik1 = nsbloc(ibloc)
+ ntb0 = ia(ik0+1)
+ if(ia(ik1+1) - ntb0 .le. 1) go to 100
+ ntb0 = ntb0 - 1
+ ins0 = ik1 - ik0
+c........We need more memory place for KPW1 because of parallel computation
+ kpibl = (ibloc-1) * mxptbl
+ call numini( ins0, kpw(kpibl+1))
+ nccnex = mxccex
+ ilccnx = (mxccex+1) * (ibloc-1) + 1
+c.......................................................................
+c
+c Call to the main routine: CCONEX
+c
+c.......................................................................
+ call cconex(ins0, ik0, nccnex, lccnex(ilccnx), kpw(kpibl+1),
+ * ia(ik0+1), ja(ntb0+1), mark(ik0+1), isor, info)
+ ier = ier + info
+ if(info .ne. 0 .or. nccnex .lt. 1) go to 100
+c
+c........We add the new connected components on NEWBLC
+ newblc = newblc + nccnex
+c........We define LPW different from the identity only if there are more
+c........than one connected component in this block
+ if(nccnex .eq. 1) then
+ call numini(ins0, lpw(ik0+1))
+ else
+ call invlpw(ins0, kpw(kpibl+1), lpw(ik0+1))
+ endif
+ call iplusa(ins0, ik0, 1, lpw(ik0+1))
+ 100 continue
+c
+ if(ier .ne. 0) go to 218
+ if(newblc .eq. nbloc) go to 120
+ if(newblc .gt. nblcmx) go to 230
+c
+c.....We modify the number of blocks to indicate the number of connected
+c.....components in the matrix.
+ newblc = 0
+ nsfin = 0
+CDIR$ NEXT SCALAR
+ do ibloc = 1, nbloc
+ ilccnx = (mxccex+1) * (ibloc-1) + 1
+ nccnex = lccnex(ilccnx)
+ if(nccnex .gt. 1 .and. impr) write(iout,420) ibloc,nccnex
+ lcc0 = 0
+CDIR$ NEXT SCALAR
+ do icc = 1,nccnex
+ newblc = newblc + 1
+ nsb = lccnex(ilccnx+icc)
+c...........Be careful! In LCCNEX we have the cumulated number of vertices
+ nsbloc(newblc) = nsfin + nsb
+ if(nccnex .gt. 1 .and. impr) write(iout,425) icc,nsb-lcc0
+ lcc0 = nsb
+ enddo
+ nsfin = nsfin + nsb
+ enddo
+ nbloc = newblc
+c
+ 120 return
+c
+ 218 if(impr) write(iout,318) chsubr,ier
+ go to 120
+ 230 if(impr) write(iout,330) newblc,nblcmx
+ if(ier.eq.0) ier = -1
+ go to 120
+c
+ 318 format(' ***BLCCN1*** ERROR IN ',a6,'. IER = ',i8)
+ 330 format(' ***BLCCN1*** THE MEMORY SPACE ALLOWED FOR NSBLOC IS',
+ * ' NOT ENOUGH.'/13X,' NUMBER (NECESSARY) OF CONNECTED',
+ * ' COMPONENTS = ',I5/13X,' MAXIMAL NUMBER OF BLOCKS',14x,
+ * '= ',i5)
+ 420 FORMAT(' *** The block ',i3,' has ',i3,' strongly connected',
+ * ' components. The number of vertices by component is:')
+ 425 format(5x,'Component No.',i3,' - Number of vertices = ',i6)
+ end
+C***********************************************************************
+ SUBROUTINE CCNICOPY(N,IX,IY)
+C.......................................................................
+C We copy the vector IX on the vector IY
+C.......................................................................
+ DIMENSION IX(n),IY(n)
+C.......................................................................
+ IF(N.LE.0) RETURN
+C$DOACROSS if(n .gt. 250), local(i)
+ DO 10 I = 1,N
+ IY(I) = IX(I)
+ 10 CONTINUE
+C
+ RETURN
+ END
+c***********************************************************************
+ SUBROUTINE COMPOS(n, lpw0, lpw1)
+C-----------------------------------------------------------------------
+c
+c We take account of the original order of unknowns. We put the
+c final result on LPW0.
+c
+C-----------------------------------------------------------------------
+ DIMENSION lpw0(n), lpw1(n)
+C-----------------------------------------------------------------------
+c Laura C. Dutto - Mars 1994
+C-----------------------------------------------------------------------
+C$DOACROSS if(n .gt. 250), local(i0)
+ do i0 = 1, n
+ lpw0(i0) = lpw1(lpw0(i0))
+ enddo
+c
+ return
+ end
+C **********************************************************************
+ SUBROUTINE INVLPW(n, lpw, kpw)
+c.......................................................................
+c
+c KPW is the inverse of LPW
+c
+c.......................................................................
+ dimension lpw(n), kpw(n)
+c.......................................................................
+c Laura C. Dutto - Novembre 1993
+c.......................................................................
+C$DOACROSS if(n .gt. 200), local(i0, i1)
+ do i0 = 1, n
+ i1 = lpw(i0)
+ kpw(i1) = i0
+ enddo
+c
+ return
+ end
+C **********************************************************************
+ subroutine NUMINI(n, lpw)
+c.......................................................................
+ dimension lpw(n)
+c.......................................................................
+c
+c The vector LPW is initialized as the identity.
+c
+c.......................................................................
+c Laura C. Dutto - Novembre 1993
+c.......................................................................
+C$DOACROSS if(n .gt. 250), local(i)
+ do i=1,n
+ lpw(i) = i
+ enddo
+c
+ return
+ end
+C***********************************************************************
+ SUBROUTINE TBZERO(M,NMOT)
+C.......................................................................
+C We initialize to ZERO an integer vector of length NMOT.
+C.......................................................................
+ DIMENSION M(NMOT)
+C.......................................................................
+ IF(NMOT.le.0) return
+C$DOACROSS if(nmot.gt.500), LOCAL(i)
+ DO 1 I=1,NMOT
+ M(I)=0
+ 1 CONTINUE
+ RETURN
+ END
+C **********************************************************************
+ SUBROUTINE IPLUSA (n, nalpha, nbeta, ia)
+c.......................................................................
+C
+c We add NALPHA to each element of NBETA * IA:
+c
+c ia(i) = nalpha + nbeta * ia(i)
+c
+c.......................................................................
+ integer ia(n)
+c.......................................................................
+c Laura C. Dutto - February 1994
+c.......................................................................
+ if(n .le. 0) return
+c
+ nmax = 500
+ if(nalpha .eq. 0) then
+ if(nbeta .eq. 1) return
+ if(nbeta .eq. -1) then
+C$DOACROSS if(n .gt. nmax), local (i)
+ do i = 1, n
+ ia(i) = - ia(i)
+ enddo
+ else
+C$DOACROSS if(n .gt. nmax/2), local (i)
+ do i = 1, n
+ ia(i) = nbeta * ia(i)
+ enddo
+ endif
+ return
+ endif
+ if(nbeta .eq. 0) then
+C$DOACROSS if(n .gt. nmax), local (i)
+ do i = 1, n
+ ia(i) = nalpha
+ enddo
+ return
+ endif
+ if(nbeta .eq. -1) then
+C$DOACROSS if(n .gt. nmax/2), local (i)
+ do i = 1, n
+ ia(i) = nalpha - ia(i)
+ enddo
+ else if(nbeta .eq. 1) then
+C$DOACROSS if(n .gt. nmax/2), local (i)
+ do i = 1, n
+ ia(i) = nalpha + ia(i)
+ enddo
+ else
+C$DOACROSS if(n .gt. nmax/3), local (i)
+ do i = 1, n
+ ia(i) = nalpha + nbeta * ia(i)
+ enddo
+ endif
+c
+ return
+ end
diff --git a/ORDERINGS/color.f b/ORDERINGS/color.f
new file mode 100644
index 0000000..dcc5216
--- /dev/null
+++ b/ORDERINGS/color.f
@@ -0,0 +1,917 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c REORDERING ROUTINES -- COLORING BASED ROUTINES c
+c----------------------------------------------------------------------c
+c contents: c
+c---------- c
+c multic : greedy algorithm for multicoloring c
+c indset0 : greedy algorithm for independent set ordering c
+c indset1 : independent set ordering using minimal degree traversal c
+c indset2 : independent set ordering with local minimization c
+c indset3 : independent set ordering by vertex cover algorithm c
+c HeapSort, FixHeap, HeapInsert, interchange, MoveBack, FiHeapM, c
+c FixHeapM, HeapInsertM,indsetr,rndperm, are utility c
+c routines for sorting, generating random permutations, etc. c
+c----------------------------------------------------------------------c
+ subroutine multic (n,ja,ia,ncol,kolrs,il,iord,maxcol,ierr)
+ integer n, ja(*),ia(n+1),kolrs(n),iord(n),il(maxcol+1),ierr
+c-----------------------------------------------------------------------
+c multicoloring ordering -- greedy algorithm --
+c determines the coloring permutation and sets up
+c corresponding data structures for it.
+c-----------------------------------------------------------------------
+c on entry
+c --------
+c n = row and column dimention of matrix
+c ja = column indices of nonzero elements of matrix, stored rowwise.
+c ia = pointer to beginning of each row in ja.
+c maxcol= maximum number of colors allowed -- the size of il is
+c maxcol+1 at least. Note: the number of colors does not
+c exceed the maximum degree of each node +1.
+c iord = en entry iord gives the order of traversal of the nodes
+c in the multicoloring algorithm. If there is no preference
+c then set iord(j)=j for j=1,...,n
+c
+c on return
+c ---------
+c ncol = number of colours found
+c kolrs = integer array containing the color number assigned to each node
+c il = integer array containing the pointers to the
+c beginning of each color set. In the permuted matrix
+c the rows /columns il(kol) to il(kol+1)-1 have the same color.
+c iord = permutation array corresponding to the multicolor ordering.
+c row number i will become row nbumber iord(i) in permuted
+c matrix. (iord = destination permutation array).
+c ierr = integer. Error message. normal return ierr = 0. If ierr .eq.1
+c then the array il was overfilled.
+c
+c-----------------------------------------------------------------------
+c
+ integer kol, i, j, k, maxcol, mycol
+c
+ ierr = 0
+ do 1 j=1, n
+ kolrs(j) = 0
+ 1 continue
+ do 11 j=1, maxcol
+ il(j) = 0
+ 11 continue
+c
+ ncol = 0
+c
+c scan all nodes
+c
+ do 4 ii=1, n
+ i = iord(ii)
+c
+c look at adjacent nodes to determine colors already assigned
+c
+ mcol = 0
+ do 2 k=ia(i), ia(i+1)-1
+ j = ja(k)
+ icol = kolrs(j)
+ if (icol .ne. 0) then
+ mcol = max(mcol,icol)
+c
+c il used as temporary to record already assigned colors.
+c
+ il(icol) = 1
+ endif
+ 2 continue
+c
+c taken colors determined. scan il until a slot opens up.
+c
+ mycol = 1
+ 3 if (il(mycol) .eq. 1) then
+ mycol = mycol+1
+ if (mycol .gt. maxcol) goto 99
+ if (mycol .le. mcol) goto 3
+ endif
+c
+c reset il to zero for next nodes
+c
+ do 35 j=1, mcol
+ il(j) = 0
+ 35 continue
+c
+c assign color and update number of colors so far
+c
+ kolrs(i) = mycol
+ ncol = max(ncol,mycol)
+ 4 continue
+c
+c every node has now been colored. Count nodes of each color
+c
+ do 6 j=1, n
+ kol = kolrs(j)+1
+ il(kol) = il(kol)+1
+ 6 continue
+c
+c set pointers il
+c
+ il(1) = 1
+ do 7 j=1, ncol
+ il(j+1) = il(j)+il(j+1)
+ 7 continue
+c
+c set iord
+c
+ do 8 j=1, n
+ kol = kolrs(j)
+ iord(j) = il(kol)
+ il(kol) = il(kol)+1
+ 8 continue
+c
+c shift il back
+c
+ do 9 j=ncol,1,-1
+ il(j+1) = il(j)
+ 9 continue
+ il(1) = 1
+c
+ return
+ 99 ierr = 1
+ return
+c----end-of-multic------------------------------------------------------
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+
+ subroutine indset0 (n,ja,ia,nset,iord,riord,sym,iptr)
+ integer n, nset, ja(*),ia(*),riord(*),iord(*)
+ logical sym
+c----------------------------------------------------------------------
+c greedy algorithm for independent set ordering
+c----------------------------------------------------------------------
+c parameters:
+c ----------
+c n = row dimension of matrix
+c ja, ia = matrix pattern in CRS format
+c nset = (output) number of elements in the independent set
+c iord = permutation array corresponding to the independent set
+c ordering. Row number i will become row number iord(i) in
+c permuted matrix.
+c riord = reverse permutation array. Row number i in the permutated
+c matrix is row number riord(i) in original matrix.
+c----------------------------------------------------------------------
+c notes: works for CSR, MSR, and CSC formats but assumes that the
+c matrix has a symmetric structure.
+c----------------------------------------------------------------------
+c local variables
+c
+ integer j, k1, k2, nod, k, mat
+ do 1 j=1, n
+ iord(j) = 0
+ 1 continue
+ nummat = 1
+ if (.not. sym) nummat = 2
+c
+c iord used as a marker
+c
+ nset = 0
+ do 12 nod=1, n
+ if (iord(nod) .ne. 0) goto 12
+ nset = nset+1
+ iord(nod) = 1
+c
+c visit all neighbors of current nod
+c
+ ipos = 0
+ do 45 mat=1, nummat
+ do 4 k=ia(ipos+nod), ia(ipos+nod+1)-1
+ j = ja(k)
+ if (j .ne. nod) iord(j) = 2
+ 4 continue
+ ipos = iptr-1
+ 45 continue
+ 12 continue
+c
+c get permutation
+c
+ k1 = 0
+ k2 = nset
+ do 6 j=1,n
+ if (iord(j) .eq. 1) then
+ k1 = k1+1
+ k = k1
+ else
+ k2 = k2+1
+ k = k2
+ endif
+ riord(k) = j
+ iord(j) = k
+ 6 continue
+ return
+c----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine indset1 (n,ja,ia,nset,iord,riord,iw,sym,iptr)
+ integer n, nset, iptr, ja(*),ia(*),riord(*),iord(*),iw(*)
+ logical sym
+c----------------------------------------------------------------------
+c greedy algorithm for independent set ordering -- with intial
+c order of traversal given by that of min degree.
+c----------------------------------------------------------------------
+c parameters:
+c ----------
+c n = row dimension of matrix
+c ja, ia = matrix pattern in CRS format
+c nset = (output) number of elements in the independent set
+c iord = permutation array corresponding to the independent set
+c ordering. Row number i will become row number iord(i) in
+c permuted matrix.
+c riord = reverse permutation array. Row number i in the permutated
+c matrix is row number riord(i) in original matrix.
+c----------------------------------------------------------------------
+c notes: works for CSR, MSR, and CSC formats but assumes that the
+c matrix has a symmetric structure.
+c----------------------------------------------------------------------
+c local variables
+ integer j,k1,k2,nummat,nod,k,ipos
+c
+c nummat is the number of matrices to loop through (A in symmetric
+c pattern case (nummat=1) or A,and transp(A) otherwise (mummat=2)
+c
+ if (sym) then
+ nummat = 1
+ else
+ nummat = 2
+ endif
+ iptrm1 = iptr-1
+c
+c initialize arrays
+c
+ do 1 j=1,n
+ iord(j) = j
+ riord(j) = j
+ iw(j) = 0
+ 1 continue
+c
+c initialize degrees of all nodes
+c
+ ipos = 0
+ do 100 imat =1,nummat
+ do 15 j=1,n
+ iw(j) = iw(j) + ia(ipos+j+1)-ia(ipos+j)
+ 15 continue
+ ipos = iptrm1
+ 100 continue
+c
+c call heapsort -- sorts nodes in increasing degree.
+c
+ call HeapSort (iw,iord,riord,n,n)
+c
+c weights no longer needed -- use iw to store order of traversal.
+c
+ do 16 j=1, n
+ iw(n-j+1) = iord(j)
+ iord(j) = 0
+ 16 continue
+c
+c iord used as a marker
+c
+ nset = 0
+ do 12 ii = 1, n
+ nod = iw(ii)
+ if (iord(nod) .ne. 0) goto 12
+ nset = nset+1
+ iord(nod) = 1
+c
+c visit all neighbors of current nod
+c
+ ipos = 0
+ do 45 mat=1, nummat
+ do 4 k=ia(ipos+nod), ia(ipos+nod+1)-1
+ j = ja(k)
+ if (j .ne. nod) iord(j) = 2
+ 4 continue
+ ipos = iptrm1
+ 45 continue
+ 12 continue
+c
+c get permutation
+c
+ k1 = 0
+ k2 = nset
+ do 6 j=1,n
+ if (iord(j) .eq. 1) then
+ k1 = k1+1
+ k = k1
+ else
+ k2 = k2+1
+ k = k2
+ endif
+ riord(k) = j
+ iord(j) = k
+ 6 continue
+ return
+c----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine indset2(n,ja,ia,nset,iord,riord,iw,sym,iptr)
+ integer n,nset,iptr,ja(*),ia(*),riord(n),iord(n),iw(n)
+ logical sym
+c----------------------------------------------------------------------
+c greedy algorithm for independent set ordering -- local minimization
+c using heap strategy --
+c----------------------------------------------------------------------
+c This version for BOTH unsymmetric and symmetric patterns
+c----------------------------------------------------------------------
+c on entry
+c --------
+c n = row and column dimension of matrix
+c ja = column indices of nonzero elements of matrix,stored rowwise.
+c ia = pointer to beginning of each row in ja.
+c sym = logical indicating whether the matrix has a symmetric pattern.
+c If not the transpose must also be provided -- appended to the
+c ja, ia structure -- see description of iptr next.
+c iptr = in case the matrix has an unsymmetric pattern,the transpose
+c is assumed to be stored in the same arrays ia,ja. iptr is the
+c location in ia of the pointer to the first row of transp(A).
+c more generally, ia(iptr),...,ia(iptr+n) are the pointers to
+c the beginnings of rows 1, 2, ...., n+1 (row n+1 is fictitious)
+c of the transpose of A in the array ja. For example,when using
+c the msr format,one can write:
+c iptr = ja(n+1)
+c ipos = iptr+n+2 ! get the transpose of A:
+c call csrcsc (n,0,ipos,a,ja,ja,a,ja,ja(iptr)) ! and then:
+c call indset(n,ja,ja,nset,iord,riord,iwk,.false.,iptr)
+c
+c iw = work space of length n.
+c
+c on return:
+c----------
+c nset = integer. The number of unknowns in the independent set.
+c iord = permutation array corresponding to the new ordering. The
+c first nset unknowns correspond to the independent set.
+c riord = reverse permutation array.
+c----------------------------------------------------------------------
+c local variables --
+c
+ integer j,k1,k2,nummat,nod,k,ipos,i,last,lastlast,jold,jnew,
+ * jo,jn
+c
+c nummat is the number of matrices to loop through (A in symmetric
+c pattern case (nummat=1) or A,and transp(A) otherwise (mummat=2)
+c
+ if (sym) then
+ nummat = 1
+ else
+ nummat = 2
+ endif
+ iptrm1 = iptr-1
+c
+c initialize arrays
+c
+ do 1 j=1,n
+ iord(j) = j
+ riord(j) = j
+ iw(j) = 0
+ 1 continue
+c
+c initialize degrees of all nodes
+c
+ ipos = 0
+ do 100 imat =1,nummat
+ do 15 j=1,n
+ iw(j) = iw(j) + ia(ipos+j+1)-ia(ipos+j)
+ 15 continue
+ 100 ipos = iptrm1
+c
+c start by constructing a heap
+c
+ do 2 i=n/2,1,-1
+ j = i
+ call FixHeap (iw,iord,riord,j,j,n)
+ 2 continue
+c
+c main loop -- remove nodes one by one.
+c
+ last = n
+ nset = 0
+ 3 continue
+ lastlast = last
+ nod = iord(1)
+c
+c move first element to end
+c
+ call moveback (iw,iord,riord,last)
+ last = last -1
+ nset = nset + 1
+c
+c scan all neighbors of accepted node -- move them to back --
+c
+ ipos = 0
+ do 101 imat =1,nummat
+ do 5 k=ia(ipos+nod),ia(ipos+nod+1)-1
+ jold = ja(k)
+ jnew = riord(jold)
+ if (jold .eq. nod .or. jnew .gt. last) goto 5
+ iw(jnew) = -1
+ call HeapInsert (iw,iord,riord,jnew,ichild,jnew)
+ call moveback (iw,iord,riord,last)
+ last = last -1
+ 5 continue
+ ipos = iptrm1
+ 101 continue
+c
+c update the degree of each edge
+c
+ do 6 k=last+1,lastlast-1
+ jold = iord(k)
+c
+c scan the neighbors of current node
+c
+ ipos = 0
+ do 102 imat =1,nummat
+ do 61 i=ia(ipos+jold),ia(ipos+jold+1)-1
+ jo = ja(i)
+ jn = riord(jo)
+c
+c consider this node only if it has not been moved
+c
+ if (jn .gt. last) goto 61
+c update degree of this neighbor
+ iw(jn) = iw(jn)-1
+c and fix the heap accordingly
+ call HeapInsert (iw,iord,riord,jn,ichild,jn)
+ 61 continue
+ ipos = iptrm1
+ 102 continue
+ 6 continue
+c
+c stopping test -- end main "while"loop
+c
+ if (last .gt. 1) goto 3
+ nset = nset + last
+c
+c rescan all nodes one more time to determine the permutations
+c
+ k1 = 0
+ k2 = nset
+ do 7 j=n,1,-1
+ if (iw(j) .ge. 0) then
+ k1 = k1+1
+ k = k1
+ else
+ k2 = k2+1
+ k = k2
+ endif
+ riord(k) = iord(j)
+ 7 continue
+ do j=1,n
+ iord(riord(j)) = j
+ enddo
+ return
+c----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine indset3(n,ja,ia,nset,iord,riord,iw,sym,iptr)
+ integer n,nset,iptr,ja(*),ia(*),riord(n),iord(n),iw(n)
+ logical sym
+c----------------------------------------------------------------------
+c greedy algorithm for independent set ordering -- local minimization
+c using heap strategy -- VERTEX COVER ALGORITHM --
+c ASSUMES MSR FORMAT (no diagonal element) -- ADD A SWITCH FOR CSR --
+c----------------------------------------------------------------------
+c This version for BOTH unsymmetric and symmetric patterns
+c----------------------------------------------------------------------
+c on entry
+c --------
+c n = row and column dimension of matrix
+c ja = column indices of nonzero elements of matrix,stored rowwise.
+c ia = pointer to beginning of each row in ja.
+c sym = logical indicating whether the matrix has a symmetric pattern.
+c If not the transpose must also be provided -- appended to the
+c ja, ia structure -- see description of iptr next.
+c iptr = in case the matrix has an unsymmetric pattern,the transpose
+c is assumed to be stored in the same arrays ia,ja. iptr is the
+c location in ia of the pointer to the first row of transp(A).
+c more generally, ia(iptr),...,ia(iptr+n) are the pointers to
+c the beginnings of rows 1, 2, ...., n+1 (row n+1 is fictitious)
+c of the transpose of A in the array ja. For example,when using
+c the msr format,one can write:
+c iptr = ja(n+1)
+c ipos = iptr+n+2 ! get the transpose of A:
+c call csrcsc (n,0,ipos,a,ja,ja,a,ja,ja(iptr)) ! and then:
+c call indset(n,ja,ja,nset,iord,riord,iwk,.false.,iptr)
+c
+c iw = work space of length n.
+c
+c on return:
+c----------
+c nset = integer. The number of unknowns in the independent set.
+c iord = permutation array corresponding to the new ordering. The
+c first nset unknowns correspond to the independent set.
+c riord = reverse permutation array.
+c----------------------------------------------------------------------
+c local variables --
+c
+ integer j,nummat,nod,k,ipos,i,lastnset,jold,jnew
+c
+c nummat is the number of matrices to loop through (A in symmetric
+c pattern case (nummat=1) or A,and transp(A) otherwise (mummat=2)
+c
+ if (sym) then
+ nummat = 1
+ else
+ nummat = 2
+ endif
+ iptrm1 = iptr-1
+c
+c initialize arrays
+c
+ do 1 j=1,n
+ riord(j) = j
+ iord(j) = j
+ iw(j) = 0
+ 1 continue
+c
+c initialize degrees of all nodes
+c
+ nnz = 0
+ ipos = 0
+ do 100 imat =1,nummat
+ do 15 j=1,n
+ ideg = ia(ipos+j+1)-ia(ipos+j)
+ iw(j) = iw(j) + ideg
+ nnz = nnz + ideg
+ 15 continue
+ 100 ipos = iptrm1
+c
+c number of edges
+c
+ if (sym) then nnz = 2*nnz
+c
+c start by constructing a Max heap
+c
+ do 2 i=n/2,1,-1
+ j = i
+ call FixHeapM (iw,riord,iord,j,j,n)
+ 2 continue
+ nset = n
+c----------------------------------------------------------------------
+c main loop -- remove nodes one by one.
+c----------------------------------------------------------------------
+ 3 continue
+ lastnset = nset
+ nod = riord(1)
+c
+c move first element to end
+c
+ call movebackM (iw,riord,iord,nset)
+ nnz = nnz - iw(nset)
+ nset = nset -1
+c
+c scan all neighbors of accepted node --
+c
+ ipos = 0
+ do 101 imat =1,nummat
+ do 5 k=ia(ipos+nod),ia(ipos+nod+1)-1
+ jold = ja(k)
+ jnew = iord(jold)
+ if (jold .eq. nod .or. jnew .gt. nset) goto 5
+ iw(jnew) = iw(jnew) - 1
+ nnz = nnz-1
+ call FixHeapM (iw,riord,iord,jnew,jnew,nset)
+ 5 continue
+ ipos = iptrm1
+ 101 continue
+c
+ if (nnz .gt. 0) goto 3
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine HeapSort (a,ind,rind,n,ncut)
+ integer a(*),ind(n),rind(n),n, ncut
+c----------------------------------------------------------------------
+c integer version -- min heap sorts decreasinly.
+c----------------------------------------------------------------------
+c sorts inger keys in array a increasingly and permutes the companion
+c array ind rind accrodingly.
+c n = size of array
+c ncut = integer indicating when to cut the process.the process is
+c stopped after ncut outer steps of the heap-sort algorithm.
+c The first ncut values are sorted and they are the smallest
+c ncut values of the array.
+c----------------------------------------------------------------------
+c local variables
+c
+ integer i,last, j,jlast
+c
+c Heap sort algorithm ---
+c
+c build heap
+ do 1 i=n/2,1,-1
+ j = i
+ call FixHeap (a,ind,rind,j,j,n)
+ 1 continue
+c
+c done -- now remove keys one by one
+c
+ jlast = max(2,n-ncut+1)
+ do 2 last=n,jlast,-1
+ call moveback (a,ind,rind,last)
+ 2 continue
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine FixHeap (a,ind,rind,jkey,vacant,last)
+ integer a(*),ind(*),rind(*),jkey,vacant,last
+c----------------------------------------------------------------------
+c inserts a key (key and companion index) at the vacant position
+c in a (min) heap -
+c arguments
+c a(1:last) = real array
+c ind(1:last) = integer array -- permutation of initial data
+c rind(1:last) = integer array -- reverse permutation
+c jkey = position of key to be inserted. a(jkey)
+c will be inserted into the heap
+c vacant = vacant where a key is to be inserted
+c last = number of elements in the heap.
+c----------------------------------------------------------------------
+c local variables
+c
+ integer child,lchild,rchild,xkey
+ xkey = a(jkey)
+ ikey = ind(jkey)
+ lchild = 2*vacant
+ 1 continue
+ rchild = lchild+1
+ child = lchild
+ if (rchild .le. last .and. a(rchild) .lt. a(child))
+ * child = rchild
+ if (xkey .le. a(child) .or. child .gt. last) goto 2
+ a(vacant) = a(child)
+ ind(vacant) = ind(child)
+ rind(ind(vacant)) = vacant
+ vacant = child
+ lchild = 2*vacant
+ if (lchild .le. last) goto 1
+ 2 continue
+ a(vacant) = xkey
+ ind(vacant) = ikey
+ rind(ikey) = vacant
+ return
+c----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine HeapInsert (a,ind,rind,jkey,child,node)
+ integer a(*),ind(*),rind(*),jkey,child,node
+c----------------------------------------------------------------------
+c inserts a key to a heap from `node'. Checks values up
+c only -- i.e.,assumes that the subtree (if any) whose root
+c is node is such that the keys are all inferior to those
+c to ge inserted.
+c
+c child is where the key ended up.
+c----------------------------------------------------------------------
+c---- local variables
+ integer parent,xkey,ikey
+ xkey = a(jkey)
+ ikey = ind(jkey)
+c node = node + 1
+ a(node) = xkey
+ ind(node) = ikey
+ rind(ikey) = node
+ if (node .le. 1) return
+ child=node
+ 1 parent = child/2
+ if (a(parent) .le. a(child)) goto 2
+ call interchange(a,ind,rind,child,parent)
+ child = parent
+ if (child .gt. 1) goto 1
+ 2 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine interchange (a,ind,rind,i,j)
+ integer a(*),ind(*),rind(*),i,j
+ integer tmp,itmp
+ tmp = a(i)
+ itmp = ind(i)
+c
+ a(i) = a(j)
+ ind(i) = ind(j)
+c
+ a(j) = tmp
+ ind(j) = itmp
+ rind(ind(j)) = j
+ rind(ind(i)) = i
+c
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine moveback (a,ind,rind,last)
+ integer a(*),ind(*),rind(*),last
+c moves the front key to the back and inserts the last
+c one back in from the top --
+c
+c local variables
+c
+ integer vacant,xmin
+c
+ vacant = 1
+ xmin = a(vacant)
+ imin = ind(vacant)
+ call FixHeap(a,ind,rind,last,vacant,last-1)
+ a(last) = xmin
+ ind(last) = imin
+ rind(ind(last)) = last
+c
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine FixHeapM (a,ind,rind,jkey,vacant,last)
+ integer a(*),ind(*),rind(*),jkey,vacant,last
+c----
+c inserts a key (key and companion index) at the vacant position
+c in a heap - THIS IS A MAX HEAP VERSION
+c arguments
+c a(1:last) = real array
+c ind(1:last) = integer array -- permutation of initial data
+c rind(1:last) = integer array -- reverse permutation
+c jkey = position of key to be inserted. a(jkey)
+c will be inserted into the heap
+c vacant = vacant where a key is to be inserted
+c last = number of elements in the heap.
+c----
+c local variables
+c
+ integer child,lchild,rchild,xkey
+ xkey = a(jkey)
+ ikey = ind(jkey)
+ lchild = 2*vacant
+ 1 continue
+ rchild = lchild+1
+ child = lchild
+ if (rchild .le. last .and. a(rchild) .gt. a(child))
+ * child = rchild
+ if (xkey .ge. a(child) .or. child .gt. last) goto 2
+ a(vacant) = a(child)
+ ind(vacant) = ind(child)
+ rind(ind(vacant)) = vacant
+ vacant = child
+ lchild = 2*vacant
+ if (lchild .le. last) goto 1
+ 2 continue
+ a(vacant) = xkey
+ ind(vacant) = ikey
+ rind(ikey) = vacant
+ return
+ end
+c
+ subroutine HeapInsertM (a,ind,rind,jkey,child,node)
+ integer a(*),ind(*),rind(*),jkey,child,node
+c----------------------------------------------------------------------
+c inserts a key to a heap from `node'. Checks values up
+c only -- i.e.,assumes that the subtree (if any) whose root
+c is node is such that the keys are all inferior to those
+c to ge inserted.
+c
+c child is where the key ended up.
+c----------------------------------------------------------------------
+c---- local variables
+ integer parent,xkey,ikey
+ xkey = a(jkey)
+ ikey = ind(jkey)
+c node = node + 1
+ a(node) = xkey
+ ind(node) = ikey
+ rind(ikey) = node
+ if (node .le. 1) return
+ child=node
+ 1 parent = child/2
+ if (a(parent) .ge. a(child)) goto 2
+ call interchange(a,ind,rind,child,parent)
+ child = parent
+ if (child .gt. 1) goto 1
+ 2 continue
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine movebackM (a,ind,rind,last)
+ integer a(*),ind(*),rind(*),last
+c----------------------------------------------------------------------
+c moves the front key to the back and inserts the last
+c one back in from the top -- MAX HEAP VERSION
+c----------------------------------------------------------------------
+c
+c local variables
+c
+ integer vacant,xmin
+c
+ vacant = 1
+ xmin = a(vacant)
+ imin = ind(vacant)
+ call FixHeapM(a,ind,rind,last,vacant,last-1)
+ a(last) = xmin
+ ind(last) = imin
+ rind(ind(last)) = last
+c----------------------------------------------------------------------
+ return
+ end
+c----------------------------------------------------------------------
+ subroutine indsetr (n,ja,ia,nset,iord,riord,sym,iptr)
+ integer n, nset, ja(*),ia(*),riord(*),iord(*)
+ logical sym
+c----------------------------------------------------------------------
+c greedy algorithm for independent set ordering -- RANDOM TRAVERSAL --
+c----------------------------------------------------------------------
+c parameters:
+c ----------
+c n = row dimension of matrix
+c ja, ia = matrix pattern in CRS format
+c nset = (output) number of elements in the independent set
+c iord = permutation array corresponding to the independent set
+c ordering. Row number i will become row number iord(i) in
+c permuted matrix.
+c riord = reverse permutation array. Row number i in the permutated
+c matrix is row number riord(i) in original matrix.
+c----------------------------------------------------------------------
+c notes: works for CSR, MSR, and CSC formats but assumes that the
+c matrix has a symmetric structure.
+c----------------------------------------------------------------------
+c local variables
+c
+ integer j, k1, k2, nod, k, mat
+ do 1 j=1, n
+ iord(j) = 0
+ 1 continue
+c
+c generate random permutation
+c
+ iseed = 0
+ call rndperm(n, riord, iseed)
+ write (8,'(10i6)') (riord(j),j=1,n)
+c
+ nummat = 1
+ if (.not. sym) nummat = 2
+c
+c iord used as a marker
+c
+ nset = 0
+ do 12 ii=1, n
+ nod = riord(ii)
+ if (iord(nod) .ne. 0) goto 12
+ nset = nset+1
+ iord(nod) = 1
+c
+c visit all neighbors of current nod
+c
+ ipos = 0
+ do 45 mat=1, nummat
+ do 4 k=ia(ipos+nod), ia(ipos+nod+1)-1
+ j = ja(k)
+ if (j .ne. nod) iord(j) = 2
+ 4 continue
+ ipos = iptr-1
+ 45 continue
+ 12 continue
+c
+c get permutation
+c
+ k1 = 0
+ k2 = nset
+ do 6 j=1,n
+ if (iord(j) .eq. 1) then
+ k1 = k1+1
+ k = k1
+ else
+ k2 = k2+1
+ k = k2
+ endif
+ riord(k) = j
+ iord(j) = k
+ 6 continue
+ return
+c----------------------------------------------------------------------
+ end
+c----------------------------------------------------------------------
+ subroutine rndperm(n,iord,iseed)
+ integer n, iseed, iord(n)
+c----------------------------------------------------------------------
+c this subroutine will generate a pseudo random permutation of the
+c n integers 1,2, ...,n.
+c iseed is the initial seed. any integer.
+c----------------------------------------------------------------------
+c local
+c
+ integer i, j, itmp
+c----------------------------------------------------------------------
+ do j=1, n
+ iord(j) = j
+ enddo
+c
+ do i=1, n
+ j = mod(irand(0),n) + 1
+ itmp = iord(i)
+ iord(i) = iord(j)
+ iord(j) = itmp
+ enddo
+c----------------------------------------------------------------------
+ return
+c----------------------------------------------------------------------
+ end
diff --git a/ORDERINGS/dsepart.f b/ORDERINGS/dsepart.f
new file mode 100644
index 0000000..72306c4
--- /dev/null
+++ b/ORDERINGS/dsepart.f
@@ -0,0 +1,980 @@
+c----------------------------------------------------------------------c
+c S P A R S K I T c
+c----------------------------------------------------------------------c
+c REORDERING ROUTINES -- LEVEL SET BASED ROUTINES c
+c----------------------------------------------------------------------c
+c dblstr : doubled stripe partitioner
+c rdis : recursive dissection partitioner
+c dse2way : distributed site expansion usuing sites from dblstr
+c dse : distributed site expansion usuing sites from rdis
+c------------- utility routines -----------------------------------------
+c BFS : Breadth-First search traversal algorithm
+c add_lvst : routine to add a level -- used by BFS
+c stripes : finds the level set structure
+c stripes0 : finds a trivial one-way partitioning from level-sets
+c perphn : finds a pseudo-peripheral node and performs a BFS from it.
+c mapper4 : routine used by dse and dse2way to do center expansion
+c get_domns: routine to find subdomaine from linked lists found by
+c mapper4.
+c add_lk : routine to add entry to linked list -- used by mapper4.
+c find_ctr : routine to locate an approximate center of a subgraph.
+c rversp : routine to reverse a given permutation (e.g., for RCMK)
+c maskdeg : integer function to compute the `masked' of a node
+c-----------------------------------------------------------------------
+ subroutine dblstr(n,ja,ia,ip1,ip2,nfirst,riord,ndom,map,mapptr,
+ * mask,levels,iwk)
+ implicit none
+ integer ndom,ja(*),ia(*),ip1,ip2,nfirst,riord(*),map(*),mapptr(*),
+ * mask(*),levels(*),iwk(*),nextdom
+c-----------------------------------------------------------------------
+c this routine does a two-way partitioning of a graph using
+c level sets recursively. First a coarse set is found by a
+c simple cuthill-mc Kee type algorithm. Them each of the large
+c domains is further partitioned into subsets using the same
+c technique. The ip1 and ip2 parameters indicate the desired number
+c number of partitions 'in each direction'. So the total number of
+c partitions on return ought to be equal (or close) to ip1*ip2
+c----------------------parameters----------------------------------------
+c on entry:
+c---------
+c n = row dimension of matrix == number of vertices in graph
+c ja, ia = pattern of matrix in CSR format (the ja,ia arrays of csr data
+c structure)
+c ip1 = integer indicating the number of large partitions ('number of
+c paritions in first direction')
+c ip2 = integer indicating the number of smaller partitions, per
+c large partition, ('number of partitions in second direction')
+c nfirst = number of nodes in the first level that is input in riord
+c riord = (also an ouput argument). on entry riord contains the labels
+c of the nfirst nodes that constitute the first level.
+c on return:
+c-----------
+c ndom = total number of partitions found
+c map = list of nodes listed partition by partition from partition 1
+c to paritition ndom.
+c mapptr = pointer array for map. All nodes from position
+c k1=mapptr(idom),to position k2=mapptr(idom+1)-1 in map belong
+c to partition idom.
+c work arrays:
+c-------------
+c mask = array of length n, used to hold the partition number of each
+c node for the first (large) partitioning.
+c mask is also used as a marker of visited nodes.
+c levels = integer array of length .le. n used to hold the pointer
+c arrays for the various level structures obtained from BFS.
+c
+c-----------------------------------------------------------------------
+ integer n, j,idom,kdom,jdom,maskval,k,nlev,init,ndp1,numnod
+ maskval = 1
+ do j=1, n
+ mask(j) = maskval
+ enddo
+ iwk(1) = 0
+ call BFS(n,ja,ia,nfirst,iwk,mask,maskval,riord,levels,nlev)
+c
+c init = riord(1)
+c call perphn (ja,ia,mask,maskval,init,nlev,riord,levels)
+ call stripes (nlev,riord,levels,ip1,map,mapptr,ndom)
+c-----------------------------------------------------------------------
+ if (ip2 .eq. 1) return
+ ndp1 = ndom+1
+c
+c pack info into array iwk
+c
+ do j = 1, ndom+1
+ iwk(j) = ndp1+mapptr(j)
+ enddo
+ do j=1, mapptr(ndom+1)-1
+ iwk(ndp1+j) = map(j)
+ enddo
+ do idom=1, ndom
+ j = iwk(idom)
+ numnod = iwk(idom+1) - iwk(idom)
+ init = iwk(j)
+ do k=j, iwk(idom+1)-1
+ enddo
+ enddo
+
+ do idom=1, ndom
+ do k=mapptr(idom),mapptr(idom+1)-1
+ mask(map(k)) = idom
+ enddo
+ enddo
+ nextdom = 1
+c
+c jdom = counter for total number of (small) subdomains
+c
+ jdom = 1
+ mapptr(jdom) = 1
+c-----------------------------------------------------------------------
+ do idom =1, ndom
+ maskval = idom
+ nfirst = 1
+ numnod = iwk(idom+1) - iwk(idom)
+ j = iwk(idom)
+ init = iwk(j)
+ nextdom = mapptr(jdom)
+c note: old version uses iperm array
+ call perphn(numnod,ja,ia,init,mask,maskval,
+ * nlev,riord,levels)
+c
+ call stripes (nlev,riord,levels,ip2,map(nextdom),
+ * mapptr(jdom),kdom)
+c
+ mapptr(jdom) = nextdom
+ do j = jdom,jdom+kdom-1
+ mapptr(j+1) = nextdom + mapptr(j+1)-1
+ enddo
+ jdom = jdom + kdom
+ enddo
+c
+ ndom = jdom - 1
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine rdis(n,ja,ia,ndom,map,mapptr,mask,levels,size,iptr)
+ implicit none
+ integer n,ja(*),ia(*),ndom,map(*),mapptr(*),mask(*),levels(*),
+ * size(ndom),iptr(ndom)
+c-----------------------------------------------------------------------
+c recursive dissection algorithm for partitioning.
+c initial graph is cut in two - then each time, the largest set
+c is cut in two until we reach desired number of domains.
+c-----------------------------------------------------------------------
+c input
+c n, ja, ia = graph
+c ndom = desired number of subgraphs
+c output
+c ------
+c map, mapptr = pointer array data structure for domains.
+c if k1 = mapptr(i), k2=mapptr(i+1)-1 then
+c map(k1:k2) = points in domain number i
+c work arrays:
+c -------------
+c mask(1:n) integer
+c levels(1:n) integer
+c size(1:ndom) integer
+c iptr(1:ndom) integer
+c-----------------------------------------------------------------------
+ integer idom,maskval,k,nlev,init,nextsiz,wantsiz,lev,ko,
+ * maxsiz,j,nextdom
+c-----------------------------------------------------------------------
+ idom = 1
+c-----------------------------------------------------------------------
+c size(i) = size of domnain i
+c iptr(i) = index of first element of domain i
+c-----------------------------------------------------------------------
+ size(idom) = n
+ iptr(idom) = 1
+ do j=1, n
+ mask(j) = 1
+ enddo
+c
+c domain loop
+c
+ 1 continue
+c
+c select domain with largest size
+c
+ maxsiz = 0
+ do j=1, idom
+ if (size(j) .gt. maxsiz) then
+ maxsiz = size(j)
+ nextdom = j
+ endif
+ enddo
+c
+c do a Prphn/ BFS on nextdom
+c
+ maskval = nextdom
+ init = iptr(nextdom)
+ call perphn(n,ja,ia,init,mask,maskval,nlev,map,levels)
+c
+c determine next subdomain
+c
+ nextsiz = 0
+ wantsiz = maxsiz/2
+ idom = idom+1
+ lev = nlev
+ do while (nextsiz .lt. wantsiz)
+ do k = levels(lev), levels(lev+1)-1
+ mask(map(k)) = idom
+ enddo
+ nextsiz = nextsiz + levels(lev+1) - levels(lev)
+ lev = lev-1
+ enddo
+c
+ size(nextdom) = size(nextdom) - nextsiz
+ size(idom) = nextsiz
+c
+c new initial point = last point of previous domain
+c
+ iptr(idom) = map(levels(nlev+1)-1)
+c iptr(idom) = map(levels(lev)+1)
+c iptr(idom) = 1
+c
+c alternative
+c lev = 1
+c do while (nextsiz .lt. wantsiz)
+c do k = levels(lev), levels(lev+1)-1
+c mask(map(k)) = idom
+c enddo
+c nextsiz = nextsiz + levels(lev+1) - levels(lev)
+c lev = lev+1
+c enddo
+c
+c set size of new domain and adjust previous one
+c
+c size(idom) = nextsiz
+c size(nextdom) = size(nextdom) - nextsiz
+c iptr(idom) = iptr(nextdom)
+c iptr(nextdom) = map(levels(lev))
+
+ if (idom .lt. ndom) goto 1
+c
+c domains found -- build data structure
+c
+ mapptr(1) = 1
+ do idom=1, ndom
+ mapptr(idom+1) = mapptr(idom) + size(idom)
+ enddo
+ do k=1, n
+ idom = mask(k)
+ ko = mapptr(idom)
+ map(ko) = k
+ mapptr(idom) = ko+1
+ enddo
+c
+c reset pointers
+c
+ do j = ndom,1,-1
+ mapptr(j+1) = mapptr(j)
+ enddo
+ mapptr(1) = 1
+c
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine dse2way(n,ja,ia,ip1,ip2,nfirst,riord,ndom,dom,idom,
+ * mask,jwk,link)
+c-----------------------------------------------------------------------
+c uses centers obtained from dblstr partition to get new partition
+c-----------------------------------------------------------------------
+c input: n, ja, ia = matrix
+c nfirst = number of first points
+c riord = riord(1:nfirst) initial points
+c output
+c ndom = number of domains
+c dom, idom = pointer array structure for domains.
+c mask , jwk, link = work arrays,
+c-----------------------------------------------------------------------
+ implicit none
+ integer n, ja(*), ia(*), ip1, ip2, nfirst, riord(*), dom(*),
+ * idom(*), mask(*), jwk(*),ndom,link(*)
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer i, mid,nsiz, maskval,init, outer, nouter, k
+ call dblstr(n,ja,ia,ip1,ip2,nfirst,riord,ndom,dom,idom,mask,
+ * link,jwk)
+c
+ nouter = 3
+c-----------------------------------------------------------------------
+
+ do outer =1, nouter
+c
+c set masks
+c
+ do i=1, ndom
+ do k=idom(i),idom(i+1)-1
+ mask(dom(k)) = i
+ enddo
+ enddo
+c
+c get centers
+c
+ do i =1, ndom
+ nsiz = idom(i+1) - idom(i)
+ init = dom(idom(i))
+ maskval = i
+c
+c use link for local riord -- jwk for other arrays --
+c
+ call find_ctr(n,nsiz,ja,ia,init,mask,maskval,link,
+ * jwk,mid,jwk(nsiz+1))
+ riord(i) = mid
+ enddo
+c
+c do level-set expansion from centers -- save previous diameter
+c
+ call mapper4(n,ja,ia,ndom,riord,jwk,mask,link)
+ call get_domns2(ndom,riord,link,jwk,dom,idom)
+c-----------------------------------------------------------------------
+ enddo
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine dse(n,ja,ia,ndom,riord,dom,idom,mask,jwk,link)
+ implicit none
+ integer n, ja(*), ia(*), ndom, riord(*), dom(*),
+ * idom(*), mask(*), jwk(*),link(*)
+c-----------------------------------------------------------------------
+c uses centers produced from rdis to get a new partitioning --
+c see calling sequence in rdis..
+c-----------------------------------------------------------------------
+c local variables
+ integer i, mid, nsiz, maskval,init, outer, nouter, k
+c-----------------------------------------------------------------------
+ nouter = 3
+c
+ call rdis(n,ja,ia,ndom,dom,idom,mask,link,jwk,jwk(ndom+1))
+c
+c initial points =
+c
+ do outer =1, nouter
+c
+c set masks
+c
+ do i=1, ndom
+ do k=idom(i),idom(i+1)-1
+ mask(dom(k)) = i
+ enddo
+ enddo
+c
+c get centers
+c
+ do i =1, ndom
+ nsiz = idom(i+1) - idom(i)
+ init = dom(idom(i))
+ maskval = i
+c
+c use link for local riord -- jwk for other arrays --
+c
+
+ call find_ctr(n,nsiz,ja,ia,init,mask,maskval,link,
+ * jwk,mid,jwk(nsiz+1))
+ riord(i) = mid
+ enddo
+c
+c do level-set expansion from centers -- save previous diameter
+c
+ call mapper4(n,ja,ia,ndom,riord,jwk,mask,link)
+ call get_domns2(ndom,riord,link,jwk,dom,idom)
+c-----------------------------------------------------------------------
+ enddo
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine BFS(n,ja,ia,nfirst,iperm,mask,maskval,riord,levels,
+ * nlev)
+ implicit none
+ integer n,ja(*),ia(*),nfirst,iperm(n),mask(n),riord(*),levels(*),
+ * nlev,maskval
+c-----------------------------------------------------------------------
+c finds the level-structure (breadth-first-search or CMK) ordering for a
+c given sparse matrix. Uses add_lvst. Allows an set of nodes to be
+c the initial level (instead of just one node).
+c-------------------------parameters------------------------------------
+c on entry:
+c---------
+c n = number of nodes in the graph
+c ja, ia = pattern of matrix in CSR format (the ja,ia arrays of csr data
+c structure)
+c nfirst = number of nodes in the first level that is input in riord
+c iperm = integer array indicating in which order to traverse the graph
+c in order to generate all connected components.
+c if iperm(1) .eq. 0 on entry then BFS will traverse the nodes
+c in the order 1,2,...,n.
+c
+c riord = (also an ouput argument). On entry riord contains the labels
+c of the nfirst nodes that constitute the first level.
+c
+c mask = array used to indicate whether or not a node should be
+c condidered in the graph. see maskval.
+c mask is also used as a marker of visited nodes.
+c
+c maskval= consider node i only when: mask(i) .eq. maskval
+c maskval must be .gt. 0.
+c thus, to consider all nodes, take mask(1:n) = 1.
+c maskval=1 (for example)
+c
+c on return
+c ---------
+c mask = on return mask is restored to its initial state.
+c riord = `reverse permutation array'. Contains the labels of the nodes
+c constituting all the levels found, from the first level to
+c the last.
+c levels = pointer array for the level structure. If lev is a level
+c number, and k1=levels(lev),k2=levels(lev+1)-1, then
+c all the nodes of level number lev are:
+c riord(k1),riord(k1+1),...,riord(k2)
+c nlev = number of levels found
+c-----------------------------------------------------------------------
+c
+ integer j, ii, nod, istart, iend
+ logical permut
+ permut = (iperm(1) .ne. 0)
+c
+c start pointer structure to levels
+c
+ nlev = 0
+c
+c previous end
+c
+ istart = 0
+ ii = 0
+c
+c current end
+c
+ iend = nfirst
+c
+c intialize masks to zero -- except nodes of first level --
+c
+ do 12 j=1, nfirst
+ mask(riord(j)) = 0
+ 12 continue
+c-----------------------------------------------------------------------
+ 13 continue
+c
+ 1 nlev = nlev+1
+ levels(nlev) = istart + 1
+ call add_lvst (istart,iend,nlev,riord,ja,ia,mask,maskval)
+ if (istart .lt. iend) goto 1
+ 2 ii = ii+1
+ if (ii .le. n) then
+ nod = ii
+ if (permut) nod = iperm(nod)
+ if (mask(nod) .eq. maskval) then
+c
+c start a new level
+c
+ istart = iend
+ iend = iend+1
+ riord(iend) = nod
+ mask(nod) = 0
+ goto 1
+ else
+ goto 2
+ endif
+ endif
+c-----------------------------------------------------------------------
+ 3 levels(nlev+1) = iend+1
+ do j=1, iend
+ mask(riord(j)) = maskval
+ enddo
+c-----------------------------------------------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine add_lvst(istart,iend,nlev,riord,ja,ia,mask,maskval)
+ integer nlev, nod, riord(*), ja(*), ia(*), mask(*)
+c-------------------------------------------------------------
+c adds one level set to the previous sets..
+c span all nodes of previous mask
+c-------------------------------------------------------------
+ nod = iend
+ do 25 ir = istart+1,iend
+ i = riord(ir)
+ do 24 k=ia(i),ia(i+1)-1
+ j = ja(k)
+ if (mask(j) .eq. maskval) then
+ nod = nod+1
+ mask(j) = 0
+ riord(nod) = j
+ endif
+ 24 continue
+ 25 continue
+ istart = iend
+ iend = nod
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine stripes (nlev,riord,levels,ip,map,mapptr,ndom)
+ implicit none
+ integer nlev,riord(*),levels(nlev+1),ip,map(*),
+ * mapptr(*), ndom
+c-----------------------------------------------------------------------
+c this is a post processor to BFS. stripes uses the output of BFS to
+c find a decomposition of the adjacency graph by stripes. It fills
+c the stripes level by level until a number of nodes .gt. ip is
+c is reached.
+c---------------------------parameters-----------------------------------
+c on entry:
+c --------
+c nlev = number of levels as found by BFS
+c riord = reverse permutation array produced by BFS --
+c levels = pointer array for the level structure as computed by BFS. If
+c lev is a level number, and k1=levels(lev),k2=levels(lev+1)-1,
+c then all the nodes of level number lev are:
+c riord(k1),riord(k1+1),...,riord(k2)
+c ip = number of desired partitions (subdomains) of about equal size.
+c
+c on return
+c ---------
+c ndom = number of subgraphs (subdomains) found
+c map = node per processor list. The nodes are listed contiguously
+c from proc 1 to nproc = mpx*mpy.
+c mapptr = pointer array for array map. list for proc. i starts at
+c mapptr(i) and ends at mapptr(i+1)-1 in array map.
+c-----------------------------------------------------------------------
+c local variables.
+c
+ integer ib,ktr,ilev,k,nsiz,psiz
+ ndom = 1
+ ib = 1
+c to add: if (ip .le. 1) then ...
+ nsiz = levels(nlev+1) - levels(1)
+ psiz = (nsiz-ib)/max(1,(ip - ndom + 1)) + 1
+ mapptr(ndom) = ib
+ ktr = 0
+ do 10 ilev = 1, nlev
+c
+c add all nodes of this level to domain
+c
+ do 3 k=levels(ilev), levels(ilev+1)-1
+ map(ib) = riord(k)
+ ib = ib+1
+ ktr = ktr + 1
+ if (ktr .ge. psiz .or. k .ge. nsiz) then
+ ndom = ndom + 1
+ mapptr(ndom) = ib
+ psiz = (nsiz-ib)/max(1,(ip - ndom + 1)) + 1
+ ktr = 0
+ endif
+c
+ 3 continue
+ 10 continue
+ ndom = ndom-1
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine stripes0 (ip,nlev,il,ndom,iptr)
+ integer ip, nlev, il(*), ndom, iptr(*)
+c-----------------------------------------------------------------------
+c This routine is a simple level-set partitioner. It scans
+c the level-sets as produced by BFS from one to nlev.
+c each time the number of nodes in the accumulated set of
+c levels traversed exceeds the parameter ip, this set defines
+c a new subgraph.
+c-------------------------parameter-list---------------------------------
+c on entry:
+c --------
+c ip = desired number of nodes per subgraph.
+c nlev = number of levels found as output by BFS
+c il = integer array containing the pointer array for
+c the level data structure as output by BFS.
+c thus il(lev+1) - il(lev) = the number of
+c nodes that constitute the level numbe lev.
+c on return
+c ---------
+c ndom = number of sungraphs found
+c iptr = pointer array for the sugraph data structure.
+c thus, iptr(idom) points to the first level that
+c consistutes the subgraph number idom, in the
+c level data structure.
+c-----------------------------------------------------------------------
+ ktr = 0
+ iband = 1
+ iptr(iband) = 1
+c-----------------------------------------------------------------------
+
+ do 10 ilev = 1, nlev
+ ktr = ktr + il(ilev+1) - il(ilev)
+ if (ktr .gt. ip) then
+ iband = iband+1
+ iptr(iband) = ilev+1
+ ktr = 0
+ endif
+c
+ 10 continue
+c-----------returning --------------------
+ iptr(iband) = nlev + 1
+ ndom = iband-1
+ return
+c-----------------------------------------------------------------------
+c-----end-of-stripes0---------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ integer function maskdeg (ja,ia,nod,mask,maskval)
+ implicit none
+ integer ja(*),ia(*),nod,mask(*),maskval
+c-----------------------------------------------------------------------
+ integer deg, k
+ deg = 0
+ do k =ia(nod),ia(nod+1)-1
+ if (mask(ja(k)) .eq. maskval) deg = deg+1
+ enddo
+ maskdeg = deg
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine perphn(n,ja,ia,init,mask,maskval,nlev,riord,levels)
+ implicit none
+ integer n,ja(*),ia(*),init,mask(*),maskval,
+ * nlev,riord(*),levels(*)
+c-----------------------------------------------------------------------
+c finds a peripheral node and does a BFS search from it.
+c-----------------------------------------------------------------------
+c see routine dblstr for description of parameters
+c input:
+c-------
+c ja, ia = list pointer array for the adjacency graph
+c mask = array used for masking nodes -- see maskval
+c maskval = value to be checked against for determing whether or
+c not a node is masked. If mask(k) .ne. maskval then
+c node k is not considered.
+c init = init node in the pseudo-peripheral node algorithm.
+c
+c output:
+c-------
+c init = actual pseudo-peripherial node found.
+c nlev = number of levels in the final BFS traversal.
+c riord =
+c levels =
+c-----------------------------------------------------------------------
+ integer j,nlevp,deg,nfirst,mindeg,nod,maskdeg
+ integer iperm(1)
+ nlevp = 0
+ 1 continue
+ riord(1) = init
+ nfirst = 1
+ iperm(1) = 0
+c
+ call BFS(n,ja,ia,nfirst,iperm,mask,maskval,riord,levels,nlev)
+ if (nlev .gt. nlevp) then
+ mindeg = n+1
+ do j=levels(nlev),levels(nlev+1)-1
+ nod = riord(j)
+ deg = maskdeg(ja,ia,nod,mask,maskval)
+ if (deg .lt. mindeg) then
+ init = nod
+ mindeg = deg
+ endif
+ enddo
+ nlevp = nlev
+ goto 1
+ endif
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine mapper4 (n,ja,ia,ndom,nodes,levst,marker,link)
+ implicit none
+ integer n,ndom,ja(*),ia(*),marker(n),levst(2*ndom),
+ * nodes(*),link(*)
+c-----------------------------------------------------------------------
+c finds domains given ndom centers -- by doing a level set expansion
+c-----------------------------------------------------------------------
+c on entry:
+c ---------
+c n = dimension of matrix
+c ja, ia = adajacency list of matrix (CSR format without values) --
+c ndom = number of subdomains (nr output by coarsen)
+c nodes = array of size at least n. On input the first ndom entries
+c of nodes should contain the labels of the centers of the
+c ndom domains from which to do the expansions.
+c
+c on return
+c ---------
+c link = linked list array for the ndom domains.
+c nodes = contains the list of nodes of the domain corresponding to
+c link. (nodes(i) and link(i) are related to the same node).
+c
+c levst = levst(j) points to beginning of subdomain j in link.
+c
+c work arrays:
+c -----------
+c levst : work array of length 2*ndom -- contains the beginning and
+c end of current level in link.
+c beginning of last level in link for each processor.
+c also ends in levst(ndom+i)
+c marker : work array of length n.
+c
+c Notes on implementation:
+c -----------------------
+c for j .le. ndom link(j) is <0 and indicates the end of the
+c linked list. The most recent element added to the linked
+c list is added at the end of the list (traversal=backward)
+c For j .le. ndom, the value of -link(j) is the size of
+c subdomain j.
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer mindom,j,lkend,nod,nodprev,idom,next,i,kk,ii,ilast,nstuck,
+ * isiz, nsize
+c
+c initilaize nodes and link arrays
+c
+ do 10 j=1, n
+ marker(j) = 0
+ 10 continue
+c
+ do 11 j=1, ndom
+ link(j) = -1
+ marker(nodes(j)) = j
+ levst(j) = j
+ levst(ndom+j) = j
+ 11 continue
+c
+c ii = next untouched node for restarting new connected component.
+c
+ ii = 0
+c
+ lkend = ndom
+ nod = ndom
+ nstuck = 0
+c-----------------------------------------------------------------------
+ 100 continue
+ idom = mindom(n,ndom,link)
+c-----------------------------------------------------------------------
+c begin level-set loop
+c-----------------------------------------------------------------------
+ 3 nodprev = nod
+ ilast = levst(ndom+idom)
+ levst(ndom+idom) = lkend
+ next = levst(idom)
+c
+c linked list traversal loop
+c
+ isiz = 0
+ nsize = link(idom)
+ 1 i = nodes(next)
+ isiz = isiz + 1
+c
+c adjacency list traversal loop
+c
+ do 2 kk=ia(i), ia(i+1)-1
+ j = ja(kk)
+ if (marker(j) .eq. 0) then
+ call add_lk(j,nod,idom,ndom,lkend,levst,link,nodes,marker)
+ endif
+ 2 continue
+c
+c if last element of the previous level not reached continue
+c
+ if (next .gt. ilast) then
+ next = link(next)
+ if (next .gt. 0) goto 1
+ endif
+c-----------------------------------------------------------------------
+c end level-set traversal --
+c-----------------------------------------------------------------------
+ if (nodprev .eq. nod) then
+c
+c link(idom) >0 indicates that set is stuck --
+c
+ link(idom) = -link(idom)
+ nstuck = nstuck+1
+ endif
+c
+ if (nstuck .lt. ndom) goto 100
+c
+c reset sizes --
+c
+ do j=1, ndom
+ if (link(j) .gt. 0) link(j) = -link(j)
+ enddo
+c
+ if (nod .eq. n) return
+c
+c stuck. add first non assigned point to smallest domain
+c
+ 20 ii = ii+1
+ if (ii .le. n) then
+ if (marker(ii) .eq. 0) then
+ idom = 0
+ isiz = n+1
+ do 30 kk=ia(ii), ia(ii+1)-1
+ i = marker(ja(kk))
+ if (i .ne. 0) then
+ nsize = abs(link(i))
+ if (nsize .lt. isiz) then
+ isiz = nsize
+ idom = i
+ endif
+ endif
+ 30 continue
+c
+c if no neighboring domain select smallest one
+c
+ if (idom .eq. 0) idom = mindom(n,ndom,link)
+c
+c add ii to sudomain idom at end of linked list
+c
+ call add_lk(ii,nod,idom,ndom,lkend,levst,link,nodes,marker)
+ goto 3
+ else
+ goto 20
+ endif
+ endif
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine get_domns2(ndom,nodes,link,levst,riord,iptr)
+ implicit none
+ integer ndom,nodes(*),link(*),levst(*),riord(*),iptr(*)
+c-----------------------------------------------------------------------
+c constructs the subdomains from its linked list data structure
+c-----------------------------------------------------------------------
+c input:
+c ndom = number of subdomains
+c nodes = sequence of nodes are produced by mapper4.
+c link = link list array as produced by mapper4.
+c on return:
+c----------
+c riord = contains the nodes in each subdomain in succession.
+c iptr = pointer in riord for beginnning of each subdomain.
+c Thus subdomain number i consists of nodes
+c riord(k1),riord(k1)+1,...,riord(k2)
+c where k1 = iptr(i), k2= iptr(i+1)-1
+c
+c-----------------------------------------------------------------------
+c local variables
+ integer nod, j, next, ii
+ nod = 1
+ iptr(1) = nod
+ do 21 j=1, ndom
+ next = levst(j)
+ 22 ii = nodes(next)
+ riord(nod) = ii
+ nod = nod+1
+ next = link(next)
+ if (next .gt. 0) goto 22
+ iptr(j+1) = nod
+ 21 continue
+c
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ function mindom(n, ndom, link)
+ implicit none
+ integer mindom, n, ndom, link(n)
+c-----------------------------------------------------------------------
+c returns the domain with smallest size
+c-----------------------------------------------------------------------
+c locals
+c
+ integer i, nsize, isiz
+c
+ isiz = n+1
+ do 10 i=1, ndom
+ nsize = - link(i)
+ if (nsize .lt. 0) goto 10
+ if (nsize .lt. isiz) then
+ isiz = nsize
+ mindom = i
+ endif
+ 10 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine add_lk(new,nod,idom,ndom,lkend,levst,link,nodes,marker)
+ implicit none
+ integer new,nod,idom,ndom,lkend,levst(*),link(*),nodes(*),
+ * marker(*)
+c-----------------------------------------------------------------------
+c inserts new element to linked list from the tail.
+c-----------------------------------------------------------------------
+c adds one entry (new) to linked list and ipdates everything.
+c new = node to be added
+c nod = current number of marked nodes
+c idom = domain to which new is to be added
+c ndom = total number of domains
+c lkend= location of end of structure (link and nodes)
+c levst= pointer array for link, nodes
+c link = link array
+c nodes= nodes array --
+c marker = marker array == if marker(k) =0 then node k is not
+c assigned yet.
+c-----------------------------------------------------------------------
+c locals
+c
+ integer ktop
+ lkend = lkend + 1
+ nodes(lkend) = new
+ nod = nod+1
+ marker(new) = idom
+ ktop = levst(idom)
+ link(lkend) = ktop
+ link(idom) = link(idom)-1
+ levst(idom) = lkend
+ return
+c-----------------------------------------------------------------------
+c-------end-of-add_lk---------------------------------------------------
+ end
+c-----------------------------------------------------------------------
+ subroutine find_ctr(n,nsiz,ja,ia,init,mask,maskval,riord,
+ * levels,center,iwk)
+ implicit none
+ integer n,nsiz,ja(*),ia(*),init,mask(*),maskval,riord(*),
+ * levels(*),center,iwk(*)
+c-----------------------------------------------------------------------
+c finds a center point of a subgraph --
+c-----------------------------------------------------------------------
+c n, ja, ia = graph
+c nsiz = size of current domain.
+c init = initial node in search
+c mask
+c maskval
+c-----------------------------------------------------------------------
+c local variables
+ integer midlev, nlev,newmask, k, kr, kl, init0, nlev0
+ call perphn(n,ja,ia,init,mask,maskval,nlev,riord,levels)
+c-----------------------------------------------------------------------
+c midlevel = level which cuts domain into 2 roughly equal-size
+c regions
+c
+ midlev = 1
+ k = 0
+ 1 continue
+ k = k + levels(midlev+1)-levels(midlev)
+ if (k*2 .lt. nsiz) then
+ midlev = midlev+1
+ goto 1
+ endif
+c-----------------------------------------------------------------------
+ newmask = n+maskval
+c
+c assign temporary masks to mid-level elements
+c
+ do k=levels(midlev),levels(midlev+1)-1
+ mask(riord(k)) = newmask
+ enddo
+c
+c find pseudo-periph node for mid-level `line'
+c
+ kr = 1
+ kl = kr + nsiz
+ init0 = riord(levels(midlev))
+ call perphn(n,ja,ia,init0,mask,newmask,nlev0,iwk(kr),iwk(kl))
+c-----------------------------------------------------------------------
+c restore mask to initial state
+c-----------------------------------------------------------------------
+ do k=levels(midlev),levels(midlev+1)-1
+ mask(riord(k)) = maskval
+ enddo
+c-----------------------------------------------------------------------
+c define center
+c-----------------------------------------------------------------------
+ midlev = 1 + (nlev0-1)/2
+ k = iwk(kl+midlev-1)
+ center = iwk(k)
+c-----------------------------------------------------------------------
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine rversp (n, riord)
+ integer n, riord(n)
+c-----------------------------------------------------------------------
+c this routine does an in-place reversing of the permutation array
+c riord --
+c-----------------------------------------------------------------------
+ integer j, k
+ do 26 j=1,n/2
+ k = riord(j)
+ riord(j) = riord(n-j+1)
+ riord(n-j+1) = k
+ 26 continue
+ return
+ end
+c-----------------------------------------------------------------------
diff --git a/README b/README
new file mode 100644
index 0000000..417b582
--- /dev/null
+++ b/README
@@ -0,0 +1,108 @@
+-----------------------------------------------------------------------
+ S P A R S K I T V E R S I O N 2.
+-----------------------------------------------------------------------
+
+Latest update : Tue Mar 8 11:01:12 CST 2005
+
+-----------------------------------------------------------------------
+
+Welcome to SPARSKIT VERSION 2. SPARSKIT is a package of FORTRAN
+subroutines for working with sparse matrices. It includes general
+sparse matrix manipulation routines as well as a few iterative
+solvers, see detailed description of contents below.
+
+ Copyright (C) 2005, the Regents of the University of Minnesota
+
+SPARSKIT is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation [version 2.1 of the License, or any
+later version.]
+
+A copy of the licencing agreement is attached in the file LGPL. For
+additional information contact the Free Software Foundation Inc., 59
+Temple Place - Suite 330, Boston, MA 02111, USA or visit the web-site
+
+ http://www.gnu.org/copyleft/lesser.html
+
+
+DISCLAIMER
+----------
+
+SPARSKIT is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+For more information contact saad@cs.umn.edu
+
+
+---------------------------------------------------
+ S P A R S K I T VERSION 2
+---------------------------------------------------
+
+In this directory you will find all relevant subdirectories and the
+Unix makefile which will compile all the modules and make a unix
+library libskit.a. Please read the makefile. Making the library
+should be the first thing to do when starting to use the package.
+Some of the objects will be linked into a library called
+libskit.a. Others will not be linked but can be used by other
+makefiles for test problems provided in the subdirectories. You can
+then link to libskit.a by default instead of the individual
+modules. (Please report any compilation problems or (even minor)
+warnings immediatly to saad@cs.umn.edu). Once this is done, it is
+recommended to run the test problems provided. There are various test
+suites in each of the subdirectories and makefiles are available for
+each. See explanations in the README files in each individual
+subdirectory.
+
+You may also make and run the test programs using the dotests script
+provided in this directory. Output from this script may be redirected
+into a file and compared to the sample output files out.xxx. There is
+an additional script called sgrep which is useful for looking for
+tools in all the subdirectories. Read the sgrep file for
+instructions.
+
+-----------------------------------------------------------------------
+
+ Here is some information on the SPARSKIT sub-directories.
+
+ BLASSM : Basic linear algebra with sparse matrices.
+ contains two modules: blassm.f and matvec.f
+
+ DOC : contains the main documentation of the package
+
+ INFO : information routine (new one) . Info2 (spectral
+ information) not available yet.
+
+ FORMATS: Contains the Format Conversion routines in
+ formats.f and the manipulation routines in
+ unary.f
+
+ INOUT : input output routines. contains the module inout.f
+
+ ITSOL : contains the iterative solution package. Various
+ iterative solvers and preconditioners are provided.
+
+ MATGEN : matrix generation routines.
+ contains the module genmat.f and several subroutines
+ called by it. Also contains zlatev.f (contributed
+ by E. Rothman, from Cornell).
+
+ ORDERINGS:
+ still in the works. But contains a few coloring routines
+ and level-set related orderings -- (e.g., cuthill Mc Kee, etc.)
+
+ UNSUPP : various `unsupported' routines and drivers.
+ (misc. routines includind routines for
+ plotting.. BLAS1 is also added for completeness)
+
+ See the file "logfile" for a complete revision history.
+
+ Report any problems, suggestions, etc.. to
+
+ Yousef Saad.
+ saad@cs.umn.edu
+
+ -----------------------------------------------------------------------
+
+ \ No newline at end of file
diff --git a/UNSUPP/BLAS1/blas1.f b/UNSUPP/BLAS1/blas1.f
new file mode 100644
index 0000000..35e198b
--- /dev/null
+++ b/UNSUPP/BLAS1/blas1.f
@@ -0,0 +1,670 @@
+ subroutine dcopy(n,dx,incx,dy,incy)
+c
+c copies a vector, x, to a vector, y.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dy(1)
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dy(iy) = dx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,7)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dy(i) = dx(i)
+ 30 continue
+ if( n .lt. 7 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,7
+ dy(i) = dx(i)
+ dy(i + 1) = dx(i + 1)
+ dy(i + 2) = dx(i + 2)
+ dy(i + 3) = dx(i + 3)
+ dy(i + 4) = dx(i + 4)
+ dy(i + 5) = dx(i + 5)
+ dy(i + 6) = dx(i + 6)
+ 50 continue
+ return
+ end
+
+ double precision function ddot(n,dx,incx,dy,incy)
+c
+c forms the dot product of two vectors.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dy(1),dtemp
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ ddot = 0.0d0
+ dtemp = 0.0d0
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = dtemp + dx(ix)*dy(iy)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ ddot = dtemp
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,5)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dtemp + dx(i)*dy(i)
+ 30 continue
+ if( n .lt. 5 ) go to 60
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,5
+ dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
+ * dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + dx(i + 4)*dy(i + 4)
+ 50 continue
+ 60 ddot = dtemp
+ return
+ end
+c
+ double precision function dasum(n,dx,incx)
+c
+c takes the sum of the absolute values.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dtemp
+ integer i,incx,m,mp1,n,nincx
+c
+ dasum = 0.0d0
+ dtemp = 0.0d0
+ if(n.le.0)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ dtemp = dtemp + dabs(dx(i))
+ 10 continue
+ dasum = dtemp
+ return
+c
+c code for increment equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,6)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dtemp + dabs(dx(i))
+ 30 continue
+ if( n .lt. 6 ) go to 60
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,6
+ dtemp = dtemp + dabs(dx(i)) + dabs(dx(i + 1)) + dabs(dx(i + 2))
+ * + dabs(dx(i + 3)) + dabs(dx(i + 4)) + dabs(dx(i + 5))
+ 50 continue
+ 60 dasum = dtemp
+ return
+ end
+
+ subroutine daxpy(n,da,dx,incx,dy,incy)
+c
+c constant times a vector plus a vector.
+c uses unrolled loops for increments equal to one.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dy(1),da
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if (da .eq. 0.0d0) return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dy(iy) = dy(iy) + da*dx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,4)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dy(i) = dy(i) + da*dx(i)
+ 30 continue
+ if( n .lt. 4 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,4
+ dy(i) = dy(i) + da*dx(i)
+ dy(i + 1) = dy(i + 1) + da*dx(i + 1)
+ dy(i + 2) = dy(i + 2) + da*dx(i + 2)
+ dy(i + 3) = dy(i + 3) + da*dx(i + 3)
+ 50 continue
+ return
+ end
+ double precision function dnrm2 ( n, dx, incx)
+ integer next
+ double precision dx(1), cutlo, cuthi, hitest, sum, xmax,zero,one
+ data zero, one /0.0d0, 1.0d0/
+c
+c euclidean norm of the n-vector stored in dx() with storage
+c increment incx .
+c if n .le. 0 return with result = 0.
+c if n .ge. 1 then incx must be .ge. 1
+c
+c c.l.lawson, 1978 jan 08
+c
+c four phase method using two built-in constants that are
+c hopefully applicable to all machines.
+c cutlo = maximum of dsqrt(u/eps) over all known machines.
+c cuthi = minimum of dsqrt(v) over all known machines.
+c where
+c eps = smallest no. such that eps + 1. .gt. 1.
+c u = smallest positive no. (underflow limit)
+c v = largest no. (overflow limit)
+c
+c brief outline of algorithm..
+c
+c phase 1 scans zero components.
+c move to phase 2 when a component is nonzero and .le. cutlo
+c move to phase 3 when a component is .gt. cutlo
+c move to phase 4 when a component is .ge. cuthi/m
+c where m = n for x() real and m = 2*n for complex.
+c
+c values for cutlo and cuthi..
+c from the environmental parameters listed in the imsl converter
+c document the limiting values are as follows..
+c cutlo, s.p. u/eps = 2**(-102) for honeywell. close seconds are
+c univac and dec at 2**(-103)
+c thus cutlo = 2**(-51) = 4.44089e-16
+c cuthi, s.p. v = 2**127 for univac, honeywell, and dec.
+c thus cuthi = 2**(63.5) = 1.30438e19
+c cutlo, d.p. u/eps = 2**(-67) for honeywell and dec.
+c thus cutlo = 2**(-33.5) = 8.23181d-11
+c cuthi, d.p. same as s.p. cuthi = 1.30438d19
+c data cutlo, cuthi / 8.232d-11, 1.304d19 /
+c data cutlo, cuthi / 4.441e-16, 1.304e19 /
+ data cutlo, cuthi / 8.232d-11, 1.304d19 /
+c
+ if(n .gt. 0) go to 10
+ dnrm2 = zero
+ go to 300
+c
+ 10 assign 30 to next
+ sum = zero
+ nn = n * incx
+c begin main loop
+ i = 1
+ 20 go to next,(30, 50, 70, 110)
+ 30 if( dabs(dx(i)) .gt. cutlo) go to 85
+ assign 50 to next
+ xmax = zero
+c
+c phase 1. sum is zero
+c
+ 50 if( dx(i) .eq. zero) go to 200
+ if( dabs(dx(i)) .gt. cutlo) go to 85
+c
+c prepare for phase 2.
+ assign 70 to next
+ go to 105
+c
+c prepare for phase 4.
+c
+ 100 i = j
+ assign 110 to next
+ sum = (sum / dx(i)) / dx(i)
+ 105 xmax = dabs(dx(i))
+ go to 115
+c
+c phase 2. sum is small.
+c scale to avoid destructive underflow.
+c
+ 70 if( dabs(dx(i)) .gt. cutlo ) go to 75
+c
+c common code for phases 2 and 4.
+c in phase 4 sum is large. scale to avoid overflow.
+c
+ 110 if( dabs(dx(i)) .le. xmax ) go to 115
+ sum = one + sum * (xmax / dx(i))**2
+ xmax = dabs(dx(i))
+ go to 200
+c
+ 115 sum = sum + (dx(i)/xmax)**2
+ go to 200
+c
+c
+c prepare for phase 3.
+c
+ 75 sum = (sum * xmax) * xmax
+c
+c
+c for real or d.p. set hitest = cuthi/n
+c for complex set hitest = cuthi/(2*n)
+c
+ 85 hitest = cuthi/float( n )
+c
+c phase 3. sum is mid-range. no scaling.
+c
+ do 95 j =i,nn,incx
+ if(dabs(dx(j)) .ge. hitest) go to 100
+ 95 sum = sum + dx(j)**2
+ dnrm2 = dsqrt( sum )
+ go to 300
+c
+ 200 continue
+ i = i + incx
+ if ( i .le. nn ) go to 20
+c
+c end of main loop.
+c
+c compute square root and adjust for scaling.
+c
+ dnrm2 = xmax * dsqrt(sum)
+ 300 continue
+ return
+ end
+
+ subroutine dscal(n,da,dx,incx)
+c scales a vector by a constant.
+c uses unrolled loops for increment equal to one.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision da,dx(1)
+ integer i,incx,m,mp1,n,nincx
+c
+ if(n.le.0)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ dx(i) = da*dx(i)
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,5)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dx(i) = da*dx(i)
+ 30 continue
+ if( n .lt. 5 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,5
+ dx(i) = da*dx(i)
+ dx(i + 1) = da*dx(i + 1)
+ dx(i + 2) = da*dx(i + 2)
+ dx(i + 3) = da*dx(i + 3)
+ dx(i + 4) = da*dx(i + 4)
+ 50 continue
+ return
+ end
+
+ subroutine dswap (n,dx,incx,dy,incy)
+c
+c interchanges two vectors.
+c uses unrolled loops for increments equal one.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dy(1),dtemp
+ integer i,incx,incy,ix,iy,m,mp1,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = dx(ix)
+ dx(ix) = dy(iy)
+ dy(iy) = dtemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+c
+c clean-up loop
+c
+ 20 m = mod(n,3)
+ if( m .eq. 0 ) go to 40
+ do 30 i = 1,m
+ dtemp = dx(i)
+ dx(i) = dy(i)
+ dy(i) = dtemp
+ 30 continue
+ if( n .lt. 3 ) return
+ 40 mp1 = m + 1
+ do 50 i = mp1,n,3
+ dtemp = dx(i)
+ dx(i) = dy(i)
+ dy(i) = dtemp
+ dtemp = dx(i + 1)
+ dx(i + 1) = dy(i + 1)
+ dy(i + 1) = dtemp
+ dtemp = dx(i + 2)
+ dx(i + 2) = dy(i + 2)
+ dy(i + 2) = dtemp
+ 50 continue
+ return
+ end
+
+ integer function idamax(n,dx,incx)
+c
+c finds the index of element having max. absolute value.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dmax
+ integer i,incx,ix,n
+c
+ idamax = 0
+ if( n .lt. 1 ) return
+ idamax = 1
+ if(n.eq.1)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ ix = 1
+ dmax = dabs(dx(1))
+ ix = ix + incx
+ do 10 i = 2,n
+ if(dabs(dx(ix)).le.dmax) go to 5
+ idamax = i
+ dmax = dabs(dx(ix))
+ 5 ix = ix + incx
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 dmax = dabs(dx(1))
+ do 30 i = 2,n
+ if(dabs(dx(i)).le.dmax) go to 30
+ idamax = i
+ dmax = dabs(dx(i))
+ 30 continue
+ return
+ end
+c
+ subroutine drot (n,dx,incx,dy,incy,c,s)
+c
+c applies a plane rotation.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision dx(1),dy(1),dtemp,c,s
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ dtemp = c*dx(ix) + s*dy(iy)
+ dy(iy) = c*dy(iy) - s*dx(ix)
+ dx(ix) = dtemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ dtemp = c*dx(i) + s*dy(i)
+ dy(i) = c*dy(i) - s*dx(i)
+ dx(i) = dtemp
+ 30 continue
+ return
+ end
+c
+ subroutine drotg(da,db,c,s)
+c
+c construct givens plane rotation.
+c jack dongarra, linpack, 3/11/78.
+c
+ double precision da,db,c,s,roe,scale,r,z
+c
+ roe = db
+ if( dabs(da) .gt. dabs(db) ) roe = da
+ scale = dabs(da) + dabs(db)
+ if( scale .ne. 0.0d0 ) go to 10
+ c = 1.0d0
+ s = 0.0d0
+ r = 0.0d0
+ go to 20
+ 10 r = scale*dsqrt((da/scale)**2 + (db/scale)**2)
+ r = dsign(1.0d0,roe)*r
+ c = da/r
+ s = db/r
+ 20 z = 1.0d0
+ if( dabs(da) .gt. dabs(db) ) z = s
+ if( dabs(db) .ge. dabs(da) .and. c .ne. 0.0d0 ) z = 1.0d0/c
+ da = r
+ db = z
+ return
+ end
+c
+ subroutine ccopy(n,cx,incx,cy,incy)
+c
+c copies a vector, x, to a vector, y.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex cx(1),cy(1)
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments
+c not equal to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ cy(iy) = cx(ix)
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ cy(i) = cx(i)
+ 30 continue
+ return
+ end
+ subroutine cscal(n,ca,cx,incx)
+c
+c scales a vector by a constant.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex ca,cx(1)
+ integer i,incx,n,nincx
+c
+ if(n.le.0)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ cx(i) = ca*cx(i)
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 do 30 i = 1,n
+ cx(i) = ca*cx(i)
+ 30 continue
+ return
+ end
+c
+ subroutine csrot (n,cx,incx,cy,incy,c,s)
+c
+c applies a plane rotation, where the cos and sin (c and s) are real
+c and the vectors cx and cy are complex.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex cx(1),cy(1),ctemp
+ real c,s
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ctemp = c*cx(ix) + s*cy(iy)
+ cy(iy) = c*cy(iy) - s*cx(ix)
+ cx(ix) = ctemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ ctemp = c*cx(i) + s*cy(i)
+ cy(i) = c*cy(i) - s*cx(i)
+ cx(i) = ctemp
+ 30 continue
+ return
+ end
+ subroutine cswap (n,cx,incx,cy,incy)
+c
+c interchanges two vectors.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex cx(1),cy(1),ctemp
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ctemp = cx(ix)
+ cx(ix) = cy(iy)
+ cy(iy) = ctemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+ 20 do 30 i = 1,n
+ ctemp = cx(i)
+ cx(i) = cy(i)
+ cy(i) = ctemp
+ 30 continue
+ return
+ end
+ subroutine csscal(n,sa,cx,incx)
+c
+c scales a complex vector by a real constant.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex cx(1)
+ real sa
+ integer i,incx,n,nincx
+c
+ if(n.le.0)return
+ if(incx.eq.1)go to 20
+c
+c code for increment not equal to 1
+c
+ nincx = n*incx
+ do 10 i = 1,nincx,incx
+ cx(i) = cmplx(sa*real(cx(i)),sa*aimag(cx(i)))
+ 10 continue
+ return
+c
+c code for increment equal to 1
+c
+ 20 do 30 i = 1,n
+ cx(i) = cmplx(sa*real(cx(i)),sa*aimag(cx(i)))
+ 30 continue
+ return
+ end
+
diff --git a/UNSUPP/MATEXP/README b/UNSUPP/MATEXP/README
new file mode 100644
index 0000000..f2119e0
--- /dev/null
+++ b/UNSUPP/MATEXP/README
@@ -0,0 +1,20 @@
+
+ SUBDIRECTORY MATEXP
+ -------------------
+ routines related to matrix exponentials.
+
+ contents:
+----------
+ exppro.f computes exp( t A) v
+ rexp.f a simple test program for exppro.f
+ phipro.f solves y'= A y + b
+ rphi.f a simple test program for phipro.f
+ makefile makefile for the test problems. make exp.ex will make
+ an executable for exppro, make phi.ex will test program for
+ phipro.f
+
+
+ feedback appreciated. BEWARE: DOCUMENTATION MAY BE INACCURATE -
+ --------------------- VERY LITTLE TESTING DONE WITH PHIPRO.F --
+
+
diff --git a/UNSUPP/MATEXP/exppro.f b/UNSUPP/MATEXP/exppro.f
new file mode 100644
index 0000000..8d46ba0
--- /dev/null
+++ b/UNSUPP/MATEXP/exppro.f
@@ -0,0 +1,593 @@
+ subroutine expprod (n, m, eps, tn, u, w, x, y, a, ioff, ndiag)
+ real*8 eps, tn
+ real*8 a(n,ndiag), u(n,m+1), w(n), x(n), y(n)
+ integer n, m, ndiag, ioff(ndiag)
+
+c-----------------------------------------------------------------------
+c this subroutine computes an approximation to the vector
+c
+c w := exp( - A * tn ) * w
+c
+c for matrices stored in diagonal (DIA) format.
+c
+c this routine constitutes an interface for the routine exppro for
+c matrices stored in diagonal (DIA) format.
+c-----------------------------------------------------------------------
+c ARGUMENTS
+c----------
+c see exppro for meaning of parameters n, m, eps, tn, u, w, x, y.
+c
+c a, ioff, and ndiag are the arguments of the matrix:
+c
+c a(n,ndiag) = a rectangular array with a(*,k) containing the diagonal
+c offset by ioff(k) (negative or positive or zero), i.e.,
+c a(i,jdiag) contains the element A(i,i+ioff(jdiag)) in
+c the usual dense storage scheme.
+c
+c ioff = integer array containing the offsets of the ndiag diagonals
+c ndiag = integer. the number of diagonals.
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer indic, ierr
+
+ indic = 0
+ 101 continue
+ call exppro (n, m, eps, tn, u, w, x, y, indic, ierr)
+ if (indic .eq. 1) goto 102
+c
+c matrix vector-product for diagonal storage --
+c
+ call oped(n, x, y, a, ioff, ndiag)
+ goto 101
+ 102 continue
+ return
+ end
+c----------end-of-expprod-----------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine exppro (n, m, eps, tn, u, w, x, y, indic, ierr)
+c implicit real*8 (a-h,o-z)
+ integer n, m, indic, ierr
+ real*8 eps, tn, u(n,m+1), w(n), x(n), y(n)
+c-----------------------------------------------------------------------
+c
+c this subroutine computes an approximation to the vector
+c
+c w := exp( - A * tn ) * w
+c
+c where A is an arbitary matrix and w is a given input vector
+c uses a dynamic estimation of internal time advancement (dt)
+c-----------------------------------------------------------------------
+c THIS IS A REVERSE COMMUNICATION IMPLEMENTATION.
+c-------------------------------------------------
+c USAGE: (see also comments on indic below).
+c------
+c
+c indic = 0
+c 1 continue
+c call exppro (n, m, eps, tn, u, w, x, y, indic)
+c if (indic .eq. 1) goto 2 <-- indic .eq. 1 means job is finished
+c call matvec(n, x, y) <--- user's matrix-vec. product
+c with x = input vector, and
+c y = result = A * x.
+c goto 1
+c 2 continue
+c .....
+c
+c-----------------------------------------------------------------------
+c
+c en entry:
+c----------
+c n = dimension of matrix
+c
+c m = dimension of Krylov subspace (= degree of polynomial
+c approximation to the exponential used. )
+c
+c eps = scalar indicating the relative error tolerated for the result.
+c the code will try to compute an answer such that
+c norm2(exactanswer-approximation) / norm2(w) .le. eps
+c
+c tn = scalar by which to multiply matrix. (may be .lt. 0)
+c the code will compute an approximation to exp(- tn * A) w
+c and overwrite the result onto w.
+c
+c u = work array of size n*(m+1) (used to hold the Arnoldi basis )
+c
+c w = real array of length n = input vector to which exp(-A) is
+c to be applied. this is also an output argument
+c
+c x, y = two real work vectors of length at least n each.
+c see indic for usage.
+c
+c indic = integer used as indicator for the reverse communication.
+c in the first call enter indic = 0. See below for more.
+c
+c on return:
+c-----------
+c
+c w = contains the resulting vector exp(-A * tn ) * w when
+c exppro has finished (see indic)
+c
+c indic = indicator for the reverse communication protocole.
+c * INDIC .eq. 1 means that exppro has finished and w contains the
+c result.
+c * INDIC .gt. 1 , means that exppro has not finished and that
+c it is requesting another matrix vector product before
+c continuing. The user must compute Ax where A is the matrix
+c and x is the vector provided by exppro, and return the
+c result in y. Then exppro must be called again without
+c changing any other argument. typically this must be
+c implemented in a loop with exppro being called as long
+c indic is returned with a value .ne. 1.
+c
+c ierr = error indicator.
+c ierr = 1 means phipro was called with indic=1 (not allowed)
+c ierr = -1 means that the input is zero the solution has been
+c unchanged.
+c
+c NOTES: m should not exceed 60 in this version (see mmax below)
+c-----------------------------------------------------------------------
+c written by Y. Saad -- version feb, 1991.
+c-----------------------------------------------------------------------
+c For reference see following papers :
+c (1) E. Gallopoulos and Y. Saad: Efficient solution of parabolic
+c equations by Krylov approximation methods. RIACS technical
+c report 90-14.
+c (2) Y.Saad: Analysis of some Krylov subspace approximations to the
+c matrix exponential operator. RIACS Tech report. 90-14
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer mmax
+ parameter (mmax=60)
+ real*8 errst, tcur, told, dtl, beta, red, dabs, dble
+ real*8 hh(mmax+2,mmax+1), z(mmax+1)
+ complex*16 wkc(mmax+1)
+ integer ih, job
+ logical verboz
+ data verboz/.true./
+ save
+c-----------------------------------------------------------------------
+c indic = 3 means passing through only with result of y= Ax to exphes
+c indic = 2 means exphes has finished its job
+c indic = 1 means exppro has finished its job (real end)/
+c-----------------------------------------------------------------------
+ ierr = 0
+ if (indic .eq. 3) goto 101
+ if (indic .eq. 1) then
+ ierr = 1
+ return
+ endif
+c-----
+ ih = mmax
+ m = min0(m,mmax)
+ tcur = 0.0d0
+ dtl = tn-tcur
+ job = -1
+c-------------------- outer loop -----------------------------
+ 100 continue
+ if(verboz) print *,'In EXPPRO, current time = ', tcur ,'---------'
+c-------------------------------------------------------------
+c ---- call exponential propagator ---------------------------
+c-------------------------------------------------------------
+ told = tcur
+ 101 continue
+c if (told + dtl .gt. tn) dtl = tn-told
+ call exphes (n,m,dtl,eps,u,w,job,z,wkc,beta,errst,hh,ih,
+ * x,y,indic,ierr)
+c-----------------------------------------------------------------------
+ if (ierr .ne. 0) return
+ if (indic .ge. 3) return
+ tcur = told + dtl
+ if(verboz) print *, ' tcur now = ', tcur, ' dtl = ', dtl
+c
+c relative error
+c if(verboz) print *, ' beta', beta
+ errst = errst / beta
+c---------
+ if ((errst .le. eps) .and. ( (errst .gt. eps/100.0) .or.
+ * (tcur .eq. tn))) goto 102
+c
+c use approximation : [ new err ] = fact**m * [cur. error]
+c
+ red = (0.5*eps / errst)**(1.0d0 /dble(m) )
+ dtl = dtl*red
+ if (dabs(told+dtl) .gt. dabs(tn) ) dtl = tn-told
+ if(verboz) print *, ' red =',red,' , reducing dt to: ', dtl
+c-------
+ job = 1
+ goto 101
+c-------
+ 102 continue
+c
+ call project(n,m,u,z,w)
+c never go beyond tcur
+ job = 0
+ dtl = dmin1(dtl, tn-tcur)
+ if (dabs(tcur+dtl) .gt. dabs(tn)) dtl = tn-tcur
+ if (dabs(tcur) .lt. dabs(tn)) goto 100
+ indic = 1
+c
+ return
+ end
+c----------end-of-expro-------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine exphes (n,m,dt,eps,u,w,job,z,wkc,beta,errst,hh,ih,
+ * x, y, indic,ierr)
+c implicit real*8 (a-h,o-z)
+ integer n, m, job, ih, indic, ierr
+ real*8 hh(ih+2,m+1), u(n,m+1), w(n), z(m+1), x(n), y(n)
+ complex*16 wkc(m+1)
+ real*8 dt, eps, beta, errst
+c-----------------------------------------------------------------------
+c this subroutine computes the Arnoldi basis and the corresponding
+c coeffcient vector in the approximation
+c
+c w ::= beta Vm ym
+c where ym = exp(- Hm *dt) * e1
+c
+c to the vector exp(-A dt) w where A is an arbitary matrix and
+c w is a given input vector. In case job = 0 the arnoldi basis
+c is recomputed. Otherwise the
+c code assumes assumes that u(*) contains an already computed
+c arnoldi basis and computes only the y-vector (which is stored in v(*))
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of matrix
+c
+c m = dimension of Krylov subspace (= degree of polynomial
+c approximation to the exponential used. )
+c
+c dt = scalar by which to multiply matrix. Can be viewed
+c as a time step. dt must be positive [to be fixed].
+c
+c eps = scalar indicating the relative error tolerated for the result.
+c the code will try to compute an answer such that
+c norm2(exactanswer-approximation) / norm2(w) .le. eps
+c
+c u = work array of size n*(m+1) to contain the Arnoldi basis
+c
+c w = real array of length n = input vector to which exp(-A) is
+c to be applied.
+c
+c job = integer. job indicator. If job .lt. 0 then the Arnoldi
+c basis is recomputed. If job .gt. 0 then it is assumed
+c that the user wants to use a previously computed Krylov
+c subspace but a different dt. Thus the Arnoldi basis and
+c the Hessenberg matrix Hm are not recomputed.
+c In that case the user should not modify the values of beta
+c and the matrices hh and u(n,*) when recalling phipro.
+c job = -1 : recompute basis and get an initial estimate for
+c time step dt to be used.
+c job = 0 : recompute basis and do not alter dt.
+c job = 1 : do not recompute arnoldi basis.
+c
+c z = real work array of size (m+1)
+c wkc = complex*16 work array of size (m+1)
+c
+c hh = work array of size size at least (m+2)*(m+1)
+c
+c ih+2 = first dimension of hh as declared in the calling program.
+c ih must be .ge. m.
+c
+c-----------------------------------------------------------------------
+c on return:
+c-----------
+c w2 = resulting vector w2 = exp(-A *dt) * w
+c beta = real equal to the 2-norm of w. Needed if exppro will
+c be recalled with the same Krylov subspace and a different dt.
+c errst = rough estimates of the 2-norm of the error.
+c hh = work array of dimension at least (m+2) x (m+1)
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer ndmax
+ parameter (ndmax=20)
+ real*8 alp0, fnorm, t, rm, ddot, dabs, dsqrt, dsign,dble
+ complex*16 alp(ndmax+1), rd(ndmax+1)
+ integer i, j, k, ldg, i0, i1, m1
+ logical verboz
+ data verboz/.true./
+ save
+c------use degree 14 chebyshev all the time --------------------------
+ if (indic .ge. 3) goto 60
+c
+c------input fraction expansion of rational function ------------------
+c chebyshev (14,14)
+ ldg= 7
+ alp0 = 0.183216998528140087E-11
+ alp(1)=( 0.557503973136501826E+02,-0.204295038779771857E+03)
+ rd(1)=(-0.562314417475317895E+01, 0.119406921611247440E+01)
+ alp(2)=(-0.938666838877006739E+02, 0.912874896775456363E+02)
+ rd(2)=(-0.508934679728216110E+01, 0.358882439228376881E+01)
+ alp(3)=( 0.469965415550370835E+02,-0.116167609985818103E+02)
+ rd(3)=(-0.399337136365302569E+01, 0.600483209099604664E+01)
+ alp(4)=(-0.961424200626061065E+01,-0.264195613880262669E+01)
+ rd(4)=(-0.226978543095856366E+01, 0.846173881758693369E+01)
+ alp(5)=( 0.752722063978321642E+00, 0.670367365566377770E+00)
+ rd(5)=( 0.208756929753827868E+00, 0.109912615662209418E+02)
+ alp(6)=(-0.188781253158648576E-01,-0.343696176445802414E-01)
+ rd(6)=( 0.370327340957595652E+01, 0.136563731924991884E+02)
+ alp(7)=( 0.143086431411801849E-03, 0.287221133228814096E-03)
+ rd(7)=( 0.889777151877331107E+01, 0.166309842834712071E+02)
+c-----------------------------------------------------------------------
+c
+c if job .gt. 0 skip arnoldi process:
+c
+ if (job .gt. 0) goto 2
+c------normalize vector w and put in first column of u --
+ beta = dsqrt(ddot(n,w,1,w,1))
+c-----------------------------------------------------------------------
+ if(verboz) print *, ' In EXPHES, beta ', beta
+ if (beta .eq. 0.0d0) then
+ ierr = -1
+ indic = 1
+ return
+ endif
+c
+ t = 1.0d0/beta
+ do 25 j=1, n
+ u(j,1) = w(j)*t
+ 25 continue
+c------------------Arnoldi loop -------------------------------------
+c fnorm = 0.0d0
+ i1 = 1
+ 58 i = i1
+ i1 = i + 1
+ do 59 k=1, n
+ x(k) = u(k,i)
+ 59 continue
+ indic = 3
+ return
+ 60 continue
+ do 61 k=1, n
+ u(k,i1) = y(k)
+ 61 continue
+ i0 =1
+c
+c switch for Lanczos version
+c i0 = max0(1, i-1)
+ call mgsr (n, i0, i1, u, hh(1,i))
+ fnorm = fnorm + ddot(i1, hh(1,i),1, hh(1,i),1)
+ if (hh(i1,i) .eq. 0.0) m = i
+ if (i .lt. m) goto 58
+c--------------done with arnoldi loop ---------------------------------
+ rm = dble(m)
+ fnorm = dsqrt( fnorm / rm )
+c-------get : beta*e1 into z
+ m1 = m+1
+ do 4 i=1,m1
+ hh(i,m1) = 0.0
+ 4 continue
+c
+c compute initial dt when job .lt. 1
+c
+ if (job .ge. 0) goto 2
+c
+c t = eps / beta
+c
+ t = eps
+ do 41 k=1, m-1
+ t = t*(1.0d0 - dble(m-k)/rm )
+ 41 continue
+c
+ t = 2.0d0*rm* (t**(1.0d0/rm) ) / fnorm
+ if(verboz) print *, ' t, dt = ', t, dt
+ t = dmin1(dabs(dt),t)
+ dt = dsign(t, dt)
+c
+ 2 continue
+ z(1) = beta
+ do 3 k=2, m1
+ z(k) = 0.0d0
+ 3 continue
+c-------get : exp(H) * beta*e1
+ call hes(ldg,m1,hh,ih,dt,z,rd,alp,alp0,wkc)
+c-------error estimate
+ errst = dabs(z(m1))
+ if(verboz) print *, ' error estimate =', errst
+c-----------------------------------------------------------------------
+ indic = 2
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine mgsr (n, i0, i1, ss, r)
+c implicit real*8 (a-h,o-z)
+ integer n, i0, i1
+ real*8 ss(n,i1), r(i1)
+c-----------------------------------------------------------------------
+c modified gram - schmidt with partial reortho. the vector ss(*,i1) is
+c orthogonalized against the first i vectors of ss (which are already
+c orthogonal). the coefficients of the orthogonalization are returned in
+c the array r
+c------------------------------------------------------------------------
+c local variables
+c
+ integer i, j, k, it
+ real*8 hinorm, tet, ddot, t, dsqrt
+ data tet/10.0d0/
+
+ do 53 j=1, i1
+ r(j) = 0.0d0
+ 53 continue
+ i = i1-1
+ it = 0
+ 54 hinorm = 0.0d0
+ it = it +1
+ if (i .eq. 0) goto 56
+c
+ do 55 j=i0, i
+ t = ddot(n, ss(1,j),1,ss(1,i1),1)
+ hinorm = hinorm + t**2
+ r(j) = r(j) + t
+ call daxpy(n,-t,ss(1,j),1,ss(1,i1),1)
+ 55 continue
+ t = ddot(n, ss(1,i1), 1, ss(1,i1), 1)
+ 56 continue
+c
+c test for reorthogonalization see daniel et. al.
+c two reorthogonalization allowed ---
+c
+ if (t*tet .le. hinorm .and. it .lt. 2) goto 54
+ t =dsqrt(t)
+ r(i1)= t
+ if (t .eq. 0.0d0) return
+ t = 1.0d0/t
+ do 57 k=1,n
+ ss(k,i1) = ss(k,i1)*t
+ 57 continue
+ return
+ end
+c----------end-of-mgsr--------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine project(n,m,u,v,w)
+ integer n, m
+ real*8 u(n,m), v(m), w(n)
+c
+c computes the vector w = u * v
+c
+c local variables
+c
+ integer j, k
+
+ do 1 k=1,n
+ w(k) = 0.d0
+ 1 continue
+
+ do 100 j=1,m
+ do 99 k=1,n
+ w(k) = w(k) + v(j) * u(k,j)
+ 99 continue
+ 100 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine hes (ndg,m1,hh,ih,dt,y,root,coef,coef0,w2)
+c implicit real*8 (a-h,o-z)
+ integer ndg, m1, ih
+ real*8 hh(ih+2,m1), y(m1)
+ complex*16 coef(ndg), root(ndg), w2(m1)
+ real*8 dt, coef0
+c--------------------------------------------------------------------
+c computes exp ( H dt) * y (1)
+c where H = Hessenberg matrix (hh)
+c y = arbitrary vector.
+c ----------------------------
+c ndg = number of poles as determined by getrat
+c m1 = dimension of hessenberg matrix
+c hh = hessenberg matrix (real)
+c ih+2 = first dimension of hh
+c dt = scaling factor used for hh (see (1))
+c y = real vector. on return exp(H dt ) y is computed
+c and overwritten on y.
+c root = poles of the rational approximation to exp as
+c computed by getrat
+c coef,
+c coef0 = coefficients of partial fraction expansion
+c
+c exp(t) ~ coef0 + sum Real [ coef(i) / (t - root(i) ]
+c i=1,ndg
+c
+c valid for real t.
+c coef0 is real, coef(*) is a complex array.
+c
+c--------------------------------------------------------------------
+c local variables
+c
+ integer m1max
+ parameter (m1max=61)
+ complex*16 hloc(m1max+1,m1max), t, zpiv, dcmplx
+ real*8 yloc(m1max), dble
+ integer i, j, ii
+c
+c if (m1 .gt. m1max) print *, ' *** ERROR : In HES, M+1 TOO LARGE'
+c
+c loop associated with the poles.
+c
+ do 10 j=1,m1
+ yloc(j) = y(j)
+ y(j) = y(j)*coef0
+ 10 continue
+c
+ do 8 ii = 1, ndg
+c
+c copy Hessenberg matrix into temporary
+c
+ do 2 j=1, m1
+ do 1 i=1, j+1
+ hloc(i,j) = dcmplx( dt*hh(i,j) )
+ 1 continue
+ hloc(j,j) = hloc(j,j) - root(ii)
+ w2(j) = dcmplx(yloc(j))
+ 2 continue
+c
+c forward solve
+c
+ do 4 i=2,m1
+ zpiv = hloc(i,i-1) / hloc(i-1,i-1)
+ do 3 j=i,m1
+ hloc(i,j) = hloc(i,j) - zpiv*hloc(i-1,j)
+ 3 continue
+ w2(i) = w2(i) - zpiv*w2(i-1)
+ 4 continue
+c
+c backward solve
+c
+ do 6 i=m1,1,-1
+ t=w2(i)
+ do 5 j=i+1,m1
+ t = t-hloc(i,j)*w2(j)
+ 5 continue
+ w2(i) = t/hloc(i,i)
+ 6 continue
+c
+c accumulate result in y.
+c
+ do 7 i=1,m1
+ y(i) = y(i) + dble ( coef(ii) * w2(i) )
+ 7 continue
+ 8 continue
+ return
+ end
+c----------end-of-hes---------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine daxpy(n,t,x,indx,y,indy)
+ integer n, indx, indy
+ real*8 x(n), y(n), t
+c-------------------------------------------------------------------
+c does the following operation
+c y <--- y + t * x , (replace by the blas routine daxpy )
+c indx and indy are supposed to be one here
+c-------------------------------------------------------------------
+ integer k
+
+ do 1 k=1,n
+ y(k) = y(k) + x(k)*t
+1 continue
+ return
+ end
+c----------end-of-daxpy-------------------------------------------------
+c-----------------------------------------------------------------------
+ function ddot(n,x,ix,y,iy)
+ integer n, ix, iy
+ real*8 ddot, x(n), y(n)
+c-------------------------------------------------------------------
+c computes the inner product t=(x,y) -- replace by blas routine ddot
+c-------------------------------------------------------------------
+ integer j
+ real*8 t
+
+ t = 0.0d0
+ do 10 j=1,n
+ t = t + x(j)*y(j)
+10 continue
+ ddot=t
+ return
+ end
+c----------end-of-ddot--------------------------------------------------
+c-----------------------------------------------------------------------
+
+
diff --git a/UNSUPP/MATEXP/makefile b/UNSUPP/MATEXP/makefile
new file mode 100644
index 0000000..279b29a
--- /dev/null
+++ b/UNSUPP/MATEXP/makefile
@@ -0,0 +1,14 @@
+FFLAGS =
+F77 = f77
+
+#F77 = cf77
+#FFLAGS = -Wf"-dp"
+
+FILES1 = rexp.o exppro.o
+FILES2 = rphi.o phipro.o
+
+exp.ex: $(FILES1)
+ $(F77) $(FFLAGS) $(FILES1) -o exp.ex
+
+phi.ex: $(FILES2)
+ $(F77) $(FFLAGS) $(FILES2) -o phi.ex
diff --git a/UNSUPP/MATEXP/phipro.f b/UNSUPP/MATEXP/phipro.f
new file mode 100644
index 0000000..c699469
--- /dev/null
+++ b/UNSUPP/MATEXP/phipro.f
@@ -0,0 +1,640 @@
+ subroutine phiprod (n, m, eps, tn, u, w, r, x, y, a, ioff, ndiag)
+ real*8 eps, tn
+ real*8 a(n,ndiag), u(n,m+1), w(n), r(n), x(n), y(n)
+ integer n, m, ndiag, ioff(ndiag)
+
+c-----------------------------------------------------------------------
+c this subroutine computes an approximation to the vector
+c
+c w(tn) = w(t0) + tn * phi( - A * tn ) * (r - A w(t0))
+c
+c where phi(z) = (1-exp(z)) / z
+c
+c i.e. solves dw/dt = - A w + r in [t0,t0+ tn] (returns only w(t0+tn))
+c
+c for matrices stored in diagonal (DIA) format.
+c
+c this routine constitutes an interface for the routine phipro for
+c matrices stored in diagonal (DIA) format. The phipro routine uses
+c reverse communication and as a result does not depend on any
+c data structure of the matrix.
+
+c-----------------------------------------------------------------------
+c ARGUMENTS
+c----------
+c see phipro for meaning of parameters n, m, eps, tn, u, w, x, y.
+c
+c a, ioff, and ndiag are the arguments of the matrix:
+c
+c a(n,ndiag) = a rectangular array with a(*,k) containing the diagonal
+c offset by ioff(k) (negative or positive or zero), i.e.,
+c a(i,jdiag) contains the element A(i,i+ioff(jdiag)) in
+c the usual dense storage scheme.
+c
+c ioff = integer array containing the offsets of the ndiag diagonals
+c ndiag = integer. the number of diagonals.
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer indic, ierr
+
+ indic = 0
+ 101 continue
+ call phipro (n, m, eps, tn, w, r, u, x, y, indic, ierr)
+ if (indic .eq. 1) goto 102
+c
+c matrix vector-product for diagonal storage --
+c
+ call oped(n, x, y, a, ioff, ndiag)
+ goto 101
+ 102 continue
+ return
+ end
+c----------end-of-phiprod-----------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine phipro (n, m, eps, tn, w, r, u, x, y, indic, ierr)
+c implicit real*8 (a-h,o-z)
+ integer n, m, indic, ierr
+ real*8 eps, tn, w(n), r(n), u(n,m+1), x(n), y(n)
+c-----------------------------------------------------------------------
+c
+c this subroutine computes an approximation to the vector
+c
+c w(tn) = w(t0) + tn * phi( - A * tn ) * (r - A w(t0))
+c where phi(z) = (1-exp(z)) / z
+c
+c i.e. solves dw/dt=-Aw+r in [t0,t0+tn] (returns w(t0+tn))
+c t0 need not be known.
+c
+c note that for w(t0)=0 the answer is w=tn *phi(-tn * A) r
+c in other words this allows to compute phi(A tn) v.
+c This code will work well only for cases where eigenvalues are
+c real (or nearly real) and positive. It has also been coded to
+c work for cases where tn .lt. 0.0 (and A has real negative spectrum)
+c
+c-----------------------------------------------------------------------
+c
+c THIS IS A REVERSE COMMUNICATION IMPLEMENTATION.
+c-------------------------------------------------
+c USAGE: (see also comments on argument indic below).
+c------
+c
+c indic = 0
+c 1 continue
+c call phipro (n, m, eps, tn, u, w, x, y, indic)
+c if (indic .eq. 1) goto 2 <-- indic .eq. 1 means phipro has finished
+c call matvec(n, x, y) <--- user's matrix-vec. product
+c with x = input vector, and
+c y = result = A * x.
+c goto 1
+c 2 continue
+c .....
+c
+c-----------------------------------------------------------------------
+c
+c en entry:
+c----------
+c n = dimension of matrix
+c
+c m = dimension of Krylov subspace (= degree of polynomial
+c approximation to the exponential used. )
+c
+c eps = scalar indicating the relative error tolerated for the result.
+c the code will try to compute an answer such that
+c norm2(exactanswer-approximation) / norm2(w) .le. eps
+c
+c tn = scalar by which to multiply matrix. (may be .lt. 0)
+c the code will compute a solution to dw/dt = -A w + r,
+c and overwrite the result w(tn) onto in w.
+c
+c w = real array of length n. Initial condition for the ODE system
+c on input, result w(tn) on output (input and output argument)
+c
+c r = real array of length n. the constant term in the system
+c dw/dt = -A w + r to be solved.
+c
+c u = work array of size n*(m+1) (used to hold the Arnoldi basis )
+c
+c x, y = two real work vectors of length n each. x and y are used to
+c carry the input and output vectors for the matrix-vector
+c products y=Ax in the reverse communication protocole.
+c see argument indic (return) below for details on their usage.
+c
+c indic = integer used as indicator for the reverse communication.
+c in the first call enter indic = 0.
+c
+c ierr = error indicator.
+c ierr = 1 means phipro was called with indic=1 (not allowed)
+c ierr = -1 means that the input is zero the solution has been
+c unchanged.
+c
+c on return:
+c-----------
+c
+c w = contains the result w(tn)=w(t0)+tn*phi(-A*tn)*(r-Aw(t0))
+c when phipro has finished (as indicated by indic see below)
+c
+c indic = indicator for the reverse communication protocole.
+c * INDIC .eq. 1 means that phipro has finished and w contains the
+c result.
+c * INDIC .gt. 1 means that phipro has not finished and that
+c it is requesting another matrix vector product before
+c continuing. The user must compute Ax where A is the matrix
+c and x is the vector provided by phipro and return the
+c result in y. Then phipro must be called again without
+c changing any other argument. typically this is best
+c implemented in a loop with phipro being called as long
+c indic is returned with a value .ne. 1.
+c
+c NOTES: m should not exceed 60 in this version (see mmax below)
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer mmax
+ parameter (mmax=60)
+ real*8 errst, tcur, told, dtl, beta, red, dabs, dble
+ real*8 hh(mmax+2,mmax+1), z(mmax+1)
+ complex*16 wkc(mmax+1)
+ integer ih, k, job
+ logical verboz
+ data verboz/.true./
+ save
+c-----------------------------------------------------------------------
+c indic = 4 means getting y=Ax needed in phipro
+c indic = 3 means passing through only with result of y= Ax to phihes
+c indic = 2 means phihes has finished its job
+c indic = 1 means phipro has finished its job (real end)/
+c-----------------------------------------------------------------------
+ ierr = 0
+ if (indic .eq. 3) goto 101
+ if (indic .eq. 4) goto 11
+ if (indic .eq. 1) then
+ ierr = 1
+ return
+ endif
+c-----
+ ih = mmax
+ m = min0(m,mmax)
+ tcur = 0.0d0
+ dtl = tn - tcur
+ job = -1
+c-------------------- outer loop -----------------------------
+ 100 continue
+ if(verboz) print *,'In PHIPRO, current time = ', tcur ,'---------'
+c-------------------------------------------------------------
+c ---- call phionential propagator ---------------------------
+c-------------------------------------------------------------
+ told = tcur
+c
+c if (told + dtl .gt. tn) dtl = tn-told
+c construct initial vector for Arnoldi: r - A w(old)
+c
+ do 10 k=1, n
+ x(k) = w(k)
+ 10 continue
+ indic = 4
+ return
+ 11 continue
+ do 12 k=1, n
+ u(k,1) = r(k) - y(k)
+ 12 continue
+c
+ 101 continue
+ call phihes (n,m,dtl,eps,u,job,z,wkc,beta,errst,hh,ih,x, y,indic,
+ * ierr)
+c-----------------------------------------------------------------------
+ if (ierr .ne. 0) return
+ if (indic .eq. 3) return
+ tcur = told + dtl
+ if(verboz) print *, ' tcur now = ', tcur, ' dtl = ', dtl
+c
+c relative error
+c if(verboz) print *, ' beta', beta
+ errst = errst / beta
+c---------
+ if ((errst .le. eps) .and. ( (errst .gt. eps/100.0) .or.
+ * (tcur .eq. tn))) goto 102
+c
+c use approximation : [ new err ] = fact**m * [cur. error]
+c
+ red = (0.5*eps / errst)**(1.0d0 /dble(m) )
+ dtl = dtl*red
+ if (dabs(told+dtl) .gt. dabs(tn) ) dtl = tn-told
+ if(verboz) print *, ' red =',red,' , reducing dt to: ', dtl
+c-------
+ job = 1
+ goto 101
+c-------
+ 102 continue
+c
+ call project(n, m, w, dtl, u, z)
+c never go beyond tcur
+ job = 0
+ dtl = dmin1(dtl, tn-tcur)
+ if (dabs(tcur+dtl) .gt. dabs(tn)) dtl = tn-tcur
+ if (dabs(tcur) .lt. dabs(tn)) goto 100
+ indic = 1
+ return
+ end
+c----------end-of-phipro------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine phihes (n,m,dt,eps,u,job,z,wkc,beta,errst,hh,ih,
+ * x, y, indic,ierr)
+c implicit real*8 (a-h,o-z)
+ integer n, m, job, ih, indic, ierr
+ real*8 hh(ih+2,m+1), u(n,m+1), z(m+1), x(n), y(n)
+ complex*16 wkc(m+1)
+ real*8 dt, eps, beta, errst
+c-----------------------------------------------------------------------
+c this subroutine computes the Arnoldi basis Vm and the corresponding
+c coeffcient vector ym in the approximation
+c
+c w ::= beta Vm ym
+c where ym = phi(- Hm * dt) * e1
+c
+c to the vector phi(-A * dt) w where A is an arbitary matrix and
+c w is a given input vector. The phi function is defined by
+c phi(z) = (1 - exp(z) ) / z
+c
+c In case job .lt.0 the arnoldi basis is recomputed. Otherwise the
+c code assumes assumes that u(*) contains an already computed
+c arnoldi basis and computes only the y-vector (which is stored in
+c v(*)). Three different options are available through the argument job.
+c-----------------------------------------------------------------------
+c on entry:
+c----------
+c n = dimension of matrix
+c
+c m = dimension of Krylov subspace (= degree of polynomial
+c approximation to the phionential used. )
+c
+c dt = scalar by which to multiply matrix. Can be viewed
+c as a time step. dt must be positive [to be fixed].
+c
+c eps = scalar indicating the relative error tolerated for the result.
+c the code will try to compute an answer such that
+c norm2(exactanswer-approximation) / norm2(w) .le. eps
+c
+c u = work array of size n*(m+1) to contain the Arnoldi basis
+c
+c w = real array of length n = input vector to which phi(-A) is
+c to be applied.
+c
+c job = integer. job indicator. If job .lt. 0 then the Arnoldi
+c basis is recomputed. If job .gt. 0 then it is assumed
+c that the user wants to use a previously computed Krylov
+c subspace but a different dt. Thus the Arnoldi basis and
+c the Hessenberg matrix Hm are not recomputed.
+c In that case the user should not modify the values of beta
+c and the matrices hh and u(n,*) when recalling phipro.
+c job = -1 : recompute basis and get an initial estimate for
+c time step dt to be used.
+c job = 0 : recompute basis and do not alter dt.
+c job = 1 : do not recompute arnoldi basis.
+c
+c z = real work array of size (m+1)
+c wkc = complex*16 work array of size (m+1)
+c
+c hh = work array of size size at least (m+2)*(m+1)
+c
+c ih+2 = first dimension of hh as declared in the calling program.
+c ih must be .ge. m.
+c
+c-----------------------------------------------------------------------
+c on return:
+c-----------
+c w2 = resulting vector w2 = phi(-A *dt) * w
+c beta = real equal to the 2-norm of w. Needed if phipro will
+c be recalled with the same Krylov subspace and a different dt.
+c errst = rough estimates of the 2-norm of the error.
+c hh = work array of dimension at least (m+2) x (m+1)
+c
+c-----------------------------------------------------------------------
+c local variables
+c
+ integer ndmax
+ parameter (ndmax=20)
+ real*8 alp0, fnorm, t, rm, ddot, dabs, dsqrt, dsign,dble
+ complex*16 alp(ndmax+1), rd(ndmax+1)
+ integer i, j, k, ldg, i0, i1, m1
+ logical verboz
+ data verboz/.true./
+ save
+c------use degree 14 chebyshev all the time --------------------------
+ if (indic .eq. 3) goto 60
+c
+c------get partial fraction expansion of rational function -----------
+c-----------------------------------------------------------------------
+c chebyshev (14,14)
+c ldg= 7
+c alp0 = 0.183216998528140087E-11
+c alp(1)=( 0.557503973136501826E+02,-0.204295038779771857E+03)
+c rd(1)=(-0.562314417475317895E+01, 0.119406921611247440E+01)
+c alp(2)=(-0.938666838877006739E+02, 0.912874896775456363E+02)
+c rd(2)=(-0.508934679728216110E+01, 0.358882439228376881E+01)
+c alp(3)=( 0.469965415550370835E+02,-0.116167609985818103E+02)
+c rd(3)=(-0.399337136365302569E+01, 0.600483209099604664E+01)
+c alp(4)=(-0.961424200626061065E+01,-0.264195613880262669E+01)
+c rd(4)=(-0.226978543095856366E+01, 0.846173881758693369E+01)
+c alp(5)=( 0.752722063978321642E+00, 0.670367365566377770E+00)
+c rd(5)=( 0.208756929753827868E+00, 0.109912615662209418E+02)
+c alp(6)=(-0.188781253158648576E-01,-0.343696176445802414E-01)
+c rd(6)=( 0.370327340957595652E+01, 0.136563731924991884E+02)
+c alp(7)=( 0.143086431411801849E-03, 0.287221133228814096E-03)
+c rd(7)=( 0.889777151877331107E+01, 0.166309842834712071E+02)
+c-----------------------------------------------------------------------
+c Pade of degree = (4,4)
+c
+c ldg= 2
+c alp(1)=(-0.132639894655051648E+03,-0.346517448171383875E+03)
+c rd(1)=(-0.579242120564063611E+01, 0.173446825786912484E+01)
+c alp(2)=( 0.926398946550511936E+02, 0.337809095284865179E+02)
+c rd(2)=(-0.420757879435933546E+01, 0.531483608371348736E+01)
+c
+c Pade of degree = 8
+c
+ ldg= 4
+ alp(1)=( 0.293453004361944040E+05, 0.261671093076405813E+05)
+ rd(1)=(-0.104096815812822569E+02, 0.523235030527069966E+01)
+ alp(2)=(-0.212876889060526154E+05,-0.764943398790569044E+05)
+ rd(2)=(-0.111757720865218743E+02, 0.173522889073929320E+01)
+ alp(3)=(-0.853199767523084301E+04,-0.439758928252937039E+03)
+ rd(3)=(-0.873657843439934822E+01, 0.882888500094418304E+01)
+ alp(4)=( 0.330386145089576530E+03,-0.438315990671386316E+03)
+ rd(4)=(-0.567796789779646360E+01, 0.127078225972105656E+02)
+c
+ do 102 k=1, ldg
+ alp(k) = - alp(k) / rd(k)
+ 102 continue
+ alp0 = 0.0d0
+c
+c if job .gt. 0 skip arnoldi process:
+c
+ if (job .gt. 0) goto 2
+c------normalize vector u and put in first column of u --
+ beta = dsqrt(ddot(n,u,1,u,1))
+c-----------------------------------------------------------------------
+ if(verboz) print *, ' In PHIHES, beta ', beta
+ if (beta .eq. 0.0d0) then
+ ierr = -1
+ indic = 1
+ return
+ endif
+c
+ t = 1.0d0/beta
+ do 25 j=1, n
+ u(j,1) = u(j,1)*t
+ 25 continue
+c------------------Arnoldi loop -----------------------------------------
+c fnorm = 0.0d0
+ i1 = 1
+ 58 i = i1
+ i1 = i + 1
+ do 59 k=1, n
+ x(k) = u(k,i)
+ 59 continue
+ indic = 3
+ return
+ 60 continue
+ do 61 k=1, n
+ u(k,i1) = y(k)
+ 61 continue
+ i0 =1
+c switch for Lanczos version
+c i0 = max0(1, i-1)
+ call mgsr (n, i0, i1, u, hh(1,i))
+ fnorm = fnorm + ddot(i1, hh(1,i),1, hh(1,i),1)
+ if (hh(i1,i) .eq. 0.0) m = i
+ if (i .lt. m) goto 58
+c--------------done with arnoldi loop ---------------------------------
+ rm = dble(m)
+ fnorm = dsqrt( fnorm / rm )
+c------- put beta*e1 into z -------------------------------------------
+ m1 = m+1
+ do 4 i=1,m1
+ hh(i,m1) = 0.0
+ 4 continue
+c
+c compute initial dt when job .lt. 1
+c
+ if (job .ge. 0) goto 2
+c
+ t = 2.0*eps
+ do 41 k=1, m
+ t = 2.0*t*dble(k+1)/rm
+ 41 continue
+c
+ t = rm* (t**(1.0d0/rm) ) / fnorm
+ if(verboz) print *, ' t, dt = ', t, dt
+ t = dmin1(dabs(dt),t)
+ dt = dsign(t, dt)
+c---------------------- get the vector phi(Hm)e_1 + estimate -----------
+ 2 continue
+ z(1) = beta
+ do 3 k=2, m1
+ z(k) = 0.0d0
+ 3 continue
+c-------get : phi(H) * beta*e1
+ call hes(ldg,m1,hh,ih,dt,z,rd,alp,alp0,wkc)
+c-------error estimate
+ errst = dabs(z(m1))
+ if(verboz) print *, ' error estimate =', errst
+c-----------------------------------------------------------------------
+ indic = 2
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine mgsr (n, i0, i1, ss, r)
+c implicit real*8 (a-h,o-z)
+ integer n, i0, i1
+ real*8 ss(n,i1), r(i1)
+c-----------------------------------------------------------------------
+c modified gram - schmidt with partial reortho. the vector ss(*,i1) is
+c orthogonalized against the first i vectors of ss (which are already
+c orthogonal). the coefficients of the orthogonalization are returned in
+c the array r
+c------------------------------------------------------------------------
+c local variables
+c
+ integer i, j, k, it
+ real*8 hinorm, tet, ddot, t, dsqrt
+ data tet/10.0d0/
+
+ do 53 j=1, i1
+ r(j) = 0.0d0
+ 53 continue
+ i = i1-1
+ it = 0
+ 54 hinorm = 0.0d0
+ it = it +1
+ if (i .eq. 0) goto 56
+c
+ do 55 j=i0, i
+ t = ddot(n, ss(1,j),1,ss(1,i1),1)
+ hinorm = hinorm + t**2
+ r(j) = r(j) + t
+ call daxpy(n,-t,ss(1,j),1,ss(1,i1),1)
+ 55 continue
+ t = ddot(n, ss(1,i1), 1, ss(1,i1), 1)
+ 56 continue
+c
+c test for reorthogonalization see daniel et. al.
+c two reorthogonalization allowed ---
+c
+ if (t*tet .le. hinorm .and. it .lt. 2) goto 54
+ t =dsqrt(t)
+ r(i1)= t
+ if (t .eq. 0.0d0) return
+ t = 1.0d0/t
+ do 57 k=1,n
+ ss(k,i1) = ss(k,i1)*t
+ 57 continue
+ return
+ end
+c----------end-of-mgsr--------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine project(n, m, w, t, u, v)
+ integer n, m
+ real*8 u(n,m), v(m), w(n), t, scal
+c
+c computes the vector w = w + t * u * v
+c
+c local variables
+c
+ integer j, k
+
+ do 100 j=1,m
+ scal = t*v(j)
+ do 99 k=1,n
+ w(k) = w(k) + scal*u(k,j)
+ 99 continue
+ 100 continue
+ return
+ end
+c-----------------------------------------------------------------------
+ subroutine hes (ndg,m1,hh,ih,dt,y,root,coef,coef0,w2)
+c implicit real*8 (a-h,o-z)
+ integer ndg, m1, ih
+ real*8 hh(ih+2,m1), y(m1)
+ complex*16 coef(ndg), root(ndg), w2(m1)
+ real*8 dt, coef0
+c--------------------------------------------------------------------
+c computes phi ( H dt) * y (1)
+c where H = Hessenberg matrix (hh)
+c y = arbitrary vector.
+c ----------------------------
+c ndg = number of poles as determined by getrat
+c m1 = dimension of hessenberg matrix
+c hh = hessenberg matrix (real)
+c ih+2 = first dimension of hh
+c dt = scaling factor used for hh (see (1))
+c y = real vector. on return phi(H dt ) y is computed
+c and overwritten on y.
+c root = poles of the rational approximation to phi as
+c computed by getrat
+c coef,
+c coef0 = coefficients of partial fraction phiansion
+c
+c phi(t) ~ coef0 + sum Real [ coef(i) / (t - root(i) ]
+c i=1,ndg
+c
+c valid for real t.
+c coef0 is real, coef(*) is a complex array.
+c
+c--------------------------------------------------------------------
+c local variables
+c
+ integer m1max
+ parameter (m1max=70)
+ complex*16 hloc(m1max+1,m1max), t, zpiv, dcmplx
+ real*8 yloc(m1max), dble
+ integer i, j, ii
+c
+c if (m1 .gt. m1max) print *, ' *** ERROR : In HES, M+1 TOO LARGE'
+c
+c loop associated with the poles.
+c
+ do 10 j=1,m1
+ yloc(j) = y(j)
+ y(j) = y(j)*coef0
+ 10 continue
+c
+ do 8 ii = 1, ndg
+c
+c copy Hessenberg matrix into temporary
+c
+ do 2 j=1, m1
+ do 1 i=1, j+1
+ hloc(i,j) = dcmplx( dt*hh(i,j) )
+ 1 continue
+ hloc(j,j) = hloc(j,j) - root(ii)
+ w2(j) = dcmplx(yloc(j))
+ 2 continue
+c
+c forward solve
+c
+ do 4 i=2,m1
+ zpiv = hloc(i,i-1) / hloc(i-1,i-1)
+ do 3 j=i,m1
+ hloc(i,j) = hloc(i,j) - zpiv*hloc(i-1,j)
+ 3 continue
+ w2(i) = w2(i) - zpiv*w2(i-1)
+ 4 continue
+c
+c backward solve
+c
+ do 6 i=m1,1,-1
+ t=w2(i)
+ do 5 j=i+1,m1
+ t = t-hloc(i,j)*w2(j)
+ 5 continue
+ w2(i) = t/hloc(i,i)
+ 6 continue
+c
+c accumulate result in y.
+c
+ do 7 i=1,m1
+ y(i) = y(i) + dble ( coef(ii) * w2(i) )
+ 7 continue
+ 8 continue
+ return
+ end
+c----------end-of-hes---------------------------------------------------
+c-----------------------------------------------------------------------
+ subroutine daxpy(n,t,x,indx,y,indy)
+ integer n, indx, indy
+ real*8 x(n), y(n), t
+c-------------------------------------------------------------------
+c does the following operation
+c y <--- y + t * x , (replace by the blas routine daxpy )
+c indx and indy are supposed to be one here
+c-------------------------------------------------------------------
+ integer k
+
+ do 1 k=1,n
+ y(k) = y(k) + x(k)*t
+1 continue
+ return
+ end
+c----------end-of-daxpy-------------------------------------------------
+c-----------------------------------------------------------------------
+ function ddot(n,x,ix,y,iy)
+ integer n, ix, iy
+ real*8 ddot, x(n), y(n)
+c-------------------------------------------------------------------
+c computes the inner product t=(x,y) -- replace by blas routine ddot
+c-------------------------------------------------------------------
+ integer j
+ real*8 t
+
+ t = 0.0d0
+ do 10 j=1,n
+ t = t + x(j)*y(j)
+10 continue
+ ddot=t
+ return
+ end
+c----------end-of-ddot--------------------------------------------------
+c-----------------------------------------------------------------------
+
diff --git a/UNSUPP/MATEXP/rexp.f b/UNSUPP/MATEXP/rexp.f
new file mode 100644
index 0000000..c5629b0
--- /dev/null
+++ b/UNSUPP/MATEXP/rexp.f
@@ -0,0 +1,98 @@
+ program exptest
+c-------------------------------------------------------------------
+c
+c Test program for exponential propagator using Arnoldi approach
+c This main program is a very simple test using diagonal matrices
+c (Krylov subspace methods are blind to the structure of the matrix
+c except for symmetry). This provides a good way of testing the
+c accuracy of the method as well as the error estimates.
+c
+c-------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ parameter (nmax = 400, ih0=60, ndmx=20,nzmax = 7*nmax)
+ real*8 a(nzmax), u(ih0*nmax), w(nmax),w1(nmax),x(nmax),y(nmax)
+ integer ioff(10)
+ data iout/6/, a0/0.0/, b0/1.0/, epsmac/1.d-10/, eps /1.d-10/
+c
+c set dimension of matrix
+c
+ n = 100
+c--------------------------- define matrix -----------------------------
+c A is a single diagonal matrix (ndiag = 1 and ioff(1) = 0 )
+c-----------------------------------------------------------------------
+ ndiag = 1
+ ioff(1) = 0
+c
+c-------- entries in the diagonal are uniformly distributed.
+c
+ h = 1.0d0 / real(n+1)
+ do 1 j=1, n
+ a(j) = real(j+1)* h
+ 1 continue
+c--------
+ write (6,'(10hEnter tn: ,$)')
+ read (5,*) tn
+c
+ write (6,'(36hEpsilon (desired relative accuracy): ,$)')
+ read (5,*) eps
+c-------
+ write (6,'(36h m (= dimension of Krylov subspace): ,$)')
+ read (5,*) m
+c-------
+c define initial conditions: chosen so that solution = (1,1,1,1..1)^T
+c-------
+ do 2 j=1,n
+ w(j) = dexp(a(j)*tn)
+ 2 w1(j) = w(j)
+c
+ call expprod (n, m, eps, tn, u, w, x, y, a, ioff, ndiag)
+c
+ print *, ' final answer '
+ print *, (w(k),k=1,20)
+c
+ do 4 k=1,n
+ 4 w1(k) = dexp(-a(k)*tn) * w1(k)
+ print *, ' exact solution '
+ print *, (w1(k),k=1,20)
+c
+c---------- computing actual 2-norm of error ------------------
+c
+ t = 0.0d0
+ do 47 k=1,n
+ 47 t = t+ (w1(k)-w(k))**2
+ t = dsqrt(t / ddot(n, w,1,w,1) )
+c
+ write (6,*) ' final error', t
+c--------------------------------------------------------------
+ stop
+ end
+c-------
+ subroutine oped(n,x,y,diag,ioff,ndiag)
+c======================================================
+c this kernel performs a matrix by vector multiplication
+c for a diagonally structured matrix stored in diagonal
+c format
+c======================================================
+ implicit real*8 (a-h,o-z)
+ real*8 x(n), y(n), diag(n,ndiag)
+ common nope, nmvec
+ integer j, n, ioff(ndiag)
+CDIR$ IVDEP
+ do 1 j=1, n
+ y(j) = 0.00
+ 1 continue
+c
+ do 10 j=1,ndiag
+ io = ioff(j)
+ i1=max0(1,1-io)
+ i2=min0(n,n-io)
+CDIR$ IVDEP
+ do 9 k=i1,i2
+ y(k) = y(k)+diag(k,j)*x(k+io)
+ 9 continue
+ 10 continue
+ nmvec = nmvec + 1
+ nope = nope + 2*ndiag*n
+ return
+ end
+c
diff --git a/UNSUPP/MATEXP/rphi.f b/UNSUPP/MATEXP/rphi.f
new file mode 100644
index 0000000..17f75a4
--- /dev/null
+++ b/UNSUPP/MATEXP/rphi.f
@@ -0,0 +1,127 @@
+ program phitest
+c-------------------------------------------------------------------
+c Test program for exponential propagator using Arnoldi approach
+c This main program is a very simple test using diagonal matrices
+c (Krylov subspace methods are blind to the structure of the matrix
+c except for symmetry). This provides a good way of testing the
+c accuracy of the method as well as the error estimates. This test
+c program tests the phi-function variant instead of the exponential.
+c
+c The subroutine phipro which is tested here computes an approximation
+c to the vector
+c
+c w(tn) = w(t0) + tn * phi( - A * tn ) * (r - A w(t0))
+c
+c where phi(z) = (1-exp(z)) / z
+c
+c i.e. it solves dw/dt = -A w + r in [t0,t0+ tn] (returns only w(t0+tn))
+c
+c In this program t0=0, tn is input by the user and A is a simple
+c diagonal matrix.
+c
+c-------------------------------------------------------------------
+ implicit real*8 (a-h,o-z)
+ parameter (nmax = 400, ih0=60, ndmx=20,nzmax = 7*nmax)
+ real*8 a(nzmax), u(ih0*nmax), w(nmax),w1(nmax),x(nmax),y(nmax),
+ * r(nmax)
+ integer ioff(10)
+ data iout/6/,a0/0.0/,b0/1.0/,epsmac/1.d-10/,eps/1.d-10/
+c
+c dimendion of matrix
+c
+ n = 100
+c---------------------------define matrix -----------------------------
+c A is a single diagonal matrix (ndiag = 1 and ioff(1) = 0 )
+c-----------------------------------------------------------------------
+ ndiag = 1
+ ioff(1) = 0
+c
+c entriesin the diagonal are uniformly distributed.
+c
+ h = 1.0d0 / real(n+1)
+ do 1 j=1, n
+ a(j) = real(j+1)*h
+ 1 continue
+c--------
+ write (6,'(10hEnter tn: ,$)')
+ read (5,*) tn
+c
+ write (6,'(36hEpsilon (desired relative accuracy): ,$)')
+ read (5,*) eps
+c-------
+ write (6,'(36h m (= dimension of Krylov subspace): ,$)')
+ read (5,*) m
+c
+c define initial conditions to be (1,1,1,1..1)^T
+c
+ do 2 j=1,n
+ w(j) = 1.0 - 1.0/real(j+10)
+ r(j) = 1.0
+ w1(j) = w(j)
+ 2 continue
+c
+c
+c HERE IT IS DONE IN 10 SUBSTEPS
+c nsteps = 10
+c tnh = tn/real(nsteps)
+c MARCHING LOOP
+c do jj =1, nsteps
+c call phiprod (n, m, eps, tnh, u, w, r, x, y, a, ioff, ndiag)
+ call phiprod (n, m, eps, tn, u, w, r, x, y, a, ioff, ndiag)
+c enddo
+ print *, ' final answer '
+ print *, (w(k),k=1,20)
+c
+c exact solution
+c
+ do 4 k=1,n
+ w1(k)=w1(k)+((1.0 - dexp(-a(k)*tn) )/a(k))*(r(k)
+ + - a(k)*w1(k) )
+ 4 continue
+c
+c exact solution
+c
+ print *, ' exact answer '
+ print *, (w1(k),k=1,20)
+c
+c computing actual 2-norm of error
+c
+ t = 0.0d0
+ do 47 k=1,n
+ t = t+ (w1(k)-w(k))**2
+ 47 continue
+ t = dsqrt(t / ddot(n, w,1,w,1) )
+c
+ write (6,*) ' final error', t
+c-----------------------------------------------------------------------
+ stop
+ end
+c-----------------------------------------------------------------------
+ subroutine oped(n,x,y,diag,ioff,ndiag)
+c======================================================
+c this kernel performs a matrix by vector multiplication
+c for a diagonally structured matrix stored in diagonal format
+c======================================================
+ implicit real*8 (a-h,o-z)
+ real*8 x(n), y(n), diag(n,ndiag)
+ common nope, nmvec
+ integer j, n, ioff(ndiag)
+CDIR$ IVDEP
+ do 1 j=1, n
+ y(j) = 0.00
+ 1 continue
+c
+ do 10 j=1,ndiag
+ io = ioff(j)
+ i1=max0(1,1-io)
+ i2=min0(n,n-io)
+CDIR$ IVDEP
+ do 9 k=i1,i2
+ y(k) = y(k)+diag(k,j)*x(k+io)
+ 9 continue
+ 10 continue
+ nmvec = nmvec + 1
+ nope = nope + 2*ndiag*n
+ return
+ end
+c
diff --git a/UNSUPP/PLOTS/README b/UNSUPP/PLOTS/README
new file mode 100644
index 0000000..c555d1f
--- /dev/null
+++ b/UNSUPP/PLOTS/README
@@ -0,0 +1,19 @@
+
+ -----------------
+ Current contents:
+ -----------------
+
+Some of the files that were originally in this directory
+have been moved to the INOUT module, or were obsolte and removed.
+
+* psgrd.f contains subroutine "psgrid" which plots a symmetric graph.
+
+* texplt1.f contains subroutine "texplt" allows several matrices
+ in the same picture by calling texplt several times and exploiting job and
+ different shifts.
+
+* texgrid1.f contains subroutine "texgrd" which generates tex commands
+ for plotting a symmetric graph associated with a mesh. Allows
+ several grids in the same picture by calling texgrd several times and
+ exploiting job and different shifts.
+
diff --git a/UNSUPP/PLOTS/psgrd.f b/UNSUPP/PLOTS/psgrd.f
new file mode 100644
index 0000000..3a6f4c5
--- /dev/null
+++ b/UNSUPP/PLOTS/psgrd.f
@@ -0,0 +1,190 @@
+ subroutine psgrid (npts,ja,ia,xx,yy,title,ptitle,size,munt,iunt)
+c-----------------------------------------------------------------------
+c plots a symmetric graph defined by ja,ia and the coordinates
+c xx(*),yy(*)
+c-----------------------------------------------------------------------
+c npts = number of points in mesh
+c ja, ia = connectivity of mesh -- as given by pattern of sparse
+c matrix.
+c xx, yy = cordinates of the points.
+c
+c title = character*(*). a title of arbitrary length to be printed
+c as a caption to the figure. Can be a blank character if no
+c caption is desired.
+c
+c ptitle = position of title; 0 under the drawing, else above
+c
+c size = size of the drawing
+c
+c munt = units used for size : 'cm' or 'in'
+c
+c iunt = logical unit number where to write the matrix into.
+c-----------------------------------------------------------------------
+ implicit none
+ integer npts,ptitle,iunt, ja(*), ia(*)
+ character title*(*), munt*2
+ real*8 xx(npts),yy(npts)
+ real size
+c-----------------------------------------------------------------------
+c local variables --------------------------------------------------
+c-----------------------------------------------------------------------
+ integer nr,ii,k,ltit
+ real xi,yi,xj,yj,lrmrgn,botmrgn,xtit,ytit,ytitof,fnstit,siz,
+ * xl,xr, yb,yt, scfct,u2dot,frlw,delt,paperx,conv,dimen,
+ * haf,zero, xdim, ydim
+ real*8 xmin,xmax,ymin,ymax,max,min
+ integer j
+c-----------------------------------------------------------------------
+ integer LENSTR
+ external LENSTR
+c-----------------------------------------------------------------------
+ data haf /0.5/, zero/0.0/, conv/2.54/
+ siz = size
+c
+c get max and min dimensions
+c
+ xmin = xx(1)
+ xmax = xmin
+ ymin = yy(1)
+ ymax = ymin
+ do j=2, npts
+ xmax = max(xmax,xx(j))
+ xmin = min(xmin,xx(j))
+ ymax = max(ymax,yy(j))
+ ymin = min(ymin,yy(j))
+ enddo
+c-----------------------------------------------------------------------
+c n = npts
+ nr = npts
+ xdim = xmax -xmin
+ ydim = ymax -ymin
+ dimen = max(xdim,ydim)
+c-----------------------------------------------------------------------
+ print *, ' xmin', xmin, ' xmax', xmax
+ print *, ' ymin', ymin, ' ymax', ymax, ' dimen ', dimen
+c-----------------------------------------------------------------------
+c
+c units (cm or in) to dot conversion factor and paper size
+c
+ if (munt.eq.'cm' .or. munt.eq.'CM') then
+ u2dot = 72.0/conv
+ paperx = 21.0
+ else
+ u2dot = 72.0
+ paperx = 8.5*conv
+ siz = siz*conv
+ end if
+c
+c left and right margins (drawing is centered)
+c
+ lrmrgn = (paperx-siz)/2.0
+c
+c bottom margin : 2 cm
+c
+ botmrgn = 2.0/dimen
+c scaling factor
+ scfct = siz*u2dot/dimen
+c frame line witdh
+ frlw = 0.25/dimen
+c font siz for title (cm)
+ fnstit = 0.5/dimen
+ ltit = LENSTR(title)
+c
+c position of title : centered horizontally
+c at 1.0 cm vertically over the drawing
+ ytitof = 1.0/dimen
+ xtit = paperx/2.0
+ ytit = botmrgn+siz*nr/dimen + ytitof
+c almost exact bounding box
+ xl = lrmrgn*u2dot - scfct*frlw/2
+ xr = (lrmrgn+siz)*u2dot + scfct*frlw/2
+ yb = botmrgn*u2dot - scfct*frlw/2
+ yt = (botmrgn+siz*ydim/dimen)*u2dot + scfct*frlw/2
+ if (ltit.gt.0) then
+ yt = yt + (ytitof+fnstit*0.70)*u2dot
+ end if
+c add some room to bounding box
+ delt = 10.0
+ xl = xl-delt
+ xr = xr+delt
+ yb = yb-delt
+ yt = yt+delt
+c
+c correction for title under the drawing
+c
+ if (ptitle.eq.0 .and. ltit.gt.0) then
+ ytit = botmrgn + fnstit*0.3
+ botmrgn = botmrgn + ytitof + fnstit*0.7
+ end if
+c
+c begin output
+c
+ write(iunt,10) '%!'
+ write(iunt,10) '%%Creator: PSPLTM routine'
+ write(iunt,12) '%%BoundingBox:',xl,yb,xr,yt
+ write(iunt,10) '%%EndComments'
+ write(iunt,10) '/cm {72 mul 2.54 div} def'
+ write(iunt,10) '/mc {72 div 2.54 mul} def'
+ write(iunt,10) '/pnum { 72 div 2.54 mul 20 string'
+ write(iunt,10) 'cvs print ( ) print} def'
+ write(iunt,10)
+ 1 '/Cshow {dup stringwidth pop -2 div 0 rmoveto show} def'
+c
+c we leave margins etc. in cm so it is easy to modify them if
+c needed by editing the output file
+c
+ write(iunt,10) 'gsave'
+ if (ltit.gt.0) then
+ write(iunt,*) '/Helvetica findfont',fnstit,' cm scalefont setfont'
+ write(iunt,*) xtit,' cm',ytit,' cm moveto'
+ write(iunt,'(3A)') '(',title(1:ltit),') Cshow'
+ end if
+c
+ write(iunt,*) lrmrgn,' cm ',botmrgn,' cm translate'
+ write(iunt,*) siz,' cm ',dimen,' div dup scale '
+c
+c draw a frame around the matrix // REMOVED
+c
+c del = 0.005
+c del2 = del*2.0
+c write(iunt,*) del, ' setlinewidth'
+c write(iunt,10) 'newpath'
+c write(iunt,11) -del2, -del2, ' moveto'
+c write(iunt,11) dimen+del2,-del2,' lineto'
+c write(iunt,11) dimen+del2, dimen+del2, ' lineto'
+c write(iunt,11) -del2,dimen+del2,' lineto'
+c write(iunt,10) 'closepath stroke'
+c
+c----------- plotting loop ---------------------------------------------
+ write(iunt,*) ' 0.01 setlinewidth'
+c
+ do 1 ii=1, npts
+
+c if (mask(ii) .eq. 0) goto 1
+ xi = xx(ii) - xmin
+ yi = yy(ii) - ymin
+c write (iout+1,*) ' ******** ii pt', xi, yi, xmin, ymin
+ do 2 k=ia(ii),ia(ii+1)-1
+ j = ja(k)
+ if (j .le. ii) goto 2
+ xj = xx(j) - xmin
+ yj = yy(j) - ymin
+c write (iout+1,*) ' j pt -- j= ',j, 'pt=', xj, yj
+c
+c draw a line from ii to j
+c
+ write(iunt,11) xi, yi, ' moveto '
+ write(iunt,11) xj, yj, ' lineto'
+ write(iunt,10) 'closepath stroke'
+ 2 continue
+ 1 continue
+c-----------------------------------------------------------------------
+ write(iunt,10) 'showpage'
+ return
+c
+ 10 format (A)
+ 11 format (2F9.2,A)
+ 12 format (A,4F9.2)
+ 13 format (2F9.2,A)
+c-----------------------------------------------------------------------
+ end
diff --git a/UNSUPP/PLOTS/texgrid1.f b/UNSUPP/PLOTS/texgrid1.f
new file mode 100644
index 0000000..906099e
--- /dev/null
+++ b/UNSUPP/PLOTS/texgrid1.f
@@ -0,0 +1,242 @@
+ subroutine texgrd(npts,ja,ia,xx,yy,munt,size,vsize,hsize,
+ * xleft,bot,job,title,ptitle,ijk,node,nelx,iunt)
+c-----------------------------------------------------------------------
+ integer npts,iunt,ptitle,ja(*),ia(*), ijk(node,*)
+ character title*(*), munt*2
+ real*8 xx(npts), yy(npts)
+c-----------------------------------------------------------------------
+c allows to have several grids in same picture by calling texgrd
+c several times and exploiting job and different shifts.
+c-----------------------------------------------------------------------
+c input arguments description :
+c
+c npts = number of rows in matrix
+c
+c ncol = number of columns in matrix
+c
+c mode = integer indicating whether the matrix is stored in
+c CSR mode (mode=0) or CSC mode (mode=1) or MSR mode (mode=2)
+c
+c ja = column indices of nonzero elements when matrix is
+c stored rowise. Row indices if stores column-wise.
+c ia = integer array of containing the pointers to the
+c beginning of the columns in arrays a, ja.
+c
+c munt = units used for sizes : either 'cm' or 'in'
+c
+c size = size of the matrix box in 'munt' units
+c
+c vsize = vertical size of the frame containing the picture
+c in 'munt' units
+c
+c hsize = horizontal size of the frame containing the picture
+c in 'munt' units
+c
+c xleft = position of left border of matrix in 'munt' units
+c
+c bot = position of bottom border of matrix in 'munt' units
+c
+c job = job indicator for preamble and post process
+c can be viewed as a 2-digit number job = [job1,job2]
+c where job1 = job /10 , job2 = job - 10*job1 = mod(job,10)
+c job2 relates to preamble/post processing:
+c job2 = 0: all preambles+end-document lines
+c job2 = 1: preamble only
+c job2 = 2: end-document only
+c anything else: no preamble or end-docuiment lines
+c Useful for plotting several matrices in same frame.
+c
+c job1 relates to the way in which the nodes and elements must
+c be processed:
+c job1 relates to options for the plot.
+c job1 = 0 : only a filled circle for the nodes, no labeling
+c job1 = 1 : labels the nodes (in a circle)
+c job1 = 2 : labels both nodes and elements.
+c job1 = 3 : no circles, no labels
+c
+c title = character*(*). a title of arbitrary length to be printed
+c as a caption to the matrix. Can be a blank character if no
+c caption is desired. Can be put on top or bottom of matrix
+c se ptitle.
+c
+c ptitle = position of title; 0 under the frame, else above
+c
+c nlines = number of separation lines to draw for showing a partionning
+c of the matrix. enter zero if no partition lines are wanted.
+c
+c lines = integer array of length nlines containing the coordinates of
+c the desired partition lines . The partitioning is symmetric:
+c a horizontal line across the matrix will be drawn in
+c between rows lines(i) and lines(i)+1 for i=1, 2, ..., nlines
+c an a vertical line will be similarly drawn between columns
+c lines(i) and lines(i)+1 for i=1,2,...,nlines
+c
+c iunt = logical unit number where to write the matrix into.
+c-----------------------------------------------------------------------
+ real*8 xmin, xmax, ymin, ymax
+
+ n = npts
+ siz = size
+ job1 = job /10
+ job2 = job - 10*job1
+c
+c get max and min dimensions
+c
+ xmin = xx(1)
+ xmax = xmin
+ ymin = yy(1)
+ ymax = ymin
+c
+ do j=2, npts
+ xmax = max(xmax,xx(j))
+ xmin = min(xmin,xx(j))
+ ymax = max(ymax,yy(j))
+ ymin = min(ymin,yy(j))
+ enddo
+c-----------------------------------------------------------------------
+ n = npts
+ xdim = xmax -xmin
+ ydim = ymax -ymin
+ dimen = max(xdim,ydim)
+c-----------------------------------------------------------------------
+ print *, ' xmin', xmin, ' xmax', xmax
+ print *, ' ymin', ymin, ' ymax', ymax, ' dimen ', dimen
+c-----------------------------------------------------------------------
+c
+c units (cm or in) to dot conversion factor and paper size
+c
+ tdim = max(ydim,xdim)
+ unit0 = size/tdim
+ hsiz = hsize/unit0
+ vsiz = vsize/unit0
+ siz = size/unit0
+c
+c size of little circle for each node -- cirr = in local units
+c cirabs in inches (or cm) -- rad = radius in locl units --
+c
+ cirabs = 0.15
+ if (job1 .le. 0) cirabs = 0.08
+ if (job1 .eq. 3) cirabs = 0.0
+ cirr = cirabs/unit0
+ rad = cirr/2.0
+c
+c begin document generation
+c
+ if (job2 .le. 1) then
+ write (iunt,*) ' \\documentstyle[epic,eepic,12pt]{article} '
+ write (iunt,*) ' \\begin{document}'
+ write (iunt,100) unit0, munt
+ write (iunt,99) hsiz, vsiz
+ else
+c redeclare unitlength
+ write (iunt,100) unit0, munt
+ endif
+ if (job1 .le. 0) then
+ write (iunt,101) cirr
+ else
+ write (iunt,102) cirr
+ endif
+ 102 format('\\def\\cird{\\circle{',f5.2,'} }')
+ 101 format('\\def\\cird{\\circle*{',f5.2,'} }')
+ 99 format('\\begin{picture}(',f8.2,1h,,f8.2,1h))
+ 100 format(' \\setlength{\\unitlength}{',f5.3,a2,'}')
+c
+c bottom margin between cir and title
+c
+ xs = xleft / unit0 + (tdim - xdim)*0.5 + (hsiz - siz)*0.5
+ ys = bot / unit0 - ymin
+c
+ xmargin = 0.30/unit0
+ if (munt .eq. 'cm' .or. munt .eq. 'CM') xmargin = xmargin*2.5
+ xtit = xs + xmin
+ if (ptitle .eq. 0) then
+ ytit = ys + ymin - xmargin
+ else
+ ytit = ys + ymax + xmargin
+ endif
+ ltit = LENSTR(title)
+ write(iunt,111) xtit,ytit,xdim,xmargin,title(1:ltit)
+c
+ 111 format ('\\put(',F6.2,',',F6.2,
+ * '){\\makebox(',F6.2,1h,,F6.2,'){',A,2h}})
+c
+c print all the circles if needed
+c
+c ##### temporary for showing f
+c write (iunt,102) 0.01
+c write (iunt,112)xs+xx(1), ys+yy(1)
+c-----------------------------------------------------------------------
+ if (job1 .eq. 3) goto 230
+ do 22 i=1, npts
+ x = xs + xx(i)
+ y = ys + yy(i)
+ write(iunt,112) x, y
+ 112 format ('\\put(',F6.2,',',F6.2,'){\\cird}')
+c write(iunt,113) x-rad, y-rad, cirr, cirr, i
+c 113 format ('\\put(',F6.2,',',F6.2,
+c * '){\\makebox(',F6.2,1h,,F6.2,'){\\scriptsize ',i4,2h}})
+ if (job1 .ge. 1) then
+ write(iunt,113) x, y, i
+ endif
+ 113 format ('\\put(',F6.2,',',F6.2,
+ * '){\\makebox(0.0,0.0){\\scriptsize ',i4,2h}})
+ 22 continue
+ 230 continue
+c
+c number the elements if needed
+c
+ if (job1 .eq. 2) then
+ do 23 iel = 1, nelx
+ x = 0.0
+ y = 0.0
+ do j=1, node
+ x = x+xx(ijk(j,iel))
+ y = y+yy(ijk(j,iel))
+ enddo
+ x = xs + x / real(node)
+ y = ys + y / real(node)
+ write(iunt,113) x, y, iel
+ 23 continue
+ endif
+c
+c draw lines
+c
+ write (iunt,*) ' \\Thicklines '
+ do 1 ii=1, npts
+ xi = xs+ xx(ii)
+ yi = ys+ yy(ii)
+ do 2 k=ia(ii),ia(ii+1)-1
+ j = ja(k)
+ if (j .le. ii) goto 2
+ xj = xs + xx(j)
+ yj = ys + yy(j)
+ xspan = xj - xi
+ yspan = yj - yi
+ tlen = sqrt(xspan**2 + yspan**2)
+ if (abs(xspan) .gt. abs(yspan)) then
+ ss = yspan / tlen
+ cc = sqrt(abs(1.0 - ss**2))
+ cc = sign(cc,xspan)
+ else
+ cc = xspan / tlen
+ ss = sqrt(abs(1.0 - cc**2))
+ ss = sign(ss,yspan)
+ endif
+c print *, ' ss -- cc ', ss, cc
+c write(iunt,114)xi,yi,xj,yj
+ write(iunt,114)xi+cc*rad,yi+ss*rad,xj-cc*rad,yj-ss*rad
+ 114 format('\\drawline(',f6.2,1h,,f6.2,')(',f6.2,1h,,f6.2,1h))
+c tlen = tlen - 2.0*cirr
+c write(iunt,114) xi+cc*cirr,yi+ss*cirr,cc,ss,tlen
+c 114 format('\\put(',f6.2,1h,,f6.2,'){\\line(',
+c * f6.2,1h,,f6.2,'){',f6.2,'}}')
+ 2 continue
+ 1 continue
+c-----------------------------------------------------------------------
+ if (job2 .eq. 0 .or. job2 .eq. 2) then
+ write (iunt,*) ' \\end{picture} '
+ write (iunt,*) ' \\end{document} '
+ endif
+c
+ return
+ end
diff --git a/UNSUPP/PLOTS/texplt1.f b/UNSUPP/PLOTS/texplt1.f
new file mode 100644
index 0000000..97f3661
--- /dev/null
+++ b/UNSUPP/PLOTS/texplt1.f
@@ -0,0 +1,243 @@
+ subroutine texplt(nrow,ncol,mode,ja,ia,munt,size,vsize,hsize,
+ * xleft,bot,job,title,ptitle,nlines,lines,iunt)
+c-----------------------------------------------------------------------
+ integer nrow,ncol,mode,iunt,ptitle,ja(*),ia(*),lines(nlines)
+ character title*(*), munt*2
+c-----------------------------------------------------------------------
+c allows to have several matrices in same picture by calling texplt
+c several times and exploiting job and different shifts.
+c-----------------------------------------------------------------------
+c input arguments description :
+c
+c nrow = number of rows in matrix
+c
+c ncol = number of columns in matrix
+c
+c mode = integer indicating whether the matrix is stored in
+c CSR mode (mode=0) or CSC mode (mode=1) or MSR mode (mode=2)
+c
+c ja = column indices of nonzero elements when matrix is
+c stored rowise. Row indices if stores column-wise.
+c ia = integer array of containing the pointers to the
+c beginning of the columns in arrays a, ja.
+c
+c munt = units used for sizes : either 'cm' or 'in'
+c
+c size = size of the matrix box in 'munt' units
+c
+c vsize = vertical size of the frame containing the picture
+c in 'munt' units
+c
+c hsize = horizontal size of the frame containing the picture
+c in 'munt' units
+c
+c xleft = position of left border of matrix in 'munt' units
+c
+c bot = position of bottom border of matrix in 'munt' units
+c
+c job = job indicator for preamble and post process
+c
+c can be thought of as a 2-digit number job = [job1,job2]
+c where job1 = job /10 , job2 = job - 10*job1 = mod(job,10)
+c job2 = 0: all preambles+end-document lines
+c job2 = 1: preamble only
+c job2 = 2: end-document only
+c anything else for job2: no preamble or end-docuiment lines
+c Useful for plotting several matrices in same frame.
+c
+c job1 indicates what to put for a nonzero dot.
+c job1 relates to preamble/post processing:
+c job1 = 0 : a filled squate
+c job1 = 1 : a filled circle
+c job1 = 2 : the message $a_{ij}$ where i,j are the trow/column
+c positions of the nonzero element.
+c
+c title = character*(*). a title of arbitrary length to be printed
+c as a caption to the matrix. Can be a blank character if no
+c caption is desired. Can be put on top or bottom of matrix
+c se ptitle.
+c
+c ptitle = position of title; 0 under the frame, else above
+c
+c nlines = number of separation lines to draw for showing a partionning
+c of the matrix. enter zero if no partition lines are wanted.
+c
+c lines = integer array of length nlines containing the coordinates of
+c the desired partition lines . The partitioning is symmetric:
+c a horizontal line across the matrix will be drawn in
+c between rows lines(i) and lines(i)+1 for i=1, 2, ..., nlines
+c an a vertical line will be similarly drawn between columns
+c lines(i) and lines(i)+1 for i=1,2,...,nlines
+c
+c iunt = logical unit number where to write the matrix into.
+c-----------------------------------------------------------------------
+ data haf /0.5/, zero/0.0/, conv/2.54/
+c-----------------------------------------------------------------------
+ n = ncol
+ if (mode .eq. 0) n = nrow
+ job1 = job /10
+ job2 = job - 10*job1
+ maxdim = max(nrow, ncol)
+ rwid = real(ncol-1)
+ rht = real(nrow-1)
+ unit0 = size/real(maxdim)
+ hsiz = hsize/unit0
+ vsiz = vsize/unit0
+ siz = size/unit0
+c
+c size of little box for each dot -- boxr = in local units
+c boxabs in inches (or cm)
+c
+ boxr = 0.6
+ boxabs = unit0*boxr
+c
+c spaces between frame to nearest box
+c
+ space = 0.03/unit0+(1.0-boxr)/2.0
+c
+c begin document generation
+c for very first call better have \unitlength set first..
+ if (job2 .le. 1) then
+ write (iunt,*) ' \\documentstyle[epic,12pt]{article} '
+ write (iunt,*) ' \\begin{document}'
+ write (iunt,100) unit0, munt
+ write (iunt,99) hsiz, vsiz
+ else
+c redeclare unitlength
+ write (iunt,100) unit0, munt
+ endif
+c----- always redefine units
+
+ if (job1 .eq. 0) then
+ write (iunt,101) boxabs, boxabs
+ else
+ write (iunt,102) boxabs/unit0
+ endif
+ 100 format(' \\setlength{\\unitlength}{',f5.3,a2,'}')
+ 99 format('\\begin{picture}(',f8.2,1h,,f8.2,1h))
+ 101 format('\\def\\boxd{\\vrule height',f7.4,'in width',f7.4,'in }')
+ 102 format('\\def\\boxd{\\circle*{',f7.4,'}}')
+c
+c draw a frame around the matrix
+c get shifts from real inches to local units
+c
+ xs = xleft/unit0 + (hsiz-siz)*0.5
+ ys = bot/unit0
+c
+ eps = 0.0
+ xmin = xs
+ xmax = xs +rwid + boxr + 2.0*space
+ ymin = ys
+ ymax = ys+rht + boxr + 2.0*space
+c
+c bottom margin between box and title
+c
+ xmargin = 0.30/unit0
+ if (munt .eq. 'cm' .or. munt .eq. 'CM') xmargin = xmargin*2.5
+ xtit = 0.5*(xmin+xmax)
+ xtit = xmin
+ ytit = ymax
+ if (ptitle .eq. 0) ytit = ymin - xmargin
+ xdim = xmax-xmin
+ ltit = LENSTR(title)
+ write(iunt,111) xtit,ytit,xdim,xmargin,title(1:ltit)
+c
+ 111 format ('\\put(',F6.2,',',F6.2,
+ * '){\\makebox(',F6.2,1h,F6.2,'){',A,2h}})
+c
+ write(iunt,*) ' \\thicklines'
+ write (iunt,108) xmin,ymin,xmax,ymin,xmax,ymax,
+ * xmin,ymax,xmin,ymin
+ 108 format('\\drawline',1h(,f8.2,1h,,f8.2,1h),
+ * 1h(,f8.2,1h,,f8.2,1h), 1h(,f8.2,1h,,f8.2,1h),
+ * 1h(,f8.2,1h,,f8.2,1h), 1h(,f8.2,1h,,f8.2,1h))
+c
+c draw the separation lines
+c
+c if (job1 .gt.0) then
+c xs = xs + 0.25
+c ys = ys + 0.25
+c endif
+ write(iunt,*) ' \\thinlines'
+ do 22 kol=1, nlines
+ isep = lines(kol)
+c
+c horizontal lines
+c
+ yy = ys + real(nrow-isep)
+ write(iunt,109) xmin, yy, xmax, yy
+c
+c vertical lines
+c
+ xx = xs+real(isep)
+ write(iunt,109) xx, ymin, xx, ymax
+ 22 continue
+c
+ 109 format('\\drawline',
+ * 1h(,f8.2,1h,,f8.2,1h), 1h(,f8.2,1h,,f8.2,1h))
+
+c-----------plotting loop ---------------------------------------------
+c
+c add some space right of the frame and up from the bottom
+c
+ xs = xs+space
+ ys = ys+space
+c-----------------------------------------------------------------------
+ do 1 ii=1, n
+ istart = ia(ii)
+ ilast = ia(ii+1)-1
+ if (mode .eq. 1) then
+ do 2 k=istart, ilast
+ if (job1 .le. 1) then
+ write(iunt,12) xs+real(ii-1),ys+real(nrow-ja(k))
+ else
+ write(iunt,13) xs+real(ii-1),ys+real(nrow-ja(k)),
+ * ii,ja(k)
+ endif
+ 2 continue
+ else
+ y = ys+real(nrow-ii)
+ do 3 k=istart, ilast
+ if (job1 .le. 1) then
+ write(iunt,12) xs+real(ja(k)-1), y
+ else
+ write(iunt,13) xs+real(ja(k)-1), y, ii, ja(k)
+ endif
+ 3 continue
+c add diagonal element if MSR mode.
+ if (mode .eq. 2)
+ * write(iunt,12) xs+real(ii-1), ys+real(nrow-ii)
+ endif
+ 1 continue
+c-----------------------------------------------------------------------
+ 12 format ('\\put(',F6.2,',',F6.2,')','{\\boxd}')
+ 13 format ('\\put(',F6.2,',',F6.2,')','{$a_{',i3,1h,,i3,'}$}')
+c-----------------------------------------------------------------------
+ if (job2 .eq. 0 .or. job2 .eq. 2) then
+ write (iunt,*) ' \\end{picture} '
+ write (iunt,*) ' \\end{document} '
+ endif
+c
+ return
+ end
+ integer function lenstr0(s)
+c-----------------------------------------------------------------------
+c return length of the string S
+c-----------------------------------------------------------------------
+ character*(*) s
+ integer len
+ intrinsic len
+ integer n
+c-----------------------------------------------------------------------
+ n = len(s)
+10 continue
+ if (s(n:n).eq.' ') then
+ n = n-1
+ if (n.gt.0) go to 10
+ end if
+ lenstr0 = n
+c
+ return
+c-----------------------------------------------------------------------
+ end
+c-----------------------------------------------------------------------
diff --git a/UNSUPP/README b/UNSUPP/README
new file mode 100644
index 0000000..98e0bbc
--- /dev/null
+++ b/UNSUPP/README
@@ -0,0 +1,57 @@
+
+ ----------
+ | UNSUPP |
+ ----------
+
+ This is meant to contain any subroutine that is not part
+ of SPARSKIT proper (for example preconditioners, iterative
+ solvers, plotting and other tools,...) but which are
+ nevertheless provided with the understanding that they may
+ not be the best codes around or that there is further work
+ needed on them..
+
+ CONTRIBUTIONS REQUESTED.
+ -----------------------
+ -----------------
+ Current contents:
+ -----------------
+SUBDIRECTORY BLAS1
+------------------
+
+* blas1.f : includes subroutines:
+ dcopy : copies a vector, x, to a vector, y.
+ ddot : dot product of two vectors.
+ csscal: scales a complex vector by a real constant.
+ cswap : interchanges two vectors.
+ csrot : applies a plane rotation.
+ cscal : scales a vector by a constant.
+ ccopy : copies a vector, x, to a vector, y.
+ drotg : construct givens plane rotation.
+ drot : applies a plane rotation.
+ dswap : interchanges two vectors.
+ dscal : scales a vector by a constant.
+ daxpy : constant times a vector plus a vector.
+
+SUBDIRECTORY PLOTS
+------------------
+
+* psgrd.f contains subroutine "psgrid" which plots a symmetric graph.
+
+* texplt1.f contains subroutine "texplt" allows several matrices
+ in the same picture by calling texplt several times and exploiting job and
+ different shifts.
+
+* texgrid1.f contains subroutine "texgrd" which generates tex commands
+ for plotting a symmetric graph associated with a mesh. Allows
+ several grids in the same picture by calling texgrd several times and
+ exploiting job and different shifts.
+
+
+ SUBDIRECTORY MATEXP
+ -------------------
+ routines related to matrix exponentials.
+
+
+* exppro.f computes w=exp( t A) v -- + a simple test program rexp.f
+* phipro.f computes w = phi(At)v, where phi(x)=(1-exp(x))/x;
+ Also allows to solve the P.D.E. system y'= A y + b
diff --git a/dotests b/dotests
new file mode 100755
index 0000000..82aeddc
--- /dev/null
+++ b/dotests
@@ -0,0 +1,144 @@
+#!/bin/sh
+#
+# SPARSKIT script for making and running all test programs.
+# Last modified: May 9, 1994.
+
+make all
+cd BLASSM
+echo Making tests in BLASSM directory
+make mvec.ex
+make tester.ex
+cd ..
+cd FORMATS
+echo Making tests in FORMATS directory
+make un.ex
+make fmt.ex
+make rvbr.ex
+cd ..
+cd INFO
+echo Making tests in INFO directory
+make info1.ex
+cd ..
+cd INOUT
+echo Making tests in INOUT directory
+make chk.ex
+make hb2ps.ex
+make hb2pic.ex
+cd ..
+cd ITSOL
+echo Making tests in ITSOL directory
+make riters.ex
+make rilut.ex
+make riter2.ex
+cd ..
+cd MATGEN/FDIF
+echo Making tests in MATGEN/FDIF directory
+make gen5.ex
+make genbl.ex
+cd ../..
+cd MATGEN/FEM
+echo Making tests in MATGEN/FEM directory
+make fem.ex
+cd ../..
+cd MATGEN/MISC
+echo Making tests in MATGEN/MISC directory
+make sobel.ex
+make zlatev.ex
+make markov.ex
+cd ../..
+cd UNSUPP/MATEXP
+echo Making tests in UNSUPP/MATEXP directory
+make exp.ex
+make phi.ex
+cd ../..
+
+# run all test programs
+
+cd BLASSM
+echo Testing BLASSM/mvec.ex ---------------------------------------
+./mvec.ex
+echo Testing BLASSM/tester.ex ---------------------------------------
+./tester.ex
+cd ..
+cd FORMATS
+echo Testing FORMATS/un.ex ---------------------------------------
+./un.ex
+cat unary.mat
+echo Testing FORMATS/fmt.ex ---------------------------------------
+./fmt.ex
+grep ERROR *.mat
+ls -s *.mat
+echo Testing FORMATS/rvbr.ex ---------------------------------------
+./rvbr.ex
+cd ..
+cd INFO
+echo Testing INFO/info1.ex ---------------------------------------
+./info1.ex < saylr1
+cd ..
+cd INOUT
+echo Testing INOUT/chk.ex ---------------------------------------
+./chk.ex
+echo Testing INOUT/hb2ps.ex ---------------------------------------
+./hb2ps.ex < ../INFO/saylr1 > saylr1.ps
+echo Testing INOUT/hb2pic.ex ---------------------------------------
+./hb2pic.ex < ../INFO/saylr1 > saylr1.pic
+cd ..
+cd ITSOL
+echo Testing ITSOL/riters.ex ---------------------------------------
+./riters.ex
+echo Testing ITSOL/rilut.ex ---------------------------------------
+./rilut.ex
+echo Testing ITSOL/riter2.ex ---------------------------------------
+./riter2.ex < ../INFO/saylr1
+cd ..
+cd MATGEN/FDIF
+echo Testing MATGEN/FDIF/gen5.ex ---------------------------------------
+./gen5.ex << \EOF
+10 10 1
+testpt.mat
+EOF
+echo Testing MATGEN/FDIF/genbl.ex ---------------------------------------
+./genbl.ex << \EOF
+10 10 1
+4
+testbl.mat
+EOF
+cd ../..
+cd MATGEN/FEM
+echo Testing MATGEN/FEM/fem.ex ---------------------------------------
+./fem.ex << \EOF
+2
+2
+EOF
+cat mat.hb
+cd ../..
+cd MATGEN/MISC
+echo Testing MATGEN/MISC/sobel.ex ---------------------------------------
+./sobel.ex << \EOF
+10
+EOF
+echo Testing MATGEN/MISC/zlatev.ex ---------------------------------------
+./zlatev.ex
+cat zlatev1.mat
+cat zlatev2.mat
+cat zlatev3.mat
+echo Testing MATGEN/MISC/markov.ex ---------------------------------------
+./markov.ex << \EOF
+10
+EOF
+cat markov.mat
+cd ../..
+cd UNSUPP/MATEXP
+echo Testing UNSUPP/MATEXP/exp.ex ---------------------------------------
+./exp.ex << \EOF
+0.1
+0.00001
+10
+EOF
+echo Testing UNSUPP/MATEXP/phi.ex ---------------------------------------
+./phi.ex << \EOF
+0.1
+0.00001
+10
+EOF
+cd ../..
diff --git a/logfile b/logfile
new file mode 100644
index 0000000..918c71f
--- /dev/null
+++ b/logfile
@@ -0,0 +1,329 @@
+
+----------------------------------------------------------------------
+SPARSKIT Revision History
+------------------------------------------------------------------------
+
+May 9, 1994 (Version 2)
+
+Warning:
+The interface for gen57pt has changed.
+The interface for csrbnd has changed.
+The interface for bsrcsr has changed.
+
+New or rearranged modules:
+ITSOL/ilut.f -- four preconditioners (old UNSUPP/SOLVERS plus ilutp)
+ITSOL/iters.f -- nine iterative solvers using reverse communication
+MATGEN -- rearranged into three subdirectories: FDIF, FEM, MISC.
+MATGEN/MISC/sobel.f-- generate matrices from a statistical application
+ORDERINGS/ccn -- routines for strongly connected components
+ORDERINGS/color.f -- coloring based routines for reordering
+ORDERINGS/levset.f -- level set based routines for reordering
+UNSUPP/PLOTS -- many routines have been moved to the INOUT module
+
+New format: VBR (Variable block row)
+------------------------------------------------------------------------
+May 25, 1994
+Fixed a bug in FORMATS/unary.f/levels, found by Aart J.C. Bik, Leiden.
+------------------------------------------------------------------------
+June 3, 1994
+The symmetric and nonsymmetric carpenter square format has been renamed
+to the symmetric and unsymmetric sparse skyline format. This is simply
+a name change for the functions:
+ csrucs to csruss
+ ucscsr to usscsr
+ csrscs to csrsss
+ scscsr to ssscsr
+This is a new format that was not in version 1 of SPARSKIT.
+------------------------------------------------------------------------
+June 27, 1994
+
+The function ssrcsr has changed, to make it more flexible (K. Wu, UMN).
+The old version will still be available in xssrcsr, but may be deleted
+in the near future. Please let us know of any bugs, or errors in the
+code documentation.
+
+The interface to msrcsr has changed, to make the function in place
+(R. Bramley, Indiana).
+
+A number of minor bug fixes to the INOUT module (R. Bramley, Indiana).
+
+ICOPY in ccn.f was renamed to CCNICOPY to eliminate name conflicts
+with other libraries.
+
+Very minor typographical fixes were made to the paper.* documentation.
+------------------------------------------------------------------------
+August 3, 1994
+
+dinfo13.f was modified very slightly to handle skew-symmetric matrices.
+------------------------------------------------------------------------
+August 8, 1994
+
+Bug fixed in usscsr (D. Su).
+
+Bug fixed in ssrcsr (K. Wu).
+------------------------------------------------------------------------
+August 18, 1994
+
+New, more efficient version of cooell. The old version will still be
+available in xcooell, but may be deleted in the near future. (K. Wu)
+
+Bug fixed in INFO/infofun/ansym. (K. Wu)
+------------------------------------------------------------------------
+September 22, 1994
+
+Bug fixed in FORMATS/unary/getdia. (John Red-horse, Sandia)
+
+Changes to ITSOL/iters.f:
+Bug fix in TFQMR; initialization of workspace; number of matrix-vector
+multiplications reported now includes those done in initialization;
+added routine FOM (Full Orthogonalization Method). (K. Wu)
+
+This version has only been tested on Solaris, and the test script
+output is in out.new. The other outputs are somewhat out of date.
+The changes have not been major; please let us know if you find
+any incompatibilities. Thanks. (E. Chow)
+------------------------------------------------------------------------
+October 10, 1994
+
+formats.f: revised ssrcsr to be able to sort the column of the matrix
+produced, revised cooell to fill the unused entries in AO,JAO with zero
+diagonal elements. (K. Wu)
+
+unary.f: new routine clncsr for removing duplicate entries, sorting
+columns of the input matrix, it requires less work space than csort.
+(K. Wu)
+
+iters.f: bug fix in fom. (K. Wu)
+
+chkfmt1.f (test program): bug fix in call to ssrcsr.
+
+dotests script: slight modification when running fmt.ex
+
+matvec.f: added atmuxr, Tranpose(A) times a vector, where A is rectangular
+in CSR format. Also useful for A times a vector, where A is rectangular
+in CSC format. Very similar to atmux. (E. Chow)
+------------------------------------------------------------------------
+October 17, 1994
+
+Minor fix to ilut.f, proper stopping when maxits is a multiple of the
+Krylov subspace size.
+
+A number of changes to iters.f:
+(1) add reorthgonalization to the Modified Gram-Schmidt procedures;
+(2) check number of matrix-vector multiplications used at the end of
+evey Arnoldi step;
+(3) in the initialization stage of the iterative solvers, clear fpar
+elements to zero.
+------------------------------------------------------------------------
+November 16, 1994
+
+Selective reorthogonalization replaces reorthogonalization change
+of Oct. 17, 1994.
+------------------------------------------------------------------------
+November 23, 1994
+
+Added csrcsc2, a minor variation on csrcsc for rectangular matrices.
+csrcsc now calls csrcsc2.
+
+Removed a useless line in infofun.f that could give a compiler warning.
+
+In the ILUT preconditioner, lfil-1 new fill-ins for rows in the
+strictly upper part was used. This has been changed to lfil,
+to be consistent with the strictly lower part.
+
+Replaced levset.f with dsepart.f, which adds a number of new partitioners:
+rdis, dse2way, dse, in addition to the original dblstr.
+The new perphn subroutine no longer takes the iperm array.
+------------------------------------------------------------------------
+January 3, 1995
+
+FORMATS/formats.f:ellcsr ia(1) was not set. (Reported by J. Schoon.)
+------------------------------------------------------------------------
+January 30, 1995
+
+BLASSM/blassm.f:amub fixed the documentation. (Reported by D. O'Leary.)
+------------------------------------------------------------------------
+February 27, 1995
+
+iters.f: the reverse communication protocol has been augmented to make
+performing users own convergence test easier. minor bug fixes.
+
+unary.f: subroutine clncsr is slightly changed so that it will remove
+zero entries. also minor corrections to its documentation.
+
+formats.f: subroutine ssrcsr is slightly changed so it may optionally
+remove zero entries. also minor corrections to its documentation.
+
+infofun.f: subroutine ansym is rewritten to compute the Frobineus norm
+of the pattern-nonsymmetric part directly insead of computing it from
+the difference between the Frobineus of the whole matrix and its
+pattern-symmetric part. This should make the answer of 'FAN' more
+reliable.
+------------------------------------------------------------------------
+March 21, 1995
+
+Bug fix in iters.f:fom.
+Also, FOM, GMRES, FGMRES modified so that if a zero pivot is
+encountered in the triangular solve part of the algorithm,
+the solve is truncated.
+
+The latest output of the dotests script as run on a solaris 2 machine
+is in out.sol2.
+------------------------------------------------------------------------
+March 27, 1995
+
+Fixes to ILUT and ILUTP.
+Backed out of the change of Nov. 23, 1994. The original code was
+correct (lenu includes the diagonal).
+A smaller drop tolerance than prescribed was used (namely, by
+the 1-norm of the row); this has now been fixed.
+------------------------------------------------------------------------
+April 12, 1995
+
+Minor fix in rilut.f. A duplicate call to ilut has been removed.
+------------------------------------------------------------------------
+April 21, 1995
+
+Cleaner versions of ILUT and ILUTP. Note that the interface has been
+changed slightly (workspace parameters have been coalesced), and the
+definition of lfil has changed.
+ILUK, the standard level ILU(k), has been added to ilut.f.
+Due to these changes, ilut.f, and rilut.f have changed.
+Also, riters.f riter2.f have changed where they call ilut.
+
+The Block Sparse Row (BSR) format has changed, so that entries are
+stored in A(ni,ni,nnz), rather than A(nnz,ni,ni), where the blocks
+are ni by ni, and there are nnz blocks. This stores the entries of
+the blocks contiguously so that they may be passed to other subroutines.
+As a result of this change, the following codes have changed:
+FORMATS/formats.f:bsrcsr - additionally takes extra workspace
+FORMATS/formats.f:csrbsr
+MATGEN/FDID/genmat.f:gen57bl - output n is now block dimension
+FORMATS/chkfmt1.f
+FORMATS/rvbr.f
+MATGEN/FDIF/rgenblk.f
+BLASSM/rmatvec.f
+
+The latest output of the dotests script from our Solaris machines here
+is in out.04-21-95.
+------------------------------------------------------------------------
+April 22, 1995
+
+Now you can ask csrbsr to tell you the number of block nonzeros beforehand.
+Also, a minor fix if job.eq.0.
+------------------------------------------------------------------------
+April 25, 1995
+
+csrbsr cleaned up even more.
+------------------------------------------------------------------------
+May 22, 1995
+
+iters.f - fixed rare bug in bcg and bcgstab: termination test not done
+properly if they breakdown on the first step.
+------------------------------------------------------------------------
+July 27, 1995
+
+Fixed a bug in the header documentation for csrcsc(), describing
+the appending of data structures. Detected by Dan Stanescu, Concordia.
+
+Fixed compilation errors in UNSUPP/PLOTS/texgrid1.f for IBM machines,
+detected by Regis Gras, Laboratoire CEPHAG.
+------------------------------------------------------------------------
+Sept. 22, 1995
+
+Fixed a bug in the ILUT/ILUTP routines -- found by Larry Wigton
+[Boeing] This bug caused small elements to be stored in L factor
+produced by ILUT. Recall that the ILUT codes have been revised on
+April 21 line above and there are changes in meanings of the
+parameters and calling sequences. The drop strategy used has also
+been modified slightly.
+
+We also added two new preconditioning routines named ILUD and ILUDP
+[The difference between these and ILUT is that there is no control of
+storage. Drop strategy is controled by only one parameter (tol). [This
+should be bigger than in ILUT in general.]
+-----------------------------------------------------------------------
+Sept. 26, 1995
+
+infofun.f:ansym was improved again.
+-----------------------------------------------------------------------
+Feb 17th, 1996:
+ Bug fix in getdia (bug reported by Norm Fuchs, Purdue).
+-----------------------------------------------------------------------
+
+August 13th, 1996
+ 1. A few more fixes to ILUT, ILUTP [ILUTP did not give the same result as
+ ILUT when pivoting is not done. This is now fixed.
+ 2. Small bug in (SPARSKIT2/ITSOL/iters.f) subroutine tidycg reported
+ by Laura Dutto.
+ 3. documentation error in minor (SPARSKIT2/ITSOL/iters.f) subroutine
+ FGMRES requires more storage than stated.
+
+Sep. 6, 1997
+ one routine (dperm1) has been added to FORMATS/unary.f
+ (slightly modified from PSPARSIB).. YS
+
+Nov. 20, 1997
+ Implicit none caused some minor compilation problems because of
+ order of declarations [reported by Stefan Nilsson (Chalmers) and
+ Christer Andersson (NADA, Sweden)]. Fixed by changing order of
+ declarations. YS
+
+-----------------------------------------------------------------------
+
+Aug. 16th, 1998.
+ removed useless argument in function mindom (ORDERINGS/dsepart.f)
+ added one option to gen57pt in MATGEN/FDIF/matgen.f
+
+Sept. 2nd 1998,
+ - fixed yet other compiler problems with double declarations of
+ integer n in ilut.f -- these show up with gnu f77.
+ - fixed an incorrect declaration of arraw iwk in coicsr in
+ FORMATS/formats (reported by Dan Lee -- bmw)
+ - removed unnecessary declaration of stopbis in tfqmr
+ - lenr was not initialized in nonz() in infofun (reported by Massino
+ Caspari).
+ - a spurious "g" character was inadvertantly introduced in the previous
+ version. [reported by Mike Botchev (CWI, NL)..
+
+Sept. 30th, 1998
+ - fixed a bug in routine apldia (in BLASSM/blassm.f). The code worked
+ only for in place cases.
+-----------------------------------------------------------------------
+
+June 16, 1999
+ - the finite element matrix generation suite has been updated
+ (I. Moulistas) - three files have changed elmtlib2.f femgen.f meshes.f
+ in the directory MATGEN/FEM
+ - the finite difference matrix generation routione matgen.f has been
+ changed [SPARSKIT2/MATGEN/FDIF/genmat.f] - bug reported by David
+ Hyson and corrected by Kesheng John Wu..
+ - Adoption of the GNU general public licencing - GNU licence agreement
+ added and terms in the main README file changed..
+
+March 3, 2001: fix documentation glitch regarding size of w in ilut routine.
+
+July 12, 2001: iband was not initialized in bandwidth -- warning: quite
+ a few bugs found so far in infofun!
+
+July 24, 2001: another bug in infofun (in ansym).. no fun YS.
+
+-----------------------------------------------------------------------
+
+Sep 2003: fixed returned nrhs in readmtc
+
+Dec. 29th, 03 -- it looks like the March 3, 2001 correction was not done
+[mishandled versions!] -- put new version..
+
+Mar. 08, 2005: revamping of the old files in DOC - contributed by
+ Daniel Heiserer (Thanks!)
+
+Mar. 08, 2005: Moved to the Lesser GNU license instead of GNU -
+
+Oct. 20, 2005: a few bug fixes reported by E. Canot (irisa).
+
+Nov. 18, 2009: a bug in csort [made assumption that ncol<nrow]
+ reported by L. M. Baker.
+-----------------------------------------------------------------------
+
+
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..643f81b
--- /dev/null
+++ b/makefile
@@ -0,0 +1,153 @@
+#-----------------------------------------------------------------------
+# S P A R S K I T makefile
+#-----------------------------------------------------------------------
+#
+# There are three types of source files in SPARSKIT:
+# 1. library source files
+# 2. non-library and unsupported source files
+# 3. test programs
+#
+# Simply type "make" to make the SPARSKIT library.
+#
+# "make all" will additionally make all the unsupported objects.
+#
+# To make the test programs, use the makefiles in each subdirectory,
+# or see the dotests script.
+# There are no references to test programs in this makefile.
+# Some test programs use the non-library objects from other directories,
+# so do a "make all" before making test programs.
+#
+# Last Updated: May 9, 1994.
+
+SHELL = /bin/sh
+F77 = f77
+# F77 = f77
+# AR = ar rcv
+AR = ar -rcv
+# OPT = -c
+# OPT = -c -static -64 -mips4 -O3 -r10000
+OPT = -c -O
+
+# Cray options
+#F77 = cf77
+#AR = bld rv
+#OPT = -c -Wf"-dp"
+
+#
+# library objects
+#
+OBJ = BLASSM/blassm.o \
+ BLASSM/matvec.o \
+ FORMATS/formats.o \
+ FORMATS/unary.o \
+ INFO/infofun.o \
+ INOUT/inout.o \
+ ITSOL/ilut.o \
+ ITSOL/iters.o \
+ MATGEN/FDIF/genmat.o \
+ MATGEN/FEM/elmtlib2.o \
+ MATGEN/FEM/femgen.o \
+ MATGEN/FEM/meshes.o \
+ MATGEN/MISC/sobel.o \
+ MATGEN/MISC/zlatev.o \
+ ORDERINGS/ccn.o \
+ ORDERINGS/color.o \
+ ORDERINGS/dsepart.o
+
+#
+# non-library and unsupported objects
+#
+OBJ2 = ITSOL/itaux.o \
+ MATGEN/FDIF/functns.o \
+ MATGEN/FEM/functns2.o \
+ UNSUPP/BLAS1/blas1.o \
+ UNSUPP/MATEXP/exppro.o \
+ UNSUPP/MATEXP/phipro.o \
+ UNSUPP/PLOTS/psgrd.o \
+ UNSUPP/PLOTS/texgrid1.o \
+ UNSUPP/PLOTS/texplt1.o
+
+DIRS = . \
+ BLASSM \
+ FORMATS \
+ INFO \
+ INOUT \
+ ITSOL \
+ MATGEN/FDIF \
+ MATGEN/FEM \
+ MATGEN/MISC \
+ ORDERINGS \
+ UNSUPP/BLAS1 \
+ UNSUPP/MATEXP \
+ UNSUPP/PLOTS
+
+lib libskit.a: $(OBJ)
+ $(AR) libskit.a $(OBJ)
+## ranlib libskit.a
+
+# do not ranlib on some architectures
+
+clean:
+ @for dir in $(DIRS) ;\
+ do \
+ echo cleaning $$dir ;\
+ (cd $$dir; rm -f *~ *.o *.ex .,* fort.* ftn?? *.mat *.pic *.ps *.trace core) ;\
+ done
+
+tarit:
+ (cd ..; tar cvf - SPARSKIT2 | gzip -c > SPARSKIT2.tar.gz)
+
+all: $(OBJ) $(OBJ2) libskit.a
+
+BLASSM/blassm.o: BLASSM/blassm.f
+ (cd BLASSM ; $(F77) $(OPT) blassm.f)
+BLASSM/matvec.o: BLASSM/matvec.f
+ (cd BLASSM ; $(F77) $(OPT) matvec.f)
+FORMATS/formats.o: FORMATS/formats.f
+ (cd FORMATS ; $(F77) $(OPT) formats.f)
+FORMATS/unary.o: FORMATS/unary.f
+ (cd FORMATS ; $(F77) $(OPT) unary.f)
+INFO/infofun.o: INFO/infofun.f
+ (cd INFO ; $(F77) $(OPT) infofun.f)
+INOUT/inout.o: INOUT/inout.f
+ (cd INOUT; $(F77) $(OPT) inout.f)
+ITSOL/ilut.o: ITSOL/ilut.f
+ (cd ITSOL; $(F77) $(OPT) ilut.f)
+ITSOL/iters.o: ITSOL/iters.f
+ (cd ITSOL; $(F77) $(OPT) iters.f)
+ITSOL/itaux.o: ITSOL/itaux.f
+ (cd ITSOL; $(F77) $(OPT) itaux.f)
+MATGEN/FDIF/genmat.o: MATGEN/FDIF/genmat.f
+ (cd MATGEN/FDIF ; $(F77) $(OPT) genmat.f)
+MATGEN/FDIF/functns.o: MATGEN/FDIF/functns.f
+ (cd MATGEN/FDIF ; $(F77) $(OPT) functns.f)
+MATGEN/FEM/elmtlib2.o: MATGEN/FEM/elmtlib2.f
+ (cd MATGEN/FEM ; $(F77) $(OPT) elmtlib2.f)
+MATGEN/FEM/femgen.o: MATGEN/FEM/femgen.f
+ (cd MATGEN/FEM ; $(F77) $(OPT) femgen.f)
+MATGEN/FEM/functns2.o : MATGEN/FEM/functns2.f
+ (cd MATGEN/FEM ; $(F77) $(OPT) functns2.f)
+MATGEN/FEM/meshes.o: MATGEN/FEM/meshes.f
+ (cd MATGEN/FEM ; $(F77) $(OPT) meshes.f)
+MATGEN/MISC/sobel.o: MATGEN/MISC/sobel.f
+ (cd MATGEN/MISC ; $(F77) $(OPT) sobel.f)
+MATGEN/MISC/zlatev.o: MATGEN/MISC/zlatev.f
+ (cd MATGEN/MISC ; $(F77) $(OPT) zlatev.f)
+ORDERINGS/ccn.o: ORDERINGS/ccn.f
+ (cd ORDERINGS ; $(F77) $(OPT) ccn.f)
+ORDERINGS/color.o: ORDERINGS/color.f
+ (cd ORDERINGS ; $(F77) $(OPT) color.f)
+ORDERINGS/dsepart.o: ORDERINGS/dsepart.f
+ (cd ORDERINGS ; $(F77) $(OPT) dsepart.f)
+UNSUPP/BLAS1/blas1.o: UNSUPP/BLAS1/blas1.f
+ (cd UNSUPP/BLAS1 ; $(F77) $(OPT) blas1.f)
+UNSUPP/MATEXP/exppro.o: UNSUPP/MATEXP/exppro.f
+ (cd UNSUPP/MATEXP ; $(F77) $(OPT) exppro.f)
+UNSUPP/MATEXP/phipro.o: UNSUPP/MATEXP/phipro.f
+ (cd UNSUPP/MATEXP ; $(F77) $(OPT) phipro.f)
+UNSUPP/PLOTS/psgrd.o : UNSUPP/PLOTS/psgrd.f
+ (cd UNSUPP/PLOTS ; $(F77) $(OPT) psgrd.f)
+UNSUPP/PLOTS/texgrid1.o : UNSUPP/PLOTS/texgrid1.f
+ (cd UNSUPP/PLOTS ; $(F77) $(OPT) texgrid1.f)
+UNSUPP/PLOTS/texplt1.o : UNSUPP/PLOTS/texplt1.f
+ (cd UNSUPP/PLOTS ; $(F77) $(OPT) texplt1.f)
diff --git a/sgrep b/sgrep
new file mode 100755
index 0000000..4fe735d
--- /dev/null
+++ b/sgrep
@@ -0,0 +1,5 @@
+# Usage: sgrep pattern
+# Searches all source files for 'pattern'.
+# Regular expressions should be enclosed in quotes "".
+
+find . -name '*.f' -exec grep "$*" /dev/null {} \;