[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 05/57: codec2 library update
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 05/57: codec2 library update |
Date: |
Wed, 21 May 2014 03:10:23 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
trondeau pushed a commit to branch master
in repository gnuradio.
commit b31467427ab5d10d58ea2c4b330271159564ad85
Author: A. Maitland Bottoms <address@hidden>
Date: Mon Apr 7 23:41:28 2014 -0400
codec2 library update
---
gr-vocoder/lib/codec2/CMakeLists.txt | 112 +-
gr-vocoder/lib/codec2/ampexp.c | 1093 ++++
gr-vocoder/lib/codec2/{phase.h => ampexp.h} | 23 +-
gr-vocoder/lib/codec2/c2dec.c | 199 +-
gr-vocoder/lib/codec2/c2demo.c | 38 +-
gr-vocoder/lib/codec2/c2enc.c | 71 +-
gr-vocoder/lib/codec2/c2sim.c | 1131 +++-
gr-vocoder/lib/codec2/codebook/dlsp1.txt | 20 +-
gr-vocoder/lib/codec2/codebook/dlsp10.txt | 28 +-
gr-vocoder/lib/codec2/codebook/dlsp2.txt | 20 +-
gr-vocoder/lib/codec2/codebook/dlsp3.txt | 30 +-
gr-vocoder/lib/codec2/codebook/dlsp4.txt | 32 +-
gr-vocoder/lib/codec2/codebook/dlsp5.txt | 32 +-
gr-vocoder/lib/codec2/codebook/dlsp6.txt | 32 +-
gr-vocoder/lib/codec2/codebook/dlsp7.txt | 28 +-
gr-vocoder/lib/codec2/codebook/dlsp8.txt | 28 +-
gr-vocoder/lib/codec2/codebook/dlsp9.txt | 28 +-
gr-vocoder/lib/codec2/codebook/gecb.txt | 257 +
gr-vocoder/lib/codec2/codebook/lsp45678910.txt | 4097 ++++++++++++
gr-vocoder/lib/codec2/codebook/lsp8910.txt | 65 -
gr-vocoder/lib/codec2/codebook/lspdt1.txt | 9 +
gr-vocoder/lib/codec2/codebook/lspdt10.txt | 3 +
gr-vocoder/lib/codec2/codebook/lspdt2.txt | 9 +
gr-vocoder/lib/codec2/codebook/lspdt3.txt | 5 +
gr-vocoder/lib/codec2/codebook/lspdt4.txt | 5 +
gr-vocoder/lib/codec2/codebook/lspdt5.txt | 5 +
gr-vocoder/lib/codec2/codebook/lspdt6.txt | 5 +
gr-vocoder/lib/codec2/codebook/lspdt7.txt | 3 +
gr-vocoder/lib/codec2/codebook/lspdt8.txt | 3 +
gr-vocoder/lib/codec2/codebook/lspdt9.txt | 3 +
gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt | 8317 ++++++++++++++++++++++++
gr-vocoder/lib/codec2/codebook/lspjvm1.txt | 513 ++
gr-vocoder/lib/codec2/codebook/lspjvm2.txt | 513 ++
gr-vocoder/lib/codec2/codebook/lspjvm3.txt | 513 ++
gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt | 257 +
gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt | 129 +
gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt | 65 +
gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt | 65 +
gr-vocoder/lib/codec2/codec2.c | 1385 +++-
gr-vocoder/lib/codec2/codec2.h | 54 +-
gr-vocoder/lib/codec2/codec2_fdmdv.h | 124 +
gr-vocoder/lib/codec2/{nlp.h => codec2_fifo.h} | 36 +-
gr-vocoder/lib/codec2/codec2_internal.h | 71 +-
gr-vocoder/lib/codec2/defines.h | 12 +-
gr-vocoder/lib/codec2/dump.c | 212 +-
gr-vocoder/lib/codec2/dump.h | 12 +-
gr-vocoder/lib/codec2/fdmdv.c | 1569 +++++
gr-vocoder/lib/codec2/fdmdv_internal.h | 176 +
gr-vocoder/lib/codec2/fft.c | 101 -
gr-vocoder/lib/codec2/fft.h | 16 -
gr-vocoder/lib/codec2/fifo.c | 142 +
gr-vocoder/lib/codec2/fq20.sh | 8 -
gr-vocoder/lib/codec2/hanning.h | 644 ++
gr-vocoder/lib/codec2/interp.c | 397 +-
gr-vocoder/lib/codec2/interp.h | 14 +-
gr-vocoder/lib/codec2/listensim.sh | 9 -
gr-vocoder/lib/codec2/lpc.c | 94 +-
gr-vocoder/lib/codec2/lpc.h | 5 +-
gr-vocoder/lib/codec2/lsp.c | 2 +-
gr-vocoder/lib/codec2/machdep.h | 51 +
gr-vocoder/lib/codec2/nlp.c | 285 +-
gr-vocoder/lib/codec2/nlp.h | 7 +-
gr-vocoder/lib/codec2/os.h | 53 +
gr-vocoder/lib/codec2/pack.c | 22 +-
gr-vocoder/lib/codec2/phase.c | 123 +-
gr-vocoder/lib/codec2/phase.h | 7 +-
gr-vocoder/lib/codec2/phaseexp.c | 1455 +++++
gr-vocoder/lib/codec2/{phase.h => phaseexp.h} | 21 +-
gr-vocoder/lib/codec2/pilot_coeff.h | 34 +
gr-vocoder/lib/codec2/postfilter.c | 21 +-
gr-vocoder/lib/codec2/quantise.c | 1975 ++++--
gr-vocoder/lib/codec2/quantise.h | 101 +-
gr-vocoder/lib/codec2/rn.h | 964 +++
gr-vocoder/lib/codec2/sim.sh | 22 -
gr-vocoder/lib/codec2/sine.c | 136 +-
gr-vocoder/lib/codec2/sine.h | 12 +-
gr-vocoder/lib/codec2/test_bits.h | 164 +
77 files changed, 26505 insertions(+), 1817 deletions(-)
diff --git a/gr-vocoder/lib/codec2/CMakeLists.txt
b/gr-vocoder/lib/codec2/CMakeLists.txt
index f4ccd22..ac25b7c 100644
--- a/gr-vocoder/lib/codec2/CMakeLists.txt
+++ b/gr-vocoder/lib/codec2/CMakeLists.txt
@@ -73,20 +73,101 @@ add_custom_command(
)
########################################################################
-# Create codebookdvq
+# Create codebookvq
########################################################################
-set(CODEBOOKSDVQ
- ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp1.txt
- ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp2.txt
- ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp3.txt
- ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp4.txt
- ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp5.txt
+set(CODEBOOKSVQ
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp1.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp2.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp3.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp4.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp45678910.txt
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+ DEPENDS generate_codebook ${CODEBOOKSVQ}
+ COMMAND generate_codebook lsp_cbvq ${CODEBOOKSVQ} >
${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+)
+
+########################################################################
+# Create codebookjnd
+########################################################################
+set(CODEBOOKSJND
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp1.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp2.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp3.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp4.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjnd5-10.txt
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+ DEPENDS generate_codebook ${CODEBOOKSJND}
+ COMMAND generate_codebook lsp_cbjnd ${CODEBOOKSJND} >
${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+)
+
+########################################################################
+# Create codebookjvm
+########################################################################
+set(CODEBOOKSJVM
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm1.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm2.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm3.txt
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+ DEPENDS generate_codebook ${CODEBOOKSJVM}
+ COMMAND generate_codebook lsp_cbjvm ${CODEBOOKSJVM} >
${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+)
+
+########################################################################
+# Create codebookvqanssi
+########################################################################
+set(CODEBOOKSVQANSSI
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi1.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi2.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi3.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi4.txt
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+ DEPENDS generate_codebook ${CODEBOOKSVQANSSI}
+ COMMAND generate_codebook lsp_cbvqanssi ${CODEBOOKSVQANSSI} >
${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+)
+
+########################################################################
+# Create codebookdt
+########################################################################
+set(CODEBOOKSDT
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt1.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt2.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt3.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt4.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt5.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt6.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt7.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt8.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt9.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt10.txt
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
+ DEPENDS generate_codebook ${CODEBOOKSDT}
+ COMMAND generate_codebook lsp_cbdt ${CODEBOOKSDT} >
${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
)
+########################################################################
+# Create codebookge
+########################################################################
+set(CODEBOOKSGE ${CMAKE_CURRENT_SOURCE_DIR}/codebook/gecb.txt)
+
add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
- DEPENDS generate_codebook ${CODEBOOKSDVQ}
- COMMAND generate_codebook lsp_cbdvq ${CODEBOOKSDVQ} >
${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+ DEPENDS generate_codebook ${CODEBOOKSGE}
+ COMMAND generate_codebook ge_cb ${CODEBOOKSGE} >
${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
)
########################################################################
@@ -95,7 +176,13 @@ add_custom_command(
list(APPEND gr_vocoder_sources
${CMAKE_CURRENT_BINARY_DIR}/codebook.c
${CMAKE_CURRENT_BINARY_DIR}/codebookd.c
- ${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
+ ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+
${CMAKE_CURRENT_SOURCE_DIR}/dump.c
${CMAKE_CURRENT_SOURCE_DIR}/lpc.c
@@ -103,7 +190,8 @@ list(APPEND gr_vocoder_sources
${CMAKE_CURRENT_SOURCE_DIR}/postfilter.c
${CMAKE_CURRENT_SOURCE_DIR}/sine.c
${CMAKE_CURRENT_SOURCE_DIR}/codec2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/fft.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/fifo.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/fdmdv.c
${CMAKE_CURRENT_SOURCE_DIR}/kiss_fft.c
${CMAKE_CURRENT_SOURCE_DIR}/interp.c
${CMAKE_CURRENT_SOURCE_DIR}/lsp.c
diff --git a/gr-vocoder/lib/codec2/ampexp.c b/gr-vocoder/lib/codec2/ampexp.c
new file mode 100644
index 0000000..ccec6dc
--- /dev/null
+++ b/gr-vocoder/lib/codec2/ampexp.c
@@ -0,0 +1,1093 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: ampexp.c
+ AUTHOR......: David Rowe
+ DATE CREATED: 7 August 2012
+
+ Functions for experimenting with amplitude quantisation.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not,see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include <assert.h>
+#include <ctype.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ampexp.h"
+
+
+#define PRED_COEFF 0.9
+
+/* states for amplitude experiments */
+
+struct codebook {
+ unsigned int k;
+ unsigned int log2m;
+ unsigned int m;
+ float *cb;
+ unsigned int offset;
+};
+
+struct AEXP {
+ float A_prev[MAX_AMP];
+ int frames;
+ float snr;
+ int snr_n;
+ float var;
+ int var_n;
+ float vq_var;
+ int vq_var_n;
+ struct codebook *vq1,*vq2,*vq3,*vq4,*vq5;
+
+ int indexes[5][3];
+ MODEL model[3];
+ float mag[3];
+ MODEL model_uq[3];
+};
+
+
+/*---------------------------------------------------------------------------*\
+
+ Bruce Perens' funcs to load codebook files
+
+\*---------------------------------------------------------------------------*/
+
+
+static const char format[] =
+"The table format must be:\n"
+"\tTwo integers describing the dimensions of the codebook.\n"
+"\tThen, enough numbers to fill the specified dimensions.\n";
+
+static float get_float(FILE * in, const char * name, char * * cursor, char *
buffer, int size)
+{
+ for ( ; ; ) {
+ char * s = *cursor;
+ char c;
+
+ while ( (c = *s) != '\0' && !isdigit(c) && c != '-' && c != '.' )
+ s++;
+
+ /* Comments start with "#" and continue to the end of the line. */
+ if ( c != '\0' && c != '#' ) {
+ char * end = 0;
+ float f = 0;
+
+ f = strtod(s, &end);
+
+ if ( end != s )
+ *cursor = end;
+ return f;
+ }
+
+ if ( fgets(buffer, size, in) == NULL ) {
+ fprintf(stderr, "%s: Format error. %s\n", name, format);
+ exit(1);
+ }
+ *cursor = buffer;
+ }
+}
+
+static struct codebook *load(const char * name)
+{
+ FILE *file;
+ char line[2048];
+ char *cursor = line;
+ struct codebook *b = malloc(sizeof(struct codebook));
+ int i;
+ int size;
+
+ file = fopen(name, "rt");
+ assert(file != NULL);
+
+ *cursor = '\0';
+
+ b->k = (int)get_float(file, name, &cursor, line, sizeof(line));
+ b->m = (int)get_float(file, name ,&cursor, line, sizeof(line));
+ size = b->k * b->m;
+
+ b->cb = (float *)malloc(size * sizeof(float));
+
+ for ( i = 0; i < size; i++ ) {
+ b->cb[i] = get_float(file, name, &cursor, line, sizeof(line));
+ }
+
+ fclose(file);
+
+ return b;
+}
+
+
+/*---------------------------------------------------------------------------*
\
+
+ amp_experiment_create()
+
+ Inits states for amplitude quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+struct AEXP *amp_experiment_create() {
+ struct AEXP *aexp;
+ int i,j,m;
+
+ aexp = (struct AEXP *)malloc(sizeof(struct AEXP));
+ assert (aexp != NULL);
+
+ for(i=0; i<MAX_AMP; i++)
+ aexp->A_prev[i] = 1.0;
+ aexp->frames = 0;
+ aexp->snr = 0.0;
+ aexp->snr_n = 0;
+ aexp->var = 0.0;
+ aexp->var_n = 0;
+ aexp->vq_var = 0.0;
+ aexp->vq_var_n = 0;
+
+ //aexp->vq1 = load("amp_1_80_1024a.txt");
+ //aexp->vq1 = load("../unittest/st1_10_1024.txt");
+ //aexp->vq1 = load("../unittest/amp41_80_1024.txt");
+ //aexp->vq1->offset = 40;
+ aexp->vq1 = load("../unittest/amp1_10_1024.txt");
+ aexp->vq1->offset = 0;
+ aexp->vq2 = load("../unittest/amp11_20_1024.txt");
+ aexp->vq2->offset = 10;
+
+ aexp->vq3 = load("../unittest/amp21_40_1024.txt");
+ aexp->vq3->offset = 20;
+ aexp->vq4 = load("../unittest/amp41_60_1024.txt");
+ aexp->vq4->offset = 40;
+ aexp->vq5 = load("../unittest/amp61_80_256.txt");
+ aexp->vq5->offset = 60;
+
+ #ifdef CAND2_GS
+ //aexp->vq1 = load("../unittest/t1_amp1_20_1024.txt");
+ //aexp->vq1 = load("../unittest/t2_amp1_20_1024.txt");
+ aexp->vq1 = load("../unittest/amp1_20_1024.txt");
+ aexp->vq1->offset = 0;
+ aexp->vq2 = load("../unittest/amp21_40_1024.txt");
+ aexp->vq2->offset = 20;
+ aexp->vq3 = load("../unittest/amp41_60_1024.txt");
+ aexp->vq3->offset = 40;
+ aexp->vq4 = load("../unittest/amp61_80_32.txt");
+ aexp->vq4->offset = 60;
+ #endif
+
+ //#define CAND2_GS
+ #ifdef CAND2_GS
+ aexp->vq1 = load("../unittest/amp1_20_1024.txt");
+ aexp->vq2 = load("../unittest/amp21_40_1024.txt");
+ aexp->vq3 = load("../unittest/amp41_80_1024.txt");
+ aexp->vq4 = load("../unittest/amp61_80_32.txt");
+ aexp->vq1->offset = 0;
+ aexp->vq2->offset = 20;
+ aexp->vq3->offset = 40;
+ aexp->vq4->offset = 60;
+ #endif
+
+ //#define CAND1
+ #ifdef CAND1
+ aexp->vq1 = load("../unittest/amp1_10_128.txt");
+ aexp->vq2 = load("../unittest/amp11_20_512.txt");
+ aexp->vq3 = load("../unittest/amp21_40_1024.txt");
+ aexp->vq4 = load("../unittest/amp41_60_1024.txt");
+ aexp->vq5 = load("../unittest/amp61_80_32.txt");
+ aexp->vq1->offset = 0;
+ aexp->vq2->offset = 10;
+ aexp->vq3->offset = 20;
+ aexp->vq4->offset = 40;
+ aexp->vq5->offset = 60;
+ #endif
+
+ for(i=0; i<3; i++) {
+ for(j=0; j<5; j++)
+ aexp->indexes[j][i] = 0;
+ aexp->mag[i] = 1.0;
+ aexp->model[i].Wo = TWO_PI*100.0/8000.0;
+ aexp->model[i].L = floor(PI/aexp->model[i].Wo);
+ for(m=1; m<=MAX_AMP; m++)
+ aexp->model[i].A[m] = 10.0;
+ aexp->model_uq[i] = aexp->model[i];
+ }
+
+ return aexp;
+}
+
+
+/*---------------------------------------------------------------------------*
\
+
+ amp_experiment_destroy()
+
+\*---------------------------------------------------------------------------*/
+
+void amp_experiment_destroy(struct AEXP *aexp) {
+ assert(aexp != NULL);
+ if (aexp->snr != 0.0)
+ printf("snr: %4.2f dB\n", aexp->snr/aexp->snr_n);
+ if (aexp->var != 0.0)
+ printf("var...: %4.3f std dev...: %4.3f (%d amplitude samples)\n",
+ aexp->var/aexp->var_n, sqrt(aexp->var/aexp->var_n), aexp->var_n);
+ if (aexp->vq_var != 0.0)
+ printf("vq var: %4.3f std dev...: %4.3f (%d amplitude samples)\n",
+ aexp->vq_var/aexp->vq_var_n, sqrt(aexp->vq_var/aexp->vq_var_n),
aexp->vq_var_n);
+ free(aexp);
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ Various test and experimental functions ................
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Quantisation noise simulation. Assume noise on amplitudes is a uniform
+ distribution, of +/- x dB. This means x = sqrt(3)*sigma.
+
+ Note: for uniform distribution var = = sigma * sigma = (b-a)*(b-a)/12.
+*/
+
+static void add_quant_noise(struct AEXP *aexp, MODEL *model, int start, int
end, float sigma_dB)
+{
+ int m;
+ float x_dB;
+ float noise_sam_dB;
+ float noise_sam_lin;
+
+ x_dB = sqrt(3.0) * sigma_dB;
+
+ for(m=start; m<=end; m++) {
+ noise_sam_dB = x_dB*(1.0 - 2.0*rand()/RAND_MAX);
+ //printf("%f\n", noise_sam_dB);
+ noise_sam_lin = pow(10.0, noise_sam_dB/20.0);
+ model->A[m] *= noise_sam_lin;
+ aexp->var += noise_sam_dB*noise_sam_dB;
+ aexp->var_n++;
+ }
+
+}
+
+/*
+ void print_sparse_pred_error()
+
+ use to check pred error stats (e.g. of first 1kHz) in Octave:
+
+ $ ./c2sim ../raw/hts1a.raw --ampexp > amppe.txt
+
+ octave> load ../src/amppe.txt
+ octave> std(nonzeros(amppe(:,1:20)))
+ octave> hist(nonzeros(amppe(:,1:20)),20);
+
+ */
+
+
+static void print_sparse_pred_error(struct AEXP *aexp, MODEL *model, float
mag_thresh)
+{
+ int m, index;
+ float mag, error;
+ float sparse_pe[MAX_AMP];
+
+ mag = 0.0;
+ for(m=1; m<=model->L; m++)
+ mag += model->A[m]*model->A[m];
+ mag = 10*log10(mag/model->L);
+
+ if (mag > mag_thresh) {
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe[m] = 0.0;
+ }
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+ error = PRED_COEFF*20.0*log10(aexp->A_prev[m]) -
20.0*log10(model->A[m]);
+ //error = 20.0*log10(model->A[m]) - mag;
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe[index] = error;
+ }
+
+ /* dump sparse amp vector */
+
+ for(m=0; m<MAX_AMP; m++)
+ printf("%f ", sparse_pe[m]);
+ printf("\n");
+ }
+}
+
+
+static float frame_energy(MODEL *model, float *enormdB) {
+ int m;
+ float e, edB;
+
+ e = 0.0;
+ for(m=1; m<=model->L; m++)
+ e += model->A[m]*model->A[m];
+ edB = 10*log10(e);
+
+ #define VER_E0
+
+ #ifdef VER_E0
+ *enormdB = 10*log10(e/model->L); /* make high and low pitches have similar
amps */
+ #endif
+
+ #ifdef VER_E1
+ e = 0.0;
+ for(m=1; m<=model->L; m++)
+ e += 10*log10(model->A[m]*model->A[m]);
+ *enormdB = e;
+ #endif
+
+ #ifdef VER_E2
+ e = 0.0;
+ for(m=1; m<=model->L; m++)
+ e += 10*log10(model->A[m]*model->A[m]);
+ *enormdB = e/model->L;
+ #endif
+ //printf("%f\n", enormdB);
+
+ return edB;
+}
+
+static void print_sparse_amp_error(struct AEXP *aexp, MODEL *model, float
edB_thresh)
+{
+ int m, index;
+ float edB, enormdB, error, dWo;
+ float sparse_pe[MAX_AMP];
+
+ edB = frame_energy(model, &enormdB);
+ //printf("%f\n", enormdB);
+ dWo = fabs((aexp->model_uq[2].Wo -
aexp->model_uq[1].Wo)/aexp->model_uq[2].Wo);
+
+ if ((edB > edB_thresh) && (dWo < 0.1)) {
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe[m] = 0.0;
+ }
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+ error = 20.0*log10(model->A[m]) - enormdB;
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe[index] = error;
+ }
+
+ /* dump sparse amp vector */
+
+ for(m=0; m<MAX_AMP; m++)
+ printf("%f ", sparse_pe[m]);
+ printf("\n");
+ }
+}
+
+
+int vq_amp(float cb[], float vec[], float weights[], int d, int e, float *se)
+{
+ float error; /* current error */
+ int besti; /* best index so far */
+ float best_error; /* best error so far */
+ int i,j;
+ float diff, metric, best_metric;
+
+ besti = 0;
+ best_metric = best_error = 1E32;
+ for(j=0; j<e; j++) {
+ metric = error = 0.0;
+ for(i=0; i<d; i++) {
+ if (vec[i] != 0.0) {
+ diff = (cb[j*d+i] - vec[i]);
+ error += diff*diff;
+ metric += weights[i]*diff*diff;
+ }
+ }
+ if (metric < best_metric) {
+ best_error = error;
+ best_metric = metric;
+ besti = j;
+ }
+ }
+
+ *se += best_error;
+
+ return(besti);
+}
+
+
+static int split_vq(float sparse_pe_out[], struct AEXP *aexp, struct codebook
*vq, float weights[], float sparse_pe_in[])
+{
+ int i, j, non_zero, vq_ind;
+ float se;
+
+ vq_ind = vq_amp(vq->cb, &sparse_pe_in[vq->offset], &weights[vq->offset],
vq->k, vq->m, &se);
+ printf("\n offset %d k %d m %d vq_ind %d j: ", vq->offset, vq->k, vq->m,
vq_ind);
+
+ non_zero = 0;
+ for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+ if (sparse_pe_in[j] != 0.0) {
+ printf("%d ", j);
+ sparse_pe_in[j] -= vq->cb[vq->k * vq_ind + i];
+ sparse_pe_out[j] += vq->cb[vq->k * vq_ind + i];
+ non_zero++;
+ }
+ }
+ aexp->vq_var_n += non_zero;
+ return vq_ind;
+}
+
+
+static void sparse_vq_pred_error(struct AEXP *aexp,
+ MODEL *model
+)
+{
+ int m, index;
+ float error, amp_dB, edB, enormdB;
+ float sparse_pe_in[MAX_AMP];
+ float sparse_pe_out[MAX_AMP];
+ float weights[MAX_AMP];
+
+ edB = frame_energy(model, &enormdB);
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_in[m] = 0.0;
+ sparse_pe_out[m] = 0.0;
+ }
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+ error = PRED_COEFF*20.0*log10(aexp->A_prev[m]) -
20.0*log10(model->A[m]);
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index] = error;
+ weights[index] = model->A[m];
+ }
+
+ /* vector quantise */
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_out[m] = sparse_pe_in[m];
+ }
+
+ //#define SIM_VQ
+ #ifndef SIM_VQ
+ split_vq(sparse_pe_out, aexp, aexp->vq1, weights, sparse_pe_in);
+ #else
+ for(m=aexp->vq->offset; m<aexp->vq->offset+aexp->vq->k; m++) {
+ if (sparse_pe_in[m] != 0.0) {
+ float error = 8*(1.0 - 2.0*rand()/RAND_MAX);
+ aexp->vq_var += error*error;
+ aexp->vq_var_n++;
+ sparse_pe_out[m] = sparse_pe_in[m] + error;
+ }
+ }
+ #endif
+
+ if (edB > -100.0)
+ for(m=0; m<MAX_AMP; m++) {
+ if (sparse_pe_in[m] != 0.0)
+ aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+ }
+
+ /* transform quantised amps back */
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ amp_dB = PRED_COEFF*20.0*log10(aexp->A_prev[m]) - sparse_pe_out[index];
+ //printf("in: %f out: %f\n", sparse_pe_in[index],
sparse_pe_out[index]);
+ //printf("amp_dB: %f A[m] (dB) %f\n", amp_dB, 20.0*log10(model->A[m]));
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ }
+ //exit(0);
+}
+
+
+static void split_error(struct AEXP *aexp, struct codebook *vq, float
sparse_pe_in[], int ind)
+{
+ int i, j;
+
+ for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+ if (sparse_pe_in[j] != 0.0) {
+ sparse_pe_in[j] -= vq->cb[vq->k * ind + i];
+ }
+ }
+}
+
+
+static void sparse_vq_amp(struct AEXP *aexp, MODEL *model)
+{
+ int m, index;
+ float error, amp_dB, enormdB;
+ float sparse_pe_in[MAX_AMP];
+ float sparse_pe_out[MAX_AMP];
+ float weights[MAX_AMP];
+
+ frame_energy(model, &enormdB);
+
+ aexp->mag[2] = enormdB;
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_in[m] = 0.0;
+ sparse_pe_out[m] = 0.0;
+ }
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+ error = 20.0*log10(model->A[m]) - enormdB;
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index] = error;
+ weights[index] = pow(model->A[m],0.8);
+ }
+
+ /* vector quantise */
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_out[m] = sparse_pe_in[m];
+ }
+
+ for(m=0; m<80; m++)
+ sparse_pe_out[m] = 0;
+
+ #define SPLIT
+ #ifdef SPLIT
+ aexp->indexes[0][2] = split_vq(sparse_pe_out, aexp, aexp->vq1, weights,
sparse_pe_in);
+
+ aexp->indexes[1][2] = split_vq(sparse_pe_out, aexp, aexp->vq2, weights,
sparse_pe_in);
+ aexp->indexes[2][2] = split_vq(sparse_pe_out, aexp, aexp->vq3, weights,
sparse_pe_in);
+ aexp->indexes[3][2] = split_vq(sparse_pe_out, aexp, aexp->vq4, weights,
sparse_pe_in);
+ aexp->indexes[4][2] = split_vq(sparse_pe_out, aexp, aexp->vq5, weights,
sparse_pe_in);
+ #endif
+ //#define MULTISTAGE
+ #ifdef MULTISTAGE
+ aexp->indexes[0][2] = split_vq(sparse_pe_out, aexp, aexp->vq1, weights,
sparse_pe_in);
+ aexp->indexes[1][2] = split_vq(sparse_pe_out, aexp, aexp->vq2, weights,
sparse_pe_in);
+ aexp->indexes[2][2] = split_vq(sparse_pe_out, aexp, aexp->vq3, weights,
sparse_pe_in);
+ //aexp->indexes[3][2] = split_vq(sparse_pe_out, aexp, aexp->vq4, weights,
sparse_pe_in);
+ #endif
+
+ for(m=0; m<MAX_AMP; m++) {
+ if (sparse_pe_in[m] != 0.0)
+ aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+ }
+
+ /* transform quantised amps back */
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ amp_dB = sparse_pe_out[index] + enormdB;
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ }
+ //exit(0);
+}
+
+
+static void update_snr_calc(struct AEXP *aexp, MODEL *m1, MODEL *m2)
+{
+ int m;
+ float signal, noise, signal_dB;
+
+ assert(m1->L == m2->L);
+
+ signal = 0.0; noise = 1E-32;
+ for(m=1; m<=m1->L; m++) {
+ signal += m1->A[m]*m1->A[m];
+ noise += pow(m1->A[m] - m2->A[m], 2.0);
+ //printf("%f %f\n", before[m], model->phi[m]);
+ }
+ signal_dB = 10*log10(signal);
+ if (signal_dB > -100.0) {
+ aexp->snr += 10.0*log10(signal/noise);
+ aexp->snr_n++;
+ }
+}
+
+
+/* gain/shape vq search. Returns index of best gain. Gain is additive (as we
use log quantisers) */
+
+int gain_shape_vq_amp(float cb[], float vec[], float weights[], int d, int e,
float *se, float *best_gain)
+{
+ float error; /* current error */
+ int besti; /* best index so far */
+ float best_error; /* best error so far */
+ int i,j,m;
+ float diff, metric, best_metric, gain, sumAm, sumCb;
+
+ besti = 0;
+ best_metric = best_error = 1E32;
+ for(j=0; j<e; j++) {
+
+ /* compute optimum gain */
+
+ sumAm = sumCb = 0.0;
+ m = 0;
+ for(i=0; i<d; i++) {
+ if (vec[i] != 0.0) {
+ m++;
+ sumAm += vec[i];
+ sumCb += cb[j*d+i];
+ }
+ }
+ gain = (sumAm - sumCb)/m;
+
+ /* compute error */
+
+ metric = error = 0.0;
+ for(i=0; i<d; i++) {
+ if (vec[i] != 0.0) {
+ diff = vec[i] - cb[j*d+i] - gain;
+ error += diff*diff;
+ metric += weights[i]*diff*diff;
+ }
+ }
+ if (metric < best_metric) {
+ best_error = error;
+ best_metric = metric;
+ *best_gain = gain;
+ besti = j;
+ }
+ }
+
+ *se += best_error;
+
+ return(besti);
+}
+
+
+static void gain_shape_split_vq(float sparse_pe_out[], struct AEXP *aexp,
struct codebook *vq, float weights[], float sparse_pe_in[], float *best_gain)
+{
+ int i, j, non_zero, vq_ind;
+ float se;
+
+ vq_ind = gain_shape_vq_amp(vq->cb, &sparse_pe_in[vq->offset],
&weights[vq->offset], vq->k, vq->m, &se, best_gain);
+ //printf("\n offset %d k %d m %d vq_ind %d gain: %4.2f j: ", vq->offset,
vq->k, vq->m, vq_ind, *best_gain);
+
+ non_zero = 0;
+ for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+ if (sparse_pe_in[j] != 0.0) {
+ //printf("%d ", j);
+ sparse_pe_out[j] = vq->cb[vq->k * vq_ind + i] + *best_gain;
+ non_zero++;
+ }
+ }
+ aexp->vq_var_n += non_zero;
+}
+
+
+static void gain_shape_sparse_vq_amp(struct AEXP *aexp, MODEL *model)
+{
+ int m, index;
+ float amp_dB, best_gain;
+ float sparse_pe_in[MAX_AMP];
+ float sparse_pe_out[MAX_AMP];
+ float weights[MAX_AMP];
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_in[m] = 0.0;
+ sparse_pe_out[m] = 0.0;
+ }
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index] = 20.0*log10(model->A[m]);
+ weights[index] = model->A[m];
+ }
+
+ /* vector quantise */
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_out[m] = sparse_pe_in[m];
+ }
+
+ gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq1, weights, sparse_pe_in,
&best_gain);
+ gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq2, weights, sparse_pe_in,
&best_gain);
+ gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq3, weights, sparse_pe_in,
&best_gain);
+ gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq4, weights, sparse_pe_in,
&best_gain);
+
+ for(m=0; m<MAX_AMP; m++) {
+ if (sparse_pe_in[m] != 0.0)
+ aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+ }
+
+ /* transform quantised amps back */
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ amp_dB = sparse_pe_out[index];
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ }
+ //exit(0);
+}
+
+
+static void interp_split_vq(float sparse_pe_out[], struct AEXP *aexp, struct
codebook *vq, float sparse_pe_in[], int ind)
+{
+ int i, j;
+ float amp_dB;
+
+ for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+ if (sparse_pe_in[j] != 0.0) {
+ amp_dB = 0.5*(aexp->mag[0] + vq->cb[vq->k * aexp->indexes[ind][0]
+ i]);
+ amp_dB += 0.5*(aexp->mag[2] + vq->cb[vq->k * aexp->indexes[ind][2]
+ i]);
+ sparse_pe_out[j] = amp_dB;
+ }
+ }
+}
+
+
+static void vq_interp(struct AEXP *aexp, MODEL *model, int on)
+{
+ int i, j, m, index;
+ float amp_dB;
+ //struct codebook *vq = aexp->vq1;
+ float sparse_pe_in[MAX_AMP];
+ float sparse_pe_out[MAX_AMP];
+
+ /* replace odd frames with interp */
+ /* once we get an even input frame we can interpolate and output odd */
+ /* using VQ to interpolate. This assumes some correlation in
+ adjacent VQ samples */
+
+ memcpy(&aexp->model[2], model, sizeof(MODEL));
+
+ /* once we get an even input frame we have enough information to
+ replace prev odd frame with interpolated version */
+
+ if (on && ((aexp->frames % 2) == 0)) {
+
+ /* copy Wo, L, and phases */
+
+ memcpy(model, &aexp->model[1], sizeof(MODEL));
+ //printf("mags: %4.2f %4.2f %4.2f Am: \n", aexp->mag[0], aexp->mag[1],
aexp->mag[2]);
+
+ /* now replace Am by interpolation, use similar design to VQ
+ to handle different bands */
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index] = 20.0*log10(model->A[m]);
+ }
+
+ /* this can be used for when just testing partial interpolation */
+
+ for(m=0; m<MAX_AMP; m++) {
+ //sparse_pe_out[m] = sparse_pe_in[m];
+ sparse_pe_out[m] = 0;
+ }
+
+ interp_split_vq(sparse_pe_out, aexp, aexp->vq1, sparse_pe_in, 0);
+ interp_split_vq(sparse_pe_out, aexp, aexp->vq2, sparse_pe_in, 1);
+ interp_split_vq(sparse_pe_out, aexp, aexp->vq3, sparse_pe_in, 2);
+ interp_split_vq(sparse_pe_out, aexp, aexp->vq4, sparse_pe_in, 3);
+ interp_split_vq(sparse_pe_out, aexp, aexp->vq5, sparse_pe_in, 4);
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ amp_dB = sparse_pe_out[index];
+ //printf(" %4.2f", 10.0*log10(model->A[m]));
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ //printf(" %4.2f\n", 10.0*log10(model->A[m]));
+ }
+
+ #ifdef INITIAL_VER
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+
+ if (index < vq->k) {
+ amp_dB = 0.5*(aexp->mag[0] + vq->cb[vq->k * aexp->indexes[0] +
index]);
+ amp_dB += 0.5*(aexp->mag[2] + vq->cb[vq->k * aexp->indexes[2] +
index]);
+ //printf(" %4.2f", 10.0*log10(model->A[m]));
+ //amp_dB = 10;
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ printf(" %4.2f\n", 10.0*log10(model->A[m]));
+ }
+ }
+
+ #endif
+ }
+ else
+ memcpy(model, &aexp->model[1], sizeof(MODEL));
+
+ /* update memories */
+
+ for(i=0; i<2; i++) {
+ memcpy(&aexp->model[i], &aexp->model[i+1], sizeof(MODEL));
+ for(j=0; j<5; j++)
+ aexp->indexes[j][i] = aexp->indexes[j][i+1];
+ aexp->mag[i] = aexp->mag[i+1];
+ }
+
+}
+
+
+/*
+ This functions tests theory that some bands can be combined together
+ due to less frequency resolution at higher frequencies. This will
+ reduce the amount of information we need to encode.
+*/
+
+void smooth_samples(struct AEXP *aexp, MODEL *model, int mode)
+{
+ int m, i, j, index, step, nav, v, en;
+ float sparse_pe_in[MAX_AMP], av, amp_dB;
+ float sparse_pe_out[MAX_AMP];
+ float smoothed[MAX_AMP], smoothed_out[MAX_AMP];
+ float weights[MAX_AMP];
+ float enormdB;
+
+ frame_energy(model, &enormdB);
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_in[m] = 0.0;
+ sparse_pe_out[m] = 0.0;
+ }
+
+ /* set up sparse array */
+
+ for(m=1; m<=model->L; m++) {
+ assert(model->A[m] > 0.0);
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_out[index] = sparse_pe_in[index] = 20.0*log10(model->A[m]) -
enormdB;
+ }
+
+ /* now combine samples at high frequencies to reduce dimension */
+
+ step=4;
+ for(i=MAX_AMP/2,v=0; i<MAX_AMP; i+=step,v++) {
+
+ /* average over one band */
+
+ av = 0.0; nav = 0;
+ en = i+step;
+ if (en > (MAX_AMP-1))
+ en = MAX_AMP-1;
+ for(j=i; j<en; j++) {
+ if (sparse_pe_in[j] != 0.0) {
+ av += sparse_pe_in[j];
+ nav++;
+ }
+ }
+ if (nav) {
+ av /= nav;
+ smoothed[v] = av;
+ weights[v] = pow(10.0,av/20.0);
+ //weights[v] = 1.0;
+ }
+ else
+ smoothed[v] = 0.0;
+
+ }
+
+ if (mode == 1) {
+ for(i=0; i<v; i++)
+ printf("%5.2f ", smoothed[i]);
+ printf("\n");
+ }
+
+ if (mode == 2) {
+ for(i=0; i<v; i++)
+ smoothed_out[i] = 0;
+ split_vq(smoothed_out, aexp, aexp->vq1, weights, smoothed);
+ for(i=0; i<v; i++)
+ smoothed[i] = smoothed_out[i];
+ }
+
+ /* set all samples to smoothed average */
+
+ step = 4;
+ for(i=MAX_AMP/2,v=0; i<MAX_AMP; i+=step,v++) {
+ en = i+step;
+ if (en > (MAX_AMP-1))
+ en = MAX_AMP-1;
+ for(j=i; j<en; j++)
+ sparse_pe_out[j] = smoothed[v];
+ }
+
+ /* convert back to Am */
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ amp_dB = sparse_pe_out[index] + enormdB;
+ //printf("%d %4.2f %4.2f\n", m, 10.0*log10(model->A[m]), amp_dB);
+ model->A[m] = pow(10.0, amp_dB/20.0);
+ }
+
+}
+
+#define MAX_BINS 40
+static float bins[] = {
+ /*1000.0, 1200.0, 1400.0, 1600.0, 1800,*/
+ 2000.0, 2400.0, 2800.0,
+ 3000.0, 3400.0, 3600.0, 4000.0};
+
+void smooth_amp(struct AEXP *aexp, MODEL *model) {
+ int m, i;
+ int nbins;
+ int b;
+ float f;
+ float av[MAX_BINS];
+ int nav[MAX_BINS];
+
+ nbins = sizeof(bins)/sizeof(float);
+
+ /* clear all bins */
+
+ for(i=0; i<MAX_BINS; i++) {
+ av[i] = 0.0;
+ nav[i] = 0;
+ }
+
+ /* add amps into each bin */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ av[b] += model->A[m]*model->A[m];
+ nav[b]++;
+ }
+
+ }
+
+ /* use averages to est amps */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ /* add predicted phase error to this bin */
+
+ printf("L %d m %d f %4.f b %d\n", model->L, m, f, b);
+
+ printf(" %d: %4.3f -> ", m, 20*log10(model->A[m]));
+ model->A[m] = sqrt(av[b]/nav[b]);
+ printf("%4.3f\n", 20*log10(model->A[m]));
+ }
+ }
+ printf("\n");
+}
+
+/*---------------------------------------------------------------------------*
\
+
+ amp_experiment()
+
+ Amplitude quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+void amp_experiment(struct AEXP *aexp, MODEL *model, char *arg) {
+ int m,i;
+
+ memcpy(&aexp->model_uq[2], model, sizeof(MODEL));
+
+ if (strcmp(arg, "qn") == 0) {
+ add_quant_noise(aexp, model, 1, model->L, 1);
+ update_snr_calc(aexp, &aexp->model_uq[2], model);
+ }
+
+ /* print training samples that can be > train.txt for training VQ */
+
+ if (strcmp(arg, "train") == 0)
+ print_sparse_amp_error(aexp, model, 00.0);
+
+ /* VQ of amplitudes, no interpolation (ie 10ms rate) */
+
+ if (strcmp(arg, "vq") == 0) {
+ sparse_vq_amp(aexp, model);
+ vq_interp(aexp, model, 0);
+ update_snr_calc(aexp, &aexp->model_uq[1], model);
+ }
+
+ /* VQ of amplitudes, interpolation (ie 20ms rate) */
+
+ if (strcmp(arg, "vqi") == 0) {
+ sparse_vq_amp(aexp, model);
+ vq_interp(aexp, model, 1);
+ update_snr_calc(aexp, &aexp->model_uq[1], model);
+ }
+
+ /* gain/shape VQ of amplitudes, 10ms rate (doesn't work that well) */
+
+ if (strcmp(arg, "gsvq") == 0) {
+ gain_shape_sparse_vq_amp(aexp, model);
+ vq_interp(aexp, model, 0);
+ update_snr_calc(aexp, &aexp->model_uq[1], model);
+ }
+
+ if (strcmp(arg, "smooth") == 0) {
+ smooth_samples(aexp, model, 0);
+ update_snr_calc(aexp, &aexp->model_uq[2], model);
+ }
+
+ if (strcmp(arg, "smoothtrain") == 0) {
+ smooth_samples(aexp, model, 1);
+ //update_snr_calc(aexp, &aexp->model_uq[2], model);
+ }
+
+ if (strcmp(arg, "smoothvq") == 0) {
+ smooth_samples(aexp, model, 2);
+ update_snr_calc(aexp, &aexp->model_uq[2], model);
+ }
+
+ if (strcmp(arg, "smoothamp") == 0) {
+ smooth_amp(aexp, model);
+ update_snr_calc(aexp, &aexp->model_uq[2], model);
+ }
+
+ /* update states */
+
+ for(m=1; m<=model->L; m++)
+ aexp->A_prev[m] = model->A[m];
+ aexp->frames++;
+ for(i=0; i<3; i++)
+ aexp->model_uq[i] = aexp->model_uq[i+1];
+}
+
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/ampexp.h
similarity index 62%
copy from gr-vocoder/lib/codec2/phase.h
copy to gr-vocoder/lib/codec2/ampexp.h
index 4f1a620..8954ea2 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/ampexp.h
@@ -1,15 +1,15 @@
/*---------------------------------------------------------------------------*\
- FILE........: phase.h
+ FILE........: ampexp.h
AUTHOR......: David Rowe
- DATE CREATED: 1/2/09
+ DATE CREATED: & August 2012
- Functions for modelling phase.
+ Functions for experimenting with amplitude quantisation.
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2009 David Rowe
+ Copyright (C) 2012 David Rowe
All rights reserved.
@@ -22,13 +22,18 @@
License for more details.
You should have received a copy of the GNU Lesser General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>.
+ along with this program; if not,see <http://www.gnu.org/licenses/>.
*/
-#ifndef __PHASE__
-#define __PHASE__
+#ifndef __AMPEX__
+#define __AMPEXP__
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
- int order);
+#include "defines.h"
+
+struct AEXP;
+
+struct AEXP *amp_experiment_create();
+void amp_experiment_destroy(struct AEXP *aexp);
+void amp_experiment(struct AEXP *aexp, MODEL *model, char *arg);
#endif
diff --git a/gr-vocoder/lib/codec2/c2dec.c b/gr-vocoder/lib/codec2/c2dec.c
index 3123e96..df4e82f 100644
--- a/gr-vocoder/lib/codec2/c2dec.c
+++ b/gr-vocoder/lib/codec2/c2dec.c
@@ -27,54 +27,213 @@
#include "codec2.h"
+#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#define BITS_SIZE ((CODEC2_BITS_PER_FRAME + 7) / 8)
+#define NONE 0 /* no bit errors */
+#define UNIFORM 1 /* random bit errors */
+#define TWO_STATE 2 /* Two state error model */
+#define UNIFORM_RANGE 3 /* random bit errors over a certain range */
int main(int argc, char *argv[])
{
- void *codec2;
- FILE *fin;
- FILE *fout;
- short buf[CODEC2_SAMPLES_PER_FRAME];
- unsigned char bits[BITS_SIZE];
-
- if (argc != 3) {
- printf("usage: %s InputBitFile OutputRawSpeechFile\n", argv[0]);
+ int mode;
+ void *codec2;
+ FILE *fin;
+ FILE *fout;
+ FILE *fber = NULL;
+ short *buf;
+ unsigned char *bits, *prev_bits;
+ int nsam, nbit, nbyte, i, byte, frames, bits_proc, bit_errors,
error_mode;
+ int nstart_bit, nend_bit, bit_rate;
+ int state, next_state;
+ float ber, r, burst_length, burst_period, burst_timer, ber_est;
+ unsigned char mask;
+
+ if ((argc != 4) && (argc != 5) && (argc != 6) && (argc != 7)) {
+ printf("basic usage.................: c2dec
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile\n");
+ printf("uniform errors usage........: c2dec
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile uniformBER
startBit endBit\n");
+ printf("uniform error on range usage: c2dec
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile uniformBER\n");
+ printf("demod BER estimate..........: c2dec
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile BERfile\n");
+ printf("two state fading usage......: c2dec
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile burstLength
burstPeriod\n");
+ printf("e.g c2dec 1400 hts1a.c2 hts1a_1400.raw\n");
+ printf("e.g c2dec 1400 hts1a.c2 hts1a_1400.raw 0.9\n");
+ printf("e.g c2dec 1400 hts1a.c2 hts1a_1400.raw 0.99 0.9\n");
exit(1);
}
- if (strcmp(argv[1], "-") == 0) fin = stdin;
- else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
+ if (strcmp(argv[1],"3200") == 0)
+ mode = CODEC2_MODE_3200;
+ else if (strcmp(argv[1],"2400") == 0)
+ mode = CODEC2_MODE_2400;
+ else if (strcmp(argv[1],"1600") == 0)
+ mode = CODEC2_MODE_1600;
+ else if (strcmp(argv[1],"1400") == 0)
+ mode = CODEC2_MODE_1400;
+ else if (strcmp(argv[1],"1300") == 0)
+ mode = CODEC2_MODE_1300;
+ else if (strcmp(argv[1],"1200") == 0)
+ mode = CODEC2_MODE_1200;
+ else {
+ fprintf(stderr, "Error in mode: %s. Must be 3200, 2400, 1600, 1400,
1300 or 1200\n", argv[1]);
+ exit(1);
+ }
+ bit_rate = atoi(argv[1]);
+
+ if (strcmp(argv[2], "-") == 0) fin = stdin;
+ else if ( (fin = fopen(argv[2],"rb")) == NULL ) {
fprintf(stderr, "Error opening input bit file: %s: %s.\n",
- argv[1], strerror(errno));
+ argv[2], strerror(errno));
exit(1);
}
- if (strcmp(argv[2], "-") == 0) fout = stdout;
- else if ( (fout = fopen(argv[2],"wb")) == NULL ) {
+ if (strcmp(argv[3], "-") == 0) fout = stdout;
+ else if ( (fout = fopen(argv[3],"wb")) == NULL ) {
fprintf(stderr, "Error opening output speech file: %s: %s.\n",
- argv[2], strerror(errno));
+ argv[3], strerror(errno));
exit(1);
}
- codec2 = codec2_create();
+ error_mode = NONE;
+ ber = 0.0;
+ burst_length = burst_period = 0.0;
+ burst_timer = 0.0;
+
+ codec2 = codec2_create(mode);
+ nsam = codec2_samples_per_frame(codec2);
+ nbit = codec2_bits_per_frame(codec2);
+ buf = (short*)malloc(nsam*sizeof(short));
+ nbyte = (nbit + 7) / 8;
+ bits = (unsigned char*)malloc(nbyte*sizeof(char));
+ prev_bits = (unsigned char*)malloc(nbyte*sizeof(char));
+ frames = bit_errors = bits_proc = 0;
+ nstart_bit = 0;
+ nend_bit = nbit-1;
+
+ if (argc == 5) {
+ /* see if 4th argument is a valid file name */
+ if ( (fber = fopen(argv[4],"rb")) == NULL ) {
+ /* otherwise it must be BER value for uniform errors */
+ ber = atof(argv[4]);
+ error_mode = UNIFORM;
+ }
+ }
+
+ if (argc == 6) {
+ error_mode = TWO_STATE;
+ burst_length = atof(argv[4]);
+ burst_period = atof(argv[5]);
+ nstart_bit = 0;
+ nend_bit = 2;
+ state = 0;
+ }
+
+ if (argc == 7) {
+ error_mode = UNIFORM_RANGE;
+ ber = atof(argv[4]);
+ nstart_bit = atoi(argv[5]);
+ nend_bit = atoi(argv[6]);
+ fprintf(stderr, "ber: %f nstart_bit: %d nend_bit: %d\n", ber,
nstart_bit, nend_bit);
+ state = 0;
+ }
- while(fread(bits, sizeof(char), BITS_SIZE, fin) == BITS_SIZE) {
- codec2_decode(codec2, buf, bits);
- fwrite(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+ assert(nend_bit <= nbit);
+
+ while(fread(bits, sizeof(char), nbyte, fin) == (size_t)nbyte) {
+ frames++;
+
+ // apply bit errors, MSB of byte 0 is bit 0 in frame */
+
+ if ((error_mode == UNIFORM) || (error_mode == UNIFORM_RANGE)) {
+ for(i=nstart_bit; i<nend_bit+1; i++) {
+ r = (float)rand()/RAND_MAX;
+ if (r < ber) {
+ byte = i/8;
+ //printf("nbyte %d nbit %d i %d byte %d bits[%d] 0x%0x ",
nbyte, nbit, i, byte, byte, bits[byte]);
+ mask = 1 << (7 - i + byte*8);
+ bits[byte] ^= mask;
+ //printf("shift: %d mask: 0x%0x bits[%d] 0x%0x\n", 7 - i +
byte*8, mask, byte, bits[byte] );
+ bit_errors++;
+ }
+ bits_proc++;
+ }
+ }
+
+ if (error_mode == TWO_STATE) {
+ burst_timer += (float)nbit/bit_rate;
+ fprintf(stderr, "burst_timer: %f state: %d\n", burst_timer,
state);
+
+ next_state = state;
+ switch(state) {
+ case 0:
+
+ /* clear channel state - no bit errors */
+
+ if (burst_timer > (burst_period - burst_length))
+ next_state = 1;
+ break;
+
+ case 1:
+
+ /* burst error state - 50% bit error rate */
+
+ for(i=nstart_bit; i<nend_bit+1; i++) {
+ r = (float)rand()/RAND_MAX;
+ if (r < 0.5) {
+ byte = i/8;
+ bits[byte] ^= 1 << (7 - i + byte*8);
+ bit_errors++;
+ }
+ bits_proc++;
+ }
+
+ if (burst_timer > burst_period) {
+ burst_timer = 0.0;
+ next_state = 0;
+ }
+ break;
+
+ }
+
+ state = next_state;
+ }
+
+ if (fber != NULL) {
+ if (fread(&ber_est, sizeof(float), 1, fber) != 1) {
+ fprintf(stderr, "ran out of BER estimates!\n");
+ exit(1);
+ }
+ //fprintf(stderr, "ber_est: %f\n", ber_est);
+ }
+ else
+ ber_est = 0.0;
+
+ /* frame repeat logic */
+ if (ber_est > 0.15) {
+ //memcpy(bits, prev_bits, nbyte);
+ // fprintf(stderr, "repeat\n");
+ }
+
+ codec2_decode(codec2, buf, bits, ber_est);
+ fwrite(buf, sizeof(short), nsam, fout);
//if this is in a pipeline, we probably don't want the usual
//buffering to occur
if (fout == stdout) fflush(stdout);
if (fin == stdin) fflush(stdin);
- }
+ memcpy(prev_bits, bits, nbyte);
+ }
+
+ if (error_mode)
+ fprintf(stderr, "actual BER: %1.3f\n", (float)bit_errors/bits_proc);
codec2_destroy(codec2);
+ free(buf);
+ free(bits);
fclose(fin);
fclose(fout);
diff --git a/gr-vocoder/lib/codec2/c2demo.c b/gr-vocoder/lib/codec2/c2demo.c
index b9e17a7..0090069 100644
--- a/gr-vocoder/lib/codec2/c2demo.c
+++ b/gr-vocoder/lib/codec2/c2demo.c
@@ -32,21 +32,26 @@
*/
#include "codec2.h"
+#include "sine.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#define BITS_SIZE ((CODEC2_BITS_PER_FRAME + 7) / 8)
-
int main(int argc, char *argv[])
{
- void *codec2;
- FILE *fin;
- FILE *fout;
- short buf[CODEC2_SAMPLES_PER_FRAME];
- unsigned char bits[BITS_SIZE];
+ struct CODEC2 *codec2;
+ FILE *fin;
+ FILE *fout;
+ short *buf;
+ unsigned char *bits;
+ int nsam, nbit, i, r;
+
+ for(i=0; i<10; i++) {
+ r = codec2_rand();
+ printf("[%d] r = %d\n", i, r);
+ }
if (argc != 3) {
printf("usage: %s InputRawSpeechFile OutputRawSpeechFile\n", argv[0]);
@@ -65,18 +70,27 @@ int main(int argc, char *argv[])
exit(1);
}
+ #ifdef DUMP
+ dump_on("c2demo");
+ #endif
+
/* Note only one set of Codec 2 states is required for an encoder
and decoder pair. */
- codec2 = codec2_create();
+ codec2 = codec2_create(CODEC2_MODE_1300);
+ nsam = codec2_samples_per_frame(codec2);
+ buf = (short*)malloc(nsam*sizeof(short));
+ nbit = codec2_bits_per_frame(codec2);
+ bits = (unsigned char*)malloc(nbit*sizeof(char));
- while(fread(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fin) ==
- CODEC2_SAMPLES_PER_FRAME) {
+ while(fread(buf, sizeof(short), nsam, fin) == (size_t)nsam) {
codec2_encode(codec2, bits, buf);
- codec2_decode(codec2, buf, bits);
- fwrite(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+ codec2_decode(codec2, buf, bits, 0.0);
+ fwrite(buf, sizeof(short), nsam, fout);
}
+ free(buf);
+ free(bits);
codec2_destroy(codec2);
fclose(fin);
diff --git a/gr-vocoder/lib/codec2/c2enc.c b/gr-vocoder/lib/codec2/c2enc.c
index 0e5b26c..ab1ebe4 100644
--- a/gr-vocoder/lib/codec2/c2enc.c
+++ b/gr-vocoder/lib/codec2/c2enc.c
@@ -33,49 +33,74 @@
#include <string.h>
#include <errno.h>
-#define BITS_SIZE ((CODEC2_BITS_PER_FRAME + 7) / 8)
-
int main(int argc, char *argv[])
{
- void *codec2;
- FILE *fin;
- FILE *fout;
- short buf[CODEC2_SAMPLES_PER_FRAME];
- unsigned char bits[BITS_SIZE];
-
- if (argc != 3) {
- printf("usage: %s InputRawspeechFile OutputBitFile\n", argv[0]);
+ int mode;
+ void *codec2;
+ FILE *fin;
+ FILE *fout;
+ short *buf;
+ unsigned char *bits;
+ int nsam, nbit, nbyte;
+
+ if (argc != 4) {
+ printf("usage: c2enc 3200|2400|1600|1400|1300|1200 InputRawspeechFile
OutputBitFile\n");
+ printf("e.g c2enc 1400 ../raw/hts1a.raw hts1a.c2\n");
exit(1);
}
- if (strcmp(argv[1], "-") == 0) fin = stdin;
- else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
- fprintf(stderr, "Error opening input bit file: %s: %s.\n",
- argv[1], strerror(errno));
+ if (strcmp(argv[1],"3200") == 0)
+ mode = CODEC2_MODE_3200;
+ else if (strcmp(argv[1],"2400") == 0)
+ mode = CODEC2_MODE_2400;
+ else if (strcmp(argv[1],"1600") == 0)
+ mode = CODEC2_MODE_1600;
+ else if (strcmp(argv[1],"1400") == 0)
+ mode = CODEC2_MODE_1400;
+ else if (strcmp(argv[1],"1300") == 0)
+ mode = CODEC2_MODE_1300;
+ else if (strcmp(argv[1],"1200") == 0)
+ mode = CODEC2_MODE_1200;
+ else {
+ fprintf(stderr, "Error in mode: %s. Must be 3200, 2400, 1600, 1400,
1300 or 1200\n", argv[1]);
exit(1);
}
- if (strcmp(argv[2], "-") == 0) fout = stdout;
- else if ( (fout = fopen(argv[2],"wb")) == NULL ) {
- fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+ if (strcmp(argv[2], "-") == 0) fin = stdin;
+ else if ( (fin = fopen(argv[2],"rb")) == NULL ) {
+ fprintf(stderr, "Error opening input speech file: %s: %s.\n",
argv[2], strerror(errno));
exit(1);
}
- codec2 = codec2_create();
+ if (strcmp(argv[3], "-") == 0) fout = stdout;
+ else if ( (fout = fopen(argv[3],"wb")) == NULL ) {
+ fprintf(stderr, "Error opening output compressed bit file: %s: %s.\n",
+ argv[3], strerror(errno));
+ exit(1);
+ }
+
+ codec2 = codec2_create(mode);
+ nsam = codec2_samples_per_frame(codec2);
+ nbit = codec2_bits_per_frame(codec2);
+ buf = (short*)malloc(nsam*sizeof(short));
+ nbyte = (nbit + 7) / 8;
+
+ bits = (unsigned char*)malloc(nbyte*sizeof(char));
- while(fread(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fin) ==
- CODEC2_SAMPLES_PER_FRAME) {
+ while(fread(buf, sizeof(short), nsam, fin) == (size_t)nsam) {
codec2_encode(codec2, bits, buf);
- fwrite(bits, sizeof(char), BITS_SIZE, fout);
- //if this is in a pipeline, we probably don't want the usual
- //buffering to occur
+ fwrite(bits, sizeof(char), nbyte, fout);
+ // if this is in a pipeline, we probably don't want the usual
+ // buffering to occur
if (fout == stdout) fflush(stdout);
if (fin == stdin) fflush(stdin);
}
codec2_destroy(codec2);
+ free(buf);
+ free(bits);
fclose(fin);
fclose(fout);
diff --git a/gr-vocoder/lib/codec2/c2sim.c b/gr-vocoder/lib/codec2/c2sim.c
index e335078..8f07299 100644
--- a/gr-vocoder/lib/codec2/c2sim.c
+++ b/gr-vocoder/lib/codec2/c2sim.c
@@ -4,8 +4,9 @@
AUTHOR......: David Rowe
DATE CREATED: 20/8/2010
- Codec2 simulation. Combines encoder and decoder and allows switching in
- out various algorithms and quantisation steps.
+ Codec2 simulation. Combines encoder and decoder and allows
+ switching in and out various algorithms and quantisation steps. Used
+ for algorithm development.
\*---------------------------------------------------------------------------*/
@@ -32,6 +33,8 @@
#include <string.h>
#include <errno.h>
#include <math.h>
+#include <unistd.h>
+#include <getopt.h>
#include "defines.h"
#include "sine.h"
@@ -43,32 +46,12 @@
#include "phase.h"
#include "postfilter.h"
#include "interp.h"
+#include "ampexp.h"
+#include "phaseexp.h"
-/*---------------------------------------------------------------------------*\
-
- switch_present()
-
- Searches the command line arguments for a "switch". If the switch is
- found, returns the command line argument where it ws found, else returns
- NULL.
-
-\*---------------------------------------------------------------------------*/
-
-int switch_present(sw,argc,argv)
-register char sw[]; /* switch in string form */
-register int argc; /* number of command line arguments */
-register char *argv[]; /* array of command line arguments in string form */
-{
- register int i; /* loop variable */
-
- for(i=1; i<argc; i++)
- if (!strcmp(sw,argv[i]))
- return(i);
+void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model,
float Sn_[], float Pn[], int prede, float *de_mem, float gain);
+void print_help(const struct option *long_options, int num_opts, char* argv[]);
- return 0;
-}
-
-void synth_one_frame(short buf[], MODEL *model, float Sn_[], float Pn[]);
/*---------------------------------------------------------------------------*\
@@ -78,386 +61,829 @@ void synth_one_frame(short buf[], MODEL *model, float
Sn_[], float Pn[]);
int main(int argc, char *argv[])
{
- FILE *fout; /* output speech file */
- FILE *fin; /* input speech file */
- short buf[N]; /* input/output buffer */
- float Sn[M]; /* float input speech samples */
- COMP Sw[FFT_ENC]; /* DFT of Sn[] */
- float w[M]; /* time domain hamming window */
- COMP W[FFT_ENC]; /* DFT of w[] */
- MODEL model;
- float Pn[2*N]; /* trapezoidal synthesis window */
- float Sn_[2*N]; /* synthesised speech */
- int i; /* loop variable */
- int frames;
- float prev_Wo;
- float pitch;
- int voiced1 = 0;
-
- char out_file[MAX_STR];
- int arg;
- float snr;
- float sum_snr;
-
- int lpc_model, order = LPC_ORD;
- int lsp, lspd, lspdvq, lsp_quantiser;
- float ak[LPC_MAX];
- COMP Sw_[FFT_ENC];
- COMP Ew[FFT_ENC];
-
- int dump;
-
- int phase0;
- float ex_phase[MAX_AMP+1];
-
- int postfilt;
- float bg_est;
-
- int hand_voicing;
- FILE *fvoicing = 0;
-
- MODEL prev_model, interp_model;
- int decimate;
- float lsps[LPC_ORD];
- float prev_lsps[LPC_ORD];
- float e, prev_e;
- float ak_interp[LPC_MAX];
-
- void *nlp_states;
- float hpf_states[2];
- int resample;
- float AresdB_prev[MAX_AMP];
-
- for(i=0; i<MAX_AMP; i++)
- AresdB_prev[i] = 0.0;
-
- for(i=0; i<M; i++)
- Sn[i] = 1.0;
- for(i=0; i<2*N; i++)
- Sn_[i] = 0;
-
- prev_Wo = TWO_PI/P_MAX;
-
- prev_model.Wo = TWO_PI/P_MIN;
- prev_model.L = floor(PI/prev_model.Wo);
- for(i=1; i<=prev_model.L; i++) {
- prev_model.A[i] = 0.0;
- prev_model.phi[i] = 0.0;
- }
- for(i=1; i<=MAX_AMP; i++) {
- ex_phase[i] = 0.0;
- }
- for(i=0; i<LPC_ORD; i++) {
- prev_lsps[i] = i*PI/(LPC_ORD+1);
- }
- e = prev_e = 1;
- hpf_states[0] = hpf_states[1] = 0.0;
-
- nlp_states = nlp_create();
-
- if (argc < 2) {
- fprintf(stderr, "\nCodec2 - 2400 bit/s speech codec - Simulation Program\n"
- "\thttp://rowetel.com/codec2.html\n\n"
- "usage: %s InputFile [-o OutputFile]\n"
- "\t[--lpc Order]\n"
- "\t[--lsp]\n"
- "\t[--lspd]\n"
- "\t[--lspdvq]\n"
- "\t[--phase0]\n"
- "\t[--postfilter]\n"
- "\t[--hand_voicing]\n"
- "\t[--dec]\n"
- "\t[--dump DumpFilePrefix]\n", argv[0]);
- exit(1);
- }
-
- /* Interpret command line arguments -------------------------------------*/
-
- /* Input file */
-
- if ((fin = fopen(argv[1],"rb")) == NULL) {
- fprintf(stderr, "Error opening input speech file: %s: %s.\n",
- argv[1], strerror(errno));
- exit(1);
- }
-
- /* Output file */
-
- if ((arg = switch_present("-o",argc,argv))) {
- if ((fout = fopen(argv[arg+1],"wb")) == NULL) {
- fprintf(stderr, "Error opening output speech file: %s: %s.\n",
- argv[arg+1], strerror(errno));
- exit(1);
+ FILE *fout = NULL; /* output speech file */
+ FILE *fin; /* input speech file */
+ short buf[N]; /* input/output buffer */
+ float Sn[M]; /* float input speech samples */
+ float Sn_pre[M]; /* pre-emphasised input speech samples */
+ COMP Sw[FFT_ENC]; /* DFT of Sn[] */
+ kiss_fft_cfg fft_fwd_cfg;
+ kiss_fft_cfg fft_inv_cfg;
+ float w[M]; /* time domain hamming window */
+ COMP W[FFT_ENC]; /* DFT of w[] */
+ MODEL model;
+ float Pn[2*N]; /* trapezoidal synthesis window */
+ float Sn_[2*N]; /* synthesised speech */
+ int i; /* loop variable */
+ int frames;
+ float prev_Wo, prev__Wo, uq_Wo, prev_uq_Wo;
+ float pitch;
+ int voiced1 = 0;
+ char out_file[MAX_STR];
+ char ampexp_arg[MAX_STR];
+ char phaseexp_arg[MAX_STR];
+ float snr;
+ float sum_snr;
+
+ int lpc_model = 0, order = LPC_ORD;
+ int lsp = 0, lspd = 0, lspvq = 0;
+ int lspres = 0;
+ int lspdt = 0, lspdt_mode = LSPDT_ALL;
+ int dt = 0, lspjvm = 0, lspanssi = 0, lspjnd = 0, lspmel = 0;
+ int prede = 0;
+ float pre_mem = 0.0, de_mem = 0.0;
+ float ak[LPC_MAX];
+ COMP Sw_[FFT_ENC];
+ COMP Ew[FFT_ENC];
+
+ int phase0 = 0;
+ float ex_phase[MAX_AMP+1];
+
+ int postfilt;
+ float bg_est;
+
+ int hand_voicing = 0, phaseexp = 0, ampexp = 0, hi = 0, simlpcpf = 0;
+ int lpcpf = 0;
+ FILE *fvoicing = 0;
+
+ MODEL prev_model, interp_model;
+ int decimate = 0;
+ float lsps[LPC_MAX];
+ float prev_lsps[LPC_MAX], prev_lsps_[LPC_MAX];
+ float lsps__prev[LPC_MAX];
+ float lsps__prev2[LPC_MAX];
+ float e, prev_e;
+ float ak_interp[LPC_MAX];
+ int lsp_indexes[LPC_MAX];
+ float lsps_[LPC_MAX];
+ float Woe_[2];
+
+ void *nlp_states;
+ float hpf_states[2];
+ int scalar_quant_Wo_e = 0;
+ int vector_quant_Wo_e = 0;
+ int dump_pitch_e = 0;
+ FILE *fjvm = NULL;
+ #ifdef DUMP
+ int dump;
+ #endif
+ struct PEXP *pexp = NULL;
+ struct AEXP *aexp = NULL;
+ float gain = 1.0;
+
+ char* opt_string = "ho:";
+ struct option long_options[] = {
+ { "lpc", required_argument, &lpc_model, 1 },
+ { "lspjnd", no_argument, &lspjnd, 1 },
+ { "lspmel", no_argument, &lspmel, 1 },
+ { "lsp", no_argument, &lsp, 1 },
+ { "lspd", no_argument, &lspd, 1 },
+ { "lspvq", no_argument, &lspvq, 1 },
+ { "lspres", no_argument, &lspres, 1 },
+ #ifdef __EXPERIMENTAL__
+ { "lspdt", no_argument, &lspdt, 1 },
+ { "lspdt_mode", required_argument, NULL, 0 },
+ #endif
+ { "lspjvm", no_argument, &lspjvm, 1 },
+ #ifdef __EXPERIMENTAL__
+ { "lspanssi", no_argument, &lspanssi, 1 },
+ #endif
+ { "phase0", no_argument, &phase0, 1 },
+ { "phaseexp", required_argument, &phaseexp, 1 },
+ { "ampexp", required_argument, &exp, 1 },
+ { "postfilter", no_argument, &postfilt, 1 },
+ { "hand_voicing", required_argument, &hand_voicing, 1 },
+ { "dec", no_argument, &decimate, 1 },
+ { "dt", no_argument, &dt, 1 },
+ { "hi", no_argument, &hi, 1 },
+ { "simlpcpf", no_argument, &simlpcpf, 1 },
+ { "lpcpf", no_argument, &lpcpf, 1 },
+ { "prede", no_argument, &prede, 1 },
+ { "dump_pitch_e", required_argument, &dump_pitch_e, 1 },
+ { "sq_pitch_e", no_argument, &scalar_quant_Wo_e, 1 },
+ { "vq_pitch_e", no_argument, &vector_quant_Wo_e, 1 },
+ { "rate", required_argument, NULL, 0 },
+ { "gain", required_argument, NULL, 0 },
+ #ifdef DUMP
+ { "dump", required_argument, &dump, 1 },
+ #endif
+ { "help", no_argument, NULL, 'h' },
+ { NULL, no_argument, NULL, 0 }
+ };
+ int num_opts=sizeof(long_options)/sizeof(struct option);
+
+ for(i=0; i<M; i++) {
+ Sn[i] = 1.0;
+ Sn_pre[i] = 1.0;
}
- strcpy(out_file,argv[arg+1]);
- }
- else
- fout = NULL;
-
- lpc_model = 0;
- if ((arg = switch_present("--lpc",argc,argv))) {
- lpc_model = 1;
- order = atoi(argv[arg+1]);
- if ((order < 4) || (order > 20)) {
- fprintf(stderr, "Error in lpc order: %d\n", order);
- exit(1);
- }
- }
-
- dump = switch_present("--dump",argc,argv);
-#ifdef DUMP
- if (dump)
- dump_on(argv[dump+1]);
-#endif
-
- lsp = switch_present("--lsp",argc,argv);
- lsp_quantiser = 0;
- if (lsp)
- assert(order == LPC_ORD);
+ for(i=0; i<2*N; i++)
+ Sn_[i] = 0;
- lspd = switch_present("--lspd",argc,argv);
- if (lspd)
- assert(order == LPC_ORD);
+ prev_uq_Wo = prev_Wo = prev__Wo = TWO_PI/P_MAX;
- lspdvq = switch_present("--lspdvq",argc,argv);
- if (lspdvq)
- assert(order == LPC_ORD);
+ prev_model.Wo = TWO_PI/P_MIN;
+ prev_model.L = floor(PI/prev_model.Wo);
+ for(i=1; i<=prev_model.L; i++) {
+ prev_model.A[i] = 0.0;
+ prev_model.phi[i] = 0.0;
+ }
+ for(i=1; i<=MAX_AMP; i++) {
+ //ex_phase[i] = (PI/3)*(float)rand()/RAND_MAX;
+ ex_phase[i] = 0.0;
+ }
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_[i] = prev_lsps[i] = prev_lsps_[i] = i*PI/(LPC_ORD+1);
+ lsps__prev[i] = lsps__prev2[i] = i*PI/(LPC_ORD+1);
+ }
+ e = prev_e = 1;
+ hpf_states[0] = hpf_states[1] = 0.0;
- phase0 = switch_present("--phase0",argc,argv);
- if (phase0) {
- ex_phase[0] = 0;
- }
+ nlp_states = nlp_create(M);
- hand_voicing = switch_present("--hand_voicing",argc,argv);
- if (hand_voicing) {
- fvoicing = fopen(argv[hand_voicing+1],"rt");
- assert(fvoicing != NULL);
- }
+ if (argc < 2) {
+ print_help(long_options, num_opts, argv);
+ }
- bg_est = 0.0;
- postfilt = switch_present("--postfilter",argc,argv);
+ /*----------------------------------------------------------------*\
+
+ Interpret Command Line Arguments
+
+ \*----------------------------------------------------------------*/
+
+ while(1) {
+ int option_index = 0;
+ int opt = getopt_long(argc, argv, opt_string,
+ long_options, &option_index);
+ if (opt == -1)
+ break;
+ switch (opt) {
+ case 0:
+ if(strcmp(long_options[option_index].name, "lpc") == 0) {
+ order = atoi(optarg);
+ if((order < 4) || (order > 20)) {
+ fprintf(stderr, "Error in LPC order: %s\n", optarg);
+ exit(1);
+ }
+ #ifdef DUMP
+ } else if(strcmp(long_options[option_index].name, "dump") == 0) {
+ if (dump)
+ dump_on(optarg);
+ #endif
+ } else if(strcmp(long_options[option_index].name, "lsp") == 0
+ || strcmp(long_options[option_index].name, "lspd") == 0
+ || strcmp(long_options[option_index].name, "lspvq") == 0) {
+ assert(order == LPC_ORD);
+ } else if(strcmp(long_options[option_index].name, "lspdt_mode") ==
0) {
+ if (strcmp(optarg,"all") == 0)
+ lspdt_mode = LSPDT_ALL;
+ else if (strcmp(optarg,"low") == 0)
+ lspdt_mode = LSPDT_LOW;
+ else if (strcmp(optarg,"high") == 0)
+ lspdt_mode = LSPDT_HIGH;
+ else {
+ fprintf(stderr, "Error in lspdt_mode: %s\n", optarg);
+ exit(1);
+ }
+ } else if(strcmp(long_options[option_index].name, "hand_voicing")
== 0) {
+ if ((fvoicing = fopen(optarg,"rt")) == NULL) {
+ fprintf(stderr, "Error opening voicing file: %s: %s.\n",
+ optarg, strerror(errno));
+ exit(1);
+ }
+ } else if(strcmp(long_options[option_index].name, "dump_pitch_e")
== 0) {
+ if ((fjvm = fopen(optarg,"wt")) == NULL) {
+ fprintf(stderr, "Error opening pitch & energy dump file:
%s: %s.\n",
+ optarg, strerror(errno));
+ exit(1);
+ }
+ } else if(strcmp(long_options[option_index].name, "phaseexp") == 0)
{
+ strcpy(phaseexp_arg, optarg);
+ } else if(strcmp(long_options[option_index].name, "ampexp") == 0) {
+ strcpy(ampexp_arg, optarg);
+ } else if(strcmp(long_options[option_index].name, "gain") == 0) {
+ gain = atof(optarg);
+ } else if(strcmp(long_options[option_index].name, "rate") == 0) {
+ if(strcmp(optarg,"3200") == 0) {
+ lpc_model = 1; order = 10;
+ scalar_quant_Wo_e = 1;
+ lspd = 1;
+ phase0 = 1;
+ postfilt = 1;
+ decimate = 1;
+ lpcpf = 1;
+ } else if(strcmp(optarg,"2400") == 0) {
+ lpc_model = 1; order = 10;
+ vector_quant_Wo_e = 1;
+ lsp = 1;
+ phase0 = 1;
+ postfilt = 1;
+ decimate = 1;
+ lpcpf = 1;
+ } else if(strcmp(optarg,"1400") == 0) {
+ lpc_model = 1; order = 10;
+ vector_quant_Wo_e = 1;
+ lsp = 1; lspdt = 1;
+ phase0 = 1;
+ postfilt = 1;
+ decimate = 1;
+ dt = 1;
+ lpcpf = 1;
+ } else if(strcmp(optarg,"1200") == 0) {
+ lpc_model = 1; order = 10;
+ scalar_quant_Wo_e = 1;
+ lspjvm = 1; lspdt = 1;
+ phase0 = 1;
+ postfilt = 1;
+ decimate = 1;
+ dt = 1;
+ lpcpf = 1;
+ } else {
+ fprintf(stderr, "Error: invalid output rate %s\n", optarg);
+ exit(1);
+ }
+ }
+ break;
+
+ case 'h':
+ print_help(long_options, num_opts, argv);
+ break;
+
+ case 'o':
+ if (strcmp(optarg, "-") == 0) fout = stdout;
+ else if ((fout = fopen(optarg,"wb")) == NULL) {
+ fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+ optarg, strerror(errno));
+ exit(1);
+ }
+ strcpy(out_file,optarg);
+ break;
+
+ default:
+ /* This will never be reached */
+ break;
+ }
+ }
- decimate = switch_present("--dec",argc,argv);
+ /* Input file */
- arg = switch_present("--resample",argc,argv);
- resample = atoi(argv[arg+1]);
+ if ((fin = fopen(argv[optind],"rb")) == NULL) {
+ fprintf(stderr, "Error opening input speech file: %s: %s.\n",
+ argv[optind], strerror(errno));
+ exit(1);
+ }
- /* Initialise ------------------------------------------------------------*/
+ ex_phase[0] = 0;
+ bg_est = 0.0;
+ Woe_[0] = Woe_[1] = 1.0;
- make_analysis_window(w,W);
- make_synthesis_window(Pn);
- quantise_init();
+ /*
+ printf("lspd: %d lspdt: %d lspdt_mode: %d phase0: %d postfilt: %d "
+ "decimate: %d dt: %d\n",lspd,lspdt,lspdt_mode,phase0,postfilt,
+ decimate,dt);
+ */
- /* Main loop ------------------------------------------------------------*/
+ /* Initialise
------------------------------------------------------------*/
- frames = 0;
- sum_snr = 0;
- while(fread(buf,sizeof(short),N,fin)) {
- frames++;
- //printf("frame: %d", frames);
+ fft_fwd_cfg = kiss_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in
several places */
+ fft_inv_cfg = kiss_fft_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used
just for synth */
+ make_analysis_window(fft_fwd_cfg, w, W);
+ make_synthesis_window(Pn);
+ quantise_init();
+ if (phaseexp)
+ pexp = phase_experiment_create();
+ if (ampexp)
+ aexp = amp_experiment_create();
- /* Read input speech */
+ /*----------------------------------------------------------------*\
- for(i=0; i<M-N; i++)
- Sn[i] = Sn[i+N];
- for(i=0; i<N; i++) {
- //Sn[i+M-N] = hpf((float)buf[i], hpf_states);
- Sn[i+M-N] = (float)buf[i];
- }
+ Main Loop
- /* Estimate pitch */
+ \*----------------------------------------------------------------*/
- nlp(nlp_states,Sn,N,M,P_MIN,P_MAX,&pitch,Sw,&prev_Wo);
- model.Wo = TWO_PI/pitch;
+ frames = 0;
+ sum_snr = 0;
+ while(fread(buf,sizeof(short),N,fin)) {
+ frames++;
+ //printf("frame: %d ", frames);
- /* estimate model parameters */
+ /* Read input speech */
- dft_speech(Sw, Sn, w);
- two_stage_pitch_refinement(&model, Sw);
- estimate_amplitudes(&model, Sw, W);
-#ifdef DUMP
- dump_Sn(Sn); dump_Sw(Sw); dump_model(&model);
-#endif
+ for(i=0; i<M-N; i++) {
+ Sn[i] = Sn[i+N];
+ Sn_pre[i] = Sn_pre[i+N];
+ }
+ for(i=0; i<N; i++)
+ Sn[i+M-N] = buf[i];
- /* optional zero-phase modelling */
+ pre_emp(&Sn_pre[M-N], &Sn[M-N], &pre_mem, N);
- if (phase0) {
- float Wn[M]; /* windowed speech samples */
- float Rk[LPC_MAX+1]; /* autocorrelation coeffs */
-#ifdef DUMP
- dump_phase(&model.phi[0], model.L);
-#endif
+ /*------------------------------------------------------------*\
- /* find aks here, these are overwritten if LPC modelling is enabled */
+ Estimate Sinusoidal Model Parameters
- for(i=0; i<M; i++)
- Wn[i] = Sn[i]*w[i];
- autocorrelate(Wn,Rk,M,order);
- levinson_durbin(Rk,ak,order);
+ \*------------------------------------------------------------*/
-#ifdef DUMP
- dump_ak(ak, LPC_ORD);
-#endif
+ nlp(nlp_states,Sn,N,P_MIN,P_MAX,&pitch,Sw,W,&prev_uq_Wo);
+ model.Wo = TWO_PI/pitch;
- /* determine voicing */
+ dft_speech(fft_fwd_cfg, Sw, Sn, w);
+ two_stage_pitch_refinement(&model, Sw);
+ estimate_amplitudes(&model, Sw, W, 1);
+ uq_Wo = model.Wo;
- snr = est_voicing_mbe(&model, Sw, W, Sw_, Ew, prev_Wo);
-#ifdef DUMP
- dump_Sw_(Sw_);
- dump_Ew(Ew);
- dump_snr(snr);
-#endif
+ #ifdef DUMP
+ dump_Sn(Sn); dump_Sw(Sw); dump_model(&model);
+ #endif
- /* just to make sure we are not cheating - kill all phases */
+ if (ampexp)
+ amp_experiment(aexp, &model, ampexp_arg);
- for(i=0; i<MAX_AMP; i++)
- model.phi[i] = 0;
+ if (phaseexp) {
+ #ifdef DUMP
+ dump_phase(&model.phi[0], model.L);
+ #endif
+ phase_experiment(pexp, &model, phaseexp_arg);
+ #ifdef DUMP
+ dump_phase_(&model.phi[0], model.L);
+ #endif
+ }
- if (hand_voicing) {
- fscanf(fvoicing,"%d\n",&model.voiced);
+ if (hi) {
+ int m;
+ for(m=1; m<model.L/2; m++)
+ model.A[m] = 0.0;
+ for(m=3*model.L/4; m<=model.L; m++)
+ model.A[m] = 0.0;
}
- }
- /* optional LPC model amplitudes */
+ /*------------------------------------------------------------*\
- if (lpc_model) {
- int lsp_indexes[LPC_MAX];
+ Zero-phase modelling
- e = speech_to_uq_lsps(lsps, ak, Sn, w, order);
+ \*------------------------------------------------------------*/
- if (lsp) {
- encode_lsps(lsp_indexes, lsps, LPC_ORD);
- decode_lsps(lsps, lsp_indexes, LPC_ORD);
- bw_expand_lsps(lsps, LPC_ORD);
- lsp_to_lpc(lsps, ak, LPC_ORD);
- }
+ if (phase0) {
+ float Wn[M]; /* windowed speech samples */
+ float Rk[LPC_MAX+1]; /* autocorrelation coeffs */
- if (lspd) {
- float lsps_[LPC_ORD];
+ #ifdef DUMP
+ dump_phase(&model.phi[0], model.L);
+ #endif
- lspd_quantise(lsps, lsps_, LPC_ORD);
- lsp_to_lpc(lsps_, ak, LPC_ORD);
- }
+ /* find aks here, these are overwritten if LPC modelling is enabled
*/
- if (lspdvq) {
- float lsps_[LPC_ORD];
+ if (prede) {
+ for(i=0; i<M; i++)
+ Wn[i] = Sn_pre[i]*w[i];
+ }
+ else {
- lspdvq_quantise(lsps, lsps_, LPC_ORD);
- lsp_to_lpc(lsps_, ak, LPC_ORD);
- }
+ for(i=0; i<M; i++)
+ Wn[i] = Sn[i]*w[i];
+ }
+ autocorrelate(Wn,Rk,M,order);
+ levinson_durbin(Rk,ak,order);
- e = decode_energy(encode_energy(e));
- model.Wo = decode_Wo(encode_Wo(model.Wo));
+ /* determine voicing */
- aks_to_M2(ak, order, &model, e, &snr, 1);
- apply_lpc_correction(&model);
- sum_snr += snr;
-#ifdef DUMP
- dump_quantised_model(&model);
-#endif
- }
+ snr = est_voicing_mbe(&model, Sw, W, Sw_, Ew, prev_uq_Wo);
- /* optional resampling of model amplitudes */
+ if (dump_pitch_e)
+ fprintf(fjvm, "%f %f %d ", model.Wo, snr, model.voiced);
- printf("frames=%d\n", frames);
- if (resample) {
- snr = resample_amp_nl(&model, resample, AresdB_prev);
- sum_snr += snr;
-#ifdef DUMP
- dump_quantised_model(&model);
-#endif
- }
+ //printf("snr %3.2f v: %d Wo: %f prev_Wo: %f\n", snr, model.voiced,
+ // model.Wo, prev_uq_Wo);
+ #ifdef DUMP
+ dump_Sw_(Sw_);
+ dump_Ew(Ew);
+ dump_snr(snr);
+ #endif
- /* option decimation to 20ms rate, which enables interpolation
- routine to synthesise in between frame */
+ /* just to make sure we are not cheating - kill all phases */
- if (decimate) {
- if (!phase0) {
- printf("needs --phase0 to resample phase for interpolated Wo\n");
- exit(0);
- }
- if (!lpc_model) {
- printf("needs --lpc 10 to resample amplitudes\n");
- exit(0);
+ for(i=0; i<=MAX_AMP; i++)
+ model.phi[i] = 0;
+
+ if (hand_voicing) {
+ fscanf(fvoicing,"%d\n",&model.voiced);
+ }
}
- /* odd frame - interpolate */
+ /*------------------------------------------------------------*\
+
+ LPC model amplitudes and LSP quantisation
+
+ \*------------------------------------------------------------*/
+
+ if (lpc_model) {
+
+ if (prede)
+ e = speech_to_uq_lsps(lsps, ak, Sn_pre, w, order);
+ else
+ e = speech_to_uq_lsps(lsps, ak, Sn, w, order);
+
+ #ifdef DUMP
+ dump_ak(ak, LPC_ORD);
+ #endif
+
+ /* tracking down -ve energy values with BW expansion */
+ /*
+ if (e < 0.0) {
+ int i;
+ FILE*f=fopen("x.txt","wt");
+ for(i=0; i<M; i++)
+ fprintf(f,"%f\n", Sn[i]);
+ fclose(f);
+ printf("e = %f frames = %d\n", e, frames);
+ for(i=0; i<order; i++)
+ printf("%f ", ak[i]);
+ exit(0);
+ }
+ */
+
+ if (dump_pitch_e)
+ fprintf(fjvm, "%f\n", e);
+
+ #ifdef DUMP
+ /* dump order is different if we are decimating */
+ if (!decimate)
+ dump_lsp(lsps);
+ for(i=0; i<LPC_ORD; i++)
+ prev_lsps[i] = lsps[i];
+ #endif
+
+ /* various LSP quantisation schemes */
+
+ if (lsp) {
+ encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+ decode_lsps_scalar(lsps_, lsp_indexes, LPC_ORD);
+ bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+
+ if (lspd) {
+ encode_lspds_scalar(lsp_indexes, lsps, LPC_ORD);
+ decode_lspds_scalar(lsps_, lsp_indexes, LPC_ORD);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+
+#ifdef __EXPERIMENTAL__
+ if (lspvq) {
+ lspvq_quantise(lsps, lsps_, LPC_ORD);
+ bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+#endif
+
+ if (lspjvm) {
+ /* Jean-Marc's multi-stage, split VQ */
+ lspjvm_quantise(lsps, lsps_, LPC_ORD);
+ {
+ float lsps_bw[LPC_ORD];
+ memcpy(lsps_bw, lsps_, sizeof(float)*LPC_ORD);
+ bw_expand_lsps(lsps_bw, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_bw, ak, LPC_ORD);
+ }
+ }
+
+#ifdef __EXPERIMENTAL__
+ if (lspanssi) {
+ /* multi-stage VQ from Anssi Ramo OH3GDD */
+
+ lspanssi_quantise(lsps, lsps_, LPC_ORD, 5);
+ bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+#endif
- if (frames%2) {
+ /* experimenting with non-linear LSP spacing to see if
+ it's just noticable */
+
+ if (lspjnd) {
+ for(i=0; i<LPC_ORD; i++)
+ lsps_[i] = lsps[i];
+ locate_lsps_jnd_steps(lsps_, LPC_ORD);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+
+ /* Another experiment with non-linear LSP spacing, this
+ time using a scaled version of mel frequency axis
+ warping. The scaling is such that the integer output
+ can be directly sent over the channel.
+ */
+
+ if (lspmel) {
+ float f, f_;
+ int mel[LPC_ORD];
+
+ for(i=0; i<LPC_ORD; i++) {
+ f = (4000.0/PI)*lsps[i];
+ mel[i] = floor(100.0*log10(1.0 + f/700.0) + 0.5);
+ }
+
+ for(i=1; i<LPC_ORD; i++) {
+ if (mel[i] == mel[i-1])
+ mel[i]++;
+ }
+
+ for(i=0; i<LPC_ORD; i++) {
+ f_ = 700.0*( pow(10.0, (float)mel[i]/100.0) - 1.0);
+ lsps_[i] = f_*(PI/4000.0);
+ }
+ for(i=5; i<10; i++) {
+ lsps_[i] = lsps[i];
+ }
+
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+
+ /* we need lsp__prev[] for lspdt and decimate. If no
+ other LSP quantisation is used we use original LSPs as
+ there is no quantised version available. TODO: this is
+ mess, we should have structures and standard
+ nomenclature for previous frames values, lsp_[]
+ shouldn't be overwritten as we may want to dump it for
+ analysis. Re-design some time.
+ */
+
+ if (!lsp && !lspd && !lspvq && !lspres && !lspjvm && !lspanssi &&
!lspjnd && !lspmel)
+ for(i=0; i<LPC_ORD; i++)
+ lsps_[i] = lsps[i];
+
+ /* Odd frames are generated by quantising the difference
+ between the previous frames LSPs and this frames */
+
+#ifdef __EXPERIMENTAL__
+ if (lspdt && !decimate) {
+ if (frames%2) {
+ lspdt_quantise(lsps, lsps_, lsps__prev, lspdt_mode);
+ bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+ for(i=0; i<LPC_ORD; i++)
+ lsps__prev[i] = lsps_[i];
+ }
+#endif
- interp_model.voiced = voiced1;
+ /*
+ When decimation is enabled we only send LSPs to the
+ decoder on odd frames. In the Delta-time LSPs case we
+ encode every second odd frame (i.e. every 3rd frame out
+ of 4) by quantising the difference between the 1st
+ frames LSPs and the 3rd frames:
+
+ 10ms, frame 1: discard (interpolate at decoder)
+ 20ms, frame 2: send "full" LSP frame
+ 30ms, frame 3: discard (interpolate at decoder)
+ 40ms, frame 4: send LSPs differences between frame 4 and frame 2
+ */
+
+ if (lspdt && decimate) {
+ /* print previous LSPs to make sure we are using the right set
*/
+ if ((frames%4) == 0) {
+ //printf(" lspdt ");
+ //#define LSPDT
+ #ifdef LSPDT
+ lspdt_quantise(lsps, lsps_, lsps__prev2, lspdt_mode);
+ #else
+ for(i=0; i<LPC_ORD; i++)
+ lsps_[i] = lsps__prev2[i];
+ #endif
+ bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+ lsp_to_lpc(lsps_, ak, LPC_ORD);
+ }
+
+ for(i=0; i<LPC_ORD; i++) {
+ lsps__prev2[i] = lsps__prev[i];
+ lsps__prev[i] = lsps_[i];
+ }
+ }
+ #ifdef DUMP
+ /* if using decimated (20ms) frames we dump interp
+ LSPs below */
+ if (!decimate)
+ dump_lsp_(lsps_);
+ #endif
+
+ if (scalar_quant_Wo_e) {
+
+ e = decode_energy(encode_energy(e));
+
+ if (!decimate) {
+ /* we send params every 10ms, delta-time every 20ms */
+ if (dt && (frames % 2))
+ model.Wo = decode_Wo_dt(encode_Wo_dt(model.Wo,
prev_Wo),prev_Wo);
+ else
+ model.Wo = decode_Wo(encode_Wo(model.Wo));
+ }
+
+ if (decimate) {
+ /* we send params every 20ms */
+ if (dt && ((frames % 4) == 0)) {
+ /* delta-time every 40ms */
+ model.Wo = decode_Wo_dt(encode_Wo_dt(model.Wo,
prev__Wo),prev__Wo);
+ }
+ else
+ model.Wo = decode_Wo(encode_Wo(model.Wo));
+ }
+
+ model.L = PI/model.Wo; /* if we quantise Wo re-compute L */
+ }
+
+ if (vector_quant_Wo_e) {
+
+ /* JVM's experimental joint Wo & LPC energy quantiser */
+
+ //printf("\nWo %f e %f\n", model.Wo, e);
+ quantise_WoE(&model, &e, Woe_);
+ //printf("Wo %f e %f\n", model.Wo, e);
+
+ }
+
+ aks_to_M2(fft_fwd_cfg, ak, order, &model, e, &snr, 1, simlpcpf,
lpcpf, 1, LPCPF_BETA, LPCPF_GAMMA);
+ apply_lpc_correction(&model);
+
+ #ifdef DUMP
+ dump_ak_(ak, LPC_ORD);
+ #endif
+
+ /* note SNR on interpolated frames can't be measured properly
+ by comparing Am as L has changed. We can dump interp lsps
+ and compare them,
+ */
+ #ifdef DUMP
+ dump_lpc_snr(snr);
+ #endif
+ sum_snr += snr;
+ #ifdef DUMP
+ dump_quantised_model(&model);
+ #endif
+ }
- #ifdef LOG_LIN_INTERP
- interpolate(&interp_model, &prev_model, &model);
- #else
- interpolate_lsp(&interp_model, &prev_model, &model,
- prev_lsps, prev_e, lsps, e, ak_interp);
- apply_lpc_correction(&interp_model);
- #endif
+ /*------------------------------------------------------------*\
+
+ Decimation to 20ms frame rate
+
+ \*------------------------------------------------------------*/
+
+ if (decimate) {
+ float lsps_interp[LPC_ORD];
+
+ if (!phase0) {
+ printf("needs --phase0 to resample phase for interpolated
Wo\n");
+ exit(0);
+ }
+ if (!lpc_model) {
+ printf("needs --lpc 10 to resample amplitudes\n");
+ exit(0);
+ }
+
+ /*
+ Each 20ms we synthesise two 10ms frames:
+
+ frame 1: discard except for voicing bit
+ frame 2: interpolate frame 1 LSPs from frame 2 and frame 0
+ synthesise frame 1 and frame 2 speech
+ frame 3: discard except for voicing bit
+ frame 4: interpolate frame 3 LSPs from frame 4 and frame 2
+ synthesise frame 3 and frame 4 speech
+ */
+
+ if ((frames%2) == 0) {
+ //printf("frame: %d\n", frames);
+
+ /* decode interpolated frame */
+
+ interp_model.voiced = voiced1;
+
+ interpolate_lsp(fft_fwd_cfg, &interp_model, &prev_model, &model,
+ prev_lsps_, prev_e, lsps_, e, ak_interp,
lsps_interp);
+ apply_lpc_correction(&interp_model);
+
+ /* used to compare with c2enc/c2dec version
+
+ printf(" Wo: %1.5f L: %d v1: %d prev_e: %f\n",
+ interp_model.Wo, interp_model.L, interp_model.voiced,
prev_e);
+ printf(" lsps_interp: ");
+ for(i=0; i<LPC_ORD; i++)
+ printf("%5.3f ", lsps_interp[i]);
+ printf("\n A..........: ");
+ for(i=0; i<10; i++)
+ printf("%5.3f ",interp_model.A[i]);
+
+ printf("\n Wo: %1.5f L: %d e: %3.2f v2: %d\n",
+ model.Wo, model.L, e, model.voiced);
+ printf(" lsps_......: ");
+ for(i=0; i<LPC_ORD; i++)
+ printf("%5.3f ", lsps_[i]);
+ printf("\n A..........: ");
+ for(i=0; i<10; i++)
+ printf("%5.3f ",model.A[i]);
+ printf("\n");
+ */
+
+ #ifdef DUMP
+ /* do dumping here so we get lsp dump file in correct order */
+ dump_lsp(prev_lsps);
+ dump_lsp(lsps_interp);
+ dump_lsp(lsps);
+ dump_lsp(lsps_);
+ #endif
+
+ if (phase0)
+ phase_synth_zero_order(fft_fwd_cfg, &interp_model,
ak_interp, ex_phase,
+ order);
+ if (postfilt)
+ postfilter(&interp_model, &bg_est);
+ synth_one_frame(fft_inv_cfg, buf, &interp_model, Sn_, Pn,
prede, &de_mem, gain);
+ //printf(" buf[0] %d\n", buf[0]);
+ if (fout != NULL)
+ fwrite(buf,sizeof(short),N,fout);
+
+ /* decode this frame */
+
+ if (phase0)
+ phase_synth_zero_order(fft_fwd_cfg, &model, ak, ex_phase,
order);
+ if (postfilt)
+ postfilter(&model, &bg_est);
+ synth_one_frame(fft_inv_cfg, buf, &model, Sn_, Pn, prede,
&de_mem, gain);
+ //printf(" buf[0] %d\n", buf[0]);
+ if (fout != NULL)
+ fwrite(buf,sizeof(short),N,fout);
+
+ /* update states for next time */
+
+ prev_model = model;
+ for(i=0; i<LPC_ORD; i++)
+ prev_lsps_[i] = lsps_[i];
+ prev_e = e;
+ }
+ else {
+ voiced1 = model.voiced;
+ }
+ }
+ else {
+ /* no decimation - sythesise each 10ms frame immediately */
if (phase0)
- phase_synth_zero_order(&interp_model, ak_interp, ex_phase,
- order);
- if (postfilt)
- postfilter(&interp_model, &bg_est);
- synth_one_frame(buf, &interp_model, Sn_, Pn);
- if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
+ phase_synth_zero_order(fft_fwd_cfg, &model, ak, ex_phase,
order);
- if (phase0)
- phase_synth_zero_order(&model, ak, ex_phase, order);
if (postfilt)
postfilter(&model, &bg_est);
- synth_one_frame(buf, &model, Sn_, Pn);
+ synth_one_frame(fft_inv_cfg, buf, &model, Sn_, Pn, prede, &de_mem,
gain);
if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
-
- prev_model = model;
- for(i=0; i<LPC_ORD; i++)
- prev_lsps[i] = lsps[i];
- prev_e = e;
- }
- else {
- voiced1 = model.voiced;
}
+
+ prev__Wo = prev_Wo;
+ prev_Wo = model.Wo;
+ prev_uq_Wo = uq_Wo;
+ //if (frames == 8) {
+ // exit(0);
+ //}
}
- else {
- if (phase0)
- phase_synth_zero_order(&model, ak, ex_phase, order);
- if (postfilt)
- postfilter(&model, &bg_est);
- synth_one_frame(buf, &model, Sn_, Pn);
- if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
- }
- prev_Wo = TWO_PI/pitch;
- }
- fclose(fin);
- if (fout != NULL)
- fclose(fout);
+ /*----------------------------------------------------------------*\
- if (lpc_model || resample)
- printf("SNR av = %5.2f dB\n", sum_snr/frames);
+ End Main Loop
-#ifdef DUMP
- if (dump)
- dump_off();
-#endif
+ \*----------------------------------------------------------------*/
+
+ fclose(fin);
- if (hand_voicing)
- fclose(fvoicing);
+ if (fout != NULL)
+ fclose(fout);
- nlp_destroy(nlp_states);
+ if (lpc_model)
+ printf("SNR av = %5.2f dB\n", sum_snr/frames);
- return 0;
+ if (phaseexp)
+ phase_experiment_destroy(pexp);
+ if (ampexp)
+ amp_experiment_destroy(aexp);
+ #ifdef DUMP
+ if (dump)
+ dump_off();
+ #endif
+
+ if (hand_voicing)
+ fclose(fvoicing);
+
+ nlp_destroy(nlp_states);
+
+ return 0;
}
-void synth_one_frame(short buf[], MODEL *model, float Sn_[], float Pn[])
+void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model,
float Sn_[], float Pn[], int prede, float *de_mem, float gain)
{
int i;
- synthesise(Sn_, model, Pn, 1);
+ synthesise(fft_inv_cfg, Sn_, model, Pn, 1);
+ if (prede)
+ de_emp(Sn_, Sn_, de_mem, N);
for(i=0; i<N; i++) {
+ Sn_[i] *= gain;
if (Sn_[i] > 32767.0)
buf[i] = 32767;
else if (Sn_[i] < -32767.0)
@@ -467,3 +893,36 @@ void synth_one_frame(short buf[], MODEL *model, float
Sn_[], float Pn[])
}
}
+
+void print_help(const struct option* long_options, int num_opts, char* argv[])
+{
+ int i;
+ char *option_parameters;
+
+ fprintf(stderr, "\nCodec2 - low bit rate speech codec - Simulation
Program\n"
+ "\thttp://rowetel.com/codec2.html\n\n"
+ "usage: %s [OPTIONS] <InputFile>\n\n"
+ "Options:\n"
+ "\t-o <OutputFile>\n", argv[0]);
+ for(i=0; i<num_opts-1; i++) {
+ if(long_options[i].has_arg == no_argument) {
+ option_parameters="";
+ } else if (strcmp("lpc", long_options[i].name) == 0) {
+ option_parameters = " <Order>";
+ } else if (strcmp("lspdt_mode", long_options[i].name) == 0) {
+ option_parameters = " <all|high|low>";
+ } else if (strcmp("hand_voicing", long_options[i].name) == 0) {
+ option_parameters = " <VoicingFile>";
+ } else if (strcmp("dump_pitch_e", long_options[i].name) == 0) {
+ option_parameters = " <Dump File>";
+ } else if (strcmp("rate", long_options[i].name) == 0) {
+ option_parameters = " <4800|2400|1400|1200>";
+ } else if (strcmp("dump", long_options[i].name) == 0) {
+ option_parameters = " <DumpFilePrefix>";
+ } else {
+ option_parameters = " <UNDOCUMENTED parameter>";
+ }
+ fprintf(stderr, "\t--%s%s\n", long_options[i].name,
option_parameters);
+ }
+ exit(1);
+}
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp1.txt
b/gr-vocoder/lib/codec2/codebook/dlsp1.txt
index d126be7..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp1.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp1.txt
@@ -1,4 +1,12 @@
-1 16
+1 32
+25
+50
+75
+100
+125
+150
+175
+200
225
250
275
@@ -15,3 +23,13 @@
550
575
600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp10.txt
b/gr-vocoder/lib/codec2/codebook/dlsp10.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp10.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp10.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+225
+250
+275
300
+325
+350
+375
+400
425
+450
+475
+500
+525
550
+575
+600
+625
+650
675
+700
+725
+750
+775
800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp2.txt
b/gr-vocoder/lib/codec2/codebook/dlsp2.txt
index 234bf20..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp2.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp2.txt
@@ -1,4 +1,4 @@
-1 16
+1 32
25
50
75
@@ -15,3 +15,21 @@
350
375
400
+425
+450
+475
+500
+525
+550
+575
+600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp3.txt
b/gr-vocoder/lib/codec2/codebook/dlsp3.txt
index b2ee06d..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp3.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp3.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
75
100
-120
+125
150
+175
+200
+225
250
+275
+300
+325
350
+375
+400
+425
450
+475
+500
+525
+550
+575
+600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp4.txt
b/gr-vocoder/lib/codec2/codebook/dlsp4.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp4.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp4.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+250
300
-425
+350
+400
+450
+500
550
-675
+600
+650
+700
+750
800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp5.txt
b/gr-vocoder/lib/codec2/codebook/dlsp5.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp5.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp5.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+250
300
-425
+350
+400
+450
+500
550
-675
+600
+650
+700
+750
800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp6.txt
b/gr-vocoder/lib/codec2/codebook/dlsp6.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp6.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp6.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+250
300
-425
+350
+400
+450
+500
550
-675
+600
+650
+700
+750
800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp7.txt
b/gr-vocoder/lib/codec2/codebook/dlsp7.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp7.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp7.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+225
+250
+275
300
+325
+350
+375
+400
425
+450
+475
+500
+525
550
+575
+600
+625
+650
675
+700
+725
+750
+775
800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp8.txt
b/gr-vocoder/lib/codec2/codebook/dlsp8.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp8.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp8.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+225
+250
+275
300
+325
+350
+375
+400
425
+450
+475
+500
+525
550
+575
+600
+625
+650
675
+700
+725
+750
+775
800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp9.txt
b/gr-vocoder/lib/codec2/codebook/dlsp9.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp9.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp9.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
50
+75
100
+125
+150
+175
200
+225
+250
+275
300
+325
+350
+375
+400
425
+450
+475
+500
+525
550
+575
+600
+625
+650
675
+700
+725
+750
+775
800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/gecb.txt
b/gr-vocoder/lib/codec2/codebook/gecb.txt
new file mode 100644
index 0000000..bd3bb08
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/gecb.txt
@@ -0,0 +1,257 @@
+2 256
+2.709998 12.018395
+0.046750 -2.738813
+0.120993 8.388947
+-1.580275 -0.892307
+1.193065 -1.915609
+0.187101 -3.276788
+0.332251 -7.664550
+-1.479436 31.246122
+1.527612 27.709463
+-0.524379 5.250122
+0.553330 7.438797
+-0.843451 -1.952987
+2.263885 8.610286
+0.143143 2.365493
+0.616506 1.284268
+-1.711327 22.096672
+1.008128 17.396519
+-0.106718 1.418905
+-0.136246 14.273605
+-1.709087 -20.531881
+1.657866 -3.391068
+0.138049 -4.957845
+0.536729 -1.943748
+0.196307 36.851948
+1.272479 22.556494
+-0.670219 -1.906045
+0.382092 6.401132
+-0.756911 -4.901017
+1.829313 4.613800
+0.318794 0.736830
+0.612815 -2.075045
+-0.410151 24.787077
+1.776016 13.190924
+0.106457 -0.104492
+0.192206 10.183844
+-1.824423 -7.715654
+0.931346 4.348355
+0.308813 -4.086001
+0.397143 -11.808859
+-0.048715 41.227314
+0.877342 35.850311
+-0.759794 0.476634
+0.978593 7.674673
+-1.195056 3.038826
+2.639894 -3.411063
+0.191127 3.603507
+0.402932 1.084298
+-2.152022 18.107616
+1.546802 8.322713
+-0.143089 -4.075922
+-0.150142 5.866741
+-1.408444 -3.250696
+1.566148 -10.413164
+0.178171 -10.226697
+0.362164 -0.028556
+-0.070125 24.390722
+0.594752 17.482765
+-0.286980 -6.904069
+0.464818 10.205451
+-1.006841 -14.357209
+2.329569 -3.691613
+0.335745 2.407139
+1.019658 -3.155647
+-1.259455 7.991899
+2.383695 19.680567
+-0.094947 -2.413742
+0.209330 6.664768
+-2.221034 1.379860
+1.292387 2.046333
+0.243626 -0.890741
+0.428773 -7.193658
+-1.113744 41.341354
+2.609799 31.140514
+-0.446468 2.534188
+0.490104 4.627575
+-1.117226 -3.241744
+1.791562 8.414926
+0.156012 0.183336
+0.532447 3.154545
+-0.764484 18.513958
+0.952395 11.771298
+-0.332567 0.346987
+0.202165 14.716752
+-2.129240 -15.558954
+1.353583 -1.926790
+-0.010963 -16.336386
+0.399053 -2.790569
+0.750657 31.148336
+0.655743 24.481859
+-0.453210 -0.735879
+0.286900 6.546703
+-0.715673 -12.357815
+1.548488 3.872171
+0.271874 0.802339
+0.502073 -4.854850
+-0.497037 17.761904
+1.191161 13.954446
+0.015630 1.331566
+0.341867 8.935369
+-2.316009 -5.395058
+0.758610 1.964505
+0.241320 -3.237686
+0.267151 -11.234388
+-0.273126 32.624771
+1.753523 40.431995
+-0.784011 3.045757
+0.705987 5.661178
+-1.386400 1.353557
+2.376458 1.674851
+0.242973 4.732178
+0.491227 0.354061
+-1.606762 8.658955
+1.167111 5.987103
+-0.137601 -12.041750
+-0.251375 10.397204
+-1.431514 -8.904108
+0.988280 -13.208963
+0.261484 -6.354970
+0.395932 -0.702529
+0.283704 26.899563
+0.420959 15.441778
+-0.355804 -13.727784
+0.527372 12.398515
+-1.169559 -15.998457
+1.906688 -5.816055
+0.354492 3.851572
+0.825760 -4.162642
+-0.490190 13.057229
+2.255773 13.526449
+-0.004956 -3.237127
+0.026709 7.866448
+-1.810372 -0.451183
+1.083827 -0.183620
+0.135836 -2.266582
+0.375812 -5.512248
+-1.966443 38.682854
+1.977988 24.565481
+-0.704656 6.358810
+0.480786 7.051749
+-0.976417 -2.422727
+2.502148 6.759346
+0.083588 3.258795
+0.543629 0.910013
+-1.231959 23.091507
+0.785492 14.807000
+-0.213554 1.688002
+0.004748 18.171820
+-1.547192 -16.116837
+1.501045 -3.281141
+0.080133 -4.634724
+0.476592 -2.180929
+0.442470 40.303989
+1.072766 27.592009
+-0.594738 -4.166807
+0.422480 7.616091
+-0.927521 -7.274406
+1.991623 1.296359
+0.291307 2.398781
+0.721081 -1.950625
+-0.804256 24.929474
+1.648388 19.119692
+0.060852 -0.590639
+0.266085 9.103249
+-1.957399 -2.884607
+1.116929 2.672397
+0.354580 -2.748541
+0.330733 -14.156131
+-0.527851 39.575626
+0.991152 43.194984
+-0.589619 1.269186
+0.787401 8.730713
+-1.013800 1.025075
+2.825403 1.895381
+0.240890 2.745566
+0.427195 2.544456
+-1.953109 12.243958
+1.448616 12.060747
+-0.210492 -3.379058
+-0.056713 10.204020
+-1.652370 -5.102737
+1.294748 -12.270802
+0.111608 -8.675921
+0.326634 -1.167627
+0.021781 31.125782
+0.455335 21.468430
+-0.375440 -3.371207
+0.393620 11.301987
+-0.851456 -19.414892
+2.107030 -2.228865
+0.373233 1.924056
+0.884438 -1.720581
+-0.975127 9.840128
+2.003303 17.395407
+-0.036915 -1.111372
+0.148456 5.399970
+-1.914412 4.773819
+1.447907 0.537122
+0.194979 -1.038179
+0.495771 -9.955025
+-1.058987 32.947052
+2.011222 32.454418
+-0.309650 4.719106
+0.436082 4.635524
+-1.237105 -1.254284
+2.022740 9.428345
+0.190342 1.460767
+0.479017 2.484788
+-1.078483 16.221748
+1.207642 9.654212
+-0.258087 -1.672358
+0.071852 13.415978
+-1.877228 -16.072031
+1.289568 -4.871185
+0.067713 -13.442700
+0.435551 -4.165503
+0.466140 30.589535
+0.904895 21.597990
+-0.518369 -2.532048
+0.337363 5.637264
+-0.554975 -17.400511
+1.691879 1.145742
+0.227934 0.889297
+0.587303 -5.729732
+-0.262133 18.666620
+1.395048 17.002878
+-0.019090 4.308379
+0.304235 12.669943
+-2.074059 -6.460845
+0.920546 1.212957
+0.284927 -1.785466
+0.209724 -16.023964
+-0.636067 31.576820
+1.349887 34.677502
+-0.971625 5.300859
+0.590249 4.449709
+-1.567867 3.602385
+2.145497 4.516663
+0.296022 4.120170
+0.445299 0.868772
+-1.441931 14.128431
+1.355752 6.007401
+-0.012814 -7.496573
+-0.430000 8.500124
+-1.204693 -7.113256
+1.101018 -6.836818
+0.196463 -6.234002
+0.436747 -1.129788
+0.141052 22.854876
+0.290821 18.811443
+-0.529536 -7.732510
+0.634280 10.789847
+-1.334721 -20.325773
+1.815645 -1.903316
+0.394778 3.797577
+0.732682 -8.183819
+-0.741244 11.768337
diff --git a/gr-vocoder/lib/codec2/codebook/lsp45678910.txt
b/gr-vocoder/lib/codec2/codebook/lsp45678910.txt
new file mode 100644
index 0000000..291d3cd
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lsp45678910.txt
@@ -0,0 +1,4097 @@
+6 4096
+1.081234 1.578844 1.855572 1.937313 2.532441 2.649806
+1.062804 1.450009 1.839560 1.956503 2.488847 2.653463
+1.101587 1.361019 1.833584 1.932414 2.505176 2.629812
+1.079058 1.376855 1.872688 1.955078 2.541337 2.633780
+1.095536 1.631036 1.866273 2.066987 2.506661 2.570431
+1.093059 1.561358 1.772473 2.123863 2.547475 2.618258
+1.093649 1.500206 1.786047 2.077115 2.483767 2.572542
+1.035022 1.485983 1.678652 2.079363 2.402344 2.513315
+1.231720 1.630566 1.849906 2.023447 2.467212 2.571610
+1.206362 1.478193 1.855647 2.009197 2.437429 2.552382
+1.204249 1.495756 1.846404 2.039977 2.500628 2.592437
+1.272025 1.438353 1.854503 2.038713 2.518717 2.620094
+1.298912 1.483356 1.838869 1.983659 2.488374 2.597006
+1.385591 1.500184 1.819431 1.981705 2.505537 2.612529
+1.413670 1.566546 1.767180 1.994490 2.569613 2.625244
+1.469053 1.626083 1.751768 2.041187 2.608951 2.658775
+1.489505 1.617638 1.689177 2.053852 2.662243 2.705533
+1.431122 1.535578 1.647319 1.810924 2.575767 2.692196
+1.411673 1.606174 1.730361 1.969368 2.628110 2.691849
+1.341020 1.639970 2.197392 2.281319 2.449714 2.625998
+1.319877 1.674826 2.101177 2.281732 2.499782 2.611482
+1.274620 1.610124 1.901436 2.235657 2.518178 2.628876
+1.172210 1.365637 1.784703 1.904448 2.538076 2.646190
+1.096161 1.350109 1.754990 1.869673 2.486568 2.605496
+1.036538 1.326195 1.729890 1.862116 2.461192 2.575454
+1.016529 1.277247 1.688801 1.808376 2.462981 2.576244
+0.968031 1.329007 1.716412 1.821357 2.481150 2.561950
+0.940641 1.283342 1.767876 1.860537 2.503139 2.594903
+0.926995 1.243331 1.738909 1.901001 2.449501 2.557636
+0.839883 1.237117 1.702150 1.812616 2.421388 2.492978
+0.924474 1.188075 1.757524 1.824899 2.455944 2.611065
+0.964230 1.207274 1.666224 1.876812 2.507149 2.580412
+0.989772 1.189729 1.693447 1.807142 2.445712 2.561953
+0.919183 1.203118 1.673832 1.772614 2.385797 2.511668
+0.978552 1.175420 1.613855 1.726871 2.328959 2.516699
+1.014543 1.254251 1.587284 1.756626 2.403061 2.510828
+1.096718 1.231168 1.557405 1.843944 2.463584 2.555458
+1.168771 1.351177 1.613931 1.831029 2.476269 2.581218
+1.176515 1.264150 1.564916 1.760486 2.483522 2.581045
+1.017969 1.249828 1.424493 1.593545 2.458340 2.525030
+1.053988 1.216029 1.517421 1.851941 2.342751 2.502327
+0.908986 1.250795 1.593917 1.887100 2.373089 2.530129
+0.993871 1.164018 1.616620 1.775732 2.569459 2.658570
+1.102483 1.386153 1.573681 1.785642 2.317931 2.508557
+1.207240 1.390831 1.551049 1.850614 2.335983 2.494330
+0.905032 1.416478 1.580046 1.841825 2.503807 2.601603
+0.795890 1.107933 1.597705 2.015496 2.402148 2.534611
+0.732401 1.158610 1.557468 1.938003 2.626415 2.705430
+0.859670 1.129062 1.671859 1.953992 2.514790 2.615870
+0.921647 1.245355 1.683753 1.894457 2.599645 2.716564
+0.845409 1.194759 1.767314 1.844514 2.589767 2.716944
+0.977678 1.141401 1.667109 1.923833 2.632008 2.689070
+0.951137 1.122551 1.714183 1.885895 2.535763 2.672112
+1.029949 1.159554 1.739443 1.928325 2.488185 2.623518
+0.925634 1.225929 1.751801 1.970749 2.532895 2.621066
+1.012300 1.211427 1.793946 1.885857 2.467267 2.572492
+0.993978 1.137467 1.743472 1.840886 2.390082 2.566385
+0.989822 1.173068 1.687559 1.948929 2.325527 2.473423
+0.955854 1.237231 1.807406 2.116766 2.391031 2.502779
+1.103361 1.357985 1.852236 2.097091 2.392749 2.553242
+1.128873 1.440897 1.927907 2.176697 2.407985 2.544276
+1.316127 1.575436 1.964565 2.158944 2.485840 2.576132
+1.469605 1.772101 1.954837 2.164070 2.399616 2.481917
+1.506520 1.754882 2.018413 2.249491 2.486272 2.607615
+1.524190 1.776451 2.054579 2.275694 2.584977 2.669083
+1.518000 1.850281 2.026435 2.301875 2.577528 2.669180
+1.422050 1.788979 1.967476 2.184773 2.596851 2.699678
+1.208408 1.434703 1.923623 2.003769 2.602930 2.685007
+1.221170 1.436565 1.879969 2.033402 2.498146 2.695421
+1.217714 1.375982 1.908609 1.973031 2.480559 2.645396
+1.200348 1.412239 1.863276 2.054536 2.409232 2.646327
+1.439453 1.675933 2.064707 2.273226 2.606450 2.696215
+1.547568 1.956021 2.083785 2.387077 2.634316 2.711216
+1.745365 1.995260 2.176270 2.409488 2.632251 2.707416
+1.819289 1.982164 2.210166 2.452194 2.603770 2.664517
+1.669555 1.940179 2.100875 2.386942 2.530819 2.630866
+1.597684 1.945913 2.072836 2.338891 2.544245 2.608247
+1.656152 1.888690 1.984550 2.301133 2.510775 2.586360
+1.618800 1.898863 2.024738 2.291312 2.440530 2.560289
+1.481284 1.826210 1.971921 2.192909 2.417020 2.530293
+1.318733 1.581540 1.845445 2.163997 2.389227 2.505418
+1.341326 1.565852 1.802875 2.218482 2.430769 2.545834
+1.318506 1.412657 1.677620 2.182351 2.372753 2.476532
+1.243720 1.456674 1.665712 2.126711 2.332874 2.438449
+1.152502 1.458855 1.582937 2.037521 2.342102 2.428296
+1.025383 1.407599 1.551528 1.846789 2.282863 2.385436
+0.876560 1.384326 1.582900 1.741935 2.239923 2.338453
+0.953781 1.441879 1.592404 1.764174 2.294091 2.474201
+0.899968 1.454031 1.634363 1.724312 2.353403 2.597502
+0.784159 1.423933 1.737258 1.855960 2.390032 2.614540
+0.802442 1.397066 1.658548 1.816788 2.429390 2.500099
+0.863071 1.318492 1.646022 1.812971 2.398098 2.503855
+0.896870 1.306239 1.671592 1.902175 2.466526 2.601523
+0.999503 1.304292 1.708420 1.899036 2.512342 2.655191
+1.045277 1.266302 1.669631 1.846323 2.517066 2.637484
+1.038456 1.158529 1.643778 1.865279 2.583201 2.658938
+1.026317 1.219306 1.768348 1.840920 2.538168 2.673329
+1.080965 1.215431 1.730192 1.836927 2.236858 2.608870
+1.101801 1.431508 1.752078 1.918964 2.091244 2.538958
+1.178729 1.297314 1.724099 1.850753 2.310291 2.621525
+1.151182 1.239683 1.754792 1.850524 2.539101 2.705992
+1.202697 1.300604 1.763340 1.867428 2.470717 2.664655
+1.261122 1.368681 1.753282 1.846646 2.461515 2.652599
+1.263075 1.364289 1.797670 1.876939 2.543725 2.660224
+1.320149 1.415925 1.809830 1.903217 2.515554 2.648236
+1.339872 1.459354 1.806677 1.924576 2.491477 2.587047
+1.355170 1.451772 1.763405 1.944161 2.472633 2.561167
+1.327925 1.428910 1.704448 1.914816 2.397366 2.503472
+1.307600 1.415352 1.616295 1.840793 2.322166 2.470994
+1.248247 1.349207 1.617615 1.772735 2.250680 2.486533
+1.096572 1.355681 1.626115 1.941988 2.313846 2.498213
+1.012526 1.342839 1.647854 1.907164 2.435934 2.533191
+0.944393 1.399280 1.642998 1.931993 2.331977 2.489908
+0.883306 1.402338 1.706359 2.025366 2.373713 2.543710
+0.829559 1.235771 1.712746 2.184853 2.386736 2.544183
+0.923799 1.513109 1.703086 2.105291 2.476476 2.555162
+0.772688 1.443301 1.656120 2.053011 2.450442 2.532517
+0.776285 1.403196 1.734016 1.935257 2.464085 2.566799
+0.782396 1.418811 1.758875 1.973225 2.548330 2.610298
+0.789572 1.411082 1.771533 2.060410 2.540262 2.631254
+0.774326 1.288019 1.837269 1.960951 2.512420 2.581626
+0.811751 1.274027 1.810006 1.885738 2.565463 2.639219
+0.844982 1.320831 1.873915 1.944600 2.561048 2.661720
+0.881256 1.695357 1.906981 2.078886 2.618546 2.678654
+1.099890 1.727818 1.971319 2.153135 2.509688 2.602947
+1.173850 1.685437 1.917457 2.147432 2.383055 2.567035
+1.101548 1.543219 1.820605 2.055324 2.338724 2.585028
+0.975012 1.379716 1.776625 2.033293 2.194151 2.518224
+0.967054 1.082459 1.618973 2.077928 2.206837 2.370886
+1.009607 1.120613 1.534181 2.088528 2.282936 2.420584
+0.899159 1.208523 1.423691 1.970324 2.287269 2.498904
+0.879682 1.314480 1.479489 1.689360 2.209743 2.285765
+1.033473 1.243843 1.473137 1.667992 2.159422 2.255044
+1.048412 1.255890 1.536997 1.820047 2.142252 2.313751
+1.048246 1.189264 1.705109 1.835993 2.105450 2.372062
+1.034320 1.138878 1.514616 1.829657 2.170447 2.425608
+1.103878 1.217645 1.622150 1.805848 2.027526 2.376811
+1.087235 1.195012 1.559018 1.895036 2.250122 2.379205
+1.130013 1.293868 1.692397 1.858880 2.197201 2.349063
+1.162892 1.304601 1.691021 1.969323 2.268614 2.430288
+1.151808 1.257932 1.673832 1.902017 2.189155 2.458708
+1.168445 1.271828 1.557328 2.084152 2.308031 2.420367
+1.235095 1.340187 1.656794 2.095155 2.283187 2.409638
+1.252394 1.355363 1.609848 2.085193 2.332714 2.488870
+1.226314 1.343994 1.673049 2.215533 2.459996 2.546921
+1.408182 1.566449 1.701931 2.155097 2.540243 2.588591
+1.303998 1.548995 1.653578 2.128738 2.589470 2.633320
+1.312529 1.488936 1.690548 1.982880 2.558390 2.622521
+1.303590 1.485664 1.772996 1.991417 2.555629 2.650059
+1.257202 1.528917 1.880489 2.045674 2.400087 2.567493
+1.294719 1.634324 1.911539 2.046657 2.438083 2.611133
+1.328444 1.716065 1.850301 2.021260 2.507052 2.612864
+1.138077 1.269039 1.792588 1.898148 2.530410 2.653563
+1.024794 1.145542 1.688222 1.812928 2.425037 2.650928
+1.056656 1.178042 1.590336 1.747349 2.368449 2.618711
+0.994299 1.110839 1.632651 1.730538 2.337688 2.550296
+0.960030 1.103482 1.632800 1.745079 2.197252 2.530535
+0.952099 1.078914 1.704160 1.837306 2.319065 2.544307
+0.901034 1.074801 1.653662 1.788590 2.393831 2.533117
+0.970595 1.130054 1.568353 1.820966 2.445105 2.563373
+0.883200 1.029140 1.480583 1.884365 2.321620 2.470715
+0.817959 0.941844 1.410138 1.540709 2.174043 2.482774
+0.772028 0.888033 1.490117 1.717092 2.324349 2.560462
+0.874200 1.020101 1.571479 1.746811 2.437393 2.561332
+0.827282 1.010026 1.605382 1.750680 2.261846 2.481604
+0.790605 1.149000 1.653820 1.781055 2.358642 2.491606
+0.746581 0.961080 1.604908 1.879005 2.319270 2.551585
+0.845418 0.969530 1.696169 1.890927 2.301880 2.621489
+0.826083 1.016050 1.658604 1.852554 2.435884 2.572744
+0.804260 0.948999 1.684490 2.103337 2.475054 2.575853
+0.837016 1.029999 1.676991 1.796645 2.498023 2.631032
+0.779629 0.917041 1.607073 1.868904 2.459568 2.628902
+0.802981 0.922379 1.556141 1.967845 2.595450 2.692512
+0.821239 0.952349 1.585249 2.095797 2.593711 2.655934
+0.819528 1.109552 1.526845 1.767514 2.637798 2.710511
+0.846222 1.055717 1.707281 1.838626 2.113999 2.501403
+0.956553 1.439848 1.724902 1.939820 2.145194 2.431913
+1.334292 1.551594 1.721399 2.019173 2.178003 2.329439
+1.247359 1.571459 1.834521 2.114156 2.268206 2.489811
+1.223145 1.573420 1.846247 2.016089 2.219280 2.457849
+1.239932 1.537791 1.822800 2.046476 2.444455 2.578055
+1.299681 1.557742 1.798304 2.080692 2.393370 2.575201
+1.273117 1.474131 1.814869 2.014907 2.405011 2.602918
+1.229029 1.448502 1.757153 2.050565 2.417160 2.594614
+1.206296 1.515099 1.788958 2.042150 2.368561 2.585804
+1.158903 1.544803 1.861448 2.066653 2.405246 2.590991
+1.203257 1.479859 1.833516 2.070616 2.431802 2.585701
+1.170767 1.555780 1.826674 2.077078 2.467476 2.619408
+1.116279 1.593527 1.824249 2.160817 2.427806 2.600491
+1.250314 1.617299 1.962648 2.152242 2.531239 2.631433
+1.352996 1.645245 2.070194 2.180379 2.612026 2.688774
+1.460334 1.917189 2.086815 2.314592 2.641184 2.723059
+1.557095 1.916613 2.056898 2.263201 2.640329 2.702797
+1.410674 1.903388 2.077833 2.222944 2.615402 2.694117
+1.340491 1.804040 2.040016 2.149565 2.607705 2.678152
+1.090681 1.321064 1.862736 1.983775 2.475855 2.592436
+1.002459 1.265507 1.813017 1.904336 2.499258 2.626541
+1.051386 1.161286 1.832534 1.955080 2.502338 2.624753
+0.942516 1.064243 1.669560 1.977253 2.464181 2.598328
+0.869608 0.984141 1.454614 1.956177 2.507893 2.617868
+0.972489 1.135467 1.529146 1.729979 2.411574 2.571077
+1.051275 1.149410 1.547524 1.827149 2.511333 2.617618
+1.079744 1.191206 1.539363 1.944728 2.545236 2.632156
+1.182063 1.260030 1.596098 2.084659 2.511859 2.579406
+1.172004 1.352761 1.462749 2.015059 2.625356 2.679374
+1.200545 1.322975 1.515601 1.769202 2.523140 2.666825
+1.228092 1.307135 1.734031 1.914746 2.244815 2.562025
+1.176188 1.321661 1.782310 1.882580 2.271364 2.521450
+1.150025 1.486223 1.774146 1.970935 2.385075 2.612636
+1.103163 1.455003 1.720622 1.899593 2.356715 2.591383
+1.070467 1.386313 1.746928 1.891984 2.367512 2.543572
+0.953610 1.176163 1.643545 1.919980 2.372057 2.572461
+1.052319 1.405171 1.688954 1.831668 2.542879 2.632479
+0.996802 1.441427 1.684462 1.821948 2.595992 2.658845
+1.026550 1.334938 1.740944 1.840382 2.571653 2.678967
+1.108319 1.200840 1.706127 1.999085 2.514665 2.648206
+1.133324 1.219468 1.747774 2.013077 2.406643 2.640363
+1.142143 1.218723 1.814638 1.951061 2.430067 2.666180
+1.081563 1.207089 1.846455 1.946284 2.339144 2.612659
+1.146374 1.238625 1.874251 1.968098 2.427377 2.595630
+1.069408 1.393128 1.859759 1.941816 2.374471 2.538181
+1.060221 1.402928 1.784643 1.909954 2.080852 2.375424
+0.893759 1.225333 1.741426 1.895488 2.062213 2.441777
+0.911307 1.301394 1.651487 1.798169 1.996879 2.208655
+1.102905 1.503307 1.707775 1.808533 1.958631 2.311679
+1.149446 1.328058 1.738279 1.904609 2.061868 2.257965
+1.121345 1.230563 1.748776 1.950661 2.086466 2.389286
+0.948970 1.101893 1.676635 1.875393 2.016817 2.296681
+1.035082 1.162231 1.641377 1.952709 2.100948 2.358717
+0.994183 1.114307 1.547601 1.773728 1.966081 2.336299
+1.025110 1.139705 1.585236 1.912371 2.102465 2.482426
+0.955352 1.062216 1.659060 1.848407 2.043281 2.487426
+1.049103 1.120549 1.446982 1.949018 2.026898 2.560590
+1.012432 1.138276 1.367936 2.008468 2.189441 2.422416
+1.082028 1.234911 1.351755 1.827170 2.173158 2.300241
+1.094359 1.235138 1.416416 1.922593 2.128232 2.419413
+1.034512 1.151307 1.492358 1.980846 2.149036 2.365312
+1.013088 1.154539 1.459958 1.943044 2.281758 2.397269
+0.987103 1.274347 1.561873 1.917460 2.334292 2.495651
+0.989791 1.289172 1.623138 1.982329 2.345033 2.548052
+1.042013 1.225970 1.610016 1.974800 2.406311 2.537036
+1.019690 1.323725 1.679076 1.983690 2.443023 2.561932
+1.030978 1.249914 1.753285 1.970302 2.442750 2.577102
+1.078647 1.281367 1.821676 2.046994 2.512487 2.614303
+1.042503 1.318276 1.817538 1.977740 2.538774 2.643473
+1.033751 1.323431 1.885960 1.993635 2.587127 2.648293
+1.084158 1.434121 1.899660 1.974483 2.661669 2.717102
+1.095790 1.481301 1.916550 1.970409 2.671232 2.730973
+1.147960 1.553068 1.884541 1.960664 2.501839 2.667876
+1.137776 1.498910 1.962620 2.047239 2.537310 2.642351
+1.108862 1.435492 1.955490 2.195866 2.514284 2.601530
+1.191071 1.557850 1.984542 2.270790 2.541878 2.642064
+1.110737 1.553081 1.978127 2.211052 2.613375 2.706641
+1.114093 1.728016 1.975042 2.124483 2.602927 2.681942
+1.148485 1.627087 1.968135 2.073898 2.607358 2.686667
+1.109004 1.450655 1.961102 2.058609 2.611646 2.694610
+1.095904 1.318763 1.866640 2.096294 2.574677 2.658840
+1.116558 1.367968 1.922533 2.016505 2.549444 2.646230
+1.129468 1.529113 1.942204 2.003339 2.527872 2.699919
+1.139050 1.679536 1.945866 2.032922 2.537427 2.642172
+1.219207 1.599421 1.929600 2.011091 2.539104 2.705280
+1.233969 1.556201 1.930999 2.084786 2.578580 2.675834
+1.234430 1.653741 2.033213 2.256759 2.637546 2.699663
+1.255288 1.475044 2.022543 2.289234 2.587690 2.703947
+1.253389 1.472198 1.956397 2.211186 2.574243 2.676099
+1.126854 1.587210 1.950824 2.031487 2.416846 2.614459
+1.007062 1.608304 1.896229 1.986335 2.223017 2.524028
+1.067280 1.729449 1.931889 2.045329 2.164850 2.400910
+0.946660 1.699777 1.870624 1.981832 2.135670 2.447688
+1.002686 1.728563 1.939905 2.072520 2.274792 2.467485
+1.148787 1.600550 2.003063 2.128026 2.409105 2.506525
+1.191365 1.359514 1.908437 2.116985 2.369079 2.529393
+1.229740 1.316359 1.901465 2.001169 2.368350 2.575701
+1.167453 1.284078 1.851548 2.056283 2.446292 2.573763
+1.177049 1.282978 1.796076 2.014566 2.409896 2.524428
+1.166550 1.281729 1.804132 1.938592 2.383050 2.543803
+1.144710 1.266197 1.755782 1.865513 2.354119 2.575142
+1.168465 1.283561 1.695054 1.817537 2.302788 2.529561
+1.093474 1.316111 1.625831 1.791050 2.303314 2.408563
+1.072994 1.218877 1.586912 1.725308 2.219203 2.343524
+0.946241 1.172838 1.426290 1.551682 2.192575 2.321727
+1.001802 1.174980 1.507444 1.697862 2.240802 2.478241
+0.992564 1.257780 1.429092 1.819825 2.234153 2.434915
+0.933586 1.255559 1.372464 1.686266 2.265977 2.349467
+0.987914 1.162881 1.404420 1.563483 2.227668 2.485371
+1.058576 1.185833 1.325383 1.445585 2.164512 2.455141
+1.042271 1.149610 1.389036 1.473828 1.906671 2.390132
+0.966952 1.075537 1.288155 1.405105 2.061861 2.451990
+0.901530 1.194476 1.354732 1.705750 2.325032 2.434812
+1.038418 1.292428 1.527305 1.909844 2.230333 2.465135
+1.336010 1.441693 1.849134 2.208029 2.414400 2.532513
+1.436224 1.645653 2.008636 2.198160 2.502278 2.601413
+1.424341 1.684427 1.929812 2.122504 2.512280 2.604860
+1.452203 1.722988 1.962207 2.156659 2.484102 2.584594
+1.481999 1.735238 1.971190 2.222801 2.512305 2.623621
+1.392556 1.721267 1.940304 2.174966 2.488944 2.601854
+1.243347 1.558461 1.809822 1.990890 2.381971 2.537485
+1.199294 1.421504 1.763108 1.990880 2.358918 2.489556
+1.217773 1.348784 1.714665 1.916837 2.379728 2.456961
+1.219523 1.326854 1.719656 1.838075 2.299329 2.435406
+1.263073 1.353656 1.787228 1.918973 2.320389 2.448246
+1.270962 1.373799 1.718185 1.857935 2.366922 2.481748
+1.284351 1.368069 1.793907 1.895081 2.356790 2.524604
+1.244789 1.353657 1.782947 1.928688 2.225716 2.379949
+1.269283 1.368726 1.719184 1.909677 2.267163 2.491540
+1.249305 1.338194 1.799918 1.917097 2.274691 2.533224
+1.179498 1.259046 1.802972 1.927327 2.228930 2.503637
+1.140961 1.245902 1.708660 1.923794 2.243465 2.557345
+1.063955 1.209030 1.737289 1.945349 2.338697 2.573092
+1.003475 1.109161 1.745131 1.902188 2.308443 2.601614
+0.937618 1.077537 1.747804 1.869648 2.205055 2.570449
+0.885099 1.192451 1.790545 1.876157 2.360305 2.598108
+0.803485 0.966415 1.768458 1.928742 2.196723 2.530460
+0.797205 1.120717 1.776585 1.878573 2.370357 2.614341
+0.831514 1.059080 1.808800 1.905483 2.448208 2.573050
+0.806597 0.967446 1.829385 1.963682 2.358632 2.653242
+0.699378 0.851831 1.739446 1.933943 2.516377 2.655249
+0.739203 1.033985 1.902113 2.010327 2.494149 2.629822
+0.945605 1.079706 1.796352 2.039543 2.581863 2.699784
+0.843512 1.304861 1.835452 2.036832 2.600217 2.677826
+0.970152 1.414374 1.854051 1.957787 2.596045 2.665425
+1.067282 1.438542 1.888429 2.067094 2.531016 2.643177
+1.117619 1.563112 1.886324 2.218866 2.530223 2.624080
+1.209656 1.626913 1.943700 2.187427 2.555090 2.658675
+1.338891 1.812879 2.030890 2.305204 2.569275 2.661165
+1.303367 1.840104 2.035985 2.286745 2.614227 2.713359
+1.193428 1.727354 1.926203 2.184400 2.574784 2.631812
+1.063515 1.717188 1.903657 2.119051 2.444811 2.497667
+1.062175 1.188948 1.810480 2.044978 2.322378 2.578780
+1.073201 1.177557 1.654731 2.023264 2.200369 2.442874
+1.027815 1.165415 1.669466 1.859614 2.202142 2.462466
+1.035584 1.148236 1.604900 1.872549 2.257851 2.551682
+1.007205 1.131087 1.579146 1.969788 2.331637 2.507912
+0.908594 1.005601 1.463269 2.072372 2.304356 2.407363
+0.981614 1.126428 1.280565 1.886853 2.101922 2.487836
+1.006764 1.132557 1.253088 1.718315 2.189249 2.436605
+0.899830 1.156538 1.260748 1.696712 2.116655 2.228297
+0.896996 1.246551 1.436874 1.645194 2.073642 2.149130
+0.965481 1.069671 1.446489 1.949492 2.091582 2.298331
+0.898113 1.058765 1.617556 1.941551 2.113568 2.374743
+0.769481 1.159379 1.597415 1.959851 2.283842 2.418197
+0.908091 1.305340 1.473570 1.862549 2.164147 2.331091
+0.924282 1.334689 1.563201 2.043541 2.406015 2.515756
+0.972939 1.381971 1.549985 2.021238 2.268488 2.419332
+1.032229 1.484031 1.620031 1.952234 2.267322 2.486440
+1.005234 1.354692 1.620203 1.777917 2.223067 2.497574
+1.072742 1.245035 1.661666 1.819389 2.260496 2.468700
+1.134470 1.250480 1.737034 1.868971 2.303204 2.466426
+1.145935 1.293264 1.728505 1.950979 2.350982 2.504021
+1.226356 1.329795 1.750777 1.982144 2.347843 2.553027
+1.234801 1.328107 1.696728 2.060564 2.437310 2.535600
+1.247128 1.360496 1.742955 1.961348 2.474080 2.668447
+1.234736 1.329837 1.688634 1.913331 2.442940 2.627695
+1.230430 1.326635 1.697588 1.806044 2.381473 2.618535
+1.188567 1.273079 1.708983 1.969001 2.340683 2.588959
+1.204284 1.331218 1.835523 2.141256 2.463226 2.583492
+1.202374 1.397220 1.863749 2.155165 2.599733 2.681191
+1.217581 1.333297 1.763898 1.994983 2.601835 2.684817
+1.272368 1.364451 1.776352 1.952098 2.563424 2.676170
+1.330173 1.434654 1.825090 1.938032 2.579405 2.666102
+1.383550 1.514770 1.774712 2.134998 2.528583 2.614711
+1.488234 1.631245 1.795942 2.180588 2.497787 2.585930
+1.497854 1.598429 1.760395 1.985719 2.538066 2.622220
+1.446514 1.555686 1.675484 1.899620 2.547070 2.637129
+1.420188 1.651758 1.888119 2.201558 2.498716 2.624372
+1.524851 1.748918 1.939479 2.132594 2.426619 2.604303
+1.588214 1.786968 1.965710 2.123251 2.417433 2.579888
+1.603052 1.805249 1.932723 2.088062 2.490882 2.628467
+1.521714 1.853040 1.968163 2.198421 2.530921 2.597229
+1.496309 1.785807 2.001979 2.206169 2.574155 2.645280
+1.405201 1.500557 1.908673 2.179223 2.543732 2.645774
+1.369555 1.501308 1.848796 2.089859 2.551118 2.643621
+1.395377 1.488644 1.872404 2.028116 2.530256 2.599192
+1.354582 1.508972 1.848875 1.976677 2.504926 2.579355
+1.325752 1.411326 1.837129 1.970792 2.502717 2.584831
+1.264497 1.390436 1.764758 2.087338 2.519279 2.625037
+1.280904 1.355652 1.790288 1.995707 2.502567 2.587359
+1.267443 1.360843 1.858033 2.035632 2.509375 2.584870
+1.238902 1.487541 1.786660 2.080354 2.480913 2.582137
+1.228708 1.441140 1.715963 1.893335 2.507070 2.565131
+1.167347 1.397307 1.672051 1.923535 2.438392 2.523520
+1.169232 1.356809 1.567433 1.950379 2.378945 2.468006
+1.240244 1.470896 1.629735 2.024684 2.376716 2.454875
+1.370859 1.665288 1.831505 2.176433 2.486403 2.586565
+1.513368 1.657039 1.965014 2.298013 2.532148 2.623007
+1.446940 1.612676 1.929087 2.232303 2.466210 2.565149
+1.430659 1.664527 1.882163 2.234579 2.421664 2.527294
+1.511551 1.658934 1.944043 2.198499 2.451946 2.588348
+1.539441 1.741360 2.111062 2.229922 2.438935 2.615056
+1.510948 1.846893 2.061790 2.202452 2.484110 2.572628
+1.366393 1.611652 2.079365 2.260070 2.467062 2.588032
+1.383579 1.641339 1.997349 2.226153 2.491435 2.611630
+1.381458 1.706898 1.963061 2.125553 2.596797 2.681115
+1.360033 1.558255 1.949661 2.054826 2.599573 2.714554
+1.379339 1.491775 1.925897 2.046337 2.539371 2.696047
+1.313275 1.469403 1.863111 2.141749 2.553959 2.668104
+1.201520 1.563000 1.925029 2.093014 2.476606 2.614413
+0.965563 1.662126 1.836100 2.071866 2.530046 2.578446
+0.976435 1.635119 1.844726 2.005117 2.553083 2.614153
+1.098159 1.549476 1.826426 1.907908 2.490671 2.625630
+0.971599 1.431927 1.818186 1.923193 2.493841 2.568117
+0.881008 1.272866 1.901429 1.959221 2.513674 2.596017
+0.915929 1.478770 1.955701 2.082549 2.494350 2.585776
+1.008177 1.579393 1.898198 2.139172 2.477629 2.551209
+0.937399 1.507567 1.803910 1.922590 2.546047 2.637297
+0.848413 1.358228 1.783925 1.906229 2.477012 2.588525
+0.863404 1.488629 1.835502 1.930032 2.465498 2.545317
+0.844376 1.622282 1.826798 2.048364 2.490552 2.545809
+0.869731 1.705034 1.854703 2.111605 2.517014 2.593453
+0.862235 1.623015 1.899372 2.028710 2.527844 2.574800
+0.931658 1.576339 1.853614 1.975118 2.542237 2.614786
+0.848799 1.588406 1.847097 1.955899 2.534073 2.584561
+0.737814 1.457219 1.829993 1.966203 2.501271 2.579455
+0.786199 1.100080 1.860369 1.964282 2.419364 2.566134
+0.728962 1.040841 1.773818 1.963733 2.356948 2.578866
+0.733093 1.147783 1.789774 1.909293 2.349819 2.481103
+0.785959 1.280236 1.730487 1.926696 2.346913 2.422480
+0.784924 1.446821 1.669690 1.935370 2.368317 2.459601
+0.758523 1.466915 1.805902 1.946588 2.352213 2.426335
+0.767907 1.544295 1.768171 2.003937 2.239037 2.386192
+0.896374 1.562074 1.716926 1.903301 2.308243 2.430582
+0.834530 1.504812 1.737424 1.917731 2.409279 2.493291
+0.896027 1.406949 1.730026 1.903326 2.431247 2.539722
+1.039666 1.364116 1.806278 1.948174 2.440690 2.557972
+1.093454 1.412357 1.833723 1.940104 2.489654 2.564450
+1.190180 1.386167 1.848700 1.956202 2.481553 2.580885
+1.243158 1.350416 1.811797 1.893593 2.467576 2.613520
+1.221986 1.308711 1.815913 1.911989 2.417533 2.600995
+1.228372 1.343619 1.763163 1.872602 2.394885 2.582719
+1.278387 1.389710 1.738500 1.870267 2.420854 2.532852
+1.211636 1.401793 1.710146 1.811019 2.363826 2.482240
+1.161497 1.400684 1.766674 1.891745 2.392605 2.495922
+1.114937 1.405487 1.718336 1.927418 2.356818 2.468335
+1.074680 1.452959 1.668715 1.898094 2.336526 2.443457
+1.006705 1.356254 1.629477 1.848470 2.313894 2.426320
+0.966452 1.457923 1.654693 1.906386 2.320056 2.418339
+0.939007 1.519988 1.667014 1.989416 2.390669 2.488951
+0.946840 1.483985 1.701087 2.105572 2.391444 2.490066
+0.909129 1.501060 1.665371 2.004939 2.256700 2.389841
+0.958919 1.390613 1.680082 2.107156 2.297251 2.440839
+1.462160 1.588562 1.808539 2.109890 2.264826 2.417467
+1.301642 1.673806 1.892518 2.168109 2.477558 2.561621
+1.152769 1.529326 1.783781 2.014354 2.446614 2.560929
+1.128698 1.493018 1.748156 1.930275 2.530674 2.621591
+1.164356 1.496855 1.767664 1.871136 2.607250 2.684794
+1.122714 1.380513 1.762236 1.875604 2.441522 2.732814
+1.173906 1.545927 1.843801 1.933791 2.123448 2.629011
+1.155439 1.465806 1.793876 1.928550 2.168553 2.609610
+1.147812 1.484543 1.816424 1.908762 2.262620 2.704081
+1.185870 1.393524 1.811853 1.881115 2.544291 2.735905
+1.153304 1.451135 1.855404 1.888619 2.603314 2.738077
+1.208854 1.582363 1.784858 1.880089 2.596481 2.727884
+1.194841 1.542896 1.919056 2.023145 2.551891 2.634186
+1.230327 1.492063 1.937225 2.133605 2.615726 2.690226
+1.258764 1.581307 1.980070 2.138762 2.599037 2.691033
+1.220691 1.572961 1.917212 2.177536 2.599585 2.702012
+1.258143 1.556630 1.871736 2.132633 2.585514 2.673307
+1.233770 1.598238 1.849957 2.013674 2.542859 2.634481
+1.269759 1.560794 1.865225 2.076328 2.521082 2.617443
+1.116561 1.680882 1.781694 1.920497 2.592211 2.675845
+1.048209 1.662996 1.817400 1.915170 2.484585 2.623077
+0.954241 1.619674 1.813457 1.881694 2.550667 2.631971
+0.964363 1.579747 1.728712 1.862126 2.567566 2.636332
+1.296922 1.646884 1.889259 2.069271 2.320227 2.481389
+1.232775 1.619596 1.955470 2.066559 2.335277 2.456514
+1.238971 1.351788 1.877566 2.166413 2.317967 2.474389
+1.180292 1.388353 1.607451 1.950835 2.210855 2.477718
+1.124001 1.423538 1.617323 1.826801 2.206068 2.444078
+1.147794 1.487048 1.627974 1.926015 2.278418 2.486526
+1.092654 1.499725 1.623041 1.880156 2.411660 2.648649
+1.115294 1.468690 1.607626 1.814459 2.356904 2.576088
+1.176045 1.424631 1.614229 1.966337 2.352676 2.570354
+1.211051 1.467429 1.617777 1.851487 2.389770 2.591860
+1.287681 1.464858 1.633790 1.856231 2.349748 2.565320
+1.298585 1.495223 1.639003 1.942642 2.415390 2.518116
+1.309890 1.431142 1.757192 1.977209 2.414871 2.520878
+1.392241 1.477414 1.811303 1.909687 2.440417 2.573891
+1.414942 1.515382 1.858997 2.127937 2.490674 2.635418
+1.490435 1.565967 1.952412 2.049065 2.499936 2.600180
+1.485068 1.734116 1.997368 2.089376 2.524766 2.608159
+1.507131 1.787198 2.048100 2.128356 2.533629 2.624653
+1.485217 1.772591 2.048100 2.144373 2.595743 2.679785
+1.560042 1.744521 2.076144 2.156837 2.615057 2.698771
+1.506276 1.855445 2.064190 2.144534 2.585665 2.687788
+1.592877 1.903451 2.084530 2.163395 2.496904 2.633589
+1.609454 1.870860 2.119821 2.186594 2.599505 2.697819
+1.594779 1.855348 2.025620 2.142545 2.572299 2.637841
+1.527194 1.714086 2.076267 2.185169 2.526549 2.631137
+1.518012 1.628010 2.039263 2.134528 2.453843 2.576361
+1.531312 1.678082 2.035179 2.146889 2.504859 2.584171
+1.508627 1.632606 1.965140 2.148678 2.496640 2.592746
+1.499896 1.599423 1.913687 2.036860 2.450192 2.538166
+1.481158 1.583812 1.884461 2.013870 2.359497 2.481100
+1.475736 1.569698 1.799993 1.916182 2.329218 2.535901
+1.498641 1.623604 1.792824 1.945217 2.358627 2.490727
+1.431128 1.574627 1.743263 2.006116 2.347765 2.508896
+1.427064 1.536583 1.790690 1.943028 2.344465 2.452652
+1.436838 1.542023 1.758917 1.925622 2.242913 2.416844
+1.419788 1.509038 1.863320 1.995399 2.275792 2.424732
+1.424396 1.510477 1.882887 2.179017 2.304708 2.455667
+1.366051 1.461194 1.935323 2.147551 2.263420 2.465785
+1.407395 1.564972 1.981125 2.103440 2.445291 2.565104
+1.597013 1.877015 2.068503 2.270312 2.499356 2.604888
+1.484981 1.818125 2.149815 2.337593 2.504753 2.589439
+1.487878 1.937181 2.118271 2.308368 2.511781 2.604626
+1.682297 1.977033 2.192290 2.373676 2.522931 2.611282
+1.749459 1.905682 2.218271 2.352013 2.574227 2.681484
+1.676221 1.936512 2.237179 2.343782 2.535908 2.661271
+1.723362 1.989915 2.271236 2.413144 2.550828 2.649366
+1.756006 1.996913 2.312656 2.461484 2.625420 2.708736
+1.499770 1.763295 2.158871 2.346879 2.592716 2.682851
+1.747521 1.927133 2.248936 2.410841 2.604121 2.690881
+1.670354 1.938258 2.247669 2.447135 2.657540 2.730040
+1.669237 1.959610 2.179318 2.440527 2.588429 2.640800
+1.780231 2.015138 2.164810 2.399021 2.581913 2.646942
+1.739561 1.967219 2.065694 2.364479 2.589977 2.649441
+1.605008 1.875105 2.018901 2.227404 2.541181 2.603541
+1.511246 1.892601 2.027827 2.148110 2.520001 2.608199
+1.363362 1.568768 1.910845 2.057695 2.463506 2.558819
+1.338497 1.483825 1.883695 2.067074 2.448950 2.577904
+1.369193 1.437863 1.845222 2.078464 2.428504 2.615891
+1.377698 1.498294 1.867666 2.164965 2.492547 2.570908
+1.408098 1.487760 1.872414 2.097948 2.447272 2.551716
+1.402363 1.531952 1.897693 2.126667 2.419162 2.551442
+1.456496 1.554631 1.841067 2.095807 2.421290 2.561761
+1.434931 1.529146 1.795336 2.163704 2.446465 2.530309
+1.391108 1.495499 1.869679 2.161228 2.381406 2.532017
+1.388934 1.534466 1.797003 2.102941 2.398508 2.521270
+1.358571 1.471303 1.760049 2.100883 2.350197 2.546548
+1.276599 1.519215 1.779419 2.095819 2.442938 2.665941
+1.206661 1.457865 1.760464 2.244280 2.495881 2.644848
+1.214611 1.460274 1.979019 2.239454 2.398324 2.634473
+1.275473 1.473470 1.878570 2.203117 2.475028 2.687851
+1.291712 1.399288 1.813807 2.194118 2.502758 2.614888
+1.260058 1.397998 1.924890 2.186721 2.511667 2.644548
+1.210634 1.326713 1.897594 2.107441 2.460079 2.711722
+1.202657 1.319235 1.892634 2.079859 2.379418 2.679891
+0.967019 1.105970 1.761322 2.107426 2.328428 2.593155
+0.947746 1.035797 1.393730 2.061233 2.300744 2.668280
+0.996167 1.215029 1.378995 1.861982 2.329665 2.605022
+1.008823 1.198481 1.313837 1.693525 2.360746 2.604824
+1.054057 1.218510 1.368106 1.738006 2.174906 2.546071
+1.021568 1.133991 1.369174 1.935639 2.267798 2.544415
+1.033742 1.227769 1.451289 2.005917 2.412620 2.595031
+1.065155 1.168636 1.530185 2.061499 2.410743 2.485478
+1.121227 1.281283 1.432233 1.909928 2.202734 2.509308
+1.170032 1.306041 1.494945 1.981910 2.202815 2.351735
+1.152630 1.266186 1.620999 2.057673 2.214453 2.381642
+1.228128 1.313272 1.751468 2.118469 2.263417 2.453888
+1.307832 1.398650 1.799753 2.125735 2.260615 2.451800
+1.360104 1.477444 1.835740 2.121870 2.291563 2.499791
+1.398477 1.492966 1.806519 2.107140 2.241410 2.434146
+1.351212 1.462506 1.726393 2.122387 2.285789 2.421844
+1.297203 1.498868 1.766246 2.157839 2.376714 2.497158
+1.377349 1.518971 1.803789 2.191150 2.356374 2.478897
+1.289165 1.553241 1.674591 2.112634 2.403345 2.473877
+1.188972 1.700336 1.834324 2.055585 2.599531 2.700414
+1.077038 1.667666 1.902189 2.045693 2.602910 2.700056
+1.072057 1.272462 1.843743 1.901183 2.586254 2.720558
+1.084385 1.392072 1.823558 1.901299 2.589426 2.680029
+1.106319 1.441363 1.766145 1.853724 2.549356 2.627414
+1.094566 1.550024 1.771922 1.870952 2.559682 2.628051
+1.041899 1.598552 1.813702 1.928485 2.545630 2.671501
+1.090204 1.610510 1.812559 2.019257 2.556321 2.608793
+1.016528 1.626657 1.742411 2.041925 2.541538 2.602247
+1.075570 1.647752 1.870667 2.073970 2.574597 2.628798
+1.126656 1.586213 1.792572 1.982408 2.629180 2.725561
+1.027776 1.542665 1.831396 1.956878 2.603010 2.668523
+1.111897 1.543416 1.861469 1.942917 2.621957 2.672864
+1.080512 1.583194 1.857304 1.958456 2.633597 2.695142
+1.132239 1.449156 1.884949 1.977000 2.607850 2.709420
+1.232769 1.612605 1.960435 2.071693 2.644678 2.727118
+1.325014 1.779901 1.967304 2.113871 2.547837 2.668723
+1.404585 1.644448 2.058088 2.257112 2.519116 2.634613
+1.413485 1.609401 2.002521 2.184102 2.587532 2.696153
+1.354020 1.593877 2.014439 2.122204 2.617254 2.721812
+1.373822 1.656758 1.992185 2.189875 2.548725 2.702514
+1.421181 1.611084 1.958071 2.123616 2.569835 2.648136
+1.379179 1.620195 1.922636 2.093948 2.550690 2.641857
+1.367726 1.656675 1.838447 1.992123 2.596226 2.654039
+1.394553 1.750623 1.872269 2.038430 2.553215 2.623595
+1.464021 1.741591 1.912988 2.150261 2.565594 2.648823
+1.461132 1.809059 1.954612 2.209898 2.570276 2.642519
+1.434520 1.770834 1.904022 2.217315 2.631183 2.686995
+1.375527 1.631662 1.885996 2.086587 2.600503 2.671257
+1.339213 1.568724 1.817375 2.085568 2.591336 2.666455
+1.504403 1.779590 2.057141 2.272445 2.534600 2.634655
+1.474504 1.746318 2.044711 2.137376 2.474545 2.630529
+1.557045 1.755017 2.039661 2.080935 2.661339 2.741743
+1.573452 1.715361 2.056726 2.098368 2.691640 2.743685
+1.511431 1.831887 1.991585 2.156042 2.624346 2.709519
+1.501907 1.714027 2.012931 2.079434 2.554662 2.690409
+1.547183 1.671908 1.977966 2.104057 2.507158 2.614807
+1.563264 1.635971 1.990128 2.123718 2.563823 2.633190
+1.587772 1.697791 2.007538 2.127360 2.588839 2.656541
+1.618303 1.722230 2.008488 2.131284 2.618167 2.687641
+1.580078 1.684932 2.000646 2.087829 2.613984 2.687671
+1.572775 1.736323 1.961536 2.144351 2.641248 2.687943
+1.538985 1.652845 1.952108 2.156038 2.639302 2.685734
+1.537130 1.622797 1.963527 2.075940 2.612204 2.679327
+1.537449 1.633250 1.986524 2.075675 2.542791 2.643796
+1.543228 1.772021 2.053914 2.142473 2.536411 2.690489
+1.621800 1.829997 2.052741 2.210858 2.583215 2.665837
+1.609565 1.935324 2.146682 2.393315 2.597212 2.670556
+1.560818 1.935543 2.191435 2.444376 2.609921 2.692602
+1.704277 1.874585 2.010256 2.380095 2.528658 2.604802
+1.624784 1.837785 1.925361 2.193011 2.497168 2.569432
+1.556125 1.832653 1.986935 2.189317 2.453204 2.531630
+1.347428 1.669666 1.943932 2.108052 2.506631 2.608423
+1.278409 1.497251 1.838413 2.073920 2.454553 2.592324
+1.271049 1.415120 1.758107 2.232460 2.422770 2.554672
+1.260337 1.356714 1.913167 2.225895 2.380602 2.557250
+1.223099 1.307974 1.784088 2.207517 2.362875 2.487786
+1.249454 1.538164 1.716600 1.998319 2.362110 2.465531
+1.208014 1.503064 1.761303 1.917077 2.448048 2.525133
+1.151848 1.461146 1.783945 1.946886 2.452561 2.556307
+1.165555 1.347773 1.799946 1.920752 2.437876 2.546954
+1.109788 1.310449 1.815889 1.923381 2.427304 2.602804
+1.091990 1.233639 1.789609 1.925036 2.467804 2.611170
+1.052323 1.194748 1.809895 1.914231 2.390180 2.556318
+1.032267 1.189488 1.775623 1.889690 2.393248 2.640830
+0.992854 1.169627 1.814159 1.912252 2.320268 2.634324
+1.054415 1.177746 1.762755 1.907196 2.266178 2.516301
+1.029545 1.167365 1.780060 1.973540 2.227843 2.613887
+1.067777 1.184807 1.741322 1.919129 2.121959 2.500789
+1.167843 1.263051 1.778629 1.900717 2.150811 2.568660
+1.247027 1.323672 1.811046 1.934590 2.184022 2.674617
+1.331781 1.426137 1.785144 1.966030 2.114558 2.541825
+1.360900 1.444142 1.862535 1.949748 2.426744 2.646105
+1.408538 1.451788 1.866918 2.014230 2.478842 2.705911
+1.405554 1.483551 1.874980 1.960293 2.502764 2.662540
+1.442367 1.544656 1.883354 1.987590 2.562980 2.647761
+1.480719 1.536202 1.881818 2.018874 2.582349 2.661791
+1.513078 1.583246 1.895764 1.987154 2.586166 2.676009
+1.497760 1.602088 1.831006 1.985404 2.564090 2.643635
+1.497065 1.564915 1.844643 1.957697 2.539930 2.677163
+1.468106 1.523747 1.865842 1.940079 2.607970 2.684862
+1.468104 1.564389 1.858916 1.982405 2.606481 2.709686
+1.422735 1.519196 1.806791 1.891590 2.614823 2.703893
+1.396871 1.476698 1.776404 2.013253 2.607847 2.665988
+1.391532 1.504565 1.830535 2.081544 2.611020 2.720808
+1.372885 1.645062 1.833360 2.015761 2.631341 2.701342
+1.331289 1.747404 1.897953 2.146510 2.586685 2.658273
+1.503178 1.734690 1.914996 2.282089 2.598389 2.679187
+1.465242 1.711762 2.025166 2.284078 2.653659 2.717393
+1.423402 1.768761 2.084406 2.277880 2.636443 2.711524
+1.423821 1.724472 2.032594 2.300309 2.603340 2.686111
+1.433184 1.818868 2.053883 2.409241 2.628605 2.699461
+1.509846 1.793493 2.052637 2.357768 2.644126 2.718058
+1.575730 1.851530 2.032958 2.374899 2.583530 2.662235
+1.501264 1.780829 1.998554 2.329265 2.505605 2.606743
+1.460060 1.763209 1.912334 2.214416 2.494328 2.577616
+1.444041 1.657674 1.895357 2.148549 2.478458 2.595455
+1.454287 1.619858 1.935887 2.189754 2.478831 2.594880
+1.377243 1.642180 1.919668 2.142842 2.421514 2.541038
+1.051059 1.421021 1.830399 2.021216 2.373690 2.548829
+0.964571 1.071641 1.394899 2.151202 2.371776 2.464951
+0.966306 1.181025 1.302213 2.014819 2.375093 2.435135
+0.895560 1.207845 1.335308 1.823923 2.239924 2.363100
+1.006776 1.203093 1.317821 1.873977 2.336638 2.408782
+1.054129 1.225595 1.379006 2.024687 2.333311 2.421550
+1.090202 1.224770 1.409674 2.013195 2.245364 2.353229
+1.076475 1.203972 1.563890 2.033954 2.203362 2.369101
+1.127967 1.249133 1.664693 2.080426 2.256625 2.469541
+1.202013 1.429684 1.793680 2.080715 2.339984 2.460053
+1.517223 1.673904 1.927925 2.203642 2.386760 2.520143
+1.586618 1.786240 2.041674 2.198999 2.416371 2.581194
+1.593300 1.808548 2.148779 2.250278 2.372090 2.532412
+1.657294 1.783458 2.150393 2.258130 2.453915 2.616209
+1.571489 1.792659 2.117652 2.350385 2.577192 2.666949
+1.301994 1.729750 1.974424 2.093250 2.593899 2.663024
+1.100218 1.563399 1.919910 2.059220 2.562974 2.637757
+1.025074 1.540738 1.811898 2.057911 2.491877 2.603248
+1.015309 1.473504 1.802588 2.013084 2.436758 2.605319
+1.022065 1.158479 1.689786 2.183529 2.383778 2.492374
+1.212476 1.453108 1.823947 2.061442 2.396186 2.536578
+1.126243 1.452934 1.809587 2.071074 2.408943 2.549557
+0.880332 1.324785 1.621337 1.967251 2.313156 2.426927
+0.749583 1.358409 1.575073 1.870590 2.279227 2.377431
+0.901917 1.290215 1.674425 1.954410 2.233361 2.391524
+0.850971 1.252102 1.657646 1.816460 2.183885 2.328806
+0.881480 1.284101 1.698159 1.844661 2.341820 2.440909
+0.874499 1.182682 1.709489 1.917452 2.365966 2.499649
+0.833751 1.231132 1.803319 1.918020 2.459092 2.546881
+0.850970 1.127086 1.772073 1.855222 2.487580 2.582865
+0.881650 1.114802 1.820703 1.959079 2.521753 2.598731
+0.803558 1.150285 1.798477 1.952675 2.538917 2.634898
+0.867833 0.990496 1.832275 1.929767 2.547660 2.681084
+0.865057 1.067437 1.773263 1.860188 2.558331 2.702216
+0.832529 0.985960 1.756367 1.862925 2.438281 2.623782
+0.850804 1.060553 1.892217 1.984007 2.483774 2.661123
+0.873803 1.041984 1.746198 1.932438 2.338221 2.554585
+0.958594 1.103471 1.836438 1.936783 2.393758 2.573200
+1.014831 1.140873 1.825933 2.013713 2.401490 2.609423
+1.075369 1.457644 1.900463 2.033493 2.314190 2.490949
+1.201715 1.736170 1.914076 2.066503 2.386907 2.476963
+1.215217 1.873613 2.065903 2.182990 2.374981 2.489555
+1.620207 1.851261 2.111542 2.342798 2.527494 2.633887
+1.683879 1.860372 2.126009 2.404344 2.562983 2.636158
+1.703817 1.934383 2.133673 2.393214 2.601932 2.682469
+1.526877 1.900128 2.151100 2.361638 2.575171 2.658979
+1.587253 1.881390 2.129945 2.267860 2.577863 2.657840
+1.539163 1.871344 2.190283 2.360385 2.624615 2.705636
+1.625747 1.862181 2.120094 2.339463 2.592159 2.682142
+1.679527 1.920689 2.161166 2.317106 2.648896 2.712106
+1.635199 1.922826 2.174839 2.407399 2.630046 2.709271
+1.454186 1.975699 2.151850 2.371342 2.609179 2.685790
+1.672439 2.011404 2.183017 2.463917 2.652956 2.711525
+1.612105 1.987481 2.102582 2.293346 2.616125 2.670264
+1.528075 1.895073 2.053582 2.232503 2.544912 2.624122
+1.420355 1.683500 1.963431 2.159418 2.536725 2.620131
+1.456320 1.693132 1.969234 2.164744 2.587162 2.677588
+1.481106 1.637541 1.992642 2.178479 2.548138 2.632755
+1.488517 1.591174 2.016501 2.123324 2.528663 2.614918
+1.477429 1.651519 1.962894 2.102183 2.543300 2.618840
+1.473856 1.622302 1.992230 2.080352 2.572688 2.644430
+1.478216 1.633404 1.931202 2.064133 2.552282 2.629338
+1.452477 1.676763 1.945911 2.084750 2.600973 2.668889
+1.411560 1.706182 1.890249 2.169616 2.567319 2.650155
+1.383398 1.664625 1.803260 2.108612 2.595771 2.646221
+1.434597 1.645007 1.871751 2.115488 2.528958 2.660256
+1.444542 1.581834 1.898636 2.094074 2.528453 2.631504
+1.465558 1.562000 1.841423 2.051601 2.559944 2.632318
+1.499287 1.581053 1.857454 2.098994 2.511597 2.604341
+1.528680 1.651347 1.871308 2.071232 2.562548 2.622460
+1.514467 1.633477 1.778604 2.123502 2.606102 2.662390
+1.301476 1.683914 1.796063 2.170750 2.644952 2.691777
+1.154424 1.626935 1.749221 1.996410 2.579238 2.652899
+1.117912 1.569269 1.795380 1.885300 2.376717 2.739725
+1.251786 1.625672 1.839263 1.991314 2.350120 2.655047
+1.412131 1.694235 1.839362 1.998399 2.445222 2.739684
+1.370157 1.687258 1.879731 2.006454 2.329014 2.632962
+1.174780 1.729049 1.887372 2.013905 2.259388 2.557737
+1.317917 1.737041 1.878083 1.979313 2.175363 2.634863
+1.140130 1.586450 1.932219 2.027711 2.236840 2.484950
+1.100136 1.600099 1.851286 1.972375 2.604826 2.649449
+1.111969 1.525982 1.842706 2.011491 2.601600 2.669393
+1.080825 1.492576 1.810233 1.965312 2.556725 2.645171
+1.129345 1.635898 1.785176 2.137400 2.498003 2.572522
+1.003594 1.603010 1.722697 2.139397 2.431587 2.510996
+1.120169 1.425151 1.675683 2.050774 2.343247 2.460676
+1.328607 1.599151 1.873581 2.170450 2.470538 2.613529
+1.382087 1.595341 1.923462 2.082111 2.349552 2.510754
+1.466192 1.572864 1.870467 2.179996 2.346338 2.471868
+1.379765 1.633014 1.808273 2.166294 2.398723 2.492469
+1.305921 1.610021 1.856406 2.001543 2.390671 2.533908
+1.383086 1.586806 1.757224 1.934804 2.433540 2.587951
+1.307509 1.450943 1.675332 2.033940 2.244229 2.418123
+1.191501 1.484072 1.750272 2.096644 2.249380 2.504983
+1.241378 1.491790 1.776884 2.071735 2.367933 2.508071
+1.265701 1.459923 1.781754 2.009900 2.348578 2.516037
+1.279508 1.414652 1.795096 2.055938 2.395700 2.530542
+1.337338 1.445932 1.853009 2.075183 2.385984 2.535489
+1.288973 1.424709 1.797989 2.026295 2.299802 2.423713
+1.365284 1.471788 1.801705 1.937695 2.345304 2.466696
+1.353791 1.447746 1.736211 1.868886 2.274358 2.475584
+1.360863 1.449607 1.680466 1.802646 2.395536 2.513256
+1.388330 1.526246 1.673331 1.909867 2.385020 2.535430
+1.424428 1.544219 1.720205 1.936245 2.307968 2.491418
+1.448943 1.552009 1.797935 1.937520 2.406873 2.546121
+1.432034 1.521621 1.799322 2.021435 2.477329 2.571754
+1.463087 1.546282 1.834418 2.063488 2.489800 2.595267
+1.425467 1.556435 1.904716 2.110821 2.466374 2.587563
+1.384837 1.569415 1.925581 2.072374 2.561291 2.640537
+1.418492 1.539421 1.937535 2.014318 2.609201 2.676764
+1.397006 1.483285 1.936731 1.977746 2.595606 2.735850
+1.335615 1.441868 1.884738 1.994960 2.589628 2.695748
+1.357490 1.518997 1.871603 1.980199 2.629016 2.700305
+1.353558 1.524318 1.891083 1.963707 2.595814 2.679332
+1.295102 1.639282 1.907387 2.103139 2.583356 2.679778
+1.455545 1.667590 1.953202 2.240488 2.570672 2.673617
+1.460281 1.786653 1.997747 2.285131 2.582928 2.677618
+1.543121 1.729391 2.155674 2.280274 2.655577 2.744248
+1.434440 1.748782 2.042199 2.201295 2.606501 2.695862
+1.436079 1.747337 2.067838 2.253257 2.575944 2.679075
+1.470866 1.698245 2.083133 2.257574 2.565342 2.666191
+1.417419 1.693439 2.053193 2.243538 2.544836 2.632800
+1.412107 1.681588 2.081799 2.326098 2.472446 2.570581
+1.397226 1.764739 2.031556 2.297123 2.471645 2.575881
+1.466497 1.694305 2.005924 2.206325 2.534515 2.635757
+1.437113 1.746568 1.923838 2.127846 2.356631 2.464479
+1.324023 1.597918 1.757776 2.124352 2.347986 2.440470
+1.375387 1.626387 1.778068 2.068399 2.258938 2.397532
+1.379576 1.621789 1.857961 1.994277 2.306086 2.477213
+1.416412 1.648893 1.869117 2.098359 2.345397 2.475125
+1.426241 1.639197 1.925396 2.072677 2.448945 2.532546
+1.459052 1.615870 1.911170 2.125459 2.483704 2.592087
+1.459433 1.690704 1.852418 2.136068 2.529395 2.597199
+1.485144 1.578047 1.810569 2.150621 2.559043 2.618237
+1.529055 1.594664 1.738903 2.261216 2.595771 2.651620
+1.532488 1.585333 1.820935 2.229621 2.623157 2.658477
+1.374401 1.528078 1.848019 2.042459 2.458230 2.591088
+1.399870 1.597467 1.853082 2.096076 2.431604 2.556847
+1.457434 1.609510 1.930756 2.186100 2.392287 2.525064
+1.440508 1.607587 1.869980 2.158283 2.424280 2.555526
+1.376758 1.474791 1.750562 2.190623 2.406180 2.547123
+1.327713 1.454236 1.644635 2.110356 2.352447 2.455926
+1.302805 1.418954 1.609785 2.093121 2.263489 2.393252
+1.207712 1.379869 1.536412 2.059932 2.317302 2.455399
+1.154213 1.302966 1.499207 2.070378 2.322203 2.630828
+1.111474 1.224424 1.625635 2.176079 2.342546 2.606190
+0.945723 1.083298 1.625408 2.214532 2.389898 2.510077
+0.992344 1.116986 1.451917 2.008420 2.313589 2.437855
+1.117309 1.392988 1.713458 2.132315 2.276818 2.497613
+1.332868 1.580932 1.895512 2.129003 2.425104 2.576946
+1.322037 1.497740 1.819219 2.128645 2.443614 2.567952
+1.361937 1.547377 1.790968 2.062941 2.465318 2.546093
+1.252677 1.483878 1.758631 2.033450 2.416283 2.539220
+1.099384 1.344747 1.686531 2.016752 2.355863 2.530839
+1.126109 1.263617 1.649938 1.991544 2.309088 2.514895
+1.190621 1.289655 1.692709 2.009481 2.160091 2.417069
+1.174976 1.414314 1.797856 1.987597 2.278818 2.492762
+1.205354 1.482053 1.850760 2.025549 2.342281 2.523425
+1.248034 1.561185 1.852759 2.096445 2.428364 2.551865
+1.260728 1.601832 1.901052 2.131984 2.409850 2.565546
+1.265037 1.693841 2.000531 2.200039 2.503508 2.617708
+1.278843 1.738264 2.062020 2.289983 2.604440 2.678111
+1.339428 1.735918 2.050123 2.352408 2.597394 2.688219
+1.301064 1.708745 1.965976 2.286214 2.546707 2.653175
+1.278604 1.746157 1.950065 2.214767 2.605793 2.687616
+1.183771 1.523062 1.879119 2.004908 2.600314 2.690485
+1.186222 1.342133 1.817831 1.940077 2.504905 2.659254
+1.179389 1.243680 1.894260 1.979753 2.558019 2.721819
+1.175622 1.357037 1.853192 1.940810 2.646805 2.705660
+1.211124 1.369645 1.825254 1.913289 2.634717 2.712259
+1.169472 1.345149 1.764944 1.883669 2.591077 2.714522
+1.222090 1.389480 1.800177 1.935903 2.573766 2.702922
+1.287266 1.375911 1.878738 1.986045 2.625999 2.708468
+1.299711 1.389598 1.873905 1.942723 2.533485 2.691472
+1.271356 1.424203 1.849847 1.953565 2.555561 2.652372
+1.253571 1.448512 1.829531 1.919100 2.487837 2.630761
+1.223923 1.323017 1.841258 1.932730 2.226845 2.570717
+1.226170 1.321389 1.771794 1.948065 2.137880 2.563052
+1.316238 1.399466 1.789328 1.965570 2.132039 2.424710
+1.264391 1.363953 1.735531 2.005600 2.155844 2.418921
+1.214027 1.319779 1.662017 1.902948 2.064631 2.424833
+1.242602 1.342314 1.624757 1.929420 2.083549 2.318443
+1.241605 1.439119 1.646334 1.817919 1.997763 2.196632
+1.239348 1.336917 1.777062 2.028009 2.155853 2.328702
+1.178416 1.266326 1.802039 1.959820 2.145703 2.469513
+1.247702 1.328626 1.812686 1.992792 2.200638 2.499445
+1.270078 1.370907 1.882273 1.997225 2.254284 2.526050
+1.295553 1.376421 1.860437 2.076734 2.248998 2.567118
+1.304838 1.386085 1.832762 2.061619 2.219399 2.486348
+1.314313 1.381482 1.912831 2.017535 2.287746 2.576424
+1.275078 1.353772 1.858468 2.037031 2.362055 2.615420
+1.287115 1.366797 1.835524 1.961094 2.291985 2.562975
+1.256666 1.341161 1.798806 1.921264 2.333647 2.596913
+1.229284 1.337507 1.753982 1.942388 2.403549 2.602171
+1.224871 1.322981 1.792609 1.918908 2.363314 2.520583
+1.218452 1.321589 1.651493 1.884157 2.366537 2.521284
+1.193218 1.359120 1.632401 1.857625 2.322851 2.452708
+1.205474 1.368035 1.608030 1.815042 2.341851 2.574505
+1.061251 1.318432 1.545024 1.888740 2.401884 2.617020
+1.072522 1.365786 1.514127 1.893675 2.369617 2.474232
+1.111644 1.436790 1.606098 1.842456 2.382418 2.474111
+1.012061 1.316202 1.471593 1.799057 2.349432 2.455130
+1.089471 1.248571 1.572785 1.953061 2.298439 2.461784
+1.068360 1.195813 1.624024 2.111295 2.311476 2.419253
+1.147513 1.525224 1.724810 1.957167 2.387532 2.471314
+1.334336 1.568150 1.749039 1.962569 2.390633 2.484647
+1.298140 1.467881 1.814397 1.941570 2.384226 2.522176
+1.295007 1.418486 1.859466 1.962329 2.376315 2.521757
+1.335831 1.436636 1.858260 1.966332 2.446579 2.563483
+1.346492 1.477982 1.905644 1.998091 2.490052 2.584468
+1.407183 1.540763 1.879296 1.992980 2.487939 2.564009
+1.447665 1.628575 1.828196 2.053651 2.534046 2.605859
+1.524705 1.620051 1.837880 2.017915 2.592167 2.653373
+1.564584 1.647141 1.761178 2.024150 2.615248 2.656575
+1.529370 1.593981 1.683157 1.979831 2.601640 2.654391
+1.585075 1.652835 1.786770 2.031845 2.518000 2.620980
+1.588906 1.644232 1.813812 2.041481 2.610723 2.666049
+1.601362 1.686074 1.862952 2.127114 2.608859 2.655021
+1.640245 1.750920 1.921102 2.164412 2.547516 2.617193
+1.548602 1.638196 1.917398 2.092646 2.563829 2.615836
+1.515875 1.616955 1.844164 2.007026 2.528173 2.601071
+1.465872 1.572195 1.740969 2.011290 2.493415 2.581928
+1.411908 1.534275 1.669392 2.025507 2.419065 2.534991
+1.339405 1.524896 1.674545 2.018990 2.344004 2.443795
+1.300672 1.527060 1.673067 2.036189 2.269516 2.383792
+1.193083 1.476495 1.664464 1.933230 2.291004 2.414954
+1.192791 1.485591 1.649261 1.844048 2.295088 2.502001
+1.197824 1.364864 1.703691 1.827209 2.262766 2.499801
+1.138273 1.379249 1.658127 1.912486 2.389082 2.583381
+1.166597 1.357942 1.688915 1.942734 2.491527 2.589252
+1.170615 1.391547 1.721925 1.889510 2.506116 2.616390
+1.210959 1.452702 1.755617 1.844973 2.490062 2.624729
+1.212139 1.519716 1.785919 1.889270 2.551264 2.629492
+1.276001 1.664615 1.957757 2.249343 2.602286 2.677701
+1.400862 1.816183 1.994456 2.325956 2.651785 2.717305
+1.466054 1.834563 2.118572 2.372427 2.625377 2.704685
+1.578859 1.790938 2.136097 2.392831 2.638547 2.714022
+1.480700 1.816555 2.206450 2.432389 2.575887 2.645111
+1.617288 1.807665 2.241721 2.440067 2.567226 2.631745
+1.570100 1.785068 2.178210 2.348135 2.467045 2.556638
+1.579682 1.701535 2.005186 2.288766 2.434155 2.548589
+1.578691 1.674213 1.965474 2.199446 2.334867 2.479803
+1.640546 1.726915 1.991606 2.240338 2.400971 2.523628
+1.588532 1.709671 1.874418 2.160822 2.381523 2.517230
+1.447497 1.665484 1.900942 2.103382 2.397872 2.535571
+1.203022 1.599213 1.884283 2.032257 2.369015 2.504738
+1.146521 1.513193 1.880497 1.985787 2.407380 2.522482
+1.131266 1.435001 1.834092 2.111348 2.306550 2.531154
+1.176712 1.640343 1.870115 2.064938 2.313000 2.439124
+1.254490 1.590614 1.958487 2.200173 2.344272 2.479816
+1.243959 1.684492 2.016502 2.192945 2.451075 2.547334
+1.537310 1.763854 2.188639 2.371726 2.539927 2.648079
+1.646538 1.887574 2.280949 2.443446 2.593067 2.680775
+1.567456 1.876170 2.108713 2.427826 2.611726 2.691363
+1.341056 1.874127 2.114216 2.396197 2.621228 2.702770
+1.449196 1.837843 2.058401 2.307470 2.616907 2.689695
+1.313491 1.794349 1.961057 2.237499 2.597739 2.685191
+1.202175 1.706913 1.905104 2.139148 2.612890 2.693658
+1.080344 1.590487 1.846519 2.059279 2.631365 2.697376
+1.043219 1.601906 1.900346 2.141041 2.588352 2.662523
+0.984957 1.556146 1.841481 2.148769 2.577337 2.662952
+0.979403 1.553838 1.844172 2.052598 2.577754 2.641114
+0.947313 1.453890 1.836463 1.998780 2.566547 2.637546
+0.959460 1.441678 1.832870 2.106499 2.553643 2.630882
+0.951016 1.397882 1.793743 2.053066 2.492635 2.622573
+0.870727 1.369217 1.817794 2.107476 2.524230 2.627945
+0.902872 1.385159 1.754800 2.013432 2.536990 2.654823
+0.891101 1.362395 1.753579 1.878041 2.559805 2.662468
+0.835616 1.259326 1.757169 1.832338 2.486345 2.635682
+0.787419 1.132035 1.693975 1.776933 2.533180 2.616312
+0.791106 1.068132 1.697743 1.851598 2.571958 2.669553
+0.759951 1.112356 1.562357 1.855199 2.490682 2.601972
+0.792061 1.139999 1.724823 1.954458 2.608864 2.689684
+0.823952 1.270934 1.741090 2.077662 2.613199 2.669386
+0.736534 1.124969 1.743684 2.093250 2.579787 2.661721
+0.797043 1.051944 1.780229 2.240357 2.583476 2.662315
+0.923582 1.503155 1.776882 2.018470 2.613910 2.703042
+1.421538 1.735030 2.006889 2.210344 2.574319 2.670736
+1.350174 1.606122 1.963013 2.084969 2.478192 2.589945
+1.361799 1.656583 1.974082 2.173881 2.479634 2.612008
+1.319939 1.764454 2.027445 2.249293 2.529644 2.635744
+1.394028 1.664199 2.006309 2.246188 2.558094 2.671320
+1.385394 1.755426 2.080024 2.329874 2.630895 2.722673
+1.333690 1.669430 2.021492 2.250607 2.600265 2.689100
+1.341532 1.698164 1.975002 2.237112 2.560850 2.684376
+1.388610 1.785046 1.956888 2.281386 2.563576 2.643708
+1.345894 1.706236 1.842983 2.264164 2.606222 2.694785
+1.320329 1.694191 1.923363 2.218151 2.645478 2.750259
+1.332386 1.748388 2.014721 2.221780 2.602628 2.697461
+1.397603 1.715354 1.949721 2.236000 2.577802 2.661479
+1.618810 1.795968 2.016419 2.205191 2.506636 2.636829
+1.659811 1.735333 2.021086 2.175840 2.443378 2.641454
+1.539528 1.652064 1.946773 2.095081 2.446637 2.636547
+1.532272 1.592873 1.977822 2.053408 2.551491 2.674907
+1.509350 1.581109 2.004243 2.059379 2.524603 2.702937
+1.432533 1.504626 1.930707 2.042330 2.440661 2.690850
+1.194640 1.677037 2.023104 2.078391 2.446911 2.745852
+1.210373 1.824825 2.021515 2.139089 2.539931 2.659640
+1.276624 1.715436 1.952490 2.083815 2.473462 2.664346
+1.235656 1.548445 2.067341 2.118624 2.427438 2.727540
+1.283474 1.374296 1.963417 2.098418 2.474393 2.702856
+1.305021 1.394700 2.068003 2.139040 2.520168 2.706208
+1.284823 1.494312 2.055208 2.140334 2.602120 2.698828
+1.296593 1.587724 2.087205 2.156563 2.618559 2.718633
+1.252465 1.583350 2.108883 2.173872 2.600502 2.685035
+1.177439 1.612038 2.093884 2.155173 2.581066 2.695123
+1.132957 1.572991 2.135458 2.220598 2.615734 2.710569
+1.060318 1.542980 2.165747 2.230410 2.609442 2.697786
+0.993306 1.542205 2.170751 2.247209 2.631170 2.706892
+0.783750 1.568542 2.323323 2.398878 2.594196 2.690603
+0.866024 1.454427 2.113290 2.187039 2.662007 2.719943
+0.793002 1.437700 2.125666 2.225555 2.588880 2.664786
+0.863183 1.439828 2.031948 2.203948 2.586483 2.646886
+0.817301 1.443077 2.078742 2.356665 2.572146 2.635324
+0.840200 1.268198 1.973956 2.380693 2.546743 2.624124
+0.905910 1.472855 2.000805 2.420178 2.606009 2.662539
+0.885218 1.599132 2.063964 2.335379 2.688751 2.736255
+0.812099 1.480973 2.103159 2.193629 2.621360 2.702113
+0.727009 1.481278 2.088167 2.170556 2.575583 2.660557
+0.783755 1.482083 2.210773 2.281994 2.564635 2.658081
+0.810890 1.318001 2.156661 2.250146 2.565371 2.666169
+0.775372 1.352710 2.277457 2.371730 2.587244 2.655489
+0.765239 1.280609 2.227449 2.304899 2.577531 2.696870
+0.860727 1.309962 2.239215 2.358255 2.523746 2.681832
+0.828001 1.157509 2.157199 2.279201 2.554510 2.655379
+0.776568 1.131001 2.110470 2.282369 2.502240 2.634533
+0.662804 1.210648 2.214487 2.275268 2.480153 2.598167
+0.752595 1.172127 2.270252 2.354795 2.534373 2.613431
+0.769014 1.037539 2.239849 2.320190 2.523883 2.637275
+0.747299 1.036519 2.059875 2.380316 2.507719 2.677768
+0.818428 1.110448 2.132574 2.306792 2.442669 2.597844
+0.838124 1.256032 2.152521 2.304078 2.501081 2.591854
+0.842740 1.147341 2.045086 2.317073 2.459293 2.588472
+0.950977 1.150930 2.097644 2.290004 2.497415 2.643449
+0.932262 1.159756 1.945175 2.233748 2.538888 2.635754
+0.872640 1.294667 1.881084 2.112185 2.488729 2.612697
+0.953242 1.398337 1.906758 2.024454 2.396667 2.616332
+1.019160 1.447236 1.917323 2.023333 2.213019 2.528896
+0.980910 1.420444 1.857618 1.943436 2.294481 2.596120
+1.007917 1.474723 1.827586 1.921475 2.567362 2.643752
+1.057674 1.583820 1.862216 1.988312 2.507590 2.602780
+1.089480 1.610937 1.894205 2.067983 2.401427 2.589250
+1.155642 1.601524 1.853784 2.109924 2.266420 2.654880
+1.190394 1.403206 1.850320 2.129434 2.355479 2.599651
+1.165667 1.266234 1.847925 2.191760 2.352164 2.576809
+1.112543 1.237226 1.755553 2.196412 2.378413 2.515897
+1.093202 1.229320 1.630970 2.198491 2.394327 2.490062
+1.030916 1.160090 1.536996 2.150269 2.345755 2.526171
+1.090134 1.227459 1.470303 2.121663 2.325691 2.414263
+1.084185 1.353427 1.495774 2.165409 2.396637 2.501534
+1.128688 1.380138 1.551457 2.110309 2.296856 2.418999
+1.087172 1.454259 1.658795 2.020385 2.196298 2.381465
+1.039395 1.582193 1.728098 2.070179 2.301852 2.489432
+1.019025 1.646872 1.828918 2.125767 2.542468 2.624929
+1.017909 1.675444 2.009386 2.200627 2.432273 2.532754
+0.975365 1.568456 2.099629 2.243759 2.469669 2.558656
+1.045139 1.750545 2.091194 2.277034 2.473998 2.559636
+1.003490 1.670000 2.149872 2.216814 2.544142 2.591015
+0.972271 1.669349 2.066914 2.253461 2.528115 2.626794
+1.001400 1.910537 2.208899 2.322095 2.475052 2.594146
+1.106236 1.762398 2.170214 2.368326 2.532382 2.636954
+0.937567 1.570796 2.208314 2.312080 2.547601 2.604149
+0.984015 1.531648 2.154446 2.260403 2.519554 2.621365
+1.058045 1.589683 2.130473 2.238788 2.559220 2.636001
+1.126293 1.674296 2.142380 2.304378 2.581987 2.659797
+1.092169 1.547245 2.138847 2.246962 2.570924 2.653740
+1.164152 1.513575 2.120596 2.203037 2.555931 2.629117
+1.154436 1.451664 2.109876 2.193787 2.569383 2.668688
+1.171007 1.297549 2.105789 2.224294 2.529719 2.663245
+1.139370 1.343339 2.024942 2.161273 2.570054 2.662064
+1.214975 1.759488 2.013624 2.126711 2.350657 2.508933
+1.410441 1.787361 1.940449 2.082004 2.255781 2.406359
+1.192527 1.698280 1.956892 2.084836 2.235743 2.490643
+1.173627 1.448751 2.011122 2.145246 2.280142 2.534706
+1.172797 1.327177 1.938868 2.095910 2.247560 2.526844
+1.129709 1.376142 1.891533 1.985327 2.196351 2.582653
+1.195218 1.292910 1.887213 2.025135 2.200698 2.525594
+1.246281 1.338967 1.851654 2.072793 2.209074 2.457441
+1.244715 1.395538 1.916844 2.097048 2.296495 2.526646
+1.346432 1.453272 2.128410 2.313839 2.566271 2.666215
+1.392181 1.506569 2.060420 2.183828 2.523643 2.656421
+1.397671 1.478362 2.037869 2.140024 2.522879 2.634883
+1.405078 1.437969 2.064698 2.121678 2.484341 2.664086
+1.527970 1.731644 2.001400 2.182281 2.477459 2.609679
+1.602215 1.694049 2.065008 2.176143 2.567575 2.650751
+1.549243 1.668152 2.061940 2.136053 2.575954 2.678540
+1.590489 1.693208 1.921586 2.193585 2.522338 2.657822
+1.593120 1.715596 2.057856 2.172814 2.502009 2.607762
+1.508461 1.713948 2.053457 2.146855 2.383043 2.628673
+1.500942 1.577870 1.978516 2.080955 2.517866 2.640817
+1.503819 1.559203 1.933282 2.030596 2.516193 2.657495
+1.430951 1.506436 1.856364 2.014512 2.406913 2.583800
+1.394417 1.471155 1.914772 2.015327 2.414514 2.568928
+1.376718 1.476739 1.841743 1.961573 2.459621 2.552505
+1.304829 1.509257 1.807862 1.899025 2.532604 2.616563
+1.486241 1.646868 1.928992 2.176641 2.503384 2.645535
+1.477068 1.576408 1.937301 2.094449 2.468734 2.643633
+1.431493 1.551268 1.935807 2.027994 2.468760 2.605588
+1.427171 1.670820 1.944981 2.109944 2.482745 2.652433
+1.393190 1.649564 1.991075 2.070334 2.586450 2.667337
+1.406966 1.518528 1.967049 2.067755 2.501722 2.624107
+1.399129 1.487381 1.880327 1.972568 2.359193 2.604810
+1.419452 1.541906 1.920889 2.015257 2.416437 2.547537
+1.447736 1.626647 1.911603 2.037838 2.508304 2.609091
+1.507943 1.649223 1.954490 2.063843 2.515779 2.591471
+1.512511 1.697882 1.919266 2.077175 2.545774 2.631085
+1.577487 1.652922 1.969378 2.057105 2.533497 2.610477
+1.604710 1.687839 1.943635 2.030700 2.552461 2.659467
+1.634825 1.710086 1.943508 2.035741 2.553037 2.650522
+1.629110 1.721048 1.907265 2.020140 2.570097 2.652611
+1.653862 1.731013 1.917069 2.016503 2.551305 2.678978
+1.675623 1.740253 1.923108 1.995468 2.543890 2.693466
+1.704324 1.761003 1.892088 1.958603 2.520344 2.709583
+1.631746 1.698022 1.879765 1.974816 2.475043 2.688708
+1.563394 1.662351 1.863499 1.961656 2.492069 2.692141
+1.535271 1.621802 1.864516 2.016880 2.457202 2.701452
+1.463627 1.689995 1.942593 2.019493 2.516076 2.684085
+1.427161 1.545730 1.922601 1.983390 2.549083 2.724037
+1.387863 1.469421 1.874287 2.047091 2.486568 2.643007
+1.364743 1.462745 1.908513 2.076519 2.468769 2.627416
+1.421611 1.616670 2.074387 2.243630 2.604811 2.697119
+1.443567 1.802480 2.145890 2.311026 2.615127 2.704969
+1.402806 1.864810 2.209376 2.377972 2.654288 2.731440
+1.472673 1.860803 2.162882 2.447267 2.648421 2.719024
+1.518497 1.794725 2.075011 2.339205 2.552102 2.655931
+1.503597 1.758472 2.111549 2.304480 2.551002 2.643546
+1.466759 1.587712 2.046144 2.276602 2.546510 2.649906
+1.414608 1.499164 2.000686 2.080851 2.549084 2.654414
+1.324617 1.597419 1.961703 2.075259 2.518788 2.638260
+1.262448 1.666067 1.961546 2.098269 2.549101 2.630367
+1.220869 1.632115 1.947651 2.054954 2.515971 2.607563
+1.136650 1.569138 1.923253 2.011403 2.513979 2.612924
+1.058570 1.570577 1.921267 2.037973 2.484487 2.569497
+1.039823 1.492368 1.862383 2.113321 2.462634 2.586287
+1.291651 1.546687 1.888427 2.160338 2.444567 2.573682
+1.154151 1.629832 1.978719 2.114524 2.505413 2.616168
+1.018988 1.844229 2.003497 2.145640 2.430051 2.549664
+1.003639 1.900247 2.103968 2.200810 2.555267 2.678873
+1.007182 1.652528 2.033376 2.117896 2.534356 2.593837
+1.014065 1.625311 2.073565 2.163998 2.546138 2.611829
+1.009846 1.729007 2.001610 2.190071 2.554550 2.635426
+1.019489 1.599817 2.062920 2.180981 2.585351 2.651906
+1.042282 1.559849 2.061719 2.184907 2.608829 2.711272
+1.093985 1.606698 2.067049 2.179456 2.578115 2.647082
+1.117524 1.554503 2.010457 2.171257 2.524192 2.604614
+1.189148 1.687116 2.026818 2.220744 2.584656 2.673603
+1.184285 1.592927 2.011407 2.140558 2.575633 2.652764
+1.243271 1.544342 1.991354 2.103724 2.547726 2.633837
+1.249802 1.530059 1.930460 2.044509 2.489498 2.611045
+1.317227 1.550858 1.927474 2.019107 2.563575 2.632413
+1.300146 1.571198 1.817213 1.967321 2.572012 2.659755
+1.304786 1.459074 1.804350 1.873800 2.572345 2.677847
+1.272113 1.387927 1.710588 1.798443 2.519124 2.630967
+1.168824 1.271438 1.680467 1.847635 2.472587 2.636108
+1.127715 1.380423 1.702693 1.948341 2.254799 2.516590
+1.037344 1.362071 1.698870 1.943363 2.319984 2.576108
+0.912701 1.215239 1.774758 2.057933 2.407301 2.609739
+0.884045 1.283341 1.740086 2.012038 2.332329 2.530152
+0.859928 1.361393 1.787767 2.032428 2.439162 2.572497
+0.933575 1.497313 1.860114 2.007764 2.460777 2.636583
+0.980843 1.376674 1.808267 1.899302 2.551384 2.660680
+0.888314 1.390836 1.819063 1.938604 2.611726 2.713704
+0.839112 1.455052 1.864246 1.932569 2.561260 2.649480
+0.851738 1.633441 1.854938 2.065105 2.591532 2.637966
+0.927993 1.739190 1.882023 2.133201 2.585017 2.640778
+0.938681 1.795656 1.962111 2.138930 2.565233 2.627897
+0.939389 1.842127 2.021817 2.196345 2.611519 2.658322
+0.876668 1.922758 2.066598 2.238607 2.657831 2.709139
+0.928890 1.831807 2.053719 2.203623 2.653635 2.695408
+0.843177 1.785949 2.180039 2.258075 2.596807 2.669868
+0.904710 1.738574 2.045482 2.171335 2.659082 2.701770
+0.870576 1.672854 2.046684 2.160295 2.663395 2.706284
+0.863208 1.611276 2.039577 2.131986 2.662744 2.710206
+0.911587 1.521477 1.972249 2.117701 2.671514 2.736290
+0.857624 1.506231 1.927459 2.092066 2.599004 2.671353
+0.876724 1.386211 1.930102 2.020125 2.640246 2.715714
+0.822485 1.363083 1.951099 2.012089 2.546285 2.704224
+0.896312 1.299233 1.946153 2.039999 2.427568 2.660429
+0.993275 1.379765 2.001120 2.083441 2.476481 2.621083
+1.111974 1.369262 1.980570 2.050077 2.518420 2.654724
+1.168214 1.421156 1.929649 2.013732 2.513895 2.659462
+1.185532 1.477308 1.941700 2.021792 2.545835 2.636829
+1.134677 1.498395 1.996860 2.077054 2.487095 2.605961
+1.411729 1.500808 1.930565 2.251695 2.391409 2.514752
+1.387101 1.551631 1.939267 2.134432 2.390647 2.538102
+1.436468 1.601632 1.856306 2.001721 2.498428 2.579682
+1.490762 1.673865 1.865367 2.015258 2.490944 2.589599
+1.532290 1.665821 1.854110 1.987787 2.544314 2.634547
+1.563136 1.683249 1.819205 1.981344 2.592402 2.655991
+1.532691 1.642869 1.795089 1.955952 2.595574 2.688667
+1.506939 1.596868 1.724719 1.902522 2.497152 2.646767
+1.385229 1.553302 1.733776 1.993489 2.385677 2.620193
+1.191373 1.508094 1.914117 2.177183 2.460347 2.600638
+0.990202 1.268417 1.760300 1.988487 2.516663 2.661016
+1.004888 1.273030 1.919583 1.976961 2.621532 2.711155
+1.013289 1.479166 1.983769 2.021110 2.561293 2.681392
+1.094384 1.424205 1.985002 2.164791 2.592137 2.670975
+1.057765 1.377512 1.866113 2.165416 2.490671 2.623341
+1.001768 1.321304 1.902289 2.133880 2.499889 2.659347
+0.896048 1.414778 1.927546 2.127605 2.570653 2.658502
+0.862503 1.586972 1.946548 2.153624 2.615123 2.677873
+0.837783 1.700010 1.932982 2.209447 2.588567 2.687532
+0.901209 1.639772 1.999974 2.070577 2.515297 2.763152
+0.955829 1.601245 2.008965 2.112233 2.503888 2.592844
+0.939285 1.704094 2.027412 2.125922 2.430007 2.538916
+0.948268 1.700873 2.002768 2.088348 2.563468 2.622110
+0.959154 1.624274 2.005824 2.077760 2.577716 2.658733
+0.932538 1.593435 1.952831 2.044660 2.567978 2.644497
+0.933107 1.590563 1.945695 2.111900 2.534278 2.608873
+0.943808 1.649088 1.897019 2.104647 2.578170 2.689758
+1.003034 1.619161 1.930228 2.216721 2.582337 2.637890
+0.936810 1.692346 1.965525 2.118648 2.628517 2.684797
+0.973578 1.737821 1.975673 2.106344 2.658295 2.722445
+0.955324 1.750194 1.961437 2.075373 2.655612 2.731757
+0.994013 1.727390 1.946779 2.062413 2.643379 2.738490
+1.005363 1.693919 1.929868 2.100177 2.618754 2.684861
+0.967862 1.640078 1.930261 2.021548 2.639890 2.726662
+0.928258 1.579359 1.864413 1.973012 2.638908 2.717888
+1.058334 1.410591 1.870850 2.066023 2.451575 2.633697
+1.123046 1.486876 1.862969 2.086078 2.412975 2.591738
+1.177472 1.431539 1.849290 2.099756 2.423335 2.566135
+1.187028 1.443506 1.882075 1.983318 2.550673 2.639389
+1.267969 1.628389 1.932608 2.043278 2.552232 2.641727
+1.355546 1.701559 1.924241 2.034556 2.590180 2.660965
+1.472056 1.739983 1.914264 2.052330 2.573889 2.644926
+1.461490 1.790656 1.911310 2.057871 2.525599 2.587235
+1.542347 1.742399 1.901654 2.063063 2.499169 2.580661
+1.550813 1.642896 1.877392 1.995154 2.474361 2.561166
+1.625354 1.724756 1.899115 2.052586 2.447095 2.556852
+1.636703 1.742201 1.904488 2.155317 2.470314 2.569291
+1.608688 1.701026 1.957110 2.085583 2.465316 2.552203
+1.517569 1.685169 1.923050 2.028968 2.382899 2.503932
+1.215848 1.648126 1.842885 2.049966 2.393827 2.484346
+1.158500 1.452995 1.752665 1.859020 2.467269 2.575520
+1.128274 1.384146 1.801504 1.899178 2.472451 2.609988
+1.080623 1.414338 1.812493 1.916642 2.422686 2.620118
+1.104866 1.492913 1.854038 1.971940 2.444002 2.583583
+1.235805 1.437823 1.919484 2.042792 2.483999 2.617147
+1.167412 1.407601 1.774394 2.073573 2.390599 2.543323
+1.096565 1.317231 1.782210 2.013544 2.394372 2.571806
+1.104307 1.206800 1.718582 2.001006 2.351339 2.505639
+1.047321 1.316889 1.824322 2.050773 2.417158 2.531028
+1.087184 1.408401 1.843144 2.031666 2.440481 2.544264
+1.108521 1.394200 1.760026 2.005728 2.435035 2.552154
+1.121767 1.340590 1.749504 1.963633 2.493819 2.609645
+1.122415 1.452714 1.793131 2.030414 2.502133 2.593239
+1.026877 1.468099 1.745342 1.860466 2.483684 2.579747
+0.971670 1.244091 1.752977 1.837331 2.384716 2.625316
+0.917302 1.104410 1.674928 1.792426 2.336189 2.629469
+0.961560 1.088356 1.555776 1.663706 2.282322 2.579748
+0.919563 1.063279 1.573205 1.711100 2.422693 2.675976
+0.875889 1.022614 1.380839 1.829163 2.584656 2.667378
+0.763749 1.018806 1.506319 1.707976 2.471526 2.595865
+0.886944 1.031388 1.425057 1.710023 2.427922 2.576385
+0.890351 1.037652 1.443986 1.587883 2.520205 2.695833
+0.906256 1.035046 1.405613 1.523743 2.536532 2.596081
+0.929418 1.061071 1.157090 1.566597 2.528260 2.694068
+0.917396 1.106117 1.253042 1.389506 2.551566 2.709098
+0.910230 1.042070 1.162527 1.362129 2.393076 2.605349
+0.804288 1.059586 1.418081 1.530362 2.410566 2.663442
+0.907675 1.046288 1.392541 1.508232 2.495351 2.692340
+0.835212 1.126874 1.350498 1.463210 2.567735 2.694674
+0.770295 1.150701 1.428259 1.601173 2.610228 2.683669
+0.924536 1.075405 1.468526 1.669865 2.543683 2.693196
+0.972382 1.191757 1.544758 1.638670 2.535321 2.642972
+0.903877 1.101926 1.510782 1.602659 2.487038 2.638272
+0.881279 1.096901 1.554249 1.644297 2.424659 2.557575
+0.866115 1.118877 1.603042 1.702467 2.543898 2.649301
+0.906645 1.160248 1.672021 1.747258 2.517909 2.650863
+0.861085 1.205864 1.660991 1.847091 2.462741 2.632034
+0.837175 1.187776 1.806042 1.889495 2.508608 2.684557
+0.797709 1.178516 1.903177 2.021653 2.546180 2.690072
+0.802875 1.262753 1.923936 2.000576 2.568440 2.670106
+0.766638 1.320827 1.961021 2.058945 2.582312 2.646725
+0.811579 1.455194 2.011480 2.084784 2.548418 2.639933
+0.829770 1.484961 2.052714 2.127227 2.530640 2.608181
+0.799011 1.567454 2.155632 2.265108 2.573173 2.668504
+0.730379 1.358614 2.125791 2.194588 2.518703 2.605426
+0.720667 1.277836 2.042808 2.111923 2.592800 2.675300
+0.777663 1.163703 2.066790 2.179199 2.570004 2.675513
+0.839969 1.373176 2.185884 2.304679 2.509358 2.602576
+0.815752 1.915221 2.233635 2.288481 2.569983 2.628428
+1.191882 1.945689 2.175132 2.299053 2.523524 2.632041
+1.036281 1.742208 2.072713 2.141555 2.573194 2.641551
+1.042507 1.303046 2.012892 2.154612 2.530678 2.649182
+1.109942 1.204237 1.928687 2.058228 2.384097 2.639570
+1.187387 1.287703 1.954253 2.071260 2.382559 2.641811
+1.239189 1.327757 1.930550 2.015277 2.361685 2.627501
+1.292084 1.351985 1.938008 2.017320 2.411502 2.663432
+1.306236 1.382401 1.918450 2.038312 2.339392 2.637738
+1.330235 1.401641 1.873760 1.990443 2.185496 2.510909
+1.356391 1.459759 1.883388 1.980460 2.264547 2.541810
+1.347396 1.438637 1.891675 2.018006 2.302572 2.643809
+1.300877 1.390171 1.889271 1.972933 2.337515 2.605637
+1.318667 1.410121 1.895352 1.990366 2.384682 2.654040
+1.309274 1.425501 1.966145 2.021896 2.501117 2.698509
+1.293853 1.370923 1.908443 1.999149 2.465481 2.673998
+1.277395 1.382844 2.002299 2.066843 2.496853 2.664070
+1.245384 1.422441 2.002908 2.070718 2.556839 2.666388
+1.272587 1.491087 2.012301 2.129241 2.562307 2.657432
+1.265182 1.533940 2.020942 2.093088 2.498380 2.630954
+1.265700 1.477033 2.103009 2.196534 2.455284 2.619887
+1.288505 1.642454 2.093854 2.247833 2.561691 2.658788
+1.410258 1.828971 2.171872 2.374134 2.564587 2.653381
+1.353887 1.710043 2.209331 2.426043 2.629318 2.702189
+1.413615 1.766928 2.137724 2.434853 2.632060 2.702909
+1.459054 1.706939 2.135084 2.377030 2.626415 2.708945
+1.498018 1.687923 2.094822 2.342946 2.558778 2.665699
+1.413908 1.588267 2.086727 2.293084 2.513587 2.642131
+1.399998 1.553342 1.938772 2.183871 2.458665 2.610409
+1.373521 1.449791 1.880601 2.079841 2.298236 2.559768
+1.367538 1.440752 1.973770 2.086070 2.339106 2.621913
+1.368842 1.460821 2.006053 2.129789 2.391520 2.650517
+1.375993 1.496235 2.050052 2.130850 2.453915 2.698625
+1.340575 1.484156 2.084130 2.140940 2.549924 2.685428
+1.389975 1.553009 2.063781 2.147982 2.592260 2.703825
+1.247451 1.503376 2.044299 2.136485 2.344491 2.599169
+1.315110 1.540850 2.028329 2.116330 2.272535 2.431545
+1.298833 1.587487 2.071926 2.185875 2.335690 2.500779
+1.293658 1.562430 2.031101 2.149606 2.408168 2.517292
+1.357545 1.513305 1.998085 2.153047 2.450464 2.583804
+1.314414 1.517423 2.079463 2.179438 2.522288 2.616203
+1.237750 1.513563 2.052227 2.181066 2.539042 2.628158
+1.208558 1.486041 2.046503 2.194666 2.489982 2.636673
+1.196570 1.462494 2.073139 2.230856 2.547633 2.700603
+1.080935 1.459427 2.110500 2.217708 2.538133 2.678354
+1.094483 1.378608 2.167880 2.246181 2.567935 2.691322
+0.942435 1.463343 2.253533 2.330775 2.538479 2.626769
+0.828468 1.390170 2.152319 2.218028 2.545274 2.621490
+0.883311 1.334196 2.094816 2.191259 2.475576 2.573464
+0.863185 1.418682 2.080489 2.166381 2.556104 2.714086
+0.848520 1.391080 2.049319 2.134194 2.702541 2.780818
+0.826225 1.373582 2.037386 2.120576 2.736093 2.782594
+0.823246 1.343853 2.033890 2.111803 2.740872 2.787067
+0.833848 1.336791 2.045450 2.118012 2.699609 2.796181
+0.811654 1.321345 2.094991 2.178116 2.494230 2.649899
+0.947528 1.361146 2.127848 2.219008 2.511382 2.668194
+0.875759 1.251606 2.133422 2.241748 2.473825 2.662930
+0.933534 1.448444 2.139134 2.244510 2.486761 2.606936
+0.945109 1.280801 2.208944 2.335059 2.511318 2.614528
+0.956935 1.371241 2.107196 2.194521 2.403252 2.573030
+0.981000 1.251932 2.147964 2.266597 2.440418 2.624374
+1.061610 1.231691 2.076021 2.233401 2.438599 2.636988
+1.018874 1.354035 1.998033 2.260078 2.443139 2.554775
+1.080301 1.301891 2.034629 2.145600 2.415056 2.591218
+1.133867 1.359760 2.063950 2.164629 2.439392 2.628661
+1.125038 1.414128 1.997540 2.103717 2.392421 2.599578
+1.167273 1.393564 1.998177 2.076478 2.441776 2.643288
+1.198696 1.421193 1.967983 2.057020 2.432820 2.645067
+1.256230 1.378074 1.941853 2.019326 2.444584 2.608853
+1.295565 1.412154 1.932411 2.008349 2.430053 2.649016
+1.281347 1.464522 1.888236 2.006518 2.425280 2.635204
+1.270582 1.406704 1.901187 1.969293 2.470983 2.647901
+1.266697 1.372887 1.871811 1.957591 2.414971 2.648622
+1.194388 1.351744 1.888250 1.978092 2.400857 2.662660
+1.198872 1.299839 1.864283 1.963651 2.362794 2.619509
+1.126580 1.240104 1.902544 1.997646 2.331426 2.608634
+1.104618 1.214183 1.879788 2.014306 2.251659 2.573373
+1.024288 1.193207 1.868916 2.127876 2.376009 2.623451
+1.000362 1.230212 1.960304 2.075244 2.329353 2.584128
+0.977548 1.321985 1.988755 2.104256 2.381026 2.607919
+0.927608 1.447916 2.027888 2.123013 2.478479 2.585880
+0.887733 1.516534 2.046895 2.153890 2.480515 2.582006
+0.898681 1.564754 2.091528 2.179653 2.573940 2.676783
+0.974718 1.500859 2.081966 2.177780 2.532281 2.634995
+1.023818 1.390635 2.060590 2.142028 2.469386 2.636908
+1.106581 1.431053 1.977134 2.097146 2.471693 2.659120
+1.201259 1.485663 1.944652 2.112542 2.500250 2.665927
+1.285694 1.520657 1.911058 2.044248 2.487710 2.665801
+1.362495 1.534785 1.910552 1.990936 2.505705 2.661527
+1.434594 1.514838 1.934187 2.017407 2.501527 2.693875
+1.420840 1.519491 1.909348 1.986650 2.460403 2.688194
+1.404412 1.469806 1.964287 2.054233 2.366794 2.655269
+1.388287 1.466909 1.964052 2.058950 2.286531 2.604935
+1.367998 1.434810 1.857703 2.007116 2.196577 2.604187
+1.300836 1.380544 1.740254 2.046889 2.235228 2.521906
+1.231299 1.321604 1.867230 2.147627 2.354630 2.579138
+1.154924 1.255903 1.932323 2.164374 2.392832 2.605994
+1.098663 1.202218 1.948275 2.150159 2.492596 2.625742
+1.057458 1.221852 1.869129 2.268825 2.456540 2.580362
+1.033078 1.150105 1.708873 2.264876 2.476044 2.563612
+0.988998 1.159268 1.962027 2.302711 2.448723 2.560725
+1.028425 1.228689 2.025910 2.260366 2.561850 2.661757
+0.934860 1.348208 2.053889 2.214742 2.525301 2.647713
+0.919150 1.264565 2.068138 2.183398 2.534979 2.644315
+0.975247 1.362233 2.052147 2.231420 2.582800 2.724482
+0.954336 1.311177 1.977372 2.238157 2.478111 2.617046
+0.941853 1.335982 1.976422 2.219013 2.579491 2.714299
+0.928694 1.366450 1.884879 2.183146 2.580560 2.657594
+0.986067 1.338370 1.954317 2.187863 2.566522 2.638835
+0.912646 1.284402 1.814142 2.175069 2.553933 2.638518
+0.968965 1.310497 1.839690 2.078084 2.590335 2.660573
+0.977192 1.304629 1.880951 2.127022 2.598044 2.712114
+1.023839 1.299619 1.944708 2.103778 2.625919 2.730897
+1.110208 1.286313 1.959383 2.053969 2.564587 2.676132
+1.028136 1.324243 1.976740 2.094942 2.586202 2.754727
+1.129799 1.269907 2.011874 2.109219 2.588902 2.696539
+1.056967 1.340484 2.016171 2.105554 2.557611 2.747157
+1.037500 1.255766 2.029385 2.136193 2.511776 2.709627
+1.006157 1.417167 2.071949 2.132612 2.543898 2.701957
+1.136962 1.416211 2.050339 2.112042 2.449673 2.695205
+1.135319 1.436267 2.083850 2.194924 2.386385 2.656934
+1.094073 1.385456 2.015160 2.113333 2.320097 2.641531
+1.025929 1.360649 1.878300 1.981456 2.128037 2.458938
+1.142747 1.416162 1.901013 2.054884 2.170210 2.459052
+1.093211 1.488385 1.801376 2.073578 2.203432 2.494834
+1.161243 1.263262 1.784814 2.071204 2.194577 2.436217
+1.010788 1.141181 1.728171 2.118721 2.251271 2.426326
+1.083805 1.275984 1.888426 2.068392 2.227464 2.511105
+1.093824 1.303401 1.924085 2.183963 2.348527 2.531702
+1.409867 1.540059 1.722330 2.049905 2.235685 2.389249
+1.466595 1.617030 1.819393 2.035808 2.439730 2.543324
+1.526883 1.811727 1.926153 2.129197 2.481471 2.556058
+1.420465 1.731610 1.925362 2.081119 2.474447 2.570275
+1.248374 1.462520 1.699273 1.907107 2.355354 2.484796
+1.183224 1.558159 1.646615 1.999807 2.374069 2.461600
+1.143841 1.513288 1.675690 1.906750 2.428362 2.518793
+1.066986 1.500051 1.667526 1.961464 2.445898 2.521565
+1.046648 1.520761 1.705160 1.878376 2.459759 2.532729
+1.013709 1.559530 1.737535 1.955854 2.437820 2.515857
+1.021952 1.586883 1.737034 1.929179 2.523644 2.577879
+0.942307 1.579146 1.776104 2.060265 2.437220 2.517653
+0.914226 1.642076 1.812801 2.001091 2.508510 2.570062
+0.952017 1.688066 1.935018 2.016153 2.446793 2.563584
+0.856280 1.697514 1.902727 2.012686 2.522414 2.584398
+0.891878 1.553150 1.935497 2.046974 2.532664 2.594967
+0.845424 1.602286 1.937720 2.027521 2.583016 2.649168
+0.876501 1.716624 1.939566 2.067536 2.588264 2.625363
+0.901014 1.864369 1.978925 2.075191 2.462666 2.609798
+0.911677 1.767853 1.947788 2.072575 2.595744 2.634946
+0.937394 1.708734 1.927739 2.054606 2.574109 2.647431
+1.003647 1.614615 1.942062 2.035984 2.592009 2.664724
+1.089415 1.563712 1.910690 1.974956 2.590910 2.681816
+1.180196 1.457231 1.840836 1.921595 2.573409 2.659354
+1.239380 1.444276 1.818908 1.893870 2.559595 2.657419
+1.377315 1.528992 1.744904 1.862220 2.591155 2.669066
+1.504904 1.589455 1.777756 1.887229 2.506207 2.617754
+1.628411 1.697438 1.830602 1.957574 2.495413 2.652982
+1.655345 1.726761 1.914454 2.042947 2.589709 2.658972
+1.698171 1.754006 1.967189 2.090429 2.602705 2.677128
+1.676303 1.767709 2.042847 2.156668 2.628324 2.690687
+1.724974 1.789927 2.022254 2.138454 2.576232 2.671774
+1.748186 1.802674 2.037781 2.180248 2.542513 2.638948
+1.727494 1.820586 1.984490 2.159068 2.525266 2.641113
+1.681162 1.820947 1.975700 2.157376 2.485796 2.590414
+1.695585 1.807190 1.993679 2.180888 2.380331 2.560860
+1.706934 1.810695 2.008115 2.133097 2.420753 2.641751
+1.654579 1.765733 2.024758 2.124029 2.493478 2.660848
+1.482280 1.849534 2.039337 2.240485 2.457215 2.547774
+1.603912 1.832539 2.051601 2.251630 2.461138 2.560412
+1.611914 1.787316 2.134457 2.250322 2.620939 2.678279
+1.702258 1.857664 2.093573 2.245781 2.633559 2.687798
+1.692364 1.776254 2.026193 2.275357 2.580552 2.683245
+1.587105 1.750297 1.997944 2.242069 2.586538 2.691453
+1.535548 1.765338 2.053611 2.233619 2.646730 2.717875
+1.189624 1.336795 1.763750 2.001818 2.436073 2.594289
+1.190961 1.322629 1.662495 2.028538 2.347408 2.530977
+1.170930 1.394685 1.727435 2.022812 2.382661 2.552602
+1.082797 1.383312 1.623231 1.825654 2.463128 2.574492
+1.058861 1.316419 1.617844 1.734402 2.496675 2.607354
+1.031745 1.332707 1.534727 1.707419 2.433275 2.544209
+1.096632 1.405927 1.540583 1.719915 2.509655 2.573209
+1.088142 1.381934 1.507222 1.618554 2.484112 2.618437
+1.128355 1.341806 1.494171 1.715551 2.495969 2.579865
+1.175042 1.360111 1.572899 1.757164 2.481162 2.588909
+1.251837 1.388286 1.580411 1.744290 2.530232 2.614281
+1.310739 1.444267 1.657251 1.823494 2.515110 2.614602
+1.329594 1.483659 1.703926 1.871461 2.532374 2.621921
+1.364647 1.503101 1.755842 1.919028 2.547482 2.624406
+1.400143 1.516781 1.808646 1.943813 2.572341 2.655551
+1.403936 1.536778 1.854571 1.961169 2.527770 2.650144
+1.441635 1.534902 1.873629 1.970753 2.528116 2.670832
+1.448614 1.528669 1.860977 1.951947 2.473243 2.657815
+1.451619 1.547843 1.824154 2.019980 2.462454 2.654097
+1.474914 1.548478 1.890892 1.995469 2.484609 2.659992
+1.432352 1.541523 1.888921 2.060202 2.407091 2.630443
+1.443739 1.529785 1.892698 1.996592 2.373799 2.620977
+1.379224 1.489730 1.897357 2.016742 2.416784 2.627496
+1.377069 1.463119 1.911655 2.022620 2.355389 2.608649
+1.331805 1.431037 1.929174 2.046904 2.374045 2.605001
+1.261392 1.448545 1.975458 2.082519 2.366860 2.620796
+1.222534 1.418974 1.979786 2.116310 2.439587 2.664630
+1.142938 1.304442 1.984504 2.071356 2.473077 2.672948
+1.163073 1.268521 1.930445 2.046302 2.305097 2.594448
+1.102508 1.246087 1.951734 2.103272 2.299777 2.571979
+1.010568 1.147332 1.902536 2.046240 2.288021 2.566997
+1.010466 1.307000 1.827652 2.076872 2.333263 2.555967
+1.246338 1.534633 1.859079 2.187994 2.388066 2.541619
+1.200493 1.578943 1.899233 2.165025 2.448881 2.583181
+0.969958 1.321171 1.879198 2.166270 2.417955 2.602455
+0.883738 1.359575 2.004523 2.100728 2.516977 2.633388
+0.844286 1.405546 2.057051 2.140524 2.516435 2.660060
+0.862435 1.502332 2.107411 2.205164 2.558187 2.660491
+0.940459 1.428240 2.139821 2.233319 2.564481 2.673761
+0.930987 1.583981 2.021904 2.152394 2.404035 2.506344
+1.046556 1.798258 1.988424 2.129290 2.357578 2.453538
+1.053483 1.593749 2.104331 2.232679 2.372807 2.498150
+1.137645 1.642783 2.089155 2.231807 2.383165 2.575567
+1.180782 1.899843 2.114705 2.223340 2.453147 2.554915
+1.144768 1.795798 2.058166 2.194105 2.452139 2.558749
+1.132549 1.688302 1.980246 2.107445 2.321949 2.446573
+1.155835 1.527004 1.951246 2.101869 2.265669 2.423260
+1.218988 1.551877 1.978933 2.129503 2.365239 2.547894
+1.269955 1.592834 1.957403 2.059254 2.477360 2.620075
+1.304775 1.597146 1.974266 2.084408 2.414413 2.613437
+1.304611 1.645522 1.976796 2.100584 2.364468 2.510600
+1.357449 1.721619 2.013975 2.141789 2.385178 2.512136
+1.335725 1.833907 2.001270 2.155846 2.401439 2.496098
+1.311398 1.558292 1.938760 2.063279 2.307274 2.526616
+1.360360 1.440763 1.893578 2.075310 2.237527 2.504599
+1.331599 1.468494 1.928903 2.060963 2.318029 2.567821
+1.318611 1.537603 1.924470 2.015195 2.358808 2.593307
+1.214364 1.546191 1.882099 1.995250 2.377928 2.652939
+1.296335 1.566534 1.875140 2.003277 2.476321 2.631527
+1.397784 1.586154 1.861480 2.030113 2.587065 2.654646
+1.475237 1.644203 1.915883 2.047027 2.653267 2.714423
+1.524741 1.716019 1.957822 2.067654 2.623703 2.690243
+1.578686 1.677809 1.940919 2.066782 2.613829 2.704583
+1.558659 1.702533 1.930114 2.028274 2.615049 2.686527
+1.500895 1.699904 1.908920 1.998738 2.620634 2.691280
+1.442946 1.702672 1.900985 1.975333 2.624730 2.699244
+1.372883 1.638290 1.917707 2.028286 2.626184 2.697452
+1.284224 1.656214 1.897845 1.992564 2.644425 2.707381
+1.204035 1.651822 1.889771 1.992564 2.638494 2.709577
+1.149198 1.622068 1.884510 1.979246 2.632691 2.699244
+1.133732 1.618626 1.895041 1.977544 2.625046 2.694884
+1.157568 1.662329 1.889784 1.978395 2.626035 2.684544
+1.218943 1.667105 1.879063 2.005165 2.602271 2.658132
+1.224226 1.626864 1.791981 1.894650 2.517637 2.647870
+1.354348 1.558760 1.843077 1.930892 2.571225 2.630861
+1.339527 1.595092 1.762248 1.979267 2.546017 2.613198
+1.389217 1.592419 1.859636 1.962120 2.550950 2.637714
+1.441267 1.590433 1.879393 1.987047 2.582006 2.666738
+1.431033 1.609808 1.890274 2.037874 2.525040 2.672056
+1.468384 1.575421 1.945848 2.029866 2.551470 2.705315
+1.450092 1.601430 1.954103 2.062799 2.534132 2.666966
+1.482171 1.565438 1.973588 2.124154 2.520208 2.656022
+1.429418 1.560169 1.984368 2.078415 2.510933 2.668346
+1.440913 1.587927 1.976090 2.097963 2.464144 2.621669
+1.432466 1.582610 1.973345 2.159930 2.500511 2.668329
+1.429101 1.593924 1.974811 2.070207 2.527049 2.683794
+1.377247 1.571046 1.937033 2.094336 2.488609 2.653189
+1.485270 1.572718 1.935520 2.015863 2.471891 2.687018
+1.473606 1.569260 1.872618 1.962880 2.412797 2.654369
+1.486059 1.580245 1.866252 1.975544 2.318749 2.586712
+1.465213 1.581118 1.784993 1.913021 2.172477 2.555915
+1.433656 1.566339 1.728508 1.853259 2.061966 2.413952
+1.367612 1.543842 1.700068 1.854972 2.034622 2.282022
+1.503264 1.657179 1.809362 1.937669 2.143191 2.435605
+1.340742 1.593266 1.833843 2.129408 2.468938 2.572839
+1.336721 1.481696 1.944774 2.230613 2.480290 2.580121
+1.321318 1.603141 1.968333 2.203371 2.515102 2.650047
+1.341931 1.668341 1.988838 2.185252 2.564141 2.653216
+1.315554 1.648897 1.959899 2.147638 2.516885 2.612616
+1.277314 1.620218 2.001858 2.229409 2.531549 2.621818
+1.305168 1.578599 2.038627 2.295512 2.565341 2.654838
+1.330511 1.609911 1.991543 2.262708 2.563339 2.665956
+1.374004 1.683930 1.980067 2.338575 2.595603 2.682727
+1.268703 1.389752 1.885378 2.110404 2.488114 2.638645
+1.216813 1.310045 1.854691 2.036714 2.277594 2.566534
+1.234945 1.337806 1.949427 2.059361 2.295326 2.566468
+1.188939 1.302387 1.996200 2.107442 2.349193 2.585236
+1.268977 1.440154 2.024771 2.136855 2.444005 2.664042
+1.274373 1.383125 2.066734 2.151173 2.407560 2.654201
+1.264553 1.356123 2.001656 2.118864 2.287784 2.569535
+1.234337 1.329784 2.063392 2.150768 2.367188 2.598596
+1.155210 1.257442 2.082496 2.211439 2.390593 2.620100
+1.199455 1.265557 1.934979 2.226691 2.540894 2.664195
+1.304701 1.526851 1.954550 2.174656 2.477694 2.621713
+1.638067 1.896263 2.077081 2.361007 2.646027 2.718839
+1.643821 1.943109 2.131987 2.329624 2.578717 2.645464
+1.640898 1.989224 2.161468 2.269205 2.586475 2.655395
+1.723007 1.910073 2.070189 2.259565 2.564392 2.640342
+1.652067 1.998733 2.135937 2.352824 2.652512 2.717475
+1.680722 2.074091 2.269666 2.453470 2.699939 2.763041
+1.695085 2.058973 2.193637 2.313571 2.639345 2.699445
+1.782955 2.014033 2.224899 2.332287 2.645355 2.724401
+1.705960 1.974745 2.180829 2.256084 2.575177 2.716938
+1.662556 1.988643 2.115183 2.205279 2.548376 2.657655
+1.562053 1.843896 2.173269 2.265891 2.477950 2.695966
+1.685920 1.795837 2.078330 2.180138 2.465369 2.667314
+1.680613 1.738555 1.994736 2.131193 2.473191 2.649544
+1.659289 1.833639 2.000087 2.140167 2.564913 2.692724
+1.714890 1.784823 1.974907 2.085230 2.566670 2.701036
+1.729112 1.826059 1.895041 2.053724 2.603924 2.699244
+1.696294 1.791079 1.916038 2.017742 2.583106 2.704200
+1.626844 1.720989 1.890443 2.014482 2.589192 2.689135
+1.574181 1.677998 1.880801 1.982799 2.574984 2.664083
+1.432597 1.676378 1.834673 1.964658 2.535300 2.638654
+1.318535 1.535375 1.836957 1.932882 2.478408 2.578350
+1.226292 1.492951 1.836423 1.946067 2.430171 2.582074
+1.098912 1.499048 1.896293 2.028872 2.540535 2.618603
+1.034465 1.533372 1.964842 2.070966 2.578583 2.651519
+0.979835 1.480912 1.975960 2.089319 2.534240 2.632634
+0.916592 1.481293 1.967506 2.053292 2.558345 2.642742
+0.937338 1.474374 2.023762 2.110460 2.585438 2.665463
+0.873055 1.560533 2.028802 2.086416 2.575020 2.684778
+0.901938 1.628414 2.031806 2.102850 2.610158 2.685650
+0.862562 1.556144 1.997573 2.081742 2.533196 2.615757
+0.906140 1.665744 2.019373 2.133337 2.581928 2.661153
+0.872836 1.638660 2.038436 2.097283 2.645014 2.697786
+0.829264 1.441895 2.039191 2.111142 2.611659 2.688610
+0.825197 1.304534 2.056354 2.143792 2.590309 2.657819
+0.793520 1.521024 1.979438 2.058424 2.596225 2.668581
+0.849751 1.485532 1.986103 2.055458 2.624269 2.701899
+0.849936 1.385589 2.007518 2.060577 2.567229 2.678449
+0.829655 1.230975 1.988404 2.101475 2.530728 2.677331
+0.940677 1.264510 1.946316 2.046724 2.499806 2.677984
+1.038884 1.297487 1.958215 2.035997 2.406970 2.650323
+1.157909 1.247311 1.892511 1.984329 2.396990 2.663399
+1.237064 1.318827 1.843309 1.954773 2.420851 2.693910
+1.328871 1.403948 1.808685 1.946118 2.400888 2.683397
+1.393193 1.460812 1.822128 1.939601 2.242548 2.723232
+1.370957 1.526137 1.785367 1.963164 2.136749 2.644805
+1.501135 1.606768 1.841831 2.009462 2.198461 2.614649
+1.467944 1.551473 1.849852 1.982829 2.208604 2.514793
+1.405944 1.480977 1.855980 1.997060 2.178717 2.490007
+1.448170 1.520957 1.868813 1.975365 2.241031 2.616351
+1.380808 1.612670 1.869962 2.026788 2.443477 2.639977
+1.483716 1.596112 1.969733 2.100913 2.577431 2.688144
+1.467685 1.578222 1.986564 2.194709 2.570945 2.671094
+1.496302 1.614196 2.032020 2.218322 2.553463 2.681813
+1.596958 1.722731 2.144525 2.319980 2.604392 2.703958
+1.563283 1.830072 2.213128 2.432926 2.641108 2.721000
+1.591103 1.948477 2.288414 2.486581 2.666837 2.743573
+1.475707 1.718658 2.050982 2.217962 2.487280 2.571804
+1.558930 1.772302 2.094474 2.234464 2.518928 2.597737
+1.567586 1.822091 2.100593 2.286654 2.533948 2.648113
+1.750029 1.936668 2.135601 2.347638 2.546896 2.638316
+1.756882 1.998584 2.116800 2.223412 2.556559 2.647062
+1.700043 1.922262 2.075348 2.184374 2.556081 2.639062
+1.598667 1.709712 1.994558 2.098788 2.521397 2.628442
+1.609782 1.719799 1.937528 2.091978 2.547584 2.621070
+1.580745 1.686692 1.927934 2.059508 2.580331 2.643528
+1.541164 1.684662 1.944797 2.038248 2.568516 2.637104
+1.474497 1.633889 1.881331 1.988847 2.554704 2.623589
+1.427685 1.616808 1.898469 1.994121 2.545908 2.635844
+1.366974 1.583736 1.860760 2.018090 2.526247 2.594032
+1.257899 1.562399 1.870764 1.961750 2.512050 2.589589
+1.183313 1.571246 1.867445 1.988791 2.543767 2.607786
+1.137720 1.607193 1.879149 2.008769 2.536804 2.607481
+1.053818 1.511423 1.904439 2.002387 2.584849 2.657089
+1.029306 1.560669 1.913466 1.984439 2.613420 2.670916
+0.990299 1.520302 1.919708 2.005988 2.615870 2.705960
+0.927002 1.486845 1.900099 1.977768 2.614622 2.695757
+0.924166 1.500302 1.837270 1.915819 2.601787 2.702827
+0.901854 1.422756 1.898010 1.950141 2.572992 2.759299
+0.910623 1.286484 1.801282 1.925793 2.438152 2.671294
+0.904293 1.226137 1.873337 1.946907 2.485265 2.645532
+0.872654 1.122664 1.912497 2.047619 2.468062 2.645490
+1.136081 1.248013 1.725399 2.180627 2.493778 2.579400
+1.161500 1.346974 1.804044 2.157021 2.550312 2.633164
+1.287295 1.663717 2.044188 2.321923 2.599284 2.687129
+1.456799 1.758274 2.055266 2.310654 2.549315 2.660074
+1.416948 1.741370 2.104189 2.357764 2.591761 2.679543
+1.379535 1.752525 2.173415 2.361073 2.617497 2.699322
+1.361005 1.762025 2.115710 2.330663 2.562002 2.650389
+1.340777 1.685357 2.024889 2.281946 2.547415 2.639463
+1.278174 1.686145 1.961407 2.165468 2.554171 2.647873
+1.294524 1.547620 1.981967 2.183432 2.547510 2.637235
+1.201621 1.343641 2.007859 2.089427 2.535679 2.660742
+1.201995 1.332111 1.949153 2.051811 2.553202 2.665468
+1.180355 1.354250 1.890523 2.069912 2.515229 2.620120
+1.128725 1.419757 1.854779 2.056632 2.480702 2.583539
+1.133191 1.402342 1.822656 2.013606 2.539914 2.639438
+1.149266 1.376927 1.821187 1.914934 2.562423 2.664037
+1.080871 1.408443 1.788020 1.879929 2.517515 2.656681
+1.152439 1.509600 1.822338 1.939812 2.528944 2.619151
+1.227262 1.543782 1.935413 2.017678 2.575512 2.665626
+1.253647 1.485940 1.945543 1.987370 2.539186 2.715089
+1.224504 1.521337 1.982156 2.044940 2.522684 2.687446
+1.258716 1.476124 1.981858 2.073104 2.536174 2.634089
+1.255580 1.471131 1.983938 2.052555 2.541040 2.708650
+1.221419 1.556731 2.013319 2.089772 2.538596 2.706495
+1.178484 1.474650 2.007635 2.122088 2.560256 2.629434
+1.136643 1.459288 2.033733 2.100427 2.544702 2.689126
+1.035202 1.462561 2.024973 2.194093 2.530601 2.662208
+1.090875 1.522421 2.038442 2.129424 2.587618 2.687392
+1.054541 1.538340 2.000589 2.084015 2.516505 2.644331
+1.069567 1.471150 1.977006 2.102657 2.548224 2.645658
+1.084637 1.235068 1.999027 2.091007 2.405191 2.622410
+1.073907 1.180490 1.961383 2.101877 2.255303 2.531797
+1.185536 1.320277 2.006751 2.098846 2.443082 2.582972
+1.256811 1.419989 1.983529 2.130962 2.470417 2.558689
+1.290736 1.391916 1.995379 2.106560 2.351663 2.485168
+1.428569 1.748298 2.044813 2.277573 2.513087 2.625248
+1.495766 1.686660 2.135657 2.292230 2.499007 2.616505
+1.482459 1.632012 2.083877 2.297241 2.488552 2.605327
+1.538843 1.630868 2.111745 2.223107 2.576837 2.693238
+1.551627 1.628553 2.040601 2.158000 2.590177 2.713514
+1.570014 1.637722 1.958103 2.124258 2.570176 2.692788
+1.534589 1.607992 1.801643 2.087274 2.392697 2.600933
+1.502776 1.607625 1.843802 2.082344 2.323284 2.522392
+1.515698 1.613442 1.837842 2.027239 2.402910 2.602242
+1.510034 1.607577 1.826422 1.955465 2.340570 2.679619
+1.445827 1.566639 1.756421 1.869709 2.296147 2.601653
+1.410709 1.488515 1.820022 1.910438 2.358230 2.614654
+1.301575 1.428283 1.812427 1.902581 2.293360 2.725276
+1.106808 1.351509 1.888725 1.956330 2.320442 2.646886
+1.056263 1.366917 1.866615 1.968949 2.421463 2.653524
+1.148746 1.368055 1.809637 2.064105 2.437788 2.604096
+0.990270 1.453159 1.887277 2.035172 2.296937 2.600298
+0.943695 1.204266 1.748001 1.886445 2.181614 2.509804
+1.057049 1.221402 1.835972 1.972438 2.154951 2.492969
+0.936404 1.225524 1.895053 1.998065 2.539531 2.644930
+0.941516 1.224493 1.966408 2.055267 2.515087 2.609082
+1.000240 1.314972 1.942001 2.051921 2.535877 2.634783
+1.031394 1.407401 1.953467 2.045443 2.550815 2.634369
+1.118870 1.441951 1.952517 2.061995 2.494339 2.608036
+1.197103 1.553158 1.887646 2.009186 2.472098 2.550658
+1.293802 1.588339 1.868376 2.045916 2.481096 2.566107
+1.353770 1.610646 1.897619 2.083477 2.408292 2.543397
+1.403681 1.521997 1.891672 2.054144 2.357288 2.512253
+1.370402 1.446254 1.871326 1.998144 2.336676 2.570693
+1.499387 1.755248 2.090328 2.282953 2.484033 2.574394
+1.567708 1.842611 2.136623 2.278726 2.477117 2.576067
+1.591554 1.767544 2.169415 2.302935 2.525126 2.637496
+1.458272 1.799744 2.227216 2.397500 2.616529 2.705570
+1.496705 1.846042 2.279896 2.437186 2.649673 2.726623
+1.502759 1.731322 2.268727 2.464213 2.623623 2.706745
+1.497299 1.617932 2.156580 2.386255 2.579030 2.664716
+1.379977 1.538687 1.850634 2.109517 2.410662 2.586146
+1.405875 1.497926 1.741705 1.932278 2.337183 2.563846
+1.346170 1.431041 1.657425 1.884420 2.373948 2.587354
+1.307909 1.406366 1.734141 1.875825 2.460720 2.602094
+1.273940 1.571154 1.771276 1.912248 2.536452 2.595610
+1.200061 1.575178 1.770854 1.877630 2.508016 2.579146
+1.125813 1.539421 1.722626 1.859971 2.511653 2.574626
+1.064900 1.484512 1.690862 1.832750 2.519579 2.589278
+1.042869 1.483231 1.627118 1.867084 2.495867 2.550264
+0.950910 1.474823 1.576110 1.830086 2.519438 2.569906
+1.004516 1.423026 1.550120 1.835220 2.473605 2.544366
+1.026409 1.365688 1.510656 1.879110 2.467179 2.543867
+0.978321 1.338491 1.528018 1.913878 2.465066 2.524725
+0.922555 1.409585 1.520258 1.932657 2.404714 2.472216
+1.009019 1.345028 1.518729 1.999531 2.463064 2.544939
+0.989351 1.433164 1.573872 2.015438 2.401202 2.490979
+1.035325 1.556325 1.677312 2.086779 2.481518 2.567949
+1.004119 1.575292 1.796393 2.075521 2.402912 2.574238
+1.037355 1.681818 1.943106 2.065425 2.478887 2.598899
+1.005855 1.684746 1.972392 2.109307 2.565052 2.623513
+0.954873 1.719791 2.006188 2.112346 2.598630 2.682782
+0.937994 1.728321 1.993763 2.105254 2.632050 2.700706
+0.889626 1.709530 2.001291 2.090092 2.620540 2.709802
+0.912128 1.657624 1.966778 2.058636 2.626429 2.702918
+0.972006 1.569116 1.985953 2.130241 2.569149 2.677258
+1.038791 1.651170 2.008290 2.118109 2.599188 2.701292
+1.102203 1.624993 1.998759 2.125031 2.569760 2.646643
+1.187738 1.639367 2.059243 2.147304 2.475862 2.634964
+1.274099 1.590670 2.016754 2.099633 2.548725 2.668989
+1.373403 1.630011 1.981494 2.070929 2.505950 2.689328
+1.511208 1.602606 1.911343 2.022899 2.475945 2.645751
+1.553078 1.639398 1.870403 1.975613 2.473431 2.626572
+1.633420 1.773325 1.875127 1.959482 2.413151 2.625912
+1.596719 1.747314 1.878046 2.049018 2.587489 2.669276
+1.664674 1.933354 2.156044 2.280025 2.462736 2.571555
+1.551190 1.695801 2.047099 2.236977 2.447592 2.570843
+1.648304 1.728067 2.060789 2.273739 2.475137 2.631203
+1.633548 1.757572 2.089279 2.240980 2.436119 2.556847
+1.608644 1.684711 2.123747 2.256566 2.486503 2.598234
+1.653176 1.714541 2.105354 2.203230 2.509317 2.641781
+1.541046 1.679960 2.104266 2.247262 2.540379 2.626724
+1.559664 1.659637 2.101376 2.213674 2.473238 2.562999
+1.608810 1.671776 2.071434 2.184829 2.493283 2.639463
+1.538876 1.610189 2.083083 2.171544 2.554389 2.650993
+1.511021 1.595459 2.031637 2.130089 2.587598 2.660399
+1.340693 1.587842 1.931002 2.117119 2.599860 2.676574
+1.484682 1.533251 2.024488 2.113154 2.548321 2.659954
+1.534337 1.608310 2.031541 2.136001 2.537102 2.617716
+1.571577 1.618314 2.056726 2.139748 2.525414 2.622206
+1.564471 1.631266 2.060592 2.166039 2.469995 2.635657
+1.533650 1.663515 2.093962 2.190787 2.406743 2.622754
+1.570124 1.631042 2.049374 2.165169 2.393566 2.588498
+1.552473 1.634522 2.008478 2.098878 2.509195 2.669322
+1.498536 1.602806 2.008880 2.099726 2.525137 2.659175
+1.450925 1.660536 1.991759 2.103304 2.544073 2.696474
+1.447598 1.569099 1.993051 2.079756 2.587712 2.676395
+1.394567 1.544697 2.006663 2.078973 2.579015 2.721882
+1.347921 1.507746 1.993785 2.077331 2.510234 2.682685
+1.265189 1.355385 1.877848 2.063826 2.425800 2.657797
+1.266300 1.376932 2.008877 2.275008 2.479039 2.636159
+1.414729 1.680622 2.057398 2.332754 2.549975 2.652454
+1.499883 1.708789 2.054742 2.313580 2.521026 2.613915
+1.445680 1.741768 2.126388 2.338809 2.495118 2.597970
+1.459203 1.792340 2.113493 2.346074 2.563702 2.664973
+1.416845 1.644394 2.131474 2.322905 2.578800 2.677164
+1.447967 1.708221 2.144894 2.272584 2.593212 2.700869
+1.474608 1.742978 2.066944 2.341635 2.601749 2.685249
+1.346721 1.653940 1.999147 2.218537 2.633365 2.723602
+1.375208 1.551414 2.052682 2.232013 2.586844 2.697029
+1.260950 1.501751 1.925196 2.033937 2.546694 2.652031
+1.259339 1.500189 1.909647 1.982913 2.545881 2.638673
+1.252838 1.563842 1.910593 1.973683 2.579307 2.664280
+1.263002 1.546326 1.878080 2.031152 2.583468 2.653793
+1.265196 1.521273 1.905708 1.967385 2.581430 2.658715
+1.307704 1.547718 1.881421 1.962040 2.573475 2.658828
+1.291340 1.575015 1.915239 1.985560 2.602082 2.697699
+1.295431 1.626460 1.923299 2.023724 2.591291 2.680142
+1.301210 1.624080 1.878934 1.998083 2.560098 2.634506
+1.305813 1.620922 1.888028 1.989036 2.606227 2.669425
+1.308088 1.642328 1.885958 2.013573 2.611911 2.696648
+1.312101 1.627858 1.861841 1.974096 2.602616 2.658487
+1.292897 1.605725 1.877131 1.973395 2.599643 2.682844
+1.273139 1.591736 1.870416 1.947454 2.602328 2.674146
+1.283582 1.620817 1.847273 1.928033 2.590051 2.636876
+1.246205 1.560066 1.851625 1.954533 2.587535 2.673542
+1.260393 1.539639 1.831617 1.928432 2.552288 2.629629
+1.261220 1.505229 1.857309 1.933908 2.569004 2.696314
+1.283108 1.719865 1.823903 1.976026 2.565436 2.628748
+1.314387 1.617735 1.804065 1.960535 2.596814 2.686738
+1.338699 1.637284 1.896932 2.009128 2.523466 2.637375
+1.336475 1.577029 1.850025 1.943237 2.521339 2.596832
+1.398912 1.549275 1.724463 1.861933 2.166791 2.466332
+1.406894 1.497435 1.805042 1.909122 2.284281 2.542582
+1.474849 1.579373 1.970765 2.079699 2.371434 2.542616
+1.452309 1.539401 2.076665 2.137999 2.442972 2.649515
+1.450617 1.506612 2.036385 2.131452 2.484829 2.674720
+1.434796 1.583083 2.027674 2.136807 2.429113 2.578344
+1.087572 1.367208 1.786303 2.025035 2.298079 2.515673
+0.992092 1.436432 1.725512 1.965111 2.425717 2.549021
+0.969474 1.497321 1.730092 2.016045 2.414373 2.633316
+0.936277 1.413012 1.683609 2.029768 2.443096 2.552830
+1.176352 1.559638 1.748772 2.061891 2.311483 2.434690
+1.067106 1.406642 1.643885 1.978806 2.374725 2.547845
+0.989262 1.333111 1.475085 1.728650 2.492018 2.553467
+0.957471 1.308545 1.424561 1.823472 2.490215 2.552316
+1.035765 1.254486 1.352081 1.786247 2.539488 2.585779
+1.023678 1.232418 1.398476 1.875768 2.451677 2.540251
+1.037249 1.247286 1.387422 2.008554 2.419268 2.496115
+1.045924 1.231687 1.361952 1.887611 2.384450 2.471500
+1.000981 1.250837 1.376662 1.767666 2.398053 2.484439
+1.061773 1.214611 1.410756 1.728252 2.423979 2.514269
+1.168228 1.291194 1.597509 1.900015 2.415419 2.555014
+1.150788 1.412860 1.825953 1.953264 2.400052 2.535324
+1.166923 1.517635 1.943529 2.034246 2.373359 2.521470
+1.183183 1.523161 1.995315 2.119892 2.433461 2.591155
+1.159482 1.521728 2.072369 2.176962 2.514904 2.660759
+1.260320 1.722656 2.116773 2.249048 2.534123 2.645628
+1.450433 1.717713 2.048790 2.212752 2.499485 2.636128
+1.449227 1.653123 2.023641 2.196888 2.453054 2.612516
+1.388122 1.597569 1.968649 2.163453 2.425431 2.578033
+1.347603 1.449808 1.894138 2.168973 2.446471 2.602268
+1.398006 1.471755 1.922063 2.120957 2.396434 2.600718
+1.428663 1.541308 2.046052 2.132513 2.397088 2.643104
+1.492673 1.585159 2.059339 2.158303 2.480824 2.648749
+1.558991 1.648786 2.037511 2.153321 2.512380 2.647660
+1.587505 1.659085 2.020500 2.139692 2.537458 2.616564
+1.634348 1.739360 2.044485 2.218194 2.530130 2.622735
+1.650152 1.736774 2.049269 2.148919 2.551868 2.651288
+1.640705 1.707347 1.991329 2.119563 2.587595 2.642835
+1.655822 1.709750 1.941946 2.090791 2.570081 2.630366
+1.606441 1.695623 1.852762 2.047845 2.554897 2.628090
+1.484591 1.657033 1.822979 2.008956 2.584027 2.653723
+1.348381 1.627797 1.779073 1.897327 2.521867 2.646403
+1.155644 1.464872 1.763798 1.943553 2.555854 2.642088
+1.339453 1.676328 1.971041 2.186803 2.438887 2.571072
+1.297378 1.615525 1.946759 2.151180 2.429841 2.558129
+1.136457 1.519887 1.867226 2.107387 2.452727 2.553710
+0.943433 1.350976 1.714327 1.830884 2.380038 2.573606
+0.933950 1.078579 1.553087 1.662344 2.027950 2.453145
+0.896937 1.246931 1.586629 1.684078 2.397137 2.611707
+0.892078 1.350059 1.560075 1.689846 2.506278 2.607560
+0.772181 1.313675 1.525659 1.650282 2.468977 2.636413
+0.863603 1.328577 1.481135 1.768890 2.496778 2.546566
+0.908312 1.258415 1.382771 1.699751 2.448589 2.547326
+0.863083 1.273798 1.422414 1.575877 2.509924 2.567103
+0.798143 1.233378 1.328045 1.718547 2.545479 2.654885
+0.937997 1.297209 1.447389 1.659450 2.539430 2.664368
+1.015311 1.282646 1.449652 1.656931 2.519587 2.597241
+1.012603 1.308086 1.428756 1.742642 2.581377 2.654752
+1.075222 1.359942 1.466363 1.790456 2.582927 2.654917
+1.174719 1.354592 1.470683 1.808114 2.611814 2.690601
+1.304671 1.380565 1.486415 1.863253 2.499088 2.646637
+1.329253 1.458935 1.599739 1.985102 2.412241 2.489601
+1.326849 1.466962 1.650712 1.972882 2.173652 2.363777
+1.440729 1.597862 1.756923 1.942121 2.134420 2.330899
+1.490912 1.615283 1.799725 1.989183 2.307191 2.535959
+1.523001 1.676436 1.841390 2.084493 2.490067 2.619504
+1.536446 1.672927 1.834339 2.067942 2.594848 2.655730
+1.585206 1.673419 1.879347 2.026137 2.609162 2.691334
+1.576452 1.662112 1.868110 1.987273 2.629831 2.702492
+1.561137 1.629084 1.910414 2.005430 2.633437 2.726135
+1.531209 1.615548 1.873644 1.966279 2.522587 2.706064
+1.473294 1.591222 1.908945 1.973407 2.535042 2.733124
+1.412536 1.473645 1.871722 1.957323 2.341205 2.740704
+1.379808 1.473241 1.923919 1.986068 2.447172 2.657583
+1.333691 1.500115 1.933534 2.138032 2.501795 2.615830
+1.405765 1.570091 2.028114 2.332669 2.573681 2.664117
+1.386052 1.546746 2.101843 2.380119 2.607300 2.712463
+1.420552 1.664080 2.096840 2.287671 2.545433 2.645671
+1.429919 1.632895 2.056448 2.245342 2.469727 2.594625
+1.450338 1.542326 1.936139 2.160089 2.389658 2.594948
+1.458650 1.545840 1.973946 2.132840 2.280546 2.519107
+1.499624 1.621854 1.924363 2.086584 2.253820 2.393464
+1.480124 1.596614 1.822901 2.030079 2.212455 2.440593
+1.385572 1.515794 1.763525 2.007562 2.207014 2.505163
+1.363477 1.483710 1.745394 2.020826 2.177380 2.428417
+1.422412 1.526361 1.802470 2.041367 2.267629 2.509983
+1.451781 1.539504 1.888618 2.079745 2.258528 2.500819
+1.462745 1.548876 1.925748 2.065292 2.320100 2.591877
+1.459612 1.526791 1.937299 2.029745 2.425999 2.618215
+1.426774 1.495962 1.934803 2.028683 2.474317 2.639936
+1.395478 1.494605 1.923542 2.006865 2.508795 2.651596
+1.315323 1.475877 1.925867 2.012444 2.562544 2.642674
+1.216208 1.542312 1.867609 1.962911 2.578507 2.638914
+1.188119 1.592111 1.826165 1.956758 2.592728 2.659305
+1.157283 1.519027 1.841285 1.936129 2.596722 2.669387
+1.042732 1.334857 1.852810 1.927812 2.509256 2.721390
+1.076921 1.512728 1.892211 1.976017 2.370736 2.635640
+1.328644 1.555209 1.826957 2.080018 2.447934 2.607755
+1.271225 1.383527 1.740551 2.048721 2.356257 2.567108
+1.288765 1.385478 1.793872 1.977849 2.390396 2.604554
+1.328655 1.422241 1.805644 2.002822 2.289156 2.544301
+1.377945 1.493655 1.793682 2.031868 2.353733 2.518906
+1.384430 1.453654 1.838071 2.001840 2.390785 2.635123
+1.289457 1.403427 1.871018 1.986122 2.479981 2.723796
+1.207888 1.388220 1.865052 2.031661 2.450066 2.591415
+1.218628 1.309314 1.909852 2.003782 2.499425 2.604984
+1.178831 1.273297 1.832814 2.025041 2.508629 2.650229
+1.147475 1.259195 1.930161 2.027735 2.522075 2.634075
+1.100906 1.268026 1.857908 1.951898 2.508895 2.660387
+1.069825 1.225671 1.888950 1.974341 2.492132 2.592105
+1.042255 1.182210 1.891740 2.039958 2.559652 2.679327
+0.956414 1.180966 1.881463 1.994332 2.316474 2.617691
+1.061791 1.571696 1.926569 2.107177 2.404155 2.525452
+1.374312 1.475896 1.678426 1.972424 2.364289 2.516531
+1.363442 1.455771 1.763156 1.970798 2.368334 2.586977
+1.423043 1.591891 1.798197 2.012780 2.388112 2.602184
+1.527265 1.605781 1.909513 2.033429 2.406683 2.593463
+1.585135 1.664508 1.918013 2.026537 2.425727 2.600924
+1.611888 1.728561 1.907667 2.034036 2.395680 2.641770
+1.463013 1.624657 1.872286 1.998243 2.487821 2.662465
+1.507075 1.597912 1.893748 1.997011 2.535979 2.672459
+1.502401 1.618027 1.888560 2.024162 2.581852 2.656536
+1.553117 1.639479 1.918920 2.034284 2.576859 2.655677
+1.577358 1.648261 1.958093 2.053413 2.567886 2.656516
+1.595375 1.654628 1.997767 2.099746 2.531642 2.675206
+1.621639 1.704007 1.957750 2.074637 2.584314 2.660506
+1.618433 1.711386 1.954786 2.067454 2.533767 2.695229
+1.617851 1.716314 1.949677 2.103360 2.635944 2.686892
+1.649322 1.746309 1.901606 2.064352 2.606774 2.690238
+1.635059 1.769603 1.904617 2.019099 2.607597 2.713325
+1.645565 1.779500 1.868948 1.965332 2.592154 2.714895
+1.686573 1.757504 1.858066 1.922036 2.505271 2.698890
+1.612716 1.703234 1.831053 1.925901 2.373806 2.613684
+1.244351 1.409563 1.713462 1.967702 2.351463 2.537356
+1.269988 1.387301 1.640967 1.991832 2.324911 2.501768
+1.305349 1.455772 1.788777 2.091229 2.487237 2.614726
+1.413862 1.518807 1.888520 2.252275 2.448086 2.594722
+1.409418 1.591460 1.944717 2.196924 2.518393 2.638233
+1.399142 1.703314 1.966146 2.224863 2.616908 2.734082
+1.375311 1.636377 2.061764 2.292420 2.586624 2.705744
+1.394667 1.733415 2.073598 2.297154 2.573824 2.672888
+1.366082 1.738611 2.016634 2.285662 2.605490 2.693517
+1.360620 1.601685 1.967966 2.194839 2.564848 2.657918
+1.354700 1.471541 1.990171 2.165439 2.569000 2.679116
+1.319372 1.403922 2.030220 2.115007 2.452702 2.635911
+1.303257 1.374731 1.975040 2.111171 2.369818 2.660606
+1.325790 1.431051 2.036171 2.113943 2.475995 2.685073
+1.307478 1.510363 2.117703 2.179166 2.554579 2.695776
+1.311427 1.548305 2.128351 2.279725 2.551702 2.645499
+1.293775 1.442228 2.115561 2.289555 2.415905 2.531210
+1.278672 1.697114 2.092498 2.199540 2.368518 2.561138
+1.292641 1.867932 2.128826 2.206329 2.450839 2.551778
+1.234857 1.631071 2.143705 2.304460 2.491014 2.565728
+1.219953 1.367565 2.149802 2.218488 2.495215 2.635299
+1.208902 1.484837 2.180300 2.276690 2.526332 2.626732
+1.165264 1.458241 2.155590 2.227283 2.490182 2.596799
+1.116188 1.492178 2.177271 2.241905 2.532331 2.620529
+1.096897 1.524925 2.093489 2.345253 2.480356 2.611159
+1.043785 1.369028 2.229277 2.306648 2.527431 2.613026
+1.080719 1.336126 2.135541 2.240613 2.463443 2.634282
+1.126263 1.502538 2.065329 2.274832 2.512833 2.588250
+1.199125 1.448000 2.040575 2.216856 2.449127 2.544297
+1.244303 1.540831 2.036533 2.174834 2.470267 2.580345
+1.277190 1.574057 2.066371 2.150365 2.508540 2.611728
+1.341754 1.576876 2.031475 2.120651 2.496164 2.575343
+1.335444 1.541598 1.994337 2.108804 2.518844 2.622948
+1.351719 1.543708 2.003315 2.075354 2.579158 2.656631
+1.359299 1.470533 1.968461 2.042323 2.565151 2.664841
+1.368199 1.433218 1.983774 2.044947 2.438603 2.670598
+1.351177 1.426131 1.991290 2.087726 2.430748 2.616370
+1.349866 1.483300 2.000270 2.242826 2.535909 2.629047
+1.322061 1.596777 2.113123 2.408146 2.548980 2.625263
+1.381288 1.648758 2.192458 2.378361 2.579516 2.654496
+1.372134 1.542663 2.062546 2.307310 2.475587 2.580621
+1.363570 1.463481 1.864764 2.288459 2.467800 2.571685
+1.335793 1.536300 1.886159 2.221871 2.543381 2.670529
+1.259757 1.393352 1.604761 1.934288 2.430512 2.509599
+1.224722 1.349648 1.481936 1.836832 2.384963 2.463134
+1.253661 1.369206 1.505507 1.994342 2.366061 2.454562
+1.250448 1.372217 1.563439 2.133283 2.391531 2.461107
+1.298984 1.412532 1.560005 2.162846 2.475577 2.551467
+1.308701 1.487231 1.616571 2.140891 2.422519 2.527844
+1.362265 1.509740 1.691137 2.151850 2.425060 2.504008
+1.415186 1.573817 1.726343 2.145690 2.423615 2.518947
+1.468304 1.624569 1.768003 2.107079 2.433687 2.501879
+1.474213 1.645172 1.829377 2.150471 2.330539 2.454132
+1.488731 1.662220 1.853177 2.160434 2.390722 2.507469
+1.515371 1.685102 1.820897 2.090815 2.477135 2.541320
+1.533941 1.681022 1.911151 2.101052 2.431211 2.507421
+1.547022 1.762747 1.905315 2.057302 2.369967 2.496458
+1.524747 1.707503 1.880853 2.145136 2.331290 2.443298
+1.532670 1.689464 1.838440 2.066707 2.352074 2.487585
+1.449082 1.639914 1.786524 2.047043 2.328788 2.426218
+1.393415 1.607003 1.752128 2.065963 2.381000 2.473775
+1.234921 1.620384 1.751709 2.079353 2.400969 2.471820
+1.128649 1.589193 1.725978 2.097814 2.421776 2.507176
+1.205122 1.491109 1.707033 2.143134 2.407676 2.489596
+1.105985 1.524092 1.740260 2.142524 2.422755 2.532710
+1.146867 1.428089 1.698792 2.100330 2.423332 2.545496
+1.116015 1.351902 1.754307 2.146023 2.411698 2.527537
+1.178509 1.306840 1.824109 2.272040 2.452886 2.546314
+1.386046 1.686532 2.010818 2.148686 2.439205 2.570934
+1.334381 1.674050 1.962490 2.108725 2.403922 2.587496
+1.309542 1.519433 2.030598 2.119732 2.436082 2.620801
+1.199624 1.425192 2.037889 2.161327 2.493314 2.639529
+0.913804 1.251727 2.055079 2.176873 2.416854 2.644928
+0.822137 1.067331 2.019119 2.216592 2.395557 2.658189
+0.859923 0.985874 1.904285 2.160589 2.433708 2.639822
+0.906761 1.140617 2.010505 2.146239 2.469640 2.644134
+0.950845 1.253958 2.039526 2.095898 2.600275 2.711094
+0.953879 1.245319 1.985465 2.133152 2.543655 2.613003
+1.031672 1.286594 1.974619 2.037126 2.541018 2.690276
+1.051598 1.373163 1.905246 2.009638 2.495552 2.674053
+1.088262 1.297396 1.898694 2.018578 2.508840 2.690510
+1.146698 1.282269 1.930714 2.010155 2.439408 2.647009
+1.157205 1.343846 1.930823 2.029125 2.368152 2.598000
+1.247348 1.432742 1.942594 2.067451 2.392833 2.554304
+1.297617 1.516021 1.993391 2.079273 2.439458 2.548273
+1.386254 1.483598 1.965854 2.071612 2.444793 2.594366
+1.429692 1.499865 1.880633 2.074107 2.346203 2.604251
+1.569133 1.644482 1.942763 2.045196 2.370694 2.589367
+1.696361 1.745617 1.980943 2.093662 2.433481 2.583667
+1.694840 1.801151 1.961027 2.068322 2.452636 2.638290
+1.619793 1.785586 1.919626 2.055816 2.238163 2.498763
+1.223689 1.621225 1.791717 1.898693 2.161669 2.499947
+1.144413 1.452915 1.780893 1.866745 2.214208 2.494268
+1.135538 1.495124 1.820776 1.894356 2.115005 2.441578
+1.131378 1.535817 1.737318 1.842419 2.021638 2.425946
+1.212645 1.312165 1.752907 1.889323 2.108905 2.469701
+1.253951 1.352407 1.652652 1.960954 2.394436 2.568676
+1.362676 1.580790 1.913319 2.212617 2.381597 2.528987
+1.417331 1.582049 1.977630 2.237995 2.413078 2.580292
+1.383161 1.603552 2.016139 2.210126 2.449048 2.587234
+1.442111 1.544212 1.938946 2.141876 2.494998 2.590164
+1.381730 1.579156 1.982000 2.138775 2.485780 2.620572
+1.361593 1.597812 1.964935 2.138121 2.542610 2.622470
+1.360664 1.614689 2.010781 2.161500 2.460448 2.583897
+1.390092 1.628646 1.963826 2.130557 2.477732 2.613382
+1.346169 1.648499 2.082367 2.321708 2.555952 2.649424
+1.440422 1.742439 2.007648 2.208244 2.450993 2.577906
+1.444825 1.695062 2.026868 2.210477 2.414028 2.532766
+1.345541 1.589166 1.955423 2.129306 2.409889 2.543165
+1.400043 1.481922 1.947067 2.110259 2.313164 2.531167
+1.384776 1.484787 1.983872 2.107142 2.360088 2.585480
+1.429185 1.514936 2.019660 2.137662 2.329551 2.585292
+1.450546 1.518321 2.010034 2.102797 2.401692 2.603278
+1.441363 1.525406 1.964971 2.076719 2.376014 2.594808
+1.464787 1.521553 1.968987 2.077867 2.444963 2.621082
+1.486696 1.573684 2.001845 2.108515 2.433771 2.626158
+1.471032 1.543603 1.991659 2.111714 2.473307 2.645459
+1.415271 1.524488 2.012703 2.095751 2.458820 2.642016
+1.407514 1.501486 2.050311 2.156204 2.480187 2.623271
+1.376118 1.459583 2.009938 2.169415 2.480196 2.642689
+1.345946 1.472883 2.073124 2.184863 2.486126 2.610362
+1.306365 1.438379 2.090496 2.213143 2.554203 2.683954
+1.219262 1.423037 2.090917 2.170494 2.559623 2.668211
+1.180469 1.408080 1.935170 2.088177 2.548134 2.639438
+1.209541 1.528929 1.887266 1.961882 2.483440 2.649342
+1.219923 1.521384 1.939175 1.988023 2.460034 2.673476
+1.198754 1.474098 1.859112 1.981042 2.395346 2.719202
+1.118408 1.504845 1.897944 2.002376 2.242870 2.598523
+1.018525 1.459894 1.746590 2.051954 2.324856 2.458848
+0.866990 1.387782 1.654105 1.799741 2.325792 2.407380
+0.862252 1.365828 1.705762 1.802245 2.416352 2.493849
+0.928394 1.546454 1.716680 1.877069 2.379724 2.524594
+1.083354 1.487338 1.801149 2.005692 2.321736 2.558733
+1.057425 1.339797 1.834422 1.934601 2.279625 2.530701
+0.954787 1.140996 1.792870 1.891796 2.342908 2.492038
+0.996853 1.130036 1.792153 1.895409 2.236238 2.403350
+0.920268 1.069492 1.874858 2.072086 2.335228 2.486570
+0.954214 1.081065 1.827324 2.079149 2.238820 2.508120
+0.894487 1.013841 1.716536 2.018446 2.175347 2.482241
+0.842005 0.979634 1.644526 1.945897 2.271025 2.438632
+0.955710 1.090003 1.754054 1.967070 2.127836 2.448885
+0.954385 1.094473 1.727553 2.005579 2.266567 2.514397
+1.025620 1.137605 1.787527 2.002076 2.336896 2.511839
+1.013813 1.175105 1.881936 2.016643 2.345862 2.445716
+1.082667 1.227297 1.923243 2.022783 2.402376 2.520967
+1.118115 1.224136 1.824448 1.961745 2.245832 2.515829
+1.146448 1.298991 1.872929 1.995465 2.371727 2.526896
+1.188552 1.310653 1.902213 1.996780 2.290374 2.520538
+1.309924 1.416529 1.878448 2.050089 2.224176 2.387793
+1.394764 1.506270 1.934888 2.056817 2.271193 2.453341
+1.377933 1.572642 1.990697 2.083570 2.381595 2.606523
+1.444019 1.689297 1.997464 2.153207 2.361127 2.507701
+1.515035 1.642770 1.929088 2.159339 2.335507 2.497838
+1.540079 1.708314 1.883825 2.094981 2.398624 2.570098
+1.600911 1.698511 1.881481 2.085171 2.451013 2.653738
+1.502633 1.756061 2.040722 2.163397 2.376168 2.548669
+1.532107 1.855341 1.993840 2.139554 2.302488 2.430987
+1.484859 1.822055 1.964302 2.135961 2.337023 2.472337
+1.536688 1.766917 1.951249 2.090524 2.324175 2.529206
+1.582282 1.723852 1.912068 2.069366 2.302944 2.473896
+1.499712 1.593288 1.912697 2.034098 2.366553 2.553790
+1.434200 1.540709 1.867569 1.989167 2.323715 2.539399
+1.189101 1.500824 1.763417 1.976198 2.137279 2.441179
+1.165922 1.470178 1.772997 1.927098 2.088007 2.304301
+1.250154 1.600421 1.818068 1.922113 2.080252 2.241814
+1.122694 1.628796 1.814409 1.932949 2.099304 2.418672
+1.019615 1.510656 1.850726 1.995621 2.130205 2.457063
+0.958176 1.639680 1.840433 1.956534 2.104283 2.279028
+1.010543 1.537512 1.772221 1.930517 2.101622 2.248506
+0.904371 1.505016 1.664330 1.827875 2.278031 2.348418
+1.067733 1.454537 1.686858 1.803459 2.384372 2.499789
+1.262873 1.516004 1.882748 1.975559 2.353571 2.519731
+1.560637 1.698959 1.921539 2.000060 2.540292 2.605234
+1.665625 1.744091 1.995924 2.104003 2.538942 2.620162
+1.615168 1.748503 2.024112 2.126056 2.408165 2.614133
+1.678025 1.752954 2.027903 2.146564 2.382374 2.568508
+1.580352 1.680273 1.997415 2.122458 2.459846 2.587827
+1.590082 1.692050 1.934784 2.095757 2.552980 2.625876
+1.539000 1.620243 1.920765 2.031604 2.481670 2.592695
+1.408796 1.511786 1.744250 1.896588 2.412019 2.515579
+1.320558 1.487993 1.754964 1.896907 2.437159 2.563184
+1.174869 1.524851 1.708181 1.962955 2.513779 2.581010
+1.287639 1.559567 1.903084 2.105175 2.450979 2.599458
+1.224033 1.507999 1.922793 2.076370 2.372907 2.581210
+1.163218 1.444961 1.734673 2.020179 2.322152 2.541566
+1.212255 1.448003 1.638494 2.031919 2.229345 2.399467
+1.108889 1.283327 1.481151 1.907068 2.100013 2.293484
+1.155218 1.290372 1.476717 1.688065 2.089220 2.181765
+1.171472 1.290390 1.556515 1.825992 2.018143 2.243494
+1.149886 1.282652 1.601900 1.745296 2.110780 2.409060
+1.223914 1.360718 1.650069 1.792936 2.265100 2.370934
+1.254374 1.404539 1.706674 1.854649 2.276473 2.394690
+1.225833 1.442107 1.766130 1.924123 2.292396 2.394677
+1.211141 1.461886 1.804549 1.927018 2.361986 2.453285
+1.218638 1.405782 1.809530 1.914204 2.318449 2.520048
+1.222942 1.394674 1.840107 1.932398 2.391674 2.503193
+1.206898 1.372866 1.842954 1.943799 2.424465 2.578763
+1.246306 1.423826 1.866209 1.962415 2.436055 2.595659
+1.270919 1.455901 1.888055 1.976335 2.469281 2.582811
+1.198265 1.323940 1.880236 1.949408 2.471659 2.644805
+1.174323 1.293200 1.765612 2.019282 2.282243 2.576238
+1.141730 1.383190 1.882826 2.126532 2.453044 2.611191
+1.483342 1.650728 2.043593 2.193798 2.517271 2.622915
+1.446069 1.621898 1.999609 2.103532 2.493478 2.581923
+1.414671 1.630237 1.945678 2.061773 2.500655 2.588950
+1.438432 1.615586 1.903350 2.013028 2.426105 2.613642
+1.556674 1.623119 1.875461 1.972308 2.366695 2.629218
+1.466504 1.638319 1.796576 1.959267 2.457617 2.603231
+1.308284 1.481394 1.730539 1.979266 2.332265 2.538090
+1.301646 1.413738 1.674441 1.933375 2.143487 2.508142
+1.318907 1.416559 1.751644 1.913438 2.294089 2.555125
+1.324509 1.425623 1.844923 1.947411 2.375384 2.597366
+1.266998 1.359728 1.849155 1.950839 2.370723 2.579301
+1.162697 1.344305 1.906935 1.986568 2.470580 2.583422
+1.115998 1.365829 1.948029 2.040077 2.461135 2.583597
+1.061798 1.350291 2.006280 2.080459 2.451632 2.526961
+1.024331 1.233571 1.989411 2.085049 2.387181 2.495816
+0.962287 1.219238 1.967000 2.089191 2.424659 2.599861
+0.881533 1.356828 2.047429 2.155394 2.409074 2.508754
+0.856010 1.217716 2.008528 2.111528 2.424806 2.537738
+0.774065 0.965055 1.874139 2.035878 2.251024 2.527966
+0.820344 0.990331 1.960958 2.242123 2.349553 2.535465
+0.846158 1.062894 1.972506 2.169152 2.353165 2.556086
+0.748812 1.063441 1.949952 2.066846 2.364509 2.602003
+0.855725 1.158383 2.008420 2.144140 2.328495 2.600481
+0.862076 1.188230 1.906456 2.191351 2.368506 2.542645
+0.814218 1.194007 2.086397 2.156864 2.482953 2.574777
+0.811087 1.320952 2.038259 2.112835 2.508878 2.598939
+0.967874 1.191718 2.049318 2.146525 2.422668 2.566778
+1.008026 1.234198 2.040908 2.121036 2.480150 2.609085
+1.118175 1.312265 1.961423 2.071245 2.409323 2.600531
+1.189338 1.302425 1.961961 2.063211 2.432115 2.545303
+1.253885 1.371226 1.931879 2.030140 2.387565 2.558949
+1.307301 1.398036 1.910989 2.006938 2.409438 2.577142
+1.330085 1.468465 1.908521 2.012222 2.418015 2.537683
+1.367992 1.492291 1.942021 2.036750 2.498866 2.581003
+1.368367 1.443433 1.947482 2.013180 2.486344 2.585241
+1.418284 1.496850 1.933442 2.024630 2.473682 2.594036
+1.443886 1.551220 1.904909 2.018103 2.456717 2.542868
+1.473689 1.587097 1.899829 2.079006 2.421501 2.584477
+1.424674 1.611334 1.974517 2.142720 2.402882 2.620760
+1.431487 1.622660 1.940232 2.125436 2.429652 2.581851
+1.484538 1.690581 1.921860 2.109101 2.474401 2.607828
+1.498136 1.751579 1.925730 2.039135 2.440519 2.616180
+1.505248 1.789182 1.994666 2.114126 2.408417 2.599889
+1.609869 1.793035 1.986226 2.160600 2.519572 2.593245
+1.562825 1.739913 1.974184 2.143221 2.539588 2.620088
+1.650259 1.723964 2.002949 2.150399 2.532100 2.600746
+1.584628 1.665482 1.833853 1.979658 2.511168 2.576182
+1.547562 1.665631 1.805111 1.930451 2.428670 2.548606
+1.499078 1.595123 1.700269 1.824190 2.376924 2.575480
+1.300837 1.552954 1.664576 1.791707 2.488304 2.561078
+1.168605 1.311953 1.668583 1.872905 2.413570 2.493285
+1.047458 1.249963 1.699886 1.914183 2.417032 2.496381
+0.948776 1.275594 1.738944 1.998684 2.312154 2.462020
+0.921081 1.311946 1.775244 1.895491 2.382160 2.528440
+0.811311 1.125217 1.745194 2.094737 2.326109 2.511883
+0.796518 1.060230 1.740129 2.060503 2.179506 2.385501
+0.868836 1.153353 1.792833 1.945638 2.125498 2.248001
+0.915536 1.218160 1.818910 2.068347 2.243402 2.348648
+0.966595 1.301606 1.895255 2.111957 2.248646 2.389247
+0.995849 1.442084 1.952071 2.066120 2.240125 2.338587
+1.056392 1.372214 1.984171 2.119327 2.271702 2.372743
+1.098400 1.324164 1.781533 2.082856 2.218804 2.344318
+1.039157 1.356474 1.820178 2.114625 2.346728 2.450389
+0.988689 1.293884 1.916348 2.088201 2.362497 2.481270
+1.104406 1.230679 1.939434 2.122401 2.254811 2.377705
+1.086105 1.174481 1.826346 2.111318 2.237689 2.471667
+1.069802 1.206486 1.845381 2.118634 2.471087 2.575405
+1.074963 1.342794 1.955309 2.147713 2.511467 2.589270
+1.149198 1.418813 1.887043 1.966968 2.472616 2.587246
+1.455749 1.669829 1.964104 2.175182 2.469990 2.605009
+1.418548 1.603566 1.964426 2.175678 2.466765 2.583333
+1.389392 1.601163 1.925746 2.131857 2.442025 2.574229
+1.415333 1.507338 1.911262 2.087139 2.535199 2.629580
+1.382483 1.453710 1.872292 1.955406 2.554343 2.658507
+1.392944 1.482296 1.838526 1.928577 2.473732 2.633718
+1.390456 1.463044 1.839906 1.922012 2.514942 2.698788
+1.339376 1.470118 1.858751 1.959522 2.539427 2.686382
+1.353776 1.541029 1.822546 2.022164 2.542215 2.677200
+1.350868 1.631877 1.918792 2.183528 2.501087 2.617310
+1.407644 1.669128 2.000740 2.224226 2.522804 2.634897
+1.433780 1.586913 1.999627 2.192922 2.535981 2.626121
+1.413876 1.639426 1.952196 2.170695 2.501106 2.610591
+1.505388 1.613685 1.991590 2.214459 2.487873 2.612841
+1.409245 1.563694 2.048043 2.154145 2.483727 2.642180
+1.411023 1.646699 1.983177 2.152550 2.568807 2.661248
+1.384745 1.603808 1.934487 2.141949 2.507642 2.630050
+1.366120 1.551337 1.999561 2.177467 2.489112 2.596761
+1.355542 1.635015 2.008420 2.162675 2.465273 2.661406
+1.453972 1.673697 2.037857 2.180201 2.615971 2.709278
+1.369538 1.696466 1.999789 2.084847 2.482775 2.666286
+1.349740 1.462313 1.966717 2.051722 2.472616 2.652615
+1.327312 1.437762 1.928517 2.006392 2.505810 2.658921
+1.341350 1.419153 1.921202 1.991463 2.530825 2.613585
+1.342697 1.505329 1.946926 2.029431 2.538224 2.635583
+1.392743 1.535099 1.936104 2.024567 2.527279 2.614258
+1.432564 1.543790 1.951854 2.049855 2.546244 2.623711
+1.452940 1.569432 1.932369 2.037247 2.558693 2.638096
+1.467999 1.597453 1.920306 2.018574 2.536219 2.622824
+1.486806 1.569654 1.875855 1.966065 2.536740 2.631905
+1.454618 1.578126 1.811620 1.974659 2.537513 2.606334
+1.418040 1.507665 1.783572 1.893001 2.551797 2.628991
+1.264140 1.474380 1.770586 1.898927 2.524762 2.594073
+1.118340 1.456671 1.734720 1.996589 2.412285 2.519146
+1.096432 1.603123 1.808391 2.012238 2.409620 2.544361
+0.976303 1.473740 1.759171 1.855828 2.412929 2.483947
+0.990184 1.390703 1.710711 1.831672 2.377092 2.454935
+1.056900 1.387366 1.783109 1.873514 2.401419 2.486425
+0.989786 1.452622 1.851566 1.945924 2.403454 2.482939
+1.112084 1.364820 1.770002 1.921998 2.290405 2.437297
+1.096250 1.336388 1.741855 1.968572 2.211613 2.362493
+1.000030 1.346185 1.704531 1.966852 2.277389 2.389374
+1.027901 1.174070 1.793005 2.026854 2.178200 2.387232
+1.056882 1.167504 1.861000 2.204421 2.351246 2.485631
+1.075972 1.226420 1.997644 2.196176 2.330099 2.494137
+1.147221 1.258128 1.958667 2.258550 2.387749 2.552119
+1.162811 1.290567 2.052795 2.201829 2.424621 2.560484
+1.147890 1.265733 2.025675 2.130794 2.496878 2.620259
+1.239563 1.315734 2.018377 2.123513 2.463946 2.569207
+1.181131 1.358942 1.942155 2.159833 2.458701 2.593961
+1.247455 1.386435 1.898250 1.999009 2.446020 2.542764
+1.227695 1.504889 1.817998 1.908019 2.213334 2.552228
+1.201972 1.577872 1.771276 1.873354 2.061263 2.535817
+1.306230 1.516310 1.819234 1.923423 2.382025 2.582568
+1.505719 1.585654 1.949330 2.046203 2.448307 2.615962
+1.623749 1.698728 2.009543 2.108007 2.461522 2.647903
+1.690861 1.764294 2.036097 2.175502 2.515253 2.616822
+1.715336 1.828294 2.078551 2.252209 2.483666 2.607649
+1.659970 1.807170 1.975009 2.255594 2.481341 2.589617
+1.734824 1.850216 2.012044 2.276744 2.519359 2.608181
+1.635768 1.862548 1.956456 2.328743 2.568869 2.632471
+1.616355 1.825398 1.949523 2.281216 2.560861 2.641804
+1.592472 1.804360 1.927158 2.167339 2.577510 2.646873
+1.606484 1.895095 1.983153 2.112452 2.477608 2.576959
+1.708493 1.835068 1.966711 2.127238 2.427571 2.543077
+1.691093 1.889580 1.986069 2.206774 2.522399 2.601798
+1.702442 1.902120 2.076380 2.216219 2.484843 2.603543
+1.329491 1.542588 1.875436 2.105532 2.385234 2.536630
+1.321384 1.474161 1.932268 2.152505 2.374420 2.506710
+1.277750 1.458580 1.963094 2.182377 2.417003 2.558654
+1.208016 1.418710 2.009739 2.138531 2.396782 2.554506
+1.198910 1.299925 1.983625 2.150128 2.296124 2.505944
+1.250344 1.361156 2.010558 2.195944 2.340984 2.500873
+1.308664 1.585162 2.106341 2.214164 2.402673 2.635894
+1.330165 1.494630 2.141901 2.235810 2.459582 2.649465
+1.296306 1.434105 2.098086 2.204131 2.355208 2.600113
+1.309619 1.402978 1.892542 2.184955 2.333605 2.513160
+1.269067 1.491839 1.958963 2.174572 2.324689 2.543667
+1.434975 1.628849 1.981273 2.247282 2.476397 2.593980
+1.459644 1.650080 2.024368 2.267723 2.546314 2.675203
+1.381486 1.703195 2.138905 2.295559 2.545762 2.642527
+1.441842 1.700585 2.197906 2.276293 2.468211 2.694954
+1.539669 1.999668 2.206532 2.351484 2.651231 2.734825
+1.589576 1.926407 2.173457 2.256196 2.633242 2.707677
+1.434262 1.859373 2.141950 2.211447 2.511783 2.628376
+1.326814 1.596573 2.024769 2.115813 2.426136 2.609340
+1.229072 1.325550 1.838698 2.013045 2.471300 2.639281
+1.230813 1.329059 1.872619 1.964510 2.444752 2.594694
+1.193705 1.426297 1.898594 2.039364 2.502714 2.581046
+1.175637 1.473287 1.912423 2.002740 2.476222 2.606851
+1.099269 1.443896 1.892457 1.997567 2.522081 2.611086
+1.113739 1.439098 1.912268 2.000476 2.462769 2.559343
+1.085510 1.469634 1.914465 2.064613 2.427917 2.512412
+1.052481 1.501205 1.918797 1.999794 2.493684 2.571708
+1.043597 1.331616 1.927947 1.989186 2.445730 2.578082
+1.051981 1.200390 1.938627 2.026811 2.446750 2.629884
+0.978672 1.083042 1.868777 2.133583 2.430141 2.580267
+0.904772 1.105214 1.960566 2.064948 2.362564 2.604875
+0.859439 1.084629 1.901705 2.033000 2.276166 2.574716
+0.948943 1.043554 1.855644 2.050857 2.444431 2.661478
+0.974338 1.126459 1.927321 2.020910 2.455487 2.559782
+0.995629 1.175887 1.937743 2.013680 2.378974 2.617290
+1.001312 1.224390 1.901702 1.976467 2.425878 2.574844
+0.985969 1.282601 1.886614 2.032451 2.455957 2.599528
+0.927590 1.320448 1.924006 2.012174 2.498308 2.599681
+1.007942 1.383963 1.921628 2.007624 2.507570 2.607500
+0.972512 1.446775 1.920365 2.013492 2.490207 2.576492
+0.951123 1.452036 1.889861 1.987269 2.421483 2.562217
+0.924342 1.369953 1.851744 1.942740 2.475661 2.544282
+0.882605 1.301666 1.850813 2.032498 2.364632 2.541824
+0.933888 1.368996 1.943109 2.023849 2.405442 2.530330
+0.927916 1.112379 1.847430 1.979093 2.255596 2.563992
+1.031936 1.249132 1.833165 1.925221 2.310315 2.520141
+0.934046 1.239886 1.909603 2.008149 2.372869 2.548965
+0.984297 1.220031 1.823788 1.947602 2.264359 2.478653
+0.933366 1.278980 1.860469 1.942999 2.289801 2.465670
+0.983115 1.227707 1.842104 2.047699 2.272651 2.531979
+0.953311 1.245822 1.849685 1.945142 2.289569 2.572282
+0.994609 1.303464 1.868144 1.971560 2.372435 2.585257
+0.986061 1.364094 1.852132 1.917821 2.435113 2.633873
+0.975486 1.248848 1.848797 1.934434 2.402023 2.574203
+1.008388 1.304679 1.804310 1.888508 2.369473 2.598230
+0.999393 1.329937 1.901438 1.994378 2.397503 2.504548
+0.922186 1.321538 1.851082 1.962056 2.382159 2.472985
+0.897224 1.382187 1.780842 1.921734 2.359590 2.448091
+0.859516 1.447371 1.732311 1.881193 2.295231 2.380849
+0.986347 1.601641 1.752386 1.966362 2.314384 2.459101
+1.265264 1.616535 1.811273 2.097139 2.371242 2.550361
+1.318958 1.600426 1.755641 2.029814 2.329188 2.493144
+1.209901 1.470135 1.670187 1.970732 2.416208 2.523420
+1.122232 1.308395 1.457114 1.720231 2.384259 2.470421
+1.077675 1.245511 1.366478 1.664281 2.327344 2.419196
+1.075445 1.228131 1.365376 1.558947 2.238585 2.324563
+1.044502 1.215785 1.325993 1.645187 2.148642 2.225749
+0.955863 1.150609 1.283133 1.492306 2.177576 2.266677
+0.909204 1.045108 1.166160 1.320593 2.215965 2.352846
+0.960368 1.103540 1.278352 1.467726 2.260152 2.460237
+1.010220 1.186777 1.290055 1.578425 2.388733 2.500317
+1.020144 1.135718 1.239343 1.388838 2.438182 2.563922
+1.082493 1.206954 1.347455 1.490039 2.404819 2.494617
+1.144114 1.278638 1.434725 1.567887 2.322768 2.424800
+1.274296 1.348789 1.515602 1.632221 2.360105 2.552789
+1.301328 1.390629 1.638492 1.764907 2.347961 2.576115
+1.358515 1.444452 1.724492 1.843715 2.478143 2.574552
+1.399712 1.513306 1.791713 1.902169 2.495815 2.581592
+1.448866 1.534750 1.821506 1.931492 2.517823 2.622859
+1.438398 1.530057 1.831437 1.999329 2.531929 2.623280
+1.511918 1.581087 1.927484 2.041399 2.573287 2.663469
+1.535380 1.608310 1.924231 2.048796 2.546746 2.681650
+1.544368 1.620413 1.980425 2.068130 2.477398 2.626652
+1.558461 1.643007 2.024613 2.121014 2.451868 2.639494
+1.524202 1.613947 2.005898 2.115477 2.429090 2.663085
+1.504519 1.590381 1.966356 2.072628 2.376901 2.621094
+1.439395 1.512336 1.950354 2.058564 2.276407 2.573036
+1.315215 1.400050 1.854752 1.957633 2.246197 2.576501
+1.288117 1.488904 1.945571 2.024839 2.439848 2.605685
+1.436278 1.667254 2.056847 2.146443 2.548238 2.661743
+1.417389 1.819841 2.083572 2.220278 2.606693 2.690863
+1.373599 1.963014 2.144565 2.274057 2.547389 2.638900
+1.320367 1.918635 2.063208 2.237723 2.415847 2.517654
+1.223778 1.619753 1.890594 2.107915 2.520999 2.629701
+1.018748 1.427668 1.917566 2.001782 2.435507 2.564351
+1.026252 1.377048 1.949170 2.039209 2.393769 2.530053
+1.009988 1.472847 1.998049 2.079876 2.484961 2.553950
+1.053267 1.468372 2.016120 2.129309 2.456623 2.564128
+1.101072 1.355268 2.010441 2.107467 2.395605 2.537748
+1.132796 1.391658 2.016574 2.114099 2.497623 2.585099
+1.173305 1.443009 1.970633 2.104863 2.447883 2.535937
+1.209478 1.384097 1.972240 2.069587 2.457494 2.573686
+1.242419 1.453561 1.983731 2.068419 2.471041 2.593609
+1.320388 1.463651 1.997825 2.082334 2.472034 2.605892
+1.389516 1.477732 1.978692 2.094038 2.480170 2.644445
+1.413743 1.526085 1.963751 2.113919 2.403846 2.654427
+1.519419 1.592852 1.919458 2.024494 2.301172 2.668892
+1.513663 1.600129 1.922007 2.105104 2.278322 2.523416
+1.481852 1.659944 1.913552 2.049439 2.272255 2.493787
+1.567545 1.659167 1.930647 2.071517 2.312595 2.564270
+1.550890 1.677657 1.863928 2.010128 2.223475 2.520007
+1.572772 1.683020 1.863047 2.002198 2.320378 2.560791
+1.621943 1.734050 1.920642 2.062932 2.335107 2.576252
+1.631487 1.697136 1.952883 2.056578 2.459627 2.652858
+1.594706 1.671490 1.936091 2.013301 2.430776 2.669632
+1.601444 1.668704 1.945495 2.037168 2.503369 2.682121
+1.587570 1.664898 1.944621 2.032989 2.569757 2.703408
+1.556417 1.631245 1.930707 2.040513 2.453873 2.665177
+1.487851 1.565634 1.892869 2.011729 2.393945 2.647118
+1.406012 1.520184 1.791646 1.987880 2.289334 2.602762
+1.358221 1.436040 1.818480 1.957084 2.309801 2.605784
+1.309339 1.405329 1.835697 2.076369 2.340807 2.613062
+1.303792 1.415614 1.985149 2.129488 2.469355 2.643119
+1.358952 1.437733 1.988826 2.127374 2.537981 2.656471
+1.333866 1.480460 1.950069 2.122437 2.431168 2.587133
+1.384528 1.539708 1.964093 2.130549 2.510449 2.652805
+1.412625 1.544436 1.947280 2.173185 2.593018 2.716637
+1.433269 1.539892 2.004125 2.201951 2.515051 2.635244
+1.447580 1.554019 2.128269 2.240167 2.470753 2.657077
+1.480647 1.609898 2.097964 2.167566 2.473701 2.700702
+1.607823 1.675959 2.023409 2.146384 2.426913 2.636247
+1.643303 1.717783 2.060655 2.197557 2.415413 2.614329
+1.737392 1.816967 2.039362 2.219707 2.422999 2.623531
+1.694258 1.799366 2.042600 2.280098 2.418626 2.583273
+1.556188 1.831866 1.985355 2.207899 2.471677 2.630819
+1.421150 1.803896 1.984581 2.123513 2.438200 2.522496
+1.327444 1.668870 1.888433 2.029945 2.224455 2.461746
+1.109824 1.562199 1.862663 1.977860 2.139552 2.328644
+1.233875 1.580797 1.854187 2.021788 2.193504 2.355917
+1.207537 1.568638 1.872908 1.986671 2.137938 2.487653
+1.179978 1.625946 1.900003 2.008135 2.231660 2.594349
+1.469842 1.717204 1.875670 2.024433 2.325463 2.488422
+1.641097 1.809779 1.926763 2.062053 2.414037 2.542900
+1.648803 1.734123 1.966905 2.086726 2.354475 2.498840
+1.605468 1.689394 2.010048 2.114211 2.407628 2.527066
+1.520887 1.628733 1.977005 2.086771 2.340162 2.489336
+1.503816 1.600587 2.039010 2.130377 2.396482 2.513742
+1.437817 1.545316 2.043931 2.188366 2.356821 2.521449
+1.445398 1.549208 1.982213 2.096659 2.328629 2.462126
+1.416417 1.504357 1.973772 2.080427 2.393479 2.543532
+1.425822 1.528083 1.995729 2.162530 2.440693 2.562510
+1.394274 1.473952 2.043537 2.149086 2.432979 2.549080
+1.373755 1.476048 2.043903 2.160251 2.345351 2.501882
+1.370183 1.443588 2.092872 2.178103 2.413056 2.590595
+1.320393 1.466374 2.036782 2.137812 2.435621 2.578912
+1.286926 1.393325 2.060733 2.200945 2.500015 2.582353
+1.323391 1.421794 2.058500 2.153930 2.495548 2.638088
+1.295313 1.393216 2.004420 2.138189 2.526374 2.641535
+1.230979 1.355132 2.047369 2.156418 2.522379 2.664129
+1.233755 1.308524 1.939495 2.097348 2.487349 2.649836
+1.227589 1.355101 1.875835 1.977538 2.319288 2.575191
+1.227369 1.507108 1.853515 2.022894 2.212431 2.576493
+1.152896 1.470513 1.830430 1.954309 2.331452 2.533253
+1.336656 1.650185 1.779214 2.043424 2.444821 2.539640
+1.455824 1.582937 2.022254 2.176680 2.481340 2.592664
+1.437625 1.556245 2.081454 2.174959 2.482445 2.614573
+1.416470 1.620886 2.033007 2.157073 2.462925 2.601588
+1.376304 1.551493 2.117213 2.198338 2.416190 2.605635
+1.442804 1.657855 2.127088 2.206301 2.344857 2.578113
+1.368110 1.538734 2.060199 2.198045 2.366884 2.622242
+1.346445 1.428338 1.980453 2.126605 2.283275 2.530611
+1.304592 1.373259 1.923523 2.096362 2.239964 2.508433
+1.298027 1.371594 1.954971 2.107512 2.349707 2.545570
+1.307177 1.416169 1.980337 2.064455 2.389102 2.588444
+1.279296 1.390782 1.959784 2.090687 2.436145 2.612606
+1.317020 1.415866 1.921874 2.071794 2.463821 2.616221
+1.294309 1.412297 1.916195 2.019201 2.484708 2.611341
+1.310051 1.407774 1.853169 2.009907 2.466493 2.645013
+1.341298 1.422330 1.885156 1.967813 2.483863 2.626324
+1.428263 1.526125 1.885115 1.978529 2.499386 2.603389
+1.501165 1.580511 1.847282 2.000494 2.465952 2.608868
+1.538510 1.625396 1.813916 1.950057 2.522899 2.620472
+1.566628 1.639602 1.771792 1.878749 2.541764 2.663693
+1.543435 1.647821 1.748616 1.822597 2.434677 2.631280
+1.623389 1.680917 1.759152 1.844539 2.521467 2.653611
+1.574857 1.663719 1.767780 1.869740 2.453335 2.658218
+1.558309 1.661251 1.793844 1.895130 2.261873 2.572330
+1.543680 1.627756 1.817671 1.921282 2.432997 2.653342
+1.493536 1.575657 1.805687 1.939448 2.470642 2.665081
+1.440050 1.513838 1.832212 1.937802 2.530248 2.702867
+1.319101 1.506232 1.823485 1.931612 2.539554 2.676703
+1.307271 1.563371 1.847930 1.951724 2.251818 2.453220
+1.336405 1.661596 1.828825 1.988331 2.189506 2.354248
+1.342922 1.598751 1.784739 1.915122 2.109991 2.450644
+1.336704 1.646363 1.800742 1.891215 2.235913 2.558506
+1.311763 1.500014 1.830220 1.945042 2.430387 2.644578
+1.266113 1.431962 1.858757 2.059148 2.590485 2.674762
+1.317779 1.419948 1.916462 2.124820 2.574729 2.668476
+1.341519 1.436167 1.968421 2.097444 2.572787 2.685098
+1.305930 1.438859 1.933746 2.036080 2.569070 2.656417
+1.279130 1.406473 1.943094 2.031719 2.530080 2.630882
+1.286005 1.410029 1.969688 2.040243 2.448573 2.651374
+1.257538 1.391063 1.966565 2.039208 2.402422 2.646794
+1.224386 1.352129 1.931370 2.006343 2.456203 2.696151
+1.296292 1.488099 1.996948 2.068189 2.594535 2.695842
+1.334566 1.607716 1.922141 2.163161 2.545921 2.679970
+1.381781 1.646772 2.037640 2.204087 2.545791 2.639326
+1.416818 1.628929 2.045931 2.209348 2.523853 2.675794
+1.431463 1.694802 1.998932 2.159531 2.522928 2.664749
+1.384236 1.622936 2.036943 2.115706 2.528893 2.633929
+1.403832 1.558362 2.027347 2.138015 2.562774 2.659379
+1.390591 1.671936 2.017942 2.164595 2.592820 2.683609
+1.357527 1.553759 2.023137 2.212306 2.420463 2.558257
+1.301715 1.465816 2.052932 2.215957 2.420685 2.548524
+1.339331 1.597053 2.035156 2.145819 2.509602 2.644137
+1.346088 1.633870 2.006920 2.114724 2.570026 2.688879
+1.358438 1.501669 1.949578 2.027633 2.479635 2.637460
+1.427991 1.533690 1.853629 1.960806 2.437544 2.588461
+1.507003 1.585812 1.864642 1.950265 2.478769 2.624546
+1.535154 1.619477 1.784602 1.926332 2.537152 2.665799
+1.499658 1.574823 1.685832 1.822553 2.533986 2.705306
+1.585485 1.642424 1.721846 1.846735 2.524494 2.710346
+1.167359 1.627213 1.768394 1.853039 2.265556 2.540517
+1.110320 1.506953 1.805632 1.881807 2.361271 2.589961
+1.066434 1.539420 1.746305 1.936119 2.127988 2.461181
+1.110995 1.565351 1.852078 1.960462 2.214924 2.497897
+1.116118 1.590687 1.879184 1.969081 2.323294 2.532966
+1.148401 1.557455 1.819964 1.963793 2.380344 2.484532
+1.092558 1.569815 1.784004 1.959241 2.324259 2.468490
+1.212996 1.578928 1.751637 1.901569 2.271773 2.386093
+1.123979 1.626268 1.758062 1.983762 2.291127 2.408000
+1.075785 1.534831 1.784777 2.041940 2.236695 2.368112
+1.118783 1.415693 1.971932 2.122755 2.330245 2.440458
+1.016087 1.334517 1.899204 2.121574 2.425143 2.543872
+1.066196 1.289419 1.948157 2.081946 2.471493 2.593822
+1.064989 1.255756 1.935973 2.036951 2.493176 2.612753
+1.049670 1.228450 1.829530 2.025060 2.431071 2.670840
+1.019627 1.313583 1.880313 1.953952 2.491693 2.642660
+1.153477 1.551900 1.909752 2.133530 2.540066 2.626465
+1.293030 1.600480 2.035687 2.166885 2.572967 2.658261
+1.409308 1.624144 1.993621 2.268493 2.527057 2.651858
+1.426397 1.681509 2.039405 2.215283 2.559060 2.681401
+1.422045 1.752644 2.027991 2.231432 2.546485 2.631238
+1.403067 1.735547 2.007077 2.202109 2.635543 2.718353
+1.364124 1.687363 2.011927 2.293629 2.640697 2.705256
+1.328058 1.608269 1.989851 2.364958 2.590564 2.689451
+1.333592 1.644867 2.130503 2.308577 2.644140 2.732807
+1.405236 1.665965 2.123365 2.315861 2.656941 2.732874
+1.435372 1.679544 2.019100 2.254404 2.596082 2.674056
+1.041025 1.476515 1.923322 2.290557 2.592337 2.673623
+0.818396 1.189747 2.051367 2.233382 2.417100 2.622567
+0.745703 1.240251 2.139256 2.224179 2.476418 2.558791
+0.786217 1.296744 2.004359 2.245816 2.548718 2.631400
+0.781573 1.122340 1.875748 2.277284 2.459421 2.557207
+0.697586 1.327149 2.097985 2.173556 2.574671 2.693605
+0.773107 1.393007 1.971171 2.270220 2.591495 2.651543
+0.799951 1.252666 1.928383 2.211233 2.577718 2.683817
+0.737528 1.237907 1.827160 2.110526 2.476303 2.627671
+0.896067 1.421355 1.841161 2.104821 2.432869 2.585719
+0.920446 1.418578 1.943416 2.252701 2.491235 2.623110
+0.905094 1.284731 1.843688 2.269109 2.479541 2.595905
+1.049549 1.447497 1.841173 2.160358 2.575747 2.655700
+1.282800 1.445416 1.901230 2.290173 2.581640 2.678726
+1.174710 1.517021 1.867926 2.176617 2.547483 2.640154
+1.241259 1.518496 1.936773 2.208770 2.521322 2.619833
+1.321929 1.540199 1.998528 2.205769 2.605663 2.707912
+1.303802 1.622926 1.880392 2.189485 2.588909 2.669966
+1.360827 1.658553 1.903323 2.178010 2.554280 2.634772
+1.385461 1.623312 1.959095 2.257739 2.605390 2.694616
+1.467954 1.628168 2.003097 2.348920 2.596096 2.674558
+1.411837 1.691393 1.947010 2.259218 2.526145 2.615112
+1.415256 1.697464 2.003104 2.284290 2.526236 2.643365
+1.365343 1.610187 2.022103 2.171703 2.557595 2.642236
+1.343948 1.630769 2.040836 2.261714 2.477921 2.647359
+1.333580 1.630378 2.031205 2.210871 2.504057 2.623327
+1.344121 1.704685 2.065813 2.192571 2.541365 2.658520
+1.439884 1.666588 2.082726 2.206006 2.636341 2.699174
+1.344355 1.655936 2.026852 2.227832 2.565868 2.661265
+1.299677 1.585295 1.961552 2.231139 2.599559 2.677599
+1.184434 1.441654 1.888542 2.255409 2.554664 2.625508
+1.446570 1.792548 2.022664 2.179214 2.497160 2.591115
+1.464682 1.809276 2.060194 2.205446 2.545963 2.641910
+1.481290 1.729523 2.025686 2.250012 2.537459 2.667746
+1.476458 1.657788 2.008062 2.249201 2.503220 2.613116
+1.386264 1.589548 2.031702 2.218301 2.509210 2.619100
+1.386263 1.662864 2.052585 2.208677 2.488387 2.623049
+1.438117 1.646070 1.967818 2.212439 2.508718 2.629395
+1.437599 1.590230 2.089082 2.184453 2.566546 2.677847
+1.367022 1.652527 2.084373 2.169492 2.483600 2.655744
+1.403779 1.701337 2.062797 2.148537 2.443186 2.657250
+1.399193 1.706047 2.062427 2.144585 2.531224 2.635014
+1.409664 1.750569 2.005073 2.087238 2.602834 2.694068
+1.430153 1.760399 2.048802 2.118059 2.569383 2.657275
+1.418847 1.858926 2.018666 2.141412 2.597867 2.671139
+1.515040 1.815611 1.942165 2.089059 2.554645 2.634597
+1.420031 1.740119 1.953746 2.196133 2.502692 2.639749
+1.384099 1.723309 1.901165 2.160196 2.426618 2.522583
+1.341050 1.737372 1.894752 2.110869 2.407505 2.502838
+1.375756 1.553983 1.784274 1.981423 2.504116 2.571526
+1.414589 1.520552 1.715365 2.013015 2.511199 2.608636
+1.384971 1.519108 1.696689 1.939377 2.575701 2.644752
+1.377861 1.611683 1.751236 2.044564 2.493605 2.567974
+1.360853 1.553679 1.693976 2.036113 2.535885 2.588469
+1.391629 1.489335 1.631480 1.853083 2.529546 2.631825
+1.364077 1.476053 1.629040 1.949019 2.525741 2.587922
+1.243896 1.398594 1.539687 2.066323 2.528653 2.592221
+1.255509 1.429357 1.548843 1.950985 2.519984 2.574845
+1.213331 1.388798 1.505976 1.886640 2.486118 2.545361
+1.125797 1.286903 1.534946 1.982051 2.490209 2.570684
+1.132522 1.296198 1.460831 1.925246 2.355670 2.444037
+1.146734 1.365341 1.496067 2.020613 2.448334 2.510650
+1.192778 1.378937 1.491161 1.959258 2.459140 2.519716
+1.271605 1.383883 1.525856 1.953206 2.473140 2.526275
+1.199948 1.366094 1.519729 1.926772 2.562989 2.623739
+1.236017 1.383510 1.510394 1.793300 2.585490 2.677079
+1.277218 1.416561 1.539447 1.923790 2.599080 2.667723
+1.195957 1.408063 1.568713 2.090793 2.622180 2.668897
+1.174436 1.300805 1.706567 2.070327 2.332828 2.490999
+1.120253 1.252790 1.562102 2.057117 2.357857 2.488099
+1.176325 1.291966 1.760265 2.093355 2.395545 2.591528
+1.197722 1.415532 1.801926 2.033180 2.459620 2.592560
+1.170462 1.491249 1.888044 2.082479 2.392285 2.528149
+1.083509 1.491779 1.949458 2.046197 2.422471 2.591609
+1.059936 1.417978 1.954816 2.073246 2.480964 2.599125
+0.939633 1.348507 2.005684 2.094229 2.474051 2.580294
+0.849679 1.293534 1.998123 2.105266 2.410101 2.615907
+0.886534 1.432349 1.990451 2.089797 2.379083 2.539500
+0.973462 1.473622 1.944390 2.051837 2.393100 2.468610
+1.041989 1.576432 1.952733 2.062536 2.326319 2.437768
+1.048696 1.543946 1.799024 2.015259 2.415911 2.487382
+1.060745 1.463281 1.792003 1.940494 2.417438 2.517618
+1.086879 1.350511 1.715443 1.804481 2.481994 2.577240
+1.237763 1.487227 1.724896 1.808323 2.528530 2.614554
+1.398461 1.499585 1.705939 1.817865 2.537422 2.611149
+1.461839 1.549278 1.719489 1.835184 2.480052 2.656622
+1.411934 1.594838 1.722617 1.840214 2.536598 2.618705
+1.527085 1.609472 1.704839 1.832817 2.512769 2.605081
+1.549304 1.649714 1.747183 1.838847 2.593282 2.681523
+1.408650 1.622130 1.797760 1.950766 2.238972 2.463941
+1.463558 1.647961 1.790731 1.921407 2.348044 2.572625
+1.531892 1.700373 1.834041 2.005597 2.413477 2.570542
+1.595204 1.681563 1.857023 2.020177 2.475381 2.620261
+1.578383 1.651863 1.912263 2.011994 2.512496 2.625607
+1.551105 1.644360 1.936207 2.041608 2.527321 2.617243
+1.531973 1.623150 1.927602 2.007454 2.528038 2.634563
+1.492463 1.579493 1.908682 1.998228 2.490609 2.583094
+1.445430 1.548758 1.913697 2.002797 2.519245 2.610948
+1.397285 1.482251 1.891220 1.983837 2.474487 2.607776
+1.358299 1.562942 1.902050 2.003614 2.425639 2.585407
+1.313352 1.518886 1.923066 2.011942 2.496939 2.583703
+1.321679 1.506830 1.903064 1.990064 2.510610 2.619736
+1.272893 1.513437 1.897901 2.039656 2.536517 2.604144
+1.255738 1.431150 1.896619 1.960886 2.526746 2.624236
+1.253559 1.392826 1.893788 1.975079 2.520685 2.596673
+1.212336 1.375220 1.860311 1.964962 2.531189 2.598668
+1.177442 1.324186 1.806632 1.885288 2.487316 2.595463
+1.184996 1.383080 1.783224 1.863469 2.466568 2.570648
+1.162268 1.444731 1.797884 1.960244 2.515838 2.594432
+1.293132 1.612625 1.912866 2.113069 2.467202 2.592647
+1.354402 1.698025 1.960114 2.149465 2.532985 2.652695
+1.412069 1.729124 2.034085 2.172945 2.538810 2.643693
+1.391792 1.801757 1.944790 2.194546 2.467300 2.547714
+1.476077 1.743192 1.982548 2.141155 2.559049 2.642891
+1.423680 1.857196 1.998407 2.146989 2.499501 2.583857
+1.420678 1.878169 2.012321 2.298282 2.578266 2.665489
+1.455663 1.910540 2.069836 2.393055 2.593493 2.679808
+1.525575 1.925713 2.186470 2.400715 2.660126 2.743114
+1.376147 1.633438 1.934297 2.250493 2.494057 2.618970
+1.354498 1.560950 1.931259 2.207320 2.500701 2.611053
+1.308071 1.569512 1.967243 2.245460 2.461123 2.595512
+1.347009 1.654983 1.980907 2.251887 2.510089 2.634977
+1.478008 1.588438 2.038202 2.224140 2.499366 2.646631
+1.451530 1.630286 2.114101 2.249734 2.416504 2.651801
+1.412137 1.655832 2.128349 2.224639 2.525056 2.681740
+1.374504 1.848893 2.140832 2.291897 2.602827 2.691005
+1.378568 1.744853 2.106673 2.201221 2.626831 2.711996
+1.082739 1.603117 2.070774 2.129571 2.504286 2.657551
+1.013288 1.467910 1.960032 2.091788 2.362049 2.561554
+0.994100 1.328068 1.791699 1.902549 2.410628 2.501324
+0.999159 1.325245 1.722310 1.871377 2.281177 2.502088
+1.035282 1.338082 1.653023 1.759760 2.441464 2.540672
+1.077126 1.293589 1.565666 1.711796 2.330341 2.436256
+1.058117 1.243026 1.488328 1.623677 2.330121 2.429536
+1.150659 1.296201 1.574724 1.701839 2.390475 2.507354
+1.167918 1.382035 1.573815 1.795297 2.440653 2.490361
+1.221368 1.405075 1.535783 1.728642 2.412290 2.519375
+1.248273 1.383975 1.572280 1.826858 2.425352 2.494218
+1.274149 1.386267 1.557821 1.734106 2.378306 2.477968
+1.343890 1.456032 1.668535 1.815600 2.248744 2.419705
+1.356022 1.559300 1.731279 1.853333 2.343968 2.514760
+1.433214 1.575906 1.673186 1.781463 2.292800 2.491264
+1.354708 1.637604 1.875368 2.162870 2.408490 2.566375
+1.464664 1.591442 2.071219 2.235462 2.398887 2.563489
+1.424812 1.622646 2.020332 2.161315 2.328264 2.468190
+1.364274 1.516152 2.011760 2.109608 2.395705 2.554722
+1.342677 1.460516 2.038898 2.122976 2.506655 2.643449
+1.338308 1.519884 2.030044 2.100145 2.533338 2.674767
+1.321127 1.545574 1.977232 2.122268 2.557592 2.680218
+1.315091 1.467109 1.972429 2.068538 2.526845 2.645634
+1.304457 1.400689 1.954545 2.053140 2.562504 2.685886
+1.267182 1.376660 1.888057 2.029893 2.545417 2.669311
+1.225012 1.339338 1.887320 1.965236 2.543506 2.672285
+1.226210 1.403527 1.797664 1.959693 2.540988 2.627346
+1.347025 1.607942 1.966769 2.184515 2.477879 2.608821
+1.332099 1.755961 1.948416 2.176713 2.513390 2.601370
+1.349288 1.781404 1.922794 2.109230 2.462878 2.559863
+1.362379 1.693594 1.884339 2.088053 2.522473 2.613966
+1.320290 1.510299 1.857749 2.065435 2.494726 2.605564
+1.282991 1.459743 1.744910 1.961419 2.439941 2.623746
+1.251365 1.381919 1.673542 1.772697 2.323540 2.661592
+1.204256 1.435153 1.654230 1.737800 2.305057 2.581558
+1.181960 1.465280 1.670027 1.861303 2.444123 2.546129
+1.347122 1.628258 1.931339 2.123429 2.466851 2.598918
+1.170479 1.284934 1.552741 1.832546 2.299787 2.519811
+1.190040 1.284015 1.646086 1.969170 2.496917 2.620449
+1.255411 1.381474 1.781732 2.094994 2.431362 2.593520
+1.231880 1.334167 1.796249 2.040002 2.387081 2.554655
+1.180520 1.308571 1.818239 1.976323 2.293501 2.451796
+1.102564 1.266319 1.844247 1.961761 2.324841 2.514083
+1.004636 1.144874 1.835019 1.997102 2.182380 2.522076
+0.956994 1.212915 1.940923 2.060449 2.312226 2.441670
+0.795434 1.444280 1.932418 2.047161 2.365680 2.450523
+0.942462 1.606038 2.025121 2.119735 2.299947 2.431814
+0.812186 1.469389 2.078323 2.173021 2.391967 2.474051
+0.831008 1.620609 2.092943 2.167732 2.334863 2.416721
+0.917049 1.800997 2.121233 2.199383 2.347284 2.440519
+0.857286 1.679152 2.112428 2.203072 2.444738 2.529211
+0.809582 1.542552 2.182369 2.239437 2.461979 2.543366
+0.912283 1.779198 2.166321 2.251092 2.461682 2.576876
+0.774827 1.770199 2.179196 2.239611 2.487323 2.560225
+1.222989 1.574575 2.081078 2.223587 2.501523 2.661302
+1.394216 1.696320 2.036647 2.273328 2.570400 2.684130
+1.370771 1.698913 2.082660 2.245671 2.598794 2.695446
+1.372406 1.647175 2.142373 2.272905 2.608093 2.686558
+1.342788 1.694536 2.123284 2.256762 2.575277 2.690952
+1.380553 1.750680 2.123405 2.199744 2.488043 2.610243
+1.395056 1.883317 2.088702 2.189488 2.458258 2.548140
+1.413151 1.872836 2.020835 2.161956 2.396167 2.487013
+1.403097 1.764242 1.911249 2.055851 2.391006 2.484601
+1.250592 1.606846 1.834805 1.914414 2.344090 2.549461
+1.171007 1.406438 1.699124 1.858102 2.354073 2.471053
+1.132691 1.251867 1.521350 1.638290 2.355284 2.470608
+1.011681 1.287897 1.450262 1.663822 2.285463 2.371452
+1.030244 1.208417 1.366673 1.550352 2.337520 2.421401
+0.964915 1.171185 1.288162 1.588419 2.327292 2.388297
+0.953674 1.102888 1.263755 1.835591 2.316855 2.424820
+0.886544 1.074635 1.242245 1.964445 2.296815 2.412946
+0.853009 1.077083 1.184534 1.752324 2.283038 2.389217
+0.840278 1.033222 1.152546 1.520954 2.333984 2.454533
+0.910770 1.083873 1.223537 1.668076 2.346235 2.511845
+0.967915 1.121818 1.220258 1.806588 2.421129 2.498176
+0.992265 1.169069 1.260049 1.679990 2.398939 2.459143
+1.065276 1.230957 1.322385 1.753477 2.314399 2.415925
+1.081305 1.271782 1.458008 1.729400 2.332304 2.405121
+1.017815 1.349087 1.515836 1.721892 2.292963 2.398991
+1.097652 1.332937 1.570030 1.776462 2.377274 2.465894
+1.147644 1.302495 1.640156 1.797044 2.363880 2.474795
+1.127168 1.322009 1.684884 1.796463 2.407050 2.578659
+1.159532 1.266652 1.709552 1.830584 2.438156 2.572425
+1.137105 1.331512 1.749399 1.846000 2.414391 2.511488
+1.121271 1.351105 1.728223 1.846664 2.449211 2.564158
+1.118680 1.261543 1.794458 1.885767 2.429009 2.552772
+1.076991 1.212163 1.727637 1.861263 2.432992 2.564041
+1.082093 1.261697 1.760917 1.858031 2.315851 2.573591
+1.086353 1.279061 1.763123 1.864186 2.380786 2.485297
+0.988401 1.262393 1.737901 1.836710 2.375780 2.492390
+1.074712 1.196202 1.677279 1.806309 2.341401 2.560642
+1.067864 1.265290 1.689350 1.802993 2.401947 2.524062
+1.010475 1.289540 1.652721 1.778727 2.362305 2.466551
+0.977570 1.261308 1.576271 1.741327 2.297622 2.404091
+1.097180 1.464421 1.606664 1.717614 2.330709 2.412068
+1.383838 1.652270 1.898203 2.096608 2.476719 2.574183
+1.279735 1.700611 1.894987 2.029873 2.468395 2.584491
+1.236668 1.683312 1.791059 1.953368 2.533100 2.587084
+1.185052 1.599131 1.853897 1.944925 2.499951 2.572896
+1.163573 1.307316 1.872443 1.953987 2.544667 2.623228
+1.190969 1.449255 1.863288 1.937666 2.525272 2.599969
+1.118547 1.513105 1.856666 1.968822 2.497385 2.575529
+1.156521 1.630926 1.845452 2.051106 2.443167 2.534052
+1.410042 1.541981 2.135508 2.235609 2.575406 2.680553
+1.392791 1.720666 2.034946 2.192456 2.487154 2.653398
+1.581248 1.837838 2.109761 2.187484 2.497898 2.660089
+1.663078 1.901302 2.151665 2.248289 2.534789 2.639793
+1.623160 1.843067 2.177770 2.255312 2.543601 2.681190
+1.539709 1.846069 2.119080 2.315024 2.605425 2.695012
+1.532691 1.805362 2.166180 2.276515 2.582080 2.695324
+1.517203 1.864729 2.111840 2.241033 2.602399 2.678593
+1.481004 1.879771 2.183398 2.258504 2.624580 2.714706
+1.480064 1.947829 2.126591 2.239313 2.602703 2.689760
+1.615747 2.025678 2.188405 2.291472 2.673701 2.723276
+1.546688 2.023668 2.137583 2.233880 2.563573 2.627361
+1.517274 1.902434 2.132410 2.189277 2.548379 2.643352
+1.498762 1.602359 2.159933 2.275665 2.540579 2.682962
+1.573572 1.655201 2.071740 2.214602 2.523447 2.642142
+1.601993 1.680362 2.130147 2.247308 2.567706 2.670568
+1.632928 1.733671 2.134699 2.255127 2.559994 2.682076
+1.707428 1.752059 2.139704 2.252060 2.567637 2.647910
+1.680790 1.812582 2.189235 2.287297 2.578245 2.644737
+1.746130 1.778548 2.119511 2.283392 2.596379 2.686826
+1.680242 1.774944 2.097848 2.213994 2.558507 2.656276
+1.698158 1.777690 2.096918 2.211009 2.512421 2.625627
+1.757218 1.828197 2.092183 2.218630 2.459897 2.653906
+1.768299 1.815758 2.044601 2.174404 2.469800 2.674385
+1.740913 1.830010 2.044499 2.168426 2.442501 2.587668
+1.728988 1.801586 2.036902 2.135694 2.483000 2.647346
+1.740200 1.780349 2.039841 2.116482 2.460078 2.666408
+1.679167 1.810585 1.976200 2.085150 2.330970 2.574697
+1.675383 1.741676 1.986605 2.086988 2.444839 2.648385
+1.605366 1.684640 1.977146 2.084309 2.401376 2.626669
+1.593589 1.667011 1.993079 2.095793 2.477055 2.660517
+1.495436 1.677492 1.915438 2.107516 2.504100 2.687519
+1.371193 1.581007 1.812088 2.159971 2.540808 2.654514
+1.308897 1.652762 1.877696 2.100223 2.498357 2.635266
+1.257546 1.701192 1.908659 2.063978 2.330876 2.588480
+1.260641 1.733829 1.901311 2.046022 2.230421 2.379709
+1.192017 1.695443 1.866332 1.969861 2.131279 2.367813
+1.331300 1.727619 1.875686 1.967226 2.115488 2.461652
+1.221851 1.644785 1.861070 1.957289 2.263788 2.509227
+1.297010 1.684814 1.825106 1.981266 2.388696 2.497940
+1.292992 1.621691 1.795497 1.891584 2.430941 2.597238
+1.293338 1.412441 1.678427 2.013436 2.406265 2.575295
+1.355250 1.470521 1.748288 2.044830 2.411070 2.590823
+1.352085 1.474384 1.811950 2.028535 2.445376 2.597977
+1.380432 1.472981 1.836191 1.957768 2.390372 2.571170
+1.417568 1.514975 1.839991 1.974610 2.382486 2.510706
+1.396329 1.511621 1.743909 2.009524 2.414088 2.533502
+1.355999 1.511197 1.775041 1.973539 2.445398 2.568851
+1.357482 1.533305 1.820633 1.998326 2.395457 2.573696
+1.244544 1.446552 1.726849 1.935995 2.428985 2.555947
+1.206555 1.365874 1.510017 1.809039 2.464853 2.520241
+1.204707 1.340270 1.477154 1.731800 2.461076 2.525822
+1.152135 1.294762 1.429873 1.669780 2.436091 2.504828
+1.122329 1.284669 1.445441 1.811897 2.444467 2.535691
+1.167102 1.311995 1.430682 1.931216 2.579180 2.626367
+1.140963 1.255562 1.416924 1.913114 2.462643 2.552650
+1.175380 1.325094 1.434137 1.826282 2.534111 2.599692
+1.152952 1.311344 1.428753 1.733281 2.499163 2.555417
+1.208942 1.318147 1.450855 1.631131 2.484793 2.560756
+1.214984 1.312305 1.496973 1.602685 2.441060 2.513740
+1.154899 1.274352 1.497828 1.611080 2.493972 2.628464
+1.221737 1.324479 1.529355 1.668502 2.496342 2.572455
+1.265483 1.360436 1.574447 1.698291 2.465872 2.529454
+1.299969 1.411470 1.634331 1.790167 2.464188 2.546209
+1.296816 1.461296 1.674047 1.867297 2.472828 2.546532
+1.319231 1.493029 1.702922 1.867177 2.417583 2.503853
+1.307703 1.511731 1.795464 1.988697 2.415827 2.502063
+1.341439 1.567295 1.849636 2.054411 2.368545 2.484938
+1.346092 1.709857 1.847822 2.089875 2.320388 2.426929
+1.351207 1.582397 1.853947 2.087781 2.269740 2.406134
+1.403409 1.681258 1.930634 2.064741 2.317595 2.445510
+1.303563 1.800429 1.946546 2.064780 2.347899 2.575654
+1.401968 1.795117 2.043851 2.149158 2.337423 2.475421
+1.486349 1.896915 2.033679 2.164583 2.427213 2.516709
+1.581223 1.920360 2.032925 2.186636 2.458825 2.534175
+1.623672 1.949219 2.056949 2.220873 2.544733 2.612737
+1.720081 1.916335 2.069658 2.310061 2.503085 2.592652
+1.652066 1.993905 2.122170 2.282322 2.533728 2.604129
+1.696384 1.990268 2.088659 2.317899 2.562346 2.630795
+1.688613 1.976549 2.085500 2.354425 2.483404 2.567677
+1.791891 1.956617 2.084765 2.344129 2.473213 2.578020
+1.770146 1.955967 2.075143 2.263105 2.508576 2.594808
+1.688172 1.958387 2.097165 2.237127 2.443133 2.558386
+1.614095 1.858106 1.996129 2.151245 2.327315 2.485345
+1.517662 1.729778 1.975388 2.118726 2.390828 2.523423
+1.576388 1.764916 1.937347 2.159436 2.354537 2.476553
+1.596523 1.796717 1.930679 2.173774 2.415264 2.515193
+1.598274 1.758907 1.941525 2.242941 2.461919 2.548378
+1.564588 1.667806 1.910211 2.207508 2.432969 2.562295
+1.502258 1.598757 1.701036 1.993517 2.431658 2.568611
+1.261165 1.379257 1.669436 1.864259 2.424394 2.560278
+1.183142 1.291685 1.496242 1.775091 2.415349 2.571850
+1.176858 1.280643 1.397295 1.556275 2.482609 2.556911
+1.151406 1.269090 1.402613 1.529417 2.547298 2.660723
+1.138350 1.270088 1.386698 1.656508 2.516680 2.570828
+1.167637 1.288387 1.379397 1.815954 2.488744 2.544025
+1.191129 1.318584 1.433056 1.898734 2.440995 2.505523
+1.231547 1.339710 1.505832 1.865461 2.401919 2.567552
+1.249001 1.342543 1.526521 1.644629 2.260060 2.528113
+1.292116 1.385043 1.567293 1.928018 2.343597 2.526727
+1.553055 1.731196 1.875584 2.037623 2.189580 2.433617
+1.556332 1.807351 2.009873 2.134758 2.395110 2.517757
+1.700800 1.862996 2.016062 2.212872 2.465828 2.576608
+1.744516 1.892300 2.042875 2.203697 2.393022 2.529386
+1.614682 1.867043 2.024132 2.172368 2.402152 2.567866
+1.662548 1.926469 2.016222 2.153675 2.544682 2.636605
+1.607737 1.840632 2.036507 2.148869 2.475726 2.623423
+1.542603 1.789412 1.988210 2.133702 2.500071 2.623838
+1.520491 1.854019 1.966284 2.100229 2.465497 2.590987
+1.429100 1.726203 1.958566 2.068736 2.397125 2.578275
+1.230963 1.483915 1.909424 2.037168 2.278162 2.442677
+1.165473 1.402475 1.877668 1.985029 2.337001 2.482301
+1.060649 1.341795 1.891591 1.997803 2.342252 2.473851
+1.045982 1.264410 1.892878 2.028108 2.265711 2.418342
+0.872467 1.318607 1.941288 2.054895 2.265976 2.523000
+0.878165 1.208778 1.863524 2.074171 2.319885 2.460496
+0.871380 1.050930 1.866310 2.044293 2.184267 2.469225
+0.814866 1.206234 1.936241 2.046364 2.243986 2.391005
+0.791495 1.154802 1.950862 2.062225 2.270188 2.497120
+0.734873 1.117496 2.013891 2.146348 2.252079 2.340218
+0.717596 1.113315 2.145116 2.214288 2.350660 2.437091
+0.747897 1.181886 1.982640 2.073387 2.391063 2.461216
+0.814210 1.593704 1.930814 2.051889 2.279916 2.450975
+1.007998 1.635254 1.848698 1.998294 2.264960 2.399367
+1.058125 1.548258 1.725115 1.885874 2.174154 2.386746
+1.065325 1.446828 1.763113 2.061160 2.393931 2.533355
+1.245436 1.513106 1.699869 1.885972 2.163732 2.412556
+1.402218 1.550167 1.679097 2.104476 2.314265 2.464617
+1.439688 1.565541 1.746159 2.175756 2.353179 2.445969
+1.282789 1.467574 1.689789 2.057017 2.299566 2.506538
+1.157513 1.360077 1.531522 1.931682 2.277828 2.387362
+1.127719 1.287186 1.421085 1.844362 2.281074 2.385221
+1.172511 1.317506 1.497831 1.768329 2.327099 2.453399
+1.215615 1.351452 1.554622 1.706859 2.280267 2.410315
+1.162714 1.318505 1.568816 1.757107 2.225559 2.321236
+1.221146 1.364069 1.728202 1.867240 2.149636 2.323430
+1.274525 1.455876 1.651807 1.929882 2.119518 2.245371
+1.324827 1.466657 1.837727 1.982753 2.167839 2.294890
+1.207408 1.463737 1.907228 2.010942 2.187613 2.315377
+1.197505 1.325369 1.903945 2.104257 2.264375 2.406017
+0.964658 1.421326 1.800591 2.075541 2.249667 2.391422
+0.900184 1.419486 1.860531 2.052169 2.204670 2.414730
+0.976462 1.444988 1.837158 1.997086 2.133567 2.303194
+0.943062 1.543803 1.914625 1.993134 2.184650 2.344182
+0.896780 1.426973 1.923545 2.039994 2.257922 2.504524
+0.957615 1.553177 1.862682 2.044650 2.192655 2.484166
+1.024381 1.626871 1.891283 2.041787 2.304775 2.613132
+1.260699 1.570977 1.796922 1.938909 2.457980 2.543689
+1.433872 1.676893 2.020354 2.249287 2.488434 2.619226
+1.427791 1.605308 1.999841 2.197618 2.472581 2.628257
+1.344936 1.547750 2.019906 2.153463 2.482519 2.664904
+1.394553 1.830863 2.075753 2.146704 2.529848 2.662938
+1.393531 1.579984 2.005267 2.068322 2.595828 2.677955
+1.371670 1.501665 2.012362 2.069292 2.605716 2.701205
+1.365970 1.443760 1.893696 2.063362 2.540864 2.635754
+1.392813 1.470933 1.920415 1.985276 2.612047 2.670626
+1.393576 1.502340 1.926492 2.019514 2.571540 2.645701
+1.331438 1.470056 1.844344 1.945539 2.527331 2.620827
+1.280394 1.379998 1.822792 1.927676 2.470720 2.614037
+1.230446 1.394851 1.772237 1.910697 2.494879 2.569172
+1.103766 1.420997 1.742156 1.901028 2.458527 2.544960
+1.070834 1.438456 1.754789 1.827791 2.323725 2.484121
+1.023924 1.522342 1.713716 1.834742 2.289596 2.496846
+1.123843 1.539945 1.766275 1.866623 2.349980 2.441218
+1.046667 1.496581 1.791535 1.859477 2.400747 2.468296
+1.031227 1.504904 1.714267 1.944348 2.365219 2.459437
+1.201184 1.370120 1.882630 2.011333 2.411295 2.510294
+1.249461 1.324457 1.907616 2.059001 2.448619 2.551408
+1.308584 1.403015 1.961155 2.048592 2.475709 2.562469
+1.354357 1.476040 2.008730 2.111323 2.513237 2.591557
+1.415309 1.559632 2.020191 2.107847 2.505348 2.596462
+1.452150 1.536961 2.033461 2.120472 2.473458 2.600239
+1.476159 1.570668 1.981439 2.089874 2.441733 2.574939
+1.532138 1.607322 1.996255 2.099111 2.448993 2.575083
+1.578251 1.670901 1.946452 2.067931 2.484573 2.596033
+1.645992 1.719829 1.908426 2.034805 2.521504 2.630135
+1.675204 1.739089 1.858009 1.951150 2.549621 2.668138
+1.698801 1.740674 1.816221 1.872214 2.552990 2.675039
+1.589313 1.665941 1.751972 1.834254 2.495821 2.663916
+1.443571 1.535057 1.685496 1.788025 2.391781 2.644852
+1.389394 1.597558 1.884291 2.161052 2.453631 2.577281
+1.344693 1.573396 1.949051 2.033207 2.436483 2.650227
+1.340679 1.442192 1.904082 1.992387 2.427510 2.604339
+1.301569 1.363519 1.870210 1.953388 2.445808 2.609366
+1.265637 1.365516 1.838660 1.922174 2.431739 2.552480
+1.291868 1.451067 1.770742 1.900677 2.380488 2.474590
+1.319797 1.502062 1.686208 1.922008 2.291200 2.392613
+1.253224 1.445797 1.591748 1.893558 2.295028 2.381503
+1.171375 1.370630 1.523209 1.825821 2.336350 2.399182
+1.238986 1.365086 1.486833 1.790131 2.302513 2.384222
+1.186490 1.327527 1.463687 1.680778 2.322037 2.402246
+1.160765 1.294904 1.467635 1.613241 2.219663 2.329651
+1.167970 1.312269 1.458793 1.725469 2.182513 2.270653
+1.160491 1.371381 1.546645 1.859914 2.151480 2.267109
+1.060643 1.447736 1.589363 1.762026 2.187949 2.312538
+1.096873 1.449372 1.669939 1.880786 2.205157 2.322919
+0.965471 1.394985 1.664859 1.869740 2.130135 2.272101
+0.992815 1.276232 1.736324 1.883127 2.198488 2.291947
+0.989087 1.348989 1.869284 1.945029 2.217100 2.329616
+0.905850 1.296468 1.839413 1.984491 2.131357 2.261643
+0.913468 1.347104 1.974941 2.056808 2.233065 2.312403
+0.891335 1.518146 1.956057 2.017051 2.234247 2.369537
+0.838007 1.490697 2.017641 2.097784 2.331456 2.417972
+0.918242 1.411219 2.047094 2.157938 2.312207 2.414304
+0.737470 1.475335 2.131705 2.195099 2.336065 2.410088
+0.804454 1.247009 2.183193 2.253103 2.376866 2.457474
+0.910989 1.120584 2.031279 2.134740 2.301672 2.401323
+0.823657 1.023714 1.899299 2.153486 2.278157 2.468898
+0.820197 0.968457 1.655670 2.137310 2.320413 2.442552
+0.901009 1.047635 1.785794 2.126322 2.248142 2.419219
+0.908944 1.151536 1.941268 2.153759 2.287775 2.477861
+1.022921 1.329810 1.973526 2.121196 2.269160 2.496929
+1.008035 1.176565 1.832554 2.130737 2.263094 2.484071
+1.148404 1.261617 1.868165 2.138339 2.287914 2.475774
+1.131641 1.245536 1.746902 2.127206 2.273644 2.439518
+1.105449 1.230686 1.759865 2.023222 2.225896 2.485020
+1.232277 1.363476 1.914876 2.021647 2.314039 2.455927
+1.287966 1.377464 1.853658 2.039634 2.348077 2.502708
+1.285144 1.520789 1.951021 2.053636 2.366537 2.486110
+1.276358 1.656613 1.882329 2.084625 2.430619 2.524004
+1.305701 1.532539 1.861534 2.029161 2.435632 2.519577
+1.295725 1.474840 1.838375 2.045012 2.413018 2.545296
+1.232802 1.307215 1.786758 1.911450 2.533633 2.625793
+1.106012 1.252432 1.737311 1.827401 2.395470 2.658026
+1.080321 1.249736 1.763810 1.842229 2.488083 2.637970
+1.084809 1.302696 1.791104 1.915712 2.532753 2.626979
+1.024077 1.398495 1.758154 1.947685 2.536753 2.647797
+1.052552 1.486524 1.835972 2.013128 2.526539 2.621519
+0.980943 1.528894 1.887706 1.990429 2.559226 2.631730
+0.954706 1.355188 1.890849 1.968743 2.538301 2.645803
+0.894853 1.316420 1.931923 2.000630 2.617822 2.706960
+0.859848 1.166660 1.851854 2.011085 2.629872 2.731061
+0.817565 1.169139 1.975684 2.117069 2.593136 2.683713
+0.776768 0.999874 1.951669 2.126997 2.578530 2.719218
+0.750075 1.105669 2.015241 2.099156 2.469178 2.637879
+0.878438 1.039620 2.078822 2.189100 2.453168 2.610618
+0.915136 1.114879 2.017689 2.236527 2.370275 2.538277
+0.826110 1.208983 2.069074 2.156825 2.331864 2.463067
+0.869876 1.289563 2.061703 2.143050 2.313737 2.395809
+0.790056 1.421058 1.945728 2.025231 2.254924 2.384106
+0.782642 1.678142 1.928308 1.980152 2.169702 2.290020
+0.795940 1.409661 1.767797 1.894756 2.191648 2.280190
+0.832117 1.169093 1.828013 1.911028 2.228646 2.366162
+0.862231 1.189399 1.754948 1.924129 2.312126 2.412551
+1.034774 1.290469 1.783502 1.996158 2.343760 2.462730
+1.135806 1.358791 1.789192 1.980630 2.376359 2.495841
+1.303901 1.414996 1.787505 1.918440 2.435463 2.547746
+1.489246 1.592963 1.850578 1.950051 2.428039 2.571337
+1.631472 1.742640 1.887885 1.994933 2.493769 2.619665
+1.683853 1.800379 1.926611 2.064050 2.509149 2.592626
+1.745313 1.854259 1.988545 2.117137 2.504306 2.611340
+1.764270 1.890575 2.037993 2.174299 2.507724 2.600610
+1.680174 1.817366 1.937110 2.228976 2.550139 2.623314
+1.552625 1.819462 1.957322 2.263495 2.517281 2.580506
+1.558425 1.784912 2.021491 2.239374 2.543712 2.637456
+1.240665 1.739293 1.889814 2.105082 2.532436 2.618228
+0.928972 1.440269 1.769258 1.853352 2.400406 2.636877
+1.055767 1.488842 1.756065 1.832574 2.209682 2.650309
+1.013301 1.381032 1.704087 1.772713 2.155486 2.585135
+1.009186 1.333235 1.741382 1.846496 2.158765 2.517761
+1.006381 1.519900 1.813751 1.916290 2.407674 2.581853
+1.357730 1.530547 1.883639 2.141513 2.463268 2.614627
+1.426823 1.560875 1.882518 2.175206 2.488354 2.628703
+1.315984 1.579838 1.859556 2.083481 2.419884 2.564645
+1.213050 1.538899 1.800250 1.882067 2.341570 2.574606
+1.275056 1.543507 1.917099 2.127451 2.388939 2.542721
+1.438943 1.698143 1.856610 2.075189 2.266712 2.437372
+1.454331 1.663763 1.869820 2.011414 2.366272 2.533385
+1.382166 1.672920 1.827442 1.942032 2.453906 2.559856
+1.400656 1.585453 1.841334 2.002744 2.426997 2.517756
+1.382144 1.688087 1.819756 2.063153 2.417793 2.492551
+1.255095 1.603378 1.753915 2.047569 2.455562 2.569585
+1.134783 1.409147 1.705283 1.802106 2.488030 2.647140
+1.111876 1.260129 1.676050 1.778495 2.501588 2.627003
+1.060347 1.208811 1.660354 1.776864 2.488758 2.604456
+0.947120 1.164647 1.642037 1.723789 2.475156 2.567411
+0.902077 1.251204 1.664026 1.769008 2.499003 2.576704
+0.920170 1.243894 1.709681 1.794989 2.534352 2.623833
+0.938770 1.267684 1.725861 1.870157 2.549512 2.628197
+0.914357 1.254315 1.712915 1.784742 2.590431 2.707485
+0.930246 1.281241 1.802793 1.878861 2.560218 2.687216
+0.955350 1.148671 1.814732 1.902586 2.557821 2.684594
+0.968330 1.098589 1.813440 1.911875 2.463136 2.646490
+0.990311 1.185444 1.864673 1.941589 2.488112 2.664465
+1.186903 1.590929 1.954158 2.033697 2.597861 2.662179
+1.302643 1.694423 1.997444 2.169046 2.617414 2.693079
+1.379258 1.718278 1.993219 2.212202 2.543730 2.640859
+1.405165 1.780534 1.997893 2.151147 2.555776 2.632215
+1.297766 1.878255 2.020268 2.190566 2.546467 2.617338
+1.442158 1.856645 2.101038 2.299709 2.561481 2.644123
+1.370167 1.781207 2.114991 2.251821 2.446751 2.549845
+1.403451 1.703568 2.079302 2.221399 2.448766 2.593978
+1.413349 1.649169 2.009976 2.159164 2.518675 2.615138
+1.326655 1.719941 1.950443 2.025468 2.521068 2.635953
+1.385954 1.552749 1.856784 1.937506 2.496646 2.580159
+1.345409 1.488014 1.885538 2.017189 2.546874 2.625597
+1.335716 1.420210 1.787067 1.976842 2.501334 2.643553
+1.303803 1.408266 1.801454 1.901471 2.375048 2.575946
+1.312907 1.408086 1.837981 1.950093 2.318536 2.475897
+1.193613 1.293642 1.819061 1.974492 2.468077 2.585285
+1.191527 1.311470 1.711629 1.854585 2.395044 2.554024
+1.103176 1.332165 1.717922 1.857994 2.340287 2.445217
+0.996011 1.234172 1.751022 1.868274 2.285877 2.406723
+1.055311 1.378240 1.712116 1.841673 2.206702 2.440537
+1.078611 1.465910 1.787009 1.948977 2.231741 2.478981
+0.984520 1.420593 1.815304 1.925218 2.263433 2.430940
+0.984574 1.495178 1.774189 1.964126 2.221656 2.346849
+1.154842 1.507200 1.812101 1.949371 2.281741 2.426097
+1.170058 1.429376 1.745091 1.937927 2.235016 2.374769
+1.206485 1.487526 1.767298 2.009836 2.207048 2.339471
+1.073656 1.377733 1.828679 1.993004 2.130615 2.256776
+1.088454 1.495385 1.907767 1.996871 2.213903 2.390489
+1.122976 1.422213 1.865827 2.037113 2.253747 2.418388
+1.134166 1.382636 1.804236 1.963200 2.161170 2.473602
+1.245397 1.552607 1.960811 2.134690 2.453597 2.577539
+1.118704 1.567208 1.952615 2.176519 2.446630 2.578556
+1.141708 1.643603 2.013339 2.277434 2.557381 2.634785
+1.392514 1.807925 2.039343 2.237922 2.578023 2.668286
+1.433212 1.833712 2.020620 2.252182 2.518635 2.600857
+1.379262 1.712226 2.024999 2.242965 2.515533 2.602479
+1.366984 1.675637 1.976590 2.199474 2.516967 2.598815
+1.352760 1.801872 2.033607 2.181935 2.491382 2.589883
+1.323663 1.743572 2.009640 2.122701 2.474517 2.566379
+1.190092 1.540538 1.933066 2.088076 2.506726 2.570608
+1.519832 1.766187 1.906004 2.076747 2.261416 2.407680
+1.534691 1.714074 2.016476 2.130902 2.323259 2.457608
+1.522050 1.794760 2.050945 2.218278 2.408013 2.537728
+1.665365 1.906867 2.025658 2.232383 2.430131 2.550641
+1.666299 1.834650 1.998042 2.220240 2.401507 2.502391
+1.523608 1.730092 1.862962 2.164599 2.466262 2.549229
+1.216124 1.503465 1.760462 1.967473 2.381720 2.564350
+1.171128 1.429428 1.616628 1.917782 2.387933 2.477271
+1.091303 1.351374 1.568657 1.796196 2.437587 2.514874
+1.001277 1.386906 1.539603 1.775045 2.413270 2.482152
+0.952227 1.397307 1.527926 1.722524 2.442747 2.492370
+0.824979 1.388886 1.568976 1.735264 2.408751 2.471180
+0.794444 1.433059 1.588848 1.749579 2.489366 2.576364
+0.899067 1.521851 1.681397 1.780293 2.441748 2.508286
+0.922249 1.464613 1.592525 1.828442 2.418162 2.477264
+0.871556 1.444421 1.538321 1.889009 2.353691 2.412544
+0.857823 1.270248 1.501265 1.760257 2.355761 2.407297
+0.846263 1.176606 1.481984 1.614166 2.369933 2.485687
+0.882414 1.176092 1.377969 1.497390 2.380010 2.516508
+0.938718 1.100648 1.489109 1.576205 2.325566 2.543468
+0.932462 1.105586 1.294346 1.470956 2.400120 2.554718
+0.945253 1.161000 1.303877 1.580262 2.466680 2.584612
+1.018317 1.214740 1.330580 1.683749 2.482961 2.557157
+1.048240 1.175481 1.258095 1.599087 2.521448 2.642499
+1.073739 1.203513 1.298705 1.688758 2.555683 2.614473
+1.096788 1.260856 1.368595 1.755340 2.493034 2.606453
+1.105643 1.227026 1.404391 1.849702 2.523314 2.601568
+1.143864 1.269393 1.387340 1.829083 2.395167 2.496463
+1.099246 1.228614 1.344408 1.664420 2.440626 2.518066
+1.116181 1.228322 1.332947 1.667312 2.331673 2.512262
+1.201517 1.299388 1.478475 1.577915 2.003307 2.451583
+1.167995 1.292729 1.470730 1.814621 2.140965 2.436146
+1.280521 1.424881 1.595211 1.803880 2.205832 2.315376
+1.230157 1.364939 1.610435 2.002513 2.172872 2.355721
+1.302555 1.400606 1.734329 2.074003 2.208548 2.389274
+1.512686 1.818227 2.144783 2.266917 2.447736 2.569392
+1.507528 1.760422 2.164228 2.276872 2.479494 2.624837
+1.446511 1.760436 2.114696 2.256700 2.572570 2.661468
+1.468868 1.812355 2.114567 2.193023 2.617745 2.713842
+1.449647 1.776448 2.080604 2.210155 2.540909 2.713991
+1.441252 1.719517 2.114612 2.218690 2.511304 2.660049
+1.477657 1.619839 2.112699 2.198704 2.520599 2.655696
+1.532866 1.718145 2.132629 2.222301 2.551440 2.665729
+1.341030 1.814584 2.125039 2.245863 2.547976 2.649591
+1.361910 1.698086 2.076920 2.255113 2.524884 2.647043
+1.315333 1.592772 2.109776 2.210194 2.517745 2.666968
+1.382801 1.571593 2.106842 2.204058 2.495197 2.661417
+1.453626 1.641746 2.100313 2.199368 2.462404 2.608881
+1.376104 1.646574 1.987188 2.218409 2.413618 2.526810
+1.372839 1.632461 2.056237 2.163721 2.376186 2.586874
+1.432614 1.624632 2.074174 2.119889 2.480656 2.669026
+1.410683 1.662804 2.069219 2.130369 2.581373 2.714005
+1.174126 1.524516 2.032046 2.105255 2.502385 2.653307
+1.150832 1.249780 2.004788 2.158226 2.317980 2.588167
+1.057643 1.199724 2.043666 2.165479 2.371022 2.608171
+1.070330 1.169192 2.051065 2.187195 2.476449 2.671328
+0.989962 1.100883 1.959715 2.107656 2.451860 2.659328
+0.995945 1.125081 1.967729 2.171051 2.352755 2.586378
+0.951054 1.073408 1.768679 2.213097 2.362509 2.504270
+0.912647 1.063629 1.874306 2.209354 2.347793 2.515052
+0.880146 1.057702 1.939506 2.298197 2.447874 2.559719
+0.808391 0.999903 1.789456 2.221085 2.383243 2.512098
+0.872797 1.051306 1.907981 2.345885 2.551438 2.620384
+0.736864 0.925226 2.101552 2.273865 2.392948 2.568863
+0.704727 1.026198 2.094726 2.212489 2.474164 2.656197
+0.793545 1.029482 1.901019 2.333682 2.650248 2.721424
+0.890709 1.270067 2.139854 2.238320 2.544384 2.711324
+0.971655 1.317691 2.245472 2.351092 2.631963 2.711259
+1.080789 1.555771 2.010618 2.245992 2.528408 2.644890
+1.409512 1.769321 2.106696 2.284262 2.512254 2.638336
+1.248437 1.661986 2.035140 2.283241 2.534287 2.647326
+0.952460 1.123797 2.103484 2.258075 2.394744 2.604571
+0.989645 1.181656 2.023429 2.237371 2.369517 2.522527
+0.926042 1.348117 1.949341 2.062080 2.346962 2.449077
+0.919696 1.405301 1.834047 2.099696 2.376206 2.493394
+1.000811 1.371649 1.836653 2.224095 2.410108 2.539296
+1.200088 1.436788 1.839151 2.179281 2.398849 2.498430
+1.223520 1.486412 1.943988 2.252258 2.407325 2.540679
+1.113671 1.477208 1.844163 2.218008 2.381333 2.486877
+1.138107 1.498752 1.980951 2.297474 2.457848 2.560767
+1.146154 1.614539 1.898903 2.232476 2.416572 2.510958
+1.119673 1.589916 1.824415 2.111914 2.354760 2.453276
+1.032037 1.589416 1.852847 2.142988 2.324001 2.472943
+0.989427 1.528982 1.914645 2.179193 2.376737 2.494371
+1.095755 1.494564 1.866122 2.136805 2.283713 2.464058
+0.834557 1.463722 1.882565 2.150927 2.378636 2.463091
+0.835589 1.296069 1.771371 2.098776 2.286243 2.426378
+0.806577 1.403328 1.685216 2.040945 2.235736 2.356401
+0.800011 1.383092 1.814158 1.959934 2.309583 2.386791
+0.804745 1.318210 1.821360 1.908703 2.235131 2.427141
+0.895849 1.367225 1.864812 1.979670 2.324237 2.420788
+0.827390 1.425085 1.767158 2.058185 2.376232 2.469430
+0.917915 1.497920 1.855338 1.987207 2.315382 2.451640
+0.940855 1.409563 1.789190 1.988531 2.336666 2.534686
+0.972711 1.291697 1.786937 1.914881 2.323264 2.405491
+0.993281 1.368817 1.807237 1.958622 2.357274 2.459276
+1.074694 1.349312 1.840844 1.954844 2.269081 2.384056
+1.100597 1.218573 1.756134 1.900188 2.277874 2.406215
+1.165622 1.313695 1.843695 1.962222 2.157100 2.342911
+1.157768 1.372357 1.879963 1.991928 2.258080 2.390865
+1.286092 1.780986 1.959702 2.118874 2.324541 2.437595
+1.455169 1.738149 2.098885 2.235010 2.428464 2.539714
+1.500252 1.684257 2.161002 2.272591 2.399078 2.510334
+1.485672 1.846402 2.195717 2.305655 2.546282 2.650594
+1.727818 2.013707 2.167283 2.304214 2.586608 2.652160
+1.676773 1.960528 2.217006 2.368813 2.598284 2.681624
+1.631959 1.915752 2.227040 2.335178 2.603101 2.710218
+1.663857 1.973017 2.124709 2.222354 2.660483 2.724322
+1.542011 1.929582 2.075601 2.170628 2.628551 2.707745
+1.509689 1.706046 2.056908 2.197674 2.578326 2.653903
+1.482072 1.673728 2.131047 2.194868 2.586319 2.690293
+1.423447 1.643267 2.092317 2.178941 2.527205 2.636748
+1.355154 1.565169 2.023932 2.236487 2.538323 2.655495
+1.328421 1.553976 2.081558 2.161922 2.472742 2.656928
+1.330758 1.419042 2.026707 2.129051 2.367999 2.571017
+1.270648 1.377593 2.025948 2.140131 2.389237 2.575945
+1.236825 1.345428 2.022395 2.109848 2.478126 2.633911
+1.222076 1.320425 1.939670 2.021742 2.436807 2.628532
+1.252172 1.358274 1.972621 2.079346 2.371453 2.598928
+1.266234 1.470203 1.930446 2.145813 2.471858 2.618153
+1.332281 1.546411 2.025723 2.219524 2.464616 2.645111
+1.418604 1.649476 2.008305 2.128114 2.489878 2.676868
+1.455677 1.684682 1.988976 2.152647 2.470396 2.651526
+1.447490 1.600650 1.935900 2.271764 2.512990 2.631833
+1.444770 1.556361 2.020377 2.282318 2.475768 2.612336
+1.387476 1.487406 2.024679 2.244659 2.445046 2.582829
+1.353922 1.443279 1.957555 2.171307 2.336106 2.560084
+1.369786 1.447714 2.006181 2.191416 2.404713 2.604727
+1.425956 1.504279 2.072312 2.178177 2.417663 2.603411
+1.440235 1.540501 2.082397 2.211979 2.377070 2.637315
+1.497010 1.582681 2.056522 2.172175 2.389278 2.593845
+1.504963 1.584564 1.984094 2.149333 2.367563 2.559723
+1.519045 1.603989 1.993800 2.109929 2.327255 2.599694
+1.569559 1.651048 1.988942 2.116726 2.345772 2.569917
+1.569894 1.683682 1.980575 2.182917 2.357234 2.587282
+1.607074 1.712704 1.951468 2.125681 2.307168 2.547246
+1.645231 1.736599 1.952360 2.131487 2.376223 2.606463
+1.669612 1.763984 1.979653 2.173233 2.332349 2.516667
+1.632436 1.758871 1.980800 2.124271 2.285899 2.443828
+1.557406 1.667695 1.902055 2.106931 2.260859 2.483917
+1.470421 1.688945 1.846379 2.032834 2.185130 2.375868
+1.421944 1.531479 1.825667 2.026592 2.180382 2.360115
+1.385644 1.606158 1.846365 2.071388 2.488500 2.607454
+1.359715 1.577664 1.897105 2.111958 2.471108 2.603005
+1.339447 1.542640 1.933966 2.133741 2.454906 2.583194
+1.325808 1.691761 2.080233 2.164213 2.474164 2.605215
+1.347146 1.624704 2.074108 2.214395 2.430593 2.562946
+1.314857 1.541837 1.967631 2.164145 2.372693 2.606516
+1.312898 1.534081 1.917285 2.089949 2.411610 2.570672
+1.283019 1.557401 1.937879 2.103338 2.520615 2.623700
+1.138825 1.337472 1.871092 1.972746 2.433484 2.647653
+1.155936 1.281125 1.831346 1.919243 2.266602 2.600943
+1.166841 1.273824 1.843198 1.946026 2.318377 2.578792
+1.172291 1.275007 1.832581 2.025917 2.353813 2.624686
+1.082157 1.265436 1.892357 1.989008 2.383161 2.601421
+1.091903 1.208823 1.835009 2.034461 2.394722 2.562904
+1.098835 1.199487 1.757650 2.065888 2.390403 2.578893
+1.132798 1.244386 1.876625 2.071549 2.339183 2.537916
+1.180603 1.259469 1.823163 2.095055 2.256898 2.542724
+1.186987 1.312908 1.800793 2.105036 2.366989 2.496082
+1.266390 1.377139 1.810434 2.113272 2.329619 2.533152
+1.323586 1.404515 1.904242 2.145928 2.386113 2.580936
+1.352171 1.451401 1.949824 2.077051 2.390820 2.538573
+1.343859 1.452231 1.889889 2.026744 2.317477 2.482486
+1.244808 1.378854 1.792557 1.986745 2.422571 2.536950
+1.124619 1.253596 1.703825 1.951315 2.439640 2.545147
+0.995104 1.411750 1.728505 1.861639 2.456605 2.544957
+1.001072 1.409106 1.797727 1.897572 2.409482 2.555324
+1.033981 1.428160 1.786944 1.880286 2.326359 2.503159
+0.970169 1.320721 1.716642 1.841569 2.220200 2.388916
+0.930477 1.373382 1.798398 1.904734 2.305786 2.525304
+0.939935 1.418455 1.772704 1.878087 2.367491 2.461526
+0.949116 1.527114 1.765903 1.840735 2.164926 2.474337
+0.993353 1.629343 1.813445 1.910215 2.100772 2.492902
+1.013830 1.549621 1.796834 1.891936 2.239760 2.556346
+0.970121 1.509802 1.834006 1.938978 2.338575 2.504346
+0.947238 1.361377 1.783553 1.984713 2.423900 2.547178
+0.980991 1.388783 1.783307 2.131708 2.454635 2.558692
+1.002668 1.402339 1.807195 2.024461 2.464418 2.554280
+1.010697 1.404186 1.872558 2.079362 2.479332 2.569625
+0.972976 1.375802 1.843367 1.980698 2.513609 2.578272
+0.932062 1.277676 1.851126 1.985878 2.466286 2.566260
+0.938577 1.181150 1.833964 1.965034 2.458011 2.550532
+0.940095 1.145447 1.796688 2.078273 2.482897 2.610630
+0.909789 1.074084 1.717403 2.139110 2.462525 2.572261
+0.882446 1.066652 1.729556 2.284662 2.478899 2.555022
+0.938178 1.121504 1.828485 2.234041 2.474778 2.557100
+0.917165 1.283072 1.779497 2.100290 2.475831 2.590182
+1.062938 1.349043 1.762759 2.118297 2.504806 2.606788
+1.186965 1.461900 1.889039 2.112738 2.481323 2.621310
+1.480720 1.619232 1.979483 2.177103 2.436476 2.578983
+1.448723 1.566337 1.880134 2.138534 2.339676 2.554594
+1.407995 1.613546 1.828927 2.052703 2.344501 2.538078
+1.616019 1.691006 1.856347 1.980078 2.548246 2.637759
+1.628171 1.684163 1.886153 2.012867 2.563772 2.621577
+1.595743 1.688011 1.935400 2.025813 2.483630 2.616820
+1.641560 1.708656 1.955460 2.046989 2.519834 2.645741
+1.673668 1.752213 1.951288 2.080918 2.487394 2.640725
+1.656417 1.736239 1.991365 2.098321 2.571908 2.676827
+1.659820 1.732449 1.951246 2.077020 2.581642 2.693515
+1.654803 1.716207 1.966639 2.044230 2.563251 2.680200
+1.602729 1.682614 1.917410 1.994825 2.531087 2.673289
+1.582550 1.639535 1.926100 1.992074 2.532073 2.697110
+1.462370 1.585004 1.818300 1.897553 2.557132 2.706256
+1.453199 1.550734 1.815192 1.916461 2.399968 2.667684
+1.419387 1.557717 1.784441 1.909176 2.511382 2.669980
+1.395165 1.539820 1.847477 1.930837 2.583961 2.703625
+1.348853 1.610875 1.958146 2.043068 2.586086 2.664353
+1.372390 1.658144 1.958657 2.189437 2.450481 2.650316
+1.352586 1.528092 1.923141 2.194837 2.427729 2.562143
+1.380925 1.612272 1.993385 2.176111 2.508934 2.635056
+1.429580 1.686586 2.017126 2.172565 2.486420 2.609268
+1.392123 1.641039 1.952077 2.065066 2.421215 2.574909
+1.399593 1.788262 1.952093 2.098580 2.489935 2.629393
+1.383756 1.662435 1.983097 2.112236 2.532805 2.631814
+1.372732 1.673625 1.912122 2.134246 2.432996 2.612276
+1.396034 1.642619 1.962634 2.197392 2.521323 2.660686
+1.379360 1.623989 2.069404 2.243124 2.562033 2.668437
+1.338665 1.618629 2.042041 2.195119 2.570159 2.699099
+1.294124 1.712084 2.050162 2.120133 2.607839 2.681695
+1.293254 1.596252 1.993414 2.060041 2.583077 2.664144
+1.209917 1.362665 1.955116 2.028347 2.512957 2.625803
+1.381701 1.706617 2.003167 2.146470 2.500026 2.613009
+1.204671 1.734562 1.928802 2.109687 2.476898 2.549090
+1.114491 1.696319 1.888819 2.043672 2.539268 2.637168
+1.119312 1.601460 1.846733 2.085664 2.577543 2.645353
+1.128747 1.531175 1.858280 2.146770 2.596351 2.688725
+1.130254 1.674654 1.830664 2.172114 2.562554 2.672831
+1.100767 1.644406 1.833225 2.040605 2.599334 2.652288
+1.066968 1.530596 1.768634 2.003323 2.617323 2.678055
+1.063119 1.469356 1.797817 1.881851 2.568187 2.679145
+1.177293 1.703277 1.865510 2.061041 2.481068 2.581444
+1.404135 1.657504 1.927058 2.181851 2.457409 2.580431
+1.428360 1.663538 1.984994 2.183449 2.458664 2.569489
+1.403204 1.667154 1.955094 2.146449 2.462636 2.562658
+1.234126 1.597848 1.917754 2.034440 2.407548 2.560257
+1.224528 1.368625 1.848065 1.924719 2.494949 2.670207
+1.214772 1.588344 1.765811 2.003861 2.526784 2.635964
+1.264884 1.636472 1.825225 2.077058 2.563495 2.679292
+1.269611 1.588977 1.782182 2.095015 2.620415 2.691789
+1.296409 1.504336 1.802915 2.013382 2.605687 2.681621
+1.334375 1.520771 1.796606 1.963884 2.600418 2.703744
+1.397570 1.600583 1.845972 1.940123 2.616223 2.696111
+1.430879 1.559075 1.799241 1.994052 2.598948 2.674700
+1.482115 1.583037 1.807507 1.981426 2.575382 2.684729
+1.464344 1.565621 1.776029 1.917627 2.575000 2.659270
+1.455399 1.538232 1.730658 1.882074 2.563750 2.660443
+1.499577 1.584423 1.688069 1.892068 2.587098 2.688675
+1.479760 1.573703 1.695194 2.024437 2.558177 2.639037
+1.452267 1.547118 1.750567 2.072025 2.537014 2.673786
+1.447379 1.563037 1.794376 2.141633 2.353387 2.502548
+1.351721 1.450714 1.730230 1.991889 2.298349 2.463553
+1.318760 1.414624 1.641985 1.948338 2.326246 2.474291
+1.212051 1.346227 1.685099 1.959885 2.322238 2.512951
+1.209021 1.302946 1.634616 1.930848 2.282912 2.507545
+1.188947 1.292823 1.665660 2.177853 2.373563 2.474293
+1.257542 1.451148 1.836011 2.161476 2.447295 2.596642
+1.253420 1.370197 1.833717 2.244743 2.479769 2.576022
+1.179954 1.302011 1.592154 2.151577 2.455959 2.518120
+1.114477 1.257653 1.411579 2.042361 2.548294 2.620409
+1.099986 1.307070 1.407174 2.159418 2.585914 2.649358
+1.131151 1.246857 1.401279 2.116604 2.483756 2.546663
+1.173775 1.340865 1.449901 2.093705 2.561030 2.626482
+1.189575 1.346203 1.465586 2.003540 2.517749 2.575697
+1.217965 1.302991 1.569488 2.028970 2.455729 2.550140
+1.231915 1.393228 1.520464 1.955734 2.476226 2.642241
+1.277177 1.451138 1.591018 1.925992 2.458091 2.566561
+1.216236 1.483117 1.688680 1.988972 2.454628 2.599617
+1.184293 1.553039 1.838890 2.100265 2.385006 2.550049
+1.239174 1.792822 1.959073 2.182600 2.445294 2.529569
+1.624571 1.860854 2.120332 2.219916 2.429410 2.594102
+1.753243 1.889331 2.136521 2.254574 2.436331 2.562459
+1.757269 1.956924 2.242335 2.360108 2.493739 2.587626
+1.806843 1.985195 2.197761 2.338682 2.496335 2.600682
+1.859905 2.030422 2.282537 2.396000 2.548595 2.632629
+1.771104 1.896134 2.306763 2.421261 2.538338 2.625956
+1.505646 1.893235 2.019328 2.325790 2.487965 2.585530
+1.189137 1.771099 1.915068 2.254873 2.534430 2.612783
+1.103999 1.649346 1.834993 1.935938 2.534134 2.651998
+1.079006 1.522445 1.767276 1.934965 2.523135 2.596389
+1.106210 1.608040 1.751444 2.008392 2.491731 2.577152
+1.225135 1.597265 1.857833 2.103611 2.465420 2.593047
+1.375366 1.618359 1.930516 2.214454 2.445564 2.576198
+1.429991 1.698975 1.982144 2.233337 2.490443 2.605353
+1.482797 1.679463 1.997759 2.222400 2.464577 2.586822
+1.407997 1.676636 1.970849 2.221085 2.440364 2.592428
+1.279905 1.618797 1.920986 2.161088 2.438805 2.627424
+0.936959 1.310295 1.663367 2.010101 2.515991 2.597781
+1.014662 1.401511 1.590078 2.080875 2.556905 2.622152
+1.043648 1.384572 1.571501 1.988231 2.568660 2.647893
+1.107266 1.413973 1.562057 1.877144 2.554722 2.637289
+1.179476 1.467385 1.605003 1.839003 2.523485 2.640499
+1.218315 1.412023 1.591634 1.796526 2.519799 2.660570
+1.305370 1.427385 1.614577 1.763694 2.497267 2.657791
+1.338542 1.456340 1.642200 1.862353 2.448789 2.631625
+1.328675 1.442223 1.575230 1.858910 2.470665 2.570433
+1.351215 1.466285 1.601432 1.863743 2.425253 2.500336
+1.360914 1.476484 1.624624 1.832107 2.486273 2.563333
+1.401730 1.499881 1.613403 1.749733 2.423219 2.591408
+1.261551 1.402991 1.523781 1.802043 2.499740 2.605532
+1.160005 1.467049 1.605598 1.787691 2.508050 2.557362
+1.279521 1.535093 1.620574 1.758619 2.409621 2.676419
+1.161358 1.505461 1.626199 1.733096 2.398831 2.617482
+1.184633 1.528528 1.614286 1.698210 2.350337 2.667102
+1.117350 1.538074 1.658450 1.759625 2.281261 2.580678
+1.109838 1.492830 1.701966 1.789832 2.151236 2.489725
+1.010233 1.467118 1.631090 1.886421 2.420021 2.522779
+0.950861 1.336887 1.617005 1.789550 2.449618 2.528894
+1.028468 1.348095 1.571888 1.880393 2.543912 2.608014
+1.110746 1.415658 1.690546 2.005512 2.558177 2.650097
+1.110147 1.432665 1.669404 1.901594 2.516926 2.602743
+1.067829 1.543381 1.719440 1.979004 2.543666 2.617575
+1.422545 1.701061 1.940427 2.327061 2.557612 2.642956
+1.386122 1.781934 2.040679 2.383895 2.573951 2.633463
+1.512775 1.696332 2.184500 2.295985 2.578995 2.677261
+1.571845 1.705242 2.225227 2.319189 2.542604 2.676163
+1.514913 1.844285 2.247341 2.361592 2.529071 2.653297
+1.603580 1.948417 2.271813 2.429600 2.528208 2.617731
+1.620409 2.024184 2.379020 2.477983 2.622963 2.670765
+1.578823 1.906347 2.238314 2.378843 2.556955 2.647118
+1.611136 1.900666 2.185777 2.317384 2.517010 2.610141
+1.554611 1.941431 2.133055 2.249862 2.491762 2.571608
+1.469621 1.918901 2.094184 2.225177 2.490350 2.564343
+1.335366 1.697214 2.017085 2.232317 2.474337 2.571016
+1.221936 1.519055 1.814063 2.129404 2.458290 2.560125
+1.193348 1.426044 1.731637 2.009086 2.485687 2.566097
+1.140861 1.304138 1.724072 1.962123 2.456816 2.673582
+1.171988 1.316998 1.756942 2.050812 2.520621 2.679355
+1.135139 1.410213 1.715289 2.092595 2.499448 2.617713
+1.114534 1.487214 1.595404 2.013785 2.531961 2.628395
+1.185163 1.399888 1.582655 2.195793 2.518380 2.582468
+1.104552 1.423680 1.656289 2.262530 2.593187 2.664012
+1.164305 1.596992 1.717746 2.207846 2.563155 2.621398
+1.022593 1.596460 1.831763 2.287975 2.519037 2.580420
+0.920067 1.656499 1.829222 2.207172 2.535598 2.582536
+0.940069 1.577439 1.960575 2.189248 2.482820 2.549330
+0.824619 1.708493 1.932229 2.188611 2.551880 2.605484
+0.819752 1.688971 1.950607 2.083451 2.463192 2.515870
+0.820934 1.718478 2.021631 2.158415 2.521119 2.576288
+0.860984 1.615689 2.046857 2.146219 2.469888 2.571061
+0.722400 1.647372 1.973155 2.066104 2.438838 2.609071
+0.853506 1.577947 1.949855 2.082839 2.448741 2.512425
+0.745605 1.464510 1.993321 2.077513 2.469178 2.532474
+0.710718 1.533693 1.890047 2.013877 2.425598 2.516390
+0.877569 1.511979 1.831605 2.031903 2.441617 2.517441
+1.259618 1.519519 1.879696 2.138828 2.450290 2.614072
+1.326658 1.670099 1.919340 2.148365 2.362928 2.464453
+1.437714 1.671637 1.955052 2.166713 2.405950 2.557523
+1.603868 1.740291 1.989945 2.198778 2.467525 2.585653
+1.638499 1.743252 2.051089 2.149707 2.462625 2.569332
+1.631833 1.721768 2.002918 2.131145 2.438931 2.569221
+1.603157 1.763192 2.082194 2.174769 2.376719 2.502259
+1.630977 1.703944 2.009215 2.149268 2.369179 2.580570
+1.576599 1.658687 1.922940 2.124950 2.448734 2.578273
+1.516265 1.630706 1.860803 2.127036 2.444402 2.582277
+1.458879 1.547626 1.796080 2.046972 2.378056 2.535592
+1.376657 1.512511 1.733562 2.098209 2.361768 2.452137
+1.134749 1.320184 1.582547 2.052886 2.449062 2.527062
+1.079447 1.164059 1.573367 2.220764 2.500300 2.560928
+1.060468 1.186417 1.456658 2.155790 2.437004 2.526903
+0.974645 1.132811 1.563530 2.089864 2.504612 2.571780
+0.925733 1.049035 1.555693 2.095444 2.541677 2.614171
+1.012861 1.154680 1.283807 2.126165 2.558786 2.595811
+0.970704 1.088894 1.398803 1.969666 2.517460 2.621486
+0.996670 1.155602 1.284230 1.967741 2.478048 2.536750
+1.061875 1.172759 1.296847 1.890131 2.465313 2.550488
+0.971133 1.146895 1.425088 1.823656 2.310199 2.513193
+1.122316 1.246948 1.573931 1.945863 2.350666 2.546107
+1.130444 1.281802 1.711748 2.052845 2.471168 2.568969
+1.285794 1.425185 1.874398 2.085225 2.426111 2.576993
+1.273537 1.490213 1.878772 2.106249 2.402449 2.544368
+1.224244 1.462476 1.904611 2.128189 2.416565 2.570019
+1.252061 1.449849 1.802510 2.119875 2.418885 2.518798
+1.327124 1.417585 1.789962 2.174930 2.340651 2.468715
+1.346777 1.435555 1.734308 2.036035 2.356552 2.531051
+1.235820 1.315959 1.597124 1.897870 2.284217 2.575948
+0.955415 1.303770 1.560187 1.730070 2.449775 2.648120
+0.909089 1.471674 1.624478 1.890973 2.389653 2.627950
+0.919631 1.366873 1.506021 1.842587 2.342002 2.554492
+0.855197 1.279671 1.539553 1.688524 2.386911 2.502065
+0.807057 1.135620 1.541600 1.681299 2.243913 2.510869
+0.849115 1.190235 1.449935 1.541388 2.302579 2.655596
+0.832569 1.273363 1.592481 1.792808 2.284175 2.498482
+0.835449 1.168916 1.544629 1.718930 2.423889 2.632619
+0.826578 1.276188 1.407857 1.660287 2.378044 2.474526
+0.873632 1.360315 1.502868 1.758332 2.570802 2.712262
+0.828320 1.284633 1.462407 1.624198 2.575860 2.705612
+0.866930 1.133312 1.254056 1.429890 2.499289 2.562307
+0.807119 1.218080 1.346012 1.540621 2.487606 2.633103
+0.983680 1.146576 1.336648 1.479310 2.327156 2.614361
+0.991742 1.170728 1.296168 1.485606 2.543050 2.663819
+0.857243 1.172195 1.298593 1.623901 2.581253 2.675646
+1.024459 1.245164 1.335833 1.923956 2.623488 2.689817
+1.035260 1.293064 1.419811 1.882694 2.474976 2.673673
+0.981160 1.239841 1.334553 1.628448 2.544049 2.681735
+0.948338 1.227389 1.360095 1.572061 2.447980 2.668611
+1.097120 1.256099 1.362188 1.632542 2.507787 2.656424
+1.060738 1.283998 1.527933 1.676274 2.540944 2.638141
+0.999111 1.230695 1.531258 1.643979 2.373065 2.634336
+0.900037 1.357157 1.519901 1.691155 2.333453 2.605899
+0.906535 1.200477 1.615255 1.715962 2.288870 2.609565
+0.841267 1.337701 1.721187 1.799125 2.176356 2.627236
+0.950819 1.507117 1.718816 1.826725 2.050526 2.489892
+0.922437 1.447590 1.832061 1.920513 2.148990 2.509573
+0.797637 1.120473 1.756266 1.946112 2.209112 2.535941
+0.821846 1.168739 1.837911 1.977726 2.361612 2.642410
+0.802821 1.394640 1.945588 2.031517 2.337491 2.589953
+0.808599 1.214285 1.878529 2.002325 2.280219 2.577779
+0.825133 1.329296 1.896620 1.979559 2.455746 2.573104
+0.847939 1.235948 1.897295 2.016610 2.422214 2.651151
+0.793266 1.311794 1.885265 1.974869 2.493916 2.699921
+0.835729 1.418115 1.839725 1.903232 2.507962 2.645131
+0.849380 1.476197 1.836815 1.977378 2.321338 2.561101
+0.774570 1.284607 1.758190 1.864424 2.367732 2.561205
+0.896154 1.466437 1.770222 1.871354 2.586553 2.688477
+1.097803 1.576496 1.742325 1.910224 2.160666 2.658455
+0.950720 1.452865 1.760158 1.934774 2.196277 2.624191
+0.947778 1.334777 1.745609 1.830510 2.256113 2.667856
+0.970291 1.214911 1.745935 1.840709 2.268780 2.555177
+1.027483 1.193053 1.655411 1.770558 2.115990 2.502962
+1.108625 1.224039 1.556423 1.705900 2.019067 2.463824
+1.137334 1.248642 1.659896 1.835999 2.087298 2.494018
+1.192784 1.290313 1.652861 1.878632 2.086082 2.615960
+1.231829 1.343294 1.528206 1.646125 1.912160 2.354407
+1.043149 1.380698 1.679143 1.830121 2.008367 2.414010
+1.102887 1.243057 1.747479 1.861385 2.203092 2.504381
+1.049734 1.354368 1.735882 1.819000 2.248805 2.557794
+1.105977 1.571421 1.764806 1.953547 2.428854 2.560105
+1.290846 1.550164 1.837562 2.126596 2.488831 2.600779
+1.194236 1.426699 1.837665 1.914014 2.443207 2.635517
+1.165504 1.260088 1.790938 1.893312 2.400453 2.646643
+1.224955 1.308139 1.825926 1.919493 2.321356 2.695079
+1.248486 1.345382 1.775451 1.876708 2.353719 2.654140
+1.271138 1.399667 1.811535 1.897580 2.403493 2.653922
+1.309100 1.407658 1.806843 1.897827 2.339222 2.632347
+1.291018 1.383330 1.802439 1.887187 2.247718 2.662452
+1.261355 1.370512 1.755969 1.871246 2.101895 2.593588
+1.282645 1.376536 1.775534 1.904499 2.192341 2.507429
+1.361360 1.450864 1.791066 1.906164 2.221501 2.543343
+1.334993 1.431384 1.716268 1.905493 2.089197 2.378260
+1.385673 1.470423 1.765397 1.909217 2.173842 2.456572
+1.364318 1.455064 1.754884 1.871473 2.365039 2.572279
+1.387777 1.486887 1.712089 1.847504 2.243563 2.570692
+1.312448 1.425290 1.622893 1.756780 1.978470 2.367512
+1.347202 1.454345 1.683431 1.825472 2.087917 2.462563
+1.326447 1.405443 1.727641 1.835551 2.328868 2.614333
+1.333108 1.429712 1.796075 1.900347 2.445062 2.652912
+1.322803 1.421588 1.736939 1.843495 2.532120 2.646639
+1.344685 1.431856 1.766206 1.924579 2.550076 2.689857
+1.388277 1.485813 1.711960 1.826211 2.496137 2.658495
+1.411133 1.495610 1.776872 1.876674 2.492586 2.651345
+1.417795 1.491577 1.801693 1.890405 2.442446 2.706992
+1.406122 1.515595 1.757336 1.896968 2.382045 2.633633
+1.425860 1.514813 1.773260 1.901744 2.447546 2.634715
+1.476029 1.555032 1.745731 1.861617 2.398766 2.614978
+1.459852 1.561528 1.786445 1.911235 2.476542 2.591787
+1.403056 1.514189 1.720761 1.900939 2.489890 2.577333
+1.428127 1.523512 1.689756 1.835214 2.458899 2.565972
+1.328956 1.434709 1.604068 1.734252 2.466296 2.566835
+1.241317 1.343249 1.457997 1.696624 2.527818 2.645659
+1.136623 1.311125 1.429957 1.695364 2.542525 2.660410
+1.153111 1.344144 1.690808 1.985929 2.420013 2.553782
+1.231755 1.373918 1.668818 2.117444 2.401907 2.488883
+0.978581 1.115592 1.517126 2.000531 2.449025 2.526020
+0.951081 1.107962 1.208612 1.737223 2.474298 2.611849
+0.981806 1.127841 1.220590 1.720985 2.586528 2.698889
+0.977554 1.224067 1.337758 1.713271 2.593374 2.675408
+0.986078 1.260397 1.407440 1.571486 2.569420 2.631754
+1.068774 1.209396 1.464430 1.557978 2.551351 2.669751
+1.034191 1.174307 1.467256 1.555295 2.460490 2.642259
+1.056632 1.178692 1.509897 1.621544 2.153033 2.540535
+1.108939 1.240242 1.651384 1.778538 2.227605 2.571951
+1.040854 1.397785 1.709633 1.830019 2.398698 2.618954
+1.063080 1.564032 1.695538 1.794688 2.419017 2.577353
+1.156653 1.579890 1.742991 1.888966 2.419007 2.626873
+1.282148 1.604674 1.769820 1.984806 2.290529 2.408545
+1.414961 1.752587 1.937904 2.076787 2.287689 2.502281
+1.561586 1.882695 2.087185 2.199871 2.398595 2.509058
+1.741771 1.963051 2.161078 2.262211 2.516056 2.626131
+1.579553 1.916299 2.201667 2.301679 2.458486 2.648337
+1.656200 1.849299 2.101697 2.302170 2.487760 2.573832
+1.761707 1.935887 2.167102 2.423095 2.531309 2.619774
+1.747342 1.946460 2.129719 2.452120 2.591709 2.681100
+1.664774 1.950714 2.064839 2.452925 2.653282 2.719977
+1.182120 1.806988 2.031810 2.240448 2.589338 2.666952
+0.911793 1.444427 1.938199 2.009542 2.518849 2.662424
+0.906235 1.353950 1.860144 1.948940 2.570343 2.653728
+0.915756 1.182444 1.779374 1.918355 2.495182 2.685238
+0.923262 1.168083 1.705447 2.007985 2.401242 2.584424
+0.915338 1.196101 1.641183 1.957797 2.235160 2.502509
+1.116935 1.269153 1.597465 1.950801 2.129101 2.392503
+1.227147 1.344231 1.809259 1.999158 2.320768 2.545770
+1.307876 1.517973 1.832338 2.042156 2.347761 2.543408
+1.142909 1.427477 1.831520 2.022295 2.356478 2.589639
+1.020209 1.202712 1.780168 2.070788 2.565827 2.661648
+1.087846 1.265956 1.653284 2.093962 2.625661 2.709244
+1.146593 1.234170 1.666291 2.022252 2.605716 2.676253
+1.089057 1.311412 1.647149 1.833847 2.666682 2.722762
+1.188386 1.319963 1.725677 1.806948 2.571193 2.664171
+1.209565 1.358036 1.697429 1.794200 2.470455 2.640229
+1.246047 1.338292 1.695538 1.782003 2.565757 2.666941
+1.261251 1.384481 1.619675 1.779584 2.591799 2.712426
+1.337507 1.450232 1.646992 1.774207 2.578969 2.703367
+1.387688 1.478096 1.618920 1.747276 2.531990 2.665704
+1.301779 1.392643 1.541867 1.665649 2.484537 2.655063
+1.257012 1.398833 1.527358 1.734139 2.619531 2.689676
+1.211161 1.324264 1.664338 1.911508 2.589343 2.685254
+1.113028 1.325407 1.697702 1.940185 2.591124 2.679629
+1.000343 1.352231 1.719494 2.024790 2.577661 2.639096
+0.952537 1.564659 1.914580 2.021105 2.481262 2.553572
+0.941380 1.573371 1.898482 1.990822 2.388399 2.527824
+0.835656 1.426857 1.914902 2.006303 2.455843 2.544426
+0.762518 1.617975 1.848163 1.952719 2.511683 2.576889
+0.760103 1.720246 1.884039 1.972497 2.526184 2.668968
+0.788105 1.515939 1.760885 1.953721 2.498661 2.553903
+0.842390 1.235086 1.687435 2.011114 2.391471 2.529546
+0.970555 1.304880 1.689915 2.060096 2.386014 2.524270
+1.078507 1.220815 1.630394 2.103928 2.411414 2.518300
+1.035130 1.374294 1.739516 2.015391 2.383541 2.542893
+1.232775 1.466122 1.942876 2.112602 2.359872 2.476841
+1.032139 1.460157 1.843607 2.111319 2.405612 2.545609
+0.863004 1.575367 1.754339 2.026425 2.484055 2.545871
+0.781880 1.621135 1.876114 2.131620 2.591150 2.665213
+0.689257 1.567671 1.951319 2.246727 2.507788 2.649956
+0.762920 1.454508 2.052137 2.239950 2.408909 2.570384
+0.735313 1.369541 2.141121 2.226737 2.404256 2.515847
+0.692794 1.213217 2.021728 2.170012 2.409789 2.632609
+0.749191 1.327407 1.876305 2.159813 2.396372 2.543556
+0.723514 1.311926 1.779121 2.000990 2.333064 2.521625
+0.800844 1.399334 1.702525 1.886771 2.183805 2.391837
+0.935365 1.532399 1.746103 1.843273 2.027876 2.366925
+0.879717 1.390978 1.696694 1.873227 2.273388 2.532951
+1.115628 1.395380 1.552486 2.062541 2.379745 2.485662
+1.253460 1.379822 1.726521 2.164899 2.386851 2.507812
+1.288652 1.548609 1.769224 2.106137 2.428838 2.517503
+1.369653 1.611147 1.793668 1.970474 2.367649 2.558036
+1.399028 1.694930 1.865624 2.036762 2.409162 2.586430
+1.433335 1.745725 1.930732 2.159385 2.426554 2.579037
+1.267585 1.665867 1.971379 2.103318 2.444523 2.567741
+1.226120 1.497218 1.888612 2.083592 2.547854 2.623475
+1.217864 1.502320 1.850155 1.973913 2.506017 2.625566
+1.213794 1.595369 1.875039 1.979415 2.427150 2.606463
+1.239752 1.513874 1.766680 1.947926 2.281624 2.492074
+1.247634 1.585626 1.729740 1.894696 2.381964 2.522121
+1.201153 1.474465 1.746568 1.834238 2.289729 2.525183
+1.181465 1.555321 1.703604 1.823083 2.315827 2.443888
+1.196327 1.573762 1.735225 1.808031 2.403501 2.557243
+1.149081 1.631606 1.769163 1.925569 2.368122 2.542814
+1.071093 1.633545 1.761338 1.872468 2.408464 2.573521
+1.065230 1.551738 1.713412 1.880487 2.387426 2.512159
+0.987564 1.635727 1.785940 1.956709 2.413400 2.548618
+0.931677 1.526457 1.773013 1.896960 2.437956 2.513898
+0.900322 1.645882 1.787979 2.041039 2.334273 2.434592
+0.867303 1.714715 1.901607 2.099190 2.387096 2.475894
+0.868278 1.693735 1.917301 2.013076 2.274597 2.382531
+0.848816 1.567192 1.829012 1.929834 2.339398 2.425619
+0.789452 1.369290 1.826862 1.917268 2.414283 2.502071
+0.737031 1.173300 1.873028 1.972833 2.455130 2.541243
+0.759015 1.250729 1.781114 1.994631 2.420436 2.554945
+0.749485 1.363939 1.896372 1.993571 2.442257 2.509848
+0.749379 1.214662 1.940660 2.034076 2.450716 2.568302
+0.801242 1.269156 1.870897 1.955986 2.405162 2.473861
+0.823290 1.258951 1.879861 2.069704 2.411773 2.510105
+0.836531 1.273927 1.957305 2.047469 2.490158 2.582295
+0.834116 1.183883 1.886457 1.969193 2.499483 2.604335
+0.876413 1.171153 1.946619 2.030903 2.431350 2.553010
+0.839364 1.056108 1.853641 2.100590 2.392613 2.554339
+0.864173 1.164684 1.835487 1.968845 2.376306 2.516103
+0.932804 1.294569 1.830951 1.901036 2.445265 2.552572
+0.963048 1.356861 1.768829 1.893219 2.479918 2.614673
+1.037066 1.359723 1.820807 1.891047 2.519312 2.605020
+1.060607 1.462340 1.797954 1.939293 2.521868 2.591879
+1.079923 1.504167 1.802208 1.930535 2.465137 2.543195
+1.140112 1.339064 1.813350 1.905307 2.370068 2.530420
+1.151868 1.356167 1.772359 1.883710 2.370014 2.610806
+1.288085 1.638629 1.751055 2.279923 2.555394 2.623279
+1.451442 1.739489 1.916401 2.388700 2.636146 2.702827
+1.591253 1.851544 2.218282 2.385490 2.593754 2.679427
+1.592264 2.016137 2.233799 2.333758 2.544823 2.665169
+1.654199 1.941575 2.250965 2.372366 2.458905 2.599827
+1.703247 2.025498 2.229596 2.337095 2.468575 2.617655
+1.638815 2.005565 2.201946 2.268461 2.499537 2.618409
+1.924675 2.135325 2.458180 2.504168 2.593838 2.625401
+1.803809 2.062572 2.199354 2.289456 2.550039 2.643916
+1.773011 1.976616 2.107571 2.220874 2.444977 2.543841
+1.764952 2.001727 2.214453 2.254705 2.475610 2.579746
+1.678332 1.863913 2.244638 2.343674 2.471126 2.636086
+1.755810 1.860246 2.223719 2.353060 2.498302 2.586676
+1.693433 1.869241 2.283303 2.395805 2.519741 2.583673
+1.704396 1.791207 2.147185 2.336447 2.479029 2.590894
+1.683258 1.862251 2.163335 2.351843 2.520908 2.616034
+1.623219 1.804206 2.222072 2.360296 2.619900 2.699507
+1.657240 1.825612 2.258489 2.347345 2.545732 2.694714
+1.660069 1.860341 2.253569 2.364116 2.564093 2.630731
+1.596899 1.839512 2.218930 2.385793 2.546468 2.625886
+1.622317 1.851201 1.996215 2.377397 2.522071 2.595493
+1.029466 1.254529 1.748991 2.053525 2.445882 2.576112
+0.856689 0.993818 1.569607 2.213756 2.461855 2.547082
+1.016581 1.191900 1.293465 1.778141 2.455802 2.551646
+1.010542 1.228148 1.311431 1.820284 2.531515 2.656752
+0.908278 1.189582 1.285536 1.858600 2.525918 2.619924
+0.871987 1.171922 1.317490 1.826516 2.400744 2.518087
+1.033124 1.188852 1.439697 2.039008 2.572425 2.656103
+0.970197 1.295635 1.402442 2.035038 2.488178 2.549888
+1.088196 1.220650 1.553062 2.133376 2.535702 2.595055
+1.009947 1.389803 1.517057 2.115221 2.474188 2.550693
+0.993372 1.427374 1.539173 1.972396 2.525839 2.583860
+1.048290 1.482084 1.637176 2.161075 2.523169 2.614712
+1.024326 1.562855 1.692237 2.295162 2.594836 2.648573
+0.907692 1.612559 1.746134 2.162536 2.575745 2.616258
+0.890482 1.611128 1.773927 1.970733 2.577746 2.659601
+0.808392 1.597802 1.785959 2.006399 2.565042 2.638957
+0.766474 1.584421 1.835838 1.929741 2.581539 2.641074
+0.769957 1.626769 1.869258 2.029447 2.602778 2.660482
+0.798945 1.531859 1.834894 1.946531 2.628257 2.692621
+0.720628 1.380228 1.817598 1.895348 2.547755 2.607196
+0.717991 1.301269 1.753273 1.880568 2.501113 2.570677
+0.757538 1.197506 1.719315 1.863401 2.467197 2.580754
+0.753702 1.292466 1.691851 1.775796 2.472592 2.583782
+0.814552 1.234200 1.583851 1.688282 2.546255 2.601382
+0.892573 1.259415 1.548665 1.628711 2.465185 2.557477
+0.949846 1.260567 1.429248 1.620283 2.396748 2.457397
+1.035299 1.244100 1.498240 1.643920 2.381366 2.524331
+1.108074 1.337571 1.538192 1.800588 2.513582 2.617693
+1.182535 1.370472 1.561886 1.844157 2.545726 2.614455
+1.215270 1.374402 1.595386 1.940797 2.512277 2.594163
+1.232828 1.356701 1.648355 2.040665 2.518326 2.606889
+1.295532 1.441002 1.626009 2.063594 2.535454 2.607196
+1.317455 1.484169 1.666626 2.107203 2.509460 2.569563
+1.288135 1.404836 1.708442 2.142397 2.478263 2.558149
+1.301178 1.490634 1.688663 2.209739 2.516570 2.582597
+1.388908 1.488602 1.753074 2.249110 2.468447 2.532735
+1.432358 1.501949 1.756043 2.227378 2.540315 2.633816
+1.270629 1.444250 1.697177 2.167736 2.574168 2.667078
+1.377953 1.511825 1.619242 2.070588 2.580573 2.655449
+1.319093 1.437635 1.575159 1.826257 2.568503 2.646941
+1.273340 1.439378 1.614682 1.977816 2.589179 2.642268
+1.364811 1.491437 1.654641 1.914895 2.277580 2.491707
+1.381399 1.482330 1.625703 1.767453 2.292816 2.535410
+1.316122 1.410804 1.574518 1.696495 2.241547 2.544142
+1.249213 1.448411 1.651606 1.812013 2.166941 2.528826
+1.329985 1.430104 1.637785 1.753696 2.144268 2.491734
+1.212008 1.460184 1.663715 1.723968 2.452735 2.654868
+1.154672 1.427992 1.639839 1.703824 2.524782 2.647191
+1.132193 1.276380 1.638189 1.750734 2.360136 2.630237
+1.106796 1.292196 1.563991 1.737151 2.276384 2.673484
+1.009469 1.409199 1.605253 1.755880 2.549809 2.666897
+0.849242 1.424760 1.607336 1.770467 2.593061 2.697570
+0.884126 1.418674 1.690537 1.910365 2.648893 2.753562
+0.835786 1.505326 1.650834 1.839830 2.667508 2.731820
+0.830887 1.418426 1.698221 1.812786 2.546614 2.605179
+0.770144 1.456185 1.735350 1.839787 2.485317 2.539411
+0.741204 1.461201 1.720258 2.039661 2.613149 2.656617
+0.746126 1.436058 1.674916 1.868865 2.616457 2.659599
+0.785082 1.343492 1.675451 1.756554 2.550054 2.611912
+0.745773 1.354824 1.630019 1.938987 2.453600 2.549079
+0.845780 1.469252 1.629079 1.974969 2.499282 2.549783
+0.949421 1.462768 1.572994 2.286043 2.549581 2.602929
+1.025145 1.385363 1.648388 2.192934 2.440628 2.531024
+1.033724 1.436166 1.744094 2.132259 2.544044 2.618903
+1.082839 1.455838 1.597987 2.003093 2.628262 2.736133
+1.021616 1.380799 1.537805 2.007919 2.656179 2.725478
+0.934605 1.338311 1.721281 2.021380 2.452658 2.635942
+0.974987 1.280603 1.740482 1.988643 2.383388 2.588543
+0.963572 1.358626 1.775093 2.077077 2.374408 2.552547
+1.339392 1.606067 1.941038 2.159799 2.446540 2.587306
+1.268637 1.604063 1.940062 2.178915 2.487660 2.597501
+1.129807 1.522621 1.872974 2.075068 2.479707 2.633172
+1.135346 1.422302 1.865991 1.945310 2.523357 2.686142
+1.135540 1.562266 1.768152 1.922013 2.506054 2.736130
+1.173335 1.637622 1.845405 1.974533 2.379511 2.627590
+1.223094 1.477161 1.799506 1.945290 2.603703 2.697773
+1.285652 1.781420 1.972532 2.335252 2.649620 2.719252
+1.516066 1.862470 2.084987 2.386138 2.563370 2.650523
+1.622511 1.800884 2.074682 2.371099 2.494100 2.608952
+1.644218 1.730914 2.235251 2.344625 2.460604 2.621775
+1.646495 1.743836 2.118671 2.334538 2.487649 2.597304
+1.574474 1.666941 2.165682 2.294626 2.463016 2.642929
+1.568529 1.662679 2.068377 2.240071 2.374784 2.534291
+1.501088 1.675567 2.019200 2.253935 2.403957 2.560212
+1.333222 1.481857 1.810385 2.032438 2.235271 2.464023
+1.184189 1.376469 1.743067 2.077177 2.247370 2.436639
+0.860298 1.017970 1.399466 2.031356 2.445832 2.512045
+0.987543 1.187216 1.324668 2.086564 2.440265 2.507859
+0.987539 1.057392 1.400508 2.291033 2.462013 2.534542
+1.072567 1.168456 1.335425 2.281555 2.595283 2.641991
+1.042424 1.219473 1.328751 2.104394 2.481407 2.544847
+1.075840 1.204873 1.370286 2.206558 2.509524 2.557197
+1.075906 1.188083 1.414337 2.320102 2.530914 2.589422
+1.076149 1.267397 1.411982 2.218421 2.452294 2.540946
+1.154549 1.314810 1.500389 2.300970 2.505189 2.569795
+1.170382 1.300375 1.477782 2.201078 2.418226 2.511009
+1.164826 1.290783 1.436432 2.042173 2.434597 2.517154
+1.193857 1.293191 1.527594 2.008805 2.370813 2.473257
+1.263542 1.385669 1.596130 2.048764 2.427787 2.504082
+1.305187 1.421012 1.658876 2.095853 2.429425 2.518576
+1.378304 1.494361 1.710276 2.078040 2.477964 2.559482
+1.333727 1.475263 1.674044 2.039635 2.446712 2.527050
+1.346152 1.468526 1.673673 1.961087 2.462599 2.567158
+1.324261 1.466904 1.747093 2.009440 2.480558 2.571278
+1.306921 1.411049 1.740784 2.032398 2.466338 2.575794
+1.277304 1.408311 1.715677 1.956928 2.505971 2.597300
+1.239174 1.409858 1.635688 1.843138 2.511337 2.592493
+1.262271 1.377900 1.665878 1.785276 2.414923 2.519101
+1.223772 1.378608 1.706935 1.812010 2.472106 2.553503
+1.248275 1.560969 1.688454 2.024421 2.464682 2.532083
+1.551147 1.674831 1.863917 2.242605 2.425666 2.512306
+1.613538 1.736360 1.915832 2.284340 2.505100 2.575495
+1.675654 1.764549 2.013262 2.308596 2.479308 2.570877
+1.676790 1.732192 2.216913 2.350744 2.516807 2.584938
+1.672091 1.768085 2.170300 2.277530 2.411164 2.492525
+1.645851 1.881233 2.216349 2.320633 2.460809 2.564931
+1.714095 1.933206 2.220117 2.327698 2.453033 2.557432
+1.864162 1.965600 2.211890 2.354075 2.451546 2.543697
+1.840509 1.980901 2.141357 2.275924 2.487833 2.607026
+1.281628 1.508538 1.878088 2.153311 2.510390 2.597723
+1.285937 1.558518 1.895925 2.154502 2.510047 2.628884
+1.179704 1.457966 1.805824 2.088695 2.536834 2.648347
+1.213178 1.474144 1.796481 1.886388 2.426441 2.597142
+1.175759 1.566628 1.786803 1.959634 2.443976 2.621808
+1.241280 1.495544 1.772941 1.959431 2.513639 2.611886
+1.252864 1.547349 1.741300 1.873671 2.447277 2.674639
+1.234254 1.437033 1.742154 1.835750 2.372173 2.581494
+1.262397 1.351279 1.710277 1.833486 2.308910 2.583598
+1.330861 1.424104 1.673893 1.802977 2.271847 2.556762
+1.374920 1.473192 1.703358 1.804519 2.374494 2.625833
+1.350424 1.477644 1.741927 1.869579 2.468162 2.637851
+1.299448 1.409270 1.707326 1.828822 2.412618 2.660075
+1.283675 1.413183 1.694008 1.913840 2.235005 2.663358
+1.131349 1.545449 1.738197 1.927132 2.242548 2.529539
+1.310395 1.445321 1.800815 1.941760 2.224181 2.430698
+1.207823 1.407710 1.792289 1.897833 2.278582 2.588793
+1.172078 1.380374 1.769606 1.870709 2.420713 2.665411
+1.050374 1.292916 1.708676 1.815571 2.398301 2.647835
+1.012196 1.352840 1.710467 1.798435 2.501052 2.622110
+0.949688 1.511315 1.802233 2.051775 2.386590 2.543931
+1.239527 1.523312 1.992644 2.175922 2.535838 2.663321
+1.170409 1.423959 1.918088 2.072957 2.371327 2.600694
+1.153282 1.631638 1.943662 2.041389 2.426287 2.527936
+1.130992 1.687340 1.913097 1.982416 2.366644 2.592156
+0.876015 1.539120 1.952815 2.040387 2.354192 2.592474
+0.741027 1.330783 2.010264 2.088976 2.406380 2.512408
+0.692068 1.220984 1.966843 2.053168 2.527609 2.625367
+0.697907 1.406778 2.016010 2.085819 2.573177 2.652342
+0.747161 1.542479 1.982188 2.091091 2.573313 2.614600
+0.759939 1.518111 1.938220 2.162963 2.534355 2.639085
+0.752015 1.445930 2.097743 2.150626 2.479886 2.587138
+0.804190 1.428522 2.012448 2.195806 2.470749 2.577263
+0.757784 1.356544 1.878177 2.232246 2.530996 2.630296
+0.782189 1.251703 1.766911 2.206553 2.564453 2.617695
+0.692136 1.308291 1.593024 1.842927 2.504334 2.652647
+0.779817 1.264995 1.689687 1.803686 2.530498 2.669456
+0.774734 1.199620 1.649586 1.726576 2.437097 2.591528
+0.885025 1.311938 1.646470 1.739192 2.578721 2.671994
+0.949387 1.387109 1.641927 1.762570 2.528769 2.585787
+1.012043 1.455355 1.666729 1.752575 2.434270 2.553516
+1.104075 1.529375 1.682092 1.973044 2.345511 2.511577
+1.423997 1.619409 1.995513 2.298913 2.430779 2.521288
+1.582461 1.832072 2.275101 2.383131 2.482800 2.539316
+1.706366 2.001667 2.300029 2.394812 2.486966 2.586945
+1.532256 1.933761 2.284009 2.422313 2.622936 2.706043
+1.678938 1.889060 2.338973 2.512967 2.632369 2.679498
+1.634405 1.783714 2.124182 2.462997 2.610348 2.691361
+1.618353 1.751021 2.026128 2.418017 2.609402 2.678953
+1.565199 1.794303 1.902067 2.405664 2.629332 2.696870
+1.282138 1.591250 1.852032 2.314230 2.617777 2.722940
+1.220365 1.421679 1.694336 1.881742 2.556796 2.653179
+1.139402 1.299007 1.622371 1.770432 2.543866 2.640704
+1.214491 1.467423 1.628034 1.794008 2.563409 2.691705
+1.059626 1.521805 1.631948 1.865161 2.601036 2.683659
+1.180200 1.536587 1.671861 2.137961 2.587647 2.638393
+1.213651 1.582110 1.709505 2.157513 2.476799 2.574007
+1.248459 1.553050 1.645298 1.897537 2.577761 2.681279
+1.340584 1.601427 1.679985 1.889143 2.647088 2.755132
+1.194554 1.575563 1.697528 1.801365 2.596516 2.752368
+1.152988 1.531378 1.716414 1.812718 2.417149 2.696455
+1.175284 1.565269 1.657415 1.734779 2.517977 2.671209
+1.315878 1.515976 1.775170 2.058078 2.307304 2.449295
+1.247131 1.381271 1.568357 1.857012 2.157278 2.435014
+1.240254 1.383648 1.580575 1.991473 2.303569 2.411055
+1.286797 1.385847 1.730704 2.067540 2.326906 2.473042
+1.204107 1.337886 1.665492 2.038754 2.231416 2.543395
+1.182343 1.312111 1.522260 1.971028 2.237772 2.483629
+1.095429 1.319910 1.465710 2.032595 2.279936 2.523638
+1.152497 1.294508 1.458307 2.032534 2.306031 2.406760
+0.991441 1.274662 1.428222 1.940576 2.399100 2.509374
+0.850157 1.274723 1.453729 1.893527 2.382294 2.477664
+0.936060 1.313211 1.426739 1.888973 2.551745 2.604392
+0.972592 1.328333 1.432833 2.011050 2.573671 2.613672
+0.909400 1.422756 1.494628 2.073945 2.620634 2.662685
+0.828475 1.431701 1.569493 2.054254 2.622115 2.669741
+0.779249 1.375673 1.476635 1.949187 2.558998 2.622137
+0.815710 1.472687 1.650494 2.000905 2.565206 2.611683
+0.822357 1.333508 1.551653 1.864184 2.595847 2.706122
+0.736497 1.259887 1.490815 1.882220 2.494405 2.619982
+0.902240 1.431002 1.520505 1.910794 2.605395 2.678585
+0.900488 1.363048 1.461814 2.009771 2.665876 2.717180
+1.015394 1.361530 1.474854 1.920438 2.637482 2.702570
+0.950918 1.335184 1.440876 1.874351 2.678915 2.746244
+0.965674 1.306906 1.412895 1.727184 2.656317 2.739472
+1.121335 1.291332 1.412980 1.731394 2.624577 2.735999
+1.135486 1.299970 1.448634 1.635793 2.616713 2.687744
+1.120410 1.248201 1.383680 1.579760 2.397167 2.585237
+1.113415 1.294499 1.482373 1.602789 2.394835 2.634809
+1.241746 1.318174 1.473167 1.577503 2.426003 2.649775
+1.184376 1.272893 1.497747 1.608053 2.144455 2.537267
+1.283135 1.377322 1.543041 1.645177 2.105790 2.490904
+1.138008 1.380756 1.560480 1.640979 2.271006 2.625523
+1.243884 1.351538 1.603070 1.739791 2.038080 2.447512
+1.267258 1.509957 1.641649 1.831984 2.331327 2.472826
+1.276365 1.476401 1.625021 1.930342 2.319377 2.524369
+1.222679 1.559407 1.669982 1.805473 2.326911 2.580278
+1.265218 1.503892 1.830979 2.091536 2.396722 2.569088
+1.256047 1.528877 1.853033 2.106171 2.365139 2.503280
+1.236501 1.479118 1.728297 2.041463 2.528558 2.612900
+1.220644 1.605193 1.713770 1.950925 2.597639 2.649495
+1.255546 1.591871 1.706750 2.062713 2.561381 2.626901
+1.307080 1.580016 1.653547 1.941293 2.552727 2.643706
+1.310968 1.512803 1.656527 1.839190 2.592097 2.677706
+1.188596 1.316082 1.579370 1.690772 2.438500 2.641881
+1.114671 1.235994 1.591973 1.749192 2.359438 2.545213
+1.080067 1.277132 1.727997 2.041411 2.337068 2.549786
+1.032222 1.250210 1.680999 1.998340 2.318533 2.502200
+1.064719 1.159182 1.666731 2.019294 2.256570 2.573467
+1.026313 1.146367 1.672929 2.054063 2.433228 2.615716
+0.942929 1.092789 1.613522 2.077784 2.365142 2.499737
+0.980250 1.254777 1.492003 1.801193 2.445325 2.575711
+0.957395 1.251868 1.378337 1.744574 2.502966 2.665866
+0.840336 1.267995 1.397728 1.827984 2.555867 2.651285
+1.009902 1.175808 1.277770 2.048361 2.637904 2.700904
+0.883840 1.026780 1.146692 1.893681 2.518692 2.610564
+0.997171 1.138289 1.246408 1.837527 2.549820 2.642693
+0.992125 1.178874 1.282272 1.974399 2.559112 2.612968
+1.067589 1.255803 1.359021 1.963939 2.541420 2.596308
+1.086327 1.329068 1.432326 1.928840 2.528332 2.598239
+1.100351 1.345579 1.469529 1.942358 2.469723 2.561680
+1.101019 1.374382 1.561144 1.942560 2.484288 2.552996
+1.177497 1.455165 1.571485 1.943496 2.500309 2.550902
+1.260768 1.477903 1.601611 2.024022 2.487425 2.554237
+1.216439 1.470082 1.639601 1.957212 2.523832 2.588189
+1.257980 1.407199 1.651434 1.910722 2.464200 2.620868
+1.162091 1.436543 1.682166 1.896924 2.447302 2.677069
+1.250215 1.484632 1.653870 1.930473 2.493894 2.633436
+1.237977 1.513389 1.648781 1.880344 2.504094 2.581491
+1.223199 1.412456 1.634083 1.797183 2.451210 2.620618
+1.258745 1.358397 1.627717 1.726099 2.428287 2.621329
+1.234919 1.345606 1.552151 1.708675 2.385742 2.606052
+1.186417 1.341808 1.636911 1.754679 2.429716 2.544394
+1.216260 1.305888 1.632777 1.755770 2.320806 2.583785
+1.165343 1.284152 1.560527 1.682036 2.243217 2.494673
+1.085859 1.215111 1.590602 1.715333 2.231633 2.527227
+1.091652 1.384156 1.655159 1.716563 2.302785 2.535552
+1.060328 1.239077 1.627213 1.737571 2.420162 2.599147
+1.090079 1.394777 1.682485 1.799904 2.331813 2.532862
+1.169038 1.568116 1.785725 2.031553 2.372207 2.497865
+1.241903 1.662080 1.822491 2.169543 2.424542 2.525186
+1.040287 1.690414 1.853098 2.038593 2.472015 2.535969
+0.974879 1.689063 1.850137 2.151312 2.507415 2.562538
+0.879683 1.743838 1.968060 2.161147 2.463916 2.545849
+0.790116 1.794412 2.037297 2.159739 2.508403 2.564883
+0.793374 1.796169 2.060524 2.331075 2.591299 2.648578
+0.859332 1.800464 2.025451 2.200641 2.534316 2.611320
+0.825206 1.895126 2.063579 2.264528 2.514030 2.610797
+0.974068 1.904781 2.002639 2.315848 2.539666 2.595157
+0.961311 1.821283 2.015215 2.274545 2.600786 2.653365
+0.971040 1.737011 1.914953 2.243896 2.572362 2.612602
+0.999552 1.817902 1.953097 2.178591 2.574331 2.626275
+0.977300 1.756036 1.929137 2.135346 2.424209 2.556085
+1.065543 1.747638 1.899169 2.309745 2.587388 2.630589
+1.077057 1.655717 1.868334 2.238603 2.508913 2.571841
+1.077829 1.716423 1.791462 2.266223 2.615485 2.654046
+1.276021 1.713383 1.788825 2.101442 2.625616 2.679590
+1.263173 1.699086 1.776931 2.035107 2.610346 2.653421
+1.297137 1.667668 1.744010 2.030119 2.608062 2.678066
+1.262373 1.626459 1.781159 2.026178 2.636261 2.699179
+1.318031 1.657767 1.763578 1.939043 2.575450 2.705613
+0.980669 1.555891 1.722977 1.978553 2.568958 2.638420
+0.840013 1.463397 1.772781 2.164864 2.566894 2.666228
+0.832158 1.505750 1.937891 2.233974 2.630131 2.694884
+0.745541 1.530097 2.060727 2.162996 2.619130 2.692130
+0.832050 1.597985 2.127678 2.196662 2.528870 2.619304
+0.820544 1.616482 2.044842 2.133557 2.587661 2.668155
+0.789348 1.638569 1.996032 2.212800 2.572934 2.615430
+0.806795 1.742530 2.043915 2.183841 2.603407 2.660269
+0.843597 1.761377 1.998823 2.132969 2.596500 2.673163
+0.927714 1.759399 1.987169 2.201990 2.591677 2.650810
+1.070504 1.767115 1.978295 2.227191 2.642696 2.686380
+1.022852 1.856828 1.989822 2.217218 2.480936 2.574687
+0.886409 1.742690 1.863071 2.054904 2.542328 2.627054
+0.996501 1.553639 1.808061 1.948514 2.516726 2.605745
+1.218221 1.525015 1.878023 2.107205 2.423952 2.578894
+1.274705 1.491779 1.906237 2.101242 2.455724 2.563566
+1.319477 1.587082 1.879825 2.240443 2.439462 2.547992
+1.474513 1.699004 1.929257 2.228217 2.451873 2.563132
+1.545274 1.722709 1.892103 2.169162 2.520241 2.602958
+1.546160 1.668894 1.961486 2.212079 2.505999 2.621266
+1.535625 1.699287 2.016356 2.250824 2.550093 2.645619
+1.583411 1.687746 2.051949 2.332633 2.491721 2.598036
+1.500933 1.594052 1.929231 2.259850 2.422622 2.547761
+1.464918 1.614783 1.881701 2.216729 2.528952 2.623217
+1.406726 1.605026 1.805977 2.222725 2.509009 2.587841
+1.106418 1.527781 1.730182 2.045916 2.549464 2.637497
+1.008151 1.439718 1.665472 1.941372 2.652442 2.751095
+0.971347 1.402084 1.708896 1.953274 2.613325 2.684989
+0.946352 1.501044 1.672151 1.975870 2.527905 2.585573
+0.909229 1.453576 1.713898 2.065638 2.529315 2.613161
+0.975079 1.523288 1.839559 2.138553 2.498690 2.583725
+0.899524 1.552407 1.831637 2.068567 2.544880 2.611180
+0.805175 1.462327 1.860536 2.101344 2.570440 2.654850
+0.859011 1.514531 1.892400 2.012520 2.579679 2.648521
+0.763528 1.522433 1.902539 2.018517 2.556446 2.609582
+0.814387 1.494849 1.941715 2.077981 2.540329 2.612839
+0.853805 1.401871 1.942985 2.088086 2.488394 2.578614
+0.782036 1.348553 1.935300 2.025076 2.516816 2.598046
+0.754386 1.384949 1.900243 1.999656 2.600374 2.663763
+0.746921 1.421143 1.934567 2.038908 2.553273 2.612298
+0.731911 1.450761 1.924508 2.032744 2.497904 2.556491
+0.706741 1.543731 1.876596 1.992525 2.510176 2.565960
+0.852548 1.549952 1.899169 2.226497 2.522787 2.583939
+0.885718 1.656999 1.865791 2.162889 2.467388 2.553769
+0.951271 1.641721 1.813995 2.153059 2.427099 2.499612
+0.928485 1.502784 1.809440 2.224767 2.472400 2.553921
+0.816616 1.391098 1.665580 2.176141 2.510722 2.582819
+0.915934 1.390936 1.767514 2.169548 2.471665 2.652526
+1.115341 1.362311 1.722592 2.033033 2.406363 2.601875
+1.138664 1.252976 1.684517 1.937366 2.384311 2.623900
+1.084318 1.211953 1.633639 1.889936 2.413095 2.626228
+1.126224 1.344921 1.648605 2.071123 2.484189 2.605656
+1.123905 1.461556 1.845099 2.172457 2.462662 2.605139
+1.132557 1.468636 1.740223 2.184934 2.467938 2.580103
+1.148248 1.506173 1.676602 2.049290 2.446774 2.565419
+0.999544 1.404698 1.641769 1.863324 2.523843 2.592114
+0.932167 1.395984 1.709428 1.845739 2.524792 2.599616
+0.870085 1.476327 1.721511 1.897091 2.490256 2.593759
+0.891107 1.429106 1.789728 1.958425 2.519104 2.604987
+0.855550 1.421268 1.900935 2.011013 2.546617 2.609760
+0.895038 1.482579 1.873572 1.974828 2.519429 2.584450
+0.809092 1.486499 1.902272 2.000876 2.518374 2.597261
+0.808211 1.460169 1.881579 1.961398 2.468386 2.616332
+0.774237 1.471857 1.901217 2.013761 2.564870 2.665691
+0.800018 1.576948 1.938176 2.043718 2.494383 2.630097
+0.804705 1.570759 1.889356 1.975489 2.447653 2.555191
+0.840709 1.603377 1.827077 2.026318 2.442892 2.492424
+0.887288 1.536144 1.781616 1.952198 2.500811 2.576512
+0.847527 1.504701 1.792948 1.891589 2.578888 2.637316
+0.959025 1.533821 1.821486 1.979739 2.463750 2.544302
+1.036319 1.640786 1.886024 1.962887 2.358662 2.577756
+0.981142 1.486738 1.733096 1.878277 2.537973 2.610473
+1.046486 1.438515 1.740840 1.850012 2.590883 2.684137
+1.103404 1.489782 1.738241 1.817496 2.588368 2.701052
+1.176925 1.473684 1.732853 1.823270 2.524527 2.733540
+1.173320 1.438383 1.696555 1.792536 2.580785 2.665770
+1.134955 1.421862 1.604070 1.756135 2.617948 2.706644
+1.136007 1.384178 1.699100 1.855319 2.591013 2.683215
+1.201710 1.421935 1.737864 2.011199 2.540959 2.681093
+1.227450 1.624461 2.125226 2.340556 2.593435 2.671453
+1.265133 1.765689 2.131338 2.391774 2.613959 2.699849
+1.342282 1.581411 1.979244 2.297759 2.520391 2.602258
+1.449013 1.725546 2.176279 2.354739 2.538758 2.627319
+1.418726 1.898681 2.206330 2.275600 2.488746 2.586794
+1.555706 1.837600 2.165743 2.346188 2.530178 2.628757
+1.444437 1.790050 1.911014 2.301915 2.468862 2.540557
+1.378052 1.668499 1.845265 2.324889 2.537708 2.601471
+1.394741 1.682710 1.817346 2.075533 2.512120 2.566889
+1.297199 1.655884 1.825405 2.062105 2.513307 2.577371
+1.280659 1.669901 1.824567 2.168209 2.528166 2.601986
+1.306896 1.600808 1.767971 2.095291 2.509869 2.606002
+1.257678 1.559755 1.787804 2.076895 2.540388 2.627179
+1.196849 1.597550 1.817421 2.152662 2.580796 2.651246
+1.235935 1.676643 1.942307 2.326482 2.561542 2.645593
+1.189058 1.818895 2.081496 2.366454 2.608018 2.672086
+1.427589 1.885421 2.264907 2.424220 2.571371 2.651155
+1.714473 1.937868 2.390009 2.457149 2.552016 2.601930
+1.874136 2.073506 2.370468 2.511263 2.709177 2.749495
+1.647818 1.987798 2.281909 2.412099 2.604693 2.674821
+1.596366 1.881529 2.193995 2.380524 2.511918 2.584564
+1.555508 1.775218 2.064094 2.325699 2.512934 2.599262
+1.330054 1.712961 1.917624 2.285900 2.466591 2.579279
+0.990071 1.410874 1.632331 1.965889 2.466882 2.580417
+0.925150 1.299025 1.551401 1.897486 2.498481 2.645212
+0.968080 1.367127 1.520360 1.988159 2.313473 2.546943
+0.974374 1.283811 1.474810 2.078302 2.331089 2.455153
+1.000624 1.299150 1.415675 1.955760 2.261550 2.354258
+0.964045 1.136490 1.305931 1.936406 2.197537 2.299418
+1.013087 1.201143 1.372664 1.820179 2.063576 2.210659
+1.086478 1.216705 1.476655 1.604039 1.855963 2.324503
+1.090160 1.201207 1.460778 1.562225 2.016093 2.458980
+1.133754 1.257469 1.407186 1.787681 2.289532 2.530854
+1.134831 1.341221 1.636293 1.813775 2.219453 2.584652
+0.952747 1.300930 1.616891 1.751014 2.352113 2.547879
+1.078704 1.490043 1.571579 1.800532 2.468175 2.650436
+1.239045 1.333032 1.551379 1.707824 2.242922 2.604251
+1.176517 1.299114 1.588881 1.714081 2.128856 2.533523
+1.135831 1.253056 1.538412 1.634480 2.258093 2.593874
+1.092382 1.253236 1.541772 1.679875 2.423197 2.617584
+1.142663 1.256402 1.528284 1.629676 2.391580 2.589689
+1.172793 1.281248 1.479204 1.608878 2.335938 2.593681
+1.146782 1.251953 1.432916 1.553285 2.238941 2.534180
+1.109946 1.231415 1.412105 1.516055 2.308569 2.599903
+1.120273 1.235535 1.425736 1.509519 2.435529 2.643814
+1.085869 1.189296 1.392718 1.494347 2.129342 2.508989
+1.020500 1.173144 1.440965 1.574421 2.335855 2.524051
+1.040551 1.174338 1.525717 1.693110 2.493748 2.632352
+1.034516 1.205262 1.365087 1.513000 2.471788 2.578008
+1.079383 1.204002 1.332428 1.456604 2.502131 2.665633
+1.088863 1.236949 1.357003 1.564945 2.602020 2.707576
+1.106792 1.262402 1.367273 1.823952 2.598579 2.676300
+1.085013 1.233527 1.311463 1.730333 2.560087 2.690320
+1.069205 1.180224 1.343020 1.474834 2.268046 2.544311
+1.039392 1.375617 1.721445 2.038018 2.463998 2.600812
+1.267853 1.384109 1.659902 1.934021 2.207761 2.424577
+1.225276 1.316621 1.678147 1.819230 2.165345 2.498548
+1.114141 1.283029 1.655518 1.879671 2.352472 2.553537
+1.094762 1.370017 1.799126 2.082377 2.469494 2.578819
+1.041250 1.472757 1.748735 2.047588 2.511699 2.589828
+1.071665 1.456546 1.700524 1.927317 2.441484 2.607003
+0.929006 1.487241 1.669550 1.885619 2.544274 2.628318
+0.844366 1.339712 1.812456 2.300208 2.566012 2.631255
+0.761441 1.279951 1.670446 2.006350 2.526824 2.607557
+0.716643 1.374843 1.843436 2.126958 2.552993 2.613146
+0.749967 1.598458 1.883266 2.050443 2.579184 2.614111
+0.759376 1.596383 1.929103 1.984550 2.566734 2.654207
+0.724977 1.682905 1.888292 2.034796 2.503861 2.565502
+0.812327 1.669865 1.961771 2.102146 2.538781 2.598559
+0.767334 1.594629 1.984319 2.133419 2.501689 2.557813
+0.760230 1.650647 1.928366 2.094047 2.565241 2.596082
+0.766762 1.648062 1.858552 2.078593 2.587079 2.608213
+0.860938 1.629253 1.824855 2.067350 2.563373 2.603209
+0.960953 1.583632 1.752206 2.078444 2.555531 2.628507
+1.007927 1.548004 1.734955 2.185660 2.489350 2.551445
+1.040401 1.471117 1.643519 2.051558 2.508524 2.579168
+1.096025 1.457427 1.604009 1.926200 2.482033 2.552204
+1.130428 1.431534 1.592806 2.014740 2.510652 2.567779
+1.197898 1.465481 1.622929 2.075950 2.507052 2.582750
+1.258831 1.504797 1.659109 1.970653 2.595750 2.685651
+1.315451 1.467446 1.705718 1.898634 2.602572 2.704978
+1.272475 1.431894 1.712848 1.940258 2.650379 2.717166
+1.278865 1.528652 1.796202 1.995202 2.501761 2.587606
+1.458616 1.693943 2.067903 2.264838 2.506857 2.623939
+1.718797 1.909611 2.147601 2.354174 2.485581 2.591269
+1.813873 1.875483 2.097637 2.329683 2.497798 2.596247
+1.744286 1.859449 2.043169 2.284589 2.430897 2.538572
+1.514180 1.808296 1.933791 2.234651 2.462232 2.546237
+1.489264 1.781194 1.908004 2.144484 2.418589 2.513858
+1.434785 1.679793 1.817348 2.105365 2.431372 2.528241
+1.469581 1.589507 1.813510 2.213129 2.440502 2.520511
+1.496287 1.640049 1.893865 2.298621 2.484705 2.576207
+1.333417 1.584728 1.893019 2.121814 2.525345 2.632617
+1.518722 1.735840 1.956529 2.176426 2.465338 2.572342
+1.520953 1.742556 2.010582 2.133578 2.447458 2.566704
+1.458119 1.692227 2.001920 2.120543 2.431042 2.565112
+1.526915 1.662389 2.025135 2.125056 2.537873 2.626810
+1.498303 1.644212 1.960732 2.103288 2.440309 2.572412
+1.415476 1.548286 1.770800 2.099931 2.450265 2.599463
+1.367188 1.460632 1.739482 2.074030 2.551953 2.639997
diff --git a/gr-vocoder/lib/codec2/codebook/lsp8910.txt
b/gr-vocoder/lib/codec2/codebook/lsp8910.txt
deleted file mode 100644
index 759136b..0000000
--- a/gr-vocoder/lib/codec2/codebook/lsp8910.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-3 64
-2.048073 2.534502 2.645915
-2.019670 2.269744 2.605462
-1.961101 2.329646 2.562857
-1.968573 2.532712 2.616918
-2.183480 2.514381 2.629582
-2.259379 2.516615 2.620410
-2.172791 2.462460 2.567064
-2.097666 2.303933 2.421685
-2.052990 2.353242 2.546992
-2.043642 2.232362 2.499262
-2.106151 2.393131 2.488401
-2.099167 2.437862 2.558655
-2.013877 2.422875 2.530071
-2.033848 2.483776 2.584598
-2.114474 2.516856 2.602372
-2.229214 2.584056 2.678855
-2.131151 2.584299 2.674845
-1.472721 2.477091 2.630241
-2.010907 2.598415 2.682989
-2.353653 2.524066 2.619773
-2.419897 2.623938 2.699605
-2.319080 2.602148 2.689044
-1.860342 2.503881 2.616576
-1.910517 2.386693 2.610126
-1.748689 2.371809 2.496542
-1.618495 2.403425 2.554956
-1.844073 2.437026 2.533443
-1.924810 2.388543 2.502698
-1.937227 2.258363 2.501697
-1.687554 2.209123 2.545239
-1.851950 2.278628 2.565632
-1.868154 2.330150 2.444883
-1.874180 2.213118 2.351940
-1.757311 2.030626 2.433836
-1.650306 2.152371 2.243421
-1.612794 1.884686 2.339313
-1.745431 2.278895 2.389449
-1.590923 2.304155 2.408510
-1.475982 2.275548 2.509897
-1.508695 2.045463 2.455520
-1.872054 2.061777 2.246202
-1.983947 2.159155 2.445535
-1.745180 2.483765 2.593698
-1.900116 2.079600 2.407479
-1.841672 2.167042 2.486827
-1.932912 2.148464 2.569850
-2.134174 2.363673 2.584252
-2.106094 2.450645 2.638417
-1.954135 2.460313 2.666512
-1.907634 2.573801 2.674025
-1.625579 2.539569 2.656363
-1.785866 2.572616 2.676082
-1.798447 2.376454 2.624298
-2.020033 2.397244 2.619868
-1.946581 2.468791 2.564185
-2.008920 2.342400 2.469132
-1.983846 2.271044 2.395408
-1.988039 2.154150 2.317920
-2.077197 2.216622 2.389101
-2.117255 2.283907 2.512242
-2.177233 2.334622 2.458268
-2.214655 2.425510 2.620013
-2.199931 2.390272 2.520731
-2.271755 2.448682 2.552649
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt1.txt
b/gr-vocoder/lib/codec2/codebook/lspdt1.txt
new file mode 100644
index 0000000..ba30880
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt1.txt
@@ -0,0 +1,9 @@
+1 8
+-75
+-50
+-25
+ 0
+ 25
+ 50
+ 75
+100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt10.txt
b/gr-vocoder/lib/codec2/codebook/lspdt10.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt10.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt2.txt
b/gr-vocoder/lib/codec2/codebook/lspdt2.txt
new file mode 100644
index 0000000..ba30880
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt2.txt
@@ -0,0 +1,9 @@
+1 8
+-75
+-50
+-25
+ 0
+ 25
+ 50
+ 75
+100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt3.txt
b/gr-vocoder/lib/codec2/codebook/lspdt3.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt3.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+ 0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt4.txt
b/gr-vocoder/lib/codec2/codebook/lspdt4.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt4.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+ 0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt5.txt
b/gr-vocoder/lib/codec2/codebook/lspdt5.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt5.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+ 0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt6.txt
b/gr-vocoder/lib/codec2/codebook/lspdt6.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt6.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+ 0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt7.txt
b/gr-vocoder/lib/codec2/codebook/lspdt7.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt7.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt8.txt
b/gr-vocoder/lib/codec2/codebook/lspdt8.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt8.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt9.txt
b/gr-vocoder/lib/codec2/codebook/lspdt9.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt9.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt
b/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt
new file mode 100644
index 0000000..e4e500c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt
@@ -0,0 +1,8317 @@
+6 3369
+1400.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1400.0 1900.0 2400.0 2500.0 3200.0 3400.0
+1400.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1400.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2600.0 3200.0 3300.0
+1400.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1600.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1800.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1900.0 2000.0 2200.0 2600.0 3300.0 3400.0
+1700.0 2000.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2600.0 2900.0 3200.0 3300.0
+1600.0 2000.0 2500.0 2800.0 3200.0 3400.0
+1500.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2400.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1500.0 2200.0 2300.0 3100.0 3300.0
+1200.0 1500.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1500.0 2100.0 2300.0 3000.0 3200.0
+1300.0 1600.0 2000.0 2200.0 3000.0 3200.0
+1400.0 1700.0 2000.0 2300.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2300.0 3200.0 3300.0
+1300.0 1600.0 1900.0 2100.0 3100.0 3200.0
+1200.0 1500.0 2100.0 2300.0 3200.0 3300.0
+1500.0 1800.0 2000.0 2300.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2400.0 3300.0 3400.0
+1200.0 1500.0 2200.0 2400.0 3200.0 3400.0
+1200.0 1500.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1500.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1500.0 2200.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1700.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2600.0 2700.0 3100.0 3200.0
+1900.0 2300.0 2600.0 2900.0 3200.0 3300.0
+2000.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1900.0 2300.0 2500.0 2900.0 3300.0 3400.0
+1800.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2500.0 3200.0 3400.0
+1500.0 1800.0 2400.0 2600.0 3100.0 3400.0
+1800.0 2100.0 2600.0 2900.0 3300.0 3500.0
+2000.0 2500.0 2700.0 3000.0 3400.0 3500.0
+2200.0 2500.0 2700.0 3100.0 3300.0 3400.0
+2300.0 2500.0 2700.0 3100.0 3300.0 3400.0
+2100.0 2500.0 2600.0 3000.0 3200.0 3300.0
+2100.0 2400.0 2500.0 3000.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2800.0 3100.0 3300.0
+1600.0 1900.0 2200.0 2800.0 3000.0 3200.0
+1500.0 1900.0 2100.0 2700.0 3000.0 3200.0
+1400.0 1900.0 2000.0 2600.0 3000.0 3100.0
+1200.0 1600.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2400.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2400.0 3100.0 3400.0
+1600.0 1700.0 2200.0 2400.0 3200.0 3400.0
+1700.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1700.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2100.0 2400.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2300.0 3000.0 3100.0
+1400.0 1700.0 2100.0 2500.0 3000.0 3200.0
+1000.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1100.0 1700.0 2400.0 2500.0 3300.0 3400.0
+1500.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1300.0 1600.0 1800.0 2600.0 2900.0 3100.0
+1300.0 1600.0 1900.0 2200.0 2900.0 3000.0
+1500.0 1700.0 2200.0 2500.0 2900.0 3000.0
+1500.0 1600.0 2100.0 2400.0 2900.0 3100.0
+1500.0 1600.0 2000.0 2600.0 3000.0 3100.0
+1600.0 1700.0 2100.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2500.0 3300.0 3400.0
+1700.0 1900.0 2200.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1700.0 2100.0 2400.0 2600.0 3100.0 3300.0
+1700.0 2100.0 2400.0 2600.0 3200.0 3400.0
+1400.0 1600.0 2300.0 2400.0 3300.0 3400.0
+1300.0 1400.0 2100.0 2200.0 2900.0 3200.0
+1000.0 1300.0 2200.0 2300.0 3200.0 3400.0
+1600.0 2000.0 2300.0 2600.0 2800.0 3100.0
+1600.0 2000.0 2300.0 2600.0 2900.0 3200.0
+1600.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1700.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1600.0 1900.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1500.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1500.0 2000.0 2300.0 2700.0 3100.0 3300.0
+2000.0 2500.0 2700.0 2900.0 3300.0 3400.0
+2000.0 2400.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2300.0 2600.0 2800.0 3300.0 3400.0
+1400.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1500.0 2000.0 2300.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2400.0 2900.0 3300.0
+1500.0 1700.0 2200.0 2400.0 3000.0 3200.0
+1400.0 1800.0 2200.0 2400.0 3000.0 3300.0
+1400.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1200.0 1500.0 2100.0 2400.0 3100.0 3300.0
+1300.0 1800.0 2200.0 2300.0 3300.0 3400.0
+1300.0 1700.0 2200.0 2400.0 3300.0 3400.0
+1400.0 1500.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1600.0 2300.0 2500.0 3100.0 3300.0
+1500.0 1600.0 2400.0 2500.0 3100.0 3300.0
+1400.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1300.0 1700.0 2100.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2100.0 2500.0 3100.0 3200.0
+1300.0 1700.0 2200.0 2500.0 3100.0 3200.0
+1300.0 1600.0 2200.0 2500.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1500.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1500.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1600.0 2100.0 2600.0 2900.0 3400.0 3500.0
+1600.0 1900.0 2500.0 2800.0 3300.0 3400.0
+1500.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1600.0 2000.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2400.0 2700.0 3100.0 3200.0
+1500.0 1600.0 2400.0 2600.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2400.0 3000.0 3200.0
+1500.0 1600.0 2200.0 2300.0 3000.0 3200.0
+1400.0 1700.0 2100.0 2300.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1600.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1500.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1500.0 1700.0 2200.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2400.0 3000.0 3100.0
+1600.0 1700.0 2300.0 2400.0 3000.0 3100.0
+1600.0 1700.0 2300.0 2400.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2400.0 2900.0 3100.0
+1600.0 1700.0 2300.0 2400.0 2900.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2300.0 2500.0 2900.0 3300.0
+1400.0 1500.0 2200.0 2500.0 3000.0 3300.0
+1200.0 1400.0 2300.0 2400.0 3000.0 3300.0
+1100.0 1400.0 2300.0 2400.0 3100.0 3300.0
+1200.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1400.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1600.0 2100.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1400.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1300.0 1600.0 2300.0 2500.0 3000.0 3200.0
+1200.0 1500.0 2100.0 2500.0 3000.0 3200.0
+1300.0 1700.0 2100.0 2300.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2400.0 3000.0 3100.0
+1500.0 1600.0 2200.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2500.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2400.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2500.0 3300.0 3400.0
+1700.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1800.0 2000.0 2300.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2700.0 3300.0 3400.0
+1900.0 2000.0 2100.0 2400.0 3300.0 3400.0
+1800.0 2100.0 2400.0 2800.0 3200.0 3400.0
+2000.0 2200.0 2500.0 2700.0 3100.0 3300.0
+2000.0 2300.0 2500.0 2700.0 3100.0 3300.0
+2000.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1900.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1800.0 1900.0 2300.0 2600.0 3300.0 3400.0
+1800.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2300.0 2600.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1500.0 1800.0 2100.0 2500.0 3100.0 3200.0
+1700.0 2100.0 2400.0 2800.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2900.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2900.0 3200.0 3300.0
+1800.0 2100.0 2400.0 2800.0 3100.0 3200.0
+2000.0 2200.0 2500.0 2800.0 3100.0 3300.0
+2000.0 2200.0 2700.0 2800.0 3100.0 3300.0
+2000.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2000.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2100.0 2600.0 2800.0 3200.0 3400.0
+1800.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1700.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1700.0 1900.0 2400.0 2700.0 3200.0 3400.0
+1500.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1200.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1600.0 2400.0 2600.0 3200.0 3300.0
+1200.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1300.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1200.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1100.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1100.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1000.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1000.0 1500.0 2400.0 2500.0 3100.0 3200.0
+1000.0 1500.0 2300.0 2400.0 3100.0 3200.0
+1000.0 1900.0 2300.0 2500.0 3000.0 3100.0
+1100.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1400.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2400.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2400.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1800.0 2000.0 2300.0 2800.0 2900.0 3100.0
+1500.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1500.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1500.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2600.0 2900.0 3200.0
+1600.0 2000.0 2500.0 2700.0 2900.0 3200.0
+1500.0 1800.0 2400.0 2800.0 3000.0 3200.0
+1500.0 1800.0 2100.0 2400.0 2900.0 3100.0
+1600.0 1900.0 2100.0 2400.0 3100.0 3300.0
+1600.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2400.0 3100.0 3300.0
+1900.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1900.0 2200.0 2600.0 2700.0 3300.0 3400.0
+1900.0 2300.0 2600.0 2700.0 3300.0 3400.0
+1900.0 2300.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2200.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2400.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2300.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2400.0 2600.0 2700.0 3300.0 3400.0
+2000.0 2200.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1800.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2500.0 3000.0 3100.0
+1800.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2700.0 3000.0 3200.0
+1800.0 2000.0 2500.0 2700.0 3100.0 3200.0
+2000.0 2300.0 2600.0 2900.0 3100.0 3300.0
+1900.0 2300.0 2700.0 3000.0 3200.0 3300.0
+2000.0 2400.0 2700.0 3000.0 3200.0 3300.0
+2100.0 2500.0 2800.0 3000.0 3200.0 3300.0
+2200.0 2400.0 2800.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2700.0 2900.0 3300.0 3400.0
+2200.0 2400.0 2900.0 3100.0 3300.0 3400.0
+2100.0 2400.0 2800.0 3100.0 3300.0 3400.0
+2200.0 2500.0 2800.0 3100.0 3300.0 3400.0
+2100.0 2400.0 2600.0 2800.0 3300.0 3400.0
+2000.0 2400.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1800.0 1900.0 2400.0 2700.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2300.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2200.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2800.0 3000.0 3200.0
+1400.0 1700.0 2300.0 2400.0 3300.0 3400.0
+1400.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1400.0 2100.0 2300.0 2500.0 3300.0 3400.0
+1400.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2100.0 2600.0 2900.0 3200.0 3400.0
+1800.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1800.0 2100.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2500.0 2700.0 3300.0 3400.0
+1800.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1800.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1800.0 2200.0 2400.0 2600.0 3300.0 3400.0
+1800.0 2200.0 2400.0 2700.0 3300.0 3400.0
+1900.0 2300.0 2600.0 2900.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2700.0 3200.0 3400.0
+1900.0 2100.0 2600.0 2700.0 3300.0 3400.0
+2000.0 2100.0 2500.0 2700.0 3200.0 3300.0
+2000.0 2100.0 2500.0 2700.0 3300.0 3400.0
+2000.0 2200.0 2500.0 2700.0 3300.0 3400.0
+2000.0 2100.0 2600.0 2700.0 3300.0 3400.0
+2000.0 2100.0 2500.0 2700.0 3400.0 3500.0
+1900.0 2100.0 2500.0 2600.0 3200.0 3400.0
+2000.0 2200.0 2600.0 2700.0 3200.0 3400.0
+2100.0 2300.0 2600.0 2800.0 3300.0 3400.0
+2100.0 2500.0 2700.0 3100.0 3300.0 3400.0
+2100.0 2500.0 2800.0 3100.0 3300.0 3400.0
+2100.0 2300.0 2400.0 2700.0 3200.0 3300.0
+2000.0 2300.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1600.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2800.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3100.0 3300.0
+1400.0 1700.0 2300.0 2400.0 3100.0 3300.0
+1400.0 1500.0 2300.0 2400.0 3100.0 3300.0
+1300.0 1500.0 2300.0 2400.0 3100.0 3300.0
+1300.0 1500.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1500.0 2400.0 2500.0 3000.0 3300.0
+1300.0 1500.0 2300.0 2400.0 2900.0 3300.0
+1400.0 1500.0 2400.0 2500.0 2900.0 3300.0
+1500.0 1600.0 2300.0 2500.0 2800.0 3300.0
+1600.0 1700.0 2300.0 2500.0 2800.0 3400.0
+1700.0 1800.0 2300.0 2500.0 2800.0 3300.0
+1800.0 1900.0 2400.0 2500.0 3100.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3200.0 3400.0
+1900.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1900.0 2200.0 2600.0 2900.0 3400.0 3500.0
+1800.0 2200.0 2600.0 2900.0 3300.0 3400.0
+1900.0 2300.0 2600.0 3000.0 3400.0 3500.0
+2000.0 2300.0 2600.0 3000.0 3300.0 3400.0
+1800.0 2200.0 2500.0 2900.0 3200.0 3300.0
+1800.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2400.0 3000.0 3100.0
+1500.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2200.0 2500.0 2800.0 3000.0 3300.0
+2000.0 2300.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2300.0 2700.0 2900.0 3100.0 3300.0
+2100.0 2300.0 2700.0 2900.0 3100.0 3300.0
+2000.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2600.0 3300.0 3400.0
+1400.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1300.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1200.0 1600.0 2200.0 2400.0 3000.0 3100.0
+1100.0 1500.0 2200.0 2400.0 3100.0 3200.0
+1100.0 1400.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1500.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1500.0 2300.0 2400.0 3300.0 3400.0
+1300.0 1400.0 2400.0 2500.0 3100.0 3300.0
+1500.0 2200.0 2500.0 2600.0 3100.0 3200.0
+2100.0 2400.0 2700.0 3000.0 3200.0 3300.0
+2200.0 2400.0 2700.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2700.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2700.0 2900.0 3300.0 3400.0
+2000.0 2300.0 2700.0 3000.0 3400.0 3500.0
+2100.0 2400.0 2700.0 3000.0 3400.0 3500.0
+2100.0 2500.0 2700.0 3100.0 3400.0 3500.0
+1900.0 2400.0 2600.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1900.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1800.0 2200.0 2400.0 2800.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1900.0 2000.0 2400.0 2700.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1500.0 2100.0 2200.0 2500.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1400.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2600.0 3100.0 3200.0
+1700.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3000.0 3200.0
+1600.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2200.0 2600.0 2900.0 3200.0
+1600.0 1900.0 2300.0 2600.0 2900.0 3200.0
+1600.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2500.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2500.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1700.0 1800.0 2100.0 2300.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2400.0 3000.0 3200.0
+1800.0 2000.0 2200.0 2400.0 3000.0 3200.0
+1800.0 2000.0 2300.0 2500.0 3100.0 3300.0
+1800.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1800.0 2100.0 2500.0 2900.0 3300.0 3400.0
+1800.0 2200.0 2600.0 2800.0 3300.0 3500.0
+1800.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2100.0 2600.0 3000.0 3200.0 3300.0
+1800.0 2200.0 2600.0 2900.0 3200.0 3300.0
+1800.0 2100.0 2600.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1800.0 2100.0 2400.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1700.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2500.0 2900.0 3100.0
+1500.0 1800.0 2300.0 2600.0 2900.0 3200.0
+1500.0 1900.0 2400.0 2600.0 3000.0 3200.0
+1600.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1600.0 2200.0 2600.0 2900.0 3300.0 3400.0
+1700.0 2200.0 2600.0 3000.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2900.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2900.0 3300.0 3400.0
+1500.0 1800.0 2400.0 2500.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2500.0 3300.0 3400.0
+1500.0 1700.0 2300.0 2400.0 3300.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1600.0 1700.0 2400.0 2500.0 2800.0 3300.0
+1600.0 1800.0 2300.0 2500.0 2700.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2700.0 3200.0
+1600.0 1700.0 2200.0 2500.0 2700.0 3100.0
+1600.0 1700.0 2200.0 2500.0 2600.0 3000.0
+1600.0 1700.0 2400.0 2500.0 2700.0 3200.0
+1600.0 1700.0 2400.0 2500.0 2800.0 3200.0
+1700.0 1800.0 2400.0 2600.0 2900.0 3300.0
+1700.0 1800.0 2300.0 2600.0 2800.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3000.0 3400.0
+1700.0 1800.0 2300.0 2500.0 2900.0 3300.0
+1600.0 1700.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1800.0 2000.0 2400.0 3000.0 3200.0
+1400.0 1700.0 2000.0 2300.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1800.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2600.0 3300.0 3400.0
+2000.0 2100.0 2200.0 2600.0 3300.0 3400.0
+2000.0 2100.0 2300.0 2600.0 3300.0 3400.0
+2100.0 2200.0 2500.0 2800.0 3300.0 3400.0
+2000.0 2100.0 2300.0 2500.0 3200.0 3300.0
+1900.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2100.0 2300.0 3000.0 3200.0
+1500.0 1800.0 2100.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1800.0 2300.0 2600.0 3000.0 3400.0 3500.0
+1900.0 2300.0 2700.0 3000.0 3400.0 3500.0
+2000.0 2300.0 2800.0 3100.0 3300.0 3400.0
+2100.0 2300.0 2800.0 3100.0 3300.0 3400.0
+2000.0 2300.0 2700.0 3000.0 3200.0 3300.0
+2000.0 2200.0 2600.0 2900.0 3100.0 3300.0
+2000.0 2200.0 2500.0 2800.0 3000.0 3200.0
+2000.0 2200.0 2400.0 2800.0 3100.0 3200.0
+1600.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1400.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1400.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1500.0 2000.0 2400.0 2700.0 2900.0 3200.0
+2000.0 2300.0 2800.0 3000.0 3200.0 3400.0
+2100.0 2300.0 2900.0 3100.0 3300.0 3400.0
+1800.0 2300.0 2600.0 2900.0 3400.0 3500.0
+1700.0 2300.0 2500.0 2900.0 3300.0 3400.0
+1300.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1200.0 1900.0 2300.0 2600.0 3300.0 3400.0
+1200.0 1800.0 2300.0 2600.0 3300.0 3400.0
+1100.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1800.0 2200.0 2600.0 2800.0 3300.0 3400.0
+1800.0 2000.0 2500.0 2700.0 3200.0 3400.0
+1700.0 2100.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2200.0 2600.0 2800.0 3300.0 3400.0
+1800.0 2200.0 2600.0 3000.0 3300.0 3500.0
+1700.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2800.0 3300.0 3500.0
+1800.0 2200.0 2500.0 2900.0 3300.0 3400.0
+2100.0 2200.0 2600.0 2700.0 3100.0 3400.0
+1900.0 2100.0 2500.0 2600.0 3100.0 3400.0
+1900.0 2000.0 2500.0 2600.0 3200.0 3400.0
+1900.0 2000.0 2600.0 2700.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2600.0 3100.0 3400.0
+1600.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1400.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1000.0 1900.0 2700.0 2800.0 3300.0 3400.0
+1000.0 1400.0 2700.0 2900.0 3200.0 3400.0
+1100.0 1500.0 2700.0 2900.0 3200.0 3300.0
+1200.0 1700.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1300.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1400.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2700.0 3000.0 3300.0
+1300.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2700.0 2800.0 3300.0 3400.0
+1500.0 1900.0 2700.0 2800.0 3300.0 3400.0
+1400.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2300.0 2600.0 2700.0 2900.0 3200.0
+1500.0 1700.0 2400.0 2600.0 2800.0 3300.0
+1600.0 1700.0 2500.0 2700.0 2900.0 3300.0
+1800.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1800.0 1900.0 2600.0 2700.0 3200.0 3300.0
+2000.0 2200.0 2600.0 2800.0 3200.0 3300.0
+2000.0 2100.0 2600.0 2700.0 3200.0 3400.0
+2000.0 2100.0 2500.0 2800.0 3200.0 3400.0
+2000.0 2100.0 2600.0 2700.0 3100.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2700.0 3200.0 3400.0
+1900.0 2000.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2600.0 3200.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3000.0 3300.0
+1800.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1900.0 2100.0 2500.0 2600.0 3200.0 3300.0
+2000.0 2100.0 2500.0 2600.0 3300.0 3400.0
+2000.0 2200.0 2500.0 2600.0 3300.0 3400.0
+2100.0 2200.0 2500.0 2600.0 3300.0 3400.0
+2100.0 2200.0 2500.0 2600.0 3200.0 3400.0
+2100.0 2200.0 2400.0 2500.0 3200.0 3400.0
+2000.0 2100.0 2400.0 2500.0 3200.0 3400.0
+1800.0 1900.0 2400.0 2600.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1800.0 2300.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2400.0 2800.0 3000.0 3300.0 3500.0
+1900.0 2300.0 2800.0 3100.0 3300.0 3400.0
+2000.0 2300.0 2700.0 2900.0 3200.0 3400.0
+1800.0 2000.0 2600.0 2900.0 3300.0 3400.0
+1700.0 2000.0 2500.0 2600.0 3200.0 3400.0
+1600.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1500.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1500.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1400.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1300.0 2000.0 2600.0 2800.0 3300.0 3400.0
+1500.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1600.0 2000.0 2500.0 2700.0 3200.0 3400.0
+1600.0 2000.0 2500.0 2600.0 3200.0 3400.0
+1600.0 2000.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1600.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2500.0 2900.0 3200.0
+1300.0 1700.0 2200.0 2500.0 3000.0 3300.0
+1200.0 1700.0 2200.0 2600.0 3000.0 3200.0
+1100.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1200.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1100.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1200.0 2200.0 2400.0 2700.0 3300.0 3400.0
+1200.0 2300.0 2500.0 2700.0 3300.0 3400.0
+1200.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1200.0 2300.0 2600.0 2800.0 3300.0 3400.0
+1100.0 1800.0 2500.0 2600.0 3400.0 3500.0
+1300.0 1700.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1800.0 2500.0 2600.0 3200.0 3400.0
+1500.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1500.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1800.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2400.0 2500.0 3200.0 3300.0
+2000.0 2100.0 2300.0 2500.0 3300.0 3400.0
+1500.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1200.0 1700.0 2500.0 2600.0 3300.0 3400.0
+1300.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1400.0 1800.0 2500.0 2700.0 3300.0 3400.0
+1300.0 1700.0 2400.0 2700.0 3200.0 3400.0
+1100.0 2100.0 2600.0 2700.0 3300.0 3400.0
+1200.0 2100.0 2600.0 2700.0 3300.0 3400.0
+1200.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1200.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1200.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1200.0 2200.0 2500.0 2700.0 3400.0 3500.0
+1400.0 1800.0 2400.0 2600.0 3100.0 3400.0
+1400.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1500.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2400.0 2600.0 3200.0 3400.0
+1600.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1900.0 2200.0 2400.0 2600.0 3300.0 3400.0
+2000.0 2200.0 2400.0 2600.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2500.0 3200.0 3300.0
+2100.0 2200.0 2500.0 2600.0 3200.0 3300.0
+2100.0 2200.0 2500.0 2700.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1500.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1500.0 1900.0 2300.0 2400.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2400.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2400.0 3100.0 3300.0
+1400.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1700.0 2200.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2500.0 3000.0 3200.0
+1300.0 1700.0 2400.0 2600.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2500.0 3200.0 3300.0
+1400.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1100.0 1500.0 2300.0 2400.0 3200.0 3400.0
+1000.0 1600.0 2500.0 2600.0 3300.0 3400.0
+1000.0 1700.0 2500.0 2600.0 3300.0 3400.0
+1000.0 1800.0 2600.0 2700.0 3300.0 3400.0
+1000.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1000.0 1800.0 2800.0 2900.0 3300.0 3400.0
+1400.0 1600.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1700.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1700.0 2500.0 2600.0 3000.0 3400.0
+1700.0 1800.0 2500.0 2600.0 3000.0 3400.0
+1700.0 1800.0 2400.0 2600.0 2800.0 3300.0
+1700.0 1800.0 2400.0 2600.0 2900.0 3400.0
+1700.0 1800.0 2500.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2500.0 2600.0 3200.0 3400.0
+1600.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1600.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1600.0 2000.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2300.0 2800.0 3000.0 3300.0 3400.0
+1800.0 2100.0 2800.0 3100.0 3300.0 3400.0
+1900.0 2100.0 2700.0 2900.0 3300.0 3400.0
+1800.0 2000.0 2600.0 2800.0 3200.0 3400.0
+1700.0 1900.0 2500.0 2800.0 3100.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2500.0 2700.0 3000.0 3400.0
+1700.0 1900.0 2600.0 2700.0 3100.0 3400.0
+1600.0 1900.0 2600.0 2700.0 3000.0 3300.0
+1700.0 2000.0 2600.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2600.0 2800.0 3200.0 3300.0
+1600.0 1900.0 2600.0 2800.0 3200.0 3400.0
+1200.0 1800.0 2700.0 2800.0 3200.0 3400.0
+1100.0 1700.0 2700.0 2800.0 3200.0 3300.0
+1500.0 1800.0 2600.0 2700.0 3100.0 3400.0
+1500.0 1800.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2400.0 2500.0 3100.0 3400.0
+1500.0 1700.0 2400.0 2500.0 3000.0 3400.0
+1400.0 1600.0 2400.0 2500.0 3000.0 3400.0
+1400.0 1600.0 2400.0 2600.0 2900.0 3300.0
+1200.0 1700.0 2600.0 2700.0 3100.0 3300.0
+1200.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1100.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1400.0 1800.0 2500.0 2700.0 3200.0 3400.0
+1700.0 1900.0 2500.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2500.0 2700.0 3000.0 3400.0
+1400.0 1500.0 2500.0 2700.0 3200.0 3400.0
+1400.0 1700.0 2500.0 2700.0 3000.0 3300.0
+1800.0 2000.0 2200.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2400.0 2600.0 3100.0 3300.0
+1900.0 2300.0 2400.0 2700.0 3200.0 3300.0
+1800.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2400.0 3000.0 3200.0
+1500.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1500.0 1900.0 2100.0 2400.0 3100.0 3200.0
+1400.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1300.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1200.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1200.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1100.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1200.0 2200.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1800.0 1900.0 2300.0 2400.0 3300.0 3400.0
+2100.0 2200.0 2400.0 2600.0 3300.0 3400.0
+2200.0 2300.0 2600.0 2700.0 3300.0 3400.0
+2200.0 2300.0 2600.0 2800.0 3300.0 3400.0
+2100.0 2300.0 2500.0 2800.0 3100.0 3300.0
+2200.0 2300.0 2600.0 2700.0 3100.0 3400.0
+2100.0 2200.0 2600.0 2700.0 3200.0 3400.0
+1900.0 2300.0 2600.0 2900.0 3100.0 3300.0
+2000.0 2300.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2700.0 2900.0 3300.0 3400.0
+2000.0 2300.0 2500.0 2900.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2600.0 3100.0 3300.0
+1500.0 1700.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1800.0 2200.0 2600.0 3100.0 3300.0
+1500.0 1800.0 2000.0 2300.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2300.0 3200.0 3300.0
+1600.0 1900.0 2100.0 2300.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1800.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2500.0 3200.0 3400.0
+1800.0 2000.0 2400.0 2600.0 3100.0 3400.0
+1800.0 1900.0 2400.0 2600.0 3100.0 3400.0
+1400.0 1600.0 2500.0 2600.0 2900.0 3300.0
+1300.0 1500.0 2500.0 2600.0 2900.0 3300.0
+1300.0 1700.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1900.0 2400.0 2800.0 3100.0 3200.0
+1500.0 2000.0 2400.0 2800.0 3100.0 3300.0
+1100.0 1700.0 2600.0 2700.0 3200.0 3400.0
+1100.0 1800.0 2600.0 2700.0 3300.0 3400.0
+1100.0 1800.0 2700.0 2800.0 3300.0 3400.0
+1700.0 2000.0 2600.0 2700.0 3100.0 3400.0
+1700.0 2100.0 2500.0 2600.0 3000.0 3200.0
+1700.0 2200.0 2600.0 2700.0 3100.0 3200.0
+1700.0 2000.0 2500.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2500.0 2600.0 3000.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2200.0 2400.0 2600.0 3300.0 3400.0
+1800.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1500.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1600.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1700.0 2000.0 2300.0 2400.0 3300.0 3400.0
+1700.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1900.0 2000.0 2400.0 2500.0 3100.0 3400.0
+1900.0 2000.0 2400.0 2500.0 3000.0 3400.0
+1900.0 2000.0 2300.0 2400.0 2800.0 3300.0
+1800.0 2000.0 2200.0 2400.0 2600.0 3200.0
+1900.0 2000.0 2300.0 2500.0 2800.0 3200.0
+1700.0 2000.0 2300.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2000.0 2600.0 2900.0 3300.0 3400.0
+1700.0 1800.0 2500.0 2700.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2500.0 2600.0 2900.0 3300.0
+1600.0 1800.0 2600.0 2700.0 3100.0 3400.0
+1600.0 1700.0 2600.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2600.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2800.0 3200.0 3400.0
+2100.0 2500.0 2700.0 3000.0 3300.0 3400.0
+2100.0 2400.0 2700.0 2900.0 3300.0 3400.0
+2200.0 2500.0 2700.0 3000.0 3300.0 3400.0
+2200.0 2500.0 2800.0 2900.0 3400.0 3500.0
+2200.0 2500.0 2800.0 2900.0 3300.0 3500.0
+2100.0 2500.0 2700.0 2800.0 3300.0 3400.0
+2100.0 2400.0 2700.0 2900.0 3200.0 3400.0
+2100.0 2300.0 2600.0 2800.0 3100.0 3400.0
+2100.0 2200.0 2500.0 2700.0 3100.0 3400.0
+2200.0 2300.0 2500.0 2700.0 3200.0 3400.0
+1900.0 2100.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1400.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1200.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1100.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1100.0 1700.0 2600.0 2700.0 3300.0 3400.0
+1300.0 1600.0 2500.0 2600.0 3100.0 3400.0
+1500.0 1600.0 2400.0 2500.0 3000.0 3400.0
+1600.0 1700.0 2400.0 2500.0 3100.0 3400.0
+1900.0 2000.0 2300.0 2500.0 2900.0 3400.0
+1900.0 2000.0 2400.0 2500.0 2800.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3300.0 3400.0
+1900.0 2000.0 2500.0 2800.0 3300.0 3400.0
+2000.0 2200.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2200.0 2700.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2700.0 2900.0 3200.0 3300.0
+2000.0 2300.0 2700.0 2900.0 3200.0 3300.0
+2200.0 2600.0 2700.0 2900.0 3300.0 3400.0
+2100.0 2400.0 2700.0 2800.0 3300.0 3400.0
+2100.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1900.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1500.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1200.0 1900.0 2400.0 2500.0 3300.0 3500.0
+1200.0 1600.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2200.0 2700.0 3000.0 3300.0 3400.0
+1800.0 2200.0 2800.0 3000.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2900.0 3200.0 3400.0
+1700.0 2000.0 2600.0 2800.0 3200.0 3400.0
+1600.0 1800.0 2500.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2500.0 2600.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1500.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2500.0 3200.0 3400.0
+1400.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1400.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1500.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1500.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1400.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1400.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2600.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2600.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2700.0 2900.0 3200.0 3300.0
+2000.0 2100.0 2500.0 2700.0 3200.0 3400.0
+2000.0 2100.0 2400.0 2600.0 3100.0 3400.0
+2000.0 2100.0 2300.0 2600.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2500.0 3000.0 3400.0
+1800.0 1900.0 2300.0 2400.0 3000.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3000.0 3400.0
+1400.0 1700.0 2400.0 2500.0 2900.0 3400.0
+1300.0 1700.0 2400.0 2500.0 3100.0 3400.0
+1400.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1200.0 1600.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2300.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2300.0 2900.0 3100.0 3400.0 3500.0
+1900.0 2100.0 2700.0 3000.0 3300.0 3400.0
+1800.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1700.0 1800.0 2100.0 2400.0 3000.0 3300.0
+1700.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1400.0 1900.0 2100.0 2300.0 3200.0 3300.0
+1300.0 1800.0 2000.0 2300.0 3200.0 3300.0
+1300.0 1800.0 1900.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2100.0 2600.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2500.0 3100.0 3400.0
+2100.0 2200.0 2400.0 2500.0 3100.0 3400.0
+2100.0 2400.0 2800.0 2900.0 3100.0 3300.0
+2000.0 2200.0 2600.0 2900.0 3200.0 3300.0
+2100.0 2200.0 2700.0 2800.0 3200.0 3300.0
+2000.0 2100.0 2700.0 2800.0 3200.0 3300.0
+2000.0 2100.0 2600.0 2800.0 3200.0 3400.0
+1900.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1800.0 1900.0 2500.0 2700.0 3300.0 3400.0
+2000.0 2100.0 2600.0 2700.0 3200.0 3300.0
+2000.0 2100.0 2600.0 2700.0 3100.0 3400.0
+1900.0 2100.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2600.0 2700.0 3300.0 3500.0
+1700.0 1900.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2100.0 2700.0 2900.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2900.0 3200.0 3300.0
+1900.0 2200.0 2700.0 2900.0 3200.0 3400.0
+1800.0 2200.0 2700.0 3000.0 3200.0 3400.0
+1800.0 2100.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2200.0 2600.0 2900.0 3300.0 3500.0
+1700.0 2100.0 2500.0 2800.0 3400.0 3500.0
+1600.0 1900.0 2400.0 2600.0 3200.0 3400.0
+1600.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1700.0 2000.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2400.0 2900.0 3200.0
+1900.0 2000.0 2600.0 2700.0 3100.0 3200.0
+1900.0 2000.0 2600.0 2700.0 3100.0 3400.0
+1800.0 2000.0 2600.0 2700.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1300.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1300.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1800.0 2100.0 2500.0 3000.0 3200.0
+1300.0 1600.0 1700.0 2500.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2400.0 3100.0 3200.0
+1300.0 1600.0 1800.0 2300.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1500.0 1900.0 2500.0 2600.0 3000.0 3200.0
+1800.0 2200.0 2600.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2400.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2500.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2600.0 2700.0 3000.0 3300.0
+2100.0 2200.0 2600.0 2700.0 3200.0 3300.0
+2100.0 2200.0 2600.0 2700.0 3300.0 3400.0
+1900.0 2100.0 2300.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2800.0 3100.0 3300.0
+1600.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2400.0 2700.0 3100.0 3300.0
+1200.0 1700.0 1800.0 2100.0 3200.0 3400.0
+1400.0 1700.0 1800.0 2200.0 3300.0 3400.0
+1600.0 1800.0 1900.0 2400.0 3200.0 3300.0
+1700.0 1900.0 2000.0 2500.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2400.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2400.0 2800.0 3200.0
+1900.0 2100.0 2300.0 2600.0 2900.0 3300.0
+1900.0 2100.0 2300.0 2600.0 3200.0 3400.0
+2000.0 2100.0 2400.0 2500.0 3300.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3200.0 3500.0
+1700.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1800.0 2000.0 2600.0 3000.0 3300.0 3400.0
+1900.0 2000.0 2500.0 2700.0 2900.0 3200.0
+1900.0 2000.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2000.0 2400.0 2600.0 2900.0 3200.0
+1700.0 2000.0 2300.0 2600.0 2900.0 3200.0
+1800.0 2000.0 2300.0 2600.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2600.0 2900.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1900.0 2000.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2200.0 2600.0 3000.0 3300.0
+1600.0 1800.0 2200.0 2500.0 3000.0 3300.0
+1700.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1800.0 1900.0 2400.0 2500.0 3000.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2600.0 3100.0 3300.0
+1600.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1600.0 2400.0 2500.0 3200.0 3400.0
+1400.0 1600.0 2400.0 2500.0 3200.0 3400.0
+1300.0 1600.0 2400.0 2500.0 3200.0 3300.0
+1400.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2200.0 2500.0 3000.0 3300.0
+1700.0 1900.0 2300.0 2500.0 3100.0 3300.0
+2000.0 2100.0 2400.0 2600.0 3100.0 3300.0
+2000.0 2200.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2400.0 2500.0 3200.0 3400.0
+2100.0 2200.0 2300.0 2400.0 3200.0 3400.0
+2000.0 2100.0 2300.0 2500.0 3000.0 3400.0
+1600.0 1800.0 2100.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2200.0 2700.0 3200.0 3300.0
+1800.0 1900.0 2400.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2800.0 3200.0 3400.0
+1700.0 2100.0 2600.0 2900.0 3300.0 3500.0
+1800.0 2200.0 2600.0 2900.0 3300.0 3500.0
+1700.0 2200.0 2600.0 2900.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2800.0 3200.0 3400.0
+1700.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1700.0 1800.0 2600.0 2700.0 3100.0 3400.0
+1700.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1700.0 1900.0 2700.0 2800.0 3200.0 3400.0
+1600.0 1900.0 2700.0 2800.0 3200.0 3300.0
+1400.0 1900.0 2800.0 2900.0 3200.0 3300.0
+1600.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2600.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1700.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1700.0 1800.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2000.0 2400.0 2800.0 3300.0 3400.0
+1600.0 1800.0 2100.0 2400.0 3100.0 3200.0
+1700.0 1800.0 2000.0 2700.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2700.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2400.0 2700.0 3100.0 3200.0
+2000.0 2100.0 2400.0 2700.0 3100.0 3200.0
+2000.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1800.0 2100.0 2200.0 2600.0 3100.0 3200.0
+1600.0 2000.0 2200.0 2600.0 3100.0 3200.0
+1500.0 2000.0 2200.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2600.0 3100.0 3200.0
+1800.0 2100.0 2600.0 2700.0 3100.0 3300.0
+1700.0 2100.0 2600.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1200.0 1400.0 2500.0 2700.0 3200.0 3400.0
+1400.0 1700.0 2400.0 2600.0 3200.0 3400.0
+1400.0 1600.0 2400.0 2600.0 3100.0 3400.0
+1500.0 1700.0 2500.0 2600.0 3000.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2600.0 3000.0 3400.0
+2000.0 2100.0 2500.0 2600.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2600.0 3100.0 3400.0
+2200.0 2300.0 2500.0 2600.0 3100.0 3400.0
+1400.0 1900.0 2300.0 2400.0 2800.0 3200.0
+1400.0 1900.0 2300.0 2400.0 2700.0 3100.0
+1500.0 1700.0 2300.0 2400.0 2800.0 3200.0
+1600.0 1700.0 2100.0 2500.0 3000.0 3300.0
+1700.0 2000.0 2400.0 2800.0 3000.0 3300.0
+1800.0 2000.0 2600.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1800.0 2000.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1800.0 2200.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2100.0 2600.0 2800.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2500.0 2700.0 3000.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3100.0 3400.0
+1700.0 1900.0 2600.0 2800.0 3200.0 3400.0
+1600.0 1900.0 2600.0 2800.0 3300.0 3400.0
+1500.0 1800.0 2500.0 2700.0 3300.0 3400.0
+1500.0 1900.0 2400.0 2500.0 3200.0 3400.0
+1200.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1400.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1300.0 1400.0 2300.0 2400.0 2800.0 3100.0
+1300.0 1400.0 2300.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2400.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2400.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2400.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2400.0 2600.0 2900.0 3200.0
+1600.0 1800.0 2400.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2500.0 2700.0 3000.0 3300.0
+1900.0 2100.0 2600.0 2700.0 3000.0 3300.0
+1900.0 2100.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2400.0 2700.0 3100.0 3300.0
+2000.0 2200.0 2400.0 2700.0 3100.0 3300.0
+1900.0 2300.0 2600.0 2700.0 3000.0 3200.0
+2000.0 2200.0 2500.0 2600.0 3000.0 3200.0
+1900.0 2000.0 2500.0 2600.0 3000.0 3300.0
+1800.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1500.0 1900.0 2300.0 2500.0 2700.0 3000.0
+1500.0 2000.0 2400.0 2500.0 2700.0 3100.0
+1200.0 1900.0 2300.0 2500.0 2800.0 3000.0
+1300.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2500.0 3100.0 3200.0
+2100.0 2200.0 2600.0 2700.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2700.0 3000.0 3300.0
+2000.0 2200.0 2600.0 2700.0 3100.0 3300.0
+2000.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2400.0 3100.0 3300.0
+1500.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2100.0 2600.0 2900.0 3100.0
+1400.0 1700.0 1900.0 2300.0 2800.0 3000.0
+1500.0 1700.0 1900.0 2200.0 2800.0 2900.0
+1500.0 1700.0 2000.0 2200.0 2900.0 3000.0
+1500.0 1700.0 2100.0 2300.0 2900.0 3000.0
+1500.0 1800.0 2200.0 2300.0 3000.0 3100.0
+1500.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1600.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1600.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1700.0 2300.0 2500.0 2900.0 3300.0
+1800.0 2100.0 2500.0 2600.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2500.0 3100.0 3400.0
+1900.0 2100.0 2200.0 2500.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2500.0 2900.0 3300.0
+1700.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1600.0 1700.0 2400.0 2500.0 3100.0 3300.0
+1500.0 1700.0 2400.0 2500.0 3100.0 3300.0
+1400.0 1700.0 2500.0 2600.0 3100.0 3200.0
+1300.0 1600.0 2500.0 2600.0 3100.0 3200.0
+1200.0 1600.0 2500.0 2600.0 3100.0 3200.0
+1100.0 1700.0 2600.0 2700.0 3100.0 3200.0
+1100.0 1500.0 2600.0 2700.0 3100.0 3200.0
+1100.0 1500.0 2600.0 2700.0 3100.0 3300.0
+1100.0 1500.0 2500.0 2700.0 3000.0 3300.0
+1000.0 1600.0 2600.0 2700.0 3100.0 3300.0
+1300.0 1600.0 2600.0 2700.0 3100.0 3300.0
+1300.0 1600.0 2600.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1700.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2500.0 2700.0 3100.0 3400.0
+1800.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1900.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2200.0 2400.0 2600.0 3100.0 3300.0
+1900.0 2300.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2200.0 2400.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1400.0 1600.0 2200.0 2400.0 3100.0 3200.0
+1100.0 1500.0 2300.0 2500.0 3000.0 3100.0
+1400.0 1700.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2800.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1700.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1800.0 2100.0 2500.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2800.0 3100.0 3400.0
+1700.0 2100.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2100.0 2600.0 2700.0 3300.0 3500.0
+1900.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1600.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2400.0 3000.0 3100.0
+1300.0 1700.0 2300.0 2500.0 3000.0 3100.0
+1600.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2400.0 3100.0 3300.0
+2200.0 2300.0 2600.0 2800.0 3200.0 3400.0
+2100.0 2300.0 2500.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2500.0 2900.0 3200.0 3300.0
+2000.0 2300.0 2500.0 2700.0 3200.0 3300.0
+2200.0 2400.0 2500.0 2700.0 3200.0 3300.0
+2200.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2500.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2600.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2600.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2600.0 2700.0 2900.0 3300.0
+1600.0 1700.0 2600.0 2800.0 3000.0 3300.0
+1700.0 2000.0 2700.0 2800.0 3100.0 3400.0
+1600.0 1900.0 2500.0 2700.0 3000.0 3300.0
+1800.0 2200.0 2800.0 2900.0 3300.0 3400.0
+2000.0 2500.0 2800.0 2900.0 3400.0 3500.0
+2000.0 2400.0 2800.0 2900.0 3400.0 3500.0
+2000.0 2300.0 2700.0 2800.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1500.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1300.0 1500.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1400.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1500.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1600.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1200.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1200.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1700.0 2400.0 2500.0 3100.0 3200.0
+1200.0 1600.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1600.0 2400.0 2500.0 2900.0 3100.0
+1200.0 1700.0 2400.0 2500.0 3000.0 3300.0
+1300.0 1700.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1700.0 2400.0 2500.0 3000.0 3100.0
+1200.0 1700.0 2300.0 2400.0 3000.0 3100.0
+1600.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1400.0 1600.0 1900.0 2200.0 3000.0 3100.0
+1400.0 1600.0 1800.0 2100.0 3000.0 3100.0
+1300.0 1500.0 1600.0 2000.0 3100.0 3200.0
+1300.0 1500.0 1700.0 1900.0 3100.0 3200.0
+1400.0 1600.0 1700.0 1900.0 3100.0 3200.0
+1600.0 1700.0 2000.0 2100.0 3100.0 3200.0
+1600.0 1800.0 2100.0 2200.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2700.0 3100.0 3400.0
+1900.0 2000.0 2500.0 2600.0 3000.0 3400.0
+1800.0 2100.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2300.0 2600.0 2800.0 3300.0 3500.0
+1600.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1300.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1400.0 1800.0 2600.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2500.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1900.0 2000.0 2500.0 2700.0 2900.0 3300.0
+2000.0 2100.0 2400.0 2600.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2600.0 3000.0 3300.0
+2100.0 2200.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2100.0 2500.0 2600.0 3100.0 3400.0
+1900.0 2000.0 2400.0 2600.0 3000.0 3400.0
+1800.0 1900.0 2300.0 2500.0 2900.0 3400.0
+1700.0 1800.0 2500.0 2700.0 3100.0 3400.0
+1700.0 1900.0 2500.0 2700.0 3100.0 3400.0
+1800.0 1900.0 2700.0 2800.0 3200.0 3400.0
+2100.0 2200.0 2600.0 2800.0 3100.0 3400.0
+2200.0 2300.0 2600.0 2800.0 3100.0 3400.0
+1800.0 2300.0 2500.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2500.0 2800.0 3100.0
+1600.0 2000.0 2400.0 2500.0 2800.0 3100.0
+1600.0 2000.0 2400.0 2500.0 2800.0 3200.0
+1600.0 2000.0 2400.0 2500.0 2900.0 3300.0
+1800.0 2200.0 2500.0 2600.0 3000.0 3300.0
+2100.0 2300.0 2500.0 2600.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2700.0 3100.0 3200.0
+1800.0 1900.0 2600.0 2700.0 3100.0 3200.0
+1800.0 1900.0 2600.0 2700.0 3100.0 3300.0
+1700.0 1800.0 2600.0 2700.0 3100.0 3300.0
+1700.0 1800.0 2600.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2600.0 2700.0 3200.0 3400.0
+1600.0 1700.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1500.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1700.0 2100.0 2300.0 2600.0 3100.0 3300.0
+1800.0 2000.0 2700.0 2800.0 3100.0 3300.0
+1700.0 1800.0 2500.0 2700.0 2900.0 3300.0
+1600.0 1800.0 2500.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1700.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1800.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2500.0 3200.0 3300.0
+2000.0 2100.0 2300.0 2500.0 3200.0 3400.0
+2000.0 2100.0 2200.0 2400.0 3200.0 3400.0
+2000.0 2100.0 2300.0 2400.0 3100.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3200.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3100.0 3400.0
+1700.0 1800.0 2400.0 2600.0 3300.0 3400.0
+1700.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1700.0 1900.0 2600.0 2800.0 3100.0 3300.0
+1700.0 2100.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2500.0 3100.0 3300.0
+2000.0 2100.0 2300.0 2400.0 3200.0 3400.0
+1400.0 1900.0 2300.0 2400.0 3000.0 3300.0
+1400.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1400.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1300.0 1600.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1600.0 2400.0 2500.0 3200.0 3400.0
+1500.0 2000.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2100.0 2500.0 2900.0 3200.0 3400.0
+1800.0 2200.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2000.0 2500.0 2900.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2900.0 3400.0 3500.0
+1500.0 1900.0 2400.0 2800.0 3300.0 3400.0
+1800.0 2100.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2000.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2800.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2800.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2100.0 2700.0 2800.0 3300.0 3400.0
+1700.0 2100.0 2700.0 2800.0 3200.0 3400.0
+1800.0 2200.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2200.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2300.0 2600.0 2700.0 3300.0 3400.0
+1900.0 2300.0 2500.0 2700.0 3300.0 3400.0
+1800.0 2200.0 2500.0 2800.0 3200.0 3400.0
+1800.0 2200.0 2500.0 2700.0 3100.0 3300.0
+1700.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1800.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1800.0 2000.0 2200.0 2500.0 3300.0 3400.0
+1800.0 2000.0 2200.0 2600.0 3300.0 3400.0
+1500.0 1800.0 1900.0 2400.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2500.0 3200.0 3300.0
+1500.0 1800.0 1900.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2400.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2600.0 3000.0 3200.0
+1400.0 1700.0 2000.0 2600.0 3000.0 3200.0
+1500.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1400.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1600.0 2500.0 2700.0 3100.0 3300.0
+1200.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1800.0 2300.0 2400.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2300.0 3300.0 3400.0
+1800.0 2100.0 2300.0 2400.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2500.0 3000.0 3300.0
+1900.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1600.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1600.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1800.0 2300.0 2500.0 2700.0 3300.0 3400.0
+1800.0 2400.0 2500.0 2900.0 3300.0 3400.0
+1900.0 2400.0 2600.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2700.0 3000.0 3400.0 3500.0
+1800.0 2100.0 2500.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2900.0 3200.0 3400.0
+1800.0 2100.0 2600.0 2800.0 3100.0 3400.0
+1800.0 2200.0 2700.0 2800.0 3200.0 3400.0
+1800.0 2300.0 2700.0 2900.0 3300.0 3500.0
+1400.0 2000.0 2600.0 2700.0 3200.0 3400.0
+1300.0 1800.0 2200.0 2300.0 3000.0 3100.0
+1300.0 1700.0 2100.0 2200.0 3100.0 3200.0
+1400.0 1700.0 2000.0 2200.0 3000.0 3100.0
+1400.0 1600.0 2000.0 2100.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2300.0 3100.0 3200.0
+1600.0 1800.0 2000.0 2300.0 3100.0 3200.0
+1600.0 1800.0 2000.0 2200.0 3100.0 3200.0
+1700.0 2000.0 2200.0 2300.0 3000.0 3200.0
+1700.0 2100.0 2400.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2600.0 2800.0 3000.0 3200.0
+1700.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2600.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1500.0 1900.0 2100.0 2400.0 3100.0 3300.0
+1500.0 1600.0 2000.0 2300.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2500.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2600.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2500.0 3000.0 3200.0
+1400.0 1700.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1500.0 2500.0 2600.0 3000.0 3100.0
+1100.0 1900.0 2600.0 2700.0 3000.0 3100.0
+1500.0 2000.0 2700.0 2800.0 3200.0 3400.0
+1700.0 2100.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2200.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1800.0 2300.0 2500.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2400.0 3000.0 3200.0
+1400.0 1600.0 1800.0 2200.0 3000.0 3100.0
+1300.0 1600.0 1700.0 2100.0 3000.0 3100.0
+1200.0 1400.0 1600.0 2400.0 3000.0 3100.0
+1300.0 1500.0 1600.0 2100.0 3000.0 3100.0
+1400.0 1600.0 1700.0 2100.0 3000.0 3100.0
+1400.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2300.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1700.0 2300.0 2400.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2400.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2300.0 3000.0 3200.0
+1500.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1700.0 2000.0 2700.0 2800.0 3200.0 3400.0
+2100.0 2400.0 2800.0 2900.0 3200.0 3400.0
+2000.0 2500.0 2700.0 2800.0 3400.0 3500.0
+2100.0 2600.0 2800.0 2900.0 3400.0 3500.0
+2000.0 2500.0 2700.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2700.0 2800.0 3200.0 3400.0
+2100.0 2200.0 2700.0 2800.0 3200.0 3400.0
+2100.0 2200.0 2700.0 2900.0 3300.0 3400.0
+2200.0 2300.0 2700.0 2800.0 3200.0 3400.0
+1700.0 2100.0 2400.0 2700.0 3200.0 3400.0
+1600.0 2100.0 2400.0 2600.0 2900.0 3200.0
+1500.0 2100.0 2400.0 2500.0 2800.0 3100.0
+1600.0 2100.0 2400.0 2500.0 2800.0 3200.0
+1600.0 2100.0 2400.0 2500.0 2900.0 3200.0
+1600.0 2100.0 2400.0 2500.0 3000.0 3200.0
+1600.0 2100.0 2300.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2600.0 3100.0 3300.0
+1700.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1500.0 1700.0 1900.0 2200.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2100.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2300.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2400.0 3200.0 3300.0
+1500.0 1700.0 1800.0 2400.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2200.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2100.0 3200.0 3300.0
+1500.0 1600.0 1900.0 2000.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2100.0 3200.0 3300.0
+1600.0 1700.0 2000.0 2100.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1700.0 2000.0 2400.0 2600.0 3000.0 3100.0
+1700.0 2100.0 2400.0 2600.0 3000.0 3100.0
+1600.0 2000.0 2400.0 2600.0 2900.0 3100.0
+1800.0 2200.0 2600.0 2800.0 3000.0 3200.0
+2000.0 2400.0 2500.0 2800.0 3100.0 3200.0
+2100.0 2500.0 2600.0 2800.0 3200.0 3300.0
+2200.0 2500.0 2700.0 3000.0 3200.0 3300.0
+2100.0 2500.0 2700.0 3000.0 3200.0 3300.0
+2200.0 2500.0 2600.0 3000.0 3200.0 3300.0
+2200.0 2500.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2400.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2300.0 2500.0 2700.0 3100.0 3200.0
+2000.0 2200.0 2500.0 2700.0 3100.0 3200.0
+2000.0 2300.0 2500.0 2800.0 3100.0 3200.0
+2000.0 2300.0 2400.0 2800.0 3100.0 3200.0
+2100.0 2200.0 2500.0 2800.0 3100.0 3200.0
+2000.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2400.0 3100.0 3300.0
+1500.0 1600.0 1800.0 2100.0 3200.0 3300.0
+1500.0 1700.0 1800.0 2100.0 3200.0 3300.0
+1500.0 1700.0 1800.0 2300.0 3200.0 3300.0
+2000.0 2200.0 2400.0 2600.0 3000.0 3200.0
+2000.0 2400.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2400.0 2500.0 2700.0 3100.0 3300.0
+1800.0 2200.0 2500.0 2600.0 3100.0 3300.0
+1600.0 1800.0 2400.0 2500.0 3000.0 3200.0
+1500.0 1800.0 2400.0 2500.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2700.0 3000.0 3300.0
+1600.0 1900.0 2100.0 2600.0 3000.0 3200.0
+1500.0 1700.0 1900.0 2300.0 3000.0 3100.0
+1500.0 1700.0 1900.0 2200.0 3000.0 3100.0
+1600.0 1700.0 2200.0 2400.0 2900.0 3000.0
+1600.0 1800.0 2200.0 2400.0 2900.0 3000.0
+1800.0 2300.0 2600.0 2700.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1800.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1700.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2400.0 2600.0 3100.0 3200.0
+2000.0 2100.0 2500.0 2600.0 3200.0 3300.0
+2100.0 2200.0 2400.0 2600.0 3200.0 3400.0
+1700.0 2000.0 2400.0 2600.0 3100.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2500.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2300.0 3000.0 3100.0
+1500.0 1700.0 1900.0 2100.0 2900.0 3000.0
+1400.0 1600.0 2400.0 2700.0 2900.0 3100.0
+1400.0 1600.0 2300.0 2600.0 3000.0 3100.0
+1500.0 1600.0 2300.0 2500.0 2900.0 3100.0
+1600.0 1700.0 2400.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1700.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1600.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2300.0 3100.0 3300.0
+1400.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1200.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1200.0 1700.0 2400.0 2500.0 3300.0 3400.0
+1500.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2400.0 3200.0 3300.0
+2200.0 2300.0 2500.0 2700.0 3200.0 3300.0
+2100.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1300.0 1900.0 2300.0 2400.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2400.0 3000.0 3300.0
+1600.0 2000.0 2400.0 2700.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2600.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2600.0 3000.0 3300.0
+1800.0 2100.0 2400.0 2500.0 3100.0 3300.0
+1700.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1600.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2300.0 3200.0 3400.0
+1400.0 1600.0 2200.0 2300.0 3200.0 3400.0
+1300.0 1500.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1600.0 2300.0 2400.0 3300.0 3400.0
+1200.0 1500.0 2300.0 2400.0 3200.0 3400.0
+1200.0 1400.0 2300.0 2400.0 3100.0 3400.0
+1300.0 1500.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2300.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2400.0 2700.0 3000.0 3300.0 3400.0
+1800.0 2300.0 2700.0 2800.0 3200.0 3300.0
+1800.0 2200.0 2500.0 2600.0 3300.0 3400.0
+1700.0 1900.0 2400.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2200.0 2500.0 3200.0 3400.0
+1500.0 1700.0 2300.0 2500.0 3100.0 3300.0
+1400.0 1700.0 2200.0 2400.0 3000.0 3200.0
+1300.0 1600.0 2200.0 2300.0 3000.0 3100.0
+1300.0 1900.0 2200.0 2400.0 2900.0 3100.0
+1400.0 1900.0 2300.0 2400.0 3000.0 3100.0
+1400.0 1900.0 2300.0 2500.0 2900.0 3100.0
+1400.0 1800.0 2400.0 2600.0 2800.0 3100.0
+1600.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1500.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2300.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2600.0 2700.0 3300.0 3400.0
+2000.0 2200.0 2500.0 2700.0 3000.0 3100.0
+2000.0 2300.0 2600.0 2800.0 3100.0 3200.0
+2100.0 2400.0 2500.0 2900.0 3200.0 3300.0
+2100.0 2300.0 2500.0 2800.0 3100.0 3200.0
+1900.0 2200.0 2300.0 2700.0 3100.0 3200.0
+1200.0 1900.0 2000.0 2300.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2100.0 3200.0 3300.0
+1400.0 1600.0 1700.0 2100.0 3200.0 3300.0
+1400.0 1600.0 1700.0 2200.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2600.0 2900.0 3100.0
+1900.0 2300.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2700.0 2900.0 3200.0 3400.0
+1800.0 2100.0 2700.0 2800.0 3100.0 3400.0
+1800.0 2100.0 2600.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2700.0 2800.0 3200.0 3400.0
+1400.0 1600.0 2600.0 2700.0 3000.0 3300.0
+1400.0 1500.0 2600.0 2700.0 3000.0 3400.0
+1300.0 1400.0 2400.0 2800.0 3000.0 3300.0
+1800.0 2200.0 2600.0 2900.0 3200.0 3400.0
+1600.0 2100.0 2600.0 2900.0 3200.0 3400.0
+1200.0 1700.0 2500.0 2600.0 3000.0 3100.0
+1200.0 1800.0 2300.0 2600.0 3000.0 3100.0
+1200.0 1800.0 2300.0 2500.0 3000.0 3100.0
+1300.0 1700.0 2400.0 2500.0 3000.0 3100.0
+1500.0 1800.0 2400.0 2500.0 2900.0 3000.0
+1600.0 2300.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2700.0 2900.0 3100.0 3200.0
+1900.0 2200.0 2800.0 2900.0 3100.0 3200.0
+1900.0 2300.0 2800.0 2900.0 3200.0 3300.0
+2200.0 2500.0 2800.0 3000.0 3300.0 3400.0
+2100.0 2500.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2700.0 2800.0 3300.0 3500.0
+1900.0 2200.0 2600.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2700.0 2800.0 3300.0 3400.0
+1700.0 1900.0 2600.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2600.0 2800.0 3100.0 3300.0
+1800.0 1900.0 2500.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2600.0 2800.0 3100.0 3400.0
+2000.0 2100.0 2500.0 2700.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2700.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2800.0 3000.0 3300.0
+2000.0 2100.0 2400.0 2700.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2600.0 2800.0 3100.0
+1700.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1700.0 2100.0 2700.0 2800.0 3100.0 3300.0
+1500.0 1700.0 2400.0 2600.0 3100.0 3400.0
+1500.0 1600.0 2400.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1500.0 2300.0 2600.0 3100.0 3300.0
+1500.0 1600.0 2400.0 2600.0 2900.0 3200.0
+1600.0 1700.0 2300.0 2600.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2700.0 3000.0 3200.0
+1700.0 1800.0 2400.0 2600.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2400.0 3100.0 3200.0
+1300.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1200.0 1700.0 2300.0 2400.0 2900.0 3100.0
+1200.0 1800.0 2400.0 2500.0 2900.0 3200.0
+1200.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1300.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1500.0 2400.0 2500.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3000.0 3300.0
+1800.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2400.0 3200.0 3500.0
+1900.0 2000.0 2300.0 2400.0 3100.0 3400.0
+1800.0 2000.0 2300.0 2500.0 3200.0 3400.0
+1700.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1800.0 2100.0 2500.0 2800.0 3100.0 3400.0
+1800.0 2000.0 2500.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2700.0 3100.0 3400.0
+1600.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1500.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2700.0 3300.0 3400.0
+1400.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1600.0 2000.0 2300.0 2600.0 3300.0 3400.0
+1600.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1700.0 1900.0 2300.0 2600.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2400.0 3300.0 3400.0
+1900.0 2000.0 2200.0 2400.0 3300.0 3400.0
+1700.0 1800.0 2200.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2100.0 2500.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2500.0 3000.0 3200.0
+1500.0 1600.0 2100.0 2500.0 3000.0 3200.0
+1500.0 1700.0 2200.0 2700.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1700.0 1800.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2100.0 2500.0 3100.0 3300.0
+2000.0 2300.0 2700.0 2800.0 3100.0 3300.0
+2200.0 2500.0 2900.0 3000.0 3200.0 3300.0
+2300.0 2500.0 2900.0 3000.0 3200.0 3300.0
+1400.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1600.0 2000.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1900.0 2000.0 2400.0 3200.0 3300.0
+1300.0 1800.0 2000.0 2400.0 3300.0 3400.0
+1400.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1800.0 2200.0 2600.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2800.0 2900.0 3300.0 3400.0
+2000.0 2500.0 2900.0 3100.0 3200.0 3300.0
+2000.0 2400.0 2900.0 3000.0 3300.0 3400.0
+2100.0 2400.0 2800.0 3000.0 3200.0 3300.0
+2000.0 2400.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2600.0 2800.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2500.0 3200.0 3400.0
+1100.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1000.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1000.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1000.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2700.0 3100.0 3400.0
+1700.0 2100.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2200.0 2600.0 2800.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2600.0 3100.0 3200.0
+1400.0 1500.0 1800.0 2800.0 3200.0 3300.0
+1300.0 1500.0 1700.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2700.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2300.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1200.0 1600.0 1800.0 2000.0 3100.0 3400.0
+1100.0 1600.0 2400.0 2500.0 3000.0 3300.0
+1400.0 1700.0 2300.0 2400.0 2900.0 3200.0
+1700.0 2000.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2400.0 3000.0 3400.0
+1700.0 1800.0 2300.0 2400.0 2900.0 3400.0
+1700.0 1800.0 2300.0 2400.0 2800.0 3300.0
+1800.0 1900.0 2300.0 2400.0 2800.0 3200.0
+1800.0 1900.0 2300.0 2400.0 3000.0 3300.0
+1800.0 1900.0 2300.0 2400.0 2900.0 3300.0
+1700.0 1800.0 2200.0 2300.0 2600.0 3200.0
+1700.0 1800.0 2200.0 2300.0 2700.0 3200.0
+1700.0 1800.0 2300.0 2400.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2400.0 3100.0 3400.0
+1700.0 1800.0 2200.0 2400.0 3200.0 3400.0
+1700.0 1900.0 2200.0 2400.0 3300.0 3400.0
+1800.0 1900.0 2200.0 2400.0 3200.0 3400.0
+1800.0 1900.0 2300.0 2400.0 3200.0 3400.0
+1800.0 1900.0 2300.0 2400.0 3100.0 3400.0
+1800.0 2000.0 2200.0 2400.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1700.0 1800.0 2000.0 2200.0 3200.0 3300.0
+1400.0 1700.0 1800.0 2200.0 3200.0 3300.0
+1400.0 1800.0 2100.0 2500.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2300.0 2500.0 2900.0 3200.0
+1800.0 2200.0 2500.0 2700.0 3000.0 3300.0
+2000.0 2400.0 2700.0 2800.0 3100.0 3300.0
+2200.0 2500.0 2800.0 2900.0 3200.0 3300.0
+1500.0 2300.0 2500.0 2900.0 3300.0 3400.0
+1500.0 1700.0 2300.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1600.0 1700.0 2200.0 2300.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2300.0 3300.0 3400.0
+1200.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1000.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1000.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1700.0 2200.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2500.0 2700.0 3000.0 3200.0
+1300.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2700.0 3100.0 3200.0
+1700.0 2100.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2400.0 2500.0 3200.0 3400.0
+1600.0 2000.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2300.0 2400.0 3000.0 3200.0
+1500.0 1900.0 2200.0 2300.0 3000.0 3200.0
+1500.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1400.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1300.0 2000.0 2200.0 2500.0 3100.0 3200.0
+1100.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1000.0 2000.0 2400.0 2500.0 3100.0 3200.0
+1000.0 1700.0 2400.0 2500.0 3100.0 3200.0
+1000.0 1600.0 2400.0 2500.0 3100.0 3200.0
+1100.0 1600.0 2400.0 2500.0 3100.0 3200.0
+1100.0 1600.0 2400.0 2600.0 3100.0 3200.0
+1100.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1100.0 1500.0 2500.0 2600.0 3200.0 3300.0
+1100.0 1500.0 2500.0 2600.0 3100.0 3200.0
+1200.0 1400.0 2400.0 2600.0 3100.0 3200.0
+1300.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1900.0 2300.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2300.0 2400.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3000.0 3300.0
+2100.0 2300.0 2800.0 3000.0 3300.0 3400.0
+2200.0 2400.0 2900.0 3000.0 3200.0 3300.0
+2100.0 2300.0 2900.0 3000.0 3300.0 3400.0
+2000.0 2300.0 2600.0 3000.0 3200.0 3300.0
+1300.0 1600.0 2200.0 2600.0 3100.0 3300.0
+1000.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1000.0 2100.0 2400.0 2600.0 3300.0 3400.0
+1300.0 1700.0 1900.0 2100.0 3100.0 3200.0
+1500.0 1800.0 2000.0 2400.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2500.0 3300.0 3400.0
+1700.0 1900.0 2100.0 2500.0 2900.0 3200.0
+1600.0 1900.0 2100.0 2300.0 2800.0 3200.0
+1200.0 1700.0 2200.0 2600.0 3000.0 3300.0
+1200.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1600.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2600.0 3100.0 3400.0
+2100.0 2200.0 2700.0 3000.0 3200.0 3300.0
+2100.0 2200.0 2700.0 2900.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2600.0 2900.0 3200.0
+1400.0 1600.0 1800.0 2900.0 3200.0 3300.0
+1600.0 1700.0 1900.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2000.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2300.0 3100.0 3200.0
+2300.0 2500.0 2800.0 2900.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2800.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2400.0 3100.0 3300.0
+1600.0 1800.0 2200.0 2300.0 3000.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3000.0 3300.0
+1700.0 1900.0 2200.0 2400.0 3100.0 3300.0
+1700.0 1900.0 2200.0 2400.0 3100.0 3400.0
+1700.0 1800.0 2200.0 2400.0 3100.0 3400.0
+1500.0 1800.0 2300.0 2400.0 2900.0 3300.0
+1500.0 1700.0 2200.0 2400.0 3100.0 3400.0
+1400.0 1700.0 2200.0 2300.0 3100.0 3400.0
+1600.0 1900.0 2500.0 2700.0 3200.0 3400.0
+1500.0 1800.0 2400.0 2600.0 3000.0 3300.0
+1400.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1800.0 2100.0 2600.0 2900.0 3100.0 3200.0
+2000.0 2400.0 2900.0 3100.0 3300.0 3400.0
+1500.0 1800.0 2200.0 2400.0 3300.0 3400.0
+1500.0 2000.0 2100.0 2700.0 3300.0 3400.0
+1600.0 1800.0 2000.0 2400.0 2900.0 3100.0
+1600.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2100.0 2600.0 3000.0 3200.0
+1600.0 1900.0 2100.0 2400.0 3000.0 3300.0
+1600.0 2000.0 2200.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2100.0 2400.0 3300.0 3400.0
+1400.0 1700.0 2200.0 2600.0 3000.0 3200.0
+1300.0 1600.0 2200.0 2500.0 3000.0 3200.0
+1300.0 1500.0 2100.0 2500.0 3000.0 3300.0
+1200.0 1600.0 1700.0 2400.0 3300.0 3400.0
+1300.0 1600.0 1700.0 2500.0 3300.0 3400.0
+1300.0 1600.0 1700.0 2500.0 3200.0 3300.0
+1400.0 1700.0 1800.0 2500.0 3200.0 3300.0
+1500.0 1800.0 2000.0 2500.0 3200.0 3300.0
+1500.0 1900.0 2000.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2400.0 3200.0 3300.0
+1600.0 1900.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2200.0 3000.0 3300.0
+1400.0 1600.0 2100.0 2200.0 3000.0 3200.0
+1400.0 1800.0 2100.0 2300.0 3000.0 3200.0
+1600.0 2100.0 2300.0 2700.0 3100.0 3300.0
+1200.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1600.0 2100.0 2200.0 2600.0 3300.0 3400.0
+1300.0 2000.0 2200.0 2500.0 3300.0 3400.0
+1300.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1300.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2800.0 3100.0 3300.0
+1900.0 2200.0 2500.0 2900.0 3100.0 3300.0
+2000.0 2100.0 2600.0 2800.0 3200.0 3300.0
+2000.0 2100.0 2700.0 2900.0 3200.0 3300.0
+1000.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1000.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1000.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1000.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1000.0 1800.0 2400.0 2600.0 3300.0 3400.0
+1000.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2500.0 3000.0 3300.0
+1300.0 1800.0 2100.0 2400.0 3200.0 3300.0
+1100.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1100.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1100.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1100.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1200.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2400.0 3300.0 3400.0
+1500.0 1800.0 2200.0 2300.0 3300.0 3400.0
+1700.0 2200.0 2700.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2800.0 3000.0 3200.0 3300.0
+1900.0 2200.0 2500.0 3000.0 3200.0 3300.0
+1600.0 2100.0 2300.0 2700.0 3300.0 3400.0
+1600.0 2000.0 2300.0 2700.0 3300.0 3400.0
+1600.0 2100.0 2500.0 3000.0 3300.0 3400.0
+1600.0 2200.0 2600.0 3000.0 3300.0 3400.0
+1900.0 2400.0 2900.0 3100.0 3300.0 3400.0
+2100.0 2500.0 2900.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2900.0 3000.0 3200.0 3300.0
+1700.0 2200.0 2400.0 2900.0 3200.0 3300.0
+1300.0 1800.0 2100.0 2500.0 3200.0 3300.0
+1500.0 1600.0 1800.0 2300.0 3000.0 3200.0
+1500.0 1600.0 1900.0 2000.0 3000.0 3300.0
+1400.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2400.0 2900.0 3100.0
+1500.0 1700.0 2100.0 2400.0 2900.0 3100.0
+1400.0 1700.0 2100.0 2400.0 3000.0 3200.0
+1400.0 1700.0 2300.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2600.0 3200.0 3300.0
+1000.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1400.0 1900.0 2000.0 2500.0 3200.0 3300.0
+1600.0 1900.0 2100.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2300.0 2500.0 3200.0 3300.0
+2200.0 2400.0 2800.0 3000.0 3200.0 3300.0
+1900.0 2300.0 2400.0 2700.0 3100.0 3200.0
+1900.0 2200.0 2300.0 2600.0 3100.0 3200.0
+1900.0 2100.0 2300.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1900.0 2200.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2500.0 3300.0 3400.0
+1700.0 1900.0 2200.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2800.0 3300.0 3400.0
+1800.0 2000.0 2300.0 2600.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2600.0 3200.0 3300.0
+2000.0 2200.0 2400.0 2700.0 3200.0 3300.0
+2100.0 2200.0 2500.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2700.0 2900.0 3100.0 3300.0
+2100.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2600.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2700.0 3000.0 3200.0
+1800.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2200.0 2500.0 3100.0 3200.0
+1300.0 1900.0 2100.0 2300.0 3100.0 3300.0
+1200.0 1600.0 2100.0 2200.0 3200.0 3400.0
+1100.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2100.0 2300.0 3100.0 3300.0
+1400.0 1900.0 2200.0 2500.0 3300.0 3400.0
+1300.0 1800.0 2200.0 2700.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2600.0 3200.0 3300.0
+1400.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2200.0 2600.0 3300.0 3400.0
+1400.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1400.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2300.0 3000.0 3300.0
+1400.0 1800.0 2200.0 2300.0 3100.0 3300.0
+1400.0 1800.0 2100.0 2300.0 3200.0 3400.0
+1500.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1700.0 2100.0 2500.0 3000.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2800.0 3200.0 3300.0
+1400.0 2000.0 2200.0 2400.0 3200.0 3300.0
+1200.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1200.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1200.0 2000.0 2200.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2300.0 2400.0 3200.0 3400.0
+1400.0 1600.0 1800.0 2500.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2200.0 2500.0 3100.0 3300.0
+2000.0 2100.0 2500.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2200.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2300.0 3200.0 3400.0
+1600.0 1800.0 2000.0 2300.0 3200.0 3400.0
+1600.0 1800.0 2100.0 2300.0 3200.0 3400.0
+1500.0 1800.0 2000.0 2300.0 3300.0 3400.0
+1500.0 1700.0 1900.0 2400.0 3300.0 3400.0
+1600.0 1900.0 2000.0 2700.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1700.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3100.0 3200.0
+2300.0 2400.0 2700.0 3000.0 3200.0 3300.0
+2200.0 2400.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2400.0 2500.0 2800.0 3200.0 3300.0
+2100.0 2400.0 2500.0 2800.0 3200.0 3300.0
+2000.0 2400.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2300.0 2400.0 2800.0 3200.0 3300.0
+1900.0 2300.0 2600.0 2700.0 3100.0 3300.0
+2000.0 2400.0 2800.0 2900.0 3200.0 3300.0
+1700.0 2200.0 2500.0 2800.0 3200.0 3400.0
+1500.0 2100.0 2400.0 2600.0 3100.0 3300.0
+1500.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1400.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1700.0 2400.0 2600.0 3300.0 3400.0
+1100.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1100.0 1800.0 2400.0 2500.0 3200.0 3300.0
+1100.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1100.0 2100.0 2500.0 2600.0 3200.0 3300.0
+1100.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1000.0 2200.0 2600.0 2700.0 3200.0 3300.0
+1100.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1100.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2500.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2600.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2600.0 2800.0 3000.0
+1500.0 1700.0 2100.0 2500.0 2800.0 3000.0
+1500.0 1600.0 2200.0 2500.0 2800.0 3100.0
+1500.0 1600.0 2300.0 2600.0 2800.0 3100.0
+1400.0 1500.0 2300.0 2700.0 2900.0 3100.0
+1400.0 1500.0 2200.0 2700.0 2800.0 3100.0
+1400.0 1600.0 2000.0 2700.0 2900.0 3100.0
+1500.0 1700.0 2200.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2200.0 2700.0 2900.0 3200.0
+1800.0 1900.0 2200.0 2700.0 2900.0 3100.0
+1700.0 1900.0 2200.0 2600.0 2900.0 3000.0
+1800.0 2000.0 2300.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2800.0 3000.0 3200.0
+1800.0 2000.0 2400.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2800.0 3000.0 3200.0
+1500.0 1700.0 2200.0 2500.0 3000.0 3100.0
+1700.0 2100.0 2400.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2700.0 2900.0 3400.0 3500.0
+1900.0 2400.0 2700.0 2900.0 3400.0 3500.0
+2000.0 2400.0 2600.0 2900.0 3300.0 3400.0
+1900.0 2400.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2300.0 2500.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1600.0 1700.0 2300.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2400.0 2600.0 2900.0 3100.0
+1600.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2700.0 3000.0 3200.0 3300.0
+1700.0 2300.0 2800.0 2900.0 3200.0 3300.0
+1700.0 2300.0 2700.0 3000.0 3200.0 3300.0
+1600.0 2100.0 2700.0 2900.0 3300.0 3400.0
+1200.0 1600.0 2400.0 2600.0 3000.0 3300.0
+1100.0 1400.0 2400.0 2700.0 2900.0 3100.0
+1200.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1200.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2500.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2500.0 2800.0 3100.0
+2000.0 2200.0 2400.0 2500.0 2800.0 3100.0
+2000.0 2200.0 2400.0 2600.0 2800.0 3200.0
+2000.0 2100.0 2500.0 2700.0 3100.0 3400.0
+1900.0 2000.0 2600.0 2700.0 3100.0 3300.0
+1900.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2400.0 2700.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2800.0 2900.0 3200.0 3400.0
+1900.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2100.0 2400.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2400.0 2800.0 3100.0 3200.0
+1900.0 2100.0 2400.0 2800.0 3300.0 3400.0
+1500.0 1800.0 2100.0 2600.0 3100.0 3300.0
+1600.0 1800.0 2100.0 2200.0 3000.0 3300.0
+1800.0 2100.0 2300.0 2500.0 3000.0 3200.0
+2000.0 2100.0 2300.0 2500.0 3000.0 3300.0
+2000.0 2100.0 2300.0 2500.0 2900.0 3300.0
+2000.0 2100.0 2300.0 2400.0 2900.0 3300.0
+1600.0 1800.0 2300.0 2500.0 2900.0 3200.0
+1700.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1600.0 2000.0 2300.0 2700.0 3000.0 3200.0
+1500.0 1800.0 2300.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2400.0 2800.0 3000.0
+1800.0 2000.0 2400.0 2500.0 2900.0 3200.0
+1800.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1900.0 2000.0 2400.0 2500.0 3000.0 3200.0
+1900.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2400.0 2900.0 3200.0
+1800.0 1900.0 2200.0 2300.0 2900.0 3200.0
+1600.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1600.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1800.0 2100.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2200.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2300.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2300.0 2400.0 2700.0 3000.0 3200.0
+2100.0 2200.0 2400.0 2500.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2600.0 2800.0 3300.0
+1900.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2400.0 2700.0 2900.0 3200.0
+2000.0 2200.0 2400.0 2700.0 2900.0 3200.0
+2100.0 2200.0 2400.0 2700.0 2900.0 3200.0
+2100.0 2300.0 2400.0 2600.0 2800.0 3200.0
+1300.0 2000.0 2300.0 2500.0 2700.0 3100.0
+1800.0 1900.0 2100.0 2400.0 2900.0 3100.0
+1700.0 1900.0 2100.0 2500.0 2900.0 3100.0
+1800.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2600.0 2800.0 3200.0
+1700.0 1800.0 2300.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2300.0 2700.0 2800.0 3200.0
+1500.0 1700.0 2300.0 2600.0 3000.0 3300.0
+1400.0 1700.0 2200.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2300.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2400.0 2800.0 3300.0
+1500.0 1600.0 2200.0 2400.0 2900.0 3300.0
+1500.0 1600.0 2200.0 2400.0 2800.0 3300.0
+1500.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2400.0 2700.0 3000.0 3200.0
+1600.0 2000.0 2500.0 2800.0 3000.0 3300.0
+2000.0 2200.0 2500.0 2600.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1500.0 1700.0 1800.0 2300.0 3300.0 3400.0
+1400.0 1600.0 1800.0 2000.0 3200.0 3400.0
+1400.0 1600.0 1800.0 1900.0 3100.0 3400.0
+1400.0 1600.0 1900.0 2000.0 2900.0 3300.0
+1400.0 1500.0 1900.0 2000.0 2900.0 3200.0
+1900.0 2200.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2500.0 2700.0 3000.0 3200.0
+1800.0 2200.0 2600.0 2700.0 3100.0 3200.0
+2000.0 2300.0 2700.0 2800.0 3200.0 3300.0
+2100.0 2200.0 2600.0 2800.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1800.0 2000.0 2100.0 2800.0 3200.0
+1600.0 1700.0 1900.0 2000.0 2800.0 3200.0
+1400.0 1500.0 1800.0 1900.0 2800.0 3200.0
+1400.0 1800.0 2100.0 2400.0 3000.0 3200.0
+1600.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1600.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1600.0 1900.0 2400.0 2700.0 3000.0 3300.0
+1500.0 1900.0 2400.0 2700.0 3000.0 3300.0
+1100.0 1400.0 2500.0 2800.0 3000.0 3300.0
+1100.0 1300.0 2300.0 2800.0 3000.0 3200.0
+1400.0 1500.0 2100.0 2700.0 2900.0 3100.0
+1500.0 1600.0 2100.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2800.0 3100.0
+1800.0 2000.0 2300.0 2600.0 2800.0 3000.0
+1900.0 2100.0 2300.0 2600.0 2800.0 3100.0
+2000.0 2100.0 2300.0 2600.0 2800.0 3100.0
+2000.0 2100.0 2400.0 2500.0 2800.0 3200.0
+1900.0 2100.0 2300.0 2500.0 2800.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2800.0 3300.0
+1700.0 1800.0 2300.0 2500.0 3000.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3000.0 3200.0
+1500.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1300.0 1500.0 1800.0 1900.0 2900.0 3200.0
+1300.0 1500.0 1800.0 1900.0 2900.0 3300.0
+1300.0 1500.0 1800.0 1900.0 2800.0 3200.0
+1400.0 1500.0 1700.0 1900.0 2800.0 3200.0
+1400.0 1500.0 1700.0 1800.0 2800.0 3200.0
+1700.0 2000.0 2400.0 2500.0 3100.0 3300.0
+2100.0 2400.0 2700.0 2800.0 3300.0 3500.0
+1800.0 2300.0 2700.0 2900.0 3200.0 3400.0
+1700.0 2300.0 2700.0 2900.0 3300.0 3400.0
+1700.0 2100.0 2700.0 2900.0 3300.0 3400.0
+1800.0 2400.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2500.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2500.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2700.0 3000.0 3200.0 3400.0
+1900.0 2300.0 2700.0 3000.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2700.0 2900.0 3200.0
+1800.0 2000.0 2400.0 2700.0 2900.0 3100.0
+1900.0 2000.0 2300.0 2700.0 2900.0 3000.0
+1900.0 2000.0 2400.0 2700.0 2900.0 3100.0
+1800.0 1900.0 2400.0 2700.0 2900.0 3100.0
+1800.0 1900.0 2300.0 2700.0 2800.0 3100.0
+1800.0 1900.0 2300.0 2600.0 2800.0 3100.0
+1500.0 1800.0 2400.0 2700.0 3200.0 3400.0
+1600.0 1800.0 2500.0 2700.0 3100.0 3400.0
+1500.0 1700.0 2400.0 2700.0 3000.0 3300.0
+1400.0 1500.0 2400.0 2700.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2700.0 2900.0 3100.0
+1400.0 1600.0 2100.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2100.0 2600.0 2800.0 3000.0
+1400.0 1600.0 2200.0 2400.0 3000.0 3200.0
+1300.0 1600.0 2200.0 2500.0 2900.0 3200.0
+1300.0 1700.0 2200.0 2600.0 3000.0 3300.0
+1300.0 1700.0 2200.0 2700.0 3100.0 3200.0
+1200.0 1400.0 2200.0 2700.0 2900.0 3100.0
+1100.0 1400.0 2300.0 2700.0 2900.0 3100.0
+1100.0 1300.0 2400.0 2800.0 3000.0 3200.0
+1200.0 1600.0 2300.0 2600.0 3100.0 3200.0
+1500.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1800.0 2100.0 2400.0 2800.0 3200.0 3300.0
+1600.0 2100.0 2400.0 2800.0 3200.0 3300.0
+1600.0 2000.0 2500.0 2900.0 3200.0 3300.0
+1800.0 2000.0 2500.0 2900.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1600.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2500.0 2800.0 3200.0
+1400.0 1600.0 2100.0 2500.0 2800.0 3100.0
+1200.0 1400.0 2200.0 2500.0 2700.0 3100.0
+1100.0 1400.0 2400.0 2800.0 2900.0 3100.0
+1400.0 1700.0 2300.0 2600.0 2900.0 3200.0
+1500.0 1800.0 2300.0 2500.0 2900.0 3300.0
+1500.0 1700.0 2000.0 2100.0 3000.0 3300.0
+1500.0 1700.0 2000.0 2200.0 3100.0 3300.0
+1500.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1600.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2800.0 3100.0 3300.0 3400.0
+1800.0 2200.0 2700.0 2900.0 3200.0 3400.0
+1700.0 2200.0 2700.0 2800.0 3200.0 3400.0
+1500.0 1800.0 2600.0 2700.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2700.0 2800.0 3100.0
+1400.0 1500.0 2100.0 2200.0 2700.0 3200.0
+1400.0 1500.0 2000.0 2100.0 2600.0 3100.0
+1300.0 1500.0 1900.0 2000.0 2500.0 3100.0
+1400.0 1500.0 1800.0 1900.0 2700.0 3200.0
+1500.0 1600.0 2000.0 2100.0 2600.0 3100.0
+1700.0 1800.0 2000.0 2200.0 2600.0 3100.0
+1700.0 1800.0 2100.0 2200.0 2700.0 3100.0
+1600.0 2000.0 2400.0 2500.0 3000.0 3200.0
+2000.0 2200.0 2500.0 2900.0 3100.0 3300.0
+1900.0 2200.0 2400.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2200.0 2400.0 2700.0 3300.0
+1700.0 1800.0 2300.0 2400.0 2800.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2800.0 3200.0
+1900.0 2100.0 2400.0 2500.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2600.0 3000.0 3300.0
+2000.0 2100.0 2500.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2200.0 2700.0 2800.0 3100.0
+1800.0 1900.0 2400.0 2700.0 2800.0 3200.0
+1800.0 1900.0 2400.0 2700.0 2900.0 3200.0
+1700.0 1800.0 2200.0 2700.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2500.0 2900.0 3100.0 3300.0
+1700.0 2000.0 2500.0 2700.0 3200.0 3400.0
+1900.0 2200.0 2700.0 3000.0 3300.0 3400.0
+2000.0 2400.0 2800.0 3100.0 3400.0 3500.0
+2100.0 2400.0 2600.0 2900.0 3200.0 3300.0
+2100.0 2400.0 2500.0 2700.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1700.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1500.0 1600.0 1800.0 1900.0 2600.0 3100.0
+1500.0 1600.0 1900.0 2000.0 2500.0 3100.0
+1600.0 1700.0 2000.0 2100.0 2500.0 3100.0
+1800.0 2100.0 2300.0 2500.0 2800.0 3200.0
+1900.0 2100.0 2300.0 2500.0 2700.0 3200.0
+2000.0 2200.0 2400.0 2600.0 2900.0 3300.0
+2000.0 2200.0 2400.0 2600.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2500.0 2900.0 3300.0
+1800.0 2200.0 2500.0 2900.0 3400.0 3500.0
+1800.0 2300.0 2500.0 2900.0 3300.0 3400.0
+2000.0 2300.0 2500.0 2800.0 3000.0 3300.0
+1800.0 2000.0 2400.0 2500.0 2800.0 3300.0
+1100.0 1400.0 2600.0 2800.0 3000.0 3200.0
+1300.0 1500.0 2200.0 2700.0 2900.0 3200.0
+1400.0 1600.0 2200.0 2700.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1700.0 1800.0 2400.0 2700.0 3000.0 3100.0
+1600.0 1700.0 2500.0 2800.0 3000.0 3200.0
+1400.0 1500.0 2200.0 2700.0 2900.0 3100.0
+1300.0 1400.0 2100.0 2700.0 2900.0 3200.0
+1500.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2500.0 2700.0 3100.0
+1600.0 1700.0 2200.0 2500.0 2800.0 3200.0
+1600.0 1800.0 2100.0 2500.0 2900.0 3200.0
+1600.0 1800.0 2100.0 2600.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2400.0 2700.0 3000.0 3300.0
+2000.0 2100.0 2500.0 2800.0 3000.0 3200.0
+1800.0 2000.0 2500.0 2700.0 3000.0 3200.0
+1600.0 1900.0 2300.0 2700.0 2900.0 3200.0
+1600.0 1900.0 2100.0 2500.0 2800.0 3100.0
+1700.0 1900.0 2100.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2100.0 2600.0 2800.0 3000.0
+1600.0 1700.0 2000.0 2600.0 2800.0 3000.0
+1400.0 1700.0 2200.0 2700.0 3000.0 3200.0
+1500.0 1800.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2600.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1600.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1200.0 1300.0 2100.0 2700.0 3000.0 3100.0
+1300.0 1400.0 2100.0 2700.0 2900.0 3100.0
+1300.0 1400.0 2200.0 2700.0 2900.0 3100.0
+1300.0 1400.0 2100.0 2600.0 2800.0 3100.0
+1300.0 1500.0 2100.0 2600.0 2800.0 3100.0
+1500.0 1600.0 1900.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2100.0 2700.0 2900.0 3200.0
+1600.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3200.0 3400.0
+1700.0 2000.0 2400.0 2800.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2400.0 2800.0 3300.0
+1500.0 1600.0 2200.0 2400.0 3000.0 3300.0
+1500.0 1700.0 2300.0 2700.0 3100.0 3300.0
+1400.0 1500.0 2000.0 2600.0 2900.0 3100.0
+1400.0 1500.0 2100.0 2500.0 2800.0 3100.0
+1400.0 1700.0 2200.0 2600.0 3000.0 3300.0
+1000.0 1500.0 2600.0 2800.0 3100.0 3400.0
+1300.0 1500.0 2500.0 2700.0 2900.0 3300.0
+1500.0 1600.0 2200.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2700.0 3200.0
+1700.0 1800.0 2100.0 2400.0 2600.0 3100.0
+1600.0 1700.0 2100.0 2400.0 2700.0 3200.0
+1600.0 1900.0 2300.0 2700.0 3000.0 3300.0
+1500.0 1600.0 2000.0 2400.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3200.0 3400.0
+1600.0 1800.0 2400.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2300.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2100.0 2500.0 2900.0 3200.0
+1800.0 1900.0 2100.0 2600.0 2800.0 3000.0
+1800.0 1900.0 2200.0 2600.0 2800.0 3000.0
+1800.0 1900.0 2200.0 2600.0 2900.0 3100.0
+1700.0 1800.0 2100.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2700.0 2900.0 3100.0
+1400.0 1600.0 2100.0 2700.0 2900.0 3200.0
+1200.0 1600.0 2200.0 2400.0 3000.0 3300.0
+1600.0 1900.0 2300.0 2700.0 3100.0 3400.0
+1200.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1600.0 2000.0 2400.0 2800.0 3100.0 3300.0
+1700.0 1900.0 2100.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2600.0 3100.0 3400.0
+1900.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1900.0 2100.0 2300.0 2700.0 3100.0 3300.0
+1200.0 1400.0 2200.0 2800.0 3000.0 3100.0
+1800.0 2100.0 2400.0 2700.0 3200.0 3400.0
+1600.0 2100.0 2500.0 2800.0 3100.0 3300.0
+1600.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2500.0 2800.0 3200.0 3400.0
+1700.0 1900.0 2700.0 2800.0 3100.0 3400.0
+1600.0 1800.0 2400.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2300.0 2500.0 3100.0 3400.0
+1600.0 1800.0 2200.0 2500.0 3100.0 3400.0
+1600.0 1800.0 2100.0 2300.0 3100.0 3400.0
+1500.0 1700.0 2000.0 2200.0 3000.0 3300.0
+1500.0 1600.0 1900.0 2000.0 3000.0 3200.0
+1300.0 1500.0 1700.0 1900.0 2800.0 3200.0
+1800.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2200.0 2600.0 3000.0 3200.0
+1600.0 1900.0 2400.0 2600.0 3000.0 3300.0
+1300.0 1700.0 2100.0 2400.0 2900.0 3200.0
+1600.0 1800.0 2400.0 2600.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2300.0 2900.0 3200.0
+1300.0 1400.0 2100.0 2200.0 3000.0 3200.0
+1300.0 1500.0 1800.0 2000.0 3000.0 3200.0
+1300.0 1400.0 1800.0 1900.0 2800.0 3200.0
+1300.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1200.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1400.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1600.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2700.0 3100.0 3300.0
+1600.0 2000.0 2500.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2300.0 2600.0 2800.0 3200.0
+1300.0 1500.0 2000.0 2600.0 2700.0 3000.0
+1300.0 1500.0 2200.0 2600.0 2800.0 3100.0
+1400.0 1500.0 2100.0 2600.0 2800.0 3100.0
+1400.0 1500.0 2100.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2000.0 2500.0 2700.0 3000.0
+1500.0 1700.0 2000.0 2500.0 2700.0 3000.0
+1600.0 1700.0 2000.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2100.0 2500.0 2900.0 3100.0
+1700.0 1900.0 2100.0 2500.0 2900.0 3000.0
+1800.0 2000.0 2200.0 2600.0 2800.0 3000.0
+1800.0 2100.0 2300.0 2600.0 2800.0 3100.0
+1800.0 2100.0 2300.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2600.0 2800.0 3100.0
+1700.0 1900.0 2200.0 2600.0 2800.0 3000.0
+1700.0 1800.0 2100.0 2500.0 2700.0 3000.0
+1500.0 1700.0 2200.0 2400.0 2800.0 3300.0
+1500.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2400.0 2600.0 3000.0 3200.0
+2000.0 2200.0 2400.0 2700.0 3000.0 3200.0
+1900.0 2300.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1600.0 1800.0 2000.0 3100.0 3300.0
+1200.0 1400.0 1900.0 2500.0 2900.0 3100.0
+1600.0 1700.0 2000.0 2100.0 2900.0 3300.0
+1700.0 1800.0 2100.0 2200.0 2900.0 3300.0
+1800.0 1900.0 2200.0 2300.0 3000.0 3300.0
+1900.0 2000.0 2200.0 2300.0 3100.0 3300.0
+2000.0 2100.0 2300.0 2500.0 3100.0 3400.0
+1900.0 2100.0 2300.0 2500.0 3000.0 3200.0
+1800.0 2000.0 2300.0 2400.0 2900.0 3200.0
+1900.0 2200.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2400.0 2600.0 2700.0 3200.0 3400.0
+1800.0 2200.0 2600.0 2700.0 3100.0 3300.0
+1600.0 2100.0 2600.0 2700.0 3100.0 3300.0
+1600.0 2100.0 2500.0 2800.0 3200.0 3400.0
+1900.0 2200.0 2500.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2800.0 3300.0 3400.0
+1700.0 1900.0 2600.0 2800.0 3100.0 3400.0
+1600.0 1700.0 2400.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2200.0 2500.0 2800.0 3200.0
+1400.0 1600.0 2300.0 2500.0 2900.0 3200.0
+1400.0 1500.0 2300.0 2600.0 2900.0 3200.0
+1300.0 1500.0 2400.0 2600.0 3000.0 3300.0
+1200.0 1400.0 2400.0 2600.0 2900.0 3300.0
+1200.0 1300.0 2300.0 2600.0 2800.0 3200.0
+1200.0 1300.0 2300.0 2600.0 2800.0 3100.0
+1200.0 1400.0 2300.0 2600.0 2800.0 3200.0
+1200.0 1400.0 2300.0 2500.0 2800.0 3200.0
+1200.0 1400.0 2300.0 2500.0 2700.0 3200.0
+1300.0 1400.0 2300.0 2500.0 2700.0 3200.0
+1300.0 1400.0 2300.0 2400.0 2900.0 3200.0
+1300.0 1600.0 2300.0 2400.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2500.0 2900.0 3200.0
+1600.0 1800.0 2300.0 2400.0 2900.0 3200.0
+1600.0 1800.0 2200.0 2400.0 2900.0 3200.0
+1700.0 1900.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2600.0 2900.0 3200.0
+1600.0 1800.0 2500.0 2700.0 2900.0 3200.0
+1600.0 1900.0 2500.0 2800.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2800.0 3000.0 3200.0
+1400.0 1700.0 2400.0 2700.0 2900.0 3200.0
+1400.0 1500.0 2200.0 2600.0 2800.0 3100.0
+1300.0 1500.0 2300.0 2600.0 2800.0 3100.0
+1200.0 1400.0 2300.0 2500.0 2700.0 3100.0
+1300.0 1600.0 2200.0 2600.0 3000.0 3300.0
+1200.0 1600.0 2500.0 2700.0 3100.0 3400.0
+1300.0 1800.0 2400.0 2700.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2700.0 3100.0 3300.0
+1300.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1300.0 1600.0 2200.0 2600.0 2900.0 3200.0
+1400.0 1600.0 2200.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2200.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2400.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2800.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2600.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2300.0 2600.0 2900.0 3100.0
+1900.0 2200.0 2400.0 2700.0 3000.0 3100.0
+1800.0 2300.0 2400.0 2700.0 3000.0 3100.0
+1800.0 2300.0 2400.0 2600.0 3100.0 3200.0
+2000.0 2300.0 2400.0 2700.0 3100.0 3200.0
+2100.0 2300.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2000.0 2300.0 2700.0 2900.0 3100.0
+1600.0 1800.0 2200.0 2500.0 2700.0 3000.0
+1500.0 1800.0 2300.0 2500.0 2700.0 3000.0
+1500.0 1800.0 2200.0 2500.0 2700.0 3000.0
+1600.0 1800.0 2300.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2400.0 2700.0 3000.0 3200.0
+1700.0 1800.0 2500.0 2700.0 3000.0 3200.0
+1700.0 1800.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2400.0 2600.0 2800.0 3200.0
+1500.0 1700.0 2400.0 2500.0 2800.0 3200.0
+1400.0 1600.0 2400.0 2500.0 3000.0 3300.0
+1500.0 1700.0 2300.0 2400.0 2900.0 3200.0
+1500.0 1800.0 2200.0 2400.0 2800.0 3000.0
+1600.0 1900.0 2200.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2600.0 2900.0 3000.0
+1600.0 2000.0 2300.0 2500.0 2900.0 3100.0
+1600.0 1800.0 2100.0 2300.0 2900.0 3100.0
+1300.0 1500.0 2200.0 2400.0 3000.0 3200.0
+1300.0 1500.0 2200.0 2400.0 2900.0 3200.0
+1300.0 1500.0 2200.0 2500.0 2900.0 3200.0
+1400.0 1500.0 2300.0 2500.0 2900.0 3200.0
+1600.0 1700.0 2100.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2100.0 2500.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2900.0 3100.0
+1700.0 1900.0 2300.0 2600.0 2900.0 3200.0
+1800.0 2100.0 2300.0 2600.0 2900.0 3200.0
+1800.0 2100.0 2300.0 2700.0 2900.0 3200.0
+1900.0 2200.0 2400.0 2700.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2700.0 2900.0 3100.0
+1900.0 2000.0 2300.0 2600.0 2800.0 3100.0
+1900.0 2200.0 2500.0 2800.0 3100.0 3300.0
+1900.0 2200.0 2400.0 2800.0 3000.0 3200.0
+1900.0 2200.0 2400.0 2700.0 2900.0 3100.0
+1900.0 2300.0 2400.0 2800.0 3100.0 3200.0
+2000.0 2300.0 2500.0 2800.0 3100.0 3300.0
+1900.0 2400.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2100.0 2400.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2400.0 2700.0 3200.0
+1300.0 1400.0 2200.0 2500.0 2700.0 3200.0
+1200.0 1500.0 2500.0 2700.0 3000.0 3300.0
+1300.0 1600.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2200.0 2600.0 2700.0 3000.0 3300.0
+2100.0 2300.0 2500.0 2700.0 3000.0 3300.0
+2100.0 2300.0 2600.0 2700.0 3000.0 3300.0
+2000.0 2200.0 2600.0 2700.0 3000.0 3200.0
+1800.0 2300.0 2500.0 2600.0 2900.0 3200.0
+1800.0 2300.0 2500.0 2700.0 2900.0 3100.0
+1800.0 2200.0 2400.0 2600.0 2900.0 3200.0
+1800.0 2200.0 2400.0 2600.0 2800.0 3100.0
+1800.0 2200.0 2300.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2800.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2800.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2800.0 3000.0 3300.0
+1400.0 1700.0 2200.0 2500.0 2800.0 2900.0
+1400.0 1700.0 2100.0 2500.0 2900.0 3200.0
+1700.0 2000.0 2200.0 2800.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2700.0 2900.0 3200.0
+1800.0 2000.0 2200.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2700.0 2800.0 3000.0
+1800.0 2000.0 2200.0 2700.0 2800.0 3100.0
+1600.0 1900.0 2100.0 2600.0 2900.0 3200.0
+2000.0 2100.0 2600.0 2900.0 3000.0 3200.0
+2000.0 2200.0 2700.0 2900.0 3100.0 3300.0
+2000.0 2200.0 2400.0 2800.0 3000.0 3200.0
+2000.0 2200.0 2300.0 2700.0 3000.0 3200.0
+1700.0 2200.0 2400.0 2600.0 2900.0 3100.0
+1800.0 2200.0 2400.0 2700.0 3000.0 3200.0
+1900.0 2300.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2300.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2300.0 2500.0 2800.0 3000.0 3200.0
+1900.0 2300.0 2500.0 2700.0 2900.0 3200.0
+1800.0 2200.0 2400.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2100.0 2800.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2500.0 3000.0 3100.0
+1400.0 1800.0 2300.0 2500.0 3000.0 3100.0
+1400.0 1800.0 2300.0 2500.0 2900.0 3100.0
+1600.0 1800.0 2500.0 2800.0 3100.0 3200.0
+1700.0 2000.0 2400.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2500.0 2800.0 3100.0 3400.0
+1500.0 1700.0 2300.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2200.0 2600.0 2800.0 3200.0
+1500.0 1700.0 2200.0 2600.0 2900.0 3300.0
+1400.0 1700.0 2200.0 2600.0 2900.0 3300.0
+1200.0 1500.0 2200.0 2300.0 3100.0 3400.0
+1200.0 1600.0 2300.0 2400.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3100.0 3300.0
+1100.0 1700.0 2400.0 2500.0 3100.0 3300.0
+1100.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1100.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1000.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1000.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1100.0 1600.0 2400.0 2500.0 3200.0 3300.0
+1100.0 1600.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2500.0 3100.0 3300.0
+1400.0 1700.0 2300.0 2500.0 3100.0 3300.0
+2000.0 2100.0 2500.0 2600.0 3200.0 3400.0
+1700.0 2100.0 2600.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2700.0 2900.0 3100.0 3300.0
+2100.0 2400.0 2700.0 2900.0 3200.0 3300.0
+2100.0 2500.0 2700.0 2900.0 3300.0 3400.0
+2100.0 2400.0 2600.0 2800.0 3200.0 3400.0
+1700.0 1900.0 2400.0 2600.0 2900.0 3000.0
+1600.0 1900.0 2400.0 2500.0 2800.0 2900.0
+1300.0 2000.0 2400.0 2500.0 2900.0 3200.0
+1500.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1600.0 2000.0 2400.0 2600.0 3000.0 3100.0
+1700.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1600.0 1800.0 2600.0 2700.0 3300.0 3400.0
+1500.0 1600.0 2600.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2600.0 2700.0 3200.0 3400.0
+1500.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2700.0 2900.0 3300.0 3400.0
+1700.0 2300.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2300.0 2700.0 2800.0 3300.0 3400.0
+1400.0 1700.0 2500.0 2600.0 3000.0 3300.0
+1400.0 1800.0 2500.0 2600.0 3000.0 3300.0
+1800.0 2200.0 2700.0 2900.0 3300.0 3400.0
+1800.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1400.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1400.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1400.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1200.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1200.0 1700.0 2300.0 2500.0 3000.0 3100.0
+1200.0 1800.0 2400.0 2500.0 3000.0 3100.0
+1100.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1400.0 1800.0 2200.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2400.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1600.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1600.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1500.0 2400.0 2700.0 2800.0 3100.0 3300.0
+1300.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1400.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1600.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1600.0 2100.0 2300.0 2500.0 3000.0 3100.0
+1800.0 2100.0 2400.0 2700.0 2900.0 3200.0
+1500.0 1700.0 2000.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2000.0 2400.0 3200.0 3300.0
+1400.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1500.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1200.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1000.0 1700.0 2600.0 2800.0 3300.0 3400.0
+1200.0 1500.0 2400.0 2700.0 2900.0 3200.0
+1700.0 2100.0 2400.0 2800.0 3200.0 3400.0
+1700.0 2000.0 2600.0 2800.0 3100.0 3400.0
+1700.0 2000.0 2600.0 2700.0 3000.0 3300.0
+1500.0 1700.0 2500.0 2700.0 3000.0 3300.0
+1600.0 2000.0 2600.0 2800.0 3100.0 3300.0
+1500.0 2000.0 2500.0 2800.0 3200.0 3400.0
+1400.0 1800.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2600.0 2900.0 3200.0 3400.0
+1700.0 2200.0 2600.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1400.0 1800.0 2500.0 2700.0 3000.0 3300.0
+1300.0 1600.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1700.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1900.0 2000.0 2300.0 2500.0 3200.0 3400.0
+1600.0 1900.0 2100.0 2500.0 3000.0 3200.0
+1600.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1400.0 2000.0 2400.0 2700.0 3200.0 3300.0
+900.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1600.0 2700.0 2800.0 3200.0 3400.0
+1200.0 1600.0 2600.0 2800.0 3200.0 3400.0
+1300.0 1700.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1400.0 2100.0 2400.0 2600.0 2900.0 3100.0
+1300.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1600.0 2000.0 2400.0 2600.0 3200.0 3400.0
+1800.0 2000.0 2300.0 2500.0 3100.0 3400.0
+1700.0 1900.0 2300.0 2400.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2400.0 2900.0 3300.0
+1600.0 1800.0 2300.0 2400.0 3000.0 3300.0
+1600.0 1700.0 2300.0 2400.0 3000.0 3300.0
+1600.0 1700.0 2300.0 2400.0 2800.0 3200.0
+1600.0 1700.0 2300.0 2400.0 2900.0 3300.0
+1500.0 1700.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1600.0 2500.0 2700.0 3100.0 3300.0
+1300.0 1500.0 2500.0 2700.0 3100.0 3300.0
+1300.0 1600.0 2400.0 2700.0 3000.0 3400.0
+1800.0 2300.0 2600.0 2800.0 3100.0 3300.0
+1800.0 2200.0 2500.0 2800.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2700.0 3000.0 3300.0
+1600.0 1900.0 2500.0 2700.0 2900.0 3200.0
+1700.0 2000.0 2500.0 2700.0 3000.0 3200.0
+1700.0 2300.0 2600.0 2700.0 3200.0 3400.0
+1400.0 1700.0 1900.0 2200.0 3200.0 3300.0
+1200.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1200.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1200.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1100.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1200.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1200.0 1800.0 2300.0 2600.0 3200.0 3400.0
+1200.0 1600.0 2400.0 2700.0 3200.0 3400.0
+1200.0 1500.0 2400.0 2600.0 3000.0 3200.0
+1300.0 1500.0 2100.0 2500.0 2700.0 3000.0
+1200.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1200.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1700.0 2400.0 2700.0 3100.0 3300.0 3400.0
+2000.0 2500.0 2700.0 3100.0 3400.0 3500.0
+1900.0 2400.0 2700.0 3100.0 3400.0 3500.0
+1900.0 2200.0 2700.0 3100.0 3300.0 3400.0
+1800.0 2200.0 2700.0 3100.0 3300.0 3400.0
+1500.0 1700.0 2100.0 2500.0 3200.0 3300.0
+1400.0 1800.0 2100.0 2600.0 3200.0 3300.0
+1200.0 1700.0 2000.0 2300.0 3300.0 3400.0
+1300.0 1500.0 1600.0 2300.0 3100.0 3200.0
+1500.0 1900.0 2400.0 2600.0 3000.0 3300.0
+1500.0 2000.0 2400.0 2500.0 2800.0 3200.0
+1400.0 2000.0 2400.0 2500.0 2900.0 3200.0
+1300.0 1600.0 1700.0 2300.0 3300.0 3400.0
+1300.0 1600.0 1700.0 2100.0 3200.0 3400.0
+2000.0 2200.0 2500.0 2900.0 3300.0 3400.0
+2100.0 2300.0 2500.0 2700.0 3300.0 3400.0
+1900.0 2200.0 2400.0 2700.0 3300.0 3400.0
+1500.0 1900.0 2200.0 2400.0 3000.0 3300.0
+1500.0 1900.0 2400.0 2700.0 3300.0 3400.0
+1500.0 1700.0 2500.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2500.0 2600.0 3100.0 3400.0
+1600.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2600.0 3000.0 3100.0
+1500.0 1800.0 2200.0 2600.0 3000.0 3100.0
+1500.0 1900.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1500.0 2400.0 2600.0 3200.0 3300.0
+1500.0 2000.0 2500.0 2700.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2900.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1400.0 2000.0 2300.0 2500.0 3200.0 3400.0
+1200.0 1900.0 2200.0 2400.0 3300.0 3400.0
+1200.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1200.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1200.0 1700.0 2300.0 2400.0 3300.0 3400.0
+1200.0 1600.0 2200.0 2300.0 3300.0 3400.0
+1200.0 1600.0 2200.0 2400.0 3300.0 3400.0
+1300.0 1600.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2600.0 2900.0 3200.0
+2100.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1600.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1100.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2500.0 2600.0 2900.0 3200.0
+1500.0 2100.0 2500.0 2600.0 2900.0 3200.0
+1500.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1300.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1300.0 1800.0 2600.0 2700.0 3100.0 3400.0
+1300.0 1700.0 2600.0 2700.0 3100.0 3300.0
+1300.0 1700.0 2600.0 2700.0 3100.0 3400.0
+1400.0 1900.0 2400.0 2600.0 2900.0 3100.0
+1500.0 1800.0 2300.0 2600.0 2900.0 3100.0
+1600.0 1900.0 2400.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2600.0 2900.0 3100.0 3300.0
+1800.0 2300.0 2500.0 2800.0 3200.0 3400.0
+1900.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3000.0 3100.0
+1600.0 1900.0 2500.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2200.0 2500.0 3200.0 3300.0
+1500.0 1900.0 2200.0 2500.0 3300.0 3400.0
+1500.0 1800.0 2200.0 2400.0 3200.0 3400.0
+1500.0 1800.0 2100.0 2400.0 3200.0 3400.0
+1600.0 1800.0 2100.0 2200.0 3200.0 3400.0
+1700.0 1800.0 2100.0 2400.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2400.0 2700.0 3100.0
+1600.0 1900.0 2400.0 2500.0 3000.0 3300.0
+1600.0 2100.0 2500.0 2600.0 3200.0 3400.0
+1200.0 2000.0 2400.0 2500.0 3400.0 3500.0
+1200.0 1600.0 2300.0 2400.0 3200.0 3400.0
+1400.0 1900.0 2400.0 2500.0 3000.0 3200.0
+1300.0 1800.0 2100.0 2500.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2500.0 3100.0 3300.0
+1300.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1700.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1700.0 1900.0 2500.0 2700.0 3000.0 3100.0
+1700.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2500.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2400.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1500.0 1700.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1700.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2600.0 3300.0 3400.0
+1500.0 1800.0 2300.0 2500.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2400.0 3300.0 3400.0
+1800.0 2200.0 2400.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2600.0 3200.0 3300.0
+1900.0 2000.0 2200.0 2500.0 3300.0 3400.0
+1900.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1800.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1100.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1000.0 1700.0 2700.0 2800.0 3200.0 3300.0
+1000.0 1800.0 2600.0 2700.0 3000.0 3100.0
+1200.0 2000.0 2600.0 2800.0 3200.0 3300.0
+1200.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1200.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1200.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1300.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1300.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2600.0 3300.0 3400.0
+2200.0 2400.0 2500.0 2900.0 3200.0 3300.0
+2100.0 2200.0 2400.0 2800.0 3200.0 3300.0
+2000.0 2200.0 2400.0 2800.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2800.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2400.0 2800.0 3000.0
+1600.0 1900.0 2300.0 2400.0 2900.0 3300.0
+1800.0 2100.0 2400.0 2500.0 3100.0 3200.0
+1800.0 2300.0 2500.0 2700.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1500.0 1900.0 2100.0 2700.0 3000.0 3100.0
+1500.0 1700.0 1800.0 2600.0 3300.0 3400.0
+1500.0 1700.0 1800.0 2500.0 3300.0 3400.0
+1300.0 1500.0 1600.0 2500.0 3200.0 3300.0
+1300.0 1500.0 1700.0 2400.0 3000.0 3100.0
+1600.0 2000.0 2500.0 2700.0 3300.0 3400.0
+2000.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2200.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2600.0 3200.0 3300.0
+1700.0 2000.0 2100.0 2700.0 3200.0 3300.0
+1700.0 2100.0 2200.0 2700.0 3200.0 3300.0
+1700.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1700.0 2200.0 2400.0 2600.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2600.0 3200.0 3300.0
+1800.0 2400.0 2600.0 3000.0 3300.0 3400.0
+1800.0 2400.0 2800.0 3100.0 3300.0 3400.0
+1900.0 2400.0 2800.0 3100.0 3300.0 3500.0
+1900.0 2300.0 2800.0 3000.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2600.0 3000.0 3100.0
+1500.0 1700.0 1900.0 2500.0 3300.0 3400.0
+1200.0 1700.0 2200.0 2300.0 3100.0 3300.0
+1100.0 1500.0 2300.0 2400.0 3000.0 3300.0
+1200.0 1600.0 2300.0 2400.0 3100.0 3300.0
+1200.0 1600.0 2300.0 2400.0 3100.0 3400.0
+1300.0 1600.0 2200.0 2400.0 3200.0 3300.0
+1500.0 1600.0 2100.0 2400.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2400.0 3100.0 3300.0
+1500.0 1600.0 2100.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2200.0 2500.0 2900.0 3200.0
+1300.0 1600.0 2200.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2400.0 2800.0 3000.0 3100.0
+1700.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1800.0 2200.0 2500.0 2800.0 3000.0 3200.0
+1700.0 2100.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2500.0 2700.0 3200.0 3400.0
+1600.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2400.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2300.0 3300.0 3400.0
+1400.0 1600.0 1800.0 2200.0 3300.0 3400.0
+1500.0 1600.0 1900.0 2600.0 3000.0 3200.0
+1500.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1200.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1900.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1800.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1700.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1600.0 2100.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1500.0 2100.0 2500.0 2600.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2500.0 2900.0 3100.0
+1800.0 2000.0 2500.0 2800.0 3000.0 3200.0
+1400.0 1600.0 2100.0 2600.0 3000.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2700.0 3000.0 3300.0
+1800.0 2100.0 2500.0 2700.0 3100.0 3200.0
+2200.0 2300.0 2500.0 2800.0 3200.0 3300.0
+2100.0 2300.0 2500.0 2800.0 3200.0 3300.0
+2000.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2400.0 2700.0 3100.0 3400.0
+1300.0 1800.0 2100.0 2500.0 3100.0 3200.0
+1300.0 1800.0 2200.0 2800.0 3100.0 3200.0
+1300.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1500.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1500.0 1800.0 2400.0 2600.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2600.0 3200.0 3400.0
+1400.0 1700.0 2400.0 2600.0 3100.0 3300.0
+1400.0 1900.0 2500.0 2600.0 2900.0 3200.0
+1400.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1400.0 1900.0 2400.0 2600.0 3000.0 3100.0
+1400.0 1900.0 2300.0 2500.0 2700.0 3000.0
+1300.0 1800.0 2200.0 2500.0 3300.0 3400.0
+1300.0 1800.0 2200.0 2400.0 3300.0 3400.0
+1300.0 1700.0 2100.0 2400.0 3200.0 3400.0
+1400.0 1900.0 2300.0 2600.0 3100.0 3300.0
+1900.0 2200.0 2400.0 2800.0 3100.0 3200.0
+1600.0 2200.0 2400.0 2700.0 3300.0 3400.0
+1600.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1700.0 2000.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2300.0 2500.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2400.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1400.0 1900.0 2300.0 2500.0 2800.0 3200.0
+1400.0 1900.0 2300.0 2500.0 2900.0 3300.0
+1400.0 1600.0 2300.0 2500.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2500.0 3100.0 3200.0
+2000.0 2200.0 2500.0 2700.0 3000.0 3300.0
+1600.0 2100.0 2600.0 2900.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2500.0 3100.0 3200.0
+1200.0 2100.0 2600.0 2700.0 3200.0 3300.0
+1100.0 2100.0 2600.0 2800.0 3200.0 3300.0
+1000.0 2000.0 2800.0 2900.0 3100.0 3200.0
+1600.0 1900.0 2100.0 2500.0 3000.0 3100.0
+1700.0 1900.0 2200.0 2500.0 3000.0 3100.0
+1700.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1400.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1300.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1200.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1600.0 2300.0 2700.0 3100.0 3200.0
+1300.0 1700.0 2300.0 2700.0 3100.0 3200.0
+1100.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1300.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1800.0 2100.0 2600.0 3300.0 3400.0
+1500.0 1900.0 2100.0 2500.0 2800.0 3000.0
+1500.0 2000.0 2200.0 2500.0 3000.0 3100.0
+1500.0 2000.0 2200.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2600.0 2900.0 3100.0
+1900.0 2300.0 2600.0 2800.0 3100.0 3200.0
+2000.0 2400.0 2700.0 2800.0 3100.0 3200.0
+1300.0 1800.0 2000.0 2400.0 3100.0 3200.0
+1100.0 1700.0 2100.0 2400.0 3100.0 3200.0
+1300.0 1600.0 2100.0 2500.0 3000.0 3100.0
+1200.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2100.0 2300.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2200.0 3200.0 3300.0
+1700.0 1900.0 2100.0 2300.0 3200.0 3300.0
+1800.0 1900.0 2400.0 2800.0 3100.0 3200.0
+2000.0 2300.0 2800.0 3000.0 3100.0 3300.0
+2100.0 2300.0 2700.0 3000.0 3200.0 3300.0
+2100.0 2300.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1600.0 2000.0 2300.0 2400.0 2800.0 3200.0
+1700.0 2100.0 2300.0 2400.0 2900.0 3200.0
+1400.0 1800.0 2300.0 2600.0 3000.0 3300.0
+1500.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1500.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1600.0 2400.0 2500.0 3100.0 3400.0
+1600.0 2200.0 2500.0 2800.0 3300.0 3400.0
+1600.0 2000.0 2500.0 2800.0 3300.0 3400.0
+1400.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1400.0 1600.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2400.0 2800.0 3200.0
+1500.0 2000.0 2300.0 2400.0 2700.0 3200.0
+1400.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1200.0 1400.0 2300.0 2600.0 2900.0 3100.0
+1500.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1800.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2600.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2400.0 3000.0 3100.0
+1500.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1700.0 2000.0 2600.0 2800.0 3200.0 3300.0
+1500.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2000.0 2300.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1800.0 2300.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2400.0 3000.0 3300.0
+1500.0 1700.0 2300.0 2500.0 3200.0 3400.0
+1500.0 1700.0 2300.0 2400.0 2800.0 3300.0
+1600.0 1700.0 2200.0 2400.0 2600.0 3200.0
+1700.0 1800.0 2200.0 2400.0 2900.0 3300.0
+1900.0 2100.0 2400.0 2500.0 3100.0 3300.0
+1900.0 2000.0 2400.0 2500.0 3100.0 3300.0
+1900.0 2300.0 2500.0 2900.0 3200.0 3300.0
+2200.0 2400.0 2700.0 3100.0 3300.0 3400.0
+2200.0 2400.0 2800.0 3100.0 3300.0 3400.0
+1500.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2300.0 3100.0 3300.0
+1700.0 2000.0 2600.0 2900.0 3200.0 3400.0
+1500.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1300.0 1600.0 2000.0 2500.0 3000.0 3200.0
+1800.0 2000.0 2200.0 2500.0 3000.0 3100.0
+1200.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1300.0 1500.0 2100.0 2200.0 3100.0 3200.0
+1400.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1900.0 2300.0 2600.0 3000.0 3200.0 3400.0
+1900.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2600.0 2900.0 3100.0 3300.0
+1200.0 1500.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1900.0 2300.0 2400.0 2600.0 3100.0
+1500.0 1600.0 2100.0 2400.0 2900.0 3200.0
+1400.0 1600.0 2200.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2100.0 2300.0 3000.0 3100.0
+1700.0 1900.0 2100.0 2300.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2300.0 3100.0 3300.0
+1700.0 2100.0 2400.0 2900.0 3300.0 3400.0
+1600.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1500.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1600.0 2000.0 2300.0 2500.0 2800.0 3000.0
+1500.0 1700.0 1800.0 2200.0 2800.0 2900.0
+1500.0 1700.0 1900.0 2100.0 2700.0 2800.0
+1600.0 2000.0 2300.0 2500.0 3000.0 3300.0
+1900.0 2300.0 2500.0 2800.0 3100.0 3200.0
+2200.0 2400.0 2600.0 3000.0 3200.0 3300.0
+2300.0 2500.0 2800.0 3100.0 3300.0 3400.0
+1900.0 2400.0 2700.0 3000.0 3400.0 3500.0
+1900.0 2400.0 2600.0 3000.0 3400.0 3500.0
+1800.0 2300.0 2700.0 3100.0 3400.0 3500.0
+1800.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1400.0 1700.0 2200.0 2500.0 3200.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3100.0 3300.0
+2000.0 2300.0 2600.0 2800.0 3300.0 3400.0
+1900.0 2200.0 2500.0 2800.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1600.0 1700.0 2300.0 2500.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2400.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2600.0 3300.0 3400.0
+1500.0 1700.0 2300.0 2700.0 3300.0 3400.0
+1400.0 1800.0 2300.0 2400.0 3100.0 3400.0
+1500.0 2000.0 2300.0 2400.0 2900.0 3200.0
+1500.0 1900.0 2300.0 2400.0 2800.0 3200.0
+1300.0 1800.0 2200.0 2500.0 3000.0 3100.0
+1200.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1100.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1100.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1100.0 1700.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1300.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1300.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1400.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1200.0 1600.0 2400.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2500.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2600.0 3000.0 3200.0
+1500.0 1600.0 2200.0 2500.0 3000.0 3300.0
+1200.0 1600.0 2400.0 2600.0 3200.0 3400.0
+1000.0 2300.0 2800.0 2900.0 3100.0 3200.0
+900.0 1700.0 2700.0 2800.0 3200.0 3300.0
+1500.0 1700.0 2400.0 2500.0 3100.0 3200.0
+1500.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1400.0 1900.0 2400.0 2500.0 2900.0 3100.0
+1600.0 2100.0 2400.0 2600.0 3000.0 3100.0
+1700.0 1900.0 2300.0 2500.0 3000.0 3100.0
+2100.0 2400.0 2600.0 2900.0 3100.0 3300.0
+2200.0 2400.0 2700.0 2900.0 3200.0 3300.0
+2100.0 2200.0 2700.0 2800.0 3100.0 3300.0
+2000.0 2100.0 2300.0 2600.0 3100.0 3300.0
+1800.0 2000.0 2100.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2500.0 2900.0 3000.0
+1800.0 1900.0 2300.0 2400.0 3000.0 3100.0
+1800.0 1900.0 2200.0 2400.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2500.0 3100.0 3200.0
+1800.0 2000.0 2300.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2400.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2400.0 2800.0 3000.0 3100.0
+1700.0 1900.0 2300.0 2700.0 2900.0 3100.0
+1700.0 1900.0 2200.0 2700.0 2900.0 3100.0
+1600.0 1800.0 2000.0 2600.0 2800.0 3000.0
+1500.0 1700.0 2000.0 2500.0 2900.0 3100.0
+1700.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2400.0 3100.0 3300.0
+1800.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1800.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1600.0 2100.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2000.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2000.0 2400.0 3200.0 3300.0
+1200.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1100.0 1700.0 2100.0 2300.0 3000.0 3100.0
+1300.0 1500.0 1700.0 2000.0 2900.0 3100.0
+1600.0 1900.0 2200.0 2400.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2100.0 2500.0 3100.0 3300.0
+2000.0 2300.0 2500.0 2700.0 3100.0 3400.0
+1900.0 2200.0 2500.0 2600.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2400.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2400.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2400.0 3000.0 3100.0
+1500.0 1600.0 2500.0 2600.0 2900.0 3300.0
+1500.0 1700.0 2500.0 2600.0 3100.0 3200.0
+1900.0 2300.0 2500.0 2800.0 3200.0 3300.0
+1400.0 1600.0 2000.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2600.0 3000.0 3100.0
+1800.0 1900.0 2400.0 2900.0 3100.0 3300.0
+1800.0 1900.0 2500.0 2900.0 3100.0 3300.0
+1600.0 1800.0 2100.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2700.0 2900.0 3200.0
+1600.0 2000.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2300.0 2500.0 3300.0 3400.0
+1400.0 1600.0 2200.0 2400.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2500.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2500.0 3200.0 3300.0
+1700.0 2100.0 2300.0 2400.0 3100.0 3300.0
+1600.0 2000.0 2400.0 2500.0 3000.0 3300.0
+1500.0 1800.0 2300.0 2400.0 2900.0 3200.0
+1600.0 2000.0 2400.0 2800.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2800.0 3200.0 3400.0
+1900.0 2200.0 2500.0 2800.0 3100.0 3400.0
+1300.0 1800.0 2400.0 2600.0 3100.0 3400.0
+1300.0 1500.0 2400.0 2500.0 2900.0 3300.0
+1300.0 1700.0 2500.0 2600.0 3100.0 3200.0
+1300.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2100.0 2600.0 3200.0 3300.0
+1700.0 2000.0 2100.0 2300.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2600.0 3200.0 3400.0
+2100.0 2200.0 2500.0 2700.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2500.0 2700.0 3300.0 3400.0
+1400.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1600.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1600.0 1900.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2100.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2200.0 2500.0 2700.0 3100.0
+1400.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1300.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1300.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1800.0 2100.0 2500.0 2700.0 3000.0 3300.0
+1800.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1900.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1900.0 2000.0 2700.0 2800.0 3200.0 3400.0
+1900.0 2000.0 2600.0 2900.0 3100.0 3300.0
+2000.0 2200.0 2800.0 2900.0 3300.0 3400.0
+2000.0 2100.0 2700.0 2800.0 3300.0 3400.0
+1900.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1600.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1400.0 1900.0 2100.0 2400.0 3200.0 3300.0
+1200.0 1900.0 2100.0 2400.0 3100.0 3200.0
+1200.0 1800.0 2100.0 2500.0 2900.0 3200.0
+1300.0 1700.0 1900.0 2400.0 2800.0 2900.0
+1900.0 2300.0 2600.0 3000.0 3200.0 3300.0
+1800.0 2300.0 2600.0 3000.0 3300.0 3400.0
+1800.0 2200.0 2500.0 2800.0 3300.0 3500.0
+1700.0 1900.0 2300.0 2400.0 3200.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3100.0 3300.0
+2100.0 2200.0 2400.0 2500.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2800.0 3100.0 3200.0
+2000.0 2300.0 2600.0 2700.0 3100.0 3300.0
+2100.0 2200.0 2500.0 2600.0 3100.0 3300.0
+2000.0 2200.0 2300.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2300.0 3200.0 3300.0
+1800.0 1900.0 2100.0 2400.0 3300.0 3400.0
+1700.0 1800.0 2200.0 2300.0 3300.0 3400.0
+1700.0 1800.0 2200.0 2300.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2300.0 2900.0 3400.0
+1400.0 1600.0 2500.0 2600.0 3100.0 3200.0
+1300.0 1400.0 2400.0 2600.0 3000.0 3100.0
+1300.0 1500.0 2400.0 2500.0 3000.0 3200.0
+1300.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1300.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2400.0 3300.0 3400.0
+1000.0 1500.0 2500.0 2600.0 3200.0 3400.0
+1000.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2200.0 2600.0 3000.0 3200.0
+900.0 1800.0 2400.0 2600.0 3300.0 3400.0
+900.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1000.0 1600.0 2300.0 2400.0 3300.0 3400.0
+1400.0 1900.0 2200.0 2600.0 3300.0 3400.0
+1500.0 1900.0 2300.0 2600.0 3300.0 3400.0
+1300.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1100.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1100.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1900.0 2400.0 2700.0 3200.0 3300.0
+1300.0 2000.0 2200.0 2400.0 3200.0 3300.0
+1800.0 2100.0 2400.0 2800.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1700.0 2000.0 2300.0 2700.0 3200.0 3400.0
+1200.0 1600.0 2500.0 2600.0 3200.0 3400.0
+1100.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1500.0 1600.0 2400.0 2700.0 2900.0 3200.0
+1500.0 1800.0 2500.0 2700.0 3100.0 3400.0
+1600.0 1900.0 2600.0 2800.0 3100.0 3300.0
+1700.0 1800.0 2600.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2500.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2500.0 2600.0 3000.0 3300.0
+1600.0 1700.0 2500.0 2600.0 3000.0 3300.0
+1700.0 2000.0 2400.0 2700.0 3100.0 3400.0
+1700.0 1800.0 2400.0 2600.0 2900.0 3200.0
+1800.0 1900.0 2500.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2200.0 2500.0 2700.0 3200.0
+1700.0 1800.0 2300.0 2500.0 2800.0 3200.0
+1500.0 1600.0 2000.0 2400.0 2600.0 2900.0
+1200.0 1300.0 2100.0 2400.0 2600.0 3200.0
+1700.0 2200.0 2500.0 2900.0 3200.0 3400.0
+1700.0 2200.0 2600.0 2900.0 3400.0 3500.0
+1700.0 2100.0 2700.0 2900.0 3400.0 3500.0
+1500.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1100.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2600.0 2700.0 3200.0 3400.0
+1400.0 1900.0 2600.0 2800.0 3200.0 3300.0
+1600.0 2000.0 2500.0 2900.0 3300.0 3400.0
+1500.0 1700.0 2500.0 2700.0 3100.0 3300.0
+1800.0 2000.0 2500.0 2700.0 2900.0 3300.0
+1900.0 2000.0 2600.0 2700.0 2900.0 3300.0
+1900.0 2100.0 2400.0 2700.0 2900.0 3200.0
+1900.0 2000.0 2500.0 2700.0 3000.0 3300.0
+1900.0 2000.0 2400.0 2700.0 3000.0 3300.0
+1700.0 1900.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3200.0 3500.0
+1900.0 2100.0 2600.0 2900.0 3200.0 3400.0
+2100.0 2300.0 2700.0 2900.0 3200.0 3300.0
+1600.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2400.0 2900.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2800.0 3200.0
+1900.0 2200.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2300.0 2600.0 2700.0 3100.0 3200.0
+1800.0 2400.0 2600.0 2900.0 3200.0 3300.0
+1800.0 2300.0 2500.0 2900.0 3200.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2400.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2300.0 2800.0 3200.0
+1400.0 1500.0 2100.0 2200.0 2800.0 3200.0
+1400.0 1500.0 2100.0 2300.0 2800.0 3200.0
+1400.0 1500.0 2200.0 2400.0 2700.0 3100.0
+1700.0 1900.0 2400.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2700.0 2900.0 3300.0
+2000.0 2100.0 2400.0 2700.0 3000.0 3300.0
+1400.0 1600.0 2500.0 2700.0 3100.0 3400.0
+1000.0 1600.0 2300.0 2400.0 3100.0 3200.0
+1100.0 1700.0 2400.0 2500.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3100.0 3200.0
+2000.0 2100.0 2400.0 2500.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1400.0 1600.0 2300.0 2400.0 3100.0 3300.0
+1300.0 1500.0 2300.0 2500.0 3000.0 3300.0
+1300.0 1500.0 2300.0 2500.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2500.0 3000.0 3200.0
+1900.0 2400.0 2600.0 3000.0 3200.0 3300.0
+1400.0 1500.0 2400.0 2600.0 2900.0 3300.0
+1400.0 1500.0 2200.0 2600.0 2800.0 3300.0
+1400.0 1500.0 2200.0 2500.0 2800.0 3200.0
+1400.0 1500.0 2300.0 2500.0 3000.0 3300.0
+1600.0 2000.0 2400.0 2700.0 3200.0 3400.0
+1700.0 2200.0 2600.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2300.0 3000.0 3300.0
+1600.0 1700.0 2200.0 2500.0 3200.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2400.0 3000.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3000.0 3200.0
+1700.0 1800.0 2200.0 2300.0 3100.0 3300.0
+1700.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2400.0 2900.0 3200.0
+1500.0 1800.0 2300.0 2700.0 3000.0 3300.0
+1500.0 1800.0 2200.0 2600.0 3000.0 3300.0
+1700.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2600.0 2800.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2800.0 3100.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3000.0 3300.0
+1200.0 1500.0 2500.0 2700.0 3100.0 3200.0
+1100.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1200.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1500.0 1700.0 2100.0 2200.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2200.0 3300.0 3400.0
+1500.0 1600.0 1800.0 2000.0 3300.0 3400.0
+1400.0 1600.0 1800.0 1900.0 3300.0 3400.0
+1400.0 1600.0 2400.0 2600.0 3000.0 3400.0
+1400.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1500.0 1700.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2500.0 2700.0 3000.0 3300.0
+1400.0 1500.0 2400.0 2600.0 3000.0 3300.0
+1200.0 1400.0 2300.0 2400.0 3000.0 3200.0
+1200.0 1600.0 2300.0 2400.0 3100.0 3200.0
+1400.0 2000.0 2400.0 2700.0 3100.0 3300.0
+1600.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1200.0 1400.0 2300.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2600.0 3000.0 3100.0
+1800.0 1900.0 2500.0 2600.0 2900.0 3100.0
+1600.0 2000.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2400.0 2500.0 2900.0 3300.0
+1700.0 1800.0 2300.0 2500.0 2900.0 3200.0
+1700.0 1800.0 2400.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1800.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2100.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2100.0 2300.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2700.0 3200.0 3400.0
+1700.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2400.0 2900.0 3300.0
+1800.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1800.0 2000.0 2200.0 2500.0 2900.0 3200.0
+1900.0 2200.0 2400.0 2600.0 2900.0 3200.0
+1700.0 2100.0 2600.0 2800.0 3100.0 3300.0
+1800.0 2300.0 2700.0 2900.0 3200.0 3300.0
+2000.0 2300.0 2800.0 2900.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2800.0 3200.0 3300.0
+1800.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1800.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1600.0 1800.0 2000.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2400.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2300.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2300.0 2500.0 2800.0 3000.0
+1500.0 1600.0 2300.0 2500.0 2800.0 3200.0
+1400.0 1500.0 2300.0 2600.0 3000.0 3200.0
+1200.0 1600.0 2400.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2500.0 2900.0 3200.0
+1500.0 1900.0 2300.0 2600.0 2900.0 3200.0
+1400.0 1800.0 2400.0 2700.0 3200.0 3400.0
+1500.0 1900.0 2400.0 2700.0 3200.0 3400.0
+1700.0 2100.0 2400.0 2800.0 3000.0 3300.0
+1700.0 2000.0 2500.0 2700.0 3100.0 3400.0
+1800.0 1900.0 2400.0 2800.0 3200.0 3300.0
+1800.0 1900.0 2300.0 2900.0 3200.0 3300.0
+1800.0 1900.0 2500.0 2800.0 3200.0 3300.0
+1700.0 1800.0 2400.0 2800.0 3200.0 3300.0
+1700.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2600.0 3000.0 3300.0
+1600.0 1700.0 2200.0 2500.0 2900.0 3300.0
+1500.0 1600.0 2300.0 2500.0 3000.0 3300.0
+1500.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1500.0 2000.0 2400.0 2800.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2400.0 2700.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2500.0 3200.0 3400.0
+1100.0 1700.0 2300.0 2400.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2200.0 3300.0 3400.0
+1900.0 2300.0 2600.0 2800.0 3200.0 3400.0
+1900.0 2400.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2300.0 2700.0 2900.0 3400.0 3500.0
+1900.0 2300.0 2700.0 2900.0 3400.0 3500.0
+1900.0 2100.0 2800.0 2900.0 3300.0 3400.0
+1700.0 1800.0 2700.0 2800.0 3100.0 3300.0
+1500.0 1700.0 2700.0 2800.0 3200.0 3300.0
+1500.0 1600.0 2600.0 2700.0 3000.0 3300.0
+1400.0 1600.0 2600.0 2800.0 3000.0 3200.0
+1200.0 1400.0 2600.0 2700.0 3000.0 3200.0
+1000.0 1500.0 2600.0 2800.0 3200.0 3400.0
+1100.0 1300.0 2500.0 2800.0 3000.0 3200.0
+1500.0 1600.0 2500.0 2600.0 3000.0 3300.0
+1400.0 1500.0 2300.0 2600.0 2800.0 3200.0
+1400.0 1600.0 2200.0 2600.0 2800.0 3100.0
+1500.0 1600.0 2300.0 2700.0 2900.0 3200.0
+1400.0 1500.0 2500.0 2600.0 3100.0 3400.0
+1400.0 1500.0 2400.0 2600.0 2800.0 3300.0
+1400.0 1600.0 2400.0 2600.0 2800.0 3200.0
+1300.0 1600.0 2300.0 2600.0 2900.0 3300.0
+1700.0 2200.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2300.0 2600.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1800.0 2300.0 2500.0 2600.0 3200.0 3300.0
+1900.0 2400.0 2500.0 2800.0 3300.0 3400.0
+1800.0 2000.0 2600.0 2800.0 3300.0 3400.0
+1600.0 1900.0 2400.0 2800.0 3200.0 3300.0
+1700.0 1800.0 2600.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2600.0 2800.0 3200.0 3300.0
+2000.0 2100.0 2700.0 2800.0 3200.0 3400.0
+2000.0 2100.0 2600.0 2800.0 3300.0 3400.0
+1600.0 1700.0 2300.0 2600.0 2900.0 3300.0
+1400.0 1600.0 2400.0 2500.0 2800.0 3200.0
+1800.0 1900.0 2500.0 2700.0 3000.0 3400.0
+1900.0 2000.0 2600.0 2700.0 3000.0 3300.0
+1700.0 2000.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1600.0 2300.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2400.0 2600.0 2900.0 3300.0
+1400.0 1500.0 2300.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2500.0 2600.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2600.0 3000.0 3200.0
+1800.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1600.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1500.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2400.0 3000.0 3200.0
+2000.0 2200.0 2400.0 2500.0 3200.0 3300.0
+2200.0 2300.0 2600.0 2700.0 3200.0 3300.0
+2100.0 2200.0 2400.0 2700.0 3000.0 3200.0
+2100.0 2200.0 2500.0 2700.0 3000.0 3200.0
+2200.0 2300.0 2600.0 2800.0 3000.0 3300.0
+1900.0 2200.0 2600.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2500.0 2700.0 2800.0 3200.0
+1700.0 1800.0 2600.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2500.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2700.0 3300.0 3400.0
+1800.0 2000.0 2400.0 2600.0 3100.0 3200.0
+1700.0 2200.0 2300.0 2500.0 3200.0 3300.0
+1700.0 2200.0 2300.0 2600.0 3100.0 3200.0
+1600.0 1700.0 2400.0 2600.0 3300.0 3400.0
+1600.0 1700.0 2400.0 2500.0 3300.0 3400.0
+1900.0 2100.0 2500.0 2800.0 3000.0 3100.0
+1800.0 2100.0 2500.0 2800.0 3000.0 3100.0
+1800.0 2100.0 2600.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2500.0 2800.0 3100.0 3200.0
+1900.0 2100.0 2500.0 2600.0 3000.0 3200.0
+1800.0 1900.0 2600.0 2800.0 3200.0 3400.0
+1500.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1100.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1100.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1300.0 1500.0 2200.0 2400.0 2900.0 3300.0
+1600.0 1700.0 2300.0 2500.0 2900.0 3300.0
+1600.0 1700.0 2400.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3100.0 3200.0
+2100.0 2200.0 2400.0 2600.0 3100.0 3400.0
+2100.0 2200.0 2500.0 2600.0 3000.0 3400.0
+1900.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2300.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2300.0 2800.0 3100.0
+2200.0 2300.0 2600.0 2800.0 3100.0 3300.0
+2200.0 2300.0 2700.0 2800.0 3100.0 3400.0
+2000.0 2100.0 2600.0 2800.0 3100.0 3400.0
+1700.0 1800.0 2400.0 2700.0 2900.0 3200.0
+1600.0 1800.0 2400.0 2700.0 3100.0 3200.0
+1600.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1800.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2700.0 2800.0 3000.0
+1800.0 2000.0 2600.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2400.0 2600.0 2900.0 3300.0
+1700.0 1800.0 2300.0 2400.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2500.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2600.0 3100.0 3200.0
+1500.0 1700.0 2200.0 2500.0 2900.0 3300.0
+1500.0 1600.0 2300.0 2400.0 2800.0 3300.0
+1400.0 1600.0 2300.0 2400.0 3000.0 3300.0
+1500.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1300.0 1500.0 2600.0 2700.0 3100.0 3300.0
+1200.0 1400.0 1700.0 1900.0 3100.0 3300.0
+1200.0 1700.0 1900.0 2300.0 3200.0 3300.0
+1200.0 1900.0 2000.0 2300.0 3200.0 3300.0
+1200.0 2000.0 2100.0 2500.0 3300.0 3400.0
+1200.0 2000.0 2200.0 2600.0 3300.0 3400.0
+1200.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1000.0 1900.0 2300.0 2500.0 3200.0 3300.0
+1200.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2500.0 3200.0 3300.0
+1500.0 1600.0 2500.0 2700.0 2900.0 3200.0
+1600.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1700.0 1800.0 2400.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2500.0 2800.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2500.0 2900.0 3100.0
+1500.0 1600.0 2400.0 2500.0 2900.0 3200.0
+1300.0 1500.0 2200.0 2500.0 2800.0 3100.0
+1300.0 1400.0 2000.0 2400.0 2600.0 2900.0
+1400.0 1500.0 2100.0 2500.0 2700.0 3100.0
+1500.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1700.0 2100.0 2400.0 2600.0 2900.0 3100.0
+1400.0 1500.0 2300.0 2600.0 3000.0 3300.0
+1500.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1400.0 1600.0 2000.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2000.0 2100.0 3100.0 3300.0
+1600.0 1900.0 2200.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2400.0 2800.0 3200.0
+1500.0 1600.0 2100.0 2500.0 3000.0 3300.0
+1500.0 1600.0 2000.0 2500.0 2900.0 3300.0
+1500.0 1600.0 2100.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2200.0 2700.0 2800.0 3100.0
+1300.0 1400.0 2200.0 2600.0 3000.0 3200.0
+1400.0 1900.0 2400.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2500.0 2800.0 3200.0
+1700.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2300.0 3000.0 3300.0
+1600.0 1700.0 2000.0 2400.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2600.0 2900.0 3200.0
+1500.0 2000.0 2300.0 2600.0 3100.0 3400.0
+1400.0 1900.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2600.0 2700.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2600.0 2800.0 3200.0
+1700.0 1800.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1600.0 2200.0 2300.0 3100.0 3300.0
+1400.0 1500.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2400.0 3000.0 3100.0
+1700.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1900.0 2300.0 2600.0 2800.0 3100.0 3300.0
+1900.0 2400.0 2600.0 2900.0 3200.0 3300.0
+1900.0 2300.0 2600.0 2800.0 3300.0 3400.0
+1800.0 2400.0 2600.0 2800.0 3300.0 3400.0
+1600.0 1800.0 2600.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2600.0 2700.0 2900.0 3200.0
+1500.0 1600.0 2500.0 2700.0 3000.0 3300.0
+1300.0 1400.0 2400.0 2700.0 2900.0 3300.0
+1300.0 1400.0 2300.0 2700.0 2800.0 3100.0
+1300.0 1400.0 2500.0 2800.0 3000.0 3300.0
+1500.0 1700.0 2400.0 2500.0 2800.0 3300.0
+1900.0 2000.0 2500.0 2600.0 3000.0 3200.0
+1800.0 2000.0 2400.0 2500.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2300.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2800.0 3200.0
+1600.0 1700.0 2200.0 2400.0 2800.0 3200.0
+1500.0 1600.0 2200.0 2400.0 2700.0 3300.0
+1400.0 1500.0 2200.0 2400.0 2900.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2700.0 3000.0
+1600.0 1700.0 2200.0 2500.0 2700.0 3000.0
+1700.0 1900.0 2200.0 2500.0 2800.0 3100.0
+1900.0 2000.0 2300.0 2500.0 2900.0 3100.0
+1900.0 2100.0 2300.0 2500.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2500.0 3100.0 3300.0
+2000.0 2200.0 2600.0 2800.0 3000.0 3200.0
+1900.0 2200.0 2500.0 2700.0 2900.0 3200.0
+2100.0 2300.0 2600.0 2800.0 3100.0 3300.0
+2100.0 2300.0 2600.0 2700.0 3000.0 3200.0
+2100.0 2200.0 2500.0 2600.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2400.0 2900.0 3200.0
+1400.0 1500.0 2100.0 2400.0 2800.0 3100.0
+1300.0 1600.0 2100.0 2400.0 3100.0 3200.0
+1300.0 1400.0 2300.0 2600.0 2800.0 3200.0
+1400.0 1500.0 2200.0 2500.0 2700.0 3200.0
+1400.0 1500.0 2300.0 2500.0 2700.0 3200.0
+1500.0 1600.0 2400.0 2500.0 2800.0 3200.0
+1600.0 1700.0 2400.0 2500.0 2900.0 3200.0
+1700.0 1800.0 2400.0 2500.0 2900.0 3100.0
+1800.0 1900.0 2400.0 2600.0 3000.0 3200.0
+2100.0 2200.0 2700.0 2900.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2900.0 3100.0 3300.0
+1700.0 1800.0 2500.0 2800.0 2900.0 3300.0
+1200.0 1600.0 2100.0 2400.0 3000.0 3200.0
+1600.0 1700.0 2100.0 2600.0 2900.0 3000.0
+1600.0 1700.0 2200.0 2700.0 2900.0 3000.0
+1600.0 1800.0 2200.0 2500.0 2900.0 3000.0
+1700.0 1800.0 2300.0 2500.0 2900.0 3100.0
+1700.0 1900.0 2300.0 2600.0 2900.0 3100.0
+1500.0 1700.0 2000.0 2600.0 2900.0 3100.0
+1400.0 1600.0 1800.0 2600.0 3000.0 3100.0
+1300.0 1500.0 1700.0 2700.0 3100.0 3200.0
+1300.0 1700.0 2400.0 2700.0 3100.0 3300.0
+1200.0 1600.0 2400.0 2600.0 2900.0 3200.0
+1300.0 1400.0 2000.0 2700.0 2800.0 3000.0
+1400.0 1500.0 2000.0 2600.0 2800.0 3000.0
+1500.0 1700.0 2100.0 2600.0 2800.0 3000.0
+1600.0 1800.0 2200.0 2700.0 2800.0 3000.0
+1600.0 1800.0 2100.0 2700.0 2900.0 3100.0
+1500.0 1900.0 2300.0 2700.0 3000.0 3100.0
+1500.0 1900.0 2300.0 2700.0 3000.0 3200.0
+1500.0 2000.0 2300.0 2700.0 3000.0 3200.0
+1800.0 2100.0 2300.0 2700.0 3100.0 3300.0
+1500.0 2000.0 2300.0 2600.0 3000.0 3100.0
+1500.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1600.0 2100.0 2200.0 2700.0 3100.0 3200.0
+1500.0 2100.0 2200.0 2600.0 3100.0 3200.0
+1400.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1700.0 2100.0 2300.0 2700.0 2900.0 3100.0
+1500.0 1800.0 2300.0 2700.0 3000.0 3100.0
+1500.0 1700.0 2300.0 2700.0 3000.0 3100.0
+1500.0 1600.0 2100.0 2700.0 3000.0 3100.0
+1400.0 1500.0 1900.0 2600.0 3100.0 3200.0
+1200.0 1300.0 1900.0 2600.0 2900.0 3100.0
+1100.0 1200.0 1800.0 2700.0 3000.0 3100.0
+1200.0 1300.0 1800.0 2700.0 3000.0 3100.0
+1200.0 1400.0 1900.0 2700.0 3000.0 3100.0
+1300.0 1500.0 1800.0 2600.0 3000.0 3100.0
+1200.0 1400.0 2300.0 2700.0 2900.0 3100.0
+1300.0 1400.0 2200.0 2700.0 2800.0 3100.0
+1300.0 1500.0 2000.0 2600.0 2900.0 3100.0
+1300.0 1500.0 2100.0 2700.0 2900.0 3100.0
+1400.0 1800.0 2100.0 2600.0 2800.0 3000.0
+1400.0 1800.0 2100.0 2500.0 2900.0 3100.0
+1700.0 2000.0 2500.0 2800.0 3000.0 3200.0
+1900.0 2000.0 2700.0 2800.0 3100.0 3400.0
+1900.0 2100.0 2600.0 2800.0 3100.0 3300.0
+1600.0 2100.0 2400.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2300.0 2500.0 2800.0 3200.0
+1500.0 1700.0 2100.0 2300.0 3000.0 3200.0
+1400.0 1900.0 2200.0 2500.0 2900.0 3200.0
+1400.0 1900.0 2300.0 2500.0 2700.0 3100.0
+1300.0 1500.0 2100.0 2700.0 2800.0 3100.0
+1300.0 1500.0 2000.0 2600.0 2800.0 3100.0
+1300.0 1400.0 2100.0 2600.0 2800.0 3000.0
+1300.0 1400.0 2000.0 2600.0 2800.0 3000.0
+1200.0 1300.0 2000.0 2700.0 2800.0 3000.0
+1200.0 1400.0 2300.0 2600.0 2900.0 3200.0
+1300.0 1600.0 2300.0 2700.0 2900.0 3200.0
+1600.0 1900.0 2300.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2300.0 2800.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2600.0 2900.0 3000.0
+1700.0 1900.0 2400.0 2600.0 2800.0 3100.0
+1700.0 2100.0 2400.0 2500.0 2800.0 3100.0
+1700.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1900.0 2200.0 2400.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2400.0 2700.0 3000.0 3100.0
+1500.0 1900.0 2300.0 2600.0 3000.0 3100.0
+1500.0 1600.0 2100.0 2600.0 2900.0 3200.0
+1400.0 1600.0 1800.0 2300.0 2800.0 2900.0
+1400.0 1600.0 1700.0 2500.0 3200.0 3300.0
+1400.0 1600.0 1800.0 2400.0 3200.0 3300.0
+1400.0 1700.0 1900.0 2200.0 3100.0 3200.0
+1300.0 1700.0 1900.0 2300.0 3100.0 3200.0
+1100.0 1600.0 2000.0 2300.0 3000.0 3100.0
+1500.0 1900.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2800.0 3000.0 3100.0
+1800.0 1900.0 2300.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2300.0 2600.0 2800.0 3100.0
+1700.0 1900.0 2100.0 2500.0 2700.0 3000.0
+1700.0 1900.0 2100.0 2600.0 2800.0 3000.0
+1700.0 1900.0 2100.0 2700.0 2900.0 3100.0
+1700.0 1900.0 2500.0 2800.0 3000.0 3300.0
+1400.0 1600.0 1900.0 2600.0 2900.0 3000.0
+1500.0 1600.0 2000.0 2200.0 3200.0 3300.0
+1300.0 1500.0 1700.0 2600.0 3100.0 3200.0
+1300.0 1500.0 1700.0 2700.0 3000.0 3100.0
+1500.0 1700.0 2300.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2500.0 2800.0 3100.0 3200.0
+1200.0 1300.0 1800.0 2600.0 3000.0 3100.0
+1300.0 1600.0 2000.0 2400.0 3000.0 3200.0
+1500.0 1600.0 2000.0 2600.0 3200.0 3300.0
+1600.0 1700.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1900.0 2100.0 2700.0 3200.0 3300.0
+1100.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2700.0 3000.0 3100.0
+1500.0 1800.0 2200.0 2800.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2800.0 3100.0 3200.0
+1600.0 1900.0 2100.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1700.0 2100.0 2400.0 2700.0 3000.0 3300.0
+1900.0 2400.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2200.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2200.0 2600.0 2900.0 3200.0 3300.0
+1800.0 2400.0 2600.0 2800.0 3100.0 3200.0
+1800.0 2400.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2300.0 2400.0 2700.0 3100.0 3200.0
+1600.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1500.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1600.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1500.0 2200.0 2500.0 2700.0 3100.0 3200.0
+1500.0 2200.0 2400.0 2600.0 3000.0 3100.0
+1600.0 2200.0 2400.0 2700.0 3000.0 3100.0
+1500.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1400.0 1800.0 2100.0 2400.0 3200.0 3300.0
+1200.0 1300.0 2100.0 2800.0 3000.0 3200.0
+1300.0 1400.0 2100.0 2700.0 3000.0 3200.0
+1500.0 1700.0 2200.0 2800.0 3000.0 3100.0
+1800.0 2200.0 2400.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2400.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2500.0 2800.0 3000.0 3200.0
+1600.0 1800.0 2500.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2700.0 2900.0 3100.0
+1500.0 1700.0 2100.0 2700.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2600.0 2900.0 3000.0
+1500.0 1600.0 1900.0 2600.0 3000.0 3100.0
+1500.0 1700.0 2000.0 2500.0 3000.0 3100.0
+1500.0 1700.0 2000.0 2500.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2600.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2500.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2600.0 2900.0 3200.0 3300.0
+1800.0 2000.0 2500.0 2900.0 3100.0 3300.0
+1400.0 1600.0 1900.0 2600.0 3000.0 3100.0
+1400.0 1600.0 1900.0 2700.0 3000.0 3100.0
+1500.0 1700.0 2300.0 2800.0 3000.0 3200.0
+1700.0 2000.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2100.0 2600.0 3000.0 3300.0 3400.0
+1800.0 2100.0 2600.0 3000.0 3200.0 3400.0
+1600.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2600.0 3100.0 3200.0
+1100.0 1400.0 2100.0 2800.0 3100.0 3200.0
+1200.0 1700.0 2200.0 2400.0 3000.0 3200.0
+1500.0 2100.0 2500.0 2800.0 3200.0 3400.0
+1500.0 2000.0 2200.0 2400.0 3100.0 3300.0
+1400.0 1900.0 2200.0 2300.0 3000.0 3200.0
+1500.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1200.0 1600.0 2300.0 2500.0 3100.0 3200.0
+1300.0 1900.0 2200.0 2700.0 3200.0 3300.0
+1100.0 1300.0 2000.0 2700.0 3100.0 3200.0
+1400.0 1500.0 2400.0 2700.0 2900.0 3300.0
+1500.0 1800.0 2500.0 2700.0 3000.0 3100.0
+1500.0 1700.0 2500.0 2800.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2400.0 2700.0 3200.0
+1300.0 1400.0 2000.0 2400.0 2600.0 3000.0
+1200.0 1300.0 2100.0 2500.0 2700.0 3100.0
+1800.0 2100.0 2400.0 2600.0 2800.0 3100.0
+1800.0 2100.0 2400.0 2600.0 2800.0 3000.0
+1900.0 2200.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2300.0 2500.0 2800.0 3000.0 3100.0
+1900.0 2400.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2400.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2400.0 2600.0 2700.0 3100.0 3200.0
+1800.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1900.0 2400.0 2600.0 2800.0 3100.0 3300.0
+1900.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1700.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1700.0 2200.0 2600.0 2800.0 3200.0 3300.0
+2000.0 2200.0 2800.0 3000.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2700.0 3100.0 3300.0
+1900.0 2100.0 2400.0 2800.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2300.0 2700.0 3000.0 3200.0
+1600.0 2000.0 2200.0 2700.0 3000.0 3100.0
+1600.0 2000.0 2200.0 2500.0 3000.0 3100.0
+1700.0 2000.0 2200.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2200.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2800.0 3000.0 3100.0
+1600.0 1900.0 2200.0 2700.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2700.0 3000.0 3100.0
+1600.0 2000.0 2400.0 2800.0 3100.0 3200.0
+1700.0 2000.0 2200.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2100.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2700.0 3000.0 3100.0 3300.0
+1800.0 2100.0 2700.0 3000.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2900.0 3100.0 3200.0
+1900.0 2100.0 2500.0 3000.0 3100.0 3200.0
+1700.0 2000.0 2500.0 2900.0 3100.0 3200.0
+1800.0 2100.0 2600.0 2900.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2900.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2900.0 3100.0 3200.0
+1600.0 2000.0 2300.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2100.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1800.0 2100.0 2300.0 2700.0 3200.0 3300.0
+1700.0 2100.0 2300.0 2700.0 3000.0 3200.0
+1600.0 2200.0 2400.0 2800.0 3200.0 3300.0
+1600.0 1700.0 2000.0 2300.0 2700.0 3100.0
+1800.0 2000.0 2200.0 2400.0 2700.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2700.0 3000.0
+1500.0 1600.0 2200.0 2500.0 2800.0 3300.0
+1500.0 1600.0 2100.0 2500.0 2700.0 3000.0
+1500.0 2000.0 2300.0 2500.0 2700.0 2900.0
+1700.0 2100.0 2300.0 2600.0 2800.0 3000.0
+1700.0 2200.0 2400.0 2700.0 3000.0 3100.0
+1500.0 2200.0 2400.0 2600.0 3000.0 3200.0
+1500.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2600.0 3000.0 3200.0
+1500.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1600.0 2000.0 2300.0 2700.0 3000.0 3100.0
+1600.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2000.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2000.0 2500.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2300.0 3000.0 3100.0
+1400.0 1800.0 2100.0 2400.0 2900.0 3100.0
+1600.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2800.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2100.0 2600.0 2900.0 3100.0
+1600.0 1900.0 2100.0 2500.0 2900.0 3100.0
+1600.0 1900.0 2100.0 2600.0 2900.0 3100.0
+1600.0 1900.0 2100.0 2600.0 2800.0 3100.0
+1600.0 1800.0 2200.0 2600.0 2800.0 3000.0
+1600.0 1900.0 2200.0 2700.0 2900.0 3100.0
+1600.0 1900.0 2200.0 2600.0 2900.0 3000.0
+1900.0 2000.0 2200.0 2800.0 3000.0 3100.0
+1400.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1400.0 1900.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2300.0 3100.0 3300.0
+1400.0 1700.0 2100.0 2300.0 3200.0 3300.0
+1400.0 1600.0 2100.0 2300.0 3200.0 3300.0
+1300.0 1600.0 2100.0 2300.0 3200.0 3300.0
+1300.0 1600.0 2100.0 2300.0 3100.0 3300.0
+1200.0 1400.0 2000.0 2200.0 3100.0 3300.0
+1200.0 1400.0 2000.0 2600.0 3100.0 3200.0
+1200.0 1400.0 2000.0 2800.0 3100.0 3200.0
+1200.0 1400.0 2100.0 2800.0 3100.0 3200.0
+1400.0 1500.0 2200.0 2700.0 3000.0 3100.0
+1700.0 1900.0 2200.0 2500.0 2900.0 3200.0
+1400.0 1600.0 2200.0 2700.0 2900.0 3100.0
+1500.0 1600.0 1900.0 2700.0 2900.0 3000.0
+1500.0 1600.0 1900.0 2700.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2700.0 3000.0 3100.0
+1400.0 1600.0 2000.0 2600.0 2900.0 3100.0
+1300.0 1500.0 2400.0 2700.0 2900.0 3200.0
+1600.0 1800.0 2300.0 2700.0 3100.0 3400.0
+1600.0 2100.0 2400.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2700.0 3000.0 3100.0
+1600.0 1900.0 2100.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2100.0 2700.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2800.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2900.0 3100.0 3200.0
+1500.0 1700.0 1800.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2600.0 2900.0 3100.0 3300.0
+1700.0 2300.0 2500.0 2700.0 3100.0 3200.0
+2000.0 2400.0 2500.0 2700.0 3100.0 3200.0
+1900.0 2500.0 2600.0 2800.0 3100.0 3200.0
+1800.0 2400.0 2700.0 2900.0 3200.0 3300.0
+1900.0 2400.0 2600.0 2800.0 3100.0 3200.0
+1700.0 2200.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2200.0 2300.0 2600.0 3100.0 3200.0
+1800.0 2200.0 2300.0 2700.0 3100.0 3200.0
+1800.0 2200.0 2400.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2500.0 2900.0 3300.0 3400.0
+1900.0 2100.0 2400.0 2900.0 3100.0 3200.0
+1900.0 2200.0 2400.0 2800.0 3000.0 3100.0
+1800.0 2200.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2300.0 2400.0 2800.0 3100.0 3200.0
+1800.0 2100.0 2300.0 2700.0 2900.0 3100.0
+1700.0 2000.0 2500.0 2800.0 3000.0 3300.0
+1100.0 1300.0 2300.0 2600.0 2800.0 3200.0
+1400.0 1600.0 2200.0 2500.0 2800.0 3100.0
+1400.0 1600.0 2000.0 2500.0 2700.0 3000.0
+1400.0 1500.0 1900.0 2500.0 2800.0 2900.0
+1400.0 1500.0 1900.0 2600.0 2900.0 3000.0
+1400.0 1600.0 1900.0 2700.0 2900.0 3000.0
+1500.0 1600.0 2000.0 2700.0 2900.0 3100.0
+1500.0 1600.0 2000.0 2700.0 2900.0 3000.0
+1500.0 1600.0 2100.0 2800.0 3000.0 3100.0
+1600.0 1700.0 2100.0 2800.0 3000.0 3100.0
+1900.0 2200.0 2600.0 2900.0 3300.0 3400.0
+2000.0 2200.0 2600.0 3000.0 3300.0 3400.0
+2000.0 2200.0 2600.0 3000.0 3200.0 3300.0
+1800.0 2100.0 2700.0 3000.0 3400.0 3500.0
+1300.0 1600.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1700.0 2400.0 2500.0 2800.0 2900.0
+1400.0 1700.0 2400.0 2500.0 2800.0 3000.0
+1500.0 2000.0 2400.0 2500.0 3100.0 3200.0
+1400.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1400.0 1500.0 2400.0 2500.0 3100.0 3300.0
+1900.0 2200.0 2600.0 2900.0 3200.0 3400.0
+1600.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1800.0 2200.0 2800.0 3100.0 3400.0 3500.0
+1900.0 2200.0 2700.0 3000.0 3400.0 3500.0
+1900.0 2400.0 2800.0 3000.0 3200.0 3400.0
+1300.0 1900.0 2100.0 2400.0 2800.0 3000.0
+1800.0 2100.0 2300.0 2500.0 2800.0 3100.0
+1800.0 2100.0 2400.0 2600.0 2900.0 3100.0
+1600.0 1800.0 2500.0 2600.0 2900.0 3000.0
+1700.0 1900.0 2200.0 2400.0 2900.0 3200.0
+1600.0 1800.0 2000.0 2300.0 3000.0 3200.0
+1600.0 1700.0 1900.0 2300.0 3100.0 3300.0
+1400.0 1600.0 1800.0 2200.0 3200.0 3300.0
+1400.0 1600.0 1800.0 2300.0 3100.0 3200.0
+1400.0 1600.0 1800.0 2300.0 3000.0 3200.0
+1100.0 2200.0 2500.0 2600.0 2700.0 2900.0
+1200.0 1900.0 2500.0 2600.0 2800.0 3000.0
+1200.0 1800.0 2500.0 2600.0 2800.0 2900.0
+1300.0 1900.0 2500.0 2600.0 2800.0 3100.0
+1500.0 2100.0 2400.0 2500.0 2900.0 3200.0
+1400.0 2100.0 2400.0 2500.0 3000.0 3200.0
+1400.0 2000.0 2400.0 2500.0 3000.0 3300.0
+1300.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3000.0 3300.0
+1900.0 2000.0 2500.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2500.0 2700.0 2900.0 3200.0
+2000.0 2100.0 2600.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2600.0 2700.0 3000.0 3300.0
+1900.0 2100.0 2500.0 2600.0 2900.0 3200.0
+1800.0 1900.0 2500.0 2700.0 3100.0 3400.0
+1600.0 2100.0 2400.0 2600.0 3100.0 3300.0
+1700.0 1800.0 2500.0 2600.0 2900.0 3300.0
+1500.0 1900.0 2400.0 2500.0 2800.0 3200.0
+1500.0 2000.0 2400.0 2500.0 2700.0 3000.0
+2100.0 2400.0 2700.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2600.0 2800.0 3100.0 3400.0
+1800.0 2100.0 2600.0 2700.0 3100.0 3400.0
+1800.0 2000.0 2300.0 2500.0 2800.0 3200.0
+1700.0 2100.0 2200.0 2600.0 2900.0 3100.0
+1400.0 2100.0 2200.0 2600.0 2900.0 3100.0
+1500.0 1700.0 2100.0 2400.0 2800.0 3000.0
+1500.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2400.0 2500.0 3000.0 3200.0
+1500.0 1700.0 2400.0 2500.0 3000.0 3300.0
+1700.0 2100.0 2500.0 2600.0 3200.0 3400.0
+1800.0 2300.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2300.0 2600.0 2900.0 3200.0 3300.0
+1900.0 2300.0 2600.0 3000.0 3300.0 3400.0
+1800.0 1900.0 2300.0 2400.0 2700.0 3100.0
+1600.0 1800.0 2200.0 2500.0 2900.0 3200.0
+1700.0 1900.0 2400.0 2700.0 3100.0 3400.0
+1800.0 2200.0 2400.0 2800.0 3200.0 3400.0
+1900.0 2200.0 2800.0 3000.0 3300.0 3400.0
+2300.0 2600.0 2700.0 2900.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1700.0 1900.0 2400.0 2500.0 2900.0 3100.0
+1900.0 2100.0 2400.0 2500.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2500.0 2900.0 3200.0
+2000.0 2100.0 2500.0 2600.0 3000.0 3200.0
+2000.0 2200.0 2500.0 2600.0 3000.0 3300.0
+2000.0 2200.0 2600.0 2700.0 2900.0 3100.0
+1700.0 2000.0 2600.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2700.0 2800.0 3100.0 3200.0
+1900.0 2400.0 2700.0 2800.0 3200.0 3300.0
+2100.0 2400.0 2600.0 2800.0 3100.0 3300.0
+2200.0 2500.0 2700.0 2900.0 3200.0 3300.0
+2000.0 2400.0 2800.0 3000.0 3300.0 3400.0
+1300.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2100.0 2500.0 2900.0 3200.0
+1300.0 1500.0 2100.0 2400.0 2900.0 3200.0
+1500.0 1700.0 1800.0 2200.0 2600.0 3200.0
+1500.0 1900.0 2200.0 2400.0 2800.0 3100.0
+1300.0 1600.0 2200.0 2300.0 3200.0 3400.0
+1300.0 1700.0 2200.0 2400.0 3100.0 3300.0
+1500.0 2100.0 2300.0 2700.0 3200.0 3400.0
+2000.0 2300.0 2800.0 3000.0 3300.0 3400.0
+1800.0 2300.0 2800.0 3000.0 3400.0 3500.0
+1800.0 2300.0 2700.0 3000.0 3300.0 3500.0
+2000.0 2500.0 2800.0 3100.0 3400.0 3500.0
+2000.0 2500.0 2800.0 3100.0 3300.0 3400.0
+2000.0 2400.0 2800.0 3100.0 3300.0 3400.0
+2100.0 2500.0 2800.0 2900.0 3300.0 3400.0
+2000.0 2300.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2300.0 2700.0 2800.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2700.0 3100.0 3200.0
+1600.0 2200.0 2400.0 2600.0 2900.0 3100.0
+1500.0 2200.0 2400.0 2600.0 2900.0 3200.0
+1400.0 1900.0 2200.0 2400.0 2700.0 3000.0
+1400.0 1900.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1900.0 2400.0 2500.0 2800.0 3000.0
+1600.0 1800.0 2400.0 2600.0 2900.0 3000.0
+1600.0 1900.0 2500.0 2600.0 2900.0 3100.0
+1600.0 1900.0 2400.0 2500.0 3000.0 3100.0
+1600.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1400.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1900.0 2200.0 2500.0 3000.0 3100.0
+1400.0 1800.0 2000.0 2400.0 3000.0 3100.0
+1400.0 1700.0 1900.0 2400.0 2800.0 2900.0
+1700.0 2100.0 2400.0 2600.0 3000.0 3300.0
+1900.0 2100.0 2500.0 2600.0 3000.0 3300.0
+1900.0 2100.0 2400.0 2500.0 2800.0 3200.0
+1800.0 2000.0 2300.0 2400.0 2900.0 3300.0
+1600.0 1800.0 2000.0 2300.0 2700.0 3200.0
+1300.0 1500.0 2100.0 2500.0 3000.0 3200.0
+1400.0 2000.0 2200.0 2400.0 2900.0 3200.0
+1800.0 1900.0 2300.0 2600.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2400.0 2800.0 3100.0
+1700.0 2000.0 2400.0 2500.0 2800.0 3000.0
+1600.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1900.0 2200.0 2400.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2500.0 2800.0 3000.0
+1700.0 2000.0 2300.0 2500.0 2900.0 3100.0
+1700.0 2100.0 2300.0 2500.0 2900.0 3100.0
+1500.0 1700.0 1900.0 2500.0 2800.0 3100.0
+1600.0 1800.0 2000.0 2500.0 2700.0 3000.0
+1700.0 1800.0 2100.0 2500.0 2700.0 2900.0
+2000.0 2300.0 2700.0 2900.0 3100.0 3200.0
+2000.0 2300.0 2600.0 2900.0 3100.0 3200.0
+1600.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2500.0 2800.0 3000.0
+1400.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1500.0 2000.0 2400.0 2500.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2800.0 3300.0 3500.0
+1500.0 1600.0 2300.0 2500.0 2800.0 3100.0
+1500.0 1800.0 2300.0 2500.0 2700.0 2900.0
+1400.0 2000.0 2300.0 2400.0 2700.0 3100.0
+1400.0 2100.0 2400.0 2500.0 2800.0 3200.0
+1400.0 2100.0 2400.0 2500.0 2900.0 3200.0
+1800.0 2000.0 2300.0 2400.0 3000.0 3300.0
+1900.0 2200.0 2500.0 2600.0 2900.0 3100.0
+1800.0 2200.0 2600.0 2900.0 3100.0 3200.0
+2100.0 2500.0 2700.0 2800.0 3200.0 3300.0
+1900.0 2400.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2500.0 2600.0 2900.0 3100.0
+1800.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1900.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1900.0 2100.0 2400.0 2500.0 2900.0 3100.0
+1900.0 2200.0 2300.0 2500.0 2900.0 3200.0
+1800.0 2200.0 2400.0 2600.0 3000.0 3100.0
+1800.0 2200.0 2400.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2300.0 2800.0 3200.0 3400.0
+1600.0 2100.0 2300.0 2700.0 3200.0 3400.0
+1800.0 2200.0 2600.0 2700.0 3000.0 3200.0
+1900.0 2200.0 2600.0 3000.0 3200.0 3400.0
+2000.0 2400.0 2900.0 3000.0 3300.0 3500.0
+2100.0 2500.0 2800.0 2900.0 3400.0 3500.0
+2100.0 2600.0 2800.0 3000.0 3300.0 3400.0
+2300.0 2600.0 2800.0 3000.0 3200.0 3300.0
+2200.0 2500.0 2600.0 2800.0 3200.0 3300.0
+2200.0 2400.0 2600.0 2700.0 3200.0 3300.0
+2100.0 2300.0 2500.0 2700.0 3100.0 3300.0
+2100.0 2300.0 2500.0 2800.0 3000.0 3200.0
+1900.0 2100.0 2200.0 2500.0 3000.0 3200.0
+1700.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1900.0 2200.0 2700.0 3000.0 3200.0 3300.0
+2000.0 2300.0 2900.0 3000.0 3300.0 3400.0
+2100.0 2400.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2500.0 2800.0 2900.0 3300.0 3400.0
+2100.0 2600.0 2800.0 2900.0 3300.0 3400.0
+1800.0 2100.0 2700.0 2900.0 3200.0 3300.0
+1800.0 2200.0 2600.0 2800.0 3100.0 3300.0
+1700.0 2000.0 2400.0 2500.0 2700.0 2900.0
+1500.0 1800.0 2400.0 2600.0 2900.0 3200.0
+1500.0 2000.0 2400.0 2500.0 2800.0 3000.0
+1500.0 1900.0 2400.0 2500.0 2700.0 3000.0
+1500.0 2000.0 2400.0 2600.0 2800.0 3100.0
+1500.0 1800.0 2500.0 2600.0 3000.0 3300.0
+1500.0 2100.0 2400.0 2500.0 3000.0 3300.0
+1600.0 2100.0 2400.0 2600.0 3000.0 3300.0
+1600.0 2000.0 2400.0 2600.0 2800.0 3100.0
+1900.0 2300.0 2700.0 2900.0 3300.0 3400.0
+1800.0 2300.0 2700.0 3100.0 3300.0 3400.0
+2000.0 2100.0 2300.0 2700.0 3000.0 3300.0
+2100.0 2300.0 2600.0 2700.0 3100.0 3300.0
+2100.0 2300.0 2500.0 2700.0 3200.0 3300.0
+2100.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1600.0 2100.0 2400.0 2600.0 3100.0 3200.0
+1500.0 2100.0 2500.0 2600.0 3000.0 3100.0
+1600.0 2100.0 2300.0 2600.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2600.0 3000.0 3300.0
+1600.0 1800.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2600.0 2900.0 3100.0
+1700.0 2100.0 2500.0 2800.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2200.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2100.0 2700.0 3100.0 3200.0
+1600.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2200.0 2500.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2300.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2300.0 3200.0 3400.0
+1300.0 1600.0 2100.0 2200.0 3200.0 3300.0
+1300.0 1700.0 2200.0 2400.0 3200.0 3400.0
+1300.0 1600.0 2200.0 2300.0 3100.0 3400.0
+1400.0 1600.0 2200.0 2300.0 2900.0 3300.0
+1400.0 1600.0 2200.0 2400.0 2900.0 3300.0
+1300.0 1500.0 2200.0 2400.0 3000.0 3300.0
+1300.0 1500.0 2200.0 2400.0 3100.0 3300.0
+1200.0 1500.0 2200.0 2400.0 3100.0 3300.0
+1200.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2400.0 3200.0 3400.0
+2000.0 2100.0 2400.0 2500.0 3000.0 3400.0
+2000.0 2200.0 2500.0 2700.0 3200.0 3400.0
+2000.0 2500.0 2700.0 2900.0 3400.0 3500.0
+1700.0 2000.0 2500.0 2600.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2400.0 2800.0 3200.0
+1400.0 1600.0 2200.0 2300.0 3000.0 3400.0
+1300.0 1500.0 2200.0 2300.0 2800.0 3200.0
+1500.0 1700.0 2400.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2400.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2500.0 2900.0 3200.0
+1800.0 1900.0 2400.0 2500.0 2900.0 3100.0
+1700.0 1900.0 2400.0 2500.0 2900.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3100.0 3400.0
+1400.0 1600.0 2200.0 2400.0 2800.0 3100.0
+1400.0 1600.0 2200.0 2400.0 2800.0 3200.0
+1400.0 1600.0 2100.0 2300.0 2800.0 3200.0
+1500.0 1600.0 2100.0 2400.0 2700.0 3100.0
+1600.0 1700.0 2200.0 2400.0 2800.0 3100.0
+1600.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1500.0 2000.0 2500.0 2900.0 3300.0 3400.0
+1400.0 2000.0 2400.0 2800.0 3200.0 3400.0
+1400.0 1700.0 2300.0 2600.0 3000.0 3200.0
+1300.0 1600.0 2300.0 2400.0 3100.0 3200.0
+1300.0 1600.0 2300.0 2400.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2300.0 3000.0 3300.0
+1300.0 1700.0 2300.0 2400.0 3100.0 3300.0
+1300.0 1600.0 2300.0 2400.0 3000.0 3300.0
+1300.0 1700.0 2300.0 2400.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2300.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2300.0 3100.0 3300.0
+1300.0 1400.0 2200.0 2300.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2400.0 3100.0 3300.0
+1400.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1400.0 1600.0 2300.0 2400.0 3200.0 3400.0
+1400.0 1600.0 2300.0 2400.0 3100.0 3400.0
+1400.0 1600.0 2300.0 2400.0 3000.0 3400.0
+1400.0 1500.0 2400.0 2500.0 3000.0 3300.0
+1400.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2300.0 3200.0 3400.0
+1400.0 1600.0 2100.0 2400.0 3100.0 3400.0
+1600.0 1900.0 2200.0 2500.0 2800.0 3100.0
+1500.0 1800.0 2200.0 2300.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2400.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2400.0 2900.0 3200.0
+1800.0 1900.0 2400.0 2500.0 2800.0 3100.0
+2000.0 2100.0 2500.0 2600.0 3100.0 3300.0
+2000.0 2100.0 2400.0 2500.0 3000.0 3300.0
+1800.0 2100.0 2400.0 2600.0 3200.0 3400.0
+1600.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1700.0 2200.0 2300.0 3000.0 3300.0
+1400.0 1700.0 2100.0 2200.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1900.0 2200.0 2400.0 2500.0 2900.0 3100.0
+1400.0 1600.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1700.0 2300.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2300.0 2600.0 3200.0 3400.0
+1200.0 1600.0 2400.0 2500.0 3100.0 3200.0
+1200.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1700.0 1800.0 2100.0 2300.0 2900.0 3000.0
+1800.0 1900.0 2200.0 2300.0 2900.0 3000.0
+1900.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2300.0 2600.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1700.0 2300.0 2500.0 2900.0 3200.0 3300.0
+1900.0 2400.0 2800.0 3000.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2500.0 3000.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3100.0 3400.0
+1600.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1500.0 2100.0 2500.0 2800.0 3200.0 3300.0
+1500.0 2000.0 2500.0 2800.0 3300.0 3400.0
+1800.0 2000.0 2500.0 2900.0 3300.0 3400.0
+1500.0 2100.0 2400.0 2800.0 3300.0 3400.0
+1300.0 2000.0 2400.0 2500.0 3300.0 3400.0
+1600.0 1700.0 2200.0 2400.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2400.0 2900.0 3300.0
+1500.0 1700.0 2300.0 2400.0 2900.0 3100.0
+1400.0 1800.0 2500.0 2600.0 3000.0 3200.0
+1300.0 1600.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1500.0 2400.0 2500.0 3000.0 3400.0
+1300.0 1500.0 2500.0 2600.0 3000.0 3300.0
+1300.0 1500.0 2400.0 2500.0 2800.0 3300.0
+1400.0 1500.0 2500.0 2600.0 2900.0 3300.0
+1800.0 2200.0 2700.0 2900.0 3200.0 3300.0
+1600.0 1700.0 2400.0 2500.0 2900.0 3300.0
+1600.0 1700.0 2300.0 2500.0 2800.0 3300.0
+1700.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1600.0 1800.0 2200.0 2400.0 3100.0 3200.0
+1500.0 1800.0 2100.0 2300.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2400.0 2900.0 3200.0
+1500.0 2000.0 2200.0 2400.0 2700.0 3200.0
+1600.0 1900.0 2200.0 2400.0 2800.0 3200.0
+1700.0 1800.0 2400.0 2500.0 3300.0 3500.0
+1500.0 1800.0 2300.0 2600.0 3200.0 3400.0
+1300.0 1600.0 2200.0 2400.0 3200.0 3400.0
+1200.0 1600.0 2200.0 2400.0 3100.0 3300.0
+1100.0 1500.0 2100.0 2300.0 3100.0 3200.0
+1400.0 1700.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1600.0 2100.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2300.0 2900.0 3000.0
+1600.0 1700.0 2100.0 2400.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1700.0 1900.0 2100.0 2300.0 3200.0 3400.0
+1800.0 1900.0 2100.0 2300.0 3200.0 3400.0
+1700.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2300.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2300.0 2700.0 3100.0
+1600.0 1700.0 2100.0 2300.0 2500.0 3000.0
+1500.0 1800.0 2300.0 2500.0 2900.0 3100.0
+1500.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1500.0 2000.0 2500.0 2900.0 3200.0 3300.0
+1700.0 2400.0 2900.0 3100.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2800.0 3300.0 3400.0
+1800.0 2400.0 2600.0 2800.0 3100.0 3300.0
+1200.0 1600.0 2400.0 2500.0 3100.0 3400.0
+1300.0 1500.0 2400.0 2500.0 3100.0 3400.0
+1400.0 1500.0 2400.0 2500.0 3000.0 3200.0
+1400.0 1600.0 2400.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2500.0 2600.0 3000.0 3200.0
+1700.0 2200.0 2500.0 2800.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2500.0 3000.0 3200.0
+1400.0 2000.0 2400.0 2500.0 3200.0 3400.0
+1800.0 2100.0 2400.0 2500.0 3200.0 3400.0
+1800.0 1900.0 2200.0 2400.0 3100.0 3300.0
+1700.0 2000.0 2400.0 2600.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2400.0 3100.0 3400.0
+1600.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1200.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1700.0 2200.0 2800.0 3100.0 3400.0 3500.0
+1600.0 2000.0 2400.0 2800.0 3300.0 3400.0
+1300.0 1600.0 2100.0 2300.0 3100.0 3200.0
+1300.0 1600.0 2100.0 2200.0 3100.0 3200.0
+1300.0 1500.0 1800.0 2000.0 3000.0 3100.0
+1300.0 1500.0 1800.0 1900.0 3100.0 3200.0
+1400.0 1500.0 1700.0 1800.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2000.0 2800.0 2900.0
+1500.0 1700.0 2200.0 2400.0 2800.0 3200.0
+1500.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2200.0 3100.0 3200.0
+1300.0 1500.0 1800.0 2200.0 3100.0 3200.0
+1400.0 1800.0 2300.0 2500.0 2900.0 3200.0
+1400.0 1800.0 2300.0 2400.0 2700.0 3200.0
+1500.0 1600.0 2000.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2000.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2200.0 2500.0 2800.0 3200.0
+1700.0 1800.0 2200.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2200.0 2500.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2500.0 2900.0 3100.0
+1900.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2200.0 2500.0 3000.0 3300.0
+1300.0 1500.0 2200.0 2400.0 3000.0 3400.0
+1200.0 1400.0 2200.0 2500.0 3200.0 3400.0
+1300.0 1600.0 2000.0 2200.0 3100.0 3200.0
+1400.0 1600.0 1900.0 2000.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2900.0 3100.0
+1500.0 1600.0 2200.0 2300.0 2800.0 3100.0
+1400.0 1600.0 2200.0 2300.0 2800.0 3100.0
+1300.0 1600.0 2300.0 2400.0 2900.0 3300.0
+1700.0 2200.0 2800.0 3100.0 3300.0 3400.0
+1700.0 2200.0 2600.0 3000.0 3300.0 3500.0
+1100.0 1500.0 2400.0 2500.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2500.0 2700.0 3100.0
+1900.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2400.0 3000.0 3300.0
+1500.0 2100.0 2500.0 2800.0 3300.0 3400.0
+1600.0 2100.0 2500.0 2900.0 3300.0 3400.0
+1200.0 1600.0 2400.0 2500.0 2900.0 3400.0
+1300.0 1500.0 2300.0 2500.0 2700.0 3200.0
+1400.0 1600.0 2500.0 2600.0 3000.0 3300.0
+1300.0 1600.0 2400.0 2500.0 3100.0 3400.0
+1300.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1300.0 1600.0 2300.0 2400.0 3100.0 3300.0
+1200.0 1600.0 2300.0 2400.0 3000.0 3300.0
+1100.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2200.0 2600.0 2900.0 3300.0
+1500.0 1700.0 2400.0 2600.0 2900.0 3300.0
+1500.0 1600.0 2300.0 2500.0 2900.0 3200.0
+1700.0 2100.0 2600.0 3000.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2500.0 3100.0 3500.0
+1500.0 1600.0 2400.0 2500.0 3100.0 3400.0
+1500.0 1600.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1500.0 1600.0 2000.0 3200.0 3400.0
+1900.0 2000.0 2300.0 2500.0 2900.0 3200.0
+2000.0 2500.0 2700.0 2800.0 3200.0 3300.0
+2000.0 2200.0 2500.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2400.0 2800.0 2900.0 3100.0
+1700.0 1800.0 2400.0 2800.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2800.0 3100.0 3200.0
+1400.0 1900.0 2200.0 2400.0 3000.0 3200.0
+2100.0 2300.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2400.0 2900.0 3000.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2600.0 2900.0 3100.0
+1700.0 1800.0 2100.0 2700.0 2900.0 3100.0
+1800.0 1900.0 2200.0 2700.0 3000.0 3100.0
+1900.0 2100.0 2300.0 2800.0 3100.0 3200.0
+2000.0 2400.0 2600.0 2900.0 3200.0 3300.0
+1300.0 1700.0 2400.0 2700.0 3100.0 3200.0
+1200.0 1500.0 2300.0 2400.0 3000.0 3200.0
+1100.0 1500.0 2300.0 2500.0 3100.0 3200.0
+2000.0 2300.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2400.0 2900.0 3000.0 3300.0 3400.0
+2200.0 2500.0 2900.0 3100.0 3300.0 3400.0
+2300.0 2500.0 2900.0 3100.0 3300.0 3400.0
+2200.0 2500.0 2900.0 3100.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3200.0 3400.0
+1500.0 1800.0 2000.0 2300.0 3200.0 3400.0
+1700.0 1800.0 2000.0 2100.0 3200.0 3400.0
+1800.0 1900.0 2200.0 2300.0 3200.0 3400.0
+1900.0 2000.0 2500.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2400.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2800.0 3200.0 3400.0
+1800.0 2300.0 2600.0 2800.0 3200.0 3400.0
+1500.0 1900.0 2600.0 2800.0 3100.0 3300.0
+1400.0 1500.0 2400.0 2700.0 2800.0 3100.0
+1400.0 1500.0 2300.0 2700.0 2800.0 3100.0
+1400.0 1500.0 2400.0 2800.0 2900.0 3100.0
+1300.0 1500.0 2300.0 2900.0 3100.0 3200.0
+1300.0 1500.0 2200.0 2900.0 3100.0 3300.0
+1500.0 1600.0 2000.0 2700.0 3200.0 3300.0
+1500.0 1600.0 2000.0 2400.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2900.0 3200.0
+1700.0 1900.0 2100.0 2400.0 2900.0 3200.0
+2000.0 2400.0 2700.0 2900.0 3100.0 3200.0
+1900.0 2000.0 2400.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2500.0 2800.0 3000.0 3200.0
+1100.0 1400.0 2500.0 2900.0 3100.0 3200.0
+2200.0 2500.0 2900.0 3000.0 3200.0 3400.0
+2100.0 2500.0 2900.0 3000.0 3200.0 3400.0
+1900.0 2100.0 2500.0 2900.0 3000.0 3200.0
+1900.0 2000.0 2400.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2800.0 3000.0 3100.0
+1700.0 1900.0 2200.0 2800.0 3000.0 3100.0
+1600.0 1900.0 2000.0 2500.0 2800.0 3000.0
+1300.0 1900.0 2100.0 2500.0 2900.0 3100.0
+1500.0 1900.0 2100.0 2600.0 2900.0 3100.0
+1100.0 1400.0 2500.0 2700.0 3000.0 3300.0
+1300.0 1600.0 2500.0 2700.0 2900.0 3300.0
+1500.0 1700.0 2500.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2600.0 2700.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2800.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2800.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2800.0 3000.0 3100.0
+1900.0 2100.0 2500.0 2900.0 3100.0 3200.0
+1800.0 2100.0 2500.0 2800.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2600.0 2900.0 3100.0
+1500.0 1700.0 2400.0 2800.0 3000.0 3200.0
+1500.0 1700.0 2400.0 2900.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2600.0 3000.0 3300.0
+1200.0 1700.0 2500.0 2700.0 3000.0 3300.0
+1200.0 1500.0 2600.0 2700.0 3000.0 3300.0
+1300.0 1600.0 2600.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2400.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2500.0 2600.0 2800.0 3200.0
+1900.0 2000.0 2400.0 2700.0 2800.0 3100.0
+2000.0 2100.0 2500.0 2700.0 2800.0 3100.0
+1800.0 1900.0 2400.0 2700.0 2800.0 3100.0
+1700.0 1800.0 2400.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2400.0 2700.0 2800.0 3100.0
+1500.0 1600.0 2400.0 2700.0 2800.0 3200.0
+1400.0 1600.0 2300.0 2600.0 2900.0 3200.0
+1300.0 1500.0 2400.0 2600.0 2800.0 3200.0
+1200.0 1400.0 2500.0 2600.0 2900.0 3200.0
+1300.0 1400.0 2200.0 2600.0 2800.0 3100.0
+1900.0 2100.0 2600.0 2800.0 3200.0 3400.0
+1900.0 2000.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2100.0 2500.0 2700.0 2900.0 3100.0
+1600.0 2000.0 2400.0 2800.0 3000.0 3200.0
+1600.0 1900.0 2400.0 2800.0 3000.0 3300.0
+1800.0 1900.0 2300.0 2700.0 3000.0 3100.0
+1800.0 1900.0 2300.0 2700.0 2900.0 3000.0
+1700.0 1900.0 2200.0 2500.0 2900.0 3000.0
+1400.0 1900.0 2200.0 2500.0 2900.0 3100.0
+1500.0 1800.0 2200.0 2400.0 2900.0 3100.0
+1600.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2300.0 2600.0 2800.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2800.0 3000.0 3100.0
+2000.0 2100.0 2400.0 2800.0 3100.0 3200.0
+2100.0 2400.0 2500.0 2800.0 3100.0 3200.0
+1900.0 2100.0 2500.0 2800.0 3000.0 3200.0
+1700.0 1800.0 2400.0 2800.0 3000.0 3200.0
+1300.0 1500.0 2200.0 2800.0 3100.0 3200.0
+1400.0 1500.0 2400.0 2800.0 2900.0 3200.0
+1400.0 1600.0 2500.0 2700.0 3000.0 3200.0
+1500.0 1600.0 2400.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2400.0 2700.0 2900.0 3200.0
+1400.0 1600.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1600.0 2600.0 2700.0 3100.0 3300.0
+1000.0 1800.0 2700.0 2800.0 3200.0 3400.0
+1100.0 1700.0 2400.0 2500.0 3200.0 3400.0
+1600.0 1800.0 2000.0 2200.0 3200.0 3400.0
+1800.0 1900.0 2200.0 2400.0 3000.0 3300.0
+1800.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2700.0 3000.0 3200.0
+1300.0 1500.0 2500.0 2800.0 3000.0 3300.0
+1700.0 2000.0 2500.0 2700.0 2900.0 3200.0
+2000.0 2200.0 2500.0 2700.0 2900.0 3200.0
+2200.0 2600.0 2700.0 2800.0 3100.0 3300.0
+2100.0 2600.0 2700.0 2900.0 3300.0 3400.0
+2200.0 2300.0 2600.0 2800.0 3000.0 3200.0
+1600.0 2200.0 2500.0 2700.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2500.0 2900.0 3100.0 3200.0
+2200.0 2400.0 2600.0 2900.0 3100.0 3200.0
+2200.0 2500.0 2600.0 2800.0 3100.0 3200.0
+2300.0 2500.0 2600.0 2800.0 3200.0 3300.0
+2200.0 2500.0 2700.0 2800.0 3200.0 3300.0
+2200.0 2500.0 2700.0 2800.0 3100.0 3200.0
+2200.0 2400.0 2600.0 2800.0 3100.0 3200.0
+2000.0 2200.0 2400.0 2800.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2800.0 3000.0 3200.0
+1700.0 2100.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2200.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2600.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2300.0 2500.0 2800.0 2900.0
+1700.0 2100.0 2400.0 2700.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2100.0 3200.0 3400.0
+1500.0 1800.0 2200.0 2300.0 3200.0 3500.0
+1300.0 1700.0 2300.0 2500.0 2900.0 3200.0
+1300.0 1500.0 2100.0 2500.0 2900.0 3200.0
+1700.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2500.0 2700.0 2900.0 3200.0
+1700.0 1900.0 2400.0 2700.0 2900.0 3200.0
+1600.0 1700.0 2300.0 2600.0 2900.0 3200.0
+1400.0 1600.0 2300.0 2400.0 2800.0 3300.0
+1600.0 1700.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1800.0 2400.0 2700.0 2900.0 3300.0
+1600.0 1800.0 2400.0 2800.0 3000.0 3200.0
+1600.0 1700.0 2100.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2200.0 2500.0 2700.0 3200.0
+1700.0 2000.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2400.0 2700.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2300.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2200.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2100.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2000.0 2600.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2500.0 2900.0 3100.0 3300.0
+2300.0 2400.0 2600.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2500.0 2800.0 3100.0 3300.0
+2000.0 2200.0 2400.0 2600.0 3000.0 3300.0
+1300.0 1800.0 2200.0 2400.0 3000.0 3300.0
+1500.0 1800.0 2300.0 2400.0 3100.0 3400.0
+1800.0 2100.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1900.0 2500.0 2600.0 3000.0 3300.0
+1600.0 1800.0 2500.0 2600.0 3000.0 3400.0
+1600.0 1900.0 2400.0 2500.0 3100.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3100.0 3400.0
+1600.0 1800.0 2200.0 2300.0 3100.0 3400.0
+1600.0 1800.0 2000.0 2200.0 3100.0 3400.0
+1700.0 1800.0 2300.0 2600.0 3100.0 3200.0
+2200.0 2300.0 2500.0 2800.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2500.0 3000.0 3200.0
+1300.0 1700.0 2300.0 2400.0 3000.0 3200.0
+1400.0 1800.0 2300.0 2400.0 3000.0 3100.0
+1200.0 1500.0 2600.0 2800.0 3000.0 3300.0
+2200.0 2400.0 2600.0 2800.0 3000.0 3200.0
+2000.0 2500.0 2600.0 2800.0 3100.0 3200.0
+1900.0 2400.0 2600.0 2700.0 3100.0 3200.0
+2000.0 2300.0 2400.0 2600.0 3000.0 3200.0
+1900.0 2200.0 2400.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2300.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2400.0 2600.0 3100.0 3200.0
+2000.0 2300.0 2500.0 2600.0 2900.0 3200.0
+1600.0 2100.0 2400.0 2600.0 2900.0 3300.0
+1400.0 1700.0 2400.0 2800.0 3000.0 3200.0
+1100.0 1700.0 2900.0 3000.0 3200.0 3400.0
+1100.0 1700.0 2300.0 2900.0 3300.0 3400.0
+1100.0 1500.0 2300.0 2400.0 3300.0 3500.0
+1400.0 1700.0 2200.0 2400.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2600.0 2900.0 3300.0
+2000.0 2100.0 2400.0 2800.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2700.0 3000.0 3100.0
+1600.0 1900.0 2100.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1700.0 1900.0 2200.0 3200.0 3400.0
+1400.0 1600.0 1800.0 2100.0 3200.0 3400.0
+1300.0 1500.0 1600.0 2200.0 3300.0 3400.0
+1800.0 2000.0 2200.0 2400.0 3000.0 3300.0
+2100.0 2500.0 2700.0 2800.0 3100.0 3200.0
+2100.0 2400.0 2600.0 2800.0 3100.0 3200.0
+1300.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1800.0 2200.0 2400.0 2800.0 3200.0 3300.0
+1700.0 2100.0 2300.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2200.0 3000.0 3300.0
+1500.0 1700.0 2100.0 2200.0 3100.0 3400.0
+1500.0 1700.0 2000.0 2200.0 3100.0 3400.0
+1700.0 1800.0 2100.0 2300.0 3100.0 3400.0
+1900.0 2000.0 2400.0 2600.0 3000.0 3100.0
+2100.0 2500.0 2800.0 2900.0 3200.0 3300.0
+1800.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1700.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1900.0 2100.0 2300.0 2700.0 3000.0 3100.0
+2000.0 2200.0 2500.0 2700.0 2900.0 3100.0
+1400.0 1700.0 2000.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2900.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2600.0 3000.0 3100.0
+1600.0 1900.0 2200.0 2500.0 2900.0 3000.0
+1600.0 1800.0 2000.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2700.0 2900.0 3100.0
+1500.0 1900.0 2200.0 2500.0 2600.0 3200.0
+1800.0 1900.0 2400.0 2800.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2800.0 3000.0 3200.0
+2000.0 2300.0 2400.0 2700.0 3200.0 3300.0
+1900.0 2200.0 2400.0 2800.0 3200.0 3300.0
+1300.0 1800.0 2200.0 2600.0 3100.0 3300.0
+2000.0 2400.0 2800.0 3000.0 3200.0 3400.0
+2200.0 2300.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2300.0 2600.0 3000.0 3200.0 3300.0
+2100.0 2200.0 2600.0 2900.0 3100.0 3200.0
+2100.0 2200.0 2500.0 2900.0 3100.0 3200.0
+1800.0 2100.0 2300.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2600.0 3100.0 3200.0
+2000.0 2100.0 2400.0 2900.0 3100.0 3200.0
+2200.0 2500.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2400.0 2800.0 3000.0 3200.0 3400.0
+2000.0 2100.0 2500.0 2800.0 3100.0 3200.0
+2000.0 2100.0 2500.0 2900.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2800.0 2900.0 3100.0
+1600.0 1900.0 2100.0 2500.0 2800.0 3000.0
+1700.0 1900.0 2200.0 2500.0 2800.0 3000.0
+2100.0 2400.0 2700.0 3000.0 3200.0 3400.0
+1700.0 1800.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2800.0 3000.0 3200.0
+1600.0 1900.0 2300.0 2800.0 3100.0 3300.0
+1400.0 1600.0 1700.0 2100.0 3300.0 3400.0
+1600.0 1700.0 2000.0 2300.0 3200.0 3400.0
+1600.0 1800.0 2300.0 2700.0 2900.0 3200.0
+1600.0 1700.0 2300.0 2800.0 2900.0 3200.0
+1600.0 1800.0 2300.0 2800.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2800.0 3000.0 3100.0
+1800.0 1900.0 2300.0 2600.0 2900.0 3300.0
+1700.0 1800.0 2300.0 2500.0 3000.0 3400.0
+1600.0 1700.0 2200.0 2400.0 3000.0 3400.0
+1600.0 1700.0 2200.0 2300.0 3000.0 3400.0
+2000.0 2100.0 2300.0 2400.0 3000.0 3300.0
+2200.0 2500.0 2700.0 2900.0 3200.0 3400.0
+2000.0 2500.0 2600.0 2800.0 3200.0 3300.0
+2100.0 2500.0 2600.0 2900.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2700.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2800.0 3000.0 3100.0
+1700.0 2000.0 2300.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2500.0 2800.0 3000.0 3100.0
+1400.0 1600.0 1800.0 2100.0 3300.0 3400.0
+1500.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2500.0 3000.0 3300.0
+1600.0 1700.0 2200.0 2600.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2700.0 3000.0 3200.0
+1700.0 1800.0 2200.0 2700.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2800.0 3000.0 3100.0
+1300.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1300.0 2000.0 2200.0 2600.0 3100.0 3200.0
+2100.0 2500.0 2800.0 2900.0 3200.0 3400.0
+2200.0 2600.0 2800.0 3000.0 3300.0 3400.0
+1600.0 1900.0 2500.0 2600.0 3100.0 3400.0
+1400.0 1800.0 2500.0 2600.0 3100.0 3400.0
+1100.0 1800.0 2600.0 2700.0 3200.0 3400.0
+1000.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1200.0 1500.0 1700.0 1900.0 3000.0 3400.0
+1700.0 2100.0 2300.0 2700.0 3200.0 3300.0
+2000.0 2100.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2100.0 2500.0 2900.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2800.0 3100.0 3200.0
+1600.0 2000.0 2100.0 2700.0 3000.0 3100.0
+1600.0 2000.0 2100.0 2700.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2500.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2500.0 2900.0 3100.0
+1500.0 2000.0 2200.0 2400.0 2900.0 3100.0
+1600.0 1900.0 2200.0 2600.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2700.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2700.0 2900.0 3000.0
+1700.0 2000.0 2300.0 2700.0 2900.0 3100.0
+1700.0 2000.0 2300.0 2600.0 2900.0 3100.0
+1700.0 1900.0 2400.0 2600.0 2800.0 3000.0
+1700.0 1800.0 2300.0 2600.0 2800.0 3000.0
+1700.0 1900.0 2400.0 2600.0 2900.0 3100.0
+1700.0 1900.0 2300.0 2500.0 2800.0 3100.0
+1700.0 2100.0 2400.0 2600.0 2800.0 3100.0
+2000.0 2200.0 2500.0 2700.0 2800.0 3100.0
+1900.0 2200.0 2400.0 2700.0 2900.0 3000.0
+1800.0 2000.0 2300.0 2700.0 2900.0 3000.0
+1800.0 2300.0 2500.0 2700.0 3000.0 3100.0
+2000.0 2400.0 2600.0 2800.0 3100.0 3200.0
+1900.0 2300.0 2700.0 2800.0 3200.0 3300.0
+1800.0 2400.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2500.0 2900.0 3000.0
+1700.0 1800.0 2100.0 2500.0 2900.0 3000.0
+1600.0 1700.0 2000.0 2400.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2400.0 2700.0 2900.0
+1500.0 1600.0 2000.0 2600.0 2800.0 3100.0
+1400.0 1500.0 2000.0 2700.0 3200.0 3300.0
+1500.0 1600.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2800.0 3100.0 3300.0
+2000.0 2200.0 2800.0 2900.0 3200.0 3400.0
+2000.0 2200.0 2800.0 2900.0 3100.0 3400.0
+2000.0 2100.0 2700.0 2900.0 3100.0 3400.0
+1800.0 2200.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2600.0 2800.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2900.0 3100.0
+1800.0 1900.0 2200.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2500.0 2800.0 3000.0
+1500.0 1700.0 2100.0 2400.0 2700.0 3100.0
+1400.0 1500.0 1900.0 2400.0 3000.0 3100.0
+1400.0 1600.0 2000.0 2400.0 3100.0 3200.0
+1500.0 1700.0 2100.0 2400.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2400.0 2900.0 3100.0
+1600.0 1800.0 2100.0 2300.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2300.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2200.0 3200.0 3300.0
+1600.0 1700.0 1900.0 2100.0 3000.0 3300.0
+1700.0 1800.0 2100.0 2400.0 3100.0 3200.0
+2000.0 2300.0 2500.0 2700.0 2900.0 3100.0
+2000.0 2300.0 2600.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2400.0 2600.0 2900.0 3200.0
+1700.0 1900.0 2200.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2700.0 3100.0
+1600.0 1700.0 2200.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2100.0 2700.0 2800.0 3000.0
+1300.0 1500.0 2000.0 2700.0 3000.0 3200.0
+1200.0 1500.0 2100.0 2800.0 3000.0 3200.0
+1300.0 1500.0 2100.0 2800.0 3000.0 3100.0
+1600.0 1900.0 2100.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1500.0 1900.0 2400.0 2500.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2500.0 2900.0 3100.0
+1600.0 1700.0 2200.0 2700.0 2800.0 3000.0
+1600.0 1700.0 2200.0 2700.0 2900.0 3100.0
+1500.0 1700.0 2400.0 2700.0 2900.0 3100.0
+1500.0 1800.0 2400.0 2700.0 2900.0 3200.0
+1700.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1700.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1900.0 2300.0 2600.0 2700.0 3000.0 3100.0
+1800.0 2200.0 2600.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2100.0 2400.0 2800.0 3000.0 3100.0
+1800.0 2000.0 2300.0 2500.0 3000.0 3300.0
+1600.0 2000.0 2200.0 2600.0 2800.0 3000.0
+1700.0 1800.0 2100.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2400.0 2900.0 3200.0
+1400.0 1600.0 2100.0 2300.0 3000.0 3200.0
+1400.0 1800.0 2100.0 2500.0 3100.0 3200.0
+1700.0 1900.0 2300.0 2500.0 2700.0 3100.0
+1800.0 1900.0 2200.0 2500.0 2800.0 3200.0
+1700.0 1900.0 2100.0 2500.0 2800.0 3100.0
+1700.0 1900.0 2200.0 2500.0 2800.0 3200.0
+1600.0 1800.0 2100.0 2600.0 2800.0 3100.0
+1600.0 1800.0 2200.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2200.0 2600.0 2800.0 3100.0
+1400.0 1600.0 2200.0 2600.0 2900.0 3100.0
+1400.0 1600.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2700.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2600.0 3000.0 3100.0
+1600.0 1700.0 2100.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2500.0 2900.0 3100.0
+1700.0 1900.0 2300.0 2500.0 2900.0 3100.0
+1600.0 1800.0 2300.0 2500.0 2900.0 3000.0
+1500.0 1700.0 2000.0 2700.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2600.0 2900.0 3100.0
+1500.0 1600.0 1900.0 2500.0 2900.0 3000.0
+1500.0 1600.0 1900.0 2600.0 2900.0 3100.0
+1700.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1600.0 1700.0 2300.0 2700.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2300.0 2700.0 2800.0 3100.0
+1500.0 1600.0 2200.0 2700.0 2900.0 3200.0
+1500.0 1600.0 2100.0 2700.0 3000.0 3200.0
+1400.0 1500.0 2100.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2200.0 2500.0 3200.0 3300.0
+1900.0 2200.0 2400.0 2700.0 3100.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2100.0 2400.0 2800.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2400.0 3000.0 3300.0
+1700.0 1900.0 2100.0 2500.0 3100.0 3300.0
+1600.0 1800.0 2200.0 2500.0 3200.0 3400.0
+1700.0 1900.0 2200.0 2500.0 3200.0 3400.0
+1600.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1900.0 2100.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2200.0 2400.0 2600.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2500.0 2700.0 3000.0
+1600.0 1700.0 2100.0 2500.0 2600.0 3000.0
+1600.0 1700.0 2200.0 2400.0 2700.0 2900.0
+1700.0 1800.0 2300.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2300.0 2500.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2800.0 3100.0
+1700.0 1900.0 2200.0 2400.0 2800.0 3100.0
+1500.0 2000.0 2300.0 2700.0 2900.0 3100.0
+1500.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1700.0 2000.0 2400.0 2900.0 3200.0 3300.0
+2000.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2400.0 2600.0 2900.0 3000.0
+1700.0 2100.0 2300.0 2700.0 2900.0 3000.0
+1600.0 2000.0 2200.0 2600.0 3000.0 3100.0
+1600.0 2100.0 2200.0 2600.0 3000.0 3100.0
+1600.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1700.0 2100.0 2300.0 2600.0 2900.0 3100.0
+1800.0 2300.0 2400.0 2700.0 3000.0 3200.0
+1900.0 2300.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2400.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2400.0 2600.0 2800.0 3000.0 3200.0
+1800.0 2400.0 2600.0 2800.0 3000.0 3200.0
+1800.0 2300.0 2600.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2500.0 2800.0 3100.0
+1500.0 1800.0 2200.0 2500.0 2800.0 3000.0
+1500.0 1800.0 2300.0 2500.0 2800.0 3100.0
+1400.0 1900.0 2300.0 2500.0 2800.0 3000.0
+2000.0 2100.0 2500.0 2700.0 3100.0 3200.0
+2000.0 2100.0 2600.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2700.0 2900.0 3100.0
+1800.0 2100.0 2400.0 2600.0 2900.0 3200.0
+1800.0 2000.0 2400.0 2600.0 2900.0 3200.0
+1700.0 1900.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2500.0 2900.0 3200.0
+1200.0 1700.0 2200.0 2400.0 2900.0 3200.0
+1500.0 1600.0 1900.0 2500.0 2800.0 3000.0
+1500.0 1600.0 2000.0 2500.0 2800.0 3000.0
+1600.0 1700.0 2100.0 2500.0 2800.0 3200.0
+1700.0 1800.0 2100.0 2400.0 2800.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1500.0 1600.0 1900.0 2100.0 2800.0 3300.0
+1600.0 1700.0 2000.0 2100.0 2700.0 3300.0
+1800.0 2200.0 2400.0 2500.0 3000.0 3300.0
+1700.0 2300.0 2400.0 2600.0 3100.0 3200.0
+1700.0 2200.0 2400.0 2600.0 3000.0 3100.0
+1800.0 2000.0 2300.0 2500.0 2800.0 3100.0
+1800.0 2000.0 2200.0 2500.0 2900.0 3100.0
+1800.0 2100.0 2200.0 2700.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2600.0 2900.0 3000.0
+1700.0 2000.0 2100.0 2600.0 3000.0 3100.0
+1700.0 2000.0 2100.0 2500.0 3000.0 3100.0
+1700.0 1900.0 2300.0 2500.0 2800.0 3200.0
+1600.0 1900.0 2300.0 2500.0 2900.0 3200.0
+1500.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2300.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2600.0 2900.0 3000.0
+1400.0 1600.0 2000.0 2600.0 2900.0 3200.0
+1500.0 1600.0 2000.0 2600.0 2900.0 3200.0
+1600.0 1700.0 2100.0 2500.0 2900.0 3200.0
+1500.0 1900.0 2300.0 2400.0 3000.0 3300.0
+1600.0 1800.0 2300.0 2500.0 3000.0 3300.0
+1800.0 2200.0 2500.0 2700.0 2900.0 3100.0
+1500.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2700.0 2900.0 3100.0
+1400.0 1600.0 2000.0 2700.0 2800.0 3000.0
+1400.0 1600.0 1900.0 2600.0 2800.0 3000.0
+1400.0 1600.0 2100.0 2600.0 2900.0 3200.0
+1500.0 1600.0 2100.0 2600.0 3000.0 3200.0
+1500.0 1600.0 2100.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2000.0 2600.0 2900.0 3000.0
+1700.0 1900.0 2100.0 2600.0 2800.0 3100.0
+1800.0 2000.0 2400.0 2700.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2700.0 3000.0 3200.0
+1800.0 2200.0 2600.0 2900.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1800.0 1900.0 2100.0 2400.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2800.0 3200.0
+1600.0 1700.0 2200.0 2600.0 2800.0 3200.0
+1600.0 1700.0 2100.0 2600.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2600.0 2800.0 3100.0
+1400.0 1700.0 2000.0 2600.0 2900.0 3100.0
+1800.0 2200.0 2500.0 2900.0 3100.0 3300.0
+1700.0 2100.0 2500.0 2900.0 3100.0 3200.0
+1500.0 1700.0 2400.0 2700.0 2900.0 3200.0
+1400.0 1500.0 2300.0 2500.0 2800.0 3100.0
+1300.0 1500.0 2300.0 2500.0 2800.0 3100.0
+1300.0 1500.0 2200.0 2600.0 2700.0 3100.0
+1200.0 1600.0 2400.0 2600.0 3000.0 3200.0
+1600.0 2000.0 2500.0 2700.0 3000.0 3300.0
+1500.0 1700.0 2500.0 2700.0 3000.0 3200.0
+1400.0 1500.0 2000.0 2700.0 3000.0 3100.0
+1400.0 1500.0 1900.0 2600.0 3000.0 3100.0
+2000.0 2300.0 2800.0 2900.0 3200.0 3400.0
+2100.0 2500.0 2700.0 2800.0 3200.0 3400.0
+1900.0 2300.0 2500.0 2700.0 3100.0 3400.0
+1800.0 1900.0 2200.0 2500.0 3000.0 3300.0
+1900.0 2200.0 2500.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2700.0 2800.0 3100.0
+1900.0 2000.0 2200.0 2600.0 3000.0 3200.0
+1900.0 2000.0 2500.0 2800.0 3100.0 3300.0
+1800.0 1900.0 2200.0 2700.0 2800.0 3100.0
+1700.0 1800.0 2400.0 2600.0 2800.0 3200.0
+1700.0 1900.0 2400.0 2500.0 2900.0 3300.0
+1400.0 1700.0 2300.0 2400.0 2600.0 3000.0
+1600.0 1700.0 2000.0 2200.0 2900.0 3200.0
+1600.0 1700.0 2000.0 2300.0 2900.0 3200.0
+1800.0 1900.0 2100.0 2600.0 2800.0 3100.0
+1800.0 1900.0 2300.0 2600.0 2900.0 3100.0
+1100.0 1800.0 2200.0 2400.0 2900.0 3200.0
+1200.0 1700.0 2300.0 2500.0 3000.0 3200.0
+1500.0 1600.0 2200.0 2600.0 2700.0 3100.0
+1700.0 1800.0 2100.0 2500.0 3000.0 3100.0
+1300.0 1700.0 2000.0 2400.0 3000.0 3200.0
+1300.0 1600.0 2000.0 2300.0 3100.0 3200.0
+1300.0 1600.0 1900.0 2300.0 3100.0 3200.0
+1400.0 1600.0 1900.0 2300.0 3100.0 3200.0
+1400.0 1600.0 1900.0 2400.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2400.0 3100.0 3200.0
+1800.0 2100.0 2200.0 2700.0 3100.0 3200.0
+1700.0 2100.0 2200.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2600.0 3200.0 3400.0
+1900.0 2200.0 2600.0 3000.0 3300.0 3400.0
+1400.0 1800.0 2200.0 2600.0 3000.0 3300.0
+1000.0 1400.0 2400.0 2600.0 2900.0 3200.0
+1200.0 1500.0 2500.0 2600.0 3000.0 3300.0
+1200.0 1500.0 2400.0 2600.0 3000.0 3300.0
+1200.0 1500.0 2400.0 2600.0 2900.0 3300.0
+1200.0 1500.0 2400.0 2500.0 2900.0 3300.0
+1200.0 1500.0 2300.0 2500.0 3000.0 3300.0
+1200.0 1500.0 2300.0 2400.0 3000.0 3300.0
+1300.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2500.0 2800.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2700.0 3200.0
+1800.0 1900.0 2300.0 2600.0 2700.0 3100.0
+1800.0 1900.0 2400.0 2600.0 2800.0 3200.0
+1900.0 2000.0 2700.0 2800.0 3100.0 3300.0
+1900.0 2000.0 2600.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2500.0 2800.0 3000.0 3300.0
+1900.0 2100.0 2700.0 2800.0 3100.0 3300.0
+1900.0 2000.0 2700.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2600.0 2800.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2500.0 3100.0 3300.0
+1600.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1300.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1400.0 1500.0 2100.0 2400.0 2600.0 3100.0
+1500.0 1600.0 2000.0 2400.0 2700.0 3100.0
+1600.0 1700.0 2000.0 2500.0 2700.0 3100.0
+1900.0 2100.0 2300.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2400.0 2600.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2100.0 2700.0 3000.0 3100.0
+1800.0 1900.0 2100.0 2700.0 3000.0 3200.0
+1900.0 2100.0 2700.0 2800.0 3000.0 3300.0
+1900.0 2300.0 2700.0 2800.0 3100.0 3300.0
+2000.0 2400.0 2700.0 2800.0 3200.0 3400.0
+1600.0 2000.0 2300.0 2600.0 3000.0 3100.0
+1000.0 1400.0 2200.0 2400.0 3100.0 3300.0
+1400.0 1500.0 2000.0 2100.0 2900.0 3300.0
+1800.0 1900.0 2100.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2700.0 3000.0 3300.0
+1800.0 2000.0 2300.0 2700.0 3100.0 3300.0
+1800.0 2100.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2200.0 2500.0 2900.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2400.0 3100.0 3200.0
+1800.0 2000.0 2300.0 2400.0 3000.0 3200.0
+1800.0 1900.0 2200.0 2400.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2200.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2000.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2000.0 2500.0 3100.0 3200.0
+1600.0 1900.0 2000.0 2500.0 3000.0 3100.0
+1900.0 2300.0 2800.0 2900.0 3200.0 3400.0
+2000.0 2200.0 2700.0 3000.0 3200.0 3300.0
+1900.0 2400.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2400.0 2700.0 2900.0 3100.0 3300.0
+1800.0 2200.0 2400.0 2800.0 3000.0 3200.0
+1900.0 2200.0 2700.0 3000.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2800.0 3000.0 3300.0
+1600.0 1700.0 2400.0 2600.0 2800.0 3200.0
+1600.0 1700.0 2300.0 2700.0 2800.0 3200.0
+1600.0 1700.0 2200.0 2700.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2400.0 2900.0 3200.0
+1600.0 1900.0 2200.0 2500.0 2800.0 3000.0
+1600.0 2000.0 2400.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2000.0 2700.0 3000.0 3100.0
+1400.0 1600.0 2100.0 2700.0 2900.0 3100.0
+1900.0 2200.0 2800.0 3000.0 3300.0 3500.0
+1700.0 2000.0 2700.0 2800.0 3100.0 3300.0
+1600.0 1800.0 2200.0 2500.0 2800.0 3100.0
+1600.0 1800.0 2100.0 2400.0 2800.0 3000.0
+1600.0 2000.0 2300.0 2600.0 2800.0 3000.0
+1600.0 1900.0 2300.0 2600.0 2800.0 3000.0
+1800.0 2200.0 2500.0 2900.0 3200.0 3400.0
+1700.0 1900.0 2200.0 2800.0 3100.0 3200.0
+1600.0 2000.0 2300.0 2700.0 3000.0 3300.0
+1600.0 2000.0 2200.0 2600.0 3000.0 3200.0
+1800.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1900.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2600.0 2900.0 3200.0
+1300.0 2000.0 2300.0 2400.0 2800.0 3300.0
+1800.0 2000.0 2400.0 2600.0 2900.0 3300.0
+1900.0 2200.0 2300.0 2700.0 3000.0 3100.0
+1900.0 2200.0 2300.0 2700.0 3000.0 3200.0
+1800.0 2200.0 2400.0 2800.0 3100.0 3200.0
+1600.0 2100.0 2200.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2300.0 2500.0 2900.0 3200.0
+1800.0 2200.0 2400.0 2700.0 3100.0 3300.0
+1200.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1000.0 1600.0 2700.0 2900.0 3200.0 3300.0
+1000.0 1500.0 2700.0 2900.0 3200.0 3300.0
+1500.0 1700.0 2600.0 2800.0 3100.0 3300.0
+1500.0 1700.0 2600.0 2800.0 3000.0 3300.0
+1600.0 1700.0 2500.0 2800.0 3000.0 3300.0
+1600.0 1700.0 2400.0 2800.0 3000.0 3300.0
+1700.0 1800.0 2000.0 2400.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2500.0 3000.0 3100.0
+1700.0 1900.0 2200.0 2500.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2400.0 2600.0 2800.0 3100.0
+1200.0 1600.0 2200.0 2400.0 2900.0 3100.0
+1300.0 1800.0 2400.0 2600.0 2900.0 3200.0
+1300.0 1500.0 2000.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2400.0 2700.0 3100.0 3200.0
+1800.0 2100.0 2400.0 2700.0 3100.0 3400.0
+1500.0 1600.0 2000.0 2200.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2200.0 3000.0 3300.0
+1700.0 1800.0 2100.0 2300.0 3100.0 3300.0
+1800.0 1900.0 2200.0 2400.0 2900.0 3100.0
+1800.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1500.0 2100.0 2300.0 2500.0 3100.0 3300.0
+1700.0 1900.0 2400.0 2700.0 2900.0 3100.0
+1400.0 1800.0 2200.0 2300.0 3100.0 3400.0
+1300.0 1800.0 2300.0 2400.0 3000.0 3300.0
+1800.0 2200.0 2400.0 2600.0 3100.0 3300.0
+1800.0 2100.0 2300.0 2500.0 3100.0 3200.0
+1100.0 1700.0 2200.0 2300.0 3000.0 3200.0
+1100.0 1600.0 2200.0 2400.0 3100.0 3200.0
+1200.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1700.0 2300.0 2500.0 2800.0 3200.0 3300.0
+1500.0 1900.0 2200.0 2400.0 2900.0 3100.0
+1400.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1400.0 2000.0 2200.0 2600.0 3100.0 3200.0
+1700.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2500.0 2800.0 2900.0 3200.0
+1700.0 1800.0 2500.0 2700.0 2900.0 3200.0
+1600.0 1800.0 2400.0 2600.0 2800.0 3200.0
+1400.0 1700.0 2100.0 2500.0 3000.0 3300.0
+1400.0 1600.0 1900.0 2000.0 3100.0 3300.0
+1400.0 1600.0 2000.0 2100.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2400.0 2900.0 3300.0
+2100.0 2300.0 2600.0 2900.0 3100.0 3300.0
+1200.0 1800.0 2200.0 2400.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1900.0 2400.0 2700.0 2900.0 3300.0 3400.0
+1400.0 1600.0 2100.0 2500.0 3100.0 3200.0
+1400.0 1700.0 2300.0 2500.0 3200.0 3400.0
+1400.0 1600.0 2300.0 2500.0 3200.0 3400.0
+1400.0 1600.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1700.0 2200.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2300.0 2800.0 3000.0 3200.0
+1400.0 1600.0 2300.0 2800.0 3000.0 3200.0
+1200.0 1400.0 2400.0 2900.0 3100.0 3200.0
+1200.0 1400.0 2400.0 2900.0 3200.0 3300.0
+1100.0 1400.0 2400.0 2900.0 3200.0 3300.0
+1600.0 1800.0 2400.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2400.0 2800.0 3000.0 3200.0
+1900.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1800.0 2300.0 2800.0 3000.0 3200.0 3400.0
+1800.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1700.0 1800.0 2100.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2700.0 3100.0 3200.0
+1600.0 1700.0 2000.0 2500.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2800.0 3000.0 3100.0
+2000.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2800.0 2900.0 3200.0
+1700.0 1800.0 2400.0 2800.0 2900.0 3200.0
+1600.0 1800.0 2600.0 2800.0 3000.0 3300.0
+2100.0 2300.0 2500.0 2800.0 3000.0 3300.0
+2100.0 2200.0 2500.0 2600.0 2900.0 3200.0
+1900.0 2100.0 2400.0 2600.0 2800.0 3200.0
+1800.0 2000.0 2700.0 2800.0 3000.0 3300.0
+1700.0 2100.0 2400.0 2600.0 3000.0 3200.0
+1800.0 2000.0 2400.0 2500.0 3100.0 3400.0
+1900.0 2200.0 2500.0 2600.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2600.0 3000.0 3200.0
+1800.0 2200.0 2500.0 2600.0 3000.0 3100.0
+2000.0 2200.0 2600.0 2700.0 3100.0 3200.0
+2000.0 2300.0 2600.0 2700.0 3100.0 3200.0
+1800.0 2100.0 2300.0 2500.0 2900.0 3100.0
+1800.0 2100.0 2700.0 3000.0 3300.0 3400.0
+1800.0 2000.0 2700.0 2900.0 3200.0 3300.0
+1900.0 2100.0 2400.0 2700.0 3000.0 3300.0
+1900.0 2100.0 2400.0 2700.0 2900.0 3100.0
+2000.0 2200.0 2400.0 2700.0 2900.0 3100.0
+2000.0 2400.0 2600.0 2700.0 2900.0 3100.0
+1500.0 1700.0 2200.0 2300.0 3100.0 3300.0
+1400.0 1600.0 2300.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2500.0 2700.0 2900.0 3200.0
+1600.0 1700.0 2500.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3000.0 3400.0
+1500.0 1700.0 2100.0 2300.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2300.0 3000.0 3300.0
+1500.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1500.0 2100.0 2500.0 2600.0 3000.0 3200.0
+1500.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1600.0 1700.0 2000.0 2500.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2500.0 3000.0 3100.0
+1800.0 1900.0 2200.0 2600.0 3000.0 3100.0
+1700.0 2100.0 2600.0 2900.0 3100.0 3400.0
+1700.0 2000.0 2600.0 2900.0 3200.0 3300.0
+1800.0 1900.0 2300.0 2800.0 2900.0 3100.0
+1800.0 1900.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2000.0 2500.0 2900.0 3200.0 3400.0
+1800.0 2400.0 2800.0 2900.0 3300.0 3400.0
+1500.0 1800.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2400.0 2800.0 3000.0 3200.0
+1200.0 1600.0 2200.0 2600.0 2900.0 3200.0
+1400.0 1800.0 2400.0 2800.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2800.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2600.0 3000.0 3200.0
+1500.0 1600.0 2400.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2000.0 2600.0 2900.0 3200.0 3400.0
+1900.0 2000.0 2700.0 2900.0 3200.0 3400.0
+1200.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1300.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1700.0 2000.0 2500.0 2900.0 3200.0 3300.0
+1100.0 1400.0 2400.0 2900.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2700.0 3100.0 3200.0
+2000.0 2200.0 2400.0 2600.0 3000.0 3100.0
+1900.0 2100.0 2300.0 2600.0 3000.0 3100.0
+1700.0 1900.0 2500.0 2800.0 3100.0 3200.0
+1400.0 1600.0 2400.0 2800.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2200.0 2400.0 2900.0 3100.0
+1500.0 1800.0 2200.0 2300.0 2800.0 2900.0
+1500.0 1800.0 2200.0 2500.0 2900.0 3100.0
+1600.0 1800.0 2200.0 2500.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2700.0 2900.0 3000.0
+1600.0 1800.0 2100.0 2800.0 3000.0 3100.0
+1800.0 1900.0 2300.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2800.0 3200.0 3400.0
+1900.0 2000.0 2500.0 2800.0 3200.0 3400.0
+1900.0 2000.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1700.0 2200.0 2500.0 3100.0 3300.0
+1900.0 2300.0 2500.0 2800.0 3100.0 3300.0
+1300.0 2000.0 2200.0 2400.0 2800.0 3100.0
+1400.0 1700.0 2300.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2300.0 2700.0 2800.0 3100.0
+1600.0 1800.0 2300.0 2600.0 2800.0 3100.0
+1900.0 2000.0 2400.0 2600.0 2900.0 3100.0
+2000.0 2500.0 2600.0 2700.0 3200.0 3300.0
+2200.0 2500.0 2600.0 2900.0 3100.0 3300.0
+2100.0 2400.0 2600.0 2700.0 3200.0 3300.0
+2100.0 2400.0 2600.0 2700.0 3200.0 3400.0
+1700.0 1900.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2300.0 2400.0 2700.0 3000.0 3200.0
+2000.0 2300.0 2500.0 2700.0 3000.0 3100.0
+2000.0 2400.0 2500.0 2800.0 3200.0 3300.0
+2000.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2200.0 2400.0 3000.0 3300.0
+1400.0 1600.0 2100.0 2400.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2300.0 2700.0 3200.0
+1700.0 1800.0 2100.0 2300.0 2800.0 3300.0
+1700.0 1800.0 2200.0 2400.0 2800.0 3300.0
+1900.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1300.0 2000.0 2300.0 2400.0 2900.0 3200.0
+1900.0 2200.0 2400.0 2500.0 2900.0 3200.0
+1600.0 1800.0 2200.0 2500.0 2700.0 3100.0
+1600.0 1700.0 2300.0 2500.0 3000.0 3400.0
+1900.0 2000.0 2400.0 2700.0 2900.0 3300.0
+1800.0 2200.0 2400.0 2600.0 2900.0 3100.0
+1700.0 2000.0 2300.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2800.0 3000.0
+1600.0 1700.0 2100.0 2700.0 2900.0 3000.0
+1400.0 1600.0 2000.0 2200.0 2800.0 3200.0
+1200.0 1600.0 2000.0 2400.0 3000.0 3200.0
+1200.0 1700.0 2200.0 2500.0 3000.0 3100.0
+1600.0 1900.0 2600.0 2800.0 3000.0 3200.0
+1500.0 1900.0 2300.0 2700.0 2900.0 3200.0
+1200.0 1900.0 2300.0 2400.0 3000.0 3300.0
+1400.0 1600.0 2300.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1500.0 1600.0 2100.0 2400.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2300.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2200.0 2900.0 3300.0
+1500.0 1600.0 2000.0 2100.0 2800.0 3200.0
+1500.0 1600.0 2000.0 2200.0 2800.0 3200.0
+1500.0 1600.0 2000.0 2200.0 2900.0 3200.0
+1500.0 1800.0 2100.0 2200.0 2900.0 3300.0
+2100.0 2300.0 2500.0 2700.0 2900.0 3100.0
+2000.0 2200.0 2400.0 2600.0 2800.0 3100.0
+1800.0 2100.0 2300.0 2600.0 2800.0 3000.0
+1600.0 1800.0 2400.0 2600.0 2800.0 3000.0
+1200.0 1300.0 2100.0 2700.0 2800.0 3000.0
+1100.0 1300.0 2300.0 2700.0 2900.0 3100.0
+1100.0 1300.0 2300.0 2700.0 2800.0 3100.0
+1100.0 1300.0 2300.0 2800.0 2900.0 3100.0
+1500.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2600.0 3000.0 3200.0
+1700.0 1800.0 2300.0 2600.0 2800.0 3200.0
+1900.0 2000.0 2400.0 2600.0 2800.0 3200.0
+2100.0 2200.0 2400.0 2600.0 3100.0 3300.0
+2000.0 2200.0 2400.0 2600.0 3100.0 3300.0
+2300.0 2500.0 2800.0 3000.0 3200.0 3300.0
+1900.0 2200.0 2700.0 2800.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1700.0 2100.0 2400.0 3100.0 3300.0
+1300.0 1600.0 2100.0 2400.0 3200.0 3400.0
+1400.0 2000.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2300.0 2400.0 2800.0 3200.0
+1400.0 1600.0 2300.0 2500.0 2800.0 3200.0
+1400.0 1500.0 2300.0 2500.0 2800.0 3200.0
+1400.0 1500.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2000.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2200.0 2700.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2700.0 3000.0 3200.0
+1800.0 2000.0 2500.0 2800.0 2900.0 3200.0
+1700.0 1900.0 2500.0 2700.0 2900.0 3200.0
+1900.0 2200.0 2600.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1300.0 1500.0 2100.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2400.0 2800.0 3000.0 3300.0
+1400.0 1500.0 2500.0 2600.0 2900.0 3200.0
+1500.0 1600.0 2400.0 2600.0 2800.0 3300.0
+1600.0 1700.0 2400.0 2600.0 2800.0 3300.0
+1800.0 2000.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2000.0 2300.0 2700.0 3000.0 3100.0
+1900.0 2100.0 2400.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2400.0 2800.0 3000.0 3300.0
+1800.0 1900.0 2300.0 2700.0 2900.0 3100.0
+1800.0 2100.0 2300.0 2700.0 3000.0 3100.0
+1900.0 2100.0 2300.0 2800.0 3000.0 3100.0
+1400.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1900.0 2200.0 2600.0 3000.0 3200.0 3300.0
+1800.0 2200.0 2600.0 3000.0 3200.0 3300.0
+1500.0 1600.0 2400.0 2600.0 2800.0 3200.0
+1400.0 1600.0 2500.0 2700.0 2900.0 3200.0
+1500.0 1600.0 2400.0 2700.0 2900.0 3100.0
+1500.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2600.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2600.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2600.0 2900.0 3100.0
+1700.0 2200.0 2400.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2500.0 2600.0 2900.0 3100.0
+1500.0 1700.0 2500.0 2600.0 2900.0 3100.0
+1400.0 1600.0 2300.0 2600.0 2900.0 3100.0
+1200.0 1400.0 2200.0 2600.0 2900.0 3200.0
+1600.0 1700.0 2200.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2500.0 3100.0 3200.0
+1600.0 1900.0 2200.0 2700.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2800.0 3100.0 3200.0
+1900.0 2100.0 2500.0 2700.0 3100.0 3400.0
+2100.0 2300.0 2600.0 2800.0 3000.0 3200.0
+2000.0 2300.0 2600.0 2800.0 3000.0 3200.0
+2100.0 2400.0 2700.0 2800.0 3000.0 3200.0
+1600.0 2300.0 2600.0 2800.0 3000.0 3100.0
+1700.0 2300.0 2600.0 2800.0 3000.0 3100.0
+1600.0 1700.0 2400.0 2600.0 3000.0 3300.0
+1500.0 1700.0 2400.0 2500.0 2900.0 3300.0
+1600.0 1900.0 2300.0 2600.0 2700.0 3300.0
+1600.0 1900.0 2300.0 2500.0 3300.0 3400.0
+1600.0 1800.0 2300.0 2500.0 3200.0 3400.0
+1800.0 2200.0 2700.0 2900.0 3300.0 3500.0
+1700.0 2000.0 2400.0 2600.0 3300.0 3400.0
+1800.0 2200.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2400.0 2800.0 3100.0 3400.0 3500.0
+2100.0 2500.0 2800.0 3100.0 3400.0 3500.0
+1900.0 2300.0 2900.0 3000.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2400.0 3200.0 3400.0
+1400.0 1700.0 2000.0 2300.0 3000.0 3100.0
+1400.0 1600.0 1900.0 2100.0 3000.0 3100.0
+1400.0 1600.0 1800.0 2100.0 3100.0 3200.0
+1400.0 1600.0 1800.0 2000.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2300.0 2900.0 3300.0
+1600.0 1800.0 2400.0 2500.0 2900.0 3300.0
+1900.0 2000.0 2200.0 2400.0 3100.0 3300.0
+1900.0 2000.0 2200.0 2400.0 3200.0 3400.0
+1300.0 1500.0 2000.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2100.0 2500.0 3000.0 3200.0
+1300.0 1600.0 2300.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2600.0 3200.0 3400.0
+1600.0 1800.0 2100.0 2400.0 3300.0 3400.0
+1700.0 1900.0 2200.0 2400.0 3200.0 3400.0
+1800.0 2000.0 2400.0 2700.0 3200.0 3400.0
+1900.0 2200.0 2600.0 2700.0 3000.0 3200.0
+1800.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2400.0 3100.0 3200.0
+1400.0 1600.0 1800.0 2000.0 3000.0 3100.0
+1400.0 1600.0 1800.0 2000.0 2900.0 3000.0
+1400.0 1600.0 1800.0 2100.0 2800.0 3000.0
+1500.0 1700.0 2100.0 2400.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2500.0 3200.0 3300.0
+1100.0 1700.0 2400.0 2600.0 3100.0 3300.0
+1200.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2800.0 3300.0 3400.0
+1600.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1800.0 2200.0 2700.0 3100.0 3400.0 3500.0
+1800.0 2200.0 2800.0 3000.0 3400.0 3500.0
+1900.0 2300.0 2800.0 3100.0 3400.0 3500.0
+1900.0 2400.0 2800.0 3100.0 3300.0 3400.0
+1800.0 2200.0 2600.0 2900.0 3400.0 3500.0
+1600.0 1800.0 2400.0 2800.0 3200.0 3300.0
+2000.0 2500.0 2600.0 2900.0 3200.0 3300.0
+2100.0 2400.0 2600.0 3000.0 3200.0 3300.0
+2200.0 2500.0 2700.0 3100.0 3200.0 3300.0
+2100.0 2500.0 2600.0 2800.0 3300.0 3400.0
+2000.0 2100.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2500.0 3100.0 3400.0
+1700.0 1900.0 2300.0 2400.0 3100.0 3400.0
+1600.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1600.0 2200.0 2700.0 3000.0 3300.0 3400.0
+1800.0 2300.0 2700.0 3000.0 3400.0 3500.0
+1700.0 2300.0 2500.0 2800.0 3300.0 3400.0
+1500.0 1900.0 2500.0 2700.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2800.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2500.0 3200.0 3300.0
+1100.0 2000.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2500.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2300.0 2500.0 2700.0 2900.0
+1400.0 1800.0 2200.0 2500.0 2700.0 2900.0
+1400.0 1800.0 2400.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2400.0 2600.0 3000.0 3300.0
+1500.0 1900.0 2100.0 2300.0 3200.0 3300.0
+1400.0 1800.0 2300.0 2400.0 3000.0 3300.0
+2000.0 2300.0 2800.0 3000.0 3400.0 3500.0
+1600.0 1900.0 2200.0 2300.0 3100.0 3400.0
+1600.0 1800.0 2000.0 2500.0 3000.0 3100.0
+1500.0 1700.0 1800.0 2400.0 3100.0 3200.0
+1500.0 1600.0 1800.0 2400.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2300.0 2500.0 2900.0 3300.0
+1900.0 2300.0 2700.0 2900.0 3100.0 3300.0
+1400.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1200.0 1700.0 2300.0 2500.0 3100.0 3200.0
+1300.0 2200.0 2600.0 2800.0 3100.0 3300.0
+1100.0 1700.0 2500.0 2600.0 3200.0 3400.0
+1300.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1400.0 1500.0 2500.0 2600.0 3100.0 3300.0
+1700.0 1800.0 2300.0 2500.0 2700.0 3300.0
+1800.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2500.0 2900.0 3200.0
+1800.0 1900.0 2400.0 2500.0 2800.0 3200.0
+1900.0 2000.0 2300.0 2500.0 2800.0 3300.0
+1800.0 2000.0 2200.0 2500.0 2800.0 3300.0
+1900.0 2300.0 2700.0 3000.0 3300.0 3500.0
+2100.0 2300.0 2900.0 3000.0 3200.0 3300.0
+1900.0 2100.0 2800.0 2900.0 3100.0 3300.0
+1700.0 2000.0 2600.0 2700.0 2900.0 3100.0
+1700.0 2100.0 2600.0 2800.0 3000.0 3200.0
+1700.0 2100.0 2600.0 2900.0 3100.0 3300.0
+1400.0 1500.0 1700.0 2900.0 3300.0 3400.0
+1400.0 1700.0 1800.0 2600.0 3300.0 3400.0
+1400.0 1700.0 2000.0 2700.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2300.0 2900.0 3000.0
+1400.0 1700.0 1800.0 2200.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2100.0 3000.0 3200.0
+1300.0 1600.0 1800.0 2000.0 3000.0 3100.0
+1300.0 1600.0 1800.0 2000.0 3100.0 3200.0
+1300.0 1500.0 1700.0 2200.0 3200.0 3300.0
+1300.0 1600.0 1700.0 2200.0 3200.0 3300.0
+1300.0 1500.0 1600.0 2100.0 3200.0 3300.0
+1600.0 1700.0 2100.0 2300.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2400.0 3100.0 3400.0
+1900.0 2400.0 2800.0 3100.0 3400.0 3500.0
+2000.0 2400.0 2800.0 3000.0 3400.0 3500.0
+1600.0 1800.0 2200.0 2600.0 2900.0 3100.0
+1300.0 1600.0 1800.0 2400.0 3100.0 3200.0
+1200.0 1600.0 1800.0 2100.0 3000.0 3100.0
+1400.0 1900.0 2100.0 2400.0 3000.0 3100.0
+1300.0 1900.0 2100.0 2300.0 3000.0 3200.0
+1300.0 1800.0 2100.0 2300.0 3000.0 3200.0
+1400.0 1800.0 2500.0 2700.0 3100.0 3400.0
+1100.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1100.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1700.0 2300.0 2400.0 3000.0 3300.0
+1400.0 1700.0 2400.0 2500.0 3000.0 3300.0
+1900.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2400.0 3200.0 3400.0
+1300.0 1700.0 2200.0 2400.0 2900.0 3100.0
+1100.0 1600.0 1800.0 2100.0 2900.0 3000.0
+1500.0 1700.0 1900.0 2100.0 3000.0 3100.0
+1600.0 1700.0 1900.0 2100.0 3000.0 3100.0
+1700.0 1900.0 2300.0 2500.0 2900.0 3200.0
+1400.0 1800.0 2200.0 2300.0 3300.0 3400.0
+2100.0 2400.0 2800.0 2900.0 3200.0 3300.0
+2200.0 2500.0 2700.0 2900.0 3100.0 3300.0
+2300.0 2500.0 2700.0 3000.0 3100.0 3300.0
+1700.0 2200.0 2400.0 2800.0 3300.0 3400.0
+1800.0 2300.0 2800.0 3100.0 3400.0 3500.0
+1800.0 2300.0 2600.0 3100.0 3400.0 3500.0
+1800.0 2300.0 2600.0 3100.0 3300.0 3400.0
+1500.0 1700.0 2400.0 2600.0 3000.0 3300.0
+1400.0 1600.0 2400.0 2500.0 2900.0 3300.0
+1200.0 1700.0 2200.0 2400.0 3100.0 3200.0
+1500.0 2000.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2300.0 2700.0 3000.0 3200.0
+1300.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1600.0 1900.0 2400.0 2500.0 3000.0 3200.0
+2000.0 2300.0 2600.0 2700.0 3000.0 3100.0
+1800.0 2000.0 2500.0 2800.0 3000.0 3300.0
+2000.0 2400.0 2600.0 2700.0 3100.0 3200.0
+1700.0 2400.0 2600.0 2800.0 3100.0 3200.0
+1200.0 1800.0 2200.0 2300.0 3300.0 3400.0
+1100.0 1600.0 2200.0 2400.0 3200.0 3300.0
+1100.0 1800.0 1900.0 2500.0 3000.0 3100.0
+1200.0 1700.0 1900.0 2500.0 3100.0 3200.0
+1400.0 1800.0 2300.0 2500.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2500.0 3100.0 3400.0
+1500.0 1700.0 2300.0 2400.0 2900.0 3300.0
+1500.0 1900.0 2200.0 2600.0 3000.0 3100.0
+1300.0 1600.0 2100.0 2300.0 3000.0 3100.0
+1400.0 1700.0 2200.0 2300.0 3000.0 3100.0
+1400.0 1700.0 2200.0 2400.0 3000.0 3100.0
+1400.0 1600.0 2200.0 2300.0 3000.0 3100.0
+1500.0 1700.0 2200.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2100.0 2300.0 3200.0 3300.0
+1400.0 1700.0 2000.0 2300.0 3200.0 3300.0
+1300.0 1700.0 2100.0 2500.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2700.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1500.0 1600.0 2200.0 2400.0 3100.0 3400.0
+1400.0 1600.0 2200.0 2400.0 3100.0 3400.0
+1100.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1900.0 2300.0 2500.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2600.0 3100.0 3400.0
+1500.0 1700.0 2300.0 2500.0 3000.0 3400.0
+1500.0 1900.0 2200.0 2600.0 2800.0 3000.0
+1500.0 1800.0 2200.0 2500.0 2900.0 3000.0
+1500.0 1700.0 2200.0 2500.0 3100.0 3400.0
+1300.0 1800.0 2100.0 2300.0 3300.0 3400.0
+1100.0 1600.0 2200.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2100.0 2500.0 2900.0 3200.0
+1500.0 1800.0 2400.0 2600.0 3300.0 3400.0
+1500.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2000.0 2100.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2600.0 3100.0 3300.0
+1500.0 1600.0 1800.0 2200.0 3200.0 3300.0
+1600.0 1800.0 1900.0 2300.0 3300.0 3400.0
+1500.0 1800.0 2100.0 2200.0 3200.0 3400.0
+1500.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1300.0 1700.0 2100.0 2300.0 3100.0 3300.0
+1400.0 1500.0 2100.0 2300.0 3000.0 3300.0
+1500.0 1600.0 2100.0 2300.0 3000.0 3300.0
+1500.0 1600.0 2200.0 2300.0 3000.0 3300.0
+1400.0 1900.0 2100.0 2200.0 3000.0 3100.0
+1400.0 1800.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2600.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2300.0 3200.0 3400.0
+1500.0 1900.0 2200.0 2400.0 2600.0 3300.0
+1500.0 1900.0 2300.0 2400.0 2800.0 3300.0
+1400.0 1600.0 2400.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2400.0 2500.0 3100.0 3300.0
+1500.0 1600.0 2400.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2100.0 2300.0 2800.0 3300.0
+1800.0 2100.0 2600.0 3000.0 3400.0 3500.0
+2100.0 2500.0 2900.0 3100.0 3400.0 3500.0
+1700.0 2100.0 2600.0 2700.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2400.0 3200.0 3400.0
+1500.0 1800.0 2400.0 2500.0 3100.0 3400.0
+1600.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1400.0 1600.0 1700.0 2100.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2000.0 3100.0 3200.0
+1600.0 1700.0 1900.0 2200.0 3100.0 3300.0
+1800.0 1900.0 2500.0 2600.0 3000.0 3300.0
+1800.0 2100.0 2600.0 2900.0 3400.0 3500.0
+1800.0 2000.0 2300.0 2900.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2400.0 2900.0 3100.0
+1100.0 1600.0 2500.0 2700.0 3100.0 3400.0
+1200.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2200.0 2700.0 3000.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2600.0 3100.0 3300.0
+1300.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1800.0 2100.0 2800.0 2900.0 3300.0 3400.0
+1700.0 1800.0 2000.0 2400.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2500.0 3100.0 3300.0
+1800.0 2100.0 2300.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2600.0 2700.0 3000.0 3200.0
+1800.0 2000.0 2600.0 2700.0 3000.0 3200.0
+1900.0 2000.0 2500.0 2700.0 3000.0 3200.0
+2000.0 2100.0 2500.0 2600.0 2900.0 3200.0
+1800.0 1900.0 2500.0 2700.0 2900.0 3300.0
+1700.0 1800.0 2500.0 2700.0 3000.0 3300.0
+1800.0 2200.0 2700.0 2800.0 3200.0 3300.0
+1400.0 1600.0 2400.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2300.0 2700.0 2900.0 3100.0
+1400.0 1600.0 2400.0 2700.0 2900.0 3200.0
+1700.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1400.0 1700.0 2400.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2400.0 2700.0 3000.0 3300.0
+1400.0 1700.0 1800.0 2500.0 3000.0 3100.0
+1300.0 1700.0 1900.0 2300.0 3000.0 3100.0
+1400.0 1800.0 1900.0 2400.0 3000.0 3100.0
+1900.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1200.0 1700.0 2200.0 2300.0 2900.0 3100.0
+1300.0 1700.0 2200.0 2400.0 2800.0 3100.0
+1400.0 1700.0 2200.0 2300.0 2800.0 3100.0
+1500.0 1700.0 2200.0 2300.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2300.0 2900.0 3200.0
+1500.0 1700.0 2000.0 2200.0 2900.0 3100.0
+1500.0 1700.0 1900.0 2200.0 3000.0 3200.0
+1500.0 1700.0 1900.0 2300.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2300.0 3100.0 3200.0
+1600.0 1800.0 2300.0 2600.0 3000.0 3100.0
+2000.0 2500.0 2700.0 2900.0 3200.0 3300.0
+2300.0 2500.0 2800.0 3100.0 3200.0 3300.0
+2300.0 2500.0 2600.0 2900.0 3200.0 3300.0
+1500.0 1700.0 2000.0 2400.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2200.0 3100.0 3300.0
+1600.0 1700.0 1800.0 2100.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2500.0 3000.0 3100.0
+1200.0 1800.0 2300.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2300.0 2400.0 2800.0 3200.0
+1400.0 1700.0 2300.0 2400.0 2900.0 3300.0
+1500.0 2000.0 2500.0 2600.0 2800.0 3100.0
+1800.0 2000.0 2200.0 2600.0 3000.0 3200.0
+1400.0 1700.0 1900.0 2100.0 3000.0 3100.0
+1300.0 1600.0 2300.0 2400.0 2900.0 3100.0
+1400.0 1700.0 2300.0 2500.0 3000.0 3200.0
+1500.0 1700.0 2300.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1600.0 1800.0 2000.0 2600.0 2900.0 3100.0
+1500.0 1700.0 1900.0 2600.0 2900.0 3100.0
+1400.0 1600.0 1700.0 2200.0 3100.0 3200.0
+1300.0 1500.0 1700.0 2100.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2700.0 3100.0 3300.0
+1400.0 1700.0 1900.0 2200.0 3000.0 3100.0
+1400.0 1800.0 2000.0 2200.0 3000.0 3100.0
+2100.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1500.0 1900.0 2300.0 2500.0 3000.0 3100.0
+1500.0 1900.0 2200.0 2500.0 2900.0 3100.0
+1500.0 1800.0 2100.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2300.0 2600.0 2800.0 3200.0
+1500.0 1700.0 2300.0 2500.0 3000.0 3100.0
+1400.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1200.0 1500.0 2600.0 2700.0 2900.0 3000.0
+1300.0 1600.0 2500.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2500.0 2600.0 3000.0 3200.0
+1400.0 1700.0 2500.0 2600.0 3000.0 3200.0
+1500.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2400.0 2600.0 2900.0 3200.0
+1400.0 1600.0 2400.0 2700.0 3000.0 3300.0
+1400.0 1500.0 2200.0 2600.0 2900.0 3200.0
+1300.0 1700.0 2400.0 2600.0 3000.0 3300.0
+1800.0 2000.0 2500.0 2600.0 3100.0 3400.0
+1100.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1100.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1100.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1000.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1100.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2500.0 2900.0 3300.0
+1700.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1300.0 1700.0 2100.0 2300.0 3000.0 3200.0
+1300.0 1600.0 2000.0 2200.0 3000.0 3100.0
+1300.0 1600.0 1900.0 2100.0 3000.0 3100.0
+1500.0 1700.0 2400.0 2600.0 2900.0 3100.0
+1500.0 1900.0 2600.0 2700.0 3100.0 3200.0
+2100.0 2400.0 2900.0 3100.0 3300.0 3400.0
+2000.0 2500.0 2900.0 3100.0 3400.0 3500.0
+2000.0 2500.0 2700.0 3000.0 3300.0 3400.0
+1600.0 1900.0 2600.0 2700.0 3100.0 3300.0
+1600.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1100.0 1500.0 1600.0 2200.0 2900.0 3000.0
+1200.0 1500.0 1600.0 2100.0 3000.0 3100.0
+2300.0 2500.0 2900.0 3100.0 3400.0 3500.0
+1500.0 1900.0 2300.0 2400.0 2900.0 3200.0
+1500.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1500.0 1900.0 2400.0 2800.0 3200.0 3300.0
+1100.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1200.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1700.0 2400.0 2500.0 3100.0 3200.0
+1600.0 2100.0 2300.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1200.0 1800.0 2100.0 2300.0 3100.0 3200.0
+2100.0 2200.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2300.0 2600.0 2900.0 3200.0 3400.0
+2100.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2600.0 2700.0 3100.0 3300.0
+2100.0 2400.0 2600.0 3000.0 3300.0 3400.0
+1400.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1500.0 1700.0 1900.0 2400.0 2900.0 3000.0
+1500.0 1600.0 1800.0 2300.0 3100.0 3200.0
+1500.0 1700.0 1800.0 2300.0 3100.0 3200.0
+2100.0 2500.0 2700.0 3000.0 3400.0 3500.0
+2000.0 2400.0 2700.0 2900.0 3400.0 3500.0
+1400.0 1800.0 1900.0 2600.0 3100.0 3200.0
+1400.0 1800.0 2100.0 2300.0 3200.0 3300.0
+1600.0 1800.0 2300.0 2500.0 3000.0 3100.0
+1400.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1400.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1700.0 1800.0 2500.0 2800.0 3100.0 3300.0
+1400.0 1800.0 2400.0 2500.0 2900.0 3300.0
+1400.0 2000.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1600.0 2400.0 2600.0 3200.0 3300.0
+1900.0 2400.0 2900.0 3100.0 3400.0 3500.0
+2000.0 2400.0 2900.0 3100.0 3400.0 3500.0
+900.0 1800.0 2500.0 2600.0 3200.0 3300.0
+900.0 1800.0 2600.0 2700.0 3200.0 3300.0
+1000.0 1700.0 2800.0 2900.0 3200.0 3300.0
+1500.0 1600.0 2200.0 2600.0 2900.0 3200.0
+1600.0 1800.0 2100.0 2500.0 2800.0 3000.0
+1800.0 1900.0 2400.0 2600.0 2900.0 3100.0
+1900.0 2100.0 2600.0 2900.0 3100.0 3300.0
+1800.0 1900.0 2600.0 2800.0 3000.0 3200.0
+1900.0 2100.0 2500.0 2900.0 3200.0 3400.0
+1300.0 1500.0 2400.0 2700.0 2900.0 3100.0
+1300.0 1600.0 2500.0 2600.0 2900.0 3100.0
+1400.0 1600.0 2400.0 2600.0 2900.0 3100.0
+1600.0 1700.0 2500.0 2800.0 2900.0 3200.0
+1700.0 2000.0 2600.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2700.0 2800.0 3200.0 3400.0
+2000.0 2100.0 2700.0 2800.0 3100.0 3300.0
+2000.0 2100.0 2600.0 2800.0 3100.0 3200.0
+1700.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2100.0 2300.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1300.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1300.0 1900.0 2300.0 2500.0 3200.0 3300.0
+2000.0 2300.0 2600.0 2700.0 3000.0 3300.0
+1800.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1800.0 2500.0 2700.0 3100.0 3300.0
+1200.0 1500.0 2500.0 2900.0 3100.0 3200.0
+1400.0 1600.0 2500.0 2700.0 2900.0 3100.0
+2100.0 2400.0 2700.0 2800.0 3100.0 3300.0
+1600.0 2100.0 2400.0 2800.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2600.0 3100.0 3200.0
+1300.0 1500.0 2300.0 2600.0 3100.0 3300.0
+2000.0 2200.0 2700.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2400.0 2700.0 3000.0 3400.0 3500.0
+1900.0 2400.0 2800.0 3000.0 3400.0 3500.0
+2000.0 2100.0 2600.0 2800.0 3000.0 3300.0
+2100.0 2200.0 2700.0 2800.0 3000.0 3300.0
+1500.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1300.0 2000.0 2200.0 2500.0 3000.0 3100.0
+1800.0 2100.0 2300.0 2500.0 3100.0 3300.0
+1500.0 1800.0 2500.0 2800.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2600.0 3200.0 3400.0
+1400.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1100.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1000.0 1900.0 2400.0 2500.0 3100.0 3400.0
+1600.0 1800.0 2200.0 2300.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2400.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2300.0 3200.0 3400.0
+1400.0 1800.0 2300.0 2700.0 3000.0 3300.0
+1400.0 1800.0 2100.0 2300.0 2800.0 3200.0
+1400.0 1800.0 2100.0 2500.0 2900.0 3200.0
+1200.0 1600.0 1700.0 2100.0 3000.0 3100.0
+1200.0 1600.0 1900.0 2400.0 3000.0 3200.0
+1100.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1100.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1200.0 1400.0 2400.0 2600.0 2900.0 3200.0
+1300.0 1400.0 2300.0 2400.0 2800.0 3300.0
+1300.0 1500.0 2300.0 2400.0 2900.0 3200.0
+1300.0 1600.0 2400.0 2500.0 2800.0 3200.0
+1300.0 1600.0 2300.0 2500.0 2900.0 3200.0
+1300.0 1500.0 1600.0 2100.0 2800.0 2900.0
+1500.0 1800.0 2500.0 2700.0 3200.0 3400.0
+1400.0 1700.0 2300.0 2500.0 2900.0 3100.0
+1300.0 1700.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1600.0 2500.0 2600.0 3100.0 3400.0
+1100.0 1700.0 2500.0 2600.0 3100.0 3400.0
+1400.0 1800.0 2200.0 2300.0 2600.0 3000.0
+1300.0 1800.0 2200.0 2300.0 2500.0 3000.0
+1400.0 1800.0 2300.0 2700.0 3000.0 3200.0
+1300.0 1500.0 2300.0 2400.0 2900.0 3100.0
+1300.0 1600.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1600.0 2400.0 2600.0 3100.0 3300.0
+1200.0 1500.0 2600.0 2700.0 3100.0 3300.0
+1200.0 1500.0 2500.0 2700.0 2900.0 3200.0
+1400.0 1600.0 2300.0 2500.0 3100.0 3300.0
+1400.0 1600.0 2000.0 2200.0 2900.0 3000.0
+1300.0 1500.0 1800.0 1900.0 2800.0 2900.0
+1200.0 1600.0 1700.0 2200.0 2900.0 3000.0
+1300.0 1700.0 1800.0 2100.0 2900.0 3000.0
+1500.0 1700.0 2100.0 2400.0 2600.0 3100.0
+1500.0 2000.0 2500.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2200.0 2600.0 2900.0 3200.0
+1700.0 2200.0 2600.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2400.0 2500.0 3000.0 3400.0
+1900.0 2000.0 2100.0 2300.0 3300.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1500.0 1800.0 2200.0 2300.0 3100.0 3400.0
+1900.0 2300.0 2500.0 3000.0 3300.0 3400.0
+1500.0 1700.0 2100.0 2300.0 3000.0 3300.0
+1700.0 1900.0 2200.0 2400.0 2700.0 3200.0
+1800.0 1900.0 2200.0 2300.0 2700.0 3100.0
+1700.0 1900.0 2100.0 2300.0 2700.0 3100.0
+1700.0 2000.0 2600.0 2800.0 3100.0 3300.0
+1200.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1300.0 1900.0 2200.0 2500.0 3000.0 3100.0
+1500.0 1600.0 2300.0 2500.0 3000.0 3200.0
+1400.0 1500.0 2300.0 2500.0 3000.0 3200.0
+1300.0 1700.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2500.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2300.0 3100.0 3400.0
+1400.0 1600.0 2100.0 2300.0 2900.0 3000.0
+1400.0 1600.0 2000.0 2200.0 2800.0 2900.0
+1400.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1400.0 1800.0 2100.0 2400.0 3100.0 3300.0
+1400.0 1700.0 2000.0 2400.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2500.0 2800.0 3100.0
+1900.0 2100.0 2300.0 2500.0 2900.0 3100.0
+1400.0 1600.0 2100.0 2400.0 3000.0 3200.0
+1400.0 1600.0 2000.0 2300.0 3000.0 3200.0
+1600.0 2000.0 2200.0 2600.0 2900.0 3200.0
+1600.0 2000.0 2200.0 2600.0 3000.0 3300.0
+1300.0 1900.0 2200.0 2400.0 3000.0 3200.0
+1700.0 2000.0 2300.0 2700.0 3000.0 3300.0
+1000.0 1600.0 2600.0 2700.0 3200.0 3300.0
+1100.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1900.0 2100.0 2300.0 2500.0 3100.0 3200.0
+1400.0 1700.0 2200.0 2500.0 3300.0 3400.0
+1400.0 1900.0 2200.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2700.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2400.0 3000.0 3200.0
+1700.0 1800.0 2100.0 2400.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2900.0 3300.0
+1800.0 1900.0 2200.0 2500.0 2900.0 3300.0
+1800.0 1900.0 2200.0 2500.0 2900.0 3200.0
+1700.0 1900.0 2200.0 2400.0 3000.0 3300.0
+1700.0 1900.0 2200.0 2400.0 2600.0 3000.0
+1500.0 1800.0 2500.0 2600.0 3200.0 3300.0
+1600.0 1700.0 2500.0 2600.0 3000.0 3200.0
+1600.0 1700.0 2400.0 2500.0 3100.0 3200.0
+1600.0 1700.0 2500.0 2600.0 3100.0 3200.0
+1600.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1800.0 1900.0 2500.0 2600.0 3000.0 3200.0
+1900.0 2400.0 2700.0 3000.0 3300.0 3500.0
+1900.0 2400.0 2700.0 3100.0 3300.0 3400.0
+2000.0 2400.0 2600.0 3000.0 3300.0 3400.0
+1800.0 2500.0 2700.0 2900.0 3300.0 3400.0
+1800.0 2400.0 2700.0 2900.0 3400.0 3500.0
+1900.0 2400.0 2700.0 3000.0 3200.0 3300.0
+1600.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1800.0 2000.0 2500.0 3100.0 3200.0
+1500.0 1800.0 2300.0 2400.0 3000.0 3100.0
+2100.0 2500.0 2700.0 2900.0 3100.0 3300.0
+1800.0 2000.0 2200.0 2500.0 2800.0 3100.0
+1400.0 1700.0 1900.0 2300.0 2800.0 2900.0
+1800.0 2000.0 2300.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1700.0 1800.0 2400.0 2800.0 3100.0 3300.0
+1500.0 1700.0 2500.0 2600.0 2900.0 3300.0
+1400.0 1500.0 2300.0 2500.0 2900.0 3300.0
+1500.0 1700.0 2200.0 2500.0 2900.0 3200.0
+1700.0 1900.0 2100.0 2300.0 3100.0 3300.0
+1400.0 1800.0 2200.0 2400.0 2700.0 3100.0
+1300.0 1500.0 1700.0 1900.0 2800.0 3000.0
+1300.0 1500.0 1700.0 1900.0 2900.0 3000.0
+1100.0 1600.0 2300.0 2500.0 3100.0 3200.0
+1000.0 1600.0 2300.0 2500.0 3200.0 3300.0
+1000.0 1700.0 2300.0 2400.0 3200.0 3300.0
+900.0 1700.0 2300.0 2400.0 3200.0 3300.0
+900.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1200.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1200.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1300.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1500.0 1700.0 2200.0 2300.0 3000.0 3200.0
+1500.0 1600.0 2200.0 2300.0 2900.0 3200.0
+1600.0 2000.0 2300.0 2400.0 3100.0 3300.0
+1600.0 2100.0 2300.0 2400.0 2700.0 3300.0
+1600.0 1800.0 2100.0 2300.0 2900.0 3000.0
+1400.0 1600.0 1700.0 2300.0 2900.0 3000.0
+1600.0 1800.0 2100.0 2300.0 3000.0 3100.0
+1600.0 1700.0 2000.0 2200.0 3000.0 3100.0
+1500.0 1600.0 2300.0 2400.0 2900.0 3100.0
+1500.0 1600.0 2400.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2600.0 2700.0 3100.0 3200.0
+1500.0 1600.0 1900.0 2300.0 2900.0 3100.0
+1500.0 1700.0 2300.0 2700.0 3100.0 3200.0
+1500.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1000.0 1500.0 2400.0 2500.0 3100.0 3300.0
+1200.0 1400.0 2400.0 2500.0 2900.0 3300.0
+1300.0 1700.0 2200.0 2400.0 2900.0 3000.0
+1200.0 2000.0 2400.0 2500.0 3000.0 3200.0
+1200.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1800.0 2400.0 2500.0 3100.0 3400.0
+1500.0 1800.0 2300.0 2400.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1600.0 1900.0 2100.0 2400.0 2900.0 3200.0
+1400.0 1600.0 2200.0 2400.0 2900.0 3100.0
+1500.0 1700.0 2200.0 2400.0 3000.0 3100.0
+1400.0 1600.0 2300.0 2400.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2300.0 2900.0 3200.0
+1600.0 1700.0 2000.0 2200.0 3000.0 3200.0
+1600.0 1800.0 2100.0 2400.0 2900.0 3200.0
+1600.0 1700.0 2100.0 2300.0 2900.0 3200.0
+1400.0 1600.0 2100.0 2400.0 3200.0 3300.0
+1200.0 1600.0 2100.0 2300.0 3100.0 3200.0
+1600.0 2100.0 2300.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2300.0 2400.0 2900.0 3200.0
+1400.0 1500.0 2100.0 2400.0 2700.0 3100.0
+1200.0 1400.0 2100.0 2200.0 3000.0 3300.0
+1300.0 1800.0 2200.0 2300.0 2800.0 3200.0
+1300.0 1700.0 2200.0 2300.0 2800.0 3300.0
+1400.0 1800.0 2200.0 2300.0 2800.0 3200.0
+1800.0 2100.0 2500.0 3000.0 3200.0 3400.0
+1700.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2300.0 3100.0 3300.0
+1400.0 1900.0 2200.0 2600.0 3100.0 3300.0
+1600.0 1900.0 2500.0 2900.0 3200.0 3300.0
+1400.0 1900.0 2400.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2200.0 2300.0 2900.0 3100.0
+1600.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1800.0 2000.0 2400.0 2900.0 3100.0 3200.0
+1900.0 2000.0 2500.0 2900.0 3100.0 3300.0
+1500.0 1600.0 2100.0 2200.0 3000.0 3300.0
+1500.0 1600.0 2100.0 2300.0 2900.0 3200.0
+1300.0 1500.0 2200.0 2300.0 2800.0 3100.0
+1100.0 1900.0 2500.0 2700.0 3100.0 3200.0
+1300.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1100.0 1700.0 2200.0 2600.0 3000.0 3200.0
+1300.0 1600.0 1900.0 2100.0 3000.0 3200.0
+1300.0 1500.0 1800.0 1900.0 3000.0 3100.0
+1100.0 1400.0 2500.0 2600.0 3000.0 3300.0
+1300.0 1500.0 2400.0 2600.0 2900.0 3300.0
+1700.0 1900.0 2300.0 2400.0 3000.0 3300.0
+1600.0 1800.0 2100.0 2400.0 2800.0 3100.0
+1500.0 1700.0 2000.0 2500.0 2800.0 3000.0
+1400.0 1700.0 2200.0 2500.0 2900.0 3100.0
+1300.0 1500.0 2300.0 2600.0 3000.0 3300.0
+1000.0 1600.0 2200.0 2500.0 3000.0 3100.0
+1000.0 1500.0 2500.0 2600.0 3100.0 3300.0
+1000.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1000.0 1700.0 2600.0 2700.0 3200.0 3300.0
+2000.0 2400.0 2800.0 3000.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2700.0 3100.0 3200.0
+1800.0 1900.0 2400.0 2700.0 3000.0 3300.0
+1700.0 2100.0 2300.0 2500.0 3000.0 3200.0
+1200.0 1400.0 1500.0 2100.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2200.0 3000.0 3200.0
+1600.0 1800.0 1900.0 2200.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2300.0 3000.0 3200.0
+1900.0 2000.0 2400.0 2500.0 3000.0 3300.0
+1800.0 1900.0 2400.0 2500.0 2900.0 3300.0
+1800.0 1900.0 2300.0 2500.0 3100.0 3400.0
+1800.0 2000.0 2400.0 2600.0 3200.0 3400.0
+1400.0 1600.0 2100.0 2200.0 3100.0 3400.0
+1500.0 1700.0 1900.0 2500.0 3000.0 3200.0
+1300.0 1400.0 2200.0 2500.0 2900.0 3200.0
+1300.0 1700.0 2100.0 2600.0 3100.0 3300.0
+1900.0 2100.0 2400.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2300.0 2500.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2600.0 3000.0 3200.0
+1400.0 1600.0 1700.0 2000.0 3000.0 3100.0
+1300.0 1500.0 1600.0 2000.0 3000.0 3100.0
+1400.0 1600.0 2100.0 2200.0 2700.0 3200.0
+1300.0 1600.0 1700.0 2300.0 3100.0 3300.0
+1500.0 1700.0 2200.0 2500.0 3100.0 3200.0
+2100.0 2200.0 2600.0 2900.0 3200.0 3400.0
+2100.0 2300.0 2700.0 3000.0 3300.0 3400.0
+1900.0 2300.0 2800.0 3100.0 3300.0 3500.0
+1900.0 2300.0 2700.0 3100.0 3400.0 3500.0
+1900.0 2300.0 2700.0 3100.0 3300.0 3400.0
+1400.0 1800.0 2200.0 2300.0 2900.0 3200.0
+1400.0 1600.0 2100.0 2300.0 2800.0 3300.0
+1300.0 1700.0 2200.0 2300.0 2800.0 3200.0
+1300.0 1600.0 2200.0 2300.0 2900.0 3300.0
+1400.0 1800.0 2200.0 2600.0 3100.0 3300.0
+1700.0 2100.0 2400.0 2700.0 3000.0 3200.0
+1300.0 1800.0 2200.0 2500.0 3000.0 3300.0
+1900.0 2000.0 2500.0 2600.0 2900.0 3300.0
+2100.0 2200.0 2400.0 2600.0 2900.0 3200.0
+2100.0 2200.0 2400.0 2600.0 3000.0 3200.0
+2000.0 2100.0 2400.0 2500.0 3000.0 3200.0
+1800.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1400.0 2000.0 2300.0 2400.0 3000.0 3100.0
+1300.0 1600.0 2100.0 2300.0 2700.0 3200.0
+1200.0 1800.0 2200.0 2400.0 3200.0 3400.0
+1200.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1200.0 1900.0 2300.0 2400.0 3100.0 3400.0
+1700.0 1800.0 2100.0 2300.0 2800.0 3200.0
+1500.0 1600.0 2200.0 2300.0 2900.0 3300.0
+1500.0 1600.0 2100.0 2300.0 2800.0 3200.0
+1500.0 1600.0 2000.0 2200.0 2700.0 3200.0
+1400.0 1900.0 2200.0 2600.0 3200.0 3300.0
+1400.0 1600.0 2100.0 2200.0 2800.0 3200.0
+1900.0 2100.0 2300.0 2600.0 3100.0 3300.0
+2000.0 2300.0 2600.0 2800.0 3200.0 3400.0
+1700.0 1800.0 2300.0 2500.0 2700.0 3200.0
+1700.0 1800.0 2300.0 2500.0 2700.0 3100.0
+1800.0 1900.0 2400.0 2500.0 2700.0 3100.0
+1700.0 1800.0 2400.0 2500.0 2800.0 3200.0
+1600.0 1800.0 2500.0 2600.0 2900.0 3100.0
+1500.0 1800.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1500.0 2100.0 2300.0 2900.0 3300.0
+1400.0 1600.0 2100.0 2300.0 3000.0 3300.0
+1600.0 1700.0 2200.0 2500.0 3100.0 3400.0
+1600.0 2000.0 2200.0 2400.0 2900.0 3100.0
+2000.0 2200.0 2600.0 2900.0 3200.0 3400.0
+1200.0 1400.0 2200.0 2300.0 3100.0 3300.0
+1300.0 1500.0 2200.0 2300.0 3100.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3100.0 3400.0
+1800.0 1900.0 2200.0 2300.0 2900.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3100.0 3400.0
+1600.0 1700.0 2000.0 2100.0 2700.0 3100.0
+1700.0 1900.0 2200.0 2300.0 2900.0 3200.0
+2200.0 2500.0 2700.0 2800.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2300.0 2900.0 3100.0
+1400.0 1500.0 1600.0 2000.0 3000.0 3200.0
+1500.0 1700.0 1900.0 2400.0 3000.0 3200.0
+1900.0 2200.0 2500.0 2900.0 3200.0 3300.0
+1900.0 2400.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2100.0 2200.0 2400.0 3000.0 3300.0
+1400.0 1600.0 1700.0 2300.0 3200.0 3300.0
+1400.0 1600.0 1900.0 2500.0 3200.0 3300.0
+1700.0 2100.0 2700.0 3000.0 3300.0 3400.0
+1400.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2700.0 3000.0 3200.0
+1400.0 2000.0 2200.0 2500.0 3100.0 3300.0
+1600.0 2100.0 2400.0 2900.0 3200.0 3400.0
+1400.0 1600.0 1800.0 2600.0 3300.0 3400.0
+1400.0 1500.0 1700.0 2200.0 3200.0 3300.0
+1400.0 1500.0 1700.0 2100.0 3100.0 3200.0
+1300.0 1500.0 2200.0 2400.0 2800.0 3100.0
+1300.0 1600.0 1800.0 2400.0 3000.0 3100.0
+1400.0 1600.0 2000.0 2200.0 3000.0 3300.0
+1500.0 1600.0 2100.0 2400.0 3100.0 3300.0
+1500.0 1700.0 2100.0 2300.0 2700.0 3100.0
+1500.0 1600.0 2000.0 2200.0 2600.0 3100.0
+1400.0 1500.0 2000.0 2300.0 3100.0 3300.0
+1400.0 1500.0 2000.0 2200.0 3100.0 3300.0
+1600.0 1800.0 2200.0 2300.0 3000.0 3200.0
+1400.0 1700.0 2100.0 2500.0 2900.0 3100.0
+1400.0 1800.0 2200.0 2400.0 2900.0 3000.0
+1500.0 1800.0 2300.0 2500.0 3000.0 3200.0
+2000.0 2300.0 2800.0 3100.0 3400.0 3500.0
+2000.0 2500.0 2800.0 2900.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1600.0 1900.0 2300.0 2700.0 3200.0 3400.0
+2000.0 2400.0 2800.0 2900.0 3300.0 3400.0
+1200.0 1400.0 2000.0 2200.0 3200.0 3400.0
+1200.0 1600.0 2400.0 2500.0 2900.0 3200.0
+1500.0 1600.0 2300.0 2400.0 2800.0 3200.0
+1100.0 1600.0 2200.0 2300.0 3300.0 3400.0
+1300.0 1600.0 2200.0 2400.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2400.0 2700.0 3200.0
+1400.0 1700.0 2300.0 2500.0 2700.0 3100.0
+1500.0 1700.0 2400.0 2500.0 2800.0 3100.0
+1800.0 2000.0 2200.0 2300.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2400.0 2900.0 3200.0
+1700.0 1900.0 2200.0 2400.0 2900.0 3300.0
+1300.0 1700.0 2200.0 2300.0 3200.0 3400.0
+1500.0 1600.0 2300.0 2400.0 3000.0 3400.0
+1600.0 1900.0 2400.0 2800.0 3200.0 3400.0
+1500.0 1600.0 2300.0 2400.0 2900.0 3300.0
+1600.0 1700.0 2300.0 2400.0 2800.0 3300.0
+1800.0 2000.0 2200.0 2500.0 3000.0 3300.0
+1900.0 2000.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2400.0 2600.0 3100.0 3400.0
+1600.0 1800.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2700.0 3200.0 3400.0
+1500.0 1800.0 2200.0 2500.0 3200.0 3400.0
+1200.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1900.0 2000.0 2400.0 2600.0 3100.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3000.0 3400.0
+1400.0 2000.0 2300.0 2400.0 2600.0 3100.0
+1800.0 1900.0 2100.0 2200.0 3300.0 3400.0
+1400.0 1600.0 1700.0 2300.0 3300.0 3400.0
+1400.0 1600.0 1700.0 2200.0 3300.0 3400.0
+1400.0 1600.0 1700.0 2300.0 3200.0 3400.0
+1600.0 1800.0 2000.0 2300.0 2900.0 3100.0
+1700.0 1800.0 2000.0 2300.0 2900.0 3100.0
+1600.0 1800.0 2100.0 2300.0 2800.0 3100.0
+1500.0 1700.0 2100.0 2300.0 2800.0 3100.0
+1500.0 1600.0 2100.0 2300.0 2700.0 3100.0
+1500.0 1600.0 2100.0 2200.0 2700.0 3100.0
+1400.0 1800.0 2300.0 2400.0 2800.0 3100.0
+1400.0 1600.0 2300.0 2400.0 2900.0 3300.0
+1200.0 1700.0 2200.0 2300.0 2900.0 3200.0
+1400.0 1500.0 2100.0 2400.0 3200.0 3400.0
+1700.0 2100.0 2400.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2000.0 2400.0 3000.0 3200.0
+1400.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2100.0 2500.0 2800.0 3100.0
+2000.0 2300.0 2500.0 2800.0 3000.0 3100.0
+1900.0 2400.0 2700.0 2800.0 3100.0 3200.0
+1800.0 2300.0 2700.0 2800.0 3100.0 3200.0
+1700.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1700.0 2400.0 2700.0 2800.0 3100.0 3200.0
+1600.0 2400.0 2700.0 2800.0 3100.0 3200.0
+1600.0 2000.0 2200.0 2700.0 3100.0 3200.0
+1800.0 2200.0 2600.0 2800.0 3100.0 3400.0
+1800.0 2200.0 2600.0 3000.0 3200.0 3400.0
+1800.0 2200.0 2300.0 2700.0 3200.0 3300.0
+1600.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2200.0 2500.0 2800.0 3000.0
+2000.0 2400.0 2800.0 3100.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2000.0 2600.0 3100.0
+1400.0 1600.0 1900.0 2000.0 2500.0 3100.0
+1400.0 1600.0 1800.0 2000.0 2500.0 3100.0
+1400.0 1500.0 1800.0 1900.0 2500.0 3100.0
+1400.0 1500.0 1800.0 1900.0 2600.0 3200.0
+1400.0 1500.0 1700.0 2000.0 2900.0 3200.0
+1300.0 1700.0 2100.0 2600.0 3100.0 3200.0
+1200.0 1700.0 2200.0 2500.0 3100.0 3200.0
+1800.0 2000.0 2500.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2200.0 2700.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2600.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2400.0 2700.0 3100.0
+1600.0 1900.0 2200.0 2600.0 2800.0 3100.0
+1600.0 1800.0 2100.0 2500.0 3000.0 3100.0
+1600.0 1800.0 2000.0 2200.0 2600.0 3100.0
+1200.0 1400.0 2300.0 2700.0 2800.0 3100.0
+1300.0 1600.0 2100.0 2600.0 3100.0 3300.0
+1400.0 1600.0 2100.0 2500.0 2700.0 3000.0
+1300.0 1600.0 2300.0 2600.0 3000.0 3300.0
+1300.0 1700.0 2300.0 2700.0 3000.0 3300.0
+1400.0 1600.0 2000.0 2500.0 2800.0 3000.0
+1800.0 2000.0 2200.0 2600.0 2800.0 3100.0
+1800.0 1900.0 2400.0 2600.0 2800.0 3100.0
+1500.0 1700.0 2200.0 2700.0 2900.0 3100.0
+1400.0 1700.0 2300.0 2700.0 3000.0 3100.0
+1700.0 2200.0 2500.0 2900.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2700.0 3000.0 3200.0
+1700.0 2000.0 2600.0 2700.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2500.0 3100.0 3200.0
+1500.0 2000.0 2200.0 2600.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2800.0 3200.0 3300.0
+1700.0 1900.0 2500.0 2600.0 2900.0 3200.0
+1800.0 2000.0 2400.0 2600.0 3000.0 3100.0
+1400.0 1700.0 2100.0 2500.0 2700.0 3000.0
+1500.0 1900.0 2200.0 2400.0 2800.0 3200.0
+1300.0 1500.0 2100.0 2400.0 3100.0 3300.0
+1200.0 1600.0 2200.0 2500.0 3200.0 3300.0
+1300.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1300.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2100.0 2800.0 3100.0 3200.0
+1700.0 2000.0 2200.0 2500.0 3100.0 3200.0
+1800.0 1900.0 2100.0 2300.0 2600.0 3100.0
+1500.0 1600.0 1800.0 2000.0 2500.0 3100.0
+1700.0 2000.0 2200.0 2400.0 3100.0 3300.0
+1600.0 1800.0 2000.0 2400.0 2900.0 3200.0
+1400.0 1500.0 1700.0 1900.0 3000.0 3200.0
+1600.0 1700.0 2000.0 2600.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1700.0 2200.0 2600.0 2800.0 3100.0 3200.0
+1600.0 2200.0 2500.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2200.0 2500.0 3000.0 3100.0
+1600.0 2000.0 2500.0 2800.0 3100.0 3300.0
+1700.0 2100.0 2400.0 2900.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2700.0 3000.0 3100.0
+1800.0 2000.0 2500.0 2700.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2600.0 3000.0 3100.0
+1500.0 1900.0 2100.0 2500.0 3000.0 3200.0
+1900.0 2300.0 2500.0 2600.0 2900.0 3100.0
+2000.0 2200.0 2500.0 2800.0 3300.0 3400.0
+2100.0 2300.0 2600.0 2800.0 3200.0 3400.0
+2200.0 2400.0 2800.0 2900.0 3200.0 3300.0
+2100.0 2500.0 2700.0 2900.0 3200.0 3300.0
+1800.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2500.0 2700.0 3000.0 3200.0
+1400.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1600.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2700.0 3100.0 3300.0
+1500.0 1700.0 2200.0 2700.0 3000.0 3200.0
+1500.0 1700.0 2100.0 2700.0 2900.0 3100.0
+1800.0 2300.0 2600.0 2700.0 3200.0 3300.0
+1800.0 2400.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2500.0 2700.0 2900.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2400.0 2800.0 3000.0
+1600.0 1800.0 2200.0 2400.0 2800.0 3100.0
+1900.0 2000.0 2200.0 2700.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2700.0 3100.0 3300.0
+2000.0 2200.0 2500.0 2600.0 2900.0 3100.0
+1400.0 1900.0 2400.0 2700.0 3000.0 3300.0
+1500.0 1900.0 2300.0 2700.0 3000.0 3300.0
+1300.0 1800.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2500.0 2700.0 3100.0
+1600.0 2000.0 2200.0 2600.0 2900.0 3100.0
+1700.0 2100.0 2700.0 3000.0 3200.0 3300.0
+1600.0 1800.0 2600.0 2800.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2600.0 3000.0 3300.0
+1800.0 2300.0 2600.0 2800.0 3100.0 3200.0
+1800.0 2400.0 2700.0 2800.0 3100.0 3200.0
+1700.0 2300.0 2700.0 2800.0 3100.0 3200.0
+1900.0 2200.0 2700.0 2900.0 3100.0 3300.0
+1600.0 2200.0 2500.0 2700.0 3000.0 3200.0
+1600.0 2000.0 2500.0 2700.0 3000.0 3100.0
+1800.0 2200.0 2500.0 2600.0 3100.0 3200.0
+1800.0 2500.0 2700.0 2800.0 3200.0 3300.0
+1700.0 2300.0 2600.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2000.0 2500.0 2900.0 3100.0
+1700.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1200.0 1400.0 1700.0 1800.0 2700.0 3200.0
+1500.0 1700.0 2000.0 2400.0 2700.0 3000.0
+1600.0 1800.0 2300.0 2400.0 2800.0 3100.0
+1800.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1700.0 2000.0 2400.0 2600.0 2900.0 3000.0
+1500.0 1900.0 2300.0 2600.0 2900.0 3100.0
+1500.0 1900.0 2200.0 2600.0 2900.0 3100.0
+1500.0 1900.0 2100.0 2400.0 2900.0 3100.0
+1700.0 2300.0 2500.0 2800.0 3100.0 3200.0
+1600.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1500.0 2400.0 2800.0 2900.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3000.0 3200.0
+1300.0 1900.0 2400.0 2600.0 3200.0 3300.0
+1500.0 2100.0 2300.0 2700.0 3100.0 3300.0
+1700.0 2200.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2000.0 2500.0 3000.0 3300.0
+1600.0 2000.0 2400.0 2500.0 3100.0 3300.0
+1400.0 1900.0 2300.0 2500.0 3200.0 3400.0
+1100.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1100.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1200.0 2000.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2500.0 2900.0 3000.0
+1500.0 1900.0 2200.0 2400.0 2600.0 3100.0
+1800.0 2000.0 2500.0 2600.0 2900.0 3200.0
+2000.0 2100.0 2500.0 2700.0 3100.0 3300.0
+1800.0 2100.0 2400.0 2600.0 3000.0 3400.0
+1600.0 1800.0 2200.0 2400.0 3300.0 3400.0
+1400.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1600.0 1900.0 2200.0 2700.0 3200.0 3300.0
+1500.0 1900.0 2300.0 2400.0 3000.0 3200.0
+1500.0 1900.0 2300.0 2500.0 2900.0 3200.0
+2200.0 2500.0 2900.0 3000.0 3300.0 3400.0
+1500.0 1800.0 2400.0 2700.0 3300.0 3400.0
+1400.0 1800.0 2100.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2000.0 2700.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2800.0 3100.0 3200.0
+2100.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2500.0 2900.0 3100.0
+1800.0 1900.0 2200.0 2700.0 3200.0 3300.0
+1800.0 2200.0 2800.0 3000.0 3300.0 3500.0
+1800.0 2300.0 2600.0 2900.0 3300.0 3500.0
+2100.0 2400.0 2700.0 3000.0 3300.0 3500.0
+1600.0 1800.0 2200.0 2400.0 2900.0 3300.0
+1500.0 1900.0 2500.0 2600.0 2900.0 3100.0
+1600.0 2100.0 2400.0 2600.0 2800.0 3100.0
+1500.0 1600.0 2100.0 2400.0 2900.0 3300.0
+1500.0 1700.0 2200.0 2400.0 2900.0 3300.0
+1400.0 1500.0 2300.0 2500.0 3200.0 3300.0
+1400.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2500.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2400.0 2900.0 3200.0
+1700.0 2400.0 2600.0 2900.0 3300.0 3400.0
+1600.0 1700.0 2100.0 2300.0 2700.0 3200.0
+1800.0 2300.0 2600.0 2900.0 3100.0 3300.0
+1800.0 2400.0 2600.0 2900.0 3300.0 3400.0
+1900.0 2300.0 2700.0 2900.0 3200.0 3400.0
+1400.0 1800.0 2200.0 2500.0 3300.0 3400.0
+1300.0 1900.0 2300.0 2700.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2400.0 2500.0 3000.0 3300.0
+1900.0 2300.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2700.0 2900.0 3100.0 3300.0
+1600.0 1800.0 2000.0 2500.0 2900.0 3000.0
+1800.0 2100.0 2400.0 2500.0 2900.0 3100.0
+1500.0 1700.0 2400.0 2500.0 2700.0 3000.0
+1400.0 1600.0 2200.0 2500.0 2600.0 3000.0
+1300.0 2100.0 2300.0 2800.0 3100.0 3200.0
+1300.0 2100.0 2200.0 2700.0 3100.0 3200.0
+1500.0 2000.0 2300.0 2500.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2400.0 2800.0 3200.0
+1900.0 2000.0 2300.0 2500.0 2900.0 3300.0
+1600.0 1900.0 2500.0 2800.0 3100.0 3200.0
+1400.0 2000.0 2400.0 2600.0 3000.0 3100.0
+1200.0 1900.0 2000.0 2400.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2000.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2600.0 2900.0 3000.0
+1700.0 1900.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2200.0 2800.0 3000.0 3200.0 3400.0
+2000.0 2300.0 2900.0 3100.0 3300.0 3400.0
+1500.0 2000.0 2300.0 2700.0 3300.0 3400.0
+1200.0 1700.0 2300.0 2500.0 3100.0 3300.0
+1300.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1200.0 2000.0 2200.0 2600.0 3100.0 3200.0
+2000.0 2300.0 2500.0 2900.0 3200.0 3300.0
+2200.0 2300.0 2700.0 3000.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2500.0 2800.0 3000.0
+1200.0 1800.0 2300.0 2400.0 3200.0 3300.0
+1200.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1200.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1600.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1700.0 1900.0 2400.0 2800.0 3000.0
+1500.0 1700.0 1900.0 2500.0 2800.0 3000.0
+1500.0 1800.0 2100.0 2700.0 3000.0 3200.0
+2000.0 2200.0 2700.0 3000.0 3300.0 3400.0
+2100.0 2400.0 2800.0 3000.0 3400.0 3500.0
+2000.0 2200.0 2700.0 2900.0 3200.0 3300.0
+2100.0 2500.0 2800.0 3000.0 3400.0 3500.0
+2000.0 2300.0 2600.0 2700.0 3200.0 3300.0
+1900.0 2300.0 2600.0 2700.0 3200.0 3400.0
+1500.0 1800.0 2300.0 2600.0 3000.0 3300.0
+1400.0 1900.0 2400.0 2500.0 2700.0 3000.0
+2200.0 2300.0 2700.0 2900.0 3200.0 3300.0
+2100.0 2300.0 2700.0 2800.0 3200.0 3300.0
+2000.0 2300.0 2500.0 2700.0 3300.0 3400.0
+2300.0 2500.0 2800.0 3100.0 3400.0 3500.0
+2200.0 2600.0 2800.0 3100.0 3300.0 3400.0
+2200.0 2600.0 2700.0 3000.0 3300.0 3400.0
+1900.0 2200.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2400.0 2600.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2500.0 2700.0 3000.0
+1500.0 1800.0 2200.0 2400.0 2800.0 3200.0
+1300.0 2100.0 2400.0 2700.0 3300.0 3400.0
+1200.0 1900.0 2400.0 2600.0 3100.0 3300.0
+1200.0 1500.0 2400.0 2500.0 3100.0 3400.0
+1400.0 1500.0 2400.0 2600.0 3000.0 3400.0
+1500.0 1600.0 2500.0 2600.0 3100.0 3400.0
+1600.0 2100.0 2400.0 2500.0 3100.0 3300.0
+1600.0 2200.0 2400.0 2600.0 3100.0 3300.0
+1800.0 2300.0 2600.0 2900.0 3200.0 3400.0
+2100.0 2200.0 2500.0 2700.0 2900.0 3200.0
+1700.0 2000.0 2300.0 2400.0 2700.0 3000.0
+2000.0 2200.0 2400.0 2700.0 3300.0 3400.0
+1500.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1200.0 1700.0 2200.0 2400.0 3300.0 3400.0
+1400.0 1900.0 2000.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2200.0 2600.0 3200.0 3300.0
+1200.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1100.0 2100.0 2300.0 2600.0 3300.0 3400.0
+1900.0 2100.0 2600.0 2700.0 3100.0 3300.0
+1200.0 1600.0 2100.0 2400.0 3000.0 3300.0
+1200.0 1700.0 2100.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2300.0 2600.0 3000.0
+1900.0 2200.0 2300.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2500.0 2900.0 3200.0
+1500.0 1900.0 2100.0 2500.0 2900.0 3100.0
+1300.0 1900.0 2100.0 2400.0 3000.0 3100.0
+1800.0 2400.0 2800.0 3000.0 3400.0 3500.0
+1600.0 2000.0 2300.0 2800.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2400.0 3000.0 3300.0
+1400.0 2100.0 2300.0 2500.0 3200.0 3400.0
+1700.0 2000.0 2500.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1700.0 1900.0 2800.0 3100.0 3200.0
+1300.0 1600.0 1800.0 2600.0 3100.0 3200.0
+1300.0 1500.0 1600.0 2400.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2200.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2500.0 2900.0 3200.0
+1500.0 1900.0 2100.0 2400.0 3200.0 3300.0
+1800.0 2000.0 2100.0 2500.0 3200.0 3300.0
+1400.0 2000.0 2400.0 2500.0 3100.0 3200.0
+1200.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1100.0 1800.0 2300.0 2600.0 3100.0 3300.0
+1400.0 1700.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2600.0 3100.0 3200.0
+1500.0 1800.0 2500.0 2700.0 3100.0 3300.0
+1500.0 1900.0 2500.0 2700.0 3000.0 3200.0
+1600.0 1900.0 2500.0 2800.0 3200.0 3400.0
+1600.0 1700.0 2400.0 2700.0 2900.0 3200.0
+1500.0 1600.0 2100.0 2600.0 2800.0 3100.0
+1300.0 1500.0 1700.0 1900.0 3000.0 3100.0
+1400.0 1500.0 2200.0 2400.0 3100.0 3300.0
+1100.0 1400.0 2200.0 2500.0 3200.0 3300.0
+1200.0 1500.0 1700.0 1900.0 3200.0 3300.0
+1500.0 1700.0 2300.0 2700.0 3000.0 3300.0
+1900.0 2200.0 2700.0 2800.0 3100.0 3400.0
+1900.0 2200.0 2700.0 2900.0 3300.0 3500.0
+1400.0 1900.0 2300.0 2400.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2600.0 2900.0 3200.0
+1800.0 2100.0 2700.0 2800.0 3200.0 3300.0
+1500.0 1700.0 2400.0 2800.0 3100.0 3300.0
+1700.0 1900.0 2700.0 2800.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2800.0 3100.0 3400.0
+1700.0 2200.0 2700.0 2900.0 3200.0 3400.0
+1900.0 2100.0 2400.0 2800.0 3200.0 3400.0
+1800.0 2100.0 2300.0 2600.0 3000.0 3300.0
+1800.0 2000.0 2200.0 2500.0 3100.0 3300.0
+1400.0 1600.0 2300.0 2400.0 3200.0 3300.0
+1600.0 1800.0 2300.0 2400.0 2900.0 3100.0
+1800.0 2200.0 2700.0 2800.0 3100.0 3300.0
+1800.0 2100.0 2700.0 2800.0 3000.0 3300.0
+1800.0 2100.0 2700.0 2800.0 3100.0 3300.0
+1500.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1200.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1000.0 1400.0 2300.0 2400.0 3200.0 3300.0
+1100.0 1500.0 2200.0 2400.0 3200.0 3300.0
+1200.0 1500.0 2100.0 2200.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2600.0 3200.0 3400.0
+1100.0 1500.0 2100.0 2200.0 3200.0 3300.0
+1500.0 2000.0 2600.0 2800.0 3200.0 3400.0
+1400.0 1600.0 2500.0 2800.0 3000.0 3300.0
+1500.0 1600.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2600.0 2800.0 3000.0 3300.0
+1100.0 1900.0 2200.0 2400.0 3100.0 3300.0
+1000.0 1800.0 2200.0 2400.0 3200.0 3300.0
+1000.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1600.0 1800.0 2000.0 3200.0 3300.0
+1300.0 1500.0 1800.0 1900.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2600.0 3100.0 3400.0
+1500.0 1600.0 2100.0 2600.0 2800.0 3200.0
+1500.0 1600.0 2200.0 2600.0 2800.0 3000.0
+1600.0 1700.0 2100.0 2500.0 2900.0 3100.0
+1500.0 1600.0 2100.0 2500.0 2800.0 3200.0
+1500.0 1600.0 2100.0 2500.0 2700.0 3100.0
+1500.0 1600.0 2100.0 2400.0 2800.0 3100.0
+1500.0 1700.0 2200.0 2400.0 2800.0 3100.0
+2000.0 2300.0 2600.0 2700.0 3200.0 3400.0
+1600.0 1800.0 2100.0 2600.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2700.0 3100.0 3300.0
+1300.0 1800.0 2400.0 2600.0 3100.0 3300.0
+1300.0 1500.0 2400.0 2700.0 3000.0 3300.0
+1500.0 1600.0 1900.0 2600.0 2900.0 3000.0
+1800.0 1900.0 2200.0 2700.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2700.0 3000.0 3300.0
+1800.0 1900.0 2400.0 2700.0 2900.0 3300.0
+1900.0 2000.0 2600.0 2700.0 3000.0 3200.0
+1900.0 2200.0 2700.0 2800.0 3000.0 3200.0
+1500.0 1600.0 2100.0 2500.0 2800.0 3100.0
+1100.0 1300.0 2400.0 2600.0 2800.0 3200.0
+1200.0 1500.0 2300.0 2600.0 3100.0 3300.0
+1200.0 1600.0 1800.0 2000.0 3200.0 3300.0
+1400.0 1600.0 1900.0 2000.0 3200.0 3300.0
+1300.0 1500.0 1700.0 1900.0 3200.0 3300.0
+2000.0 2200.0 2700.0 2800.0 3200.0 3400.0
+1500.0 1600.0 2400.0 2500.0 2900.0 3300.0
+1100.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1500.0 1600.0 2100.0 2700.0 2900.0 3000.0
+1500.0 1900.0 2300.0 2600.0 2900.0 3000.0
+1600.0 2000.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1600.0 1800.0 2000.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2500.0 3000.0 3300.0
+1900.0 2100.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2400.0 2700.0 2800.0 3200.0 3400.0
+1900.0 2500.0 2700.0 2800.0 3300.0 3400.0
+2000.0 2500.0 2800.0 2900.0 3300.0 3500.0
+2100.0 2600.0 2800.0 3000.0 3400.0 3500.0
+1500.0 1600.0 2300.0 2600.0 2900.0 3300.0
+1600.0 2100.0 2600.0 2800.0 3200.0 3300.0
+1300.0 1500.0 2300.0 2700.0 3000.0 3300.0
+1400.0 1800.0 2300.0 2500.0 2700.0 3100.0
+1400.0 1600.0 2400.0 2700.0 3200.0 3300.0
+1400.0 1500.0 2300.0 2600.0 3200.0 3300.0
+1400.0 1600.0 2200.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2100.0 2300.0 3200.0 3400.0
+2100.0 2400.0 2700.0 2800.0 3100.0 3400.0
+2100.0 2400.0 2700.0 2800.0 3200.0 3400.0
+1600.0 1800.0 2600.0 2700.0 3000.0 3400.0
+1500.0 1700.0 2600.0 2700.0 2900.0 3300.0
+1600.0 1800.0 2600.0 2700.0 3000.0 3200.0
+1900.0 2500.0 2700.0 3000.0 3400.0 3500.0
+2000.0 2500.0 2600.0 3100.0 3300.0 3400.0
+2100.0 2300.0 2700.0 3000.0 3200.0 3400.0
+1600.0 1700.0 2100.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2400.0 3200.0 3300.0
+1600.0 1700.0 2000.0 2500.0 3200.0 3300.0
+2200.0 2500.0 2700.0 2900.0 3300.0 3400.0
+1200.0 1400.0 2100.0 2500.0 3000.0 3100.0
+1400.0 1700.0 2200.0 2400.0 3100.0 3300.0
+1300.0 1700.0 2000.0 2200.0 3100.0 3200.0
+1200.0 1600.0 1700.0 2100.0 3100.0 3200.0
+1800.0 2100.0 2700.0 2900.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2800.0 2900.0 3100.0
+1900.0 2000.0 2300.0 2700.0 2900.0 3200.0
+2000.0 2100.0 2400.0 2700.0 3000.0 3200.0
+1800.0 1900.0 2400.0 2700.0 3100.0 3400.0
+1700.0 1800.0 2500.0 2800.0 3000.0 3300.0
+2200.0 2600.0 2800.0 2900.0 3300.0 3400.0
+1500.0 1700.0 2200.0 2500.0 3200.0 3300.0
+1300.0 1600.0 2200.0 2500.0 3100.0 3200.0
+1700.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1700.0 1900.0 2400.0 2800.0 3000.0 3200.0
+1300.0 1800.0 2200.0 2600.0 3000.0 3300.0
+1200.0 1500.0 2300.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2400.0 3100.0 3400.0
+1300.0 1700.0 2200.0 2300.0 3100.0 3300.0
+1500.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1500.0 1600.0 2400.0 2600.0 3200.0 3300.0
+1600.0 1700.0 2400.0 2700.0 3100.0 3400.0
+1600.0 1700.0 2300.0 2800.0 3000.0 3300.0
+1300.0 1700.0 2300.0 2600.0 2700.0 2900.0
+1500.0 1600.0 2200.0 2600.0 2800.0 3200.0
+1300.0 1700.0 2200.0 2400.0 3000.0 3200.0
+1400.0 1900.0 2300.0 2600.0 2900.0 3300.0
+1200.0 1400.0 2500.0 2600.0 3100.0 3400.0
+1500.0 1600.0 2200.0 2500.0 2700.0 3200.0
+1600.0 1700.0 2300.0 2500.0 2700.0 3300.0
+1100.0 1300.0 2200.0 2700.0 3000.0 3200.0
+1200.0 1300.0 2000.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2700.0 2900.0 3100.0 3300.0
+1800.0 1900.0 2400.0 2800.0 3000.0 3300.0
+1900.0 2000.0 2400.0 2800.0 3000.0 3300.0
+2000.0 2100.0 2400.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2600.0 2700.0 3100.0
+1500.0 1700.0 2100.0 2500.0 2700.0 2900.0
+1400.0 1800.0 2400.0 2600.0 2800.0 3200.0
+2000.0 2100.0 2500.0 2900.0 3100.0 3300.0
+2000.0 2100.0 2600.0 2900.0 3100.0 3300.0
+2100.0 2200.0 2500.0 2800.0 3100.0 3300.0
+1900.0 2000.0 2500.0 2600.0 2900.0 3100.0
+1800.0 1900.0 2500.0 2700.0 2800.0 3100.0
+1900.0 2300.0 2800.0 2900.0 3300.0 3400.0
+1700.0 1800.0 2100.0 2200.0 3100.0 3200.0
+1800.0 1900.0 2200.0 2300.0 3100.0 3200.0
+1200.0 1700.0 2100.0 2300.0 3200.0 3300.0
+1400.0 1600.0 2000.0 2200.0 3000.0 3100.0
+1500.0 1600.0 2200.0 2500.0 2900.0 3100.0
+1900.0 2200.0 2400.0 2600.0 2800.0 3000.0
+1900.0 2100.0 2400.0 2700.0 2800.0 3000.0
+1900.0 2100.0 2300.0 2700.0 2900.0 3000.0
+1800.0 2000.0 2400.0 2900.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2800.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2200.0 2700.0 3100.0
+1600.0 1700.0 2100.0 2200.0 2600.0 3100.0
+1900.0 2200.0 2400.0 2900.0 3300.0 3400.0
+1600.0 1800.0 2400.0 2500.0 2900.0 3200.0
+2000.0 2200.0 2400.0 2500.0 2800.0 3200.0
+2000.0 2400.0 2500.0 2700.0 2900.0 3100.0
+1900.0 2000.0 2200.0 2300.0 3100.0 3400.0
+2000.0 2100.0 2300.0 2600.0 3000.0 3200.0
+2000.0 2100.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2600.0 2900.0 3000.0
+1300.0 1500.0 2300.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2100.0 2600.0 2900.0 3000.0
+1700.0 1800.0 2200.0 2500.0 2700.0 3100.0
+1900.0 2400.0 2600.0 2700.0 3000.0 3100.0
+2000.0 2400.0 2500.0 2900.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2600.0 2800.0 3100.0
+1900.0 2100.0 2600.0 3000.0 3200.0 3300.0
+1800.0 2300.0 2400.0 2600.0 3200.0 3300.0
+1900.0 2200.0 2300.0 2600.0 3200.0 3300.0
+1900.0 2400.0 2800.0 2900.0 3200.0 3400.0
+1800.0 2400.0 2700.0 2800.0 3200.0 3400.0
+1700.0 2100.0 2200.0 2600.0 3000.0 3100.0
+1900.0 2200.0 2500.0 2900.0 3200.0 3400.0
+1800.0 2400.0 2600.0 2700.0 3300.0 3400.0
+1900.0 2500.0 2700.0 2900.0 3300.0 3400.0
+1900.0 2400.0 2800.0 2900.0 3300.0 3400.0
+1800.0 2400.0 2800.0 2900.0 3200.0 3400.0
+1200.0 1300.0 2400.0 2800.0 2900.0 3100.0
+1600.0 1800.0 2000.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2300.0 2700.0 3200.0 3300.0
+1800.0 2100.0 2300.0 2800.0 3200.0 3300.0
+1500.0 1600.0 2100.0 2200.0 2800.0 3100.0
+1500.0 1600.0 2000.0 2200.0 2500.0 3100.0
+1400.0 1500.0 2200.0 2500.0 2700.0 3000.0
+1200.0 1400.0 2300.0 2600.0 2800.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2800.0 3000.0
+1700.0 2100.0 2200.0 2600.0 2800.0 2900.0
+2000.0 2200.0 2400.0 2700.0 3000.0 3100.0
+1500.0 2100.0 2500.0 2600.0 3100.0 3200.0
+1800.0 2400.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2400.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2300.0 2400.0 2600.0 3200.0 3300.0
+1900.0 2000.0 2400.0 2700.0 3000.0 3100.0
+2000.0 2200.0 2700.0 2900.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1900.0 2100.0 2200.0 2700.0 3200.0 3300.0
+1600.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1800.0 2000.0 2300.0 2800.0 3200.0 3300.0
+2000.0 2200.0 2500.0 2800.0 3200.0 3400.0
+1800.0 2100.0 2400.0 2900.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2700.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2300.0 2600.0 3100.0
+1400.0 1500.0 1800.0 1900.0 2400.0 3000.0
+1400.0 1500.0 1800.0 1900.0 2300.0 3000.0
+1400.0 1600.0 1900.0 2000.0 2600.0 3200.0
+1700.0 1800.0 2200.0 2300.0 2700.0 3100.0
+1500.0 1600.0 2100.0 2700.0 3100.0 3200.0
+1400.0 1500.0 2100.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2200.0 2600.0 2900.0 3000.0
+1800.0 1900.0 2200.0 2600.0 2900.0 3000.0
+1400.0 1600.0 2100.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2000.0 2500.0 2900.0 3100.0
+1600.0 1800.0 2400.0 2800.0 3100.0 3200.0
+1400.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2900.0 3300.0 3400.0
+1500.0 1600.0 2100.0 2800.0 3200.0 3300.0
+1400.0 1500.0 1700.0 1900.0 2800.0 3100.0
+1400.0 1600.0 2100.0 2600.0 2800.0 3100.0
+1500.0 1700.0 2300.0 2600.0 2800.0 3000.0
+1600.0 1700.0 2500.0 2700.0 3100.0 3200.0
+1600.0 1900.0 2400.0 2800.0 3000.0 3200.0
+1800.0 2300.0 2600.0 2700.0 3100.0 3300.0
+1900.0 2300.0 2500.0 2700.0 3100.0 3300.0
+1700.0 2000.0 2200.0 2600.0 3000.0 3100.0
+1600.0 1900.0 2100.0 2700.0 2900.0 3100.0
+1600.0 2200.0 2400.0 2700.0 3200.0 3300.0
+1700.0 2300.0 2500.0 2700.0 3200.0 3300.0
+1600.0 2100.0 2300.0 2500.0 3100.0 3200.0
+1700.0 2100.0 2300.0 2500.0 3100.0 3200.0
+1800.0 2200.0 2300.0 2600.0 3200.0 3300.0
+1700.0 2200.0 2400.0 2600.0 3300.0 3400.0
+1700.0 2200.0 2300.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2300.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2200.0 2400.0 2700.0 3000.0
+1800.0 1900.0 2200.0 2500.0 2700.0 3100.0
+1700.0 1900.0 2100.0 2600.0 3100.0 3200.0
+1900.0 2000.0 2300.0 2800.0 3200.0 3300.0
+1800.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1700.0 1800.0 2100.0 2400.0 3200.0 3300.0
+1200.0 1500.0 2400.0 2700.0 2900.0 3000.0
+1700.0 1800.0 2100.0 2200.0 2500.0 3000.0
+1700.0 1800.0 2100.0 2200.0 2400.0 3000.0
+1600.0 1700.0 2000.0 2100.0 2400.0 3000.0
+1600.0 1700.0 1900.0 2000.0 2500.0 3000.0
+1700.0 1900.0 2100.0 2400.0 2600.0 2900.0
+1800.0 2000.0 2200.0 2400.0 2600.0 3000.0
+1600.0 1900.0 2400.0 2500.0 2900.0 3200.0
+1900.0 2100.0 2300.0 2700.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2700.0 2800.0 3000.0
+1900.0 2000.0 2300.0 2700.0 2800.0 3100.0
+1500.0 1600.0 2300.0 2700.0 2900.0 3100.0
+1700.0 2200.0 2700.0 2800.0 3100.0 3300.0
+1600.0 2000.0 2600.0 2800.0 3200.0 3300.0
+1800.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1600.0 2200.0 2600.0 2700.0 3000.0 3100.0
+2000.0 2200.0 2400.0 2600.0 2900.0 3100.0
+1400.0 1600.0 2000.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2500.0 2700.0 3000.0 3100.0
+1300.0 1500.0 2200.0 2600.0 3100.0 3300.0
+1100.0 1600.0 2200.0 2500.0 3000.0 3200.0
+1200.0 1400.0 2200.0 2700.0 2800.0 3000.0
+1200.0 1400.0 2300.0 2600.0 2700.0 3000.0
+1600.0 1700.0 2000.0 2100.0 2600.0 3100.0
+1800.0 2300.0 2400.0 2600.0 2800.0 3100.0
+1700.0 2300.0 2700.0 2800.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2700.0 2900.0 3000.0
+1500.0 1600.0 2200.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2700.0 3000.0 3100.0
+1900.0 2000.0 2300.0 2600.0 2800.0 3000.0
+1900.0 2100.0 2300.0 2600.0 2800.0 3000.0
+1500.0 1900.0 2500.0 2700.0 3000.0 3100.0
+1900.0 2400.0 2700.0 2900.0 3100.0 3300.0
+1300.0 1600.0 1800.0 2100.0 2900.0 3200.0
+1700.0 1800.0 2000.0 2200.0 3100.0 3200.0
+2000.0 2300.0 2700.0 3100.0 3300.0 3400.0
+1900.0 2200.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2300.0 2800.0 3000.0 3200.0 3300.0
+2100.0 2300.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2200.0 2800.0 2900.0 3200.0 3300.0
+1700.0 1900.0 2400.0 2800.0 3200.0 3300.0
+1500.0 1600.0 2200.0 2800.0 3200.0 3300.0
+1400.0 1500.0 2200.0 2500.0 2900.0 3200.0
+1300.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1900.0 2300.0 2400.0 2700.0 2900.0 3100.0
+1900.0 2200.0 2400.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2100.0 2800.0 3100.0 3200.0
+1800.0 2400.0 2600.0 2700.0 3000.0 3100.0
+1600.0 1700.0 1900.0 2000.0 2500.0 3100.0
+1800.0 1900.0 2100.0 2300.0 2900.0 3300.0
+1300.0 1700.0 2400.0 2700.0 3200.0 3300.0
+1500.0 2000.0 2500.0 2800.0 3100.0 3300.0
+1900.0 2300.0 2400.0 2600.0 3300.0 3400.0
+1900.0 2300.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1600.0 2100.0 2800.0 3100.0 3200.0
+1500.0 1600.0 2100.0 2200.0 2700.0 3200.0
+1500.0 1600.0 1900.0 2000.0 2600.0 3100.0
+1400.0 1500.0 1900.0 2000.0 2600.0 3100.0
+1400.0 1600.0 1900.0 2000.0 2700.0 3200.0
+1700.0 1900.0 2100.0 2400.0 3000.0 3100.0
+1800.0 2000.0 2200.0 2400.0 2900.0 3200.0
+1700.0 2000.0 2200.0 2400.0 2800.0 3100.0
+1800.0 2000.0 2300.0 2700.0 2900.0 3200.0
+1700.0 2000.0 2200.0 2400.0 3000.0 3200.0
+1600.0 1900.0 2100.0 2300.0 3000.0 3200.0
+1700.0 1900.0 2100.0 2300.0 3000.0 3200.0
+1600.0 1900.0 2100.0 2400.0 3000.0 3200.0
+1700.0 1900.0 2200.0 2600.0 2900.0 3100.0
+1500.0 1800.0 1900.0 2400.0 2800.0 3000.0
+1700.0 2000.0 2400.0 2900.0 3100.0 3300.0
+1800.0 2000.0 2700.0 2900.0 3200.0 3400.0
+2000.0 2200.0 2600.0 2900.0 3100.0 3200.0
+1600.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1800.0 2000.0 2200.0 2400.0 2600.0 3100.0
+1700.0 1800.0 2000.0 2100.0 2600.0 3100.0
+1600.0 1700.0 1900.0 2000.0 2700.0 3200.0
+1700.0 1900.0 2100.0 2300.0 2600.0 3100.0
+2000.0 2300.0 2500.0 2600.0 3200.0 3300.0
+1500.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1500.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1600.0 2200.0 2500.0 2800.0 3100.0 3200.0
+1500.0 2100.0 2400.0 2700.0 3100.0 3200.0
+1600.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1800.0 2100.0 2400.0 2700.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2600.0 3000.0 3200.0
+1400.0 1900.0 2400.0 2600.0 3000.0 3300.0
+1400.0 1500.0 2100.0 2600.0 3000.0 3100.0
+1300.0 1500.0 2300.0 2600.0 2800.0 3200.0
+1400.0 1600.0 2200.0 2600.0 3000.0 3200.0
+1700.0 1800.0 2200.0 2600.0 2900.0 3200.0
+1700.0 1800.0 2000.0 2600.0 2900.0 3100.0
+1600.0 1800.0 2000.0 2500.0 3000.0 3200.0
+1300.0 1500.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2300.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2400.0 3000.0 3200.0
+1700.0 1900.0 2200.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2600.0 2800.0 2900.0
+1600.0 1700.0 2000.0 2300.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2400.0 3000.0 3200.0
+2000.0 2100.0 2400.0 2800.0 3100.0 3300.0
+1700.0 2200.0 2300.0 2700.0 3000.0 3100.0
+1700.0 2200.0 2400.0 2600.0 3000.0 3200.0
+1900.0 2300.0 2400.0 2600.0 3000.0 3200.0
+2100.0 2200.0 2600.0 2800.0 3200.0 3400.0
+2100.0 2200.0 2700.0 2900.0 3200.0 3400.0
+2000.0 2200.0 2800.0 3000.0 3200.0 3400.0
+2000.0 2200.0 2700.0 3000.0 3200.0 3400.0
+2000.0 2200.0 2700.0 2900.0 3200.0 3400.0
+1700.0 2100.0 2400.0 2900.0 3100.0 3200.0
+1500.0 1800.0 1900.0 2500.0 3000.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2900.0 3300.0
+1800.0 2000.0 2300.0 2400.0 2700.0 3100.0
+1800.0 2100.0 2300.0 2800.0 3000.0 3200.0
+1600.0 2300.0 2500.0 2800.0 3100.0 3200.0
+1600.0 2100.0 2500.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2100.0 2800.0 3000.0 3100.0
+1800.0 2300.0 2600.0 2700.0 3100.0 3200.0
+2000.0 2200.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2200.0 2600.0 2800.0 3200.0 3400.0
+1700.0 1800.0 2200.0 2600.0 2800.0 3200.0
+1600.0 1800.0 2200.0 2500.0 2800.0 3200.0
+1600.0 1700.0 1900.0 2000.0 2600.0 3100.0
+1600.0 1700.0 2200.0 2800.0 3000.0 3200.0
+1700.0 1800.0 2400.0 2900.0 3100.0 3300.0
+1900.0 2200.0 2700.0 2900.0 3400.0 3500.0
+1700.0 1800.0 2000.0 2200.0 2900.0 3200.0
+1700.0 1900.0 2100.0 2300.0 2900.0 3200.0
+1200.0 1400.0 2200.0 2900.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2600.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2200.0 2700.0 3200.0
+1600.0 1700.0 2000.0 2200.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2100.0 2800.0 3200.0
+1600.0 1800.0 2000.0 2100.0 2800.0 3200.0
+1700.0 1800.0 2000.0 2300.0 2900.0 3200.0
+1800.0 1900.0 2200.0 2600.0 3200.0 3300.0
+1800.0 2000.0 2200.0 2500.0 3200.0 3300.0
+1300.0 1500.0 1900.0 2600.0 3100.0 3200.0
+1300.0 1400.0 2000.0 2600.0 3200.0 3300.0
+1600.0 1700.0 2100.0 2700.0 3000.0 3200.0
+1400.0 1500.0 2000.0 2600.0 3100.0 3200.0
+1400.0 1500.0 2000.0 2700.0 3100.0 3200.0
+1500.0 1800.0 2400.0 2700.0 3000.0 3300.0
+1500.0 1600.0 2200.0 2300.0 2700.0 3300.0
+1400.0 1500.0 2200.0 2400.0 2700.0 3200.0
+1300.0 1500.0 2300.0 2600.0 2900.0 3200.0
+1400.0 1700.0 2400.0 2600.0 3000.0 3200.0
+1300.0 1600.0 2400.0 2500.0 2900.0 3200.0
+1400.0 1500.0 2200.0 2400.0 2900.0 3300.0
+1400.0 1600.0 2100.0 2200.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1500.0 1700.0 1900.0 2600.0 3200.0 3300.0
+1500.0 1600.0 1800.0 2000.0 2800.0 3200.0
+1500.0 1600.0 1900.0 2000.0 2700.0 3200.0
+1500.0 1600.0 1900.0 2000.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2200.0 2700.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2700.0 2900.0 3200.0
+1600.0 1700.0 2600.0 2800.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2500.0 2800.0 3200.0
+1300.0 1400.0 2300.0 2500.0 2800.0 3200.0
+1500.0 1700.0 2200.0 2600.0 2700.0 3100.0
+1500.0 1700.0 2200.0 2600.0 2800.0 3000.0
+1500.0 1700.0 2000.0 2600.0 2700.0 3000.0
+1100.0 1300.0 2300.0 2800.0 3100.0 3200.0
+1600.0 1700.0 2100.0 2500.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2300.0 2700.0 2900.0 3200.0
+1800.0 2000.0 2500.0 2800.0 3100.0 3400.0
+1900.0 2000.0 2800.0 2900.0 3300.0 3400.0
+1800.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1700.0 1800.0 2100.0 2200.0 2600.0 3100.0
+1500.0 1600.0 1800.0 1900.0 2600.0 3200.0
+1600.0 1700.0 1900.0 2000.0 2600.0 3200.0
+1600.0 1700.0 2000.0 2100.0 2600.0 3200.0
+1700.0 1800.0 2000.0 2100.0 2800.0 3300.0
+1600.0 1900.0 2100.0 2400.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2600.0 2900.0 3000.0
+1400.0 1500.0 2100.0 2600.0 2900.0 3100.0
+1400.0 1500.0 2200.0 2600.0 2900.0 3100.0
+1000.0 1200.0 2300.0 2900.0 3100.0 3200.0
+1300.0 1700.0 2400.0 2600.0 3000.0 3200.0
+1100.0 1600.0 2300.0 2600.0 3200.0 3300.0
+1200.0 1600.0 2300.0 2600.0 3100.0 3300.0
+1100.0 1600.0 2200.0 2600.0 3100.0 3300.0
+1600.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2300.0 2700.0 2800.0 3000.0
+1400.0 1700.0 1900.0 2500.0 3200.0 3300.0
+1700.0 1900.0 2200.0 2400.0 2800.0 3000.0
+1400.0 1600.0 2100.0 2200.0 2700.0 3000.0
+1500.0 1700.0 2200.0 2400.0 2700.0 3100.0
+1500.0 1600.0 2200.0 2400.0 2800.0 3100.0
+1000.0 1900.0 2200.0 2500.0 3200.0 3300.0
+1200.0 1700.0 2100.0 2400.0 3200.0 3300.0
+1700.0 2000.0 2500.0 2600.0 3100.0 3400.0
+1600.0 2200.0 2400.0 2600.0 3200.0 3300.0
+2000.0 2500.0 2600.0 3000.0 3300.0 3400.0
+1400.0 1500.0 2100.0 2300.0 3200.0 3300.0
+1500.0 1700.0 2100.0 2400.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2300.0 3300.0 3400.0
+1800.0 2200.0 2500.0 2700.0 3100.0 3400.0
+1500.0 1900.0 2300.0 2600.0 3200.0 3300.0
+2100.0 2200.0 2600.0 2900.0 3100.0 3300.0
+1500.0 1600.0 1800.0 2600.0 3200.0 3300.0
+1300.0 1500.0 1600.0 2200.0 3100.0 3200.0
+1200.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1100.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1400.0 1700.0 2200.0 2500.0 3100.0 3200.0
+1900.0 2100.0 2300.0 2600.0 3000.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3300.0 3400.0
+1700.0 1900.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1900.0 2200.0 2500.0 2900.0 3200.0
+1200.0 2000.0 2300.0 2400.0 2500.0 3100.0
+1200.0 2000.0 2300.0 2400.0 2600.0 3100.0
+1900.0 2200.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2200.0 2500.0 2700.0 3200.0 3400.0
+1800.0 2100.0 2400.0 2500.0 3200.0 3300.0
+1800.0 2100.0 2300.0 2500.0 3300.0 3400.0
+1500.0 1700.0 1800.0 2500.0 3200.0 3300.0
+1400.0 1600.0 1800.0 2300.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2400.0 3200.0 3400.0
+1200.0 1500.0 1700.0 2100.0 3100.0 3200.0
+2100.0 2300.0 2400.0 2800.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2400.0 3100.0 3300.0
+1400.0 1600.0 2000.0 2100.0 3000.0 3300.0
+1900.0 2000.0 2200.0 2400.0 3000.0 3300.0
+1500.0 1800.0 2200.0 2300.0 3000.0 3300.0
+1300.0 1500.0 2100.0 2200.0 2800.0 3300.0
+1500.0 1800.0 2200.0 2400.0 3000.0 3300.0
+1600.0 1900.0 2300.0 2600.0 3200.0 3400.0
+1300.0 1800.0 2200.0 2500.0 3000.0 3200.0
+1100.0 1600.0 2200.0 2300.0 3100.0 3200.0
+1300.0 1500.0 2000.0 2200.0 3100.0 3300.0
+2300.0 2500.0 2900.0 3100.0 3200.0 3300.0
+2300.0 2400.0 2700.0 2800.0 3100.0 3300.0
+2000.0 2100.0 2400.0 2700.0 3200.0 3300.0
+1600.0 1700.0 1900.0 2100.0 3200.0 3300.0
+1600.0 1800.0 1900.0 2300.0 3200.0 3300.0
+1500.0 1600.0 1900.0 2600.0 3100.0 3200.0
+1300.0 1500.0 1900.0 2300.0 3000.0 3100.0
+1200.0 1600.0 2000.0 2100.0 3200.0 3300.0
+1300.0 2000.0 2200.0 2400.0 2700.0 3100.0
+1100.0 1900.0 2300.0 2400.0 3000.0 3100.0
+1200.0 1500.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1600.0 1900.0 2500.0 3000.0 3100.0
+1300.0 1500.0 1600.0 2300.0 3200.0 3300.0
+1500.0 1800.0 2100.0 2400.0 3100.0 3200.0
+1900.0 2200.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1500.0 2100.0 2300.0 2900.0 3200.0
+1100.0 1600.0 2100.0 2300.0 3100.0 3200.0
+1100.0 1600.0 2100.0 2300.0 3200.0 3300.0
+1000.0 1600.0 2200.0 2300.0 3100.0 3300.0
+1100.0 1600.0 2100.0 2300.0 3000.0 3100.0
+1100.0 1400.0 2300.0 2500.0 3200.0 3300.0
+1700.0 2100.0 2500.0 2800.0 3100.0 3400.0
+1300.0 1600.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1700.0 2300.0 2400.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2400.0 3000.0 3300.0
+1700.0 1900.0 2500.0 2600.0 3000.0 3200.0
+1100.0 1500.0 2400.0 2500.0 3100.0 3200.0
+1700.0 1900.0 2100.0 2400.0 3100.0 3300.0
+1300.0 1700.0 2200.0 2600.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2200.0 3100.0 3300.0
+1800.0 2000.0 2200.0 2400.0 3200.0 3400.0
+1900.0 2100.0 2600.0 2800.0 3000.0 3200.0
+1900.0 2100.0 2600.0 2800.0 3100.0 3200.0
+1400.0 1900.0 2400.0 2500.0 3100.0 3300.0
+1100.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1100.0 1800.0 2200.0 2500.0 3000.0 3100.0
+1100.0 1800.0 2200.0 2400.0 3000.0 3100.0
+1500.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1500.0 2000.0 2400.0 2500.0 3200.0 3400.0
+1800.0 2000.0 2500.0 2600.0 3000.0 3300.0
+1900.0 2400.0 2600.0 2900.0 3200.0 3400.0
+1500.0 2100.0 2500.0 2700.0 3200.0 3300.0
+1400.0 2100.0 2400.0 2700.0 3100.0 3200.0
+1500.0 2100.0 2500.0 2700.0 3000.0 3200.0
+1600.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1500.0 1800.0 2100.0 2700.0 3100.0 3300.0
+1300.0 1600.0 1800.0 2500.0 3200.0 3300.0
+1300.0 1500.0 1600.0 2800.0 3300.0 3400.0
+1300.0 1400.0 2200.0 2300.0 3100.0 3300.0
+1300.0 1600.0 2400.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2500.0 3200.0 3400.0
+1400.0 2000.0 2100.0 2400.0 3000.0 3100.0
+1300.0 1900.0 2100.0 2400.0 3100.0 3200.0
+1600.0 1700.0 2200.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2300.0 2400.0 2900.0 3200.0
+1300.0 1600.0 2200.0 2400.0 3000.0 3200.0
+1200.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2400.0 3100.0 3300.0
+1000.0 1600.0 2500.0 2600.0 3100.0 3200.0
+900.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1400.0 1700.0 2500.0 2700.0 3100.0 3300.0
+1300.0 1900.0 2500.0 2700.0 3200.0 3300.0
+1600.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1400.0 1600.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1600.0 2600.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2600.0 2700.0 3100.0 3400.0
+1600.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1800.0 2100.0 2800.0 3000.0 3300.0 3400.0
+1800.0 2300.0 2700.0 2900.0 3400.0 3500.0
+1800.0 2400.0 2900.0 3100.0 3300.0 3400.0
+1200.0 1800.0 2300.0 2400.0 3000.0 3100.0
+1300.0 1600.0 2400.0 2500.0 3100.0 3200.0
+1400.0 1800.0 2400.0 2500.0 3200.0 3400.0
+2000.0 2500.0 2700.0 3100.0 3300.0 3400.0
+1900.0 2000.0 2400.0 2800.0 3100.0 3300.0
+1500.0 1800.0 1900.0 2500.0 3100.0 3200.0
+1600.0 1800.0 2000.0 2600.0 3100.0 3200.0
+1700.0 2000.0 2200.0 2700.0 3000.0 3100.0
+1700.0 2000.0 2300.0 2600.0 2900.0 3000.0
+2300.0 2400.0 2700.0 2900.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2300.0 3000.0 3100.0
+1400.0 2000.0 2300.0 2500.0 3100.0 3200.0
+1500.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1300.0 1700.0 1800.0 2400.0 2900.0 3000.0
+1300.0 1500.0 1600.0 2200.0 2800.0 2900.0
+1900.0 2100.0 2500.0 2700.0 3000.0 3300.0
+1500.0 1900.0 2400.0 2600.0 2900.0 3300.0
+1400.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1300.0 1800.0 2500.0 2700.0 3100.0 3300.0
+1300.0 1800.0 2400.0 2600.0 3100.0 3200.0
+1200.0 1700.0 2400.0 2500.0 2900.0 3100.0
+1100.0 1800.0 2000.0 2200.0 3000.0 3100.0
+1300.0 1600.0 1700.0 2600.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2400.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2400.0 3000.0 3100.0
+1800.0 1900.0 2400.0 2500.0 3000.0 3100.0
+1500.0 2200.0 2500.0 2700.0 3300.0 3400.0
+1900.0 2500.0 2700.0 3000.0 3300.0 3400.0
+1400.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1400.0 1800.0 2100.0 2500.0 3000.0 3100.0
+1200.0 1500.0 1600.0 2600.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2300.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2200.0 3100.0 3200.0
+1200.0 1500.0 1600.0 2200.0 3100.0 3200.0
+1200.0 1500.0 1600.0 2300.0 3000.0 3100.0
+1300.0 1800.0 2400.0 2600.0 3000.0 3200.0
+1300.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1400.0 1800.0 2200.0 2400.0 3100.0 3300.0
+1600.0 1700.0 2100.0 2300.0 2700.0 3100.0
+1700.0 1800.0 2100.0 2300.0 2700.0 3200.0
+1700.0 1800.0 2200.0 2300.0 2800.0 3200.0
+1700.0 2200.0 2400.0 2800.0 3100.0 3200.0
+1100.0 2000.0 2200.0 2400.0 3000.0 3100.0
+1100.0 1900.0 2000.0 2400.0 3000.0 3100.0
+1300.0 1500.0 1600.0 2700.0 3200.0 3300.0
+1300.0 1500.0 1600.0 2600.0 3300.0 3400.0
+1600.0 1700.0 2000.0 2600.0 3100.0 3200.0
+1700.0 2200.0 2500.0 2700.0 2900.0 3200.0
+1100.0 1700.0 2200.0 2300.0 3100.0 3200.0
+1100.0 1800.0 2100.0 2200.0 3100.0 3200.0
+1100.0 1600.0 2000.0 2100.0 3100.0 3200.0
+1100.0 1600.0 1900.0 2100.0 3100.0 3200.0
+1200.0 1600.0 1800.0 2000.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2000.0 3100.0 3200.0
+1300.0 1600.0 1700.0 2000.0 3000.0 3100.0
+1200.0 1500.0 1600.0 2000.0 3000.0 3100.0
+1500.0 1700.0 1900.0 2400.0 2800.0 2900.0
+1600.0 2000.0 2300.0 2600.0 2900.0 3100.0
+2200.0 2400.0 2700.0 2800.0 3100.0 3300.0
+1700.0 2100.0 2300.0 2400.0 2800.0 3200.0
+1600.0 1800.0 2300.0 2400.0 2800.0 3200.0
+1000.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1000.0 1900.0 2800.0 2900.0 3300.0 3400.0
+1400.0 1600.0 1800.0 2400.0 2700.0 3000.0
+1800.0 2000.0 2300.0 2500.0 2900.0 3100.0
+1200.0 1800.0 2600.0 2700.0 3200.0 3300.0
+1300.0 1800.0 2400.0 2500.0 3000.0 3300.0
+1500.0 1900.0 2500.0 2700.0 3200.0 3400.0
+1400.0 1800.0 2500.0 2600.0 3100.0 3300.0
+1600.0 1800.0 2200.0 2300.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2400.0 2700.0 3100.0
+1700.0 1900.0 2200.0 2500.0 2700.0 3100.0
+1300.0 1400.0 2200.0 2800.0 3100.0 3200.0
+1700.0 2100.0 2300.0 2500.0 2800.0 3100.0
+1500.0 1600.0 2200.0 2700.0 2900.0 3100.0
+1200.0 1400.0 2200.0 2800.0 3000.0 3200.0
+1200.0 1400.0 2300.0 2800.0 3100.0 3200.0
+1900.0 2000.0 2600.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2500.0 2800.0 3000.0 3300.0
+2100.0 2300.0 2500.0 2700.0 2900.0 3200.0
+1900.0 2000.0 2700.0 2900.0 3100.0 3400.0
+1900.0 2000.0 2600.0 2900.0 3200.0 3300.0
+1900.0 2000.0 2600.0 2900.0 3200.0 3400.0
+900.0 1500.0 2500.0 2600.0 3200.0 3400.0
+1800.0 1900.0 2400.0 2800.0 2900.0 3100.0
+1600.0 1900.0 2300.0 2600.0 2900.0 3100.0
+1400.0 1500.0 2000.0 2400.0 2900.0 3100.0
+1500.0 1800.0 2200.0 2400.0 2600.0 2800.0
+2000.0 2400.0 2800.0 2900.0 3100.0 3400.0
+1900.0 2300.0 2800.0 2900.0 3100.0 3300.0
+1200.0 1400.0 1900.0 2600.0 3100.0 3200.0
+2100.0 2300.0 2800.0 2900.0 3100.0 3200.0
+2000.0 2400.0 2600.0 2700.0 3100.0 3300.0
+2000.0 2400.0 2600.0 2700.0 3000.0 3200.0
+2000.0 2300.0 2600.0 2700.0 2900.0 3200.0
+1800.0 1900.0 2300.0 2600.0 2800.0 3000.0
+2000.0 2300.0 2500.0 2800.0 3000.0 3200.0
+1700.0 2000.0 2200.0 2600.0 2800.0 3000.0
+1900.0 2000.0 2400.0 2800.0 2900.0 3100.0
+2200.0 2600.0 2800.0 2900.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2400.0 2700.0 3200.0
+1500.0 1600.0 2300.0 2400.0 2700.0 3200.0
+1300.0 1500.0 2200.0 2500.0 2700.0 3100.0
+1700.0 1800.0 2100.0 2200.0 2700.0 3200.0
+1900.0 2000.0 2600.0 2900.0 3000.0 3200.0
+1800.0 2100.0 2400.0 2500.0 2800.0 3100.0
+1400.0 1500.0 2200.0 2500.0 2700.0 3100.0
+1500.0 1600.0 2200.0 2400.0 2700.0 3100.0
+1700.0 1800.0 2300.0 2400.0 2700.0 3100.0
+1900.0 2000.0 2300.0 2500.0 2700.0 3100.0
+1900.0 2200.0 2400.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2200.0 2600.0 2700.0 3100.0
+2100.0 2400.0 2600.0 2800.0 3000.0 3200.0
+2100.0 2300.0 2700.0 2800.0 3200.0 3400.0
+1800.0 2300.0 2600.0 2800.0 3000.0 3200.0
+2000.0 2200.0 2400.0 2700.0 3000.0 3300.0
+1900.0 2200.0 2400.0 2600.0 3000.0 3300.0
+1700.0 2000.0 2300.0 2600.0 2800.0 3000.0
+1600.0 1800.0 2100.0 2500.0 2700.0 3000.0
+1600.0 1700.0 2300.0 2600.0 2800.0 3000.0
+1600.0 1700.0 2400.0 2600.0 2800.0 3000.0
+2000.0 2300.0 2600.0 2700.0 3300.0 3400.0
+1700.0 1800.0 2100.0 2500.0 3000.0 3300.0
+1300.0 1500.0 2300.0 2400.0 3000.0 3300.0
+1500.0 1600.0 1900.0 2100.0 3000.0 3100.0
+1900.0 2000.0 2500.0 2800.0 3100.0 3200.0
+2000.0 2400.0 2900.0 3000.0 3200.0 3400.0
+1700.0 1800.0 2100.0 2500.0 2700.0 3100.0
+1500.0 2000.0 2400.0 2500.0 3000.0 3300.0
+1500.0 1600.0 2300.0 2400.0 2700.0 3100.0
+1600.0 1700.0 2300.0 2400.0 2700.0 3200.0
+1700.0 1800.0 2200.0 2500.0 2600.0 3000.0
+1800.0 1900.0 2200.0 2500.0 2700.0 3000.0
+1800.0 1900.0 2200.0 2600.0 2700.0 3000.0
+1800.0 2200.0 2500.0 2700.0 2900.0 3200.0
+1200.0 1600.0 2500.0 2600.0 3000.0 3300.0
+1000.0 1300.0 2400.0 2900.0 3100.0 3200.0
+1300.0 1600.0 2500.0 2800.0 3000.0 3200.0
+1800.0 2100.0 2600.0 2800.0 3000.0 3300.0
+1300.0 1600.0 2500.0 2800.0 2900.0 3200.0
+1200.0 1500.0 2300.0 2700.0 2900.0 3200.0
+1200.0 1400.0 2300.0 2700.0 2900.0 3200.0
+1400.0 1600.0 2100.0 2500.0 3100.0 3300.0
+1700.0 2300.0 2600.0 2800.0 3100.0 3200.0
+2000.0 2200.0 2400.0 2700.0 2800.0 3100.0
+1400.0 1500.0 2300.0 2800.0 3000.0 3100.0
+1500.0 1600.0 2300.0 2800.0 2900.0 3100.0
+1500.0 1600.0 2400.0 2800.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2700.0 2800.0 3000.0
+1800.0 1900.0 2600.0 2700.0 2900.0 3200.0
+1800.0 2000.0 2700.0 2800.0 3200.0 3400.0
+1800.0 2000.0 2600.0 2800.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2600.0 2900.0 3100.0
+2000.0 2200.0 2500.0 2600.0 3000.0 3100.0
+2000.0 2100.0 2500.0 2900.0 3200.0 3300.0
+1800.0 2000.0 2600.0 2900.0 3100.0 3300.0
+1700.0 1900.0 2200.0 2700.0 2800.0 3000.0
+1700.0 2000.0 2500.0 2600.0 3200.0 3300.0
+1400.0 1600.0 2300.0 2500.0 2700.0 3100.0
+1900.0 2300.0 2800.0 3000.0 3400.0 3500.0
+1600.0 1800.0 2300.0 2400.0 2800.0 3300.0
+1600.0 1700.0 2200.0 2400.0 2800.0 3000.0
+1600.0 1700.0 2300.0 2600.0 3000.0 3100.0
+1800.0 2100.0 2700.0 2900.0 3300.0 3500.0
+1600.0 1700.0 2300.0 2800.0 2900.0 3100.0
+1300.0 1500.0 2200.0 2700.0 2900.0 3100.0
+1200.0 1400.0 2500.0 2900.0 3000.0 3200.0
+1900.0 2200.0 2400.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2600.0 2900.0 3100.0 3400.0
+1600.0 1700.0 2100.0 2600.0 2700.0 3100.0
+1500.0 1600.0 2300.0 2500.0 2700.0 3100.0
+1500.0 1600.0 2200.0 2800.0 3100.0 3300.0
+1300.0 1500.0 2000.0 2700.0 3100.0 3200.0
+1300.0 1500.0 1900.0 2600.0 3200.0 3300.0
+1300.0 1400.0 2000.0 2400.0 3200.0 3300.0
+1300.0 1400.0 2000.0 2300.0 3100.0 3300.0
+1300.0 1500.0 2000.0 2300.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2400.0 3100.0 3300.0
+1700.0 1900.0 2300.0 2400.0 2800.0 3300.0
+1200.0 2200.0 2500.0 2700.0 3200.0 3300.0
+1300.0 2100.0 2300.0 2700.0 3200.0 3300.0
+1400.0 2200.0 2400.0 2900.0 3300.0 3400.0
+1500.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1200.0 1900.0 2400.0 2500.0 3000.0 3200.0
+1200.0 2000.0 2400.0 2600.0 3000.0 3200.0
+1200.0 1900.0 2400.0 2500.0 3200.0 3300.0
+2000.0 2300.0 2700.0 3000.0 3200.0 3400.0
+1900.0 2100.0 2600.0 3000.0 3300.0 3400.0
+1500.0 1900.0 2200.0 2600.0 3000.0 3300.0
+1400.0 1800.0 2200.0 2500.0 3000.0 3300.0
+1800.0 2000.0 2300.0 2400.0 3300.0 3400.0
+1600.0 2100.0 2300.0 2400.0 3100.0 3300.0
+1900.0 2300.0 2800.0 3000.0 3200.0 3400.0
+1700.0 2100.0 2400.0 2700.0 3100.0 3400.0
+1400.0 1800.0 2300.0 2600.0 3200.0 3400.0
+1700.0 2000.0 2200.0 2400.0 3100.0 3200.0
+1500.0 1800.0 2200.0 2500.0 3000.0 3300.0
+1700.0 1900.0 2200.0 2600.0 2900.0 3200.0
+1400.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1500.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1600.0 2100.0 2300.0 2700.0 3100.0 3200.0
+1600.0 1700.0 1900.0 2800.0 3000.0 3100.0
+1500.0 1700.0 1900.0 2600.0 3000.0 3100.0
+1500.0 1600.0 2100.0 2600.0 3200.0 3300.0
+2200.0 2300.0 2600.0 2900.0 3100.0 3300.0
+1900.0 2200.0 2400.0 2700.0 3000.0 3300.0
+1400.0 1700.0 2300.0 2400.0 3000.0 3100.0
+1900.0 2000.0 2400.0 2500.0 3100.0 3200.0
+2000.0 2500.0 2600.0 2800.0 3300.0 3400.0
+2000.0 2400.0 2600.0 3000.0 3200.0 3300.0
+1500.0 1800.0 2300.0 2500.0 2900.0 3200.0
+1300.0 1900.0 2200.0 2300.0 3000.0 3200.0
+1600.0 1700.0 2500.0 2800.0 3200.0 3400.0
+1500.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1900.0 2200.0 2500.0 2700.0 3000.0 3300.0
+1300.0 1600.0 1800.0 2100.0 3000.0 3100.0
+1000.0 1900.0 2200.0 2500.0 3100.0 3200.0
+1200.0 2000.0 2300.0 2600.0 3300.0 3400.0
+1400.0 1600.0 1800.0 2600.0 2900.0 3100.0
+1400.0 1700.0 2000.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2000.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2300.0 2400.0 2700.0 3100.0
+1700.0 1800.0 2000.0 2400.0 3100.0 3200.0
+1800.0 1900.0 2100.0 2500.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1800.0 2100.0 2400.0 2700.0 2800.0
+1300.0 1700.0 2100.0 2200.0 3100.0 3300.0
+1300.0 1700.0 2100.0 2200.0 3000.0 3200.0
+1500.0 1800.0 2200.0 2400.0 2700.0 3200.0
+1600.0 1800.0 2200.0 2300.0 2900.0 3200.0
+1500.0 1800.0 2100.0 2400.0 2900.0 3200.0
+1400.0 1700.0 1900.0 2200.0 2800.0 2900.0
+1500.0 1800.0 2100.0 2500.0 3000.0 3100.0
+1500.0 1900.0 2100.0 2500.0 3000.0 3100.0
+1500.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1400.0 1800.0 2200.0 2500.0 3200.0 3300.0
+1500.0 2000.0 2200.0 2400.0 2900.0 3200.0
+1800.0 2000.0 2700.0 2900.0 3300.0 3400.0
+1500.0 1800.0 2100.0 2500.0 3200.0 3300.0
+1400.0 1700.0 1800.0 2200.0 3100.0 3200.0
+1400.0 1600.0 1700.0 2300.0 3000.0 3100.0
+1300.0 2000.0 2100.0 2700.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2500.0 3100.0 3200.0
+1400.0 1700.0 1800.0 2300.0 3000.0 3100.0
+1600.0 1700.0 1900.0 2600.0 3000.0 3100.0
+1800.0 2100.0 2300.0 2700.0 3300.0 3400.0
+1700.0 2100.0 2300.0 2700.0 3300.0 3400.0
+1800.0 2100.0 2300.0 2400.0 2700.0 3100.0
+1500.0 1700.0 1900.0 2600.0 3100.0 3200.0
+1300.0 2000.0 2200.0 2800.0 3200.0 3300.0
+1700.0 1900.0 2600.0 2900.0 3200.0 3400.0
+1200.0 1800.0 2600.0 2700.0 3100.0 3200.0
+1900.0 2000.0 2200.0 2500.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2400.0 2900.0 3200.0
+1200.0 1600.0 2200.0 2400.0 2800.0 3100.0
+1200.0 1800.0 2200.0 2600.0 3200.0 3300.0
+1300.0 1800.0 2300.0 2700.0 3300.0 3400.0
+1700.0 2000.0 2400.0 2500.0 3000.0 3200.0
+1600.0 1900.0 2200.0 2300.0 2900.0 3100.0
+1400.0 1700.0 1900.0 2400.0 3000.0 3100.0
+1600.0 1900.0 2400.0 2700.0 3300.0 3400.0
+1800.0 2300.0 2700.0 3000.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2600.0 3000.0 3300.0
+1200.0 1800.0 2200.0 2600.0 3100.0 3300.0
+1700.0 2000.0 2400.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2400.0 2600.0 3000.0
+1600.0 1700.0 2100.0 2400.0 2600.0 3000.0
+1700.0 1900.0 2200.0 2400.0 2800.0 3200.0
+1700.0 2100.0 2300.0 2700.0 2800.0 3000.0
+1600.0 1900.0 2100.0 2600.0 2900.0 3000.0
+1800.0 2000.0 2700.0 2800.0 3100.0 3400.0
+1500.0 1600.0 2200.0 2800.0 3000.0 3100.0
+1300.0 1500.0 2100.0 2700.0 3000.0 3100.0
+1500.0 1800.0 2300.0 2600.0 3000.0 3100.0
+1600.0 1700.0 2300.0 2700.0 2900.0 3000.0
+1600.0 1800.0 2200.0 2600.0 2800.0 3100.0
+1500.0 1600.0 2300.0 2600.0 2900.0 3100.0
+1600.0 1800.0 2200.0 2700.0 3000.0 3300.0
+2100.0 2200.0 2600.0 2700.0 2900.0 3100.0
+1800.0 1900.0 2300.0 2700.0 2800.0 3000.0
+1800.0 1900.0 2200.0 2700.0 2800.0 3000.0
+1500.0 1800.0 2000.0 2600.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2500.0 2700.0 3000.0
+1500.0 1600.0 1900.0 2000.0 2400.0 3100.0
+1200.0 1500.0 2100.0 2200.0 2700.0 3200.0
+1300.0 1700.0 2400.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2400.0 2800.0 2900.0 3200.0
+1500.0 1800.0 2000.0 2500.0 2900.0 3200.0
+1800.0 2000.0 2200.0 2500.0 2700.0 3000.0
+1800.0 1900.0 2300.0 2600.0 2700.0 3200.0
+1500.0 1700.0 2200.0 2700.0 2900.0 3200.0
+1300.0 1400.0 2100.0 2600.0 3000.0 3200.0
+1400.0 1500.0 2100.0 2700.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2800.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2400.0 2900.0 3300.0
+1500.0 1600.0 1900.0 2100.0 2500.0 3100.0
+1700.0 1900.0 2100.0 2400.0 2700.0 3100.0
+1400.0 1500.0 2100.0 2800.0 3100.0 3200.0
+1400.0 1600.0 2100.0 2800.0 3000.0 3200.0
+1700.0 1800.0 2100.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2600.0 2700.0 3000.0
+1500.0 1600.0 2100.0 2600.0 2700.0 3100.0
+1600.0 1700.0 2000.0 2500.0 2900.0 3200.0
+1900.0 2000.0 2300.0 2400.0 2700.0 3100.0
+1900.0 2100.0 2300.0 2500.0 2700.0 3100.0
+1900.0 2100.0 2400.0 2600.0 2800.0 3100.0
+1700.0 2200.0 2400.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2600.0 2900.0 3200.0 3300.0
+2000.0 2100.0 2300.0 2500.0 2800.0 3100.0
+1800.0 1900.0 2200.0 2400.0 2800.0 3200.0
+1900.0 2100.0 2700.0 2900.0 3200.0 3400.0
+1800.0 2100.0 2300.0 2800.0 2900.0 3100.0
+1800.0 2000.0 2200.0 2700.0 2900.0 3000.0
+1800.0 1900.0 2200.0 2700.0 2900.0 3000.0
+2100.0 2200.0 2600.0 2800.0 3000.0 3200.0
+1600.0 1700.0 2100.0 2400.0 2700.0 3100.0
+1800.0 2000.0 2200.0 2300.0 2600.0 3100.0
+1700.0 1900.0 2300.0 2600.0 2700.0 3000.0
+1800.0 2000.0 2300.0 2500.0 2900.0 3200.0
+1200.0 1400.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2800.0 3000.0 3200.0
+1600.0 1800.0 2300.0 2700.0 3000.0 3100.0
+1700.0 1800.0 2300.0 2700.0 2900.0 3000.0
+1400.0 1500.0 2000.0 2200.0 2900.0 3200.0
+2000.0 2300.0 2400.0 2700.0 2900.0 3100.0
+1400.0 2100.0 2400.0 2800.0 3100.0 3200.0
+1500.0 1600.0 1900.0 2100.0 2900.0 3200.0
+1500.0 1700.0 2400.0 2600.0 3000.0 3200.0
+1300.0 1500.0 2300.0 2700.0 3100.0 3300.0
+1600.0 2100.0 2300.0 2600.0 3000.0 3200.0
+1900.0 2300.0 2400.0 2700.0 3000.0 3100.0
+1700.0 2300.0 2600.0 2900.0 3200.0 3300.0
+1700.0 2000.0 2200.0 2600.0 2800.0 3100.0
+1800.0 1900.0 2200.0 2600.0 2800.0 3100.0
+2000.0 2100.0 2500.0 2800.0 3000.0 3300.0
+2000.0 2100.0 2700.0 2900.0 3100.0 3300.0
+2100.0 2300.0 2800.0 2900.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2500.0 2800.0 3200.0
+1700.0 1800.0 2200.0 2500.0 2700.0 3000.0
+1500.0 1700.0 2100.0 2500.0 2800.0 3100.0
+1800.0 2100.0 2400.0 2900.0 3200.0 3300.0
+1800.0 2100.0 2700.0 2900.0 3100.0 3300.0
+1700.0 2000.0 2200.0 2500.0 2800.0 3100.0
+1300.0 1900.0 2200.0 2600.0 2800.0 3000.0
+1400.0 1900.0 2300.0 2700.0 2900.0 3200.0
+1800.0 2200.0 2500.0 2800.0 3000.0 3100.0
+1800.0 2300.0 2600.0 2700.0 3000.0 3200.0
+1500.0 1700.0 2200.0 2500.0 2800.0 3100.0
+1500.0 1700.0 2100.0 2600.0 2800.0 3100.0
+1400.0 1500.0 1900.0 2700.0 3100.0 3200.0
+2000.0 2500.0 2900.0 3100.0 3300.0 3400.0
+1200.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1700.0 1900.0 2100.0 2500.0 2700.0 3100.0
+1500.0 2300.0 2500.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2700.0 3000.0
+1800.0 1900.0 2300.0 2500.0 2700.0 3100.0
+1900.0 2000.0 2300.0 2600.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2600.0 2800.0 3200.0
+1400.0 1700.0 2300.0 2600.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2500.0 2800.0 3200.0
+2200.0 2600.0 2900.0 3100.0 3400.0 3500.0
+2200.0 2500.0 2900.0 3100.0 3300.0 3500.0
+1800.0 2100.0 2400.0 2900.0 3100.0 3300.0
+1600.0 1800.0 2300.0 2600.0 2900.0 3100.0
+1200.0 1400.0 2200.0 2400.0 3000.0 3200.0
+1300.0 1700.0 2100.0 2400.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2200.0 3000.0 3200.0
+1500.0 1600.0 2500.0 2800.0 3100.0 3300.0
+1400.0 1600.0 2300.0 2700.0 3000.0 3300.0
+1400.0 1600.0 2200.0 2500.0 2900.0 3100.0
+1300.0 1600.0 2300.0 2600.0 3100.0 3300.0
+1600.0 1700.0 2200.0 2400.0 2900.0 3200.0
+1700.0 1800.0 2100.0 2300.0 3000.0 3300.0
+1300.0 1400.0 2300.0 2600.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2500.0 2900.0 3200.0
+1800.0 1900.0 2200.0 2400.0 2700.0 3100.0
+1800.0 1900.0 2200.0 2400.0 2800.0 3100.0
+1600.0 1700.0 2200.0 2400.0 2700.0 3100.0
+1400.0 1600.0 2200.0 2500.0 3000.0 3300.0
+1500.0 1700.0 2200.0 2400.0 3000.0 3400.0
+1600.0 1700.0 2200.0 2500.0 2700.0 3200.0
+1700.0 1800.0 2100.0 2200.0 2800.0 3200.0
+1600.0 1700.0 2100.0 2200.0 3100.0 3300.0
+1500.0 1600.0 2100.0 2200.0 3100.0 3300.0
+1000.0 1800.0 2200.0 2500.0 3100.0 3300.0
+1100.0 1700.0 2200.0 2500.0 3000.0 3200.0
+1400.0 1800.0 2100.0 2400.0 2800.0 3000.0
+1500.0 1800.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2500.0 2800.0 3000.0 3400.0 3500.0
+2000.0 2500.0 2900.0 3200.0 3400.0 3500.0
+1400.0 1700.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1900.0 2300.0 2500.0 3000.0 3200.0
+1400.0 2000.0 2300.0 2600.0 2900.0 3100.0
+1400.0 1900.0 2200.0 2500.0 2700.0 3100.0
+1600.0 1800.0 2000.0 2400.0 3000.0 3200.0
+1300.0 1800.0 2400.0 2700.0 3100.0 3300.0
+1400.0 1600.0 2400.0 2600.0 3100.0 3200.0
+1400.0 1500.0 1600.0 2400.0 3200.0 3300.0
+1900.0 2300.0 2600.0 2900.0 3100.0 3200.0
+1100.0 1700.0 2500.0 2600.0 3100.0 3300.0
+1300.0 1700.0 2400.0 2500.0 3000.0 3300.0
+1400.0 1700.0 2400.0 2500.0 3000.0 3400.0
+1400.0 1600.0 2400.0 2500.0 2900.0 3400.0
+1400.0 1700.0 2400.0 2500.0 3100.0 3400.0
+1500.0 1600.0 2300.0 2600.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2400.0 3000.0 3200.0
+1600.0 1800.0 2200.0 2300.0 3000.0 3100.0
+1500.0 1900.0 2400.0 2700.0 3000.0 3200.0
+1300.0 1800.0 2400.0 2700.0 3300.0 3400.0
+1400.0 1700.0 2200.0 2500.0 2900.0 3200.0
+1800.0 2100.0 2500.0 2700.0 3100.0 3400.0
+1000.0 1500.0 1800.0 2200.0 3000.0 3100.0
+2100.0 2600.0 2900.0 3100.0 3300.0 3400.0
+1900.0 2000.0 2200.0 2500.0 3100.0 3300.0
+1700.0 1900.0 2300.0 2600.0 2900.0 3300.0
+1600.0 1800.0 2000.0 2200.0 3100.0 3300.0
+1300.0 1700.0 2300.0 2600.0 3100.0 3200.0
+1400.0 2100.0 2400.0 2700.0 3100.0 3300.0
+1200.0 1500.0 2200.0 2600.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2500.0 3000.0 3100.0
+1600.0 1900.0 2300.0 2500.0 3000.0 3100.0
+1500.0 1800.0 2600.0 2800.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2500.0 3100.0 3400.0
+1500.0 1600.0 2300.0 2600.0 3100.0 3400.0
+1200.0 1500.0 2500.0 2600.0 3100.0 3400.0
+1200.0 1500.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1600.0 2500.0 2600.0 3100.0 3300.0
+1900.0 2300.0 2600.0 2900.0 3400.0 3500.0
+900.0 1500.0 2600.0 2700.0 3100.0 3200.0
+2100.0 2500.0 2900.0 3100.0 3300.0 3400.0
+1400.0 2100.0 2300.0 2500.0 3000.0 3300.0
+1200.0 1600.0 1700.0 2300.0 3100.0 3200.0
+1100.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1500.0 2000.0 2400.0 2700.0 3100.0 3200.0
+2000.0 2100.0 2400.0 2600.0 2900.0 3300.0
+1400.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1200.0 1600.0 2300.0 2500.0 3000.0 3200.0
+1500.0 1600.0 2300.0 2500.0 3100.0 3200.0
+2300.0 2500.0 2700.0 2800.0 3100.0 3300.0
+2200.0 2300.0 2500.0 2700.0 3100.0 3200.0
+1300.0 1900.0 2300.0 2500.0 2800.0 3000.0
+1200.0 1800.0 2300.0 2500.0 3000.0 3300.0
+1400.0 1600.0 2400.0 2600.0 3200.0 3400.0
+1500.0 1600.0 2300.0 2500.0 3100.0 3400.0
+1400.0 1900.0 2400.0 2500.0 2700.0 3100.0
+1200.0 1600.0 2200.0 2600.0 3100.0 3300.0
+1300.0 1600.0 2300.0 2600.0 3100.0 3400.0
+1500.0 1600.0 2200.0 2500.0 3100.0 3400.0
+1600.0 2000.0 2500.0 2700.0 3000.0 3200.0
+1600.0 1700.0 2000.0 2300.0 3000.0 3200.0
+1400.0 1700.0 1800.0 2300.0 3100.0 3200.0
+2100.0 2200.0 2400.0 2600.0 3200.0 3300.0
+1600.0 1900.0 2400.0 2500.0 2700.0 3200.0
+2200.0 2300.0 2500.0 2700.0 3100.0 3300.0
+2200.0 2300.0 2600.0 2700.0 3100.0 3300.0
+1400.0 1800.0 2300.0 2500.0 2800.0 3200.0
+1600.0 1800.0 2300.0 2500.0 2700.0 3100.0
+1400.0 1600.0 1800.0 2500.0 2900.0 3000.0
+1400.0 1600.0 1900.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2000.0 2600.0 3000.0 3200.0
+1400.0 1700.0 2400.0 2500.0 3100.0 3300.0
+2300.0 2400.0 2700.0 3000.0 3200.0 3400.0
+1300.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1300.0 1700.0 2100.0 2300.0 3000.0 3100.0
+1300.0 1700.0 2000.0 2200.0 3000.0 3100.0
+1400.0 1700.0 1900.0 2300.0 3000.0 3100.0
+1400.0 1600.0 1800.0 2300.0 2900.0 3000.0
+1300.0 1800.0 2400.0 2600.0 3000.0 3300.0
+2200.0 2300.0 2500.0 2800.0 3000.0 3200.0
+1900.0 2200.0 2400.0 2600.0 2900.0 3300.0
+1900.0 2100.0 2400.0 2600.0 3200.0 3400.0
+1900.0 2400.0 2600.0 2800.0 3200.0 3400.0
+1800.0 2100.0 2500.0 2600.0 3200.0 3400.0
+1500.0 1900.0 2400.0 2600.0 2900.0 3100.0
+1200.0 1600.0 2300.0 2500.0 3200.0 3300.0
+1100.0 1400.0 2300.0 2400.0 3000.0 3300.0
+1000.0 1800.0 2400.0 2500.0 3300.0 3400.0
+1000.0 1700.0 2400.0 2500.0 3300.0 3400.0
+2000.0 2400.0 2800.0 3000.0 3300.0 3500.0
+1400.0 2100.0 2500.0 2700.0 3300.0 3400.0
+1200.0 1900.0 2500.0 2600.0 3200.0 3300.0
+1400.0 2000.0 2500.0 2600.0 3100.0 3300.0
+1800.0 2200.0 2700.0 3000.0 3300.0 3500.0
+1700.0 2200.0 2400.0 2700.0 3100.0 3300.0
+1000.0 2000.0 2300.0 2400.0 3300.0 3400.0
+1400.0 1900.0 2400.0 2600.0 3300.0 3400.0
+1300.0 1800.0 2400.0 2500.0 3100.0 3300.0
+1600.0 2000.0 2500.0 2600.0 3200.0 3300.0
+2100.0 2500.0 2700.0 3000.0 3200.0 3400.0
+1600.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1400.0 1700.0 1900.0 2100.0 3300.0 3400.0
+1500.0 1700.0 2000.0 2200.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2300.0 2600.0 2900.0
+1600.0 1700.0 2300.0 2500.0 2800.0 3000.0
+1600.0 1700.0 2200.0 2300.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2400.0 2800.0 3200.0
+1400.0 1700.0 2300.0 2400.0 3000.0 3200.0
+1600.0 1700.0 2100.0 2300.0 2900.0 3300.0
+1500.0 2100.0 2300.0 2600.0 3100.0 3300.0
+1100.0 1500.0 2200.0 2300.0 3100.0 3300.0
+1000.0 1800.0 2300.0 2400.0 3100.0 3200.0
+900.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1000.0 1800.0 2400.0 2500.0 3100.0 3200.0
+1700.0 2200.0 2500.0 2900.0 3400.0 3500.0
+1300.0 1900.0 2300.0 2400.0 3300.0 3400.0
+1100.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2500.0 3200.0 3300.0
+1200.0 1500.0 2200.0 2300.0 3000.0 3200.0
+1200.0 1800.0 2200.0 2300.0 3000.0 3200.0
+1000.0 1800.0 2400.0 2500.0 3100.0 3300.0
+900.0 1800.0 2600.0 2700.0 3300.0 3400.0
+900.0 1900.0 2700.0 2800.0 3300.0 3400.0
+1800.0 2400.0 2700.0 3100.0 3400.0 3500.0
+1400.0 1600.0 2200.0 2400.0 2900.0 3200.0
+1700.0 2300.0 2500.0 2700.0 3300.0 3400.0
+1400.0 1900.0 2400.0 2600.0 3200.0 3400.0
+1300.0 1500.0 2200.0 2400.0 2700.0 3100.0
+1500.0 1600.0 2000.0 2200.0 2900.0 3100.0
+1500.0 1600.0 1800.0 1900.0 2800.0 3300.0
+1700.0 1800.0 2000.0 2300.0 3000.0 3300.0
+2200.0 2400.0 2600.0 2700.0 3300.0 3400.0
+1700.0 1900.0 2300.0 2400.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2400.0 2700.0 3100.0
+1700.0 2300.0 2600.0 3000.0 3300.0 3400.0
+2200.0 2300.0 2500.0 2700.0 3100.0 3400.0
+1600.0 1800.0 2000.0 2200.0 3200.0 3300.0
+2100.0 2500.0 2700.0 2900.0 3400.0 3500.0
+2100.0 2400.0 2600.0 2700.0 3100.0 3300.0
+2100.0 2400.0 2700.0 3100.0 3300.0 3400.0
+1400.0 1700.0 2200.0 2600.0 2900.0 3200.0
+1000.0 1900.0 2200.0 2400.0 3100.0 3200.0
+1100.0 1600.0 2500.0 2600.0 3100.0 3300.0
+1300.0 1600.0 2200.0 2300.0 2800.0 3300.0
+1000.0 2000.0 2500.0 2600.0 3300.0 3400.0
+1700.0 2200.0 2400.0 2700.0 3200.0 3400.0
+1200.0 2000.0 2400.0 2500.0 3100.0 3200.0
+1100.0 1700.0 2100.0 2200.0 3000.0 3200.0
+1100.0 1600.0 2100.0 2200.0 3100.0 3300.0
+1100.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1700.0 2300.0 2400.0 3300.0 3400.0
+1300.0 1800.0 2300.0 2400.0 3300.0 3400.0
+1000.0 1800.0 2300.0 2400.0 3100.0 3300.0
+1400.0 2000.0 2300.0 2500.0 2900.0 3200.0
+1100.0 1900.0 2400.0 2500.0 3100.0 3200.0
+1000.0 2000.0 2600.0 2700.0 3300.0 3400.0
+1200.0 1600.0 2200.0 2300.0 3100.0 3300.0
+1300.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1000.0 1700.0 2400.0 2600.0 3300.0 3400.0
+1000.0 1700.0 2400.0 2600.0 3200.0 3300.0
+2000.0 2400.0 2700.0 3100.0 3300.0 3400.0
+1500.0 1900.0 2200.0 2400.0 3200.0 3300.0
+1400.0 1700.0 2100.0 2200.0 3100.0 3300.0
+2200.0 2400.0 2600.0 2900.0 3300.0 3400.0
+1300.0 1900.0 2100.0 2500.0 3000.0 3200.0
+1900.0 2100.0 2300.0 2400.0 3000.0 3300.0
+1100.0 2200.0 2600.0 2700.0 3300.0 3400.0
+1700.0 1900.0 2400.0 2500.0 3000.0 3400.0
+1800.0 2100.0 2600.0 2900.0 3100.0 3400.0
+1900.0 2300.0 2900.0 3100.0 3300.0 3400.0
+1900.0 2400.0 2600.0 3000.0 3300.0 3500.0
+1400.0 2100.0 2400.0 2500.0 2700.0 3000.0
+1300.0 1600.0 1900.0 2100.0 2900.0 3000.0
+1900.0 2000.0 2200.0 2300.0 3000.0 3300.0
+1300.0 1600.0 2200.0 2500.0 3000.0 3300.0
+1100.0 1800.0 2300.0 2500.0 3100.0 3300.0
+1100.0 1700.0 2300.0 2500.0 3000.0 3200.0
+1200.0 1600.0 2300.0 2400.0 3000.0 3200.0
+1300.0 1600.0 2200.0 2400.0 2900.0 3200.0
+1800.0 2300.0 2600.0 3000.0 3300.0 3500.0
+1500.0 2000.0 2400.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2200.0 2500.0 2800.0 3000.0
+1800.0 2100.0 2300.0 2400.0 2700.0 3000.0
+1800.0 2100.0 2300.0 2500.0 2900.0 3200.0
+1700.0 1900.0 2100.0 2700.0 2900.0 3200.0
+1800.0 2100.0 2300.0 2600.0 2900.0 3000.0
+1600.0 1800.0 2100.0 2400.0 2600.0 2900.0
+1800.0 1900.0 2400.0 2800.0 3000.0 3100.0
+2000.0 2400.0 2700.0 2900.0 3200.0 3400.0
+1900.0 2100.0 2800.0 2900.0 3200.0 3400.0
+2000.0 2100.0 2500.0 2800.0 2900.0 3100.0
+1800.0 1900.0 2500.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2000.0 2100.0 3000.0 3200.0
+1600.0 1700.0 2000.0 2100.0 2900.0 3200.0
+2000.0 2200.0 2400.0 2800.0 3100.0 3300.0
+2100.0 2300.0 2800.0 2900.0 3300.0 3400.0
+1900.0 2000.0 2300.0 2400.0 2900.0 3100.0
+1500.0 1800.0 2300.0 2500.0 3000.0 3300.0
+1200.0 1800.0 2500.0 2600.0 2900.0 3000.0
+1400.0 1700.0 2200.0 2600.0 2900.0 3000.0
+1500.0 1700.0 2200.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2900.0 3200.0
+1800.0 1900.0 2200.0 2600.0 2900.0 3200.0
+1800.0 2000.0 2200.0 2400.0 2800.0 3100.0
+1400.0 1600.0 1900.0 2100.0 2700.0 3200.0
+1500.0 2000.0 2200.0 2500.0 3000.0 3200.0
+1700.0 1800.0 2000.0 2200.0 3100.0 3300.0
+1800.0 1900.0 2100.0 2400.0 3000.0 3100.0
+1800.0 2100.0 2400.0 2600.0 3000.0 3100.0
+2000.0 2300.0 2600.0 2800.0 3000.0 3300.0
+2100.0 2300.0 2800.0 2900.0 3200.0 3400.0
+1800.0 1900.0 2500.0 2800.0 3100.0 3200.0
+1800.0 2000.0 2200.0 2500.0 2900.0 3000.0
+1700.0 1800.0 2100.0 2700.0 2900.0 3000.0
+1700.0 1800.0 2600.0 2800.0 3100.0 3300.0
+1600.0 2000.0 2300.0 2800.0 3100.0 3300.0
+1500.0 1600.0 1900.0 2000.0 2900.0 3200.0
+2100.0 2300.0 2700.0 2800.0 3000.0 3200.0
+2000.0 2200.0 2400.0 2600.0 3100.0 3200.0
+1800.0 2100.0 2400.0 2500.0 3000.0 3200.0
+1800.0 2100.0 2500.0 2600.0 2900.0 3200.0
+2100.0 2400.0 2800.0 2900.0 3300.0 3400.0
+1800.0 2000.0 2300.0 2600.0 3100.0 3400.0
+1700.0 2000.0 2300.0 2600.0 2900.0 3300.0
+1800.0 1900.0 2300.0 2500.0 2800.0 3000.0
+1400.0 1600.0 2200.0 2500.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2300.0 2600.0 3100.0
+1700.0 1800.0 2100.0 2500.0 2800.0 3200.0
+1500.0 1600.0 2200.0 2700.0 2800.0 3200.0
+2100.0 2300.0 2700.0 2800.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2400.0 3000.0 3300.0
+1500.0 1600.0 2600.0 2800.0 3100.0 3300.0
+1800.0 2000.0 2400.0 2600.0 2900.0 3100.0
+1700.0 1800.0 2300.0 2500.0 2600.0 3100.0
+1500.0 1800.0 2100.0 2500.0 2900.0 3300.0
+1600.0 1800.0 2100.0 2500.0 3000.0 3300.0
+1700.0 1800.0 2300.0 2400.0 2800.0 3100.0
+1600.0 1700.0 2000.0 2300.0 2800.0 3100.0
+1700.0 1800.0 2200.0 2400.0 2700.0 3100.0
+2000.0 2500.0 2800.0 3000.0 3400.0 3500.0
+1900.0 2400.0 2800.0 2900.0 3400.0 3500.0
+1600.0 1700.0 2400.0 2700.0 2900.0 3100.0
+1600.0 1700.0 2500.0 2600.0 2900.0 3100.0
+1500.0 1700.0 2200.0 2600.0 2900.0 3100.0
+1700.0 2000.0 2200.0 2500.0 2900.0 3200.0
+1500.0 1700.0 2200.0 2700.0 3200.0 3300.0
+1400.0 1500.0 2100.0 2500.0 3000.0 3200.0
+1200.0 1500.0 2200.0 2400.0 2800.0 3200.0
+1500.0 1600.0 2000.0 2100.0 2900.0 3200.0
+1800.0 1900.0 2100.0 2500.0 2900.0 3200.0
+1500.0 1800.0 2300.0 2500.0 2800.0 3200.0
+1500.0 1800.0 2500.0 2800.0 3100.0 3300.0
+1300.0 1800.0 2500.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2300.0 2700.0 2900.0 3000.0
+1500.0 1600.0 2200.0 2400.0 2600.0 3100.0
+1600.0 2000.0 2500.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2000.0 2600.0 2800.0 3000.0
+1500.0 1600.0 2200.0 2600.0 2700.0 3000.0
+1200.0 1600.0 2200.0 2400.0 3000.0 3200.0
+1800.0 2300.0 2500.0 2800.0 3000.0 3100.0
+1500.0 1600.0 2500.0 2800.0 2900.0 3200.0
+1300.0 1500.0 2300.0 2800.0 3100.0 3200.0
+1700.0 1800.0 2100.0 2500.0 2800.0 3000.0
+1400.0 1800.0 2200.0 2600.0 3000.0 3200.0
+1500.0 1700.0 2000.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2600.0 3000.0 3300.0
+1700.0 2100.0 2700.0 2900.0 3300.0 3500.0
+1700.0 1800.0 2300.0 2700.0 2800.0 3100.0
+1600.0 1800.0 2200.0 2600.0 2700.0 3000.0
+1900.0 2300.0 2400.0 2600.0 2800.0 3100.0
+1300.0 1600.0 2100.0 2200.0 3100.0 3300.0
+1500.0 1800.0 2400.0 2700.0 3000.0 3100.0
+1600.0 1800.0 2000.0 2600.0 2900.0 3000.0
+1600.0 1800.0 2100.0 2700.0 2900.0 3000.0
+1600.0 1700.0 2300.0 2700.0 3000.0 3100.0
+1700.0 1800.0 2400.0 2700.0 2900.0 3100.0
+1800.0 1900.0 2500.0 2600.0 3000.0 3100.0
+1700.0 1800.0 2100.0 2400.0 2700.0 3200.0
+1700.0 2000.0 2200.0 2500.0 2800.0 3000.0
+2000.0 2400.0 2500.0 2700.0 3000.0 3100.0
+1800.0 2000.0 2600.0 2700.0 3100.0 3200.0
+2200.0 2400.0 2700.0 2900.0 3100.0 3300.0
+2300.0 2500.0 2700.0 2900.0 3100.0 3300.0
+1800.0 2200.0 2300.0 2600.0 3000.0 3100.0
+1700.0 2100.0 2300.0 2800.0 3100.0 3200.0
+2000.0 2400.0 2600.0 2800.0 3000.0 3200.0
+1500.0 2000.0 2200.0 2600.0 3100.0 3300.0
+1100.0 1600.0 2200.0 2600.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2500.0 2700.0 3000.0
+1900.0 2300.0 2400.0 2600.0 2800.0 3000.0
+1700.0 2100.0 2300.0 2600.0 2900.0 3000.0
+1600.0 1700.0 2000.0 2200.0 2600.0 3100.0
+1600.0 1900.0 2200.0 2400.0 3000.0 3100.0
+1300.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1600.0 2100.0 2300.0 2600.0 2900.0 3000.0
+1700.0 2100.0 2300.0 2500.0 2800.0 3000.0
+1600.0 2100.0 2300.0 2500.0 2800.0 3000.0
+1500.0 1800.0 2000.0 2300.0 2800.0 2900.0
+1300.0 1600.0 2300.0 2600.0 2900.0 3200.0
+1200.0 1700.0 2100.0 2600.0 3100.0 3300.0
+1800.0 2200.0 2600.0 2700.0 3200.0 3300.0
+1600.0 1700.0 1900.0 2100.0 3100.0 3200.0
+1500.0 2000.0 2300.0 2500.0 3000.0 3300.0
+1600.0 1700.0 2000.0 2500.0 2700.0 2900.0
+1600.0 1800.0 2100.0 2500.0 2900.0 3000.0
+1600.0 1700.0 2100.0 2500.0 2700.0 2900.0
+1600.0 1700.0 2200.0 2500.0 2700.0 2900.0
+1500.0 1700.0 2000.0 2600.0 2800.0 3000.0
+1200.0 1600.0 2200.0 2400.0 2800.0 3000.0
+1800.0 2200.0 2400.0 2600.0 2800.0 3000.0
+1700.0 2000.0 2200.0 2500.0 2700.0 3100.0
+1700.0 2000.0 2200.0 2500.0 2700.0 3000.0
+1600.0 1900.0 2300.0 2600.0 2800.0 3200.0
+1200.0 1400.0 2000.0 2600.0 2800.0 3000.0
+1400.0 1600.0 2200.0 2600.0 3000.0 3300.0
+1500.0 1700.0 2200.0 2400.0 2700.0 2900.0
+1600.0 1700.0 2200.0 2500.0 2800.0 3000.0
+1600.0 1700.0 2100.0 2400.0 2700.0 3000.0
+1900.0 2100.0 2400.0 2600.0 3000.0 3100.0
+1900.0 2500.0 2700.0 2800.0 3100.0 3200.0
+1800.0 2200.0 2500.0 2600.0 3000.0 3200.0
+1900.0 2200.0 2400.0 2500.0 2800.0 3100.0
+1800.0 2100.0 2300.0 2500.0 2700.0 3000.0
+2000.0 2300.0 2400.0 2600.0 2900.0 3100.0
+1400.0 1600.0 1800.0 1900.0 2700.0 3200.0
+1400.0 1600.0 1700.0 1900.0 2800.0 3100.0
+2100.0 2200.0 2600.0 3000.0 3200.0 3300.0
+1700.0 2000.0 2200.0 2400.0 2700.0 2900.0
+1500.0 1600.0 1900.0 2400.0 2600.0 2700.0
+1600.0 1700.0 2000.0 2400.0 2600.0 2800.0
+1900.0 2000.0 2500.0 2800.0 2900.0 3200.0
+1500.0 1600.0 1900.0 2100.0 2700.0 3200.0
+1500.0 1700.0 2000.0 2200.0 2900.0 3300.0
+1800.0 2000.0 2700.0 2800.0 3200.0 3300.0
+1700.0 1800.0 2400.0 2700.0 3300.0 3400.0
+1600.0 1900.0 2500.0 2700.0 3300.0 3400.0
+1200.0 1800.0 2100.0 2400.0 3100.0 3200.0
+1200.0 1800.0 2100.0 2500.0 3200.0 3300.0
+1600.0 1700.0 2200.0 2600.0 2900.0 3200.0
+1800.0 2200.0 2500.0 2600.0 3200.0 3400.0
+1000.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1100.0 2000.0 2600.0 2700.0 3200.0 3300.0
+1300.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1700.0 1800.0 2400.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2400.0 3100.0 3200.0
+1200.0 1400.0 1500.0 2300.0 3100.0 3200.0
+2100.0 2200.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2100.0 2400.0 2900.0 3100.0
+1400.0 1500.0 2100.0 2400.0 2800.0 3200.0
+1100.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1200.0 2000.0 2300.0 2700.0 3100.0 3200.0
+1300.0 1700.0 2200.0 2500.0 2900.0 3000.0
+1400.0 1700.0 1900.0 2600.0 2900.0 3100.0
+1200.0 2000.0 2300.0 2700.0 3200.0 3300.0
+1500.0 2200.0 2400.0 2600.0 3200.0 3300.0
+1400.0 1800.0 2000.0 2500.0 3000.0 3100.0
+1400.0 2000.0 2300.0 2500.0 3200.0 3300.0
+1900.0 2400.0 2600.0 2700.0 3100.0 3300.0
+1300.0 1600.0 1700.0 2200.0 3000.0 3100.0
+1300.0 1600.0 2500.0 2600.0 3100.0 3300.0
+1500.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1600.0 2400.0 2600.0 3200.0 3400.0
+1400.0 2000.0 2300.0 2500.0 2700.0 3000.0
+1500.0 1900.0 2300.0 2500.0 2700.0 3100.0
+1500.0 1600.0 1800.0 2500.0 2800.0 3000.0
+1300.0 1800.0 2200.0 2600.0 3100.0 3200.0
+1300.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1300.0 1700.0 2100.0 2400.0 3100.0 3300.0
+1300.0 1900.0 2300.0 2600.0 3000.0 3200.0
+1200.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1700.0 2200.0 2500.0 2600.0 3200.0 3400.0
+1600.0 2000.0 2200.0 2300.0 3100.0 3200.0
+1800.0 1900.0 2300.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2100.0 2500.0 3200.0 3300.0
+1900.0 2000.0 2100.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2600.0 2800.0 3300.0 3500.0
+1600.0 1800.0 2200.0 2700.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2400.0 2600.0 3000.0
+1400.0 1600.0 2100.0 2300.0 3100.0 3200.0
+1100.0 1900.0 2500.0 2600.0 3300.0 3400.0
+1200.0 1600.0 2300.0 2600.0 3100.0 3400.0
+1400.0 1600.0 2100.0 2400.0 3000.0 3300.0
+1400.0 1700.0 2100.0 2500.0 3100.0 3300.0
+1200.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1700.0 1800.0 2000.0 2300.0 3300.0 3400.0
+1300.0 1600.0 1800.0 2100.0 3100.0 3200.0
+1800.0 1900.0 2100.0 2200.0 3200.0 3400.0
+1800.0 1900.0 2100.0 2300.0 3300.0 3400.0
+1800.0 1900.0 2200.0 2300.0 3100.0 3300.0
+1800.0 2300.0 2800.0 2900.0 3200.0 3300.0
+1900.0 2200.0 2500.0 2600.0 3200.0 3300.0
+1300.0 1600.0 2300.0 2500.0 2900.0 3300.0
+1400.0 1600.0 2300.0 2500.0 2900.0 3300.0
+1400.0 1700.0 2400.0 2500.0 2900.0 3200.0
+1500.0 1700.0 2100.0 2200.0 3100.0 3200.0
+1500.0 1700.0 2100.0 2200.0 3100.0 3300.0
+1500.0 1600.0 2100.0 2300.0 2900.0 3300.0
+1300.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1200.0 1900.0 2200.0 2500.0 3000.0 3200.0
+1000.0 1300.0 2100.0 2200.0 2900.0 3200.0
+1400.0 1600.0 1700.0 2000.0 3300.0 3400.0
+1300.0 1500.0 1600.0 2000.0 3300.0 3400.0
+1300.0 1500.0 1700.0 1900.0 3300.0 3400.0
+1500.0 1600.0 2100.0 2300.0 3100.0 3400.0
+1500.0 1600.0 2300.0 2500.0 2700.0 3200.0
+1400.0 2000.0 2300.0 2400.0 2700.0 3200.0
+1200.0 1500.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1600.0 2300.0 2400.0 2700.0 3300.0
+1500.0 1700.0 2200.0 2400.0 2600.0 3100.0
+1500.0 1700.0 2300.0 2500.0 3100.0 3400.0
+1600.0 1700.0 2400.0 2600.0 3000.0 3400.0
+1600.0 1700.0 2500.0 2700.0 3100.0 3400.0
+1400.0 1500.0 2300.0 2400.0 3000.0 3300.0
+1500.0 1600.0 2100.0 2300.0 3000.0 3200.0
+1500.0 1600.0 2200.0 2400.0 2900.0 3200.0
+1500.0 1700.0 2400.0 2500.0 2900.0 3200.0
+1400.0 1900.0 2200.0 2300.0 2800.0 3200.0
+1500.0 1800.0 2100.0 2200.0 3000.0 3300.0
+2000.0 2100.0 2500.0 2600.0 3000.0 3400.0
+1000.0 1600.0 2200.0 2300.0 3200.0 3400.0
+1300.0 1500.0 2300.0 2600.0 2900.0 3300.0
+1400.0 1600.0 2500.0 2600.0 2900.0 3200.0
+1400.0 1600.0 2100.0 2400.0 3100.0 3300.0
+1500.0 2000.0 2300.0 2500.0 3100.0 3300.0
+1000.0 1700.0 2100.0 2200.0 3200.0 3300.0
+1500.0 1700.0 2200.0 2400.0 3200.0 3400.0
+1600.0 1800.0 2300.0 2400.0 3000.0 3100.0
+1300.0 1500.0 2100.0 2200.0 3000.0 3300.0
+1200.0 1400.0 2200.0 2300.0 3000.0 3300.0
+1600.0 1700.0 1900.0 2200.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2300.0 3000.0 3400.0
+1400.0 1500.0 2200.0 2500.0 2800.0 3100.0
+1800.0 1900.0 2300.0 2500.0 3000.0 3400.0
+1500.0 1700.0 2100.0 2500.0 2700.0 3100.0
+1600.0 1900.0 2400.0 2700.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2500.0 2700.0 3300.0
+1800.0 1900.0 2400.0 2500.0 2800.0 3300.0
+1300.0 1600.0 2100.0 2300.0 3000.0 3300.0
+1300.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1100.0 1500.0 2500.0 2600.0 3100.0 3400.0
+1600.0 1700.0 2200.0 2500.0 2600.0 3100.0
+1500.0 1600.0 2200.0 2500.0 2600.0 3100.0
+1600.0 2200.0 2600.0 2800.0 3100.0 3300.0
+2000.0 2200.0 2600.0 2700.0 3300.0 3400.0
+1500.0 2000.0 2200.0 2400.0 2600.0 2900.0
+1500.0 1800.0 2200.0 2400.0 3100.0 3400.0
+1800.0 2200.0 2600.0 2800.0 3400.0 3500.0
+1600.0 1700.0 2200.0 2600.0 3200.0 3400.0
+1800.0 2000.0 2300.0 2600.0 3200.0 3400.0
+1600.0 1800.0 2200.0 2600.0 3200.0 3400.0
+1500.0 1600.0 2100.0 2400.0 2800.0 3200.0
+1500.0 1800.0 2000.0 2600.0 3200.0 3300.0
+1200.0 1800.0 1900.0 2200.0 3100.0 3200.0
+1500.0 1600.0 2200.0 2400.0 3200.0 3300.0
+1800.0 1900.0 2600.0 2800.0 3000.0 3300.0
+1300.0 1600.0 2300.0 2400.0 3000.0 3100.0
+2000.0 2100.0 2400.0 2600.0 3000.0 3100.0
+2000.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1800.0 2000.0 2500.0 2600.0 3000.0 3100.0
+1800.0 2300.0 2700.0 2800.0 3400.0 3500.0
+1200.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1600.0 2000.0 2500.0 2700.0 3100.0 3400.0
+1900.0 2100.0 2600.0 2700.0 3000.0 3200.0
+1500.0 1900.0 2600.0 2800.0 3200.0 3300.0
+1600.0 1800.0 2200.0 2700.0 3200.0 3400.0
+1400.0 1800.0 2400.0 2600.0 2900.0 3200.0
+1500.0 1700.0 2500.0 2600.0 3000.0 3200.0
+1800.0 2100.0 2600.0 2800.0 3400.0 3500.0
+1700.0 2000.0 2600.0 2800.0 3000.0 3300.0
+1800.0 2100.0 2700.0 2900.0 3400.0 3500.0
+1600.0 1700.0 2600.0 2700.0 3100.0 3400.0
+1800.0 1900.0 2400.0 2600.0 2800.0 3000.0
+1600.0 2000.0 2500.0 2600.0 2900.0 3200.0
+1400.0 1800.0 2400.0 2500.0 2900.0 3100.0
+1500.0 1800.0 2400.0 2500.0 2900.0 3200.0
+1200.0 1400.0 2300.0 2500.0 2900.0 3200.0
+1400.0 1600.0 2500.0 2700.0 3000.0 3300.0
+1500.0 1900.0 2500.0 2700.0 3000.0 3300.0
+1000.0 1400.0 2600.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2100.0 2300.0 2900.0 3000.0
+1700.0 1800.0 2400.0 2600.0 2800.0 3000.0
+1500.0 2000.0 2100.0 2500.0 3000.0 3100.0
+2000.0 2100.0 2300.0 2400.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2800.0 3100.0 3200.0
+2100.0 2200.0 2600.0 2700.0 3000.0 3200.0
+1800.0 2000.0 2600.0 2800.0 3100.0 3400.0
+1700.0 2000.0 2500.0 2900.0 3100.0 3300.0
+1700.0 2000.0 2500.0 2900.0 3100.0 3400.0
+1600.0 1800.0 2500.0 2800.0 3000.0 3200.0
+1500.0 1800.0 2200.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2300.0 2600.0 3200.0 3300.0
+1500.0 1600.0 2400.0 2600.0 2800.0 3100.0
+1200.0 1600.0 2200.0 2600.0 3000.0 3200.0
+1500.0 1600.0 2000.0 2300.0 2900.0 3200.0
+1900.0 2000.0 2400.0 2700.0 3200.0 3400.0
+1900.0 2000.0 2400.0 2700.0 2800.0 3200.0
+1500.0 1700.0 2300.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2400.0 2500.0 2800.0 3100.0
+1500.0 1600.0 2200.0 2400.0 2900.0 3100.0
+1500.0 1600.0 2200.0 2500.0 3100.0 3300.0
+1600.0 2000.0 2200.0 2400.0 2700.0 3100.0
+1500.0 1700.0 2300.0 2600.0 2900.0 3300.0
+1700.0 1800.0 2100.0 2300.0 2900.0 3100.0
+1400.0 1500.0 2000.0 2500.0 2700.0 3000.0
+1800.0 1900.0 2300.0 2400.0 2800.0 3100.0
+1300.0 1800.0 2200.0 2500.0 2900.0 3100.0
+1300.0 1900.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2500.0 2700.0 3100.0
+1600.0 1700.0 2200.0 2600.0 3100.0 3300.0
+1400.0 1500.0 2300.0 2500.0 2800.0 3000.0
+1300.0 1700.0 2100.0 2500.0 3000.0 3300.0
+1600.0 1800.0 2200.0 2400.0 2800.0 3200.0
+1400.0 1500.0 2200.0 2500.0 3200.0 3300.0
+1800.0 1900.0 2200.0 2500.0 3000.0 3100.0
+1300.0 1500.0 2200.0 2400.0 2900.0 3100.0
+1300.0 1500.0 2300.0 2500.0 3100.0 3300.0
+1100.0 1500.0 2400.0 2500.0 3000.0 3200.0
+1600.0 1700.0 2400.0 2600.0 2800.0 3100.0
+1500.0 1600.0 2400.0 2500.0 2800.0 3100.0
+1500.0 1600.0 2000.0 2500.0 2800.0 3100.0
+1200.0 1700.0 2400.0 2600.0 3200.0 3300.0
+1100.0 1600.0 2400.0 2500.0 3200.0 3400.0
+1100.0 1500.0 2400.0 2500.0 3000.0 3400.0
+1100.0 1600.0 2400.0 2500.0 3100.0 3300.0
+1900.0 2000.0 2400.0 2500.0 2900.0 3100.0
+1300.0 1500.0 2200.0 2300.0 2700.0 3100.0
+1600.0 1900.0 2500.0 2800.0 3200.0 3300.0
+1900.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2600.0 3000.0 3300.0
+1800.0 1900.0 2400.0 2500.0 2900.0 3000.0
+1300.0 1500.0 2300.0 2400.0 2900.0 3000.0
+1200.0 1700.0 1800.0 2300.0 2900.0 3000.0
+1200.0 1600.0 1800.0 2200.0 2900.0 3000.0
+1200.0 1700.0 2100.0 2300.0 3100.0 3200.0
+1400.0 1900.0 2100.0 2400.0 3000.0 3200.0
+1100.0 1500.0 2500.0 2600.0 3000.0 3300.0
+1300.0 1400.0 2400.0 2500.0 2800.0 3300.0
+1300.0 1500.0 2300.0 2500.0 3200.0 3400.0
+1300.0 1900.0 2300.0 2700.0 3100.0 3200.0
+1700.0 1900.0 2200.0 2400.0 2700.0 3100.0
+1400.0 1500.0 2000.0 2500.0 2600.0 3000.0
+1500.0 1600.0 2000.0 2400.0 2600.0 3000.0
+1400.0 1700.0 2400.0 2600.0 3000.0 3300.0
+2000.0 2100.0 2300.0 2500.0 2900.0 3100.0
+1900.0 2000.0 2400.0 2500.0 2800.0 3000.0
+1800.0 1900.0 2200.0 2400.0 2700.0 3000.0
+1400.0 1600.0 1900.0 2300.0 2600.0 3000.0
+1600.0 2000.0 2600.0 2800.0 3300.0 3400.0
+1200.0 1600.0 1800.0 2100.0 3200.0 3300.0
+1900.0 2300.0 2700.0 2800.0 3400.0 3500.0
+1500.0 1600.0 2200.0 2500.0 2700.0 3100.0
+1700.0 2100.0 2300.0 2500.0 2900.0 3200.0
+1300.0 1500.0 2200.0 2500.0 3000.0 3300.0
+1400.0 1500.0 2100.0 2500.0 2600.0 2900.0
+1500.0 1600.0 2200.0 2300.0 2800.0 3300.0
+1500.0 1600.0 1800.0 2100.0 2800.0 2900.0
+1700.0 1800.0 2200.0 2400.0 2600.0 3100.0
+1600.0 1900.0 2600.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2600.0 3000.0 3400.0
+1200.0 1500.0 2300.0 2400.0 2900.0 3300.0
+1600.0 2100.0 2500.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2300.0 2500.0 2600.0 2900.0
+1500.0 1600.0 2400.0 2600.0 3000.0 3100.0
+1600.0 1800.0 2600.0 2800.0 3000.0 3200.0
+1400.0 1700.0 2200.0 2500.0 3100.0 3400.0
+1600.0 1700.0 2300.0 2600.0 2700.0 3100.0
+1600.0 1700.0 2100.0 2500.0 2700.0 3100.0
+2000.0 2200.0 2500.0 2700.0 3100.0 3400.0
+1900.0 2100.0 2400.0 2600.0 3000.0 3400.0
+1400.0 1800.0 2100.0 2600.0 2900.0 3100.0
+1000.0 1800.0 2100.0 2300.0 3100.0 3200.0
+1400.0 1500.0 2200.0 2400.0 3000.0 3300.0
+1300.0 1800.0 2200.0 2300.0 3000.0 3200.0
+1100.0 1500.0 2300.0 2400.0 3000.0 3200.0
+1400.0 1500.0 2300.0 2400.0 2900.0 3300.0
+1400.0 1500.0 2200.0 2400.0 2800.0 3300.0
+1200.0 1600.0 2100.0 2200.0 3200.0 3300.0
+1600.0 1800.0 2100.0 2300.0 2500.0 3100.0
+1500.0 1600.0 2400.0 2600.0 3000.0 3400.0
+1500.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1900.0 2500.0 2600.0 2900.0 3200.0 3300.0
+1300.0 1500.0 2100.0 2500.0 2700.0 3100.0
+1200.0 1400.0 2400.0 2500.0 2800.0 3200.0
+1600.0 1700.0 2300.0 2400.0 2900.0 3400.0
+1100.0 1800.0 2200.0 2300.0 3300.0 3400.0
+1800.0 2200.0 2500.0 2800.0 3100.0 3400.0
+1200.0 1700.0 2100.0 2700.0 3100.0 3200.0
+1300.0 1600.0 2100.0 2600.0 3000.0 3200.0
+2000.0 2200.0 2300.0 2400.0 3100.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3100.0 3400.0
+1300.0 1700.0 2000.0 2600.0 3200.0 3300.0
+1100.0 1700.0 2300.0 2400.0 3200.0 3400.0
+1100.0 1600.0 2300.0 2400.0 3200.0 3400.0
+1700.0 2300.0 2800.0 3000.0 3300.0 3400.0
+1700.0 2000.0 2300.0 2800.0 3200.0 3300.0
+1800.0 1900.0 2100.0 2600.0 3000.0 3200.0
+1300.0 2000.0 2200.0 2600.0 3000.0 3200.0
+1300.0 1500.0 2300.0 2400.0 3000.0 3400.0
+1600.0 1700.0 2100.0 2300.0 2800.0 3200.0
+1700.0 1800.0 2400.0 2700.0 2800.0 3200.0
+1800.0 1900.0 2500.0 2700.0 2800.0 3200.0
+1700.0 1800.0 2100.0 2300.0 2900.0 3300.0
+1500.0 1700.0 2300.0 2400.0 2700.0 3200.0
+1600.0 2100.0 2500.0 2800.0 3100.0 3200.0
+1400.0 1700.0 2300.0 2700.0 3000.0 3300.0
+900.0 1400.0 2300.0 2500.0 3100.0 3300.0
+1700.0 1800.0 2300.0 2400.0 3000.0 3400.0
+2000.0 2100.0 2400.0 2600.0 2900.0 3100.0
+1900.0 2500.0 2600.0 2800.0 3300.0 3400.0
+1400.0 1500.0 2200.0 2300.0 2900.0 3300.0
+1600.0 1700.0 2000.0 2500.0 2600.0 3100.0
+1700.0 1800.0 2200.0 2300.0 2900.0 3200.0
+2100.0 2500.0 2800.0 3100.0 3300.0 3500.0
+1900.0 2400.0 2600.0 2700.0 3300.0 3400.0
+1700.0 2100.0 2500.0 2600.0 3300.0 3400.0
+1100.0 1500.0 2300.0 2400.0 3100.0 3400.0
+1200.0 1500.0 2300.0 2400.0 3300.0 3400.0
+1200.0 1800.0 2200.0 2400.0 3300.0 3400.0
+1500.0 1900.0 2200.0 2300.0 3100.0 3300.0
+1300.0 1600.0 1800.0 2100.0 3200.0 3300.0
+1600.0 1800.0 2400.0 2600.0 2900.0 3300.0
+1700.0 1900.0 2400.0 2600.0 3000.0 3400.0
+1300.0 1800.0 2200.0 2300.0 2900.0 3200.0
+1400.0 1700.0 2200.0 2300.0 3200.0 3400.0
+1400.0 1600.0 2200.0 2400.0 3200.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3200.0 3500.0
+1600.0 1700.0 2500.0 2600.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2500.0 2900.0 3400.0
+1700.0 1800.0 2300.0 2400.0 2900.0 3500.0
+1700.0 1800.0 2300.0 2400.0 3000.0 3500.0
+1600.0 1700.0 2300.0 2500.0 2700.0 3400.0
+1800.0 1900.0 2400.0 2500.0 3000.0 3500.0
+1300.0 1600.0 1800.0 2500.0 3100.0 3300.0
+1200.0 1700.0 2000.0 2200.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2300.0 3200.0 3400.0
+1200.0 1600.0 2200.0 2400.0 3200.0 3400.0
+1600.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1300.0 1600.0 2200.0 2300.0 3000.0 3400.0
+1900.0 2100.0 2400.0 2500.0 2800.0 3100.0
+1400.0 2000.0 2500.0 2700.0 3100.0 3200.0
+1700.0 1800.0 2400.0 2500.0 2800.0 3300.0
+1900.0 2000.0 2400.0 2600.0 2800.0 3400.0
+1600.0 2200.0 2500.0 2800.0 3200.0 3300.0
+1200.0 1700.0 2300.0 2400.0 3000.0 3300.0
+1200.0 1400.0 2200.0 2300.0 2900.0 3200.0
+1600.0 1800.0 2400.0 2700.0 3200.0 3400.0
+1600.0 1900.0 2400.0 2600.0 3100.0 3400.0
+1500.0 1800.0 2400.0 2600.0 3000.0 3400.0
+1600.0 1700.0 2400.0 2500.0 3100.0 3500.0
+1500.0 1600.0 2100.0 2300.0 2700.0 3200.0
+1500.0 1600.0 2100.0 2200.0 2600.0 3100.0
+1700.0 1900.0 2400.0 2700.0 3300.0 3400.0
+1200.0 1500.0 2200.0 2300.0 3300.0 3400.0
+1300.0 1600.0 2100.0 2200.0 3300.0 3400.0
+1400.0 1500.0 2100.0 2200.0 3200.0 3400.0
+1800.0 1900.0 2300.0 2400.0 2800.0 3300.0
+1900.0 2000.0 2400.0 2500.0 2800.0 3200.0
+2000.0 2100.0 2400.0 2600.0 2800.0 3200.0
+1500.0 2100.0 2300.0 2500.0 2800.0 3200.0
+1500.0 1800.0 2300.0 2400.0 3000.0 3200.0
+1700.0 1800.0 2600.0 2800.0 3000.0 3200.0
+1900.0 2500.0 2800.0 2900.0 3200.0 3300.0
+1100.0 1400.0 2500.0 2800.0 3000.0 3200.0
+1200.0 1400.0 2700.0 2900.0 3100.0 3300.0
+1200.0 1400.0 2600.0 2900.0 3000.0 3300.0
+1200.0 1400.0 2700.0 2900.0 3000.0 3400.0
+1200.0 1600.0 2600.0 2800.0 3100.0 3400.0
+1300.0 1800.0 2400.0 2500.0 2900.0 3200.0
+1400.0 1700.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1900.0 2300.0 2400.0 2900.0 3300.0
+1800.0 1900.0 2600.0 2700.0 3100.0 3400.0
+1800.0 2000.0 2600.0 2700.0 3100.0 3400.0
+1800.0 1900.0 2600.0 2700.0 3000.0 3400.0
+1400.0 1800.0 2300.0 2500.0 2700.0 3000.0
+1600.0 1700.0 2500.0 2700.0 3200.0 3400.0
+1500.0 1700.0 2400.0 2700.0 3000.0 3200.0
+1500.0 1900.0 2400.0 2700.0 3100.0 3200.0
+1900.0 2100.0 2700.0 2800.0 3200.0 3300.0
+1600.0 2000.0 2300.0 2400.0 3200.0 3400.0
+1500.0 1700.0 2500.0 2700.0 3200.0 3300.0
+1700.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1800.0 1900.0 2600.0 2800.0 3100.0 3400.0
+1700.0 1800.0 2500.0 2800.0 2900.0 3200.0
+1600.0 1700.0 2500.0 2700.0 3000.0 3300.0
+1200.0 1700.0 2700.0 2800.0 3100.0 3300.0
+1200.0 1500.0 2700.0 2900.0 3100.0 3300.0
+1500.0 1800.0 2400.0 2700.0 3100.0 3400.0
+1400.0 1600.0 2600.0 2800.0 3000.0 3300.0
+1600.0 1800.0 2500.0 2700.0 3000.0 3400.0
+1500.0 1800.0 2300.0 2600.0 3100.0 3400.0
+1500.0 1700.0 2300.0 2500.0 2700.0 3300.0
+2000.0 2100.0 2500.0 2700.0 2900.0 3300.0
+2200.0 2300.0 2600.0 2700.0 3200.0 3400.0
+1400.0 1800.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2600.0 2700.0 3100.0 3400.0
+1300.0 1700.0 2100.0 2500.0 3100.0 3300.0
+2100.0 2200.0 2600.0 2800.0 3300.0 3400.0
+2100.0 2300.0 2700.0 2800.0 3300.0 3400.0
+1600.0 1700.0 2500.0 2700.0 3100.0 3300.0
+1400.0 1700.0 2600.0 2700.0 3200.0 3400.0
+1200.0 1500.0 2600.0 2800.0 3100.0 3300.0
+1800.0 1900.0 2500.0 2600.0 3000.0 3400.0
+1700.0 1800.0 2400.0 2600.0 2900.0 3000.0
+1200.0 1600.0 2800.0 3000.0 3200.0 3300.0
+1600.0 1700.0 2300.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2200.0 2500.0 2800.0 3300.0
+1700.0 1800.0 2600.0 2700.0 3000.0 3400.0
+1500.0 1600.0 2600.0 2800.0 3000.0 3300.0
+1100.0 1300.0 2400.0 2900.0 3000.0 3200.0
+1100.0 1500.0 2700.0 2800.0 3100.0 3300.0
+1600.0 1800.0 2000.0 2300.0 3300.0 3400.0
+1800.0 2000.0 2100.0 2400.0 3300.0 3400.0
+1800.0 2000.0 2500.0 2600.0 2900.0 3300.0
+1600.0 1700.0 2400.0 2700.0 2900.0 3300.0
+1600.0 1700.0 2600.0 2800.0 3100.0 3300.0
+1500.0 1700.0 1900.0 2100.0 3000.0 3300.0
+1900.0 2000.0 2100.0 2300.0 3200.0 3400.0
+2100.0 2200.0 2500.0 2600.0 2900.0 3300.0
+1800.0 2000.0 2200.0 2400.0 3300.0 3400.0
+1700.0 1800.0 2100.0 2300.0 3300.0 3400.0
+2000.0 2200.0 2500.0 2600.0 3200.0 3400.0
+1700.0 1900.0 2100.0 2800.0 3100.0 3200.0
+1800.0 1900.0 2500.0 2900.0 3100.0 3200.0
+1800.0 1900.0 2500.0 2900.0 3000.0 3200.0
+1300.0 1500.0 1800.0 1900.0 2700.0 3200.0
+1000.0 1300.0 2400.0 3000.0 3300.0 3400.0
+1400.0 1600.0 1800.0 1900.0 2900.0 3300.0
+1500.0 1700.0 1900.0 2000.0 2800.0 3200.0
+1800.0 2000.0 2300.0 2500.0 2700.0 3100.0
+1800.0 1900.0 2200.0 2300.0 2800.0 3200.0
+1200.0 1900.0 2500.0 2600.0 2900.0 3000.0
+1200.0 1900.0 2400.0 2600.0 2900.0 3000.0
+1800.0 2000.0 2100.0 2400.0 3000.0 3200.0
+1900.0 2200.0 2600.0 2900.0 3100.0 3200.0
+1600.0 1700.0 2000.0 2100.0 2700.0 3200.0
+1600.0 1800.0 2300.0 2800.0 3100.0 3200.0
+1700.0 1900.0 2400.0 2700.0 2900.0 3300.0
+1900.0 2000.0 2400.0 2800.0 3200.0 3300.0
+1400.0 1600.0 2300.0 2500.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2200.0 2700.0 3200.0
+2000.0 2100.0 2600.0 2900.0 3300.0 3400.0
+1200.0 1500.0 2300.0 2500.0 2900.0 3200.0
+1200.0 1400.0 2200.0 2400.0 2900.0 3200.0
+1600.0 2200.0 2400.0 2600.0 3200.0 3400.0
+1700.0 1800.0 2400.0 2500.0 3000.0 3100.0
+1700.0 1800.0 2200.0 2600.0 3100.0 3200.0
+1200.0 1900.0 2300.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2000.0 2800.0 3200.0 3300.0
+1500.0 1700.0 2400.0 2500.0 3000.0 3100.0
+1400.0 2000.0 2400.0 2600.0 3000.0 3300.0
+1200.0 1400.0 2400.0 2800.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2100.0 2900.0 3300.0
+1500.0 1600.0 2000.0 2200.0 2800.0 3300.0
+1200.0 1500.0 2100.0 2200.0 3000.0 3300.0
+1400.0 2000.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2700.0 3200.0 3300.0
+1700.0 1900.0 2300.0 2600.0 2800.0 3200.0
+2100.0 2300.0 2600.0 2800.0 3100.0 3200.0
+1400.0 1800.0 2400.0 2500.0 3000.0 3200.0
+1500.0 2100.0 2400.0 2700.0 3000.0 3300.0
+1600.0 1700.0 2100.0 2700.0 3000.0 3100.0
+1500.0 1800.0 2200.0 2700.0 3100.0 3300.0
+1300.0 1500.0 2400.0 2500.0 2900.0 3200.0
+1200.0 1500.0 2500.0 2600.0 3000.0 3200.0
+1100.0 1500.0 2400.0 2500.0 2900.0 3300.0
+1800.0 1900.0 2400.0 2500.0 2800.0 3000.0
+1700.0 1800.0 2100.0 2800.0 3100.0 3200.0
+1900.0 2200.0 2400.0 2900.0 3100.0 3200.0
+1500.0 1700.0 2300.0 2600.0 2800.0 3100.0
+1300.0 1500.0 1900.0 2500.0 3000.0 3100.0
+1700.0 1800.0 2400.0 2700.0 3100.0 3200.0
+1900.0 2500.0 2900.0 3100.0 3300.0 3400.0
+1500.0 1800.0 2000.0 2600.0 2900.0 3100.0
+1900.0 2300.0 2500.0 2800.0 3200.0 3400.0
+1500.0 2100.0 2500.0 2700.0 3200.0 3400.0
+1500.0 2100.0 2500.0 2700.0 2900.0 3200.0
+1800.0 2300.0 2800.0 2900.0 3300.0 3400.0
+1600.0 1900.0 2200.0 2600.0 3000.0 3300.0
+1400.0 1900.0 2400.0 2600.0 2800.0 3100.0
+1300.0 1700.0 2500.0 2600.0 3000.0 3200.0
+1400.0 1800.0 2100.0 2500.0 2800.0 3100.0
+1700.0 2400.0 2600.0 3000.0 3300.0 3400.0
+2200.0 2400.0 2700.0 3000.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2700.0 3000.0 3200.0
+1300.0 1700.0 2300.0 2600.0 2900.0 3200.0
+1400.0 1900.0 2200.0 2500.0 2700.0 3000.0
+1500.0 1900.0 2200.0 2800.0 3100.0 3300.0
+1400.0 1600.0 1800.0 2200.0 3200.0 3400.0
+1700.0 2000.0 2200.0 2700.0 3200.0 3300.0
+1400.0 1900.0 2500.0 2700.0 3300.0 3400.0
+1500.0 2100.0 2300.0 2500.0 2800.0 3100.0
+1500.0 2000.0 2300.0 2500.0 2800.0 3100.0
+1500.0 1600.0 2400.0 2800.0 3000.0 3200.0
+1400.0 1600.0 2200.0 2700.0 3000.0 3100.0
+1200.0 1800.0 2000.0 2300.0 2900.0 3100.0
+1300.0 1900.0 2400.0 2700.0 3200.0 3300.0
+2200.0 2500.0 2800.0 3100.0 3400.0 3500.0
+2100.0 2400.0 2900.0 3000.0 3100.0 3300.0
+1200.0 1500.0 1700.0 2300.0 2900.0 3000.0
+1600.0 2200.0 2600.0 2800.0 3200.0 3300.0
+1700.0 2300.0 2500.0 2800.0 3100.0 3300.0
+1400.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1700.0 2500.0 2600.0 3100.0 3400.0
+1300.0 1700.0 2500.0 2600.0 3100.0 3400.0
+1400.0 2100.0 2300.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1100.0 1900.0 2100.0 2500.0 3100.0 3200.0
+1300.0 1400.0 2500.0 2600.0 3000.0 3300.0
+1300.0 2000.0 2400.0 2600.0 3100.0 3300.0
+1500.0 2000.0 2300.0 2600.0 3200.0 3400.0
+1400.0 1900.0 2200.0 2700.0 3000.0 3200.0
+1600.0 2100.0 2500.0 2600.0 3000.0 3200.0
+1600.0 2100.0 2500.0 2700.0 3000.0 3200.0
+1500.0 2000.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2400.0 2600.0 2900.0 3400.0 3500.0
+1400.0 1700.0 2300.0 2700.0 3000.0 3200.0
+1800.0 2300.0 2900.0 3100.0 3400.0 3500.0
+1700.0 2100.0 2300.0 2500.0 3000.0 3100.0
+1900.0 2100.0 2500.0 3000.0 3300.0 3400.0
+1300.0 1500.0 1800.0 2500.0 2800.0 3000.0
+1300.0 1400.0 2000.0 2400.0 2800.0 3200.0
+1300.0 2100.0 2400.0 2600.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2600.0 3000.0 3200.0
+1400.0 1900.0 2400.0 2600.0 3100.0 3200.0
+1300.0 1800.0 2500.0 2600.0 3100.0 3200.0
+1500.0 2100.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1700.0 2000.0 2700.0 2900.0 3100.0
+1400.0 2000.0 2200.0 2400.0 2700.0 3100.0
+1200.0 1400.0 2600.0 2700.0 2900.0 3100.0
+1500.0 2100.0 2300.0 2500.0 2700.0 3100.0
+1800.0 2100.0 2500.0 2600.0 3100.0 3200.0
+1200.0 1700.0 2100.0 2500.0 3200.0 3300.0
+1400.0 2100.0 2300.0 2700.0 3200.0 3300.0
+1700.0 2000.0 2600.0 2800.0 3100.0 3200.0
+1400.0 1700.0 2300.0 2700.0 3200.0 3300.0
+1300.0 1600.0 2200.0 2400.0 3100.0 3200.0
+1400.0 1500.0 2200.0 2500.0 3000.0 3200.0
+1400.0 1700.0 2300.0 2500.0 2800.0 3100.0
+1500.0 1700.0 2200.0 2500.0 2700.0 3100.0
+1500.0 1700.0 2200.0 2500.0 2900.0 3100.0
+1800.0 2000.0 2700.0 2900.0 3100.0 3400.0
+1300.0 1700.0 2100.0 2200.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2700.0 2900.0 3300.0
+1500.0 1600.0 2700.0 2800.0 3000.0 3300.0
+1400.0 1500.0 2500.0 2700.0 2900.0 3200.0
+1100.0 1600.0 2400.0 2600.0 3000.0 3200.0
+1600.0 2000.0 2700.0 2900.0 3300.0 3400.0
+1400.0 1500.0 2600.0 2800.0 3000.0 3300.0
+1400.0 1500.0 2600.0 2700.0 3000.0 3300.0
+1400.0 1500.0 2500.0 2700.0 2900.0 3300.0
+1700.0 1900.0 2600.0 2900.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2700.0 3100.0 3200.0
+1200.0 1700.0 2300.0 2700.0 3000.0 3200.0
+1500.0 1600.0 2500.0 2800.0 3000.0 3300.0
+1500.0 1600.0 1700.0 1800.0 3100.0 3400.0
+1500.0 1600.0 2300.0 2700.0 3000.0 3300.0
+1300.0 1500.0 2600.0 2700.0 3200.0 3300.0
+2100.0 2200.0 2500.0 2700.0 3100.0 3200.0
+2100.0 2200.0 2800.0 3000.0 3200.0 3300.0
+1500.0 1700.0 2400.0 2600.0 2800.0 3100.0
+1500.0 1800.0 2400.0 2700.0 3000.0 3200.0
+1400.0 1700.0 2400.0 2700.0 3100.0 3200.0
+900.0 1500.0 2800.0 2900.0 3100.0 3300.0
+1400.0 1700.0 2500.0 2700.0 3100.0 3400.0
+1800.0 2000.0 2300.0 2800.0 3100.0 3300.0
+1200.0 1600.0 2300.0 2400.0 2900.0 3200.0
+1800.0 1900.0 2300.0 2600.0 3000.0 3100.0
+1300.0 1600.0 1900.0 2400.0 2900.0 3200.0
+1400.0 1600.0 2500.0 2700.0 2900.0 3300.0
+900.0 1600.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1900.0 2200.0 2300.0 3100.0 3300.0
+1700.0 1900.0 2500.0 2900.0 3200.0 3300.0
+1400.0 1900.0 2500.0 2700.0 3200.0 3400.0
+1700.0 2000.0 2200.0 2500.0 2900.0 3000.0
+1200.0 1500.0 2600.0 2800.0 3100.0 3400.0
+1400.0 1700.0 2100.0 2600.0 3000.0 3300.0
+1400.0 1700.0 2500.0 2800.0 3200.0 3300.0
+1800.0 2400.0 2600.0 2900.0 3400.0 3500.0
+1900.0 2100.0 2500.0 2600.0 3100.0 3200.0
+2200.0 2500.0 2800.0 3000.0 3400.0 3500.0
+1600.0 1800.0 1900.0 2500.0 3100.0 3200.0
+1100.0 1600.0 2500.0 2600.0 3200.0 3400.0
+1700.0 2200.0 2500.0 2700.0 3100.0 3400.0
+1000.0 1700.0 2200.0 2300.0 3200.0 3300.0
+1100.0 1700.0 2200.0 2600.0 3100.0 3300.0
+1100.0 1700.0 2300.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2100.0 2600.0 3200.0 3300.0
+1300.0 2100.0 2400.0 2600.0 2800.0 3200.0
+1800.0 1900.0 2200.0 2600.0 2800.0 3200.0
+1800.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1400.0 2100.0 2300.0 2500.0 2700.0 3100.0
+1300.0 2000.0 2400.0 2500.0 2800.0 3200.0
+1600.0 2100.0 2600.0 2800.0 3200.0 3400.0
+1400.0 1800.0 2200.0 2400.0 3300.0 3400.0
+1300.0 1700.0 2200.0 2300.0 3300.0 3400.0
+1300.0 1600.0 2200.0 2300.0 3300.0 3400.0
+1300.0 1600.0 2300.0 2400.0 3300.0 3400.0
+1100.0 1700.0 2200.0 2300.0 3300.0 3400.0
+1500.0 1900.0 2200.0 2500.0 2700.0 3100.0
+1300.0 1700.0 1900.0 2200.0 3000.0 3100.0
+1400.0 1600.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1600.0 2500.0 2600.0 3200.0 3400.0
+1000.0 1700.0 2600.0 2700.0 3300.0 3400.0
+1000.0 1600.0 2600.0 2700.0 3300.0 3400.0
+1400.0 1700.0 2500.0 2600.0 3000.0 3400.0
+1400.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1500.0 1600.0 2400.0 2600.0 3200.0 3400.0
+1600.0 2200.0 2500.0 2600.0 3200.0 3300.0
+1000.0 1900.0 2400.0 2500.0 3300.0 3400.0
+1200.0 1700.0 2200.0 2400.0 3200.0 3400.0
+2000.0 2200.0 2600.0 2900.0 3300.0 3400.0
+2200.0 2300.0 2700.0 2800.0 3300.0 3400.0
+2200.0 2300.0 2700.0 2800.0 3200.0 3300.0
+2000.0 2300.0 2400.0 2700.0 3100.0 3300.0
+2200.0 2300.0 2600.0 2800.0 3200.0 3300.0
+1500.0 2000.0 2300.0 2400.0 3200.0 3300.0
+1500.0 1600.0 1800.0 2500.0 3200.0 3300.0
+1100.0 1900.0 2200.0 2400.0 3000.0 3300.0
+1500.0 2100.0 2600.0 2700.0 3200.0 3400.0
+1400.0 1900.0 2400.0 2600.0 3000.0 3200.0
+1200.0 1800.0 2400.0 2600.0 3200.0 3300.0
+1200.0 1700.0 2700.0 2800.0 3200.0 3300.0
+1200.0 1600.0 2600.0 2700.0 3200.0 3300.0
+1300.0 1600.0 2500.0 2600.0 3000.0 3300.0
+1500.0 1600.0 2500.0 2700.0 2900.0 3300.0
+1500.0 1700.0 1800.0 2500.0 3100.0 3200.0
+1400.0 1700.0 1900.0 2600.0 3100.0 3200.0
+1300.0 1700.0 2500.0 2600.0 3200.0 3300.0
+1100.0 1400.0 2600.0 3000.0 3200.0 3300.0
+1100.0 1400.0 2600.0 2900.0 3100.0 3300.0
+1600.0 1800.0 1900.0 2600.0 3200.0 3300.0
+2000.0 2100.0 2600.0 2700.0 3100.0 3200.0
+1300.0 1700.0 2100.0 2300.0 3200.0 3300.0
+1100.0 1700.0 2800.0 2900.0 3200.0 3300.0
+1500.0 1700.0 2500.0 2600.0 2900.0 3200.0
+1400.0 1800.0 2600.0 2700.0 3200.0 3300.0
+1600.0 1700.0 2100.0 2400.0 3000.0 3300.0
+1300.0 1500.0 1600.0 2200.0 3000.0 3100.0
+1300.0 2000.0 2500.0 2700.0 3100.0 3200.0
+1800.0 2200.0 2500.0 2600.0 3200.0 3300.0
+1700.0 2200.0 2400.0 2600.0 2800.0 3100.0
+2000.0 2200.0 2600.0 2800.0 3000.0 3300.0
+1300.0 1400.0 2400.0 2700.0 3100.0 3300.0
+1500.0 1600.0 1900.0 2000.0 2900.0 3300.0
+1000.0 1200.0 2400.0 2500.0 3100.0 3400.0
+1800.0 1900.0 2200.0 2400.0 2600.0 3000.0
+1900.0 2000.0 2200.0 2600.0 2800.0 3000.0
+1300.0 1800.0 2200.0 2400.0 2900.0 3200.0
+1800.0 2100.0 2300.0 2500.0 2800.0 3000.0
+1500.0 2000.0 2300.0 2600.0 2800.0 3100.0
+1000.0 1400.0 2400.0 2500.0 3100.0 3300.0
+1300.0 1900.0 2700.0 2800.0 3200.0 3300.0
+1900.0 2200.0 2300.0 2500.0 2800.0 3100.0
+1900.0 2000.0 2200.0 2600.0 2800.0 3100.0
+1600.0 1700.0 2100.0 2200.0 2900.0 3200.0
+1500.0 1900.0 2200.0 2500.0 3000.0 3300.0
+1400.0 1900.0 2400.0 2800.0 3100.0 3300.0
+1900.0 2000.0 2300.0 2600.0 2800.0 3200.0
+1900.0 2100.0 2300.0 2600.0 2800.0 3200.0
+1600.0 1700.0 2300.0 2700.0 3100.0 3300.0
+1600.0 1800.0 2100.0 2300.0 2600.0 3000.0
+1600.0 1800.0 2100.0 2400.0 2600.0 3000.0
+1700.0 2000.0 2200.0 2500.0 3100.0 3300.0
+1600.0 1700.0 2000.0 2400.0 2600.0 3000.0
+1300.0 1500.0 2200.0 2400.0 2800.0 3200.0
+1300.0 1700.0 2200.0 2400.0 2900.0 3200.0
+1700.0 1900.0 2100.0 2300.0 2800.0 3100.0
+1200.0 1400.0 2300.0 2400.0 2900.0 3300.0
+1400.0 1500.0 2000.0 2200.0 2700.0 3000.0
+1200.0 1900.0 2400.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2100.0 2300.0 2600.0 3100.0
+1900.0 2000.0 2200.0 2400.0 2700.0 3000.0
+1900.0 2100.0 2300.0 2400.0 2700.0 3000.0
+1400.0 1800.0 2200.0 2400.0 2700.0 3200.0
+1700.0 1800.0 2200.0 2300.0 2900.0 3300.0
+1700.0 2000.0 2500.0 2800.0 3400.0 3500.0
+1300.0 1500.0 2200.0 2300.0 3100.0 3200.0
+1400.0 1800.0 2100.0 2600.0 3000.0 3200.0
+1300.0 1900.0 2200.0 2500.0 3100.0 3300.0
+1500.0 2100.0 2600.0 2700.0 3200.0 3300.0
+1300.0 1800.0 2600.0 2700.0 3200.0 3300.0
+1000.0 1500.0 2700.0 2800.0 3100.0 3300.0
+2200.0 2300.0 2500.0 2900.0 3200.0 3400.0
+2100.0 2200.0 2500.0 2900.0 3100.0 3300.0
+1500.0 1600.0 2400.0 2700.0 3000.0 3300.0
+1300.0 1500.0 1600.0 2000.0 3200.0 3400.0
+1400.0 1600.0 1700.0 2000.0 3200.0 3400.0
+1700.0 1900.0 2700.0 2800.0 3200.0 3300.0
+1700.0 1900.0 2700.0 2800.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2700.0 2800.0 3200.0
+1500.0 1600.0 2200.0 2500.0 2900.0 3300.0
+1200.0 1500.0 2100.0 2600.0 3000.0 3300.0
+1800.0 2300.0 2700.0 2800.0 3200.0 3400.0
+1000.0 1400.0 2400.0 2500.0 2900.0 3300.0
+1000.0 1500.0 2500.0 2600.0 2900.0 3200.0
+1900.0 2400.0 2700.0 3000.0 3200.0 3400.0
+1700.0 1900.0 2300.0 2400.0 3000.0 3400.0
+1300.0 1600.0 1700.0 2200.0 3100.0 3300.0
+1800.0 1900.0 2600.0 2900.0 3100.0 3300.0
+2300.0 2600.0 2800.0 2900.0 3300.0 3400.0
+1000.0 1500.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1600.0 2100.0 2300.0 2900.0 3200.0
+1500.0 2000.0 2400.0 2600.0 2800.0 3000.0
+1400.0 1900.0 2300.0 2600.0 2800.0 3100.0
+1600.0 1700.0 2500.0 2600.0 2800.0 3200.0
+2000.0 2200.0 2800.0 3000.0 3300.0 3500.0
+2000.0 2400.0 2700.0 2800.0 3200.0 3300.0
+1400.0 1600.0 1700.0 1900.0 3200.0 3400.0
+2100.0 2200.0 2400.0 2700.0 3000.0 3300.0
+2100.0 2400.0 2800.0 3000.0 3100.0 3300.0
+1800.0 2000.0 2300.0 2400.0 3100.0 3400.0
+1400.0 1700.0 2600.0 2700.0 3000.0 3300.0
+1300.0 1700.0 2200.0 2500.0 3200.0 3400.0
+1500.0 1900.0 2300.0 2600.0 2800.0 3100.0
+2200.0 2500.0 2700.0 2800.0 3200.0 3400.0
+2100.0 2200.0 2500.0 2800.0 3000.0 3200.0
+1700.0 1900.0 2300.0 2600.0 2800.0 3000.0
+1800.0 2000.0 2400.0 2700.0 2900.0 3300.0
+1500.0 1800.0 2000.0 2400.0 3000.0 3100.0
+1500.0 1700.0 1800.0 2600.0 3100.0 3200.0
+1200.0 1700.0 2300.0 2600.0 3000.0 3200.0
+1400.0 1500.0 1900.0 2700.0 3000.0 3100.0
+1600.0 2100.0 2300.0 2700.0 3000.0 3100.0
+1700.0 2300.0 2400.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2400.0 2700.0 2900.0 3100.0
+1400.0 1500.0 1900.0 2500.0 2800.0 3000.0
+1300.0 1500.0 1900.0 2600.0 3000.0 3100.0
+1500.0 1600.0 2000.0 2500.0 2900.0 3100.0
+1500.0 1900.0 2300.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2500.0 2700.0 3000.0 3100.0
+1400.0 1500.0 2000.0 2500.0 2800.0 3000.0
+1400.0 1500.0 2000.0 2600.0 3000.0 3100.0
+1700.0 2000.0 2200.0 2600.0 2700.0 3000.0
+1400.0 1700.0 2000.0 2500.0 3100.0 3200.0
+1700.0 1900.0 2400.0 2700.0 2800.0 3100.0
+1700.0 2000.0 2300.0 2500.0 2800.0 3100.0
+1400.0 1600.0 1900.0 2400.0 2700.0 3000.0
+1500.0 1700.0 1900.0 2400.0 2700.0 3000.0
+1400.0 1500.0 1900.0 2800.0 3100.0 3200.0
+1400.0 1900.0 2200.0 2600.0 3100.0 3200.0
+1200.0 1600.0 2200.0 2500.0 3000.0 3100.0
+1500.0 1800.0 2500.0 2800.0 3000.0 3200.0
+1200.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1700.0 2100.0 2300.0 2500.0 2700.0 3200.0
+1300.0 1600.0 2100.0 2300.0 2800.0 3200.0
+1800.0 2000.0 2200.0 2800.0 3100.0 3200.0
+2100.0 2400.0 2900.0 3000.0 3300.0 3500.0
+1700.0 1900.0 2600.0 2900.0 3200.0 3300.0
+2100.0 2500.0 2900.0 3000.0 3200.0 3300.0
+2000.0 2300.0 2800.0 2900.0 3100.0 3400.0
+1300.0 1500.0 2100.0 2400.0 2800.0 3200.0
+1600.0 1700.0 2000.0 2700.0 3000.0 3100.0
+1500.0 1800.0 2000.0 2500.0 3000.0 3100.0
+1500.0 1800.0 2200.0 2700.0 2900.0 3100.0
+1600.0 1700.0 2100.0 2400.0 2600.0 3100.0
+1500.0 1900.0 2300.0 2400.0 2900.0 3300.0
+1300.0 2000.0 2400.0 2700.0 3100.0 3200.0
+1300.0 2000.0 2300.0 2700.0 3300.0 3400.0
+1700.0 2200.0 2400.0 2800.0 3200.0 3300.0
+1400.0 1900.0 2600.0 2900.0 3200.0 3300.0
+1400.0 1700.0 2000.0 2400.0 3100.0 3200.0
+1400.0 1600.0 2300.0 2500.0 2700.0 3000.0
+1500.0 1600.0 2300.0 2600.0 3100.0 3200.0
+1500.0 1900.0 2200.0 2400.0 3300.0 3400.0
+1200.0 1900.0 2100.0 2400.0 2900.0 3100.0
+1000.0 2300.0 2600.0 2800.0 3200.0 3300.0
+2200.0 2300.0 2600.0 2900.0 3300.0 3400.0
+1400.0 1600.0 2600.0 2700.0 3200.0 3300.0
+1300.0 2100.0 2500.0 2700.0 3100.0 3200.0
+1400.0 1600.0 2500.0 2600.0 3000.0 3400.0
+1200.0 1800.0 2700.0 2800.0 3000.0 3100.0
+1100.0 2000.0 2600.0 2700.0 3100.0 3200.0
+1000.0 1900.0 2700.0 2800.0 3100.0 3200.0
+1100.0 1900.0 2700.0 2800.0 3200.0 3300.0
+1200.0 1800.0 2500.0 2600.0 3000.0 3200.0
+2000.0 2100.0 2500.0 2600.0 3100.0 3200.0
+1400.0 2000.0 2500.0 2700.0 3200.0 3300.0
+2300.0 2400.0 2900.0 3100.0 3300.0 3400.0
+1600.0 1900.0 2300.0 2500.0 2900.0 3100.0
+1300.0 2200.0 2400.0 2900.0 3300.0 3400.0
+1300.0 2100.0 2200.0 2500.0 3200.0 3300.0
+1300.0 1900.0 2500.0 2600.0 3000.0 3100.0
+1300.0 1900.0 2500.0 2600.0 3100.0 3200.0
+1300.0 2000.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1700.0 1800.0 2300.0 2600.0 3000.0 3400.0
+1600.0 1800.0 2300.0 2700.0 3200.0 3400.0
+1300.0 1500.0 1600.0 2600.0 3200.0 3300.0
+1300.0 1500.0 1600.0 2500.0 3300.0 3400.0
+1300.0 1500.0 1600.0 2700.0 3300.0 3400.0
+2100.0 2500.0 3000.0 3100.0 3300.0 3400.0
+1400.0 1900.0 2300.0 2400.0 3100.0 3200.0
+1600.0 2200.0 2300.0 2600.0 3300.0 3400.0
+1300.0 1600.0 1700.0 2700.0 3100.0 3200.0
+1800.0 2300.0 2500.0 2800.0 3100.0 3300.0
+1500.0 1600.0 2400.0 2600.0 3100.0 3400.0
+1200.0 1900.0 2200.0 2400.0 3000.0 3100.0
+1400.0 1900.0 2200.0 2700.0 3100.0 3200.0
+1300.0 1700.0 2300.0 2600.0 2900.0 3100.0
+1300.0 2000.0 2300.0 2600.0 3200.0 3300.0
+1800.0 1900.0 2400.0 2600.0 3200.0 3500.0
+1700.0 1800.0 2400.0 2700.0 2900.0 3300.0
+1400.0 2000.0 2400.0 2500.0 2700.0 2900.0
+1400.0 2100.0 2400.0 2500.0 2700.0 3100.0
+1500.0 1700.0 2300.0 2700.0 2900.0 3200.0
+1200.0 1300.0 2300.0 2800.0 3000.0 3200.0
+1200.0 1400.0 2100.0 2600.0 3000.0 3300.0
+1600.0 1700.0 2500.0 2700.0 2800.0 3200.0
+1700.0 2100.0 2200.0 2700.0 3000.0 3100.0
+1400.0 1500.0 2100.0 2400.0 2900.0 3200.0
+1700.0 2100.0 2200.0 2600.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2500.0 2900.0 3000.0
+1300.0 1500.0 2000.0 2600.0 2900.0 3000.0
+1800.0 1900.0 2100.0 2300.0 3000.0 3200.0
+1100.0 1500.0 2500.0 2800.0 3000.0 3200.0
+1900.0 2000.0 2200.0 2400.0 2800.0 3200.0
+1800.0 1900.0 2700.0 2800.0 3100.0 3300.0
+1200.0 1400.0 2000.0 2700.0 3000.0 3100.0
+1300.0 1400.0 1900.0 2000.0 2600.0 3200.0
+1000.0 1300.0 2400.0 2600.0 2800.0 3200.0
+1700.0 1800.0 2200.0 2400.0 2600.0 3000.0
+2000.0 2300.0 2400.0 2700.0 2900.0 3000.0
+1600.0 1700.0 2000.0 2200.0 2500.0 3100.0
+1700.0 2300.0 2700.0 2800.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2600.0 2700.0 3000.0
+1400.0 1500.0 2000.0 2700.0 2900.0 3100.0
+1100.0 1400.0 2200.0 2600.0 2800.0 3000.0
+1700.0 2100.0 2300.0 2600.0 3000.0 3300.0
+1400.0 1500.0 1700.0 1800.0 2700.0 3200.0
+1500.0 1600.0 1900.0 2000.0 2600.0 3200.0
+1000.0 1300.0 2400.0 2600.0 2900.0 3300.0
+1300.0 1500.0 1900.0 2500.0 2700.0 3000.0
+1800.0 1900.0 2200.0 2600.0 2900.0 3300.0
+1300.0 1400.0 1700.0 1800.0 2700.0 3200.0
+1700.0 1800.0 2000.0 2500.0 2700.0 2900.0
+1800.0 2000.0 2300.0 2700.0 2800.0 3100.0
+1600.0 1700.0 2200.0 2800.0 2900.0 3100.0
+1800.0 2100.0 2800.0 2900.0 3200.0 3400.0
+1700.0 2100.0 2800.0 2900.0 3100.0 3400.0
+1900.0 2400.0 2700.0 2800.0 3400.0 3500.0
+1600.0 1700.0 2400.0 2700.0 2800.0 3200.0
+1600.0 1900.0 2200.0 2500.0 3000.0 3300.0
+1400.0 1500.0 2000.0 2500.0 2800.0 3100.0
+1200.0 1300.0 2100.0 2500.0 2700.0 3000.0
+1900.0 2200.0 2600.0 2800.0 3400.0 3500.0
+1500.0 1900.0 2600.0 2700.0 2900.0 3300.0
+1400.0 1500.0 2000.0 2100.0 2700.0 3100.0
+1600.0 1700.0 2100.0 2200.0 2600.0 3200.0
+1700.0 2200.0 2500.0 2700.0 3000.0 3100.0
+1800.0 2300.0 2500.0 2600.0 2900.0 3100.0
+1100.0 1300.0 2500.0 2700.0 2900.0 3200.0
+1400.0 1500.0 1900.0 2000.0 2600.0 3200.0
+1600.0 1700.0 2000.0 2100.0 2800.0 3300.0
+1300.0 1900.0 2300.0 2600.0 2700.0 3000.0
+1800.0 1900.0 2500.0 2700.0 2900.0 3100.0
+2100.0 2200.0 2700.0 3000.0 3100.0 3300.0
+2000.0 2100.0 2700.0 2900.0 3200.0 3400.0
+1500.0 1700.0 1800.0 2200.0 3200.0 3300.0
+1500.0 1800.0 2000.0 2700.0 3200.0 3300.0
+1800.0 1900.0 2100.0 2400.0 3100.0 3200.0
+1500.0 1600.0 2400.0 2500.0 3200.0 3300.0
+1400.0 1800.0 2400.0 2600.0 3300.0 3400.0
+1400.0 1800.0 2400.0 2600.0 3200.0 3400.0
+2300.0 2600.0 2800.0 3100.0 3300.0 3400.0
+2000.0 2100.0 2800.0 2900.0 3300.0 3400.0
+1400.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1300.0 1700.0 2500.0 2700.0 3200.0 3300.0
+1500.0 1800.0 2200.0 2700.0 3000.0 3300.0
+1800.0 2000.0 2300.0 2500.0 2900.0 3300.0
+1300.0 1800.0 2400.0 2500.0 3200.0 3400.0
+1500.0 1900.0 2500.0 2600.0 3000.0 3300.0
+1700.0 1800.0 2700.0 2800.0 3200.0 3400.0
+1500.0 1800.0 2700.0 2800.0 3200.0 3400.0
+1500.0 1800.0 2700.0 2800.0 3300.0 3400.0
+1400.0 1600.0 2400.0 2500.0 3200.0 3300.0
+1600.0 1800.0 2400.0 2800.0 3100.0 3300.0
+1500.0 2100.0 2500.0 2600.0 3100.0 3300.0
+1500.0 1600.0 2500.0 2600.0 3000.0 3400.0
+1200.0 1900.0 2300.0 2500.0 3100.0 3300.0
+1500.0 1600.0 2300.0 2500.0 3200.0 3300.0
+1600.0 2300.0 2600.0 2800.0 3300.0 3400.0
+2100.0 2400.0 2500.0 2700.0 3200.0 3300.0
+1100.0 1800.0 2500.0 2600.0 2900.0 3200.0
+1400.0 1700.0 2100.0 2600.0 3000.0 3200.0
+1700.0 2000.0 2500.0 2600.0 3000.0 3100.0
+1100.0 1500.0 2500.0 2600.0 3100.0 3300.0
+1500.0 1600.0 2200.0 2400.0 2600.0 3200.0
+1600.0 1800.0 2300.0 2500.0 2900.0 3300.0
+1600.0 1700.0 2100.0 2300.0 3000.0 3200.0
+2000.0 2200.0 2600.0 2800.0 3300.0 3400.0
+1600.0 1700.0 1900.0 2400.0 3100.0 3300.0
+1200.0 1700.0 2300.0 2500.0 3100.0 3400.0
+1100.0 1600.0 1900.0 2200.0 3000.0 3100.0
+1400.0 1900.0 2300.0 2600.0 2900.0 3000.0
+1900.0 2200.0 2800.0 3000.0 3200.0 3400.0
+1400.0 1500.0 2200.0 2300.0 2700.0 3100.0
+1800.0 1900.0 2200.0 2600.0 3000.0 3300.0
+1700.0 1900.0 2200.0 2500.0 2700.0 3000.0
+1600.0 1800.0 2000.0 2400.0 2700.0 2800.0
+1900.0 2300.0 2700.0 2900.0 3100.0 3200.0
+1400.0 1500.0 2000.0 2400.0 2900.0 3000.0
+1800.0 2100.0 2200.0 2500.0 2700.0 3000.0
+1200.0 1300.0 1900.0 2500.0 3000.0 3100.0
+1100.0 1200.0 2500.0 2900.0 3000.0 3200.0
+1400.0 1500.0 1900.0 2000.0 2500.0 3100.0
+1400.0 1600.0 2000.0 2200.0 2500.0 3100.0
+1200.0 1700.0 2300.0 2700.0 3100.0 3300.0
+1900.0 2200.0 2300.0 2500.0 2700.0 3100.0
+1500.0 1600.0 2000.0 2100.0 2800.0 3300.0
+1500.0 1800.0 2000.0 2300.0 2600.0 2900.0
+2100.0 2200.0 2600.0 2700.0 3000.0 3100.0
+2100.0 2300.0 2700.0 2900.0 3200.0 3400.0
+1600.0 1700.0 1900.0 2000.0 2700.0 3100.0
+1300.0 1500.0 1800.0 1900.0 2500.0 3100.0
+1900.0 2500.0 2700.0 2900.0 3200.0 3300.0
+1200.0 1400.0 2000.0 2700.0 3200.0 3300.0
+1900.0 2500.0 2700.0 2800.0 3200.0 3300.0
+1200.0 1600.0 2200.0 2400.0 2900.0 3200.0
+2000.0 2200.0 2600.0 2700.0 3100.0 3400.0
+1500.0 1700.0 2000.0 2300.0 2600.0 3000.0
+1700.0 2100.0 2500.0 2700.0 3000.0 3100.0
+1800.0 2200.0 2500.0 2700.0 3000.0 3100.0
+2000.0 2400.0 2600.0 2900.0 3100.0 3200.0
+1700.0 2400.0 2500.0 2700.0 3100.0 3200.0
+1600.0 2000.0 2100.0 2600.0 3000.0 3100.0
+1500.0 2100.0 2400.0 2600.0 3000.0 3200.0
+1400.0 1600.0 2000.0 2600.0 3100.0 3200.0
+1500.0 1700.0 2000.0 2800.0 3100.0 3200.0
+1600.0 1700.0 2000.0 2700.0 3100.0 3200.0
+1400.0 2000.0 2300.0 2500.0 3000.0 3200.0
+1600.0 1800.0 2000.0 2300.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2700.0 2900.0 3200.0
+1100.0 1400.0 2200.0 2300.0 3200.0 3300.0
+1800.0 2400.0 2800.0 2900.0 3200.0 3300.0
+1700.0 2400.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2200.0 2800.0 3000.0 3400.0 3500.0
+1300.0 1400.0 2200.0 2900.0 3100.0 3200.0
+1200.0 1400.0 2300.0 2900.0 3100.0 3200.0
+1600.0 1900.0 2300.0 2600.0 2900.0 3300.0
+1700.0 2200.0 2300.0 2700.0 3100.0 3200.0
+1200.0 1700.0 2400.0 2700.0 3000.0 3300.0
+1500.0 1700.0 1900.0 2500.0 2900.0 3100.0
+1700.0 1800.0 2200.0 2600.0 2900.0 3300.0
+1300.0 1400.0 1900.0 2600.0 3000.0 3100.0
+1200.0 1400.0 2200.0 2500.0 2900.0 3300.0
+1500.0 1800.0 2000.0 2500.0 2900.0 3000.0
+1300.0 1400.0 2300.0 2500.0 2900.0 3300.0
+1700.0 2100.0 2300.0 2700.0 3000.0 3100.0
+1700.0 2100.0 2300.0 2800.0 3000.0 3100.0
+1200.0 1300.0 2100.0 2800.0 3200.0 3300.0
+1300.0 1600.0 2100.0 2600.0 2900.0 3100.0
+1300.0 1400.0 1800.0 2500.0 2800.0 3000.0
+1500.0 1700.0 2400.0 2600.0 2900.0 3000.0
+2100.0 2200.0 2500.0 2600.0 3000.0 3100.0
+2200.0 2300.0 2500.0 2700.0 3000.0 3200.0
+1400.0 1800.0 2000.0 2300.0 3200.0 3300.0
+1600.0 1700.0 2400.0 2700.0 3100.0 3200.0
+1600.0 1700.0 2500.0 2700.0 3000.0 3200.0
+1900.0 2500.0 2600.0 2800.0 3200.0 3300.0
+1200.0 1400.0 2600.0 2800.0 3000.0 3300.0
+1800.0 2300.0 2500.0 3000.0 3300.0 3400.0
+1200.0 1400.0 2200.0 2700.0 3200.0 3300.0
+1100.0 1400.0 2400.0 2500.0 3100.0 3400.0
+1100.0 1300.0 2400.0 2500.0 3200.0 3400.0
+1000.0 1400.0 2400.0 2500.0 3000.0 3300.0
+1800.0 1900.0 2400.0 2700.0 3200.0 3400.0
+1600.0 1700.0 2200.0 2500.0 2800.0 3300.0
+2000.0 2200.0 2400.0 2800.0 2900.0 3100.0
+1300.0 1800.0 2700.0 2800.0 3200.0 3400.0
+1800.0 2200.0 2700.0 3000.0 3400.0 3500.0
+1800.0 1900.0 2300.0 2600.0 2700.0 3000.0
+1900.0 2000.0 2400.0 2600.0 2900.0 3400.0
+1600.0 1700.0 2300.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2500.0 2700.0 3200.0 3300.0
+2100.0 2500.0 2800.0 3000.0 3200.0 3400.0
+1800.0 2000.0 2300.0 2400.0 3000.0 3100.0
+2300.0 2400.0 2600.0 2900.0 3100.0 3300.0
+1600.0 1800.0 2400.0 2500.0 3000.0 3100.0
+2100.0 2500.0 2900.0 3100.0 3200.0 3300.0
+1600.0 1900.0 2500.0 2900.0 3100.0 3300.0
+1500.0 1800.0 2300.0 2400.0 3200.0 3400.0
+1300.0 1500.0 2700.0 2800.0 3100.0 3300.0
+1200.0 1500.0 2600.0 2700.0 3200.0 3300.0
+1000.0 1500.0 2700.0 2800.0 3200.0 3300.0
+1100.0 1600.0 2600.0 2700.0 3200.0 3300.0
+1500.0 1700.0 2600.0 2700.0 3000.0 3300.0
+1100.0 1700.0 2800.0 2900.0 3200.0 3400.0
+1300.0 1700.0 2300.0 2500.0 3300.0 3400.0
+1700.0 2100.0 2400.0 2500.0 3200.0 3300.0
+1500.0 1800.0 2100.0 2400.0 3300.0 3400.0
+2000.0 2100.0 2400.0 2600.0 2800.0 3100.0
+1600.0 1700.0 2300.0 2800.0 3100.0 3300.0
+1900.0 2100.0 2800.0 3000.0 3300.0 3400.0
+2000.0 2100.0 2300.0 2600.0 2900.0 3200.0
+1100.0 1500.0 2500.0 2700.0 2900.0 3300.0
+1600.0 1800.0 2200.0 2500.0 2700.0 2800.0
+2000.0 2200.0 2500.0 2600.0 3100.0 3200.0
+1400.0 1600.0 2100.0 2900.0 3100.0 3200.0
+1900.0 2400.0 2800.0 3000.0 3200.0 3300.0
+2000.0 2300.0 2500.0 2700.0 2900.0 3200.0
+1700.0 2100.0 2300.0 2800.0 3200.0 3300.0
+1400.0 2000.0 2300.0 2500.0 3100.0 3300.0
+2000.0 2500.0 2600.0 3000.0 3200.0 3300.0
+1500.0 1700.0 2500.0 2600.0 3000.0 3400.0
+1100.0 2000.0 2500.0 2700.0 3200.0 3300.0
+1400.0 1600.0 2600.0 2900.0 3100.0 3400.0
+1800.0 2300.0 2800.0 3000.0 3200.0 3300.0
+1700.0 2000.0 2100.0 2300.0 3300.0 3400.0
+1400.0 1700.0 1800.0 2300.0 3300.0 3400.0
+1400.0 1500.0 2300.0 2500.0 3000.0 3400.0
+1400.0 1700.0 2600.0 2700.0 3100.0 3200.0
+1500.0 1700.0 2600.0 2700.0 3200.0 3300.0
+1600.0 1800.0 2600.0 2700.0 3100.0 3300.0
+1200.0 1400.0 1500.0 2200.0 3100.0 3200.0
+1500.0 1600.0 2100.0 2400.0 2700.0 3200.0
+1000.0 1500.0 2600.0 2700.0 3000.0 3300.0
+1200.0 1500.0 1600.0 2100.0 3100.0 3200.0
+1800.0 2200.0 2600.0 3000.0 3400.0 3500.0
+1000.0 2300.0 2600.0 2700.0 3200.0 3300.0
+1400.0 1600.0 2100.0 2500.0 2800.0 3200.0
+1300.0 1900.0 2300.0 2500.0 2900.0 3300.0
+1500.0 1600.0 2400.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2500.0 2800.0 3100.0 3200.0
+1000.0 2100.0 2500.0 2600.0 3100.0 3400.0
+1700.0 1800.0 2100.0 2400.0 3000.0 3100.0
+2200.0 2300.0 2600.0 2700.0 3000.0 3300.0
+1900.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1500.0 1700.0 2400.0 2500.0 2900.0 3100.0
+1100.0 1600.0 2800.0 2900.0 3200.0 3300.0
+2000.0 2600.0 2800.0 3000.0 3400.0 3500.0
+1900.0 2500.0 2800.0 3100.0 3400.0 3500.0
+1200.0 1700.0 2700.0 2800.0 3200.0 3400.0
+1300.0 1600.0 2700.0 2800.0 3100.0 3400.0
+1500.0 1700.0 2700.0 2800.0 3100.0 3400.0
+1300.0 1400.0 2500.0 2800.0 3200.0 3400.0
+1700.0 2000.0 2700.0 2800.0 3300.0 3400.0
+1800.0 1900.0 2600.0 2700.0 3300.0 3400.0
+1100.0 1800.0 2700.0 2800.0 3200.0 3300.0
+2100.0 2600.0 2700.0 3000.0 3300.0 3400.0
+1300.0 1600.0 1800.0 2100.0 2900.0 3000.0
+1300.0 1500.0 2200.0 2400.0 3100.0 3400.0
+1200.0 1500.0 1700.0 2000.0 3000.0 3100.0
+1200.0 1500.0 1700.0 2100.0 3000.0 3100.0
+1300.0 2000.0 2200.0 2400.0 2700.0 3000.0
+1500.0 1800.0 2100.0 2300.0 3300.0 3400.0
+1100.0 1600.0 1800.0 2200.0 3000.0 3100.0
+1000.0 1800.0 2100.0 2400.0 3000.0 3100.0
+1500.0 1600.0 2300.0 2400.0 2900.0 3400.0
+1400.0 1600.0 1800.0 2100.0 2900.0 3000.0
+1100.0 1500.0 2100.0 2200.0 3100.0 3200.0
+1300.0 1700.0 1800.0 2200.0 3000.0 3100.0
+1500.0 1700.0 2100.0 2300.0 2700.0 2900.0
+1100.0 1700.0 1900.0 2100.0 2900.0 3000.0
+1400.0 1700.0 2100.0 2400.0 2900.0 3200.0
+1300.0 1600.0 1800.0 2300.0 3000.0 3100.0
+1200.0 1500.0 1700.0 2300.0 3000.0 3100.0
+1600.0 1800.0 1900.0 2300.0 3000.0 3100.0
+1700.0 2200.0 2600.0 2900.0 3100.0 3300.0
+1900.0 2400.0 2500.0 2700.0 2900.0 3100.0
+1800.0 2000.0 2100.0 2400.0 3100.0 3200.0
+1700.0 2400.0 2700.0 2800.0 3000.0 3200.0
+1800.0 1900.0 2300.0 2600.0 2800.0 3300.0
+1300.0 1900.0 2500.0 2600.0 3200.0 3400.0
+1400.0 1600.0 2300.0 2400.0 2800.0 3100.0
+1900.0 2000.0 2300.0 2700.0 3000.0 3300.0
+1700.0 1800.0 2400.0 2700.0 3200.0 3400.0
+1800.0 2000.0 2300.0 2600.0 2900.0 3300.0
+2100.0 2300.0 2600.0 2700.0 3300.0 3400.0
+1400.0 1600.0 2200.0 2400.0 3200.0 3300.0
+1300.0 1600.0 1800.0 2200.0 2800.0 2900.0
+1500.0 1700.0 1900.0 2600.0 2800.0 3000.0
+1700.0 2200.0 2500.0 2600.0 3100.0 3300.0
+1200.0 1700.0 1800.0 2100.0 3000.0 3100.0
+1100.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1100.0 1900.0 2100.0 2300.0 2900.0 3000.0
+1200.0 1700.0 2400.0 2600.0 3100.0 3400.0
+1100.0 1700.0 2600.0 2700.0 3000.0 3300.0
+1000.0 1700.0 2700.0 2800.0 3200.0 3400.0
+1100.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1300.0 1900.0 2300.0 2500.0 3000.0 3300.0
+1200.0 1600.0 2600.0 2700.0 3100.0 3400.0
+1300.0 1600.0 1800.0 2400.0 3000.0 3200.0
+1400.0 1700.0 1800.0 2100.0 3200.0 3400.0
+1000.0 1500.0 2300.0 2400.0 3200.0 3400.0
+900.0 1700.0 2600.0 2700.0 3300.0 3400.0
+1100.0 1400.0 2500.0 2700.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2500.0 2800.0 2900.0
+2100.0 2300.0 2700.0 2900.0 3400.0 3500.0
+2100.0 2200.0 2300.0 2400.0 3000.0 3300.0
+1800.0 2000.0 2400.0 2500.0 2800.0 3000.0
+1700.0 1900.0 2300.0 2500.0 2700.0 3000.0
+1300.0 1400.0 2300.0 2900.0 3100.0 3200.0
+2100.0 2300.0 2600.0 2900.0 3100.0 3200.0
+1400.0 1800.0 2200.0 2300.0 3200.0 3400.0
+2100.0 2500.0 2900.0 3200.0 3400.0 3500.0
+1700.0 1900.0 2100.0 2400.0 3200.0 3400.0
+1600.0 1700.0 2300.0 2600.0 2800.0 2900.0
+1800.0 2000.0 2300.0 2700.0 2800.0 3000.0
+1900.0 2300.0 2600.0 2800.0 3000.0 3100.0
+1300.0 1600.0 2200.0 2600.0 3100.0 3200.0
+1500.0 1600.0 2400.0 2500.0 2900.0 3400.0
+1600.0 1800.0 2000.0 2700.0 3100.0 3200.0
+1000.0 1800.0 2600.0 2700.0 3200.0 3400.0
+900.0 1800.0 2500.0 2600.0 3300.0 3400.0
+1300.0 2200.0 2300.0 2700.0 3200.0 3300.0
+1200.0 2000.0 2300.0 2500.0 3300.0 3400.0
+1100.0 1500.0 2400.0 2500.0 3100.0 3400.0
+1300.0 1700.0 1900.0 2100.0 3000.0 3100.0
+2000.0 2100.0 2500.0 2600.0 3300.0 3500.0
+1500.0 1800.0 2000.0 2500.0 3300.0 3400.0
+2000.0 2100.0 2800.0 2900.0 3100.0 3300.0
+2300.0 2400.0 2600.0 2800.0 3200.0 3300.0
+1400.0 1900.0 2200.0 2300.0 3100.0 3200.0
+1500.0 1900.0 2600.0 2700.0 3200.0 3300.0
+1500.0 1600.0 2200.0 2600.0 3100.0 3400.0
+1700.0 1800.0 2500.0 2700.0 3300.0 3400.0
+1100.0 1600.0 2400.0 2500.0 3300.0 3400.0
+900.0 1600.0 2600.0 2700.0 3300.0 3400.0
+1400.0 1500.0 2200.0 2600.0 3200.0 3400.0
+1200.0 2000.0 2400.0 2500.0 2700.0 3200.0
+1300.0 1500.0 2500.0 2600.0 3200.0 3300.0
+1500.0 1600.0 2300.0 2600.0 3200.0 3400.0
+1300.0 2000.0 2300.0 2800.0 3000.0 3200.0
+2000.0 2100.0 2600.0 2700.0 3000.0 3100.0
+2000.0 2200.0 2600.0 2700.0 3000.0 3100.0
+2100.0 2200.0 2800.0 2900.0 3100.0 3200.0
+1900.0 2100.0 2500.0 2600.0 3000.0 3100.0
+1900.0 2100.0 2300.0 2500.0 2800.0 2900.0
+1800.0 2000.0 2600.0 2700.0 3000.0 3400.0
+1400.0 1700.0 1800.0 2500.0 2800.0 3200.0
+1300.0 1800.0 2200.0 2300.0 3200.0 3400.0
+1400.0 1600.0 1700.0 2200.0 3200.0 3400.0
+1400.0 1500.0 1600.0 2100.0 3200.0 3400.0
+1700.0 2100.0 2300.0 2500.0 3300.0 3400.0
+1600.0 2000.0 2600.0 2800.0 3200.0 3400.0
+1400.0 1600.0 2700.0 2800.0 3000.0 3300.0
+1400.0 1500.0 1600.0 2200.0 3300.0 3400.0
+1600.0 1700.0 2500.0 2600.0 3300.0 3400.0
+1000.0 1500.0 2300.0 2400.0 3000.0 3100.0
+1400.0 1500.0 1700.0 1800.0 3200.0 3300.0
+1600.0 2000.0 2300.0 2500.0 2800.0 3100.0
+1900.0 2500.0 2600.0 2900.0 3400.0 3500.0
+1800.0 1900.0 2500.0 2600.0 3300.0 3500.0
+1500.0 1900.0 2200.0 2300.0 3200.0 3300.0
+1900.0 2200.0 2500.0 2600.0 3300.0 3400.0
+1400.0 2000.0 2300.0 2600.0 3100.0 3300.0
+1800.0 1900.0 2300.0 2400.0 3200.0 3500.0
+1100.0 1900.0 2500.0 2600.0 2900.0 3000.0
+1600.0 1700.0 2300.0 2400.0 2900.0 3000.0
+1700.0 2300.0 2500.0 2700.0 3000.0 3100.0
+2100.0 2200.0 2700.0 2900.0 3100.0 3400.0
+1400.0 1900.0 2300.0 2600.0 2800.0 2900.0
+1800.0 2000.0 2200.0 2400.0 2600.0 2900.0
+1400.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1700.0 1900.0 2400.0 2800.0 3200.0 3400.0
+1000.0 1500.0 2300.0 2400.0 3000.0 3300.0
+1500.0 2000.0 2300.0 2800.0 3200.0 3300.0
+1900.0 2000.0 2300.0 2600.0 3100.0 3400.0
+1300.0 1500.0 2400.0 2600.0 3300.0 3400.0
+2100.0 2500.0 2900.0 3100.0 3200.0 3400.0
+1400.0 1700.0 1800.0 2400.0 3200.0 3300.0
+1400.0 1500.0 2300.0 2600.0 3100.0 3400.0
+1000.0 1900.0 2600.0 2700.0 3000.0 3100.0
+1100.0 1800.0 2500.0 2700.0 3200.0 3300.0
+1700.0 1800.0 2200.0 2700.0 2800.0 3200.0
+2000.0 2200.0 2700.0 2800.0 3100.0 3200.0
+1300.0 2100.0 2400.0 2500.0 2900.0 3100.0
+1300.0 2000.0 2400.0 2500.0 2800.0 3000.0
+1500.0 2100.0 2500.0 2600.0 2900.0 3100.0
+1700.0 2200.0 2500.0 2700.0 3000.0 3200.0
+1600.0 2100.0 2500.0 2600.0 3000.0 3100.0
+1700.0 2200.0 2500.0 2600.0 3000.0 3200.0
+1800.0 2200.0 2300.0 2600.0 3000.0 3200.0
+1300.0 1500.0 1700.0 2100.0 3300.0 3400.0
+1300.0 1500.0 1700.0 2000.0 3300.0 3400.0
+1300.0 1900.0 2700.0 2800.0 3200.0 3400.0
+1700.0 2500.0 2700.0 2900.0 3300.0 3400.0
+1100.0 1700.0 2100.0 2200.0 3300.0 3400.0
+1000.0 1800.0 2700.0 2900.0 3300.0 3400.0
+1500.0 1600.0 2500.0 2600.0 3200.0 3300.0
+1100.0 1900.0 2600.0 2800.0 3000.0 3100.0
+1300.0 1500.0 2400.0 2500.0 3200.0 3300.0
+1700.0 2100.0 2300.0 2400.0 2800.0 3300.0
+1300.0 1500.0 1700.0 1800.0 3200.0 3400.0
+2000.0 2100.0 2400.0 2700.0 2900.0 3300.0
+1400.0 1500.0 2500.0 2600.0 3000.0 3200.0
+1400.0 1500.0 2000.0 2900.0 3300.0 3400.0
+1300.0 1500.0 2600.0 2700.0 3100.0 3200.0
+1100.0 1300.0 2700.0 2800.0 3200.0 3300.0
+1100.0 1300.0 2500.0 2600.0 2900.0 3100.0
+1900.0 2300.0 2400.0 2600.0 2700.0 3100.0
+1300.0 2100.0 2200.0 2600.0 3200.0 3300.0
+1100.0 1800.0 2400.0 2500.0 2900.0 3100.0
+1000.0 1800.0 2200.0 2300.0 3200.0 3300.0
+1500.0 1700.0 1800.0 2600.0 3200.0 3400.0
+1500.0 2000.0 2400.0 2600.0 2700.0 3100.0
+2000.0 2100.0 2300.0 2500.0 2700.0 3300.0
+1000.0 1500.0 2700.0 2800.0 3300.0 3400.0
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm1.txt
b/gr-vocoder/lib/codec2/codebook/lspjvm1.txt
new file mode 100644
index 0000000..9cd10ed
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm1.txt
@@ -0,0 +1,513 @@
+10 512
+0.435217 0.668864 1.010296 1.220420 1.503978 1.784675 2.135458 2.357467
2.618905 2.738042
+0.179285 0.333160 0.500638 0.796950 1.039987 1.234969 1.652301 1.848233
2.625555 2.804968
+0.268785 0.356576 0.595753 1.044339 1.249382 1.428680 1.686986 1.864689
2.339905 2.513801
+0.120070 0.165585 0.484694 0.959160 1.237528 1.529146 1.837513 2.107730
2.487495 2.766846
+0.150214 0.229487 0.628240 0.961255 1.337065 1.598306 1.919745 2.217861
2.537318 2.759560
+0.268624 0.345980 0.569637 0.754737 0.916538 1.508543 1.786354 1.954418
2.369530 2.501822
+0.246064 0.468874 0.662711 0.890015 1.147153 1.510431 1.781056 2.095943
2.655391 2.800369
+0.191631 0.280628 0.393229 0.611761 1.420170 1.707741 1.873032 2.101553
2.280348 2.499488
+0.361668 0.507047 0.789974 1.045992 1.502378 1.677032 1.905337 2.162555
2.432259 2.590873
+0.208160 0.294285 0.448634 0.694229 0.872517 1.070315 1.703352 2.168742
2.426189 2.603657
+0.316939 0.513618 0.705487 0.917036 1.175989 1.311140 1.618599 2.037840
2.450523 2.579395
+0.241068 0.377728 0.521595 0.717203 1.310414 1.539991 1.736431 2.098926
2.297917 2.587348
+0.234937 0.281875 0.780422 1.440733 1.609428 1.756430 1.977206 2.148605
2.602032 2.722501
+0.178679 0.242672 0.416988 0.708348 0.955620 1.176671 1.781798 2.054488
2.281591 2.448112
+0.345036 0.421080 0.740887 1.165442 1.324944 1.488798 1.763463 1.906174
2.395050 2.649158
+0.249586 0.357494 0.520747 0.847195 1.428408 1.597779 1.778194 2.178502
2.413437 2.564662
+0.295235 0.574231 1.249097 1.464097 1.727559 1.926790 2.095363 2.284830
2.567065 2.722480
+0.341930 0.427307 0.634001 0.804212 0.905629 1.333373 1.790329 1.892756
2.445823 2.602828
+0.363948 0.508985 0.667357 0.946354 1.437562 1.626545 1.811141 2.039091
2.291882 2.435493
+0.163514 0.277407 0.409207 0.902065 1.189070 1.339636 1.802411 1.960770
2.652930 2.818987
+0.302643 0.359753 0.651207 1.208021 1.423702 1.548149 1.882130 2.015591
2.260535 2.578896
+0.155928 0.216908 0.381812 0.654803 1.112373 1.589935 1.847562 1.976716
2.224078 2.725337
+0.274981 0.347675 0.572000 0.736046 0.894248 1.632373 1.891391 2.056890
2.602900 2.721779
+0.154496 0.243461 0.348174 0.689505 1.573807 1.700306 1.943182 2.101580
2.564661 2.773169
+0.292612 0.466612 0.795936 1.047468 1.413693 1.750848 2.062894 2.340073
2.613612 2.769493
+0.242896 0.361500 0.555859 0.793597 0.932291 1.409467 1.863863 2.009534
2.464500 2.677491
+0.221646 0.344724 0.554564 0.729403 1.136575 1.301772 1.529181 2.163590
2.395821 2.610805
+0.160969 0.224467 0.371545 0.626879 1.160953 1.444229 1.675966 1.879779
2.478590 2.672023
+0.214172 0.341585 0.676575 0.977397 1.325429 1.720096 2.072595 2.369539
2.635285 2.778792
+0.203311 0.289438 0.458739 0.914153 1.122885 1.302925 1.583844 1.886828
2.187869 2.427039
+0.280383 0.371600 0.824827 1.100246 1.236225 1.398923 1.578041 2.016000
2.368973 2.506732
+0.170627 0.251778 0.393686 0.608347 1.287599 1.446665 1.793278 2.036554
2.310153 2.752439
+0.180580 0.288746 0.987854 1.431706 1.677216 1.915661 2.124939 2.289452
2.589612 2.754264
+0.176335 0.266263 0.445421 0.706403 0.875402 1.422918 1.758670 1.960910
2.410676 2.601751
+0.216173 0.287404 0.480696 1.009765 1.291304 1.476644 1.895584 2.064286
2.284064 2.483108
+0.176523 0.273934 0.403407 0.966139 1.304724 1.436612 1.944728 2.084836
2.544458 2.762416
+0.311836 0.550501 0.879591 1.096228 1.276661 1.477859 1.817706 2.154340
2.560467 2.779841
+0.179765 0.250560 0.455939 1.023886 1.225132 1.475662 1.734617 1.918713
2.147342 2.438235
+0.271033 0.457235 0.599622 0.821049 0.940125 1.200937 1.849716 1.986656
2.548168 2.751578
+0.179326 0.248002 0.426405 0.817060 1.285888 1.565019 2.117359 2.298712
2.572404 2.752701
+0.374409 0.535936 0.897009 1.185070 1.591569 1.757202 1.967944 2.179985
2.457394 2.622641
+0.185472 0.282752 0.409439 0.657499 0.856446 1.029396 1.879933 2.069323
2.344742 2.753103
+0.375964 0.578457 0.758945 0.929339 1.127475 1.259437 1.704109 2.122973
2.336031 2.498298
+0.225641 0.361030 0.501679 0.783379 1.314851 1.452621 1.714150 1.987157
2.225703 2.724361
+0.144996 0.252919 0.632145 1.226038 1.575343 1.901549 2.171481 2.390554
2.682293 2.809834
+0.172022 0.263338 0.448634 0.729435 0.984007 1.171597 1.757049 1.990232
2.321305 2.771210
+0.235731 0.351117 0.796871 1.055711 1.300224 1.591818 1.895875 2.122918
2.417888 2.599817
+0.254053 0.319371 0.455623 1.086141 1.664667 1.915882 2.059084 2.233416
2.452037 2.586788
+0.375538 0.742993 1.139911 1.337758 1.735562 2.013906 2.315012 2.483433
2.651575 2.755211
+0.247245 0.481131 0.710366 0.897602 1.121094 1.271709 1.787346 2.199502
2.429663 2.740668
+0.226103 0.311441 0.501648 0.844424 1.362818 1.531338 1.777474 1.989925
2.187493 2.358501
+0.195862 0.296224 0.609554 0.783241 1.243472 1.445477 1.637032 2.022645
2.483557 2.646137
+0.233302 0.299441 0.472792 1.249457 1.457875 1.601860 1.831433 1.993719
2.597193 2.755433
+0.168096 0.224183 0.382700 0.596214 1.060587 1.294418 1.605760 1.848489
2.357695 2.569186
+0.330050 0.445912 0.661713 0.874446 1.000792 1.452973 1.943987 2.076916
2.423883 2.612359
+0.226382 0.287303 0.517631 0.806229 1.309009 1.885280 2.160514 2.286410
2.526377 2.660822
+0.203170 0.499314 0.887358 1.235074 1.462922 1.698260 1.999316 2.229225
2.571613 2.766691
+0.307531 0.378353 0.573606 0.712218 0.850169 1.308996 2.059092 2.263816
2.497943 2.676815
+0.276203 0.510250 0.686800 0.902844 1.205197 1.327979 1.718894 2.038947
2.256393 2.697149
+0.161948 0.229115 0.393619 0.683613 1.137811 1.322692 1.783723 1.961584
2.389073 2.636082
+0.201334 0.276773 0.468994 0.967017 1.475971 1.632424 1.965774 2.197278
2.480593 2.701553
+0.214587 0.315421 0.469498 0.733397 1.146003 1.277911 1.727839 2.227135
2.440264 2.681122
+0.255602 0.394609 0.743393 0.977796 1.199085 1.405972 1.918336 2.224828
2.479187 2.663394
+0.245989 0.352625 0.517055 0.802830 1.558712 1.795653 1.944055 2.133640
2.333267 2.479982
+0.337423 0.480433 0.869036 1.139571 1.630764 1.822959 2.074843 2.292613
2.479130 2.625317
+0.220974 0.358850 0.571640 0.752791 0.937013 1.151721 1.674398 2.062466
2.558717 2.784838
+0.267518 0.331708 0.541111 1.116547 1.411121 1.532868 1.792949 1.933520
2.248940 2.628644
+0.084613 0.105083 0.297424 0.916949 1.256301 1.567029 1.885388 2.189875
2.522795 2.792102
+0.205328 0.287223 0.724462 1.032395 1.457708 1.642169 1.925628 2.175524
2.429638 2.605488
+0.232554 0.338724 0.502115 0.859975 1.044090 1.245652 1.806555 1.999641
2.261164 2.459984
+0.291638 0.379172 0.626072 0.792796 0.959124 1.504886 1.734465 1.919612
2.614359 2.722709
+0.191554 0.263114 0.426797 0.610628 1.077406 1.829543 2.021948 2.210572
2.427652 2.613828
+0.389151 0.679476 0.915414 1.036635 1.250846 1.586610 2.040972 2.281500
2.567941 2.718815
+0.203200 0.301280 0.470357 0.668716 0.851737 0.980327 1.570862 2.037617
2.289067 2.693877
+0.304064 0.405934 0.710274 0.962705 1.128820 1.341667 1.635050 1.845382
2.079916 2.507510
+0.171777 0.240705 0.409371 0.786432 1.223202 1.375689 1.691760 1.866080
2.350406 2.493942
+0.231251 0.277994 0.557867 1.325822 1.660352 1.779477 2.007138 2.172322
2.440457 2.652308
+0.188101 0.259494 0.412543 0.624843 0.839549 1.033700 1.634128 1.931944
2.246076 2.425773
+0.361304 0.419465 0.795676 1.184605 1.296796 1.578447 1.841746 1.997361
2.540538 2.687139
+0.274372 0.338938 0.492443 0.963516 1.509514 1.706378 1.869885 2.077166
2.261281 2.444183
+0.415990 0.652103 1.031293 1.269551 1.572746 1.772975 2.004659 2.175272
2.430606 2.596553
+0.242045 0.370942 0.534392 0.763529 1.001165 1.129764 1.682192 2.144644
2.324478 2.715697
+0.377438 0.588168 0.765394 0.976873 1.356652 1.490088 1.737970 2.006774
2.213691 2.389973
+0.191625 0.284123 0.405342 1.016777 1.432730 1.547592 1.813930 1.958317
2.470765 2.649257
+0.272672 0.349555 0.633911 1.152234 1.303938 1.547640 1.919504 2.047696
2.562779 2.730575
+0.168423 0.236330 0.421468 0.831345 1.083543 1.553448 1.880726 2.064701
2.370864 2.632945
+0.219318 0.301481 0.513617 0.765086 1.026019 1.514647 2.048203 2.248568
2.499810 2.657069
+0.232695 0.347947 0.495203 0.718830 1.423013 1.722493 1.879584 2.165044
2.420251 2.589658
+0.270284 0.336865 0.684929 1.155789 1.690421 1.876744 2.027359 2.226178
2.446748 2.582000
+0.149701 0.193747 0.352019 0.520123 0.823974 1.434753 1.686592 1.961148
2.370914 2.693067
+0.254818 0.412303 0.601514 0.771438 1.175450 1.376569 1.539029 1.937039
2.408576 2.563621
+0.233713 0.355886 0.593725 0.762880 1.271479 1.563900 1.797523 2.094688
2.538627 2.711734
+0.179028 0.237103 0.396818 1.042021 1.633539 1.762676 2.123935 2.322391
2.588193 2.751345
+0.182027 0.251039 0.434581 0.714302 0.950997 1.437895 1.813570 1.969103
2.145882 2.353968
+0.501538 0.692148 0.848860 1.071308 1.350543 1.489476 1.841643 2.104284
2.341536 2.515294
+0.274530 0.381470 0.526682 0.922143 1.444946 1.573605 1.858767 2.066747
2.284796 2.626819
+0.360617 0.583131 0.979491 1.254083 1.488351 1.797557 2.219518 2.482176
2.742366 2.862025
+0.140913 0.220301 0.619552 0.818307 1.052429 1.339972 1.830726 2.133953
2.536378 2.751128
+0.293514 0.391691 0.790080 0.962740 1.160319 1.526602 1.805491 2.041462
2.361619 2.564962
+0.199542 0.290571 0.452891 0.689515 1.258530 1.409879 1.886242 2.228126
2.465677 2.726646
+0.296920 0.356356 0.784287 0.996540 1.146175 1.623865 1.815498 2.038297
2.600627 2.705700
+0.206451 0.276025 0.537547 0.802572 1.220407 1.642060 1.863625 2.001978
2.215339 2.585384
+0.333650 0.464751 0.653772 0.966306 1.103865 1.340203 1.784701 1.914591
2.470171 2.686916
+0.181861 0.244870 0.376456 0.554383 1.329897 1.810440 2.047836 2.202318
2.660855 2.817057
+0.450565 0.647291 0.951172 1.229431 1.519644 1.686812 2.049107 2.267169
2.501284 2.650596
+0.219996 0.320591 0.427747 0.601183 0.753448 0.929578 1.741979 2.285789
2.472633 2.749566
+0.333848 0.423373 0.658791 1.031299 1.222625 1.365771 1.901889 2.121101
2.290306 2.531185
+0.166064 0.233902 0.383355 0.661806 1.226567 1.399684 1.771269 1.974537
2.173487 2.566344
+0.189286 0.243602 0.390584 1.387930 1.588719 1.763237 2.091118 2.316314
2.593526 2.755080
+0.158404 0.224878 0.385000 0.668463 0.942954 1.411967 1.700313 1.828069
2.059396 2.692546
+0.325989 0.461263 0.851471 1.045709 1.284028 1.516199 1.797341 2.088387
2.437669 2.627215
+0.223709 0.289190 0.632812 0.858738 1.541903 1.746766 1.935738 2.184816
2.404330 2.583013
+0.545842 0.952420 1.340820 1.516838 1.838879 2.012890 2.244968 2.403170
2.592285 2.691119
+0.238526 0.349079 0.494582 0.987665 1.170746 1.348229 1.468645 2.296964
2.644160 2.787381
+0.270857 0.442003 0.655998 0.881913 1.259254 1.428358 1.769867 1.998528
2.395589 2.652840
+0.154384 0.211806 0.489481 0.997257 1.249817 1.541232 1.778865 1.949397
2.319136 2.623391
+0.268258 0.312888 0.589114 1.258625 1.572705 1.675430 1.912780 2.070458
2.279933 2.564230
+0.170715 0.224965 0.374011 0.540197 1.161887 1.499072 1.925865 2.082569
2.246619 2.469724
+0.324358 0.391989 0.706816 0.833614 1.015725 1.568995 1.735976 2.127068
2.558411 2.653871
+0.178059 0.258575 0.374125 0.536831 1.334827 1.798628 1.986978 2.189252
2.432266 2.626696
+0.198857 0.420955 0.817664 1.178363 1.466742 1.821295 2.207327 2.474411
2.738275 2.851185
+0.188344 0.324302 0.470468 0.790033 0.934101 1.188722 1.887171 2.052833
2.448325 2.630236
+0.201295 0.365646 0.526513 0.758388 1.140096 1.267331 1.650173 1.879342
2.102889 2.600286
+0.135058 0.169428 0.307348 0.503160 1.018083 1.447946 1.810984 2.134002
2.480277 2.759846
+0.178006 0.266610 0.390327 0.928681 1.501613 1.621327 1.871356 2.025864
2.580442 2.770801
+0.246182 0.424290 0.644023 0.801168 1.114876 1.277757 1.503317 2.074888
2.295695 2.501380
+0.322996 0.430355 0.631600 1.047698 1.221840 1.426726 1.903081 2.032223
2.516726 2.708452
+0.292994 0.430599 0.619178 0.794567 1.283029 1.652817 1.840836 2.069946
2.385375 2.528246
+0.525494 0.787797 1.121816 1.387482 1.674574 1.936221 2.224042 2.390624
2.634276 2.743234
+0.299504 0.409196 0.602235 0.892336 1.056426 1.253766 1.489136 1.639876
2.427480 2.650368
+0.423758 0.520480 0.758987 1.041257 1.173655 1.423676 1.818235 1.936407
2.363001 2.626644
+0.155042 0.247496 0.641445 0.954509 1.224970 1.465850 1.837841 2.090456
2.451501 2.716155
+0.251949 0.421094 0.706797 0.975659 1.259906 1.520067 1.816310 2.122017
2.474913 2.716671
+0.215220 0.302248 0.730598 0.896343 1.145567 1.370192 1.700685 2.022563
2.283265 2.489220
+0.285230 0.453559 0.663670 0.861526 1.011602 1.247419 1.655985 1.861291
2.578936 2.731333
+0.162067 0.219409 0.373433 0.544669 1.103298 1.597178 1.921040 2.143402
2.406499 2.660484
+0.342367 0.511499 0.931350 1.163219 1.393645 1.611146 1.972769 2.194416
2.470766 2.649264
+0.251010 0.364125 0.560956 0.746545 1.019837 1.170725 1.532945 2.288671
2.577088 2.723074
+0.315001 0.489412 0.720682 0.877607 1.090466 1.253848 1.448221 1.922954
2.255887 2.408634
+0.174666 0.235793 0.387644 0.554402 1.231089 1.456137 1.688034 2.127450
2.367035 2.597270
+0.215113 0.341915 1.043717 1.322751 1.495414 1.741895 1.961164 2.239824
2.544905 2.703945
+0.219852 0.301770 0.513912 0.705474 0.877540 1.295896 1.699002 1.987057
2.287968 2.496966
+0.290638 0.366442 0.655155 1.044990 1.172154 1.532536 1.800791 1.948931
2.509679 2.660055
+0.232252 0.313770 0.658552 0.941977 1.463174 1.665488 1.862461 2.027843
2.534016 2.701236
+0.326539 0.552681 1.121731 1.331381 1.520072 1.867084 2.082861 2.332474
2.606039 2.737092
+0.190254 0.340428 0.492777 0.739738 0.895461 1.079371 1.643156 1.795290
2.491822 2.729382
+0.283586 0.418440 0.587306 0.870866 1.418553 1.577030 1.799498 2.069398
2.274484 2.438103
+0.235752 0.357650 0.502891 1.012434 1.258853 1.407789 1.820057 1.955830
2.505903 2.734330
+0.278412 0.343137 0.849977 1.232895 1.350504 1.590626 1.787519 2.091578
2.541360 2.663856
+0.162966 0.243159 0.439238 0.684821 0.887783 1.462899 1.881739 2.044253
2.289393 2.705002
+0.235063 0.371799 0.578210 0.752199 1.008546 1.476284 1.804912 2.271399
2.655042 2.789653
+0.154939 0.223696 0.344718 0.667555 1.495659 1.669436 2.069883 2.307215
2.627692 2.811343
+0.239702 0.335917 0.716616 1.131805 1.452514 1.639133 2.105515 2.279822
2.502030 2.669220
+0.226818 0.331261 0.472705 0.651974 0.781639 1.219798 1.822904 2.082732
2.439327 2.610900
+0.223413 0.359594 0.534704 0.741518 1.225894 1.389874 1.618191 2.009911
2.207000 2.459844
+0.171308 0.268378 0.383799 0.858926 1.376293 1.519165 1.780601 1.922915
2.623094 2.802402
+0.140134 0.212320 0.443224 0.967457 1.264241 1.562153 1.929148 2.217388
2.668341 2.830751
+0.221323 0.322124 0.485563 0.818589 1.011837 1.198984 1.423616 1.669403
2.157523 2.363190
+0.369687 0.525655 0.719213 0.939654 1.137631 1.312217 1.599935 1.826813
2.355221 2.580680
+0.211975 0.314411 0.489148 0.739213 1.377801 1.554504 1.824373 2.158875
2.352992 2.722621
+0.170698 0.296368 0.934285 1.243133 1.555900 1.866544 2.159940 2.363436
2.585032 2.738530
+0.189263 0.305887 0.439912 0.784610 1.227264 1.342508 1.587650 1.754907
2.439893 2.721315
+0.296339 0.385169 0.612012 1.081322 1.276361 1.437178 1.871470 2.001718
2.339094 2.640217
+0.229588 0.320544 0.517278 0.969137 1.142560 1.626089 1.877916 2.115461
2.546741 2.708025
+0.248869 0.420193 0.732388 1.049015 1.303410 1.601458 1.949210 2.239464
2.648223 2.822614
+0.207600 0.292320 0.496539 0.857149 1.182294 1.399849 1.714165 1.868238
2.027936 2.200737
+0.225558 0.396897 0.541783 0.873366 1.178972 1.299579 1.677191 1.849602
2.330475 2.752717
+0.176821 0.231377 0.372767 0.508565 1.152819 1.808050 2.112679 2.250073
2.571342 2.748550
+0.352149 0.515765 1.023238 1.260221 1.443565 1.622067 1.872804 2.100177
2.489280 2.671043
+0.166138 0.263444 0.370151 0.590066 0.754819 0.940533 1.761870 1.946611
2.445015 2.758191
+0.342082 0.476411 0.656223 0.851774 1.003992 1.153372 1.694401 2.065625
2.255642 2.440148
+0.227237 0.376514 0.514329 0.894887 1.141673 1.283052 1.831377 1.985902
2.334470 2.784878
+0.215891 0.269548 0.684111 1.405658 1.674813 1.800925 2.172085 2.339395
2.591569 2.730100
+0.236240 0.400377 0.533684 0.750343 0.910405 1.089112 1.737729 1.912807
2.192519 2.688733
+0.169242 0.284879 0.916252 1.169769 1.433683 1.644376 1.919124 2.161625
2.482664 2.682591
+0.270731 0.336506 0.477594 1.042714 1.605840 1.796859 1.945909 2.160039
2.354913 2.520950
+0.420586 0.652563 1.117162 1.406006 1.747537 1.947424 2.203094 2.359970
2.547902 2.682168
+0.281552 0.395037 0.640181 0.944531 1.193959 1.330492 1.718657 2.188389
2.444591 2.578673
+0.311824 0.476892 0.633431 0.845825 1.332518 1.491656 1.693614 2.041082
2.289317 2.439399
+0.133945 0.200790 0.647237 0.927687 1.188883 1.369658 1.699557 1.972777
2.295259 2.678185
+0.204796 0.278215 0.443465 1.270484 1.405209 1.640920 1.824252 2.327085
2.599637 2.772533
+0.183970 0.244116 0.410594 0.639103 1.221589 1.404867 1.628358 1.902439
2.168632 2.306804
+0.343622 0.434735 0.666599 0.868069 1.048942 1.532778 1.819835 1.971884
2.288701 2.448745
+0.238017 0.320361 0.657255 0.917611 1.303306 1.727361 1.988909 2.181455
2.442965 2.613322
+0.323613 0.545056 0.930173 1.226059 1.440181 1.772300 2.056890 2.347811
2.689382 2.820616
+0.288930 0.401387 0.617124 0.836453 0.990306 1.261227 1.913283 2.110049
2.324584 2.557162
+0.332670 0.480804 0.656147 0.880536 1.029566 1.230493 1.769063 1.932296
2.200370 2.585210
+0.185551 0.265352 0.409432 0.608847 1.034698 1.222821 1.876965 2.171647
2.403502 2.666441
+0.155026 0.223348 0.401684 1.079141 1.415789 1.620021 2.045515 2.258512
2.631625 2.802291
+0.183461 0.263081 0.425694 0.635685 1.188664 1.357556 1.574991 2.085982
2.288725 2.511108
+0.314738 0.463011 0.648733 0.877651 1.002890 1.265811 2.005414 2.198095
2.481535 2.714178
+0.244411 0.318444 0.546578 0.793615 1.326150 1.735479 1.945598 2.114662
2.315350 2.478535
+0.326237 0.543540 0.987361 1.304413 1.684932 1.902147 2.207172 2.374273
2.557527 2.716216
+0.157795 0.283302 0.430398 0.660379 0.811060 1.142539 1.479298 1.718714
2.670264 2.847556
+0.220856 0.283872 0.779935 1.074940 1.312211 1.626329 1.837609 1.968885
2.155988 2.602381
+0.140763 0.205719 0.406561 0.762459 1.041266 1.486993 1.838306 2.114606
2.552810 2.772285
+0.140451 0.395920 0.792110 1.108001 1.402642 1.623079 1.943151 2.227952
2.546163 2.773998
+0.229862 0.336462 0.546590 0.810150 1.201906 1.346787 1.825323 2.092925
2.285730 2.473359
+0.224913 0.328246 0.517269 0.874793 1.012587 1.452178 1.695778 2.014930
2.511447 2.672574
+0.247745 0.335741 0.546558 0.710177 1.170556 1.727789 1.970678 2.158532
2.482819 2.628913
+0.398252 0.555087 0.890367 1.121205 1.381533 1.601228 1.866647 2.066612
2.405164 2.588016
+0.198563 0.288867 0.478054 0.658477 0.851841 1.027105 1.539739 2.021106
2.579462 2.784184
+0.304271 0.371642 0.661590 1.068976 1.224249 1.411927 1.680524 1.869770
2.100073 2.308554
+0.188223 0.257939 0.432402 0.735050 1.318038 1.485528 1.828110 2.046435
2.307018 2.457237
+0.246723 0.297276 0.604475 1.310901 1.570442 1.688851 1.913658 2.051334
2.556011 2.714965
+0.158309 0.234509 0.435792 0.667900 0.957567 1.235918 1.592945 1.818158
2.307389 2.768973
+0.419843 0.501412 0.766892 1.073173 1.189374 1.480225 1.766597 1.922151
2.537937 2.694771
+0.275140 0.335563 0.678421 1.081521 1.592379 1.772635 1.931245 2.140699
2.333804 2.490857
+0.372056 0.856814 1.239538 1.409989 1.690297 1.863018 2.072702 2.273547
2.532657 2.690517
+0.321254 0.422981 0.604856 0.793437 0.912112 1.128454 1.795979 2.173232
2.360146 2.536137
+0.395214 0.598779 0.771997 0.946713 1.213777 1.330433 1.660335 1.977154
2.165056 2.344018
+0.225286 0.317828 0.464801 1.112329 1.369512 1.511999 1.921954 2.053407
2.593519 2.777285
+0.330612 0.407807 0.730129 1.259731 1.459811 1.605671 1.981307 2.137009
2.465971 2.679722
+0.213145 0.305305 0.507016 0.662299 1.056848 1.479862 1.671904 2.102707
2.369871 2.581994
+0.219658 0.296096 0.443507 0.610973 0.799691 1.676579 1.965487 2.153235
2.502228 2.692999
+0.174947 0.257739 0.373547 0.552567 1.405316 1.614249 1.848917 2.117795
2.317884 2.711904
+0.209667 0.297529 0.756195 1.095304 1.564196 1.844775 2.103697 2.292657
2.520051 2.679489
+0.170138 0.240310 0.452247 0.684414 0.880102 1.366921 1.741648 2.131295
2.505730 2.732611
+0.278164 0.468635 0.707518 0.853693 1.054780 1.210458 1.540941 2.174562
2.410662 2.612138
+0.155738 0.238890 0.352836 0.621012 1.441438 1.619698 1.825165 1.975331
2.525373 2.748574
+0.223776 0.274424 0.479048 0.797871 1.694190 1.878135 2.135285 2.373726
2.595422 2.729787
+0.151088 0.198286 0.326558 0.536276 0.845893 1.141653 1.460565 1.762868
2.025851 2.177303
+0.434445 0.614208 0.887657 1.028446 1.191359 1.392204 1.786886 2.062481
2.423405 2.619356
+0.180755 0.275311 0.397787 0.859366 1.409762 1.523325 1.908846 2.082319
2.389720 2.743887
+0.275975 0.508416 0.889894 1.318925 1.633314 1.904728 2.169012 2.374655
2.726973 2.847666
+0.156239 0.262624 0.406657 0.739074 1.044495 1.201234 1.810887 2.005600
2.581700 2.804889
+0.195391 0.258771 0.654924 0.824371 1.315259 1.500728 1.765938 2.063992
2.341176 2.513659
+0.178034 0.301047 0.463020 0.716172 1.198868 1.340454 1.834558 2.022132
2.400750 2.776294
+0.340368 0.404236 0.843747 1.039238 1.202107 1.708051 1.914952 2.169509
2.521521 2.623348
+0.218465 0.289694 0.528045 0.817051 1.132337 1.580464 1.838891 1.983392
2.147493 2.348131
+0.322509 0.458058 0.654679 0.958976 1.118211 1.321565 1.901390 2.046409
2.360931 2.664215
+0.191821 0.252321 0.389176 0.581111 1.529667 1.931689 2.083614 2.270465
2.566855 2.713879
+0.493961 0.710827 0.982260 1.196274 1.419327 1.620910 1.928015 2.145652
2.429769 2.601973
+0.213148 0.311589 0.424636 0.602664 0.736895 1.022165 1.992278 2.218533
2.611628 2.850324
+0.288129 0.434441 0.629313 0.856153 1.289667 1.424520 1.875795 2.150240
2.351814 2.536843
+0.160031 0.230716 0.406654 0.870424 1.156517 1.392317 1.804098 1.951437
2.210479 2.735164
+0.229340 0.293962 0.503222 1.242097 1.475824 1.624647 1.998680 2.144499
2.578549 2.753270
+0.158770 0.220035 0.363386 0.577761 0.963090 1.174939 1.738169 1.979202
2.162436 2.661916
+0.346062 0.444816 0.716985 1.180717 1.370580 1.522996 1.892173 2.066682
2.395796 2.627659
+0.307495 0.389330 0.612607 0.969283 1.557708 1.839939 1.996737 2.172382
2.420627 2.539195
+0.437804 0.726957 1.291168 1.503297 1.765428 1.962121 2.163647 2.336227
2.579616 2.708524
+0.232184 0.333678 0.528368 0.706749 1.203280 1.379018 1.611161 2.154678
2.592903 2.750319
+0.272652 0.461710 0.625777 0.839609 1.342021 1.496726 1.715376 2.137572
2.370040 2.597390
+0.184908 0.302324 0.454883 0.880307 1.104383 1.292526 1.777203 1.943364
2.444174 2.622726
+0.265644 0.341261 0.553228 1.139475 1.427148 1.560441 1.933941 2.084129
2.393307 2.654135
+0.167920 0.207301 0.370331 0.525538 1.030891 1.368163 1.782474 2.062404
2.332762 2.526299
+0.343172 0.433912 0.717501 0.889734 1.052060 1.695278 2.053156 2.208456
2.608869 2.718320
+0.216527 0.305247 0.445890 0.729271 1.639736 1.903284 2.053351 2.221254
2.432253 2.568018
+0.110545 0.209955 0.844788 1.174205 1.492201 1.810243 2.177274 2.440496
2.697294 2.835232
+0.217384 0.337412 0.488999 0.761842 0.879715 1.209528 1.970747 2.120795
2.611654 2.791762
+0.190459 0.296484 0.469967 0.800649 1.105561 1.278527 1.516938 1.693066
2.114420 2.716739
+0.134814 0.175978 0.300425 0.496817 1.244295 1.485308 1.861721 2.131233
2.485046 2.773884
+0.210174 0.278266 0.435508 0.927538 1.606908 1.753898 1.957554 2.166283
2.398518 2.749609
+0.213766 0.315300 0.509924 0.709930 0.964724 1.106776 1.382615 2.001070
2.323214 2.565314
+0.400615 0.524954 0.798552 1.012852 1.135488 1.474850 1.989029 2.130909
2.507971 2.679460
+0.249400 0.377023 0.519635 0.754227 1.459559 1.642762 1.828961 2.077882
2.298228 2.467534
+0.473365 0.683973 1.052341 1.375830 1.548106 1.747589 2.139299 2.318768
2.609977 2.739255
+0.203877 0.341791 0.485180 0.884069 1.097592 1.269532 1.479924 1.757879
2.648399 2.822387
+0.273046 0.404254 0.555403 0.954547 1.291233 1.399022 1.722890 1.903441
2.171984 2.645312
+0.040369 0.117266 0.617136 0.892043 1.260331 1.541653 1.859383 2.153096
2.498232 2.761886
+0.132414 0.211358 0.742445 1.066857 1.331084 1.570793 1.867458 2.132535
2.479624 2.731076
+0.237329 0.326529 0.612538 0.790663 0.990133 1.413736 1.738235 1.936914
2.167728 2.451626
+0.273960 0.405794 0.572530 0.933672 1.057816 1.397952 1.856531 1.997548
2.599486 2.760042
+0.199334 0.298380 0.442931 0.628638 1.303213 1.640138 1.804023 2.113020
2.375455 2.548946
+0.350188 0.502010 0.821298 1.038639 1.369294 1.592404 1.910815 2.156486
2.460508 2.653260
+0.281558 0.399892 0.573105 0.753299 0.900613 1.054574 1.581987 2.178437
2.430354 2.616044
+0.344653 0.543532 0.703715 0.862285 1.198215 1.338208 1.579080 2.060769
2.306749 2.485749
+0.220701 0.326795 0.520618 0.755133 1.295552 1.451886 1.690502 2.200045
2.414271 2.615909
+0.279478 0.332193 0.801527 1.345966 1.487477 1.678499 1.922202 2.100025
2.585571 2.713387
+0.163502 0.212169 0.365096 0.525464 0.869846 1.208807 1.793988 2.040314
2.297180 2.469797
+0.285531 0.341488 0.754059 1.170016 1.300835 1.513696 1.699861 1.889918
2.581459 2.706874
+0.249595 0.366997 0.626427 0.945219 1.407043 1.560558 1.831657 2.231149
2.466354 2.654518
+0.271671 0.443136 1.156412 1.406456 1.676521 1.856481 2.063218 2.230498
2.475840 2.639575
+0.286620 0.427806 0.637320 0.803409 0.996161 1.266383 1.681751 2.003968
2.394651 2.588547
+0.314906 0.440519 0.612129 0.896126 1.472415 1.717693 1.881351 2.099437
2.369166 2.495466
+0.170277 0.251270 0.405477 0.915641 1.126887 1.436630 1.714771 1.893198
2.552995 2.738519
+0.279410 0.337137 0.734563 1.281046 1.480602 1.611880 1.853215 1.994883
2.416054 2.654827
+0.165776 0.226083 0.417544 0.744574 1.044468 1.534891 1.808494 1.944946
2.138491 2.601790
+0.264579 0.336652 0.542033 0.710190 0.913338 1.655751 1.817762 2.231956
2.524436 2.658519
+0.158194 0.235588 0.338347 0.541657 1.583377 1.766293 2.009135 2.243336
2.503941 2.775158
+0.332612 0.509620 0.822935 1.075876 1.454286 1.650788 1.974450 2.251279
2.537342 2.745115
+0.262817 0.359709 0.520893 0.707667 0.818364 1.438849 1.971249 2.087666
2.497014 2.646442
+0.233200 0.399599 0.612456 0.775547 1.199192 1.355765 1.646901 2.136245
2.342490 2.695742
+0.149687 0.238538 0.372248 0.634520 1.255813 1.433790 1.770041 1.928752
2.611905 2.824930
+0.137016 0.210297 0.591489 1.125451 1.375648 1.685296 2.089612 2.390888
2.704458 2.844434
+0.213490 0.341024 0.541716 0.750061 1.088199 1.244576 1.555338 1.965568
2.187900 2.383714
+0.300159 0.489291 0.825022 1.037100 1.194088 1.347375 1.684747 2.024936
2.465611 2.740973
+0.170029 0.255033 0.392758 0.727117 1.382065 1.579676 1.800912 1.959072
2.282335 2.728796
+0.175883 0.365509 1.112175 1.385866 1.720391 1.977810 2.245295 2.421614
2.629567 2.754004
+0.162590 0.248164 0.454630 0.763209 0.966031 1.282338 1.730743 1.938052
2.479376 2.667563
+0.258043 0.345866 0.556520 0.981312 1.361528 1.482377 1.872244 2.158226
2.362269 2.555030
+0.234139 0.348843 0.528234 0.987884 1.195217 1.422145 1.960028 2.127365
2.603321 2.793004
+0.179699 0.559209 0.867682 1.088835 1.316888 1.571498 1.922198 2.197391
2.501118 2.728679
+0.216784 0.310791 0.487492 0.932903 1.201954 1.366554 1.800398 1.977499
2.174265 2.537065
+0.186878 0.400655 0.580952 0.846287 1.103872 1.266778 1.842772 2.019592
2.488005 2.717222
+0.164641 0.248712 0.389358 0.772822 1.212561 1.369916 2.025869 2.277615
2.617524 2.809527
+0.351899 0.520326 0.926597 1.219651 1.509839 1.676837 1.921744 2.111253
2.356380 2.545934
+0.242182 0.365285 0.506156 0.716020 0.865221 1.011688 1.786917 2.122981
2.350877 2.767729
+0.413776 0.559566 0.735800 0.928997 1.079117 1.267179 1.880069 2.152492
2.324834 2.539856
+0.210597 0.329568 0.469735 0.788590 1.215495 1.319810 1.711456 2.058991
2.245438 2.653727
+0.197937 0.254148 0.477985 1.227090 1.629920 1.767432 2.186975 2.385104
2.594869 2.725544
+0.205489 0.333855 0.523915 0.706275 1.102152 1.246608 1.648901 2.026835
2.281695 2.759313
+0.230328 0.322431 0.861834 1.145614 1.347211 1.576111 1.807275 2.004824
2.354365 2.572251
+0.224898 0.282022 0.506636 1.152298 1.626560 1.752095 2.028178 2.218821
2.488955 2.670460
+0.313732 0.625469 1.164472 1.499077 1.749612 2.018528 2.262230 2.429601
2.692165 2.822502
+0.375623 0.575307 0.791200 0.935770 1.096937 1.343393 1.807992 2.187306
2.519720 2.694803
+0.236981 0.332412 0.479270 0.844461 1.347641 1.490733 1.683942 2.039143
2.297619 2.458431
+0.129047 0.206250 0.636751 0.865101 1.136893 1.356610 1.704798 1.916685
2.518358 2.756320
+0.195171 0.266517 0.414793 1.239561 1.452906 1.608357 1.833045 2.047802
2.473522 2.621994
+0.165853 0.212720 0.372757 0.536136 1.013938 1.339627 1.555122 1.945745
2.236281 2.440949
+0.256981 0.368868 0.635878 0.802543 1.084757 1.439120 1.814729 2.120519
2.458154 2.621456
+0.214382 0.297135 0.445091 0.702050 1.365102 1.851262 2.067026 2.207298
2.470728 2.612432
+0.340710 0.532103 0.935278 1.171022 1.377886 1.638598 1.965274 2.246164
2.631266 2.806341
+0.310524 0.412051 0.582478 0.768755 0.871594 1.119854 1.926346 2.207508
2.407091 2.636633
+0.249349 0.443517 0.631532 0.810096 1.205129 1.357206 1.607396 1.984157
2.208016 2.645111
+0.143090 0.185312 0.325214 0.504000 1.134467 1.327913 1.673654 2.006903
2.389284 2.746094
+0.226575 0.298946 0.453938 0.998061 1.394600 1.597283 2.064183 2.223246
2.425469 2.569458
+0.183924 0.255181 0.415834 0.624247 1.042338 1.203077 1.555240 2.125309
2.400352 2.661916
+0.275610 0.365968 0.654909 0.990108 1.170799 1.455333 2.077561 2.252672
2.502315 2.685945
+0.204334 0.287844 0.394810 0.761295 1.501200 1.784709 1.935569 2.152830
2.349263 2.545639
+0.342976 0.527539 0.917466 1.160585 1.499531 1.761830 2.095272 2.301872
2.540570 2.694692
+0.202374 0.333367 0.480179 0.708677 0.819505 1.105285 1.806641 1.953348
2.610844 2.797497
+0.307033 0.368471 0.602486 1.108611 1.413347 1.528636 1.798519 1.986138
2.169052 2.437256
+0.144073 0.196932 0.386988 0.819061 1.289767 1.625073 1.901924 2.136105
2.483019 2.707970
+0.176760 0.268627 0.662082 1.056866 1.547973 1.711386 1.972939 2.249909
2.544471 2.761094
+0.191409 0.292985 0.492193 0.800526 1.041836 1.278546 1.836626 2.028677
2.249387 2.627785
+0.324102 0.399146 0.687435 0.868704 1.022957 1.582084 1.853847 1.981885
2.554914 2.677057
+0.229172 0.302836 0.481418 0.704363 0.967567 1.828269 2.097295 2.258467
2.549112 2.704652
+0.467124 0.696788 0.939500 1.094987 1.277543 1.488496 1.896279 2.158470
2.474182 2.659994
+0.175418 0.234039 0.367674 0.513586 0.747619 1.008405 1.583161 2.053114
2.363292 2.681153
+0.410273 0.561949 0.736215 0.956685 1.135688 1.288424 1.750612 1.937714
2.151318 2.489336
+0.204541 0.277613 0.529607 0.722971 1.199975 1.447336 1.715634 1.921054
2.357781 2.507488
+0.253116 0.311907 0.696982 1.320082 1.575418 1.705324 2.005068 2.168666
2.461879 2.665053
+0.163657 0.237902 0.393374 0.609490 0.854272 1.089980 1.526387 1.842337
2.126252 2.679051
+0.448627 0.530664 0.812719 1.095201 1.207641 1.575411 1.884209 2.034297
2.553007 2.688355
+0.262717 0.338748 0.512685 1.003543 1.480178 1.622083 1.828518 2.142415
2.356457 2.511530
+0.417111 0.636688 1.036571 1.319877 1.679924 1.873389 2.073722 2.249396
2.507732 2.651054
+0.263698 0.461151 0.618737 0.830471 1.004041 1.158874 1.801566 2.020222
2.306558 2.743041
+0.387779 0.575108 0.729791 0.932981 1.361163 1.505161 1.751183 2.068466
2.338260 2.487637
+0.181510 0.265666 0.454631 1.082382 1.287303 1.579202 1.851178 2.096963
2.467237 2.646930
+0.277668 0.345119 0.602341 1.179200 1.378990 1.545625 1.813861 1.962590
2.491799 2.664453
+0.179320 0.248080 0.456925 0.722589 1.126932 1.579450 1.799397 1.950668
2.484125 2.707238
+0.314322 0.381145 0.608651 0.727613 0.890472 1.610280 2.136172 2.258358
2.596376 2.709780
+0.189539 0.266068 0.419729 0.651693 1.410161 1.643106 1.854810 2.275582
2.492054 2.722009
+0.254466 0.313038 0.594149 1.012536 1.688813 1.935465 2.119184 2.287869
2.535543 2.667926
+0.134691 0.171906 0.302740 0.492936 0.899551 1.229188 1.733940 2.012878
2.446339 2.742762
+0.231556 0.365068 0.680761 0.889142 1.111338 1.295904 1.542636 1.971784
2.427562 2.631912
+0.222525 0.305606 0.527193 0.687519 1.181381 1.671764 1.863683 2.072023
2.634517 2.779272
+0.178770 0.237415 0.375160 0.856692 1.673680 1.813743 2.016791 2.272421
2.522601 2.735959
+0.193532 0.268731 0.451328 0.753471 0.984854 1.285349 1.685647 1.884123
2.091677 2.243418
+0.476037 0.651610 0.801054 1.010162 1.241374 1.355840 1.775976 2.086152
2.272907 2.454351
+0.211657 0.308331 0.421366 0.865966 1.418774 1.556743 1.786149 2.020332
2.198585 2.631981
+0.203789 0.490794 1.010137 1.275006 1.472213 1.810140 2.170639 2.437660
2.662122 2.788061
+0.174355 0.252095 0.674715 0.842194 1.055087 1.278000 1.698680 2.070561
2.399385 2.657430
+0.245109 0.324049 0.628822 0.927910 1.123601 1.580066 1.878640 2.054601
2.358721 2.546838
+0.182644 0.253804 0.386248 0.614056 1.364821 1.545877 2.040174 2.218827
2.419010 2.624609
+0.295605 0.367794 0.690701 1.055162 1.186600 1.644453 1.944154 2.101444
2.562120 2.691268
+0.220878 0.289573 0.640307 0.822072 1.144055 1.567797 1.766410 1.908109
2.103459 2.560489
+0.403453 0.526298 0.732204 0.901150 1.035869 1.339383 1.783990 1.941961
2.371032 2.626653
+0.212825 0.258570 0.471588 0.685549 1.263740 1.821051 2.163822 2.288398
2.628063 2.788155
+0.401181 0.642053 1.032473 1.236110 1.444450 1.686678 2.006722 2.228515
2.572112 2.723964
+0.239433 0.341091 0.492629 0.707630 0.881426 1.030816 1.719255 2.344056
2.579063 2.756942
+0.294093 0.382770 0.577412 1.009281 1.313036 1.419303 1.744673 2.094230
2.289039 2.475843
+0.169805 0.236922 0.403314 0.638995 1.176446 1.352145 1.665573 1.909756
2.150120 2.716243
+0.210447 0.277913 0.452474 1.402686 1.513430 1.720944 1.903938 2.278499
2.583756 2.743179
+0.159574 0.225382 0.374008 0.714137 1.011253 1.371713 1.699162 1.871587
2.027056 2.491194
+0.258602 0.557253 0.819720 1.038856 1.301470 1.445358 1.830613 2.098171
2.320809 2.541075
+0.232756 0.282242 0.631974 0.898694 1.537444 1.869217 2.063967 2.234463
2.498226 2.633517
+0.580133 0.997946 1.320956 1.481874 1.731605 1.898579 2.120712 2.290128
2.530088 2.651657
+0.211840 0.307093 0.453360 0.945579 1.250815 1.490290 1.724135 2.281097
2.562699 2.752602
+0.314276 0.493555 0.667782 0.896500 1.323006 1.482618 1.667487 1.974415
2.427345 2.555679
+0.182455 0.261592 0.418011 1.050927 1.261387 1.443370 1.665467 1.939030
2.444695 2.638451
+0.241570 0.306934 0.491293 1.105950 1.554827 1.666520 1.923917 2.087652
2.367600 2.654889
+0.190084 0.254850 0.454062 0.724519 1.083362 1.393887 1.892335 2.088856
2.321764 2.484299
+0.306497 0.389831 0.721793 0.839714 1.124754 1.652401 1.822919 2.273310
2.569195 2.669599
+0.186200 0.273460 0.383201 0.564758 1.511073 1.845018 1.998284 2.194096
2.388693 2.587923
+0.300722 0.478218 0.823364 1.127490 1.591141 1.871349 2.174720 2.403181
2.624785 2.782405
+0.228884 0.358342 0.504622 0.795874 1.005622 1.152613 1.908053 2.124794
2.372473 2.797584
+0.171885 0.248234 0.432842 0.833143 1.040892 1.269289 1.661635 1.918629
2.158962 2.653403
+0.140943 0.193684 0.343025 0.562303 1.069552 1.543330 1.824473 1.961637
2.463513 2.770537
+0.173053 0.245656 0.360656 0.960618 1.589535 1.689906 1.984141 2.142998
2.588389 2.759403
+0.240180 0.429951 0.637440 0.786596 1.069147 1.226573 1.470883 1.952052
2.195064 2.615973
+0.367862 0.471897 0.730834 1.082320 1.226293 1.462927 1.928169 2.052466
2.406737 2.662458
+0.247175 0.358209 0.535946 0.781876 1.363697 1.635239 1.807233 1.993776
2.452769 2.601039
+0.445578 0.687898 1.114108 1.301027 1.577397 1.886042 2.224903 2.436534
2.659695 2.761031
+0.214389 0.336025 0.487794 0.759534 0.970518 1.141100 1.457335 1.624644
2.306922 2.715265
+0.377300 0.466775 0.716121 1.083781 1.256543 1.411238 1.789433 1.936372
2.205572 2.562355
+0.148362 0.214593 0.545023 0.840437 1.193325 1.480659 1.791868 2.083419
2.410537 2.676129
+0.150403 0.278398 0.792676 0.976680 1.218845 1.405245 1.775056 2.162458
2.547861 2.746383
+0.236301 0.328633 0.630867 0.839915 1.042349 1.298870 1.627752 1.839491
2.298928 2.493962
+0.337889 0.497920 0.711277 0.850420 0.992027 1.246884 1.710746 2.086682
2.527158 2.707162
+0.172215 0.236540 0.372897 0.525146 1.182577 1.735727 1.927035 2.114619
2.319170 2.542782
+0.415304 0.624807 0.906616 1.117841 1.446155 1.669417 1.948413 2.172815
2.504530 2.670754
+0.265417 0.407241 0.613894 0.816534 0.980063 1.156061 1.756747 2.274851
2.497193 2.712242
+0.276440 0.468209 0.649518 0.816686 1.195171 1.355517 1.549226 1.935272
2.217871 2.426979
+0.188925 0.277012 0.412665 0.672627 1.354807 1.514523 1.699988 2.144554
2.382186 2.586077
+0.242630 0.352485 0.912974 1.343781 1.604428 1.801867 2.014791 2.193072
2.460809 2.631999
+0.190903 0.285841 0.449070 0.760328 0.954285 1.182936 1.692638 1.878163
2.276840 2.465963
+0.220659 0.300374 0.721694 0.947306 1.298330 1.562980 1.760618 1.888247
2.506445 2.689675
+0.213168 0.290928 0.695227 0.918179 1.378186 1.631987 1.847886 2.003072
2.358358 2.619347
+0.328586 0.517244 0.937320 1.376238 1.574840 1.764347 2.058630 2.224334
2.584444 2.756653
+0.248486 0.367007 0.562147 0.750632 0.902785 1.147563 1.637415 1.912062
2.413993 2.605696
+0.310691 0.477895 0.670796 0.940507 1.418293 1.563497 1.805141 2.114076
2.376358 2.535155
+0.256555 0.414210 0.559427 0.981289 1.191646 1.378307 1.678398 1.849306
2.576704 2.756630
+0.291424 0.335003 0.750149 1.289655 1.437209 1.599989 1.803177 1.967415
2.601748 2.733761
+0.195254 0.279513 0.451755 0.649111 0.828694 1.609509 1.914906 2.091219
2.319589 2.534899
+0.222304 0.332624 0.475678 0.685205 1.030332 1.737223 1.920979 2.378290
2.706719 2.817726
+0.164833 0.240093 0.359862 0.801929 1.513677 1.641713 2.040524 2.248843
2.488659 2.714025
+0.214777 0.287322 0.572644 1.145070 1.367112 1.752687 2.042424 2.222067
2.543047 2.697885
+0.226099 0.330382 0.474439 0.687757 0.799187 1.319837 1.944566 2.078099
2.367800 2.508460
+0.244540 0.392163 0.553692 0.729765 1.247865 1.448376 1.617590 2.074636
2.340052 2.518064
+0.175381 0.314231 0.446023 0.797404 1.328458 1.439727 1.793346 1.939571
2.468800 2.721651
+0.205808 0.293670 0.452447 1.074268 1.288235 1.655635 1.857504 2.364687
2.639812 2.798144
+0.253926 0.392653 0.587584 0.800134 0.976310 1.185587 1.570687 1.821414
2.090893 2.349021
+0.322461 0.410912 0.723569 1.060644 1.201524 1.400360 1.579189 1.788759
2.460242 2.616602
+0.211266 0.304981 0.436011 0.771978 1.490623 1.677748 1.886227 2.113497
2.326353 2.727265
+0.235012 0.406911 0.864785 1.291485 1.708295 1.938554 2.179896 2.352404
2.563792 2.711446
+0.176814 0.268620 0.445837 0.823113 1.029776 1.271571 1.623388 1.811215
2.402140 2.614165
+0.241865 0.339268 0.507509 1.003677 1.204347 1.372561 1.940795 2.101371
2.385606 2.669975
+0.230878 0.334743 0.500370 0.879929 1.021894 1.533770 1.970789 2.128971
2.567262 2.717288
+0.297505 0.451574 0.748848 0.988527 1.366237 1.606668 1.894660 2.174481
2.521427 2.759168
+0.199265 0.271145 0.498160 0.854679 1.172103 1.364148 1.762079 1.969095
2.173538 2.311630
+0.222173 0.424864 0.564942 0.829809 1.038172 1.194055 1.720601 1.858086
2.431760 2.741461
+0.181961 0.226819 0.390513 0.556339 1.056596 1.553065 2.128349 2.258018
2.602497 2.802121
+0.357600 0.565047 1.153012 1.350312 1.533576 1.718542 1.957892 2.175347
2.505650 2.678495
+0.162257 0.236808 0.374039 0.570569 0.748034 1.172262 1.823392 2.053032
2.513769 2.772072
+0.305794 0.465870 0.645121 0.882650 1.141294 1.266856 1.701581 2.002881
2.184124 2.411254
+0.231652 0.380738 0.549642 0.837410 1.225266 1.332971 1.851582 2.119371
2.315077 2.732108
+0.235449 0.286771 0.684809 1.346663 1.526630 1.703476 2.101486 2.254546
2.577181 2.718994
+0.233870 0.446515 0.605080 0.814654 1.054963 1.178801 1.633158 1.849743
2.139379 2.732772
+0.271706 0.335152 0.857227 1.253741 1.387189 1.702170 1.896767 2.191114
2.479999 2.601359
+0.237386 0.314549 0.438339 0.912164 1.577764 1.877791 2.032790 2.197037
2.412322 2.536484
+0.361168 0.574093 1.023843 1.468517 1.690562 1.917374 2.187368 2.334035
2.669095 2.806291
+0.278480 0.398742 0.573342 0.839212 1.073888 1.222093 1.691681 2.165258
2.377410 2.536882
+0.286018 0.447947 0.615060 0.849446 1.319465 1.463583 1.769948 2.001035
2.189431 2.450384
+0.219440 0.301601 0.668534 0.861094 1.210001 1.498673 1.745120 1.877765
2.314377 2.619597
+0.223591 0.352153 0.598841 1.217893 1.359082 1.591744 1.771089 2.213856
2.561538 2.735416
+0.176857 0.236601 0.395107 0.634632 1.133495 1.335116 1.770374 1.981313
2.206556 2.339716
+0.334735 0.402265 0.659168 0.781639 0.975228 1.664999 1.872069 2.047533
2.476961 2.573979
+0.215968 0.284755 0.524241 0.781460 1.334811 1.772379 1.953878 2.194209
2.578250 2.741939
+0.298193 0.489879 0.812985 1.183691 1.496418 1.679975 2.108792 2.316557
2.673779 2.851610
+0.312989 0.415446 0.618011 0.899096 1.083683 1.263384 1.887396 2.243064
2.419448 2.570481
+0.244471 0.431115 0.601512 0.813139 1.102163 1.221061 1.692440 2.033163
2.221795 2.619838
+0.150949 0.219060 0.349217 0.611327 1.077112 1.250547 1.915518 2.083980
2.449999 2.792543
+0.161611 0.218964 0.445377 0.927863 1.451151 1.768464 2.130012 2.366724
2.666003 2.814049
+0.196000 0.297256 0.497266 0.691900 1.089877 1.273685 1.513723 2.006472
2.273782 2.572221
+0.335268 0.460795 0.685187 0.867664 1.013807 1.479554 2.011994 2.168476
2.572643 2.717564
+0.257604 0.340872 0.499757 0.843052 1.396548 1.831688 2.034226 2.170332
2.422618 2.540496
+0.417663 0.631718 0.955424 1.197319 1.659797 1.879883 2.168797 2.359053
2.578087 2.698249
+0.162052 0.251583 0.439900 0.660911 0.903902 1.320296 1.624758 1.778577
2.530531 2.799705
+0.256861 0.322803 0.685370 1.086437 1.263276 1.569879 1.851654 2.014946
2.264711 2.447006
+0.125192 0.176171 0.336135 0.781600 1.200220 1.439966 1.805419 2.077525
2.462470 2.738186
+0.102286 0.191322 0.774556 1.076151 1.369456 1.627146 1.973015 2.236001
2.609367 2.812985
+0.173442 0.232622 0.491622 0.844157 1.095241 1.370797 1.696966 2.051411
2.316061 2.502053
+0.257531 0.343598 0.654071 0.838985 1.048102 1.487473 1.725385 1.897417
2.430505 2.585998
+0.197900 0.276312 0.440283 0.705103 1.267341 1.740297 1.934483 2.154007
2.400200 2.624136
+0.409590 0.596785 0.983751 1.181770 1.371153 1.502380 1.758280 2.018571
2.380053 2.592151
+0.231819 0.332890 0.483514 0.644585 0.816808 0.926308 1.403298 2.233007
2.467857 2.678461
+0.258610 0.340064 0.670485 0.908467 1.107611 1.456243 1.759580 1.932179
2.113118 2.310135
+0.184377 0.249203 0.410806 0.587907 1.302501 1.510319 1.724432 1.981890
2.282904 2.422125
+0.254110 0.313328 0.659859 1.265819 1.412949 1.665930 1.927154 2.101984
2.551446 2.673030
+0.161592 0.237480 0.376535 0.637094 0.823028 1.137613 1.696425 1.875770
2.403632 2.639617
+0.384501 0.466812 0.740791 0.938093 1.062352 1.509284 1.749143 1.917797
2.548157 2.671506
+0.333872 0.419367 0.638994 1.092624 1.520550 1.649447 1.866619 2.148941
2.346723 2.506140
+0.426216 0.686997 1.235881 1.428854 1.611591 1.792860 2.017593 2.233715
2.547773 2.696609
+0.262949 0.367509 0.530429 0.741867 0.872474 1.069602 1.745566 2.061187
2.283843 2.494178
+0.335782 0.547236 0.716211 0.919077 1.275686 1.408437 1.685118 1.967394
2.217639 2.446679
+0.227629 0.330991 0.486068 1.117571 1.304983 1.510130 1.757258 1.946972
2.625557 2.782597
+0.359850 0.436633 0.750634 1.201513 1.337571 1.594835 1.970273 2.113840
2.573808 2.729963
+0.211871 0.304028 0.512758 0.663762 1.086354 1.633335 1.818017 2.129577
2.391080 2.600766
+0.196092 0.279726 0.434488 0.624802 0.772358 1.404377 1.948777 2.160918
2.629996 2.775175
+0.176304 0.262521 0.373719 0.581101 1.520108 1.736172 1.933230 2.140172
2.358130 2.753524
+0.254932 0.381411 0.806187 1.102292 1.534523 1.750280 1.970904 2.159871
2.455922 2.658405
+0.190385 0.288656 0.449066 0.678174 0.812376 1.449326 1.728657 1.966320
2.638812 2.789546
+0.251178 0.386509 0.609363 0.797102 1.024159 1.181726 1.454661 2.012630
2.493092 2.698933
+0.166654 0.266226 0.385171 0.711990 1.397897 1.532347 1.915974 2.088003
2.565270 2.789532
+0.238453 0.306036 0.449309 0.876277 1.521437 1.933982 2.134420 2.267986
2.537601 2.658253
+0.161634 0.219919 0.353206 0.524346 0.961806 1.207713 1.687918 1.916939
2.161870 2.320657
+0.413612 0.597095 0.793763 0.986290 1.281786 1.412660 1.652465 2.016091
2.384164 2.528578
+0.228655 0.341562 0.480989 0.988605 1.371003 1.477423 1.861026 2.015852
2.339752 2.773153
+0.259092 0.597012 0.985224 1.321740 1.643354 1.957367 2.288682 2.497474
2.716492 2.844467
+0.185652 0.304664 0.446232 0.864434 1.091795 1.273770 1.942575 2.095543
2.524648 2.768245
+0.176687 0.256678 0.745652 0.934909 1.283760 1.440062 1.765242 2.122092
2.388099 2.590551
+0.189805 0.275637 0.440995 0.821356 1.256020 1.410985 1.929781 2.120144
2.396030 2.604643
+0.266823 0.337688 0.819408 1.134754 1.289204 1.777028 1.982886 2.221748
2.590286 2.698098
+0.205348 0.276512 0.527305 0.727412 1.024647 1.653979 1.904178 2.046613
2.217922 2.455661
+0.293498 0.424494 0.613795 0.956130 1.133981 1.324804 1.809031 1.953922
2.293854 2.575884
+0.183120 0.249650 0.376204 0.543914 1.350827 1.907220 2.092551 2.255705
2.514391 2.687901
+0.541205 0.789796 1.058955 1.269415 1.503899 1.702191 1.970176 2.175444
2.496810 2.652238
+0.229326 0.339475 0.451881 0.661210 0.795832 1.073796 2.027104 2.206371
2.478903 2.726784
+0.330006 0.506868 0.673076 0.887406 1.228765 1.349226 1.781290 2.086583
2.277762 2.480029
+0.138389 0.200001 0.396259 0.811975 1.090712 1.460413 1.745493 1.904269
2.348250 2.699886
+0.176584 0.242161 0.378270 1.177848 1.564718 1.678166 1.951618 2.121413
2.580109 2.737132
+0.145852 0.198423 0.335644 0.550505 1.019727 1.371188 1.797635 1.943825
2.207490 2.746470
+0.385078 0.503696 0.703239 1.069987 1.365736 1.472054 1.825827 2.159636
2.371283 2.520972
+0.284950 0.388050 0.507352 0.879125 1.523530 1.776238 1.929597 2.157558
2.447986 2.586398
+0.491116 0.756155 1.255200 1.522460 1.776579 2.028121 2.286059 2.429774
2.679106 2.776164
+0.252477 0.396081 0.713022 0.861502 1.152223 1.370802 1.614010 2.144798
2.574072 2.712530
+0.282756 0.438437 0.613566 0.847746 1.260772 1.379059 1.642202 2.137540
2.368369 2.522163
+0.203971 0.322195 0.479842 0.953133 1.211278 1.397635 1.800812 1.954516
2.403478 2.573713
+0.264533 0.358424 0.628768 1.111242 1.340246 1.506485 1.999590 2.194109
2.461411 2.667361
+0.177730 0.223680 0.394553 0.556177 0.947415 1.500640 1.733528 1.926046
2.261466 2.436054
+0.314223 0.363636 0.727886 0.851880 1.053844 1.798132 1.974354 2.182595
2.537995 2.629683
+0.201778 0.275500 0.404891 0.747466 1.500050 1.841184 1.998843 2.226807
2.481989 2.669506
+0.132164 0.314955 0.821473 1.196038 1.426590 1.699934 2.036856 2.323497
2.685471 2.828965
+0.223374 0.347335 0.507730 0.773547 0.967916 1.134129 1.991403 2.306567
2.521364 2.788746
+0.312742 0.449784 0.583287 0.934234 1.268567 1.365063 1.569295 1.687046
2.077299 2.595022
+0.124286 0.162126 0.290730 0.654031 1.231658 1.538458 1.893070 2.184784
2.562637 2.798224
+0.177049 0.251654 0.367891 0.912504 1.557576 1.693045 1.898991 2.072136
2.350163 2.646045
+0.240517 0.378333 0.547809 0.754272 0.973321 1.103670 1.574418 2.028049
2.211127 2.562709
+0.427795 0.519003 0.771284 0.937240 1.086617 1.609879 1.878750 2.052791
2.534118 2.657149
+0.224370 0.317969 0.439666 0.812931 1.398497 1.626632 1.794178 2.114000
2.309157 2.496836
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm2.txt
b/gr-vocoder/lib/codec2/codebook/lspjvm2.txt
new file mode 100644
index 0000000..2b7cabf
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm2.txt
@@ -0,0 +1,513 @@
+5 512
+0.005167 -0.037310 -0.002159 0.016849 0.130396
+0.039445 0.031680 -0.074412 -0.031499 0.060536
+0.019479 -0.030564 -0.048137 -0.056279 -0.027829
+0.020585 -0.011270 0.023913 -0.005706 0.011407
+-0.023217 0.107455 -0.037777 0.004070 -0.017279
+-0.090444 0.007641 0.099001 -0.047913 -0.017199
+0.022700 -0.063865 0.047213 0.043843 -0.036225
+0.001312 -0.123861 -0.038988 0.058666 0.074541
+0.039508 0.110300 0.013954 -0.119228 -0.035807
+-0.047392 0.027035 -0.004412 -0.032650 -0.037150
+0.002491 -0.045447 0.158260 0.022828 -0.030124
+-0.047856 0.088744 -0.009678 0.106688 0.087690
+-0.027941 0.044084 -0.028500 0.018736 -0.069969
+-0.035358 -0.051568 -0.030459 -0.017899 0.027632
+-0.018607 -0.123557 0.019228 0.057485 -0.028907
+0.019057 0.038151 -0.080220 0.034222 0.023081
+0.021312 0.041905 0.112903 0.024092 0.093974
+-0.116679 0.015344 -0.066059 -0.096437 0.004041
+-0.022464 -0.116260 0.047819 -0.003921 -0.073504
+0.001975 -0.025869 0.028200 0.122690 0.010627
+-0.035672 0.078963 -0.009686 0.000743 -0.147582
+0.016932 -0.020291 -0.096896 -0.237875 -0.029121
+0.017376 -0.040130 -0.053865 0.154060 -0.013215
+0.015215 -0.019023 -0.070604 0.032265 0.040340
+0.102365 -0.022746 0.019895 0.050570 0.008845
+-0.034134 0.044441 -0.049387 -0.140481 0.072570
+0.013023 -0.006079 0.037574 0.004937 -0.081501
+0.003696 0.049908 0.007355 0.000403 0.026006
+-0.008466 0.080680 0.061382 -0.108985 -0.088060
+-0.012275 -0.081061 0.020333 -0.079001 0.068724
+-0.014081 -0.042609 0.093365 0.044120 0.000303
+0.063391 0.096574 -0.105424 0.039041 0.010412
+-0.054031 -0.084948 0.080406 -0.035883 0.137428
+0.063037 0.050562 0.024690 -0.031394 0.130320
+-0.015501 -0.078884 -0.076886 -0.013864 -0.073587
+0.048778 0.003814 -0.031125 0.046897 0.028304
+0.048692 0.132795 0.065450 0.059487 -0.042396
+-0.176999 0.056943 -0.004135 -0.049378 -0.041083
+-0.039445 -0.016292 -0.004550 0.062010 -0.079613
+-0.054566 -0.008476 -0.016710 0.049202 0.025758
+-0.078723 0.092091 0.096536 -0.065079 0.021161
+0.076657 0.009203 -0.036866 -0.016559 0.012823
+0.008225 -0.003006 0.108033 0.043120 -0.060870
+-0.019346 0.022790 -0.001728 0.062304 -0.016965
+-0.001302 -0.014490 -0.041803 -0.034058 -0.197066
+-0.033655 -0.127217 -0.108681 -0.010571 -0.004705
+-0.015553 -0.086069 0.034109 -0.101379 0.002068
+-0.004003 -0.044637 -0.068617 0.052228 -0.047812
+-0.043307 0.035681 0.042207 -0.055946 0.055944
+-0.026792 -0.012601 -0.056710 -0.021094 0.105842
+-0.025598 -0.078858 -0.013487 0.030728 -0.031956
+0.031444 0.022763 0.025364 0.121366 0.070736
+-0.084556 0.098118 -0.024301 -0.058655 -0.043194
+-0.011752 -0.043781 0.091051 -0.071201 -0.020980
+0.082904 -0.031657 -0.088247 0.066709 -0.079182
+-0.012151 0.011796 -0.010589 0.100656 0.094539
+0.035967 0.025338 0.071826 0.009741 -0.040209
+0.006866 -0.015095 -0.168469 -0.056133 0.060145
+0.045830 -0.068969 0.034551 0.015842 -0.092809
+0.054699 0.138744 0.001726 0.006927 0.005167
+0.016978 0.046384 -0.060183 -0.040742 -0.072692
+-0.022489 -0.029728 -0.065018 -0.124741 0.044927
+-0.029057 -0.037154 0.031068 0.060086 0.009984
+0.009311 -0.006957 -0.105508 0.059637 -0.019564
+-0.068154 -0.066443 0.000799 0.028579 0.097063
+0.096936 0.030230 -0.034623 -0.088918 0.040334
+0.019439 -0.050707 -0.003294 -0.028505 -0.053599
+0.062460 -0.070688 -0.016465 -0.035680 0.017378
+0.009363 0.048761 0.043374 0.039587 -0.023232
+-0.067033 0.042663 0.054070 -0.042797 -0.089391
+-0.030497 -0.050249 0.059528 0.089089 -0.029633
+0.064125 -0.086614 -0.002005 0.080620 0.000502
+-0.003490 0.097336 0.099565 0.015648 0.006691
+0.077668 0.016572 0.035404 -0.046026 0.017237
+-0.048631 0.009314 0.141479 0.017079 0.043796
+-0.106474 0.145951 0.057740 0.011250 -0.059443
+0.027572 0.026650 0.008527 0.002949 -0.037680
+-0.077991 -0.090617 0.003420 -0.046010 0.007354
+0.019056 -0.128651 0.016464 0.004584 -0.030883
+-0.092069 0.038976 -0.081840 0.066695 -0.047340
+0.003513 0.040613 0.046815 -0.023406 0.062389
+0.021759 0.024928 -0.018922 -0.048006 0.063800
+-0.014416 -0.050333 0.042628 -0.114934 -0.101450
+0.062139 0.029295 -0.065908 0.111463 0.050781
+-0.022707 0.135414 0.003548 0.134535 -0.048259
+-0.092344 -0.027727 0.016343 -0.060786 -0.081502
+-0.005412 -0.026229 -0.143331 0.052404 -0.077298
+-0.035919 -0.041968 -0.106108 -0.004369 0.065028
+0.096370 -0.053299 0.043317 -0.049735 0.049815
+0.032324 0.051309 -0.009607 -0.205917 0.005023
+-0.054316 -0.022895 0.099327 -0.006927 -0.076574
+-0.111024 0.111026 0.038381 -0.060368 0.064238
+-0.034316 0.026846 0.025740 -0.076162 -0.163904
+0.055955 -0.056885 0.014831 -0.120715 0.090938
+0.035289 -0.036439 0.060012 0.080302 0.036215
+0.065250 0.083030 -0.058784 0.104826 -0.051805
+-0.011099 -0.006420 0.053042 0.024127 0.092534
+0.058569 -0.033442 0.025186 -0.018222 0.117744
+0.044345 -0.042456 -0.043767 -0.021378 -0.121965
+0.027371 0.052731 -0.020316 0.036912 0.115357
+0.031150 0.041547 0.059267 -0.039672 -0.086918
+-0.162369 0.024801 0.031725 0.083400 -0.034463
+0.000272 -0.008147 -0.002016 0.131953 -0.092911
+-0.091944 -0.062864 -0.005221 0.063647 -0.012658
+0.042685 0.067952 0.038644 -0.153221 0.096841
+0.108299 0.089446 -0.047164 0.004196 -0.043268
+-0.035456 0.050838 0.070444 0.084465 -0.079980
+-0.048916 0.057726 0.023894 0.027653 0.017775
+0.015461 -0.030287 -0.022245 0.052081 -0.150947
+-0.002682 -0.056774 -0.123366 -0.091754 0.006536
+0.006473 -0.143025 0.054690 -0.043189 0.032970
+0.027446 0.033127 -0.132722 -0.010417 -0.080097
+-0.018187 0.001858 0.111290 -0.090749 0.059434
+-0.068738 0.090679 -0.145070 -0.065277 0.063514
+-0.003982 -0.056382 -0.003673 0.015845 -0.073396
+0.043688 0.002836 0.069211 0.124852 -0.053313
+-0.040946 0.070440 -0.107024 -0.019199 -0.033672
+-0.001440 0.021680 0.110595 -0.053452 -0.052426
+0.035461 -0.028179 -0.049041 0.022580 -0.010989
+-0.002913 -0.051691 -0.075881 0.037241 0.076377
+0.034735 -0.031556 0.073516 -0.001427 0.016296
+-0.017537 0.003346 -0.099774 -0.067624 -0.044257
+-0.018202 0.030622 0.012773 0.046475 -0.121785
+-0.057265 0.116179 -0.079916 0.066396 0.050104
+-0.013177 0.057766 -0.047879 -0.109526 -0.146491
+0.032675 -0.049318 -0.057045 -0.080068 0.089621
+-0.046564 -0.029992 0.040828 0.029281 -0.037369
+-0.009731 -0.082145 -0.117622 0.117077 0.037369
+0.000820 -0.106634 -0.007967 0.000812 0.140637
+0.036530 0.062121 -0.065504 -0.094930 0.121336
+0.017530 -0.017330 -0.040402 -0.018255 0.010992
+0.019746 -0.027564 0.033588 0.042466 -0.003143
+0.013767 0.084179 0.033753 -0.017279 -0.009676
+-0.006452 0.032645 0.031852 -0.030975 -0.043384
+-0.005433 -0.015258 0.053273 0.054748 -0.064736
+0.008959 -0.141223 -0.032957 -0.015079 0.018198
+-0.001681 0.143079 0.076000 0.001037 -0.048744
+0.022062 0.026030 -0.008263 -0.050353 -0.023037
+-0.036477 -0.051733 0.137823 -0.034438 -0.007573
+-0.004256 0.064218 0.075183 0.095106 0.026497
+0.026360 0.009791 -0.058039 0.053315 -0.077817
+-0.033283 -0.081151 -0.055220 0.004268 0.017539
+-0.007329 -0.117200 0.093220 0.037359 0.002718
+0.010749 0.018281 -0.075800 -0.024889 0.005720
+0.022129 0.035613 0.036187 0.032246 0.105439
+-0.073766 0.016887 -0.059934 -0.049471 0.073520
+-0.024041 -0.104642 0.023557 -0.059746 -0.043871
+0.022311 -0.000250 -0.074027 0.198593 0.102732
+0.024478 0.077658 -0.060042 -0.018229 -0.149648
+-0.009871 -0.105822 0.007585 -0.161459 -0.041121
+-0.021460 0.009020 -0.065018 0.111801 -0.024953
+0.074594 -0.026041 -0.062859 0.009199 0.069609
+0.078672 -0.033414 0.054128 0.005408 -0.016273
+0.052076 0.107610 -0.067518 -0.096400 0.033703
+-0.014350 -0.024676 0.056254 -0.043770 -0.060847
+-0.004185 0.073550 -0.057830 -0.016644 0.029096
+0.005755 0.026472 0.040449 -0.091950 -0.048538
+-0.034439 -0.107938 0.090712 -0.117001 0.043170
+-0.006505 -0.035277 0.117316 0.127002 0.047906
+-0.001441 0.118379 -0.132165 0.007380 0.023823
+-0.020120 -0.083725 0.047284 0.023795 0.074123
+-0.013439 0.024994 0.060254 -0.069120 0.166373
+-0.024228 -0.063150 -0.046506 -0.077202 -0.054592
+-0.006571 0.010335 -0.006568 0.003982 0.075837
+0.008643 0.136339 -0.005502 0.033910 -0.066379
+-0.127371 -0.006954 0.039770 -0.070123 0.060925
+-0.046386 -0.026420 -0.005280 0.103509 -0.022310
+-0.003740 -0.014999 -0.037770 0.080005 0.025231
+-0.054995 0.071017 0.009442 -0.075737 0.013441
+0.051947 0.027097 -0.070351 -0.055705 -0.021115
+0.021387 0.029232 0.163331 -0.032380 0.010008
+-0.011987 -0.028631 0.002665 0.014770 -0.009558
+-0.034325 0.015830 -0.091253 -0.012677 -0.107378
+-0.034624 -0.047725 -0.102330 0.042525 -0.006869
+0.014048 -0.043127 0.052384 -0.047473 0.055102
+0.009744 -0.033646 -0.081755 -0.001464 -0.016223
+-0.036697 -0.002279 0.023279 -0.036221 0.101478
+-0.058454 0.065074 0.003524 0.005010 0.097182
+-0.038171 -0.037943 -0.009994 -0.033355 -0.044552
+0.041318 0.065041 0.000092 0.100816 0.029007
+-0.031803 0.183537 -0.009617 -0.010544 -0.028465
+0.006900 -0.014988 0.090490 -0.174817 0.027464
+0.063314 -0.049281 -0.001567 0.091421 -0.078603
+-0.004869 -0.063266 -0.001922 0.069338 0.081771
+0.058737 0.073195 0.081676 -0.047808 -0.025797
+-0.004185 0.033203 -0.125472 -0.108148 0.031258
+0.035192 0.029957 0.046675 0.047238 -0.088197
+0.033315 0.114919 -0.049180 0.025707 0.053843
+0.035182 0.140206 -0.058660 -0.025978 -0.019658
+-0.014847 -0.021051 -0.034385 -0.121789 0.173406
+-0.112251 -0.022333 0.071206 0.028998 0.046468
+0.067704 -0.026159 -0.158316 0.014936 0.040216
+-0.010137 -0.053492 0.004935 -0.011277 0.073852
+0.091261 0.114794 -0.014060 -0.051545 0.077316
+0.101258 -0.046137 0.022994 -0.066767 -0.065537
+0.049952 -0.043582 0.012823 0.009313 0.036343
+0.054885 0.037796 0.021940 0.013211 0.006019
+-0.099578 0.058596 -0.045463 -0.015632 -0.087141
+-0.019273 -0.033140 0.043796 0.119057 -0.081813
+-0.021538 -0.070453 -0.052551 0.077213 0.000094
+0.050268 0.092271 0.051688 -0.025224 0.075437
+0.027983 0.069205 0.031787 -0.099975 0.004387
+-0.002747 -0.056567 0.161394 0.000164 0.084189
+-0.124844 0.050329 0.009844 0.055877 0.055701
+0.030479 0.028843 -0.001076 -0.017173 -0.102770
+-0.038426 -0.133841 -0.035840 -0.072046 0.020206
+0.016438 -0.097885 0.041857 0.034601 0.030422
+-0.089192 -0.014112 -0.052276 0.012005 -0.029335
+-0.011331 0.101833 0.063827 0.044288 0.101597
+-0.034689 -0.027434 -0.017801 -0.079224 0.067103
+-0.027456 -0.098034 0.009448 -0.038986 -0.156729
+0.085023 0.033136 -0.021343 0.110701 -0.011901
+-0.006484 0.082023 -0.027094 0.091208 -0.013163
+-0.012223 0.005933 0.010653 -0.098119 -0.005304
+-0.021061 -0.058077 -0.073035 0.097856 -0.102847
+-0.035329 -0.092754 -0.101463 -0.048671 0.055015
+0.102145 0.062017 0.016002 0.036489 0.059000
+0.042861 0.025447 -0.019735 -0.107841 -0.033752
+-0.043982 -0.067059 0.051092 0.025235 -0.147107
+-0.016269 0.123009 0.035894 -0.020453 0.040013
+0.015557 0.015825 0.080712 -0.069630 -0.149739
+0.022006 -0.008848 0.040169 -0.095688 0.059575
+-0.030641 -0.061353 0.046302 0.104489 0.043372
+-0.001579 0.059737 -0.104073 0.042342 -0.048611
+-0.013811 -0.056255 0.107179 0.057433 0.084815
+0.030217 0.022360 -0.040342 -0.028775 0.120588
+0.041270 -0.045775 -0.030195 -0.106859 -0.104349
+0.072418 -0.003603 -0.013072 0.040728 0.086869
+0.091943 0.066517 0.024442 -0.030929 -0.032920
+-0.160336 -0.010347 -0.068458 0.017458 0.044823
+0.050694 0.067625 0.040303 0.113164 -0.038747
+-0.065558 -0.106357 -0.028352 0.121488 0.026548
+-0.007820 0.054872 0.094674 -0.099533 0.005231
+0.118132 0.042780 -0.065079 0.031440 0.043229
+-0.050024 0.015943 0.073917 0.034049 0.010548
+-0.024979 0.022639 0.027795 0.049491 0.048762
+-0.002738 -0.010783 -0.027637 -0.006986 -0.104141
+-0.066719 -0.061742 -0.067028 -0.053057 -0.003478
+-0.050948 -0.122196 0.022082 0.002595 0.015094
+0.006014 0.005784 -0.184537 -0.034872 -0.036104
+0.055412 0.006886 0.103488 -0.063001 0.096665
+-0.035533 0.009847 -0.095114 0.008588 0.023736
+-0.034278 -0.111970 -0.041172 0.039730 -0.102952
+0.063775 0.039273 0.109863 0.091800 0.030306
+-0.082206 0.089449 -0.058478 -0.029341 0.038389
+0.061057 -0.024711 0.111044 -0.035079 -0.027985
+0.014570 0.002046 -0.031545 0.058848 -0.019500
+-0.002475 -0.025589 -0.144358 0.063478 0.124927
+-0.014094 -0.010970 0.031621 -0.040043 0.004389
+0.025003 0.052397 -0.054526 -0.073469 0.026795
+-0.024697 0.024739 0.118299 0.014948 -0.132109
+0.020192 0.037815 -0.090270 0.049313 0.082764
+-0.022642 -0.006053 -0.038073 -0.057363 -0.107347
+0.033166 -0.027556 -0.019765 -0.111958 0.027773
+-0.063001 -0.052998 0.019353 -0.009646 -0.011270
+0.011872 -0.006508 -0.122226 0.059824 0.041779
+0.016445 -0.031890 -0.036310 0.013085 0.091631
+0.062866 0.054501 -0.117523 -0.010907 0.087026
+-0.014974 -0.035920 -0.048565 -0.019246 -0.043405
+-0.006959 0.006211 0.042370 0.014603 -0.006435
+0.019149 0.078038 -0.020556 0.018114 -0.036521
+-0.054036 0.007325 0.056349 -0.033497 -0.025960
+0.050184 -0.066536 0.091501 0.071356 -0.049044
+-0.032263 -0.095268 -0.008784 0.049033 0.036929
+0.020357 0.152151 0.040814 -0.063159 -0.024324
+-0.017084 0.011876 -0.015442 -0.019811 -0.000366
+-0.002700 -0.072981 0.109288 0.007473 -0.049442
+-0.054040 0.051947 0.019359 0.129160 0.021981
+0.002248 0.035262 -0.023141 0.064666 -0.078273
+-0.031663 -0.031343 -0.006058 -0.045421 0.017466
+-0.067122 -0.130784 0.067057 0.052460 -0.041165
+-0.004411 0.046453 -0.055461 0.048162 -0.009687
+0.021530 0.007211 0.104764 0.079849 0.086248
+-0.072791 0.001112 -0.027964 -0.071233 -0.013339
+0.007979 -0.118231 0.076826 -0.060762 -0.084358
+-0.011447 0.009765 0.014163 0.164784 -0.015892
+-0.020756 0.152509 -0.014014 -0.041853 -0.117008
+-0.011755 -0.005766 -0.086896 -0.139650 -0.032342
+0.025651 -0.007843 -0.039073 0.103397 -0.042591
+-0.005971 -0.001324 -0.053945 -0.000716 0.048977
+0.130185 0.028226 0.061179 0.024489 -0.021939
+-0.007019 0.054336 -0.010040 -0.095411 0.082406
+-0.032130 -0.015054 0.033059 0.002802 -0.080159
+-0.022452 0.077426 -0.015314 0.033583 0.028479
+0.023293 0.035078 0.006442 -0.110541 -0.106244
+-0.034737 -0.104140 -0.034570 -0.114316 0.079382
+0.006009 0.003901 0.080081 0.055082 0.012896
+0.064981 0.057219 -0.112986 0.003906 -0.028414
+-0.012383 -0.054541 0.077483 0.004267 0.123567
+0.007369 0.099856 0.023273 -0.028194 0.122030
+-0.036635 -0.126589 -0.034567 -0.028288 -0.065040
+0.014280 0.011435 -0.004867 0.043901 0.035395
+0.028599 0.075858 0.118460 0.070581 -0.051903
+-0.170905 0.050352 0.053514 -0.017139 0.021748
+-0.096610 0.008904 -0.001049 0.078787 -0.101201
+-0.026229 -0.019757 -0.035771 0.054142 0.068041
+-0.020328 0.099979 0.096623 -0.046957 -0.001733
+0.049586 0.052458 -0.031724 -0.028332 -0.005418
+0.046710 0.014238 0.133125 -0.005428 -0.080055
+-0.033226 0.034007 0.025272 0.033924 -0.044662
+-0.034690 -0.079173 -0.160689 -0.153893 -0.228771
+-0.002450 -0.083966 -0.168294 0.010694 -0.012167
+0.000004 -0.044377 0.023373 -0.077437 0.012178
+-0.015899 -0.010828 -0.062847 0.029927 -0.074557
+-0.053306 0.049688 0.057017 -0.022571 0.015337
+-0.046545 0.018895 -0.024848 -0.004424 0.165442
+-0.060201 -0.098629 -0.065190 0.036582 -0.038566
+0.051453 0.093478 0.039619 0.117535 0.090386
+-0.029366 0.108075 -0.016568 -0.093576 -0.048799
+-0.045599 -0.023619 0.070072 -0.109294 0.001548
+0.076285 -0.091274 -0.068829 0.000215 -0.046519
+-0.022512 -0.027067 0.014905 0.079017 0.140699
+0.061141 0.009178 0.097811 0.033468 -0.006666
+0.007163 -0.007578 -0.124238 -0.025271 0.017581
+0.042405 -0.034252 0.064890 0.002500 -0.139083
+0.009733 0.158179 0.014474 0.038913 0.056290
+-0.004998 0.075401 -0.030557 -0.038595 -0.049070
+-0.014680 -0.076306 -0.132365 -0.177693 0.091760
+-0.057238 -0.072379 0.050877 0.051489 0.028125
+0.004991 0.032621 -0.167359 0.041002 -0.007072
+-0.086405 -0.042263 -0.019757 -0.011524 0.066004
+0.085670 0.008071 -0.013614 -0.062142 0.083280
+0.000887 -0.075820 0.008295 -0.020136 -0.016886
+0.089657 -0.106260 -0.051491 -0.012687 0.054778
+0.011535 0.086613 0.053803 0.027164 -0.023825
+-0.040009 0.080987 0.026309 -0.000334 -0.085288
+-0.024208 -0.085040 0.096077 0.120527 -0.044181
+0.003034 -0.091142 0.006471 0.115971 -0.026358
+0.003489 0.083633 0.109975 -0.029425 0.061726
+0.056115 -0.006711 0.013158 -0.062917 -0.015029
+0.003354 0.031574 0.119045 0.022859 0.023777
+-0.068292 0.115604 0.031617 0.008953 0.006943
+0.014420 0.008569 -0.031547 -0.006857 -0.051690
+-0.086683 -0.108339 0.005093 -0.108646 -0.034720
+0.054273 -0.096753 0.050806 -0.021115 -0.025278
+-0.079997 0.027008 -0.034211 0.090949 0.005678
+0.019288 0.042083 0.062119 0.019301 0.040859
+-0.009113 0.022427 -0.004019 -0.060890 0.032884
+-0.012373 -0.037976 0.017625 -0.079369 -0.050788
+0.079720 -0.039347 -0.085324 0.091044 0.026653
+-0.063122 0.099371 -0.024736 0.084631 -0.100421
+-0.073313 0.014317 0.022555 -0.116051 -0.063966
+-0.009688 -0.063666 -0.131709 0.016744 -0.135028
+-0.003708 -0.043685 -0.121631 -0.036930 0.125776
+0.084333 0.010114 0.071231 -0.010395 0.059391
+0.017760 0.033034 -0.018996 -0.130540 0.025758
+-0.018261 -0.060044 0.127025 -0.032724 -0.107299
+-0.064538 0.090073 -0.010186 -0.066127 0.107025
+-0.010940 0.003083 0.019030 -0.023935 -0.140176
+0.003549 -0.042402 -0.010695 -0.185915 0.060835
+0.005405 -0.013822 0.029205 0.079338 0.068155
+0.071485 0.030282 -0.087207 0.073480 -0.027940
+0.004896 -0.033246 0.072637 0.018017 0.054712
+0.026184 -0.005287 0.034456 -0.036753 0.079232
+0.072707 0.004506 -0.039353 -0.015560 -0.071466
+0.010257 0.067446 -0.006598 0.047396 0.072218
+0.023405 0.082663 0.015319 -0.035436 -0.075461
+-0.124036 -0.032046 0.060837 0.010231 -0.053024
+0.022800 0.042891 -0.041549 0.132395 -0.095330
+-0.077091 -0.058554 -0.070632 0.047570 0.031856
+0.000127 0.114996 0.058660 -0.092472 0.064503
+0.096450 0.066200 -0.001059 0.039487 -0.032859
+-0.065721 0.001601 0.088037 0.059828 -0.047411
+-0.077714 0.010275 0.013629 0.003304 0.005407
+0.000665 0.012927 -0.077525 0.069202 -0.157417
+0.014547 -0.095965 -0.087546 -0.067375 -0.027867
+0.005458 -0.095839 0.105294 -0.044892 0.045151
+-0.001349 0.038356 -0.127152 -0.080503 -0.105423
+-0.018484 0.008439 0.104398 -0.027959 0.082086
+-0.020605 0.042785 -0.109139 -0.025958 0.079733
+0.036289 -0.083773 -0.033819 0.032566 -0.065556
+0.006659 0.002090 0.097027 0.115715 -0.013271
+-0.067514 0.128365 -0.089129 0.026160 -0.040584
+-0.002443 -0.017254 0.129204 -0.110078 -0.064943
+0.089215 -0.022299 -0.034959 0.022446 -0.019254
+-0.038900 -0.069862 -0.070540 0.069949 0.111993
+-0.006311 -0.009057 0.094278 -0.014932 0.003657
+-0.019323 0.026145 -0.062611 -0.073753 -0.007182
+0.014101 0.015776 0.052537 0.064728 -0.160187
+-0.005122 0.076356 -0.104763 0.091493 0.020225
+-0.000433 0.062698 -0.060457 -0.147540 -0.066168
+0.007195 -0.061498 -0.037801 -0.039763 0.059551
+-0.028410 -0.074510 0.057667 0.020584 -0.042510
+-0.025311 -0.037825 -0.188010 0.077423 0.030749
+-0.025465 -0.067541 0.003073 -0.049778 0.127789
+0.002786 0.120009 -0.067812 -0.026565 0.111272
+0.023219 -0.024403 -0.014507 -0.048624 0.022163
+0.014596 -0.052136 0.001580 0.064595 0.017963
+0.021330 0.098862 -0.009253 -0.041062 0.008903
+-0.013829 0.031967 0.076571 -0.005348 -0.044010
+0.031252 0.000369 0.036818 0.072854 -0.038569
+0.004161 -0.128017 -0.053152 0.050896 -0.015212
+-0.036159 0.097995 0.068397 -0.048472 -0.056131
+-0.011920 0.059188 0.010215 -0.061152 -0.011717
+-0.035949 -0.057039 0.090859 -0.029682 0.041466
+-0.025106 0.131191 0.059327 0.085383 0.021699
+0.049230 0.036630 -0.077086 0.017806 -0.088790
+0.004040 -0.069533 -0.026785 0.009666 0.014017
+-0.055897 -0.096299 0.120693 0.029995 0.032602
+-0.001365 0.034015 -0.053512 0.001573 -0.019170
+0.003956 0.006452 0.067313 0.028301 0.160615
+-0.053111 0.013990 -0.027060 -0.013638 0.039376
+-0.054462 -0.096553 0.079994 -0.043791 -0.025051
+-0.003222 0.019418 -0.049525 0.151136 0.034123
+0.055117 0.058918 -0.017393 0.026169 -0.126380
+-0.019008 -0.028939 -0.014027 -0.173373 -0.032841
+-0.003370 0.039680 -0.118311 0.114094 -0.041869
+0.041121 -0.038391 -0.096074 -0.032479 0.060222
+0.063968 -0.024528 0.018158 -0.009892 -0.043882
+-0.005004 0.129800 -0.025438 -0.121186 0.049860
+0.010448 -0.040388 0.061853 -0.017304 -0.035088
+-0.008678 0.061476 -0.039493 -0.005055 0.079169
+0.046134 0.009770 0.068294 -0.078965 -0.043792
+-0.030529 -0.053845 0.053853 -0.140682 0.111461
+0.003549 -0.014939 0.148955 0.072861 0.004332
+0.015386 0.062006 -0.122325 -0.032529 0.010241
+-0.047982 -0.126440 0.055840 0.067128 0.101189
+-0.002630 0.031969 0.046076 -0.080194 0.104740
+-0.033486 -0.077818 -0.058697 -0.095258 -0.111074
+0.037236 0.011711 0.001113 -0.005664 0.048588
+0.041131 0.098257 0.033126 0.029317 -0.095311
+-0.071555 -0.039999 0.026678 -0.072182 0.035031
+-0.007997 -0.048174 -0.006796 0.075959 -0.052060
+-0.007645 0.037076 -0.035574 0.085576 0.034126
+-0.050676 0.051430 0.031999 -0.134308 -0.001489
+0.084564 -0.018394 -0.097410 -0.042931 -0.025608
+-0.025489 0.041919 0.142482 0.004617 -0.041085
+-0.028816 -0.015527 -0.031005 0.028405 -0.022240
+-0.067737 -0.025241 -0.052578 0.012322 -0.120556
+0.016278 -0.081744 -0.099160 0.025144 0.025441
+0.003176 -0.073871 0.031718 -0.028622 0.029031
+0.017910 -0.030693 -0.104215 -0.015422 -0.065738
+-0.048346 -0.012847 0.046849 -0.008621 0.058771
+-0.054495 0.031597 -0.038844 0.043138 0.092588
+-0.071371 -0.059093 -0.001197 0.001766 -0.074762
+0.029470 0.089616 0.005009 0.052977 0.015899
+-0.045424 0.158466 -0.038717 -0.032506 0.028687
+0.011435 -0.006772 0.047605 -0.144659 -0.031229
+0.073577 0.011530 -0.008172 0.058883 -0.088412
+0.033615 -0.034120 -0.030701 0.101215 0.096645
+0.027368 0.041249 0.081502 -0.025440 0.007592
+0.059893 0.012106 -0.112009 -0.114692 0.016397
+0.087068 0.016199 0.051263 0.011915 -0.085364
+0.026046 0.145258 -0.047521 0.077134 -0.000345
+0.034532 0.099801 -0.087591 -0.059719 -0.058671
+0.022737 -0.001887 -0.107049 -0.116757 0.134115
+-0.055403 0.005157 0.067618 0.081074 0.071787
+0.063802 -0.003430 -0.106491 0.017543 0.002214
+-0.013785 -0.032962 0.010084 0.024325 0.045963
+0.059883 0.072282 -0.008608 -0.015127 0.048225
+0.041752 -0.068845 0.012227 -0.090748 -0.035309
+0.045353 -0.078624 -0.019489 0.035531 0.058571
+0.045414 0.039032 -0.011106 0.048787 -0.025336
+-0.084893 0.031896 0.010850 0.012526 -0.053205
+0.016952 -0.044041 0.068766 0.097328 -0.122229
+0.027016 -0.051759 -0.057246 0.074566 0.006201
+0.069904 0.100068 0.076124 0.004278 0.029466
+0.045229 0.055683 0.018790 -0.067806 0.039373
+0.029179 -0.036787 0.129921 -0.028993 0.037711
+-0.105011 0.138747 -0.004370 0.052080 0.050835
+0.025511 -0.002962 0.007852 -0.055234 -0.075055
+0.000460 -0.089231 -0.030467 -0.080347 0.007488
+0.067460 -0.076368 0.084991 0.039544 0.033391
+-0.044318 0.006390 -0.079387 -0.002909 -0.029708
+-0.047882 0.063040 0.065719 0.021811 0.070945
+-0.007571 -0.001302 -0.064119 -0.068005 0.051040
+-0.017747 -0.063938 0.018673 -0.038391 -0.099966
+0.057475 -0.007669 0.009384 0.109283 0.012248
+-0.048858 0.092498 0.011967 0.061525 -0.028819
+-0.015131 -0.024160 -0.033220 -0.101648 -0.017980
+-0.003342 -0.049829 -0.125096 0.128241 -0.047377
+-0.028943 -0.109072 -0.066133 -0.015454 0.098334
+0.053371 0.011324 0.042781 0.044313 0.062510
+0.098408 0.065410 -0.040693 -0.116351 -0.032327
+-0.013634 -0.058591 0.081507 0.042019 -0.099770
+-0.018275 0.084624 -0.007512 -0.041113 0.054203
+0.017879 -0.029747 0.059865 -0.048281 -0.111513
+-0.022478 0.002059 0.022383 -0.125360 0.058216
+0.002386 -0.081600 0.049288 0.157428 0.057724
+0.005046 0.102125 -0.083473 0.044059 -0.094864
+0.039120 -0.063306 0.057341 0.060519 0.107383
+0.007076 -0.009373 -0.012555 -0.066630 0.117121
+0.025254 -0.008796 -0.062102 -0.083164 -0.079007
+0.084839 0.042308 -0.055353 0.036386 0.132641
+0.084464 0.056288 -0.011636 -0.059554 -0.087748
+-0.147377 -0.052414 -0.010203 -0.009159 -0.018829
+0.009621 0.061633 0.015716 0.086332 -0.061465
+-0.011833 -0.062998 -0.021168 0.125194 0.045025
+0.052316 0.025720 0.095155 -0.093252 0.028720
+0.056113 0.063321 -0.045315 0.025199 0.023591
+-0.070481 0.072350 0.092458 0.047973 -0.025439
+-0.001281 0.021028 0.034576 0.084779 0.006867
+-0.010323 -0.046330 -0.009172 0.030485 -0.117679
+-0.021782 -0.034737 -0.086292 -0.045885 0.009655
+-0.037167 -0.123331 0.017291 -0.028319 0.071447
+-0.057180 -0.032912 -0.139418 -0.025966 -0.039305
+0.009411 -0.054017 0.076307 -0.060252 0.110087
+-0.061366 0.038897 -0.098107 0.046119 0.043021
+-0.029130 -0.096885 0.007623 0.090513 -0.097416
+0.053264 0.058296 0.054372 0.060769 0.015586
+-0.067956 0.059996 -0.037850 0.005986 0.000778
+0.045873 -0.065546 0.077900 -0.085638 0.000698
+0.027694 -0.021241 -0.002777 0.034509 -0.048173
+0.009988 0.001008 -0.077434 0.026002 0.139490
+0.008910 0.007791 0.059292 -0.057047 0.014127
+-0.022959 0.085710 -0.068087 -0.081561 0.005935
+0.007577 0.061544 0.076542 0.001660 -0.113279
+0.024973 0.086750 -0.061674 0.095059 0.089352
+-0.024436 0.024181 -0.016117 -0.073634 -0.067986
+0.074701 -0.046868 -0.054634 -0.092485 0.006662
+-0.033256 -0.053774 0.049001 -0.002339 0.013545
+-0.006432 -0.012089 -0.086842 0.104105 0.061991
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm3.txt
b/gr-vocoder/lib/codec2/codebook/lspjvm3.txt
new file mode 100644
index 0000000..72767df
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm3.txt
@@ -0,0 +1,513 @@
+5 512
+0.007066 0.075781 -0.070082 -0.092014 -0.066477
+0.090510 0.106622 0.025911 -0.016760 0.003724
+-0.024628 0.058332 0.012876 0.059557 -0.002092
+-0.065092 -0.096975 -0.041837 -0.002432 0.058918
+0.014358 0.080049 -0.008803 -0.002091 -0.097584
+0.085323 -0.026053 -0.086585 -0.009541 0.130555
+0.045391 0.037557 0.074726 -0.050453 0.033517
+-0.035576 -0.084211 -0.086430 0.008910 -0.072674
+-0.098699 -0.024540 -0.048972 -0.066975 -0.048791
+0.032184 0.070992 -0.014416 0.141892 -0.044249
+-0.108921 -0.020450 0.115988 0.011287 -0.026273
+0.024341 0.138519 -0.036467 0.020684 0.074258
+-0.053563 0.077463 0.072166 0.032112 -0.079303
+-0.025039 0.079675 0.094211 -0.115754 0.038892
+0.050897 -0.024639 0.057826 -0.110429 0.071184
+0.015309 -0.034027 -0.055726 0.043179 -0.063089
+0.043359 -0.011698 0.006637 0.002751 0.030110
+-0.001261 0.111470 0.043277 -0.004205 -0.021599
+-0.005698 0.058842 0.168422 0.059313 -0.007971
+-0.087599 0.073891 -0.083238 0.099279 -0.017364
+-0.018429 0.014040 -0.014864 -0.111512 0.089450
+-0.028498 -0.087983 -0.077320 -0.062602 0.000328
+-0.027152 -0.093796 0.111381 -0.018603 0.092394
+-0.007256 0.025391 0.011454 0.012802 -0.041680
+0.008078 0.020905 -0.105401 -0.083265 0.027756
+-0.049630 -0.044085 -0.051424 0.104125 -0.000779
+-0.063079 -0.130699 0.070500 0.033468 -0.019802
+-0.061011 0.094839 -0.040122 0.118409 0.056950
+0.086391 -0.006615 0.045337 -0.044190 -0.106474
+-0.081912 0.067557 -0.031649 -0.014437 0.057585
+-0.121755 -0.049113 0.057109 -0.049872 0.044104
+0.064705 -0.091589 0.037286 -0.048606 -0.045398
+0.003456 0.057230 0.006262 -0.055206 -0.063871
+-0.005249 0.081783 0.134969 -0.002331 0.052643
+-0.093346 0.072093 0.116025 -0.031453 -0.006012
+-0.038574 -0.030841 0.010288 0.024420 0.051657
+-0.086584 0.046381 0.005410 0.052622 -0.072741
+0.079023 0.078099 -0.093912 0.005477 -0.006721
+0.100232 -0.017587 0.044819 0.036655 0.021580
+-0.006829 -0.050076 -0.003020 0.088246 0.013560
+-0.015690 0.012477 -0.052595 -0.048861 -0.033688
+0.055615 0.092298 -0.066194 0.016416 -0.066059
+0.046976 0.003023 0.104646 0.109136 0.018293
+-0.016507 -0.006859 0.004326 0.070843 0.140750
+0.025774 0.034730 -0.079590 0.050054 -0.107950
+0.002378 0.097498 0.027111 -0.122953 -0.002423
+-0.020539 -0.063263 -0.095493 -0.157361 -0.039183
+0.025721 0.026897 -0.001200 0.033997 -0.001749
+0.061593 -0.013053 -0.106317 -0.068190 0.046352
+-0.056060 0.157084 -0.049365 0.053959 -0.051065
+-0.047672 0.081570 0.064342 -0.030705 -0.070806
+-0.076503 -0.059471 0.012419 0.073968 -0.026179
+-0.038473 0.059013 -0.035783 -0.030057 -0.036346
+-0.052692 -0.015346 -0.022687 -0.035279 0.013314
+0.068397 -0.046609 -0.009593 -0.040796 0.157438
+-0.075360 -0.110464 0.031839 -0.029035 -0.015222
+0.041013 -0.099212 -0.108920 -0.008627 0.012095
+0.020855 0.009935 -0.086917 0.058827 -0.006536
+0.022104 -0.005013 0.003496 0.046663 -0.051061
+-0.036803 -0.067317 -0.007075 0.180870 -0.027434
+-0.025056 -0.039341 -0.073918 -0.003180 -0.110930
+-0.042711 0.005519 -0.035005 -0.088419 0.170942
+0.001503 -0.121485 0.066383 -0.067346 0.005643
+0.080088 -0.042562 -0.006668 -0.036538 0.020683
+0.042848 0.027852 -0.029088 -0.156468 0.006503
+0.037716 0.032082 0.038416 0.021835 -0.106963
+-0.043017 0.018166 0.070409 -0.005426 -0.035585
+-0.111071 -0.039986 0.050430 0.035157 0.066902
+-0.040684 0.060527 0.036225 0.002527 -0.015087
+0.059243 0.021268 -0.010682 -0.018434 0.059128
+0.111314 -0.054070 0.105744 -0.051476 -0.012970
+-0.000358 -0.099249 -0.077385 0.069924 -0.039101
+-0.072139 -0.049069 -0.088018 0.006144 0.000712
+0.081030 0.021987 -0.046031 0.058087 -0.001320
+-0.046851 -0.011062 0.108321 -0.001146 -0.071193
+0.044973 -0.002915 -0.003323 0.041735 0.094566
+0.053530 0.035927 0.100282 0.059082 -0.054059
+-0.012158 -0.035417 0.020412 -0.073193 0.059296
+-0.040489 -0.095250 -0.003821 -0.084904 0.053925
+0.109183 -0.005862 -0.036538 0.080962 -0.040647
+0.020070 0.057778 -0.020197 -0.079626 -0.003186
+-0.050855 0.128185 0.034731 0.057460 -0.035236
+-0.057096 -0.001238 0.122018 -0.071204 -0.047253
+-0.051767 0.048301 -0.052678 0.025990 -0.017481
+-0.029379 0.030738 0.047207 -0.047864 -0.033561
+0.029884 -0.091175 -0.085446 -0.026140 0.092628
+0.067706 -0.085617 0.081433 0.047305 0.031945
+-0.048728 -0.040387 0.046206 0.010578 -0.037639
+0.011328 -0.042458 -0.149597 0.033882 -0.061869
+0.008800 0.057754 -0.095876 0.038230 0.096876
+-0.033487 -0.141669 -0.014172 0.028439 -0.092764
+-0.053714 0.086926 0.034786 0.136053 -0.005569
+0.028753 0.009630 0.044114 -0.050365 -0.066224
+0.006017 0.014348 0.024471 0.000489 0.067234
+-0.021678 -0.118760 0.036349 -0.040295 0.076358
+-0.008444 -0.086082 -0.044018 -0.025804 0.028971
+-0.009233 0.053026 -0.035341 -0.182193 -0.102515
+0.089210 0.066812 0.032417 0.046882 -0.034815
+-0.052293 0.022814 0.129622 0.128232 -0.012105
+-0.087084 0.004762 0.086538 0.046566 0.098359
+-0.018713 0.039204 -0.021707 -0.060110 -0.117527
+-0.005459 0.060994 -0.057718 -0.021783 0.035154
+0.100557 -0.015470 -0.025818 0.008450 0.051535
+-0.001388 -0.114610 -0.057903 0.041862 0.061778
+0.045701 -0.078563 -0.070166 -0.048450 -0.088530
+0.021375 -0.004598 -0.090710 -0.009399 -0.073952
+-0.035575 -0.050280 0.114780 0.137866 0.065234
+0.003594 -0.066802 -0.144989 0.166201 0.039564
+-0.022457 -0.030090 0.016187 0.115443 -0.097331
+-0.019139 0.099440 0.002198 -0.030953 0.021099
+-0.045399 -0.046871 0.022533 -0.064657 0.005776
+0.049063 -0.028478 0.019268 0.054265 0.028042
+0.045559 -0.005541 -0.014410 -0.024165 -0.054976
+-0.073258 0.084205 0.036077 -0.068683 0.004708
+-0.085228 0.001234 0.046261 -0.050496 -0.028227
+-0.086828 -0.001218 0.021865 0.003791 -0.000568
+-0.088733 -0.040041 -0.035891 -0.054915 0.073463
+-0.132031 -0.012844 -0.068544 0.013052 0.087335
+0.038603 -0.115382 -0.010433 -0.007113 0.095126
+-0.047378 -0.081353 0.018021 -0.021156 -0.120774
+0.040038 0.007633 -0.088728 -0.009928 0.020142
+0.052024 -0.021063 -0.118121 0.102739 -0.055837
+0.005253 -0.061924 0.063680 -0.014512 -0.020259
+0.029493 -0.013435 -0.020638 0.089342 0.001092
+-0.046491 -0.145634 -0.083159 -0.158142 -0.279281
+0.003611 0.055863 -0.064655 -0.088773 0.089283
+-0.029619 -0.089949 0.017197 -0.066633 -0.052347
+0.090828 -0.087551 0.000338 0.085238 -0.005313
+0.096211 0.071381 -0.076546 -0.077927 -0.040864
+0.062936 0.041559 0.016235 -0.017513 0.014773
+-0.025734 0.028586 0.070292 0.055794 -0.026131
+-0.076954 -0.082228 0.043947 -0.035921 0.152668
+-0.049510 0.023159 0.008506 -0.044773 -0.160358
+0.024984 -0.025587 -0.071627 -0.038376 0.088478
+0.120568 0.046723 0.086731 0.000695 -0.015751
+-0.027837 -0.160937 -0.095031 0.036271 -0.009061
+-0.015078 -0.036281 -0.103665 -0.058258 -0.049573
+0.022021 0.108296 -0.002586 0.065655 -0.018584
+-0.046441 -0.031018 0.067350 0.014328 0.008860
+-0.000245 0.063400 -0.001810 0.043515 0.090344
+-0.063845 0.020485 0.079401 0.070558 -0.116428
+0.032628 0.068949 0.052238 -0.044530 0.096813
+0.029911 -0.008814 0.044352 -0.168172 0.009604
+0.055828 -0.100739 -0.026013 0.021193 -0.051425
+0.035891 -0.004085 0.030216 -0.060801 0.037202
+0.007262 0.120686 0.026846 0.058464 -0.100792
+-0.009176 0.027589 0.123957 -0.011283 -0.025744
+-0.105081 0.118244 -0.042122 -0.025404 0.000873
+-0.012703 0.084159 -0.067539 -0.140536 0.041637
+-0.014485 -0.043382 -0.048004 -0.075416 0.054401
+-0.018651 -0.032908 0.164231 -0.053236 0.033946
+-0.021681 -0.012655 -0.037049 -0.001613 -0.053393
+-0.014635 0.017954 -0.116115 -0.027232 0.034005
+-0.035376 0.026492 -0.037250 0.070733 0.074835
+-0.021378 -0.142980 0.123195 0.003699 0.025398
+0.015629 0.077370 0.032623 0.121580 0.097100
+0.000946 -0.056355 0.042065 0.008184 -0.081824
+-0.101937 0.065473 0.003360 0.069241 0.073002
+-0.053844 -0.044301 0.080351 -0.091833 0.044288
+0.007447 -0.120723 -0.013806 -0.023636 -0.064616
+0.030556 0.072630 0.074428 -0.087759 -0.026440
+0.064840 0.049162 0.091053 0.023891 0.033811
+-0.027746 0.116392 0.106126 -0.056644 -0.014781
+0.036137 -0.002632 0.055512 0.070077 0.067819
+-0.030625 0.053772 -0.078457 -0.021351 -0.113011
+0.052797 0.044875 -0.077269 -0.009867 0.101493
+0.073477 -0.024103 0.049145 -0.004706 -0.025211
+-0.053731 -0.049009 -0.035786 0.054430 0.046515
+0.025154 -0.043569 -0.034789 -0.058610 0.006931
+0.012049 0.046809 -0.129441 0.025541 -0.030933
+0.000297 -0.054058 0.179837 0.081515 0.004932
+-0.028445 -0.073753 0.010629 0.080042 0.098710
+-0.014017 0.057597 0.001010 0.071658 -0.067570
+0.074384 0.110366 -0.018121 -0.108754 0.037793
+0.028041 -0.047508 -0.031359 -0.098913 -0.036486
+-0.017311 -0.001279 -0.013694 0.051968 0.036512
+0.088201 0.031155 -0.043442 -0.065045 0.023486
+0.027000 0.104768 -0.015176 -0.038754 -0.004178
+0.003732 0.062166 0.085438 -0.077368 -0.101645
+-0.118347 0.007589 -0.056489 0.082268 0.020253
+-0.035623 0.034235 -0.099354 -0.061237 -0.024285
+0.005441 -0.039694 -0.025957 -0.004411 0.049903
+0.003040 0.036243 0.023552 -0.007334 0.128963
+-0.077727 -0.059175 -0.019437 -0.024872 0.004339
+0.084006 -0.076605 -0.102261 0.036714 -0.035205
+-0.007642 -0.005125 -0.030525 0.096390 -0.053138
+-0.002192 -0.024851 0.050645 0.041490 -0.043183
+0.046796 -0.050894 0.055023 0.133834 -0.024013
+0.000872 -0.057072 -0.000630 0.042070 -0.129339
+-0.064283 0.037836 -0.066393 0.004438 0.125379
+-0.062213 -0.067468 0.090177 -0.046094 -0.025725
+0.079101 -0.074909 -0.043730 -0.073483 0.069672
+-0.020413 -0.000079 -0.049725 -0.120751 -0.046980
+0.039894 0.072305 0.009798 0.005613 -0.045217
+0.006862 0.036285 0.074819 -0.006747 0.015144
+-0.071562 0.012324 -0.001082 0.014835 0.079960
+-0.027804 0.103358 -0.017203 0.014914 -0.056687
+0.030827 0.028076 0.003395 -0.073255 0.110310
+0.056498 -0.044893 0.110122 -0.109058 -0.052302
+-0.001604 -0.089977 -0.060548 0.107808 0.025463
+-0.070203 -0.000513 -0.123913 0.046247 -0.085392
+0.096343 0.095890 -0.064950 0.070363 0.034272
+0.037773 -0.076950 0.124858 -0.009008 -0.010115
+0.083868 0.051242 0.039149 0.015185 0.083375
+0.029773 -0.045961 0.100395 0.003743 -0.138294
+-0.041755 0.010806 0.057797 -0.147374 0.095858
+-0.009929 -0.103347 -0.032310 -0.110560 0.121377
+0.145244 0.017079 -0.080587 0.020516 -0.044939
+-0.010477 0.038347 -0.003466 -0.001618 0.019600
+-0.021762 0.125482 0.011074 0.065815 0.040298
+0.009202 -0.051686 0.129684 -0.131135 0.044536
+0.009313 0.102518 -0.075351 0.054338 0.020273
+-0.045753 0.031345 0.000407 -0.097294 -0.000416
+-0.007466 -0.044972 -0.078744 0.042414 0.066624
+0.030318 -0.067852 0.061416 -0.028992 0.056606
+0.004038 -0.036253 -0.014279 0.023123 -0.007832
+-0.000137 -0.027684 -0.127648 -0.007713 -0.008746
+-0.026500 0.049032 -0.183319 0.059107 0.066500
+0.016902 -0.093331 0.090129 0.016648 -0.083492
+-0.023669 -0.010473 0.027614 0.145068 0.000681
+0.044133 -0.035809 0.005668 -0.090461 -0.090732
+-0.033927 0.042997 0.021700 -0.046955 0.044487
+-0.026444 -0.061011 0.010110 -0.023804 0.030427
+-0.015195 -0.155603 -0.016584 0.021461 -0.003528
+-0.059784 0.032214 0.000847 -0.098859 -0.078980
+0.043188 0.066433 0.062309 0.144507 0.006865
+-0.068953 0.046698 0.099369 0.043354 -0.014309
+-0.033202 -0.002950 0.040734 0.083454 0.039319
+0.051358 0.006074 -0.073465 -0.090554 -0.120787
+-0.040676 0.092412 -0.085151 -0.021699 0.005813
+0.103135 0.024964 0.025832 -0.075982 0.035699
+-0.027310 -0.153007 0.036420 0.057600 0.081630
+0.001605 -0.054191 -0.033043 -0.014390 -0.071383
+0.036180 0.035860 -0.046980 0.038541 -0.044757
+-0.078032 -0.029878 0.078183 0.082251 0.010549
+0.053317 -0.038231 -0.065610 0.055798 0.037504
+0.076317 -0.027605 0.010349 0.095361 -0.088636
+0.049089 0.113316 0.051084 0.038589 0.034330
+-0.055948 -0.037217 -0.015418 -0.139976 0.036306
+0.039306 -0.009889 -0.044910 0.016559 -0.000050
+0.106073 0.015280 -0.002563 -0.109085 -0.048475
+-0.035319 0.163860 0.032981 -0.044932 0.003227
+-0.123233 -0.010638 0.055479 -0.003666 -0.072249
+-0.111158 0.065365 0.010691 0.039119 -0.001837
+-0.118729 0.061470 -0.002077 -0.033335 -0.060165
+-0.026081 -0.001806 -0.079616 -0.000075 0.080598
+0.032908 -0.035140 -0.003136 -0.029024 0.094622
+-0.075773 -0.022898 -0.014817 0.058393 -0.111505
+0.036794 -0.015760 -0.112602 0.030323 0.085897
+-0.020834 0.056079 -0.103762 0.117671 -0.041205
+0.041684 -0.084336 0.034186 0.011973 -0.006313
+0.040836 -0.035709 0.034170 0.122672 0.090973
+-0.053182 -0.059371 0.091017 -0.090998 -0.116986
+0.001405 0.138364 0.017107 -0.064076 0.103486
+-0.031142 -0.030068 0.046547 -0.133471 -0.042055
+0.140418 -0.125084 0.035218 -0.001162 -0.021130
+-0.012034 0.097413 -0.079006 -0.039030 -0.054011
+0.143887 0.078835 -0.000601 -0.021173 -0.039895
+-0.025050 0.075865 0.039221 0.032458 0.038206
+-0.038873 -0.085003 -0.032736 -0.026956 0.113525
+-0.023933 0.120794 -0.003862 -0.026459 -0.138724
+0.089559 0.029002 -0.052098 -0.085692 0.115174
+0.083497 0.024179 0.119021 -0.067541 0.019047
+-0.027720 -0.086083 -0.055329 0.020087 -0.027086
+-0.047858 -0.051975 -0.035205 -0.059342 -0.068582
+0.058936 0.044141 -0.080315 0.119744 -0.046518
+-0.064588 -0.027212 0.147823 0.032404 0.016690
+0.024302 0.085560 -0.001525 0.016469 0.038891
+-0.020146 0.019943 0.045067 0.038070 -0.086274
+-0.025769 0.044192 0.102141 -0.064765 0.055849
+0.048803 -0.030066 -0.009220 -0.116655 0.068295
+0.047580 -0.076138 -0.070307 0.047582 -0.111342
+0.004656 -0.004452 0.029703 -0.004259 0.011130
+0.014446 0.166086 0.059565 0.000985 -0.052607
+0.013251 0.094476 0.106216 0.016715 -0.025581
+-0.101244 0.072897 -0.114526 0.024681 0.010784
+-0.051759 0.032389 -0.050202 -0.083316 0.052334
+-0.035100 -0.116721 -0.110336 -0.053391 0.065541
+-0.029790 -0.020457 0.135285 -0.004142 0.111508
+-0.030936 0.018549 -0.016034 0.018572 -0.084336
+-0.048615 -0.018739 -0.096815 -0.090162 0.019410
+-0.040821 -0.009925 -0.097427 0.091891 0.031793
+-0.024598 -0.132848 0.078353 0.089339 -0.068562
+-0.020779 0.040974 -0.055675 0.169131 0.029649
+0.078165 -0.050679 -0.005881 -0.004983 -0.104324
+-0.069096 0.127960 0.011392 -0.000769 0.062168
+-0.079842 0.001606 0.089284 -0.035465 0.031075
+0.029519 -0.102956 -0.010902 -0.064030 -0.019669
+0.057492 0.075802 -0.008904 -0.060743 -0.053144
+0.005126 0.062980 0.085674 0.019895 0.104448
+-0.086473 0.056906 0.056795 -0.012940 0.036606
+-0.008604 -0.040450 0.042062 0.041810 0.027680
+-0.092256 0.091237 -0.039500 0.024761 -0.088978
+0.068585 0.088295 -0.048033 -0.017808 0.045370
+0.124600 -0.035320 0.056751 0.092751 0.054025
+-0.015725 -0.061938 0.036806 0.078768 -0.016065
+0.002444 -0.023887 -0.072177 -0.029790 -0.005860
+0.015478 0.129142 -0.091024 0.071482 -0.065445
+0.005867 -0.006051 0.098646 0.054089 0.018713
+0.033837 -0.008355 -0.051959 0.057440 0.160305
+-0.001863 0.016738 -0.033705 0.062233 -0.140759
+0.027342 0.060074 0.030362 -0.117875 0.061020
+-0.028026 -0.088238 -0.003782 -0.146288 -0.080395
+0.050048 0.036136 0.019500 0.066902 0.020355
+0.024817 -0.056254 -0.140918 -0.085803 0.020540
+-0.003730 0.161411 -0.049408 0.000219 -0.002348
+-0.055021 0.067820 0.126483 -0.031063 -0.119299
+-0.102834 0.001133 0.010172 0.107707 -0.029106
+-0.059813 0.036698 -0.021720 -0.043189 -0.002270
+-0.031694 0.009605 -0.022459 -0.036417 0.053675
+0.061561 -0.012723 0.050040 -0.029450 0.131044
+-0.124516 -0.107579 -0.012171 0.011761 0.002599
+0.016327 -0.060854 -0.080910 0.030875 -0.002997
+-0.020970 -0.011880 -0.086096 0.037912 0.012421
+0.055253 -0.007250 0.041740 0.055596 -0.024420
+-0.017564 -0.079202 0.008897 0.180091 0.054490
+0.001772 -0.022151 -0.082048 -0.010559 -0.163377
+-0.020660 -0.017827 -0.030800 -0.045856 0.122405
+-0.052946 -0.130490 0.097383 -0.116737 0.039855
+0.056504 -0.059549 -0.059931 -0.018658 0.034898
+0.054889 0.005373 -0.066796 -0.127360 0.047960
+0.071746 0.027410 -0.006212 0.024132 -0.094062
+0.005369 -0.008926 0.073085 -0.014265 -0.029204
+-0.100025 -0.072076 0.014651 0.069368 0.048275
+-0.066823 0.086074 0.014921 -0.015395 -0.045138
+0.026224 0.000902 -0.038208 -0.035221 0.057397
+0.097606 -0.073195 0.051626 -0.033488 0.027813
+0.002070 -0.097510 -0.057877 0.126680 -0.082194
+-0.072597 0.006014 -0.093185 -0.016853 -0.022790
+0.138461 0.005394 -0.056485 0.102778 0.028918
+-0.045604 -0.060041 0.121251 0.029260 -0.101404
+0.061194 0.033039 -0.016798 0.064263 0.065144
+0.010925 0.023151 0.107623 0.027977 -0.090356
+-0.024863 -0.006440 0.047870 -0.047486 0.088211
+-0.012139 -0.116121 -0.000525 -0.140961 0.016604
+0.063490 -0.022732 -0.046944 0.066970 -0.068838
+0.016143 0.026202 -0.043344 -0.064881 0.024877
+-0.072845 0.120531 0.077901 0.047272 0.011713
+-0.044646 0.040932 0.076164 -0.101233 -0.029615
+-0.065118 0.050966 -0.023273 0.053517 0.023710
+-0.007489 0.035822 0.023439 -0.055528 -0.004033
+-0.007662 -0.096546 -0.081662 0.037141 0.137562
+0.075526 -0.097496 0.123990 0.013996 0.087005
+-0.019788 -0.082043 0.020524 0.007027 -0.021537
+-0.036264 -0.090952 -0.177722 -0.009306 -0.031473
+-0.009287 0.047557 -0.090241 0.089347 0.056375
+-0.005506 -0.112128 0.004356 0.064421 -0.038478
+-0.035674 0.040616 0.007731 0.160236 -0.054199
+-0.007537 0.012434 0.022001 -0.021567 -0.075163
+-0.026053 0.015909 0.041015 0.021832 0.034152
+-0.048539 -0.086655 0.047465 0.000682 0.042640
+0.023697 -0.095971 -0.022874 -0.000369 0.003413
+0.046005 0.064807 0.010131 -0.129517 -0.092254
+0.116469 0.053796 0.038110 0.094470 0.018435
+-0.034803 0.073591 0.108348 0.104096 0.049884
+-0.021274 0.022097 0.065347 0.065555 0.089319
+0.000474 -0.004186 -0.040493 -0.065543 -0.083167
+-0.017425 0.049177 -0.044248 0.008399 0.068180
+0.154778 0.027549 -0.008012 0.014950 0.043254
+0.039599 -0.136415 -0.018716 0.061900 0.031263
+0.058118 -0.037200 -0.114692 -0.080876 -0.053238
+0.077436 0.015015 -0.092517 0.005804 -0.065541
+-0.005653 -0.073184 0.095594 0.082470 0.060989
+-0.000262 -0.035766 -0.083441 0.122634 0.088429
+-0.014397 -0.055434 -0.005659 0.069697 -0.064892
+0.008824 0.082498 0.051866 -0.036070 0.033403
+-0.082855 -0.087376 0.002714 -0.097121 -0.019170
+0.027179 -0.069870 -0.009316 0.047450 0.040657
+0.060527 0.004620 -0.040264 -0.051228 -0.029023
+-0.071384 0.101421 0.009538 -0.099185 0.060100
+-0.048395 -0.024677 0.025125 -0.056043 -0.058045
+-0.054059 0.008107 0.021078 0.045290 -0.018459
+-0.113359 0.014009 -0.006826 -0.052747 0.046922
+-0.075976 0.008538 -0.084411 -0.004369 0.045801
+0.075392 -0.067340 0.014454 0.032407 0.092478
+-0.061859 -0.083458 0.051442 0.031695 -0.080233
+0.054028 0.027000 -0.073549 0.032300 0.036501
+-0.011384 -0.020780 -0.124142 0.093905 -0.028332
+0.039139 -0.030944 0.079952 -0.001717 0.013976
+0.038005 -0.001751 -0.044097 0.129827 0.014385
+-0.001682 -0.063458 -0.002511 -0.078150 -0.141236
+0.021955 0.104851 -0.093246 -0.060019 0.069998
+0.004399 -0.096408 0.059327 -0.062268 -0.074327
+0.108063 -0.090534 -0.045654 0.048119 0.049187
+0.042105 0.043964 -0.091516 -0.047999 -0.028881
+0.070471 0.055401 -0.025605 0.011176 0.008475
+0.022254 0.038266 0.048106 0.047176 -0.017967
+-0.010978 -0.088762 0.034806 0.019311 0.126815
+-0.010571 0.053073 0.032162 -0.000780 -0.152200
+-0.014253 -0.021954 -0.131040 -0.061376 0.113838
+0.060725 0.020201 0.102533 -0.011392 -0.052046
+-0.069625 -0.091011 -0.097954 0.067847 0.017856
+-0.053461 -0.040679 -0.121664 -0.077208 -0.106919
+0.057996 0.069756 -0.012433 0.069569 -0.055159
+-0.024801 -0.060448 0.101700 0.014619 0.036580
+-0.004526 0.093977 -0.028211 0.045261 0.149736
+-0.014691 -0.007959 0.097708 0.107128 -0.079723
+0.029157 0.020116 0.104828 -0.064208 0.119172
+0.039583 -0.029446 0.006628 -0.110398 0.004062
+0.048132 -0.060601 0.009448 0.051777 -0.053127
+0.050551 -0.001924 0.028079 -0.050618 -0.013698
+0.001920 0.088162 0.073078 0.085795 -0.066788
+0.014025 0.042699 0.176241 -0.046674 -0.034822
+-0.051433 0.121729 -0.057076 0.023901 0.045075
+-0.057182 0.054780 -0.017280 -0.146674 0.002090
+-0.016223 -0.044841 -0.084524 -0.152479 0.072688
+-0.006962 0.008711 0.127455 -0.003876 0.053162
+-0.013682 -0.025386 -0.000427 -0.024811 -0.024474
+-0.056267 0.062116 -0.121311 -0.053011 0.065651
+-0.075385 -0.008680 -0.063033 0.083039 0.110577
+-0.000152 -0.127017 0.055904 0.013659 0.005664
+-0.002852 0.047248 0.001128 0.100773 0.037274
+0.026368 -0.042205 0.021887 -0.020247 -0.056678
+-0.077475 0.089799 0.058003 0.039741 0.106663
+-0.016853 -0.015972 0.075741 -0.048829 0.015374
+-0.032657 -0.125677 -0.062060 -0.057409 -0.061287
+0.073151 0.050357 0.053547 -0.059886 -0.051298
+0.057954 -0.003817 0.076028 0.006757 0.061109
+-0.038030 0.143209 0.092207 -0.018493 0.062291
+0.005751 -0.036449 0.067582 0.031449 0.101894
+-0.080754 0.011515 -0.049485 -0.016137 -0.087818
+0.108851 0.038222 -0.099315 -0.003117 0.052278
+0.107517 -0.036233 0.065370 0.040409 -0.057029
+-0.033167 -0.081758 -0.019502 0.033438 0.013365
+-0.017760 -0.025906 -0.020244 -0.078722 -0.011697
+-0.028246 0.068647 -0.106417 0.026956 -0.064914
+0.062711 -0.017857 0.151539 0.044613 -0.017820
+0.009085 -0.032785 -0.025795 0.075790 0.075667
+-0.040398 0.058556 -0.042634 0.093973 -0.099529
+0.057103 0.073562 0.012640 -0.066141 0.029558
+0.060219 -0.083699 -0.054799 -0.120442 -0.000374
+0.006521 0.034512 -0.039558 0.042191 0.033865
+0.103992 -0.014977 -0.077384 -0.051340 0.001873
+0.047451 0.140612 -0.024885 -0.021420 -0.046604
+0.030606 0.100660 0.076356 -0.019288 -0.098570
+-0.114463 -0.010855 -0.034657 0.025618 -0.003356
+-0.087913 0.064346 -0.075540 -0.091569 -0.024965
+-0.021232 -0.017255 -0.056931 -0.003104 0.030219
+-0.020112 -0.012334 0.035298 0.001405 0.161753
+-0.064618 -0.064401 -0.007218 -0.000120 -0.047208
+0.116105 -0.056464 -0.069645 -0.007032 -0.012090
+-0.023237 0.016000 -0.039802 0.074319 -0.012604
+0.014863 -0.058081 0.093219 0.062253 -0.040302
+0.027405 -0.128683 0.039923 0.116808 -0.011706
+0.012483 -0.017698 0.003645 -0.007588 -0.120662
+-0.032868 0.066217 -0.031343 -0.034166 0.146334
+-0.031228 -0.125921 0.117756 -0.042686 -0.062094
+0.049375 -0.112262 0.010166 -0.073599 0.048690
+0.028292 0.020076 -0.062865 -0.106114 -0.025300
+0.066916 0.029279 0.028191 -0.003599 -0.040614
+0.020491 0.060238 0.052747 -0.010390 -0.022389
+-0.063358 -0.028707 0.035907 -0.011898 0.079703
+-0.003758 0.078051 -0.017869 0.009045 -0.018982
+0.034974 0.069405 -0.018909 -0.038613 0.083909
+0.033935 -0.036607 0.088891 -0.052599 -0.059839
+0.052758 -0.068308 -0.063615 0.126093 -0.009460
+-0.042175 -0.011113 -0.073071 0.052086 -0.052619
+0.049226 0.066898 -0.045666 0.117923 0.053656
+-0.010739 -0.043962 0.141903 0.001792 -0.035469
+0.090671 0.043993 -0.013655 0.018989 0.127223
+0.001030 -0.001154 0.081839 -0.024979 -0.103704
+-0.077920 0.036083 0.068220 -0.062210 0.113730
+-0.010501 -0.065801 0.050885 -0.104304 0.121937
+0.111850 0.009680 -0.011791 0.001677 -0.035029
+0.010677 0.024572 -0.012860 -0.030323 -0.010466
+0.011279 0.167752 0.003136 0.109709 0.007292
+0.000987 0.004572 0.108706 -0.113192 -0.012431
+-0.015225 0.073653 -0.051275 0.077928 -0.012752
+-0.011708 0.014172 0.025162 -0.095378 0.026382
+-0.028889 -0.058569 -0.129329 0.011087 0.061452
+0.056893 -0.058004 0.103586 -0.060752 0.081824
+-0.042805 -0.015991 -0.024444 0.028952 -0.013528
+0.042851 0.019988 -0.165741 -0.031012 -0.014713
+-0.026059 0.031698 -0.134343 0.032090 0.020828
+0.051674 -0.128006 0.050856 0.022220 -0.073513
+-0.009340 0.013756 0.036163 0.098407 -0.023495
+0.023858 0.008121 0.022220 -0.103489 -0.046663
+-0.033000 0.063565 0.029224 -0.012693 0.084202
+0.012187 -0.051000 0.026126 -0.043293 0.008675
+-0.019812 -0.165070 -0.014555 -0.047431 0.017990
+-0.040073 0.107192 0.022228 -0.089023 -0.066885
+0.014630 0.073186 0.069902 0.072634 0.019593
+-0.041539 0.031788 0.092310 0.027223 0.034027
+-0.051855 0.000391 0.007869 0.131910 0.069384
+0.046276 0.040440 -0.037093 -0.031393 -0.112828
+0.015709 0.096749 -0.103205 -0.021284 0.011405
+0.158287 -0.021028 0.042219 -0.050759 0.069715
+-0.042907 -0.116980 0.014224 0.094648 0.028395
+0.041535 -0.057033 -0.047607 -0.024419 -0.034905
+0.010125 0.036728 -0.052503 -0.001839 -0.033477
+-0.053414 -0.070394 0.092895 0.100600 -0.026352
+0.080574 -0.028763 -0.059548 0.094571 0.091787
+0.041437 0.014312 0.045792 0.108269 -0.081586
+0.056288 0.137447 0.054718 -0.032474 0.054502
+-0.100144 -0.006460 0.024739 -0.117043 -0.008919
+0.070299 -0.036862 -0.014543 0.024500 -0.015222
+0.114975 -0.043705 0.000421 -0.061872 -0.035148
+-0.022797 0.128575 -0.031798 -0.086718 -0.007172
+-0.071706 -0.006833 0.028645 -0.007011 -0.096745
+-0.142269 0.027996 0.065210 0.061381 0.000741
+-0.140531 0.017480 -0.014986 -0.040893 -0.012718
+-0.012494 -0.021869 -0.032923 0.016456 0.104475
+0.010792 -0.066178 0.019097 -0.001893 0.067513
+-0.092673 -0.059851 -0.045936 0.052642 -0.062500
+0.065013 -0.025659 -0.149301 0.051705 0.035692
+-0.045790 -0.007482 -0.069141 0.149365 -0.042039
+0.018492 -0.081315 0.055880 0.058158 0.019669
+0.063836 -0.012391 0.007057 0.155454 0.033854
+-0.016532 -0.007661 0.043113 -0.080283 -0.108670
+-0.029344 0.093781 -0.015840 -0.068134 0.091804
+0.004148 -0.058507 0.059633 -0.095883 -0.004939
+0.086151 -0.113571 -0.019466 -0.009167 0.003662
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt
b/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt
new file mode 100644
index 0000000..0b9dd90
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt
@@ -0,0 +1,257 @@
+10 256
+0.5862 0.7213 0.9146 1.0909 1.2910 1.4954 1.8370 2.0840 2.3771 2.5518
+0.0871 0.2049 0.5849 0.8552 1.2096 1.4686 1.8210 2.0926 2.4508 2.7389
+0.2274 0.3126 0.6088 0.8338 1.1824 1.5948 1.8228 1.9856 2.1832 2.4793
+0.1827 0.2706 0.5842 0.7761 1.0301 1.2462 1.6313 1.9786 2.3479 2.6790
+0.3055 0.3863 0.7194 1.1609 1.3303 1.5017 1.7265 1.9412 2.4659 2.6315
+0.1794 0.2522 0.5477 0.7892 1.3887 1.7101 1.9471 2.1667 2.4361 2.6310
+0.1825 0.2729 0.4185 0.6024 1.2531 1.7291 1.9937 2.1849 2.5865 2.7748
+0.3219 0.4045 0.7357 1.2708 1.4626 1.6439 1.9388 2.1212 2.5005 2.6749
+0.2234 0.3496 0.5054 0.6981 0.8672 1.0431 1.7091 2.0690 2.3290 2.6195
+0.3009 0.3957 0.7576 0.9751 1.1955 1.7727 2.0383 2.2474 2.5612 2.7188
+0.3841 0.5544 0.9209 1.1811 1.5441 1.8126 2.1175 2.3192 2.5486 2.6935
+0.2153 0.3105 0.5597 0.8313 1.2168 1.4512 1.7012 1.8962 2.3893 2.5852
+0.3196 0.4814 0.7629 1.0869 1.5517 1.7780 2.0462 2.2547 2.5023 2.6706
+0.1964 0.3055 0.4307 0.7178 1.4260 1.6240 1.8392 2.0576 2.2976 2.5492
+0.4260 0.6888 1.2019 1.4194 1.6437 1.8221 2.0469 2.2508 2.5142 2.6795
+0.3004 0.3944 0.5847 1.0050 1.1812 1.3559 1.5479 1.7847 2.4924 2.6703
+0.1595 0.2398 0.4336 0.9228 1.2602 1.5064 1.7915 1.9840 2.2320 2.5692
+0.1832 0.2985 0.4205 0.5980 0.7620 0.9894 1.7499 2.1151 2.4814 2.7214
+0.2234 0.3207 0.5457 0.9799 1.2074 1.7079 1.9734 2.1742 2.4575 2.6366
+0.3598 0.4819 0.6385 0.8878 1.3226 1.4910 1.7257 1.9456 2.2061 2.4579
+0.4671 0.5911 0.8513 1.0923 1.5104 1.7043 1.9727 2.1839 2.4484 2.6111
+0.2418 0.3937 0.5420 0.8971 1.1152 1.3054 1.7928 1.9796 2.5441 2.7572
+0.3541 0.4730 0.6546 0.9063 1.0792 1.2743 1.8545 2.0555 2.3083 2.5404
+0.3121 0.4016 0.7137 0.8835 1.0736 1.5907 1.8624 2.0857 2.5075 2.6668
+0.2232 0.3631 0.5273 0.7438 1.0492 1.2235 1.5449 2.2198 2.5160 2.6852
+0.2557 0.3528 0.5051 0.6528 0.8351 1.5688 1.8838 2.1056 2.4401 2.6111
+0.4342 0.5318 0.9234 1.1146 1.3015 1.5198 1.8211 2.0340 2.3694 2.5506
+0.4310 0.5269 0.7431 0.9018 1.0734 1.5196 1.8267 2.0244 2.4508 2.6177
+0.2150 0.3249 0.4966 0.9434 1.1627 1.3497 1.8003 2.0045 2.3567 2.5909
+0.2798 0.4111 0.5786 0.7971 1.0414 1.2142 1.6947 2.0866 2.3351 2.5545
+0.1688 0.2693 0.4004 0.6337 1.3058 1.5064 1.7535 1.9689 2.5542 2.7424
+0.4419 0.6209 1.0127 1.2135 1.4104 1.6111 1.8820 2.1005 2.4238 2.5966
+0.3645 0.5120 0.8977 1.2209 1.5286 1.7204 1.9787 2.1779 2.4390 2.6114
+0.2897 0.4136 0.5504 0.8515 1.2641 1.4334 1.8079 2.0656 2.3509 2.7593
+0.1611 0.4723 0.7420 1.0071 1.2571 1.5891 1.9224 2.2345 2.5647 2.7991
+0.2528 0.4178 0.8909 1.3117 1.6622 1.8641 2.1017 2.2974 2.5299 2.6982
+0.1749 0.2700 0.4116 0.6036 1.1430 1.7776 2.0394 2.2220 2.4667 2.6598
+0.3451 0.4325 0.6194 0.7406 0.9176 1.5540 1.8426 2.0479 2.4401 2.5965
+0.3672 0.5164 0.6558 0.8441 1.2332 1.4114 1.6955 2.0875 2.3674 2.5471
+0.2194 0.3467 0.7384 1.1079 1.5398 1.8437 2.1212 2.3296 2.5800 2.7403
+0.1525 0.2343 0.3915 0.6843 1.0517 1.5020 1.7905 1.9667 2.2027 2.6725
+0.3531 0.5908 0.7462 0.9441 1.2774 1.4743 1.8268 2.1059 2.4478 2.6484
+0.3611 0.4981 0.7598 0.9676 1.4024 1.6330 1.9094 2.1433 2.4408 2.6130
+0.2153 0.3366 0.4974 0.6693 1.1944 1.6791 1.9002 2.1105 2.4100 2.5922
+0.2421 0.3392 0.5123 0.9818 1.5411 1.7092 1.9989 2.1981 2.5659 2.7656
+0.2116 0.3250 0.4845 0.8021 1.0088 1.2158 1.8038 2.0223 2.2975 2.5810
+0.1902 0.2942 0.8003 1.1086 1.3606 1.6008 1.8956 2.1328 2.4481 2.6405
+0.2772 0.3914 0.5826 0.7654 0.9495 1.1240 1.3949 2.0411 2.3891 2.5959
+0.2678 0.5220 0.7630 1.1000 1.3747 1.6432 1.9391 2.2237 2.5511 2.7893
+0.3200 0.4245 0.6174 0.9904 1.1662 1.3882 1.7601 1.9524 2.3998 2.5819
+0.1702 0.4871 0.8370 1.0989 1.3593 1.5830 1.8750 2.1277 2.4666 2.6885
+0.2280 0.3748 0.6554 0.9113 1.2081 1.4619 1.8181 2.0541 2.3791 2.5701
+0.1752 0.4363 0.6454 0.8798 1.1079 1.5367 1.8667 2.1716 2.4804 2.7249
+0.3804 0.4700 0.8224 1.0099 1.1892 1.5906 1.8879 2.0907 2.4544 2.6238
+0.1808 0.2910 0.4683 0.7059 0.8980 1.4031 1.7063 1.9444 2.4658 2.6776
+0.2418 0.3803 0.5443 0.7589 1.1496 1.3185 1.5451 1.7433 2.1310 2.6523
+0.2698 0.3690 0.5362 1.0732 1.2921 1.4696 1.7440 1.9470 2.5051 2.6841
+0.4099 0.5102 0.6983 1.0468 1.2459 1.4185 1.8851 2.0815 2.3464 2.5605
+0.0669 0.1354 0.3764 0.8433 1.1719 1.4834 1.8181 2.1312 2.4626 2.8044
+0.1614 0.2372 0.3878 0.5708 1.2759 1.4950 1.8052 2.0807 2.3485 2.6293
+0.1688 0.2875 0.4301 0.9059 1.2361 1.4054 1.8057 1.9924 2.5589 2.7495
+0.2864 0.3783 0.7032 1.0817 1.2382 1.5741 1.8619 2.0656 2.5139 2.6848
+0.3829 0.4781 0.6766 0.8340 1.0056 1.4147 1.6650 1.8840 2.3922 2.5619
+0.3259 0.4187 0.6139 0.7338 1.1831 1.6497 1.9000 2.1278 2.4322 2.5930
+0.2569 0.3790 0.5426 0.8390 0.9871 1.4850 1.8652 2.0732 2.4314 2.6005
+0.1408 0.2283 0.4024 0.8784 1.1485 1.4003 1.7004 1.9205 2.3723 2.6522
+0.2971 0.5039 0.8005 1.1212 1.4232 1.7801 2.1255 2.3907 2.6795 2.8487
+0.1515 0.2344 0.4684 0.8040 1.0401 1.3774 1.8329 2.1235 2.5555 2.7770
+0.5778 0.7157 0.8910 1.0966 1.4235 1.6482 1.9551 2.1831 2.4572 2.6234
+0.3017 0.4161 0.8088 0.9971 1.2000 1.4419 1.7867 2.0224 2.3473 2.5400
+0.1208 0.2814 0.6564 0.9448 1.2377 1.5663 1.9084 2.2112 2.5583 2.8155
+0.2127 0.3127 0.4635 0.6416 0.8449 1.6652 2.0577 2.2656 2.5811 2.7434
+0.1942 0.3011 0.4212 0.6901 1.5369 1.7639 1.9608 2.1766 2.4435 2.6663
+0.3510 0.4345 0.7146 0.9086 1.0678 1.2579 1.4425 2.0265 2.4574 2.6252
+0.3225 0.4323 0.6168 0.8580 1.5388 1.7910 1.9927 2.2013 2.4494 2.6160
+0.2271 0.4488 0.6287 0.7857 1.2086 1.3830 1.6194 2.1955 2.5236 2.6945
+0.2568 0.3510 0.5613 1.0500 1.2521 1.4359 1.6995 1.9187 2.2148 2.4275
+0.2933 0.3941 0.6128 0.8899 1.0720 1.2862 1.5331 1.8301 2.1553 2.3865
+0.3480 0.4626 0.6009 0.7630 0.9044 1.1225 1.8539 2.1845 2.5035 2.7091
+0.1337 0.4722 0.8099 1.1273 1.4252 1.6990 2.0188 2.2922 2.6018 2.8168
+0.1138 0.3263 0.8059 1.0473 1.3262 1.6202 1.9439 2.2007 2.5347 2.7702
+0.1979 0.3130 0.4635 0.8504 1.1143 1.3221 2.0371 2.2421 2.5406 2.7491
+0.3321 0.4194 0.8239 1.0458 1.1981 1.3733 1.5661 1.9985 2.3747 2.5416
+0.3729 0.5958 0.9551 1.2650 1.5484 1.9255 2.2256 2.4809 2.7276 2.8935
+0.1664 0.2516 0.5347 0.7545 1.1971 1.4089 1.7400 2.0871 2.4098 2.6795
+0.2370 0.3178 0.6123 1.3315 1.5470 1.7257 2.0063 2.1977 2.5449 2.7252
+0.2030 0.3328 0.4766 0.7357 1.2780 1.4439 1.7229 1.9405 2.2278 2.6816
+0.1702 0.2919 0.4598 0.7123 0.9077 1.1450 1.8632 2.0806 2.4990 2.7100
+0.2421 0.3578 0.5400 0.7217 0.8971 1.4898 1.8518 2.1205 2.6077 2.7894
+0.3030 0.3935 0.5812 0.7404 0.9425 1.8342 2.0887 2.2811 2.5596 2.7118
+0.1322 0.1997 0.3466 0.6981 1.1811 1.4849 1.8594 2.1114 2.4708 2.7804
+0.2317 0.3069 0.6860 1.4306 1.7121 1.8671 2.1249 2.2995 2.5705 2.7456
+0.3778 0.4863 0.6639 0.9163 1.1560 1.3186 1.5389 1.7169 2.1603 2.5797
+0.2118 0.3499 0.5259 0.7200 1.1348 1.3140 1.5657 2.0241 2.2873 2.5184
+0.2902 0.4368 0.6331 0.8971 1.3102 1.5219 1.8674 2.1512 2.4708 2.6809
+0.1418 0.3988 0.6251 0.8544 1.1268 1.3964 1.7585 2.0322 2.3964 2.6928
+0.2314 0.3462 0.7282 0.9211 1.1766 1.4941 1.7368 1.9546 2.5170 2.7066
+0.2076 0.3251 0.7423 0.9590 1.1936 1.5329 1.8887 2.1588 2.4667 2.6709
+0.2058 0.4139 0.5745 0.7832 0.9595 1.1688 1.7561 1.9562 2.4840 2.7001
+0.1834 0.2971 0.4643 0.6625 0.8802 1.1137 1.5183 1.8417 2.3842 2.7042
+0.1688 0.4218 0.7070 1.0465 1.4496 1.6953 1.9560 2.2174 2.5172 2.7404
+0.2323 0.3981 0.5489 0.7227 1.2886 1.5221 1.7158 2.1184 2.4066 2.5898
+0.3470 0.5265 0.8140 1.0152 1.3206 1.5411 1.8490 2.0588 2.3556 2.5393
+0.1707 0.2595 0.6762 0.9037 1.2781 1.4903 1.7946 2.0610 2.3741 2.5771
+0.1457 0.2318 0.6039 1.0078 1.3461 1.5908 1.8818 2.1248 2.4432 2.6714
+0.6574 0.8086 1.0243 1.2183 1.4837 1.7129 2.0197 2.2464 2.5059 2.6716
+0.2546 0.4983 0.8674 1.2536 1.6704 1.9529 2.2134 2.4319 2.6532 2.8109
+0.2455 0.3379 0.4632 0.8635 1.5286 1.8047 1.9909 2.1806 2.4031 2.5729
+0.4772 0.6742 1.0000 1.2474 1.5288 1.7415 2.0102 2.2168 2.4770 2.6449
+0.3357 0.4382 0.6033 1.1317 1.3681 1.5576 1.9251 2.1119 2.5548 2.7395
+0.2588 0.7015 0.8953 1.0830 1.2828 1.5160 1.8965 2.1921 2.5150 2.7258
+0.2466 0.3512 0.5047 0.6646 0.8161 1.2577 1.8046 2.0214 2.4447 2.6491
+0.1631 0.2283 0.4070 0.5955 1.1126 1.3894 1.8978 2.1849 2.5384 2.7382
+0.3424 0.4748 0.6222 0.8020 0.9706 1.1568 1.7044 1.9297 2.2127 2.5627
+0.2088 0.5143 0.7400 0.9277 1.1032 1.3561 1.8841 2.2004 2.5882 2.7993
+0.2016 0.3488 0.5894 0.7419 1.1488 1.3626 1.5566 1.9694 2.5488 2.7209
+0.2558 0.3914 0.5360 0.7521 1.4330 1.6955 1.8886 2.1428 2.4190 2.5966
+0.4021 0.5034 0.6653 0.8123 0.9586 1.2825 1.9184 2.1120 2.4090 2.5970
+0.2343 0.4800 0.6934 0.8523 1.2786 1.4763 1.7235 2.0400 2.3602 2.5562
+0.2460 0.3687 0.5325 0.7044 1.1488 1.3608 1.8112 2.0757 2.4183 2.6630
+0.1616 0.3644 0.5725 0.9166 1.2481 1.4938 1.8388 2.1175 2.4712 2.7464
+0.3760 0.4841 0.6350 1.0082 1.2110 1.4003 1.8127 2.0018 2.5199 2.7238
+0.1988 0.2824 0.6553 1.0337 1.5413 1.7369 1.9751 2.1751 2.4372 2.6265
+0.2728 0.4094 0.7498 1.0645 1.3516 1.5946 1.9910 2.2172 2.4830 2.6614
+0.1657 0.5327 0.7281 0.9966 1.2385 1.4629 1.8119 2.0973 2.4469 2.6979
+0.1413 0.2098 0.3540 0.5492 0.8486 1.1288 1.6320 1.9056 2.2805 2.5438
+0.2856 0.3666 0.6259 1.1424 1.6605 1.8197 2.0147 2.1986 2.4121 2.5919
+0.2725 0.4829 0.7650 1.0119 1.2977 1.5488 1.8755 2.1155 2.4383 2.6377
+0.2736 0.3804 0.5537 1.0258 1.2269 1.4186 1.9718 2.1468 2.5665 2.7689
+0.2341 0.5953 1.1030 1.4549 1.7361 1.9758 2.2126 2.4213 2.6405 2.8181
+0.2273 0.4638 0.6228 0.8500 1.1016 1.2823 1.7094 1.9523 2.2669 2.7029
+0.2438 0.3798 0.7299 0.9600 1.3765 1.6104 1.8644 2.1161 2.5073 2.7137
+0.1551 0.4869 0.8676 1.2274 1.5069 1.8857 2.1868 2.4411 2.7106 2.8767
+0.2746 0.5454 0.7589 0.9458 1.1597 1.3349 1.6653 2.1142 2.4356 2.6239
+0.1793 0.2646 0.4344 0.7482 1.1502 1.3733 1.8558 2.0817 2.3248 2.5171
+0.2698 0.4202 0.5765 0.8301 1.0073 1.2101 1.9714 2.2051 2.5138 2.7395
+0.1929 0.3091 0.4460 0.6266 1.1805 1.3672 1.5990 2.1514 2.4729 2.6468
+0.1901 0.3047 0.4607 1.1019 1.3168 1.5343 1.9234 2.1365 2.5924 2.7807
+0.3139 0.5009 0.6700 0.8268 1.0117 1.1810 1.6539 2.1984 2.4828 2.6576
+0.1403 0.2173 0.4117 0.7302 1.0038 1.2732 1.7392 2.0337 2.3809 2.7386
+0.4166 0.5101 0.7449 1.1663 1.3492 1.5543 1.9000 2.0941 2.4588 2.6365
+0.3342 0.4335 0.6160 0.8559 1.0112 1.2097 1.4029 1.6361 2.4129 2.6324
+0.4543 0.6159 0.7932 0.9843 1.2562 1.4308 1.7116 1.9919 2.2671 2.4631
+0.2153 0.3609 0.5302 0.7089 0.8756 1.0376 1.6496 2.2826 2.5680 2.7441
+0.4380 0.6439 0.8282 1.0651 1.3650 1.5829 1.8838 2.1005 2.4006 2.5771
+0.2523 0.3636 0.5879 1.1628 1.3542 1.6756 2.0488 2.2543 2.6093 2.7953
+0.4179 0.5426 0.7065 0.8996 1.0684 1.3146 1.9705 2.2021 2.5051 2.7061
+0.1659 0.2860 0.6693 0.9229 1.3959 1.6544 1.9709 2.2257 2.5236 2.7460
+0.2540 0.4356 0.5946 0.7627 1.2274 1.4222 1.6573 1.9601 2.2514 2.4711
+0.1633 0.2337 0.3698 0.5421 1.1757 1.5916 2.1561 2.3371 2.5534 2.7737
+0.1953 0.2730 0.4521 1.2005 1.7062 1.8627 2.1313 2.3266 2.5906 2.7667
+0.3053 0.4054 0.5651 0.7470 0.8910 1.1720 1.8864 2.1074 2.3705 2.5744
+0.1761 0.3033 0.6501 0.8268 1.0369 1.2687 1.8534 2.1889 2.5074 2.7339
+0.2265 0.3990 1.1359 1.4137 1.6839 1.8912 2.0948 2.3042 2.5489 2.7234
+0.3326 0.5400 0.8711 1.0948 1.3752 1.6155 1.9360 2.1537 2.4451 2.6133
+0.2162 0.3522 0.5309 0.7470 0.9677 1.1747 1.5056 1.7942 2.1615 2.4800
+0.1872 0.2761 0.4053 0.7469 1.5858 1.8945 2.1198 2.3197 2.5819 2.7758
+0.5381 0.8651 1.2695 1.4918 1.7774 1.9696 2.1865 2.3687 2.5739 2.7158
+0.2663 0.3422 0.6098 1.2120 1.4516 1.6092 1.8506 2.0376 2.2929 2.5088
+0.1904 0.3051 0.5663 0.7391 1.1589 1.5705 1.8756 2.1653 2.5518 2.7693
+0.1543 0.3519 0.6976 1.0664 1.3696 1.7817 2.1308 2.4259 2.7070 2.8753
+0.3304 0.4283 0.5942 0.7425 0.8906 1.4067 2.0676 2.2460 2.5394 2.7006
+0.2080 0.3215 0.6278 0.7882 1.3123 1.5592 1.8048 2.0831 2.4303 2.6266
+0.1188 0.2481 0.8270 1.2420 1.5824 1.8976 2.1816 2.4248 2.6645 2.8459
+0.0635 0.1528 0.5973 0.9377 1.2653 1.5465 1.8818 2.1681 2.5089 2.7924
+0.3249 0.5179 0.9143 1.2973 1.4966 1.7550 2.0715 2.3166 2.6500 2.8305
+0.1918 0.3107 0.4506 0.6994 1.3463 1.5348 1.8447 2.1903 2.4480 2.6877
+0.3405 0.4644 0.7232 0.9199 1.2611 1.5175 1.8446 2.0652 2.3915 2.5781
+0.3289 0.5152 0.6602 1.0213 1.1886 1.5496 1.9553 2.1883 2.5394 2.7362
+0.3000 0.4097 0.8372 1.0793 1.3095 1.5684 1.8746 2.0783 2.3643 2.5490
+0.2421 0.3280 0.5288 0.9261 1.6911 1.8959 2.1013 2.2823 2.5238 2.6960
+0.1070 0.3131 0.6226 0.8881 1.1808 1.4867 1.8146 2.1088 2.4594 2.7186
+0.4400 0.5533 0.7025 0.9206 1.4089 1.5820 1.8080 2.0832 2.3577 2.5300
+0.2250 0.3434 0.4808 0.6721 0.8198 1.1446 2.0201 2.2625 2.5520 2.7604
+0.1671 0.2551 0.4603 0.6777 0.9661 1.5579 1.8659 2.1196 2.4425 2.6551
+0.3910 0.5877 1.0287 1.3547 1.6899 1.9166 2.1451 2.3337 2.5519 2.7071
+0.1435 0.2165 0.3968 0.8376 1.2572 1.5298 1.8791 2.1352 2.4636 2.7011
+0.1756 0.2799 0.4120 0.5808 0.7573 1.3340 1.8235 2.1200 2.4993 2.7365
+0.1332 0.2174 0.4716 0.9483 1.2723 1.6028 1.9272 2.2190 2.5588 2.7990
+0.2122 0.3143 0.7042 0.8849 1.1312 1.3711 1.6832 1.9633 2.2685 2.5156
+0.2089 0.3339 0.4817 0.8526 1.0657 1.2741 1.5747 1.8000 2.4860 2.6843
+0.1636 0.2617 0.4400 0.7357 1.0355 1.2638 1.5672 1.8504 2.1904 2.6588
+0.1945 0.2934 0.4869 0.8567 1.1262 1.3604 1.6898 1.9143 2.1475 2.3503
+0.1606 0.2442 0.3931 0.9237 1.5811 1.7529 2.0133 2.2272 2.5250 2.7265
+0.4866 0.7045 1.0593 1.2795 1.5326 1.8221 2.1461 2.3665 2.6041 2.7599
+0.4012 0.4911 0.7103 0.8585 1.0495 1.7244 2.0116 2.2041 2.5189 2.6643
+0.4365 0.6694 0.8644 1.1330 1.4510 1.7627 2.1032 2.3690 2.6280 2.8306
+0.2072 0.4018 0.6227 0.8913 1.3038 1.6056 1.9704 2.2816 2.6135 2.8182
+0.3302 0.4968 0.8713 1.0761 1.2576 1.4654 1.8152 2.1400 2.5404 2.7493
+0.1385 0.2292 0.3530 0.6006 1.4699 1.6571 1.9438 2.1663 2.5027 2.7308
+0.1894 0.2915 0.4345 0.6341 1.0024 1.1896 1.6896 2.0966 2.4086 2.6768
+0.3841 0.5197 0.8889 1.1480 1.4383 1.6285 1.8642 2.0669 2.3466 2.5325
+0.2008 0.3097 0.4664 0.6638 1.2798 1.4940 1.7270 2.0264 2.2915 2.4750
+0.1864 0.2857 0.4481 1.1025 1.3096 1.5035 1.7614 1.9891 2.4255 2.6031
+0.4081 0.6134 0.9514 1.1818 1.3943 1.6361 1.9891 2.2395 2.5547 2.7287
+0.2964 0.3876 0.9450 1.2247 1.3906 1.5882 1.8241 2.0589 2.4188 2.5871
+0.3127 0.4038 0.6168 1.0810 1.3067 1.4759 1.8817 2.0781 2.3394 2.5539
+0.2066 0.3059 0.4989 0.7132 0.9066 1.4460 1.7584 1.9755 2.2210 2.4741
+0.2634 0.3956 0.5667 0.8777 1.0517 1.6029 2.0590 2.2607 2.6064 2.7647
+0.4331 0.5315 0.7764 1.0444 1.2269 1.4311 1.7093 1.9187 2.4337 2.6149
+0.2161 0.4429 0.6851 0.8336 1.1037 1.2966 1.5283 2.0299 2.3407 2.5384
+0.2814 0.3637 0.5416 0.9475 1.5137 1.6945 1.8892 2.1017 2.3190 2.5007
+0.4454 0.6883 1.1402 1.4098 1.7435 2.0014 2.2521 2.4457 2.6495 2.7985
+0.1641 0.4083 0.6426 1.0592 1.3258 1.5754 1.8666 2.1381 2.4572 2.7177
+0.3391 0.4607 0.6072 0.8463 1.4207 1.6062 1.8303 2.0887 2.3615 2.5348
+0.2414 0.3396 0.5100 0.7470 1.3329 1.8618 2.0751 2.2564 2.5147 2.6874
+0.1694 0.2535 0.4156 0.8302 1.2853 1.5838 2.0907 2.3085 2.5929 2.7951
+0.2047 0.3652 0.6500 0.8068 1.0178 1.1865 1.4889 2.0671 2.5966 2.7634
+0.2425 0.3247 0.6020 1.2226 1.4272 1.5996 1.8377 2.0413 2.5333 2.7021
+0.3842 0.5030 0.6541 0.8771 1.0576 1.2612 1.6744 1.8735 2.4781 2.6803
+0.2042 0.3280 0.7283 0.8985 1.1444 1.3299 1.6032 2.1539 2.4739 2.6547
+0.1268 0.1924 0.3208 0.5153 1.1304 1.4443 1.8047 2.0552 2.4385 2.7572
+0.2713 0.3659 0.5395 1.0705 1.4228 1.5836 1.9763 2.1641 2.4459 2.6301
+0.3047 0.4043 0.5727 0.7368 0.8997 1.3242 1.6473 1.8879 2.4330 2.6295
+0.1224 0.3948 0.6903 0.9199 1.2852 1.5516 1.8645 2.1231 2.4657 2.7044
+0.2157 0.3281 0.5036 0.9272 1.0975 1.5285 1.8080 2.0569 2.5448 2.7221
+0.1670 0.2490 0.3696 0.5921 1.3019 1.8398 2.2165 2.3725 2.6142 2.8338
+0.3899 0.5573 0.8100 1.0732 1.3966 1.6598 2.0001 2.2517 2.5548 2.7403
+0.4905 0.6064 0.8222 0.9966 1.1912 1.5714 1.9628 2.1727 2.5300 2.7055
+0.1309 0.2342 0.6232 0.8795 1.1283 1.3655 1.7371 2.0251 2.3992 2.6885
+0.1805 0.2672 0.4297 1.2440 1.4967 1.6796 1.9592 2.1784 2.5439 2.7289
+0.2280 0.5429 0.6967 0.8732 1.4074 1.6074 1.9516 2.2124 2.5486 2.7722
+0.2339 0.3379 0.4924 0.9061 1.3074 1.4719 1.8884 2.1110 2.3618 2.5545
+0.1384 0.2291 0.5127 1.0450 1.4017 1.7884 2.1134 2.3664 2.6588 2.8435
+0.2196 0.6359 0.9100 1.2007 1.4589 1.7053 2.0128 2.2722 2.5520 2.7643
+0.1698 0.2615 0.3810 0.5706 1.4297 1.8686 2.0728 2.2559 2.4860 2.6701
+0.1445 0.2158 0.3658 0.5451 0.9389 1.3669 1.7900 2.0846 2.3924 2.7161
+0.2789 0.3816 0.5277 0.8487 1.3751 1.5461 1.7832 2.0264 2.2695 2.4665
+0.1733 0.3023 0.9216 1.2368 1.4776 1.7229 1.9952 2.2471 2.5390 2.7265
+0.3374 0.5033 1.0951 1.3262 1.5284 1.7336 1.9733 2.2009 2.4992 2.6751
+0.1293 0.2743 0.7533 1.0166 1.2416 1.4444 1.7962 2.0851 2.4770 2.7204
+0.3106 0.4176 0.6358 0.9434 1.1419 1.3458 1.9638 2.1678 2.4390 2.6235
+0.4533 0.5760 0.7392 0.9136 1.0829 1.2759 1.7903 2.0360 2.3124 2.5325
+0.3702 0.5218 0.6977 0.8776 1.1096 1.2855 1.5612 1.9480 2.2170 2.4361
+0.1637 0.2647 0.4185 0.6666 1.1584 1.3270 1.7829 1.9821 2.4361 2.7094
+0.1769 0.2767 0.3942 0.5746 1.3595 1.7110 1.9176 2.1405 2.3722 2.5705
+0.2712 0.3820 0.6524 0.8317 1.0341 1.3972 1.7312 1.9918 2.3854 2.5886
+0.1003 0.2046 0.7261 1.1004 1.4057 1.6697 1.9903 2.2603 2.5813 2.8009
+0.2534 0.3752 0.7192 0.9323 1.3698 1.5955 1.8653 2.0656 2.3368 2.5340
+0.3589 0.4508 0.6631 1.0521 1.5065 1.6697 1.8929 2.1074 2.3466 2.5242
+0.1955 0.2862 0.6111 0.8053 1.0501 1.5218 1.7996 2.0303 2.3788 2.5973
+0.2982 0.4033 0.5660 0.8924 1.1933 1.3465 1.7895 2.0173 2.2606 2.5069
+0.3356 0.4711 0.6310 0.8491 1.0049 1.4364 1.8176 2.0292 2.5710 2.7525
+0.2016 0.2912 0.4363 0.9800 1.4897 1.6494 1.8862 2.0819 2.3636 2.6091
+0.4549 0.6491 0.8450 1.0209 1.1747 1.3745 1.8824 2.1130 2.3760 2.5768
+0.2510 0.3524 0.5171 0.8931 1.4094 1.5710 1.8536 2.0478 2.4766 2.7320
+0.1576 0.2547 0.3891 0.8551 1.4282 1.5880 1.8583 2.0521 2.5359 2.7340
+0.3481 0.4382 0.7720 1.1289 1.3203 1.5019 1.7665 1.9570 2.2231 2.4465
+0.3116 0.4068 0.6991 0.8894 1.0912 1.5356 1.8084 2.0006 2.2323 2.4367
+0.2706 0.4033 0.8272 1.0851 1.4820 1.6927 1.9292 2.1267 2.4049 2.5857
+0.2745 0.3550 0.8663 1.3742 1.5545 1.7324 1.9664 2.1538 2.4581 2.6245
+0.1736 0.2553 0.5357 0.9009 1.1888 1.5132 1.8579 2.1181 2.4273 2.6847
+0.3026 0.4148 0.9044 1.1695 1.3657 1.7036 1.9891 2.2226 2.5441 2.7085
+0.3998 0.5108 0.7205 0.9848 1.1828 1.3716 1.7154 1.9191 2.1875 2.4257
+0.2141 0.3095 0.7428 1.0426 1.2851 1.5571 1.7901 1.9804 2.2462 2.5265
+0.1574 0.2290 0.3869 0.5735 1.0925 1.3383 1.6598 1.9364 2.2095 2.4195
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt
b/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt
new file mode 100644
index 0000000..607cb47
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt
@@ -0,0 +1,129 @@
+10 128
+0.0120 0.0022 0.0068 -0.0112 -0.0508 -0.0490 0.2249 0.1476 0.0133 -0.0379
+0.0598 0.0477 0.0380 0.0660 0.0517 0.0150 0.0617 0.0081 -0.0768 -0.1007
+-0.0087 -0.0440 0.0873 0.0882 0.0391 -0.0060 0.1100 0.0569 -0.0241 -0.0468
+0.0146 -0.0005 0.0322 -0.0650 -0.0778 -0.0780 -0.0255 -0.0527 -0.0301 -0.0401
+-0.0240 -0.0560 -0.0374 0.0274 0.0484 -0.0227 0.0328 0.1135 0.0117 -0.0300
+-0.0324 -0.0574 0.0302 0.0137 -0.0603 -0.1194 -0.0105 -0.0513 0.0698 0.0538
+0.0635 0.0382 0.0531 0.0897 0.0495 0.0039 -0.0421 -0.0919 0.0407 0.0167
+0.0954 0.0854 0.0360 -0.0025 -0.0252 -0.0528 -0.0435 -0.0561 -0.0405 -0.0432
+0.0110 -0.0010 -0.0433 -0.0167 0.1402 0.0738 0.0423 -0.0024 -0.0920 -0.1099
+0.0179 0.0184 -0.0041 -0.0640 0.1004 0.0608 -0.0023 -0.0357 0.1509 0.1262
+-0.0145 -0.0240 -0.0595 -0.1063 0.0597 -0.0040 -0.0886 0.1184 0.0380 0.0126
+-0.0072 0.0172 0.0076 0.0288 0.0810 0.0278 0.0709 0.0051 0.0214 -0.0301
+0.0127 -0.0126 -0.0434 0.1610 0.1178 0.0704 0.0257 -0.0073 -0.0425 -0.0610
+-0.0165 -0.0369 -0.0785 0.1007 0.0309 -0.0651 0.0142 -0.0614 0.0426 0.0289
+-0.0374 -0.0712 0.0049 -0.0382 0.0472 0.0095 -0.0268 -0.0747 -0.0457 -0.0758
+-0.0211 -0.0432 -0.0547 -0.0446 -0.1078 0.0090 -0.0565 -0.1298 0.0721 0.0351
+-0.0014 -0.0072 -0.0283 -0.0324 -0.0208 -0.0703 0.0979 0.0865 -0.0007 0.1881
+-0.0077 -0.0302 0.1231 0.0905 0.0786 0.0432 -0.0286 -0.0661 -0.0055 -0.0275
+0.0010 0.0043 0.0044 0.0380 -0.1201 -0.0098 -0.0166 0.0105 0.0153 0.0134
+0.0843 0.0636 0.0416 -0.0004 -0.0570 -0.0592 0.1158 0.0590 0.0126 0.0034
+0.0346 0.0290 -0.0037 -0.0026 -0.0457 0.1824 0.1469 0.0870 0.0291 -0.0074
+0.0066 0.0682 -0.0148 0.0287 0.0095 -0.0563 0.1296 0.0426 0.1215 0.0886
+-0.0132 -0.0399 0.0960 0.0474 0.0140 0.0306 -0.0192 -0.0703 -0.1559 -0.1556
+-0.0600 0.0482 0.1257 0.0521 0.0229 -0.0031 0.0817 0.0571 -0.0138 -0.0277
+0.0013 -0.0103 -0.0470 -0.0687 -0.1444 0.0181 0.1350 0.0559 -0.0177 -0.0598
+-0.0215 -0.0318 -0.0689 -0.0268 0.0917 0.0307 0.0135 -0.0184 -0.0857 0.1231
+0.0137 -0.0152 0.0199 -0.0291 -0.0685 0.0438 -0.1137 0.0231 -0.0632 -0.0802
+-0.0011 0.0314 0.0535 -0.0135 -0.0291 -0.0579 -0.1049 0.0288 -0.0628 0.1355
+-0.0901 0.0041 -0.0170 0.0351 0.0144 -0.0505 0.0396 0.0638 -0.0145 0.0141
+-0.0400 -0.0603 -0.0714 0.0329 -0.0049 -0.0529 -0.1251 0.0022 -0.0449 -0.0778
+0.0247 0.0296 0.0239 0.0122 -0.0348 -0.1224 -0.0033 0.1237 -0.0016 -0.0436
+0.0246 0.0050 0.0322 0.0818 0.0203 0.0846 0.0022 0.0876 0.0149 -0.0184
+-0.0204 -0.0228 0.0365 -0.0164 0.1087 0.0374 -0.0550 0.0330 -0.0582 -0.0736
+-0.0305 -0.0485 -0.0572 0.0275 -0.0271 -0.0436 0.1217 0.0700 0.1253 0.0990
+-0.0079 -0.0204 -0.0325 0.0491 0.0158 -0.0365 -0.1309 -0.1812 0.1428 0.1148
+0.0680 0.0547 0.0309 0.0079 -0.0332 0.0391 -0.0287 0.1258 0.1123 0.1016
+-0.0264 -0.0409 -0.0538 -0.0192 -0.0393 -0.0713 -0.0618 -0.1078 -0.1850 0.0532
+0.0081 -0.0115 -0.0090 0.1201 -0.0413 -0.0995 0.0445 -0.0032 -0.0286 -0.0497
+-0.0023 -0.0184 -0.0358 0.1279 0.0847 0.0530 0.0230 -0.0212 0.1245 0.0965
+0.0111 0.1038 0.0597 0.0413 0.0533 0.0011 0.0031 0.0705 0.0242 0.0198
+0.0020 -0.0071 -0.0262 -0.0496 -0.0750 -0.1273 -0.1785 0.0606 -0.0223 -0.0583
+-0.0202 0.0669 0.0081 0.0335 -0.0218 -0.1073 -0.0146 -0.0673 0.0490 0.0210
+-0.0108 -0.0230 -0.0614 -0.0986 0.0629 0.0006 0.1496 0.1099 0.0316 0.0098
+-0.0368 -0.0685 0.0138 -0.0213 -0.0009 0.0344 -0.0249 0.0311 0.0803 0.0759
+0.0038 -0.0158 0.0142 0.0254 0.0970 0.0021 -0.1029 0.0006 0.0576 0.0261
+-0.0083 0.0698 0.0406 -0.0348 0.0200 0.0833 0.0186 -0.0145 -0.0725 -0.0872
+-0.0506 -0.0673 0.0776 -0.0172 -0.0444 -0.0531 -0.0799 0.0005 -0.0359 -0.0446
+0.0368 0.0376 -0.0407 -0.0190 0.0987 0.0212 -0.0349 -0.0951 -0.0084 -0.0342
+-0.0309 -0.0561 0.0950 -0.0125 -0.1028 -0.0133 0.0920 0.0965 0.0668 0.0409
+-0.0898 0.0036 -0.0353 -0.0024 -0.0365 -0.0259 -0.0485 -0.0843 -0.0063 -0.0167
+-0.0255 -0.0407 -0.0456 -0.0931 -0.0892 -0.0293 -0.0510 0.0183 -0.0104 0.0472
+-0.0172 -0.0399 -0.0731 0.0546 0.0320 -0.0283 0.0415 -0.0107 -0.1237 -0.1102
+0.0210 0.0294 -0.0038 -0.0090 -0.0551 -0.0922 0.0261 -0.0334 -0.1181 -0.1536
+0.0092 0.0032 -0.0162 0.0398 0.0205 0.1266 -0.0107 -0.0858 0.0392 0.0032
+-0.0038 -0.0269 -0.0737 0.1138 0.0263 -0.0031 -0.1188 0.1621 0.0831 0.0526
+0.0023 -0.0149 -0.0497 0.0898 0.0456 -0.0145 -0.0928 -0.1507 -0.0611 -0.0938
+0.0120 0.0124 -0.0286 -0.1319 0.0219 0.0311 -0.0398 -0.0465 -0.0008 -0.0375
+0.0138 0.0023 0.0024 0.1072 0.0531 0.0006 0.0292 -0.0115 -0.0620 0.1650
+0.0070 -0.0251 0.0715 0.0380 -0.0404 0.1230 0.0629 0.0096 0.0973 0.0641
+-0.0586 0.0772 0.0128 0.1060 0.0715 0.0374 -0.0074 -0.0365 -0.0543 -0.0489
+-0.0392 0.0871 -0.0069 -0.1084 0.0264 -0.0495 0.0396 0.0005 -0.0293 -0.0240
+-0.0327 0.0605 0.0662 0.0100 -0.0007 -0.0525 -0.0812 -0.0686 -0.0873 -0.0830
+0.0119 0.0058 0.0030 -0.0307 0.0650 0.0175 -0.0741 -0.1500 -0.1947 0.0881
+0.0572 0.0411 0.0152 -0.0127 -0.0589 -0.0510 -0.0212 -0.0834 0.1434 0.1318
+0.0518 0.0417 -0.0430 0.0963 -0.0014 0.0173 0.0234 -0.0273 0.0359 -0.0118
+0.0652 0.0587 0.0013 -0.0700 0.1262 0.0975 0.0680 0.0598 0.0048 -0.0305
+-0.0185 -0.0440 0.1178 0.0656 0.0052 -0.0534 -0.1151 0.1116 0.0659 0.0344
+0.0788 0.0577 0.0452 0.0283 -0.0278 0.0911 0.0280 -0.0254 0.0029 -0.0361
+-0.0165 -0.0322 -0.0526 -0.1057 0.0927 0.0293 -0.1026 -0.1671 0.0470 0.0355
+0.0100 0.0001 -0.0221 -0.0775 -0.1109 -0.1416 0.0884 0.0441 0.0632 0.0409
+0.0204 0.0432 0.0141 -0.0296 0.1073 0.0580 0.0383 0.0270 -0.0857 0.1246
+0.0488 0.0231 0.0648 -0.0179 0.0747 0.0156 -0.0384 -0.0733 -0.0732 -0.0970
+0.0005 -0.0199 -0.0260 -0.0511 -0.1110 0.0670 -0.0413 0.1571 0.0498 0.0191
+0.0037 -0.0085 -0.0796 0.0086 -0.0852 0.0850 0.0115 -0.0065 0.1161 0.0727
+0.0023 0.0483 0.0285 -0.0642 -0.0477 0.0175 0.0346 0.0452 0.0655 0.0284
+-0.0986 0.0463 0.0326 -0.0055 0.0702 0.0194 -0.0423 -0.0107 0.0338 0.0619
+0.0126 -0.0138 -0.1115 0.0159 -0.0331 0.0217 -0.0376 -0.0407 -0.0222 -0.0503
+0.0222 0.0071 -0.0490 0.1017 0.0551 -0.0164 0.1578 0.1059 0.0025 -0.0107
+0.0124 -0.0090 0.0322 0.0930 0.0281 -0.0403 -0.0781 0.0125 -0.0670 -0.1058
+0.0363 0.0077 0.1052 0.0039 0.0676 0.0891 0.0433 0.0252 0.0224 -0.0043
+-0.0045 -0.0194 -0.0193 -0.0480 -0.0640 -0.0695 -0.1597 -0.0030 0.1728 0.1231
+0.0297 0.0025 0.0619 -0.0347 -0.1171 0.1043 0.0868 0.0191 -0.0739 -0.1075
+0.0073 0.0914 0.0367 -0.0236 0.0232 0.0304 -0.0787 -0.1099 0.0460 0.0082
+0.0296 0.0297 -0.0444 0.0184 0.0602 -0.0295 -0.0934 0.0636 -0.0347 -0.0722
+-0.0290 -0.0629 0.0598 0.0013 0.0064 0.1431 0.0920 0.0468 -0.0311 -0.0614
+-0.0152 -0.0311 -0.0500 -0.0672 -0.1257 -0.0134 -0.0220 -0.0612 -0.1131 -0.1417
+0.0371 0.0153 -0.0817 -0.0007 0.0837 0.0481 0.0460 0.0678 0.0524 0.0432
+0.0126 -0.0069 -0.0092 -0.0693 -0.0250 0.1510 0.0098 -0.0683 -0.0566 -0.0769
+-0.0199 -0.0423 0.0806 0.0562 0.0009 -0.0563 -0.1358 -0.1578 -0.0456 0.0032
+0.0091 0.0101 -0.0090 -0.0279 -0.0489 -0.1038 -0.0815 0.2184 0.1172 0.0902
+-0.0024 -0.0135 0.0392 0.0028 0.0792 0.0404 0.0867 0.1610 0.0954 0.0846
+-0.0004 -0.0220 -0.0282 -0.1022 -0.0799 0.1278 0.0765 0.0402 0.0850 0.0611
+0.0443 0.0320 -0.0384 -0.0964 0.0030 -0.0398 -0.0730 -0.0052 -0.0267 0.1209
+-0.0706 0.1151 0.0722 -0.0175 -0.0927 -0.0559 0.0316 0.0186 0.0105 0.0314
+-0.0145 -0.0263 -0.0564 0.0248 -0.0181 -0.0817 -0.0938 0.0366 -0.0315 0.1253
+0.0307 0.0039 0.1290 0.0402 -0.0439 -0.0384 0.0044 -0.0177 -0.0172 -0.0310
+0.0447 0.0298 0.0287 0.0273 -0.0350 -0.0708 -0.1829 -0.0317 0.0643 0.0057
+-0.0820 -0.0326 0.0209 -0.0711 0.0084 0.0111 0.0426 0.0262 -0.0061 0.0005
+0.0545 0.0377 -0.0417 -0.0625 0.0114 -0.0405 0.0573 0.0191 -0.0263 -0.0472
+-0.0053 -0.0049 -0.0255 -0.0578 -0.0237 -0.0721 -0.1487 -0.1636 0.0046 -0.0355
+0.0309 0.0107 0.0163 0.0132 -0.0536 -0.0009 -0.0706 -0.1350 -0.0514 -0.0960
+0.0306 0.0003 0.0494 0.0701 0.0027 -0.0458 0.0780 0.0327 0.0937 0.0605
+-0.0017 -0.0275 0.0797 -0.0268 -0.1014 0.0593 -0.0528 -0.1103 0.0682 0.0322
+-0.0507 -0.0806 -0.0646 -0.0052 -0.0576 0.0451 0.0489 0.0150 0.0029 -0.0189
+0.0270 0.0143 -0.0375 -0.0071 -0.0607 -0.1157 -0.0345 -0.1115 0.0201 -0.0104
+-0.0807 -0.1088 0.0845 0.0720 0.0441 0.0301 0.0043 0.0052 0.0016 0.0201
+-0.0290 -0.0532 0.0036 -0.0201 -0.0723 -0.1321 0.0867 0.0479 -0.0556 -0.0850
+-0.0271 0.0126 0.1283 0.0533 -0.0030 -0.0352 -0.0326 -0.0553 0.1402 0.1121
+-0.0358 -0.0518 -0.1080 0.0134 0.0950 0.0384 -0.0040 -0.0254 0.0026 -0.0217
+-0.0152 -0.0375 -0.0827 0.0916 0.0188 0.1306 0.0983 0.0606 0.0381 0.0080
+-0.0107 -0.0269 -0.0573 -0.1189 0.0258 0.1009 0.0565 0.0270 -0.0557 -0.0778
+-0.0193 -0.0242 -0.0784 -0.0816 0.0287 -0.0484 0.0292 -0.0414 0.1124 0.0767
+0.0177 -0.0148 0.0472 -0.0808 0.0623 -0.0636 0.0750 -0.0107 0.0673 0.0425
+-0.0220 0.0577 -0.0769 -0.0247 -0.0321 0.0341 -0.0108 0.0109 -0.0142 0.0122
+0.0194 0.0248 -0.0096 -0.0205 -0.0460 -0.1160 0.0492 -0.0188 -0.1535 0.0816
+0.0301 -0.0286 -0.0077 -0.0117 -0.0036 -0.0026 0.0133 -0.0032 0.0007 -0.0160
+0.0115 -0.0111 0.0246 -0.0639 0.0325 -0.0313 0.0808 0.0435 -0.0777 -0.1108
+-0.0079 -0.0334 -0.0144 -0.0539 0.1564 0.1175 0.0549 0.0340 0.0319 0.0027
+-0.0155 -0.0275 -0.0739 -0.0932 0.0108 -0.0698 0.0036 -0.0213 -0.0486 -0.0670
+-0.0234 -0.0567 0.0020 0.0908 -0.0151 0.0460 -0.0175 -0.0523 0.0098 -0.0237
+0.0057 -0.0066 -0.0418 0.0418 -0.0449 0.1069 0.0629 -0.0016 -0.1068 -0.1492
+-0.0791 0.0403 -0.0009 0.0285 -0.0065 0.0963 0.0550 0.0634 0.0693 0.0694
+-0.0068 -0.0197 -0.0919 0.0071 -0.0551 -0.1173 0.0926 0.0413 0.0127 -0.0158
+0.0540 0.0389 -0.0195 -0.0800 -0.1383 0.0440 -0.0139 -0.0405 0.0147 -0.0183
+0.0380 0.0248 0.0520 -0.0609 0.0339 -0.0070 -0.0974 0.1182 0.0221 -0.0310
+0.0043 0.0046 -0.0274 -0.0502 0.0326 -0.0143 -0.0586 -0.0866 -0.1673 -0.1624
+0.0428 0.0385 -0.0228 0.0704 0.0069 -0.0145 -0.0623 -0.0639 -0.1479 0.0212
+-0.0078 -0.0297 0.0025 -0.0239 -0.0793 0.0896 0.0315 -0.0546 -0.1309 0.1080
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt
b/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt
new file mode 100644
index 0000000..a28c3e7
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt
@@ -0,0 +1,65 @@
+10 64
+-0.0291 0.0272 -0.0364 -0.0313 -0.0487 -0.0205 0.0501 0.0225 0.0178 0.0080
+-0.0406 -0.0383 0.0013 -0.0155 -0.0261 -0.0598 0.0003 -0.0242 0.0151 -0.0140
+-0.0445 0.0356 0.0180 -0.0272 -0.0018 -0.0177 -0.0703 0.0471 0.0128 -0.0068
+-0.0033 -0.0285 -0.0560 -0.0186 -0.0499 -0.0070 0.0068 -0.0126 0.0388 -0.0097
+-0.0071 -0.0114 -0.0308 -0.0094 -0.0541 -0.0272 -0.0756 0.0477 -0.0234 0.0678
+0.0048 0.0307 -0.0174 -0.0593 0.0097 -0.0134 0.0034 -0.0212 -0.0418 0.0869
+-0.0189 0.0165 -0.0269 0.0744 0.0344 -0.0177 -0.0603 0.0212 -0.0104 0.0345
+-0.0130 -0.0352 -0.0086 -0.0257 -0.0286 0.0409 0.0656 0.0106 -0.0598 0.0252
+0.0041 0.0097 -0.0032 -0.0154 -0.0405 0.0670 -0.0164 0.0451 0.0774 0.0504
+0.0010 -0.0091 -0.0345 0.0511 0.0016 0.0011 0.0684 0.0167 0.0601 0.0512
+0.0204 -0.0038 -0.0426 0.0185 -0.0191 -0.0630 0.0295 -0.0153 -0.0559 0.0560
+-0.0461 -0.0041 0.0515 0.0219 0.0322 0.0093 0.0044 0.0106 -0.0329 -0.0521
+0.0304 0.0017 0.0209 -0.0002 0.0689 0.0136 0.0216 -0.0268 -0.0682 0.0333
+-0.0175 -0.0425 0.0153 -0.0050 -0.0113 0.0297 -0.0659 -0.0344 0.0302 -0.0272
+-0.0217 -0.0362 0.0426 0.0233 -0.0393 0.0052 0.0138 0.0657 0.0427 0.0220
+-0.0039 -0.0011 -0.0002 -0.0453 -0.0835 0.0144 -0.0268 -0.0589 -0.0185 0.0133
+0.0081 -0.0032 0.0638 0.0032 0.0060 0.0002 -0.0303 -0.0823 0.0124 -0.0308
+0.0108 0.0011 0.0059 0.0396 0.0392 0.0351 -0.0045 -0.0323 -0.0512 -0.0975
+-0.0144 -0.0306 -0.0302 -0.0070 0.0123 -0.0042 -0.0083 -0.0514 0.0120 0.1116
+-0.0046 -0.0131 0.0472 0.0144 -0.0296 -0.0518 0.0337 -0.0145 -0.0733 0.0793
+-0.0064 -0.0162 -0.0327 -0.0711 0.0108 -0.0131 0.0025 -0.0254 -0.0277 -0.0680
+-0.0306 0.0055 0.0272 -0.0189 -0.0173 0.0221 0.0773 0.0043 0.0458 -0.0169
+-0.0006 0.0299 0.0259 0.0227 -0.0530 -0.0596 -0.0271 -0.0091 0.0181 -0.0233
+-0.0116 -0.0398 0.0089 0.0708 -0.0028 -0.0084 -0.0206 -0.0354 -0.0275 -0.0037
+0.0259 -0.0064 -0.0380 0.0572 0.0083 0.0286 -0.0565 0.0158 0.0396 -0.0123
+0.0552 0.0331 -0.0052 -0.0346 -0.0180 -0.0194 -0.0237 0.0184 0.0056 -0.0199
+0.0143 0.0131 -0.0166 0.0196 0.0154 0.0310 -0.0048 0.0901 -0.0333 0.0761
+0.0118 -0.0107 0.0099 0.0078 0.0002 -0.0716 -0.0233 0.0793 0.0516 0.0300
+0.0204 0.0243 0.0192 0.0181 0.0001 -0.0243 -0.0764 -0.0622 -0.0324 0.0640
+0.0132 0.0016 -0.0187 -0.0425 0.0627 0.0094 -0.0786 0.0304 0.0294 -0.0146
+-0.0221 -0.0154 0.0285 -0.0709 0.0406 0.0114 0.0073 -0.0199 0.0081 0.0268
+0.0227 0.0055 0.0163 -0.0447 0.0246 0.0795 0.0239 0.0211 -0.0145 -0.0576
+-0.0119 0.0637 0.0278 0.0202 -0.0086 0.0389 0.0320 -0.0049 -0.0272 -0.0274
+0.0040 -0.0211 0.0426 0.0480 0.0415 0.0659 0.0408 0.0198 0.0327 0.0029
+0.0430 0.0311 0.0083 0.0353 0.0250 0.0143 0.0106 -0.0305 0.0633 0.0227
+-0.0277 0.0302 0.0337 0.0176 0.0191 -0.0156 0.0231 0.0118 0.0465 0.0875
+0.0221 0.0146 0.0147 -0.0211 -0.0317 -0.0179 -0.0049 -0.0297 -0.1078 -0.0413
+-0.0531 0.0180 -0.0066 0.0365 -0.0033 0.0090 -0.0158 -0.0698 0.0315 -0.0048
+0.0289 0.0053 0.0082 0.0077 -0.0664 0.0474 0.0407 -0.0096 0.0028 -0.0526
+-0.0106 -0.0129 -0.0315 0.0335 -0.0217 -0.0427 0.0582 0.0193 -0.0288 -0.0777
+-0.0003 -0.0141 -0.0102 0.0007 -0.0077 -0.0517 -0.0909 0.0128 -0.0349 -0.0769
+-0.0227 -0.0159 -0.0327 0.0011 0.0312 0.0100 -0.0180 -0.0537 -0.0997 0.0122
+0.0190 -0.0139 0.0341 -0.0131 -0.0368 -0.0138 -0.0074 -0.0415 0.0791 0.0503
+0.0182 0.0027 0.0032 -0.0325 -0.0309 -0.0898 0.0509 -0.0170 0.0301 -0.0137
+0.0233 0.0100 0.0231 0.0730 0.0212 -0.0299 0.0440 0.0041 -0.0101 -0.0251
+0.0074 -0.0033 -0.0285 -0.0350 0.0101 0.0735 0.0036 -0.0659 0.0429 -0.0052
+0.0148 -0.0035 -0.0233 0.0079 -0.0142 -0.0402 -0.0358 -0.0985 -0.0080 -0.0549
+0.0203 0.0057 -0.0604 0.0098 0.0402 0.0151 0.0500 0.0058 -0.0086 -0.0401
+0.0056 -0.0381 0.0420 -0.0125 0.0157 -0.0268 0.0433 0.0123 -0.0176 -0.0685
+0.0030 0.0502 0.0067 -0.0222 0.0405 -0.0226 0.0020 -0.0401 -0.0026 -0.0521
+0.0317 0.0089 0.0620 0.0251 0.0066 0.0089 -0.0565 0.0414 0.0005 -0.0365
+-0.0058 0.0086 -0.0291 -0.0164 -0.0134 -0.0490 -0.0427 -0.0451 0.0869 0.0334
+0.0024 0.0328 -0.0415 0.0003 -0.0287 0.0193 -0.0547 -0.0222 -0.0196 -0.0571
+-0.0271 -0.0397 -0.0431 -0.0043 0.0332 0.0093 0.0082 0.0585 0.0282 0.0004
+-0.0251 -0.0167 -0.0289 0.0196 -0.0363 0.0850 0.0028 0.0319 -0.0202 -0.0512
+0.0389 0.0226 0.0401 -0.0091 -0.0152 0.0001 0.0738 0.0402 0.0097 0.0310
+-0.0126 0.0130 -0.0046 -0.0216 0.0298 -0.0344 0.0713 0.0547 -0.0470 -0.0294
+0.0125 0.0044 -0.0028 0.0209 -0.0200 0.0854 0.0018 -0.0386 -0.0703 0.0778
+-0.0036 -0.0347 0.0309 -0.0184 0.0290 -0.0025 -0.0644 0.0347 -0.0523 0.0644
+0.0064 0.0295 -0.0017 0.0282 0.0176 0.0027 0.0246 0.0967 0.0401 -0.0231
+0.0054 -0.0109 0.0055 -0.0479 -0.0490 -0.0136 -0.0245 0.0839 0.0026 -0.0493
+0.0128 -0.0050 -0.0219 -0.0621 0.0313 0.0019 0.0696 0.0459 0.0574 0.0299
+-0.0091 -0.0290 -0.0068 0.0276 0.0645 -0.0150 0.0015 -0.0374 0.0415 -0.0124
+-0.0171 0.0177 -0.0138 0.0034 0.0840 0.0584 0.0233 0.0100 0.0122 0.0047
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt
b/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt
new file mode 100644
index 0000000..01867d4
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt
@@ -0,0 +1,65 @@
+10 64
+0.0221 -0.0035 -0.0032 -0.0177 -0.0327 0.0518 -0.0110 -0.0150 -0.0136 -0.0327
+0.0099 -0.0059 0.0031 -0.0174 0.0464 -0.0240 0.0251 -0.0270 0.0454 -0.0082
+-0.0029 0.0025 -0.0267 -0.0318 -0.0157 0.0173 0.0253 0.0063 -0.0481 0.0419
+-0.0332 -0.0179 -0.0042 0.0241 0.0044 -0.0098 -0.0081 0.0024 -0.0414 0.0339
+-0.0060 0.0182 -0.0051 -0.0479 0.0016 -0.0179 0.0316 0.0222 -0.0029 -0.0351
+0.0074 0.0015 0.0337 -0.0082 -0.0008 0.0129 0.0001 0.0650 0.0175 0.0309
+-0.0212 -0.0261 0.0196 -0.0309 0.0093 -0.0272 0.0260 0.0169 0.0132 0.0116
+-0.0010 0.0202 0.0228 -0.0227 -0.0141 0.0192 -0.0423 -0.0097 -0.0342 0.0338
+-0.0149 -0.0110 -0.0156 0.0290 0.0028 0.0123 -0.0350 -0.0501 0.0272 -0.0245
+-0.0005 -0.0194 0.0460 -0.0001 -0.0280 0.0216 -0.0028 -0.0162 0.0177 -0.0254
+-0.0109 -0.0026 0.0038 -0.0150 -0.0421 -0.0422 0.0164 -0.0436 0.0054 -0.0098
+0.0061 -0.0106 0.0062 0.0207 -0.0329 0.0177 -0.0578 0.0408 0.0077 -0.0260
+0.0001 -0.0098 0.0106 -0.0003 -0.0292 0.0032 0.0560 0.0311 -0.0282 -0.0445
+0.0033 0.0345 -0.0022 -0.0029 -0.0228 0.0242 0.0197 -0.0286 0.0194 -0.0328
+0.0094 -0.0010 0.0121 0.0229 0.0161 0.0363 -0.0124 0.0179 -0.0626 0.0020
+-0.0070 -0.0272 -0.0171 -0.0249 -0.0039 0.0254 0.0317 -0.0324 0.0276 -0.0090
+-0.0002 0.0057 -0.0204 0.0512 -0.0170 0.0113 0.0157 0.0427 -0.0024 0.0162
+-0.0064 -0.0144 0.0216 0.0053 -0.0361 0.0287 0.0230 -0.0161 -0.0189 0.0589
+0.0091 -0.0059 -0.0308 0.0171 -0.0137 -0.0033 -0.0505 -0.0155 -0.0527 0.0133
+-0.0121 -0.0051 0.0219 0.0136 0.0476 -0.0090 -0.0460 0.0208 0.0072 -0.0076
+0.0098 -0.0328 -0.0211 0.0054 -0.0146 -0.0263 0.0248 0.0045 -0.0183 0.0301
+0.0101 0.0139 -0.0073 0.0234 0.0083 -0.0194 -0.0365 0.0307 0.0580 0.0153
+-0.0111 0.0019 0.0265 -0.0150 0.0311 0.0362 0.0244 -0.0213 -0.0224 -0.0299
+0.0061 0.0082 -0.0181 0.0081 -0.0344 0.0133 -0.0095 -0.0411 0.0462 0.0371
+0.0089 -0.0157 0.0179 -0.0256 -0.0118 -0.0302 -0.0329 0.0212 -0.0463 -0.0162
+-0.0313 0.0096 -0.0040 0.0186 0.0248 -0.0126 0.0472 -0.0079 0.0115 -0.0270
+0.0055 0.0044 0.0172 0.0079 -0.0089 -0.0202 -0.0233 -0.0397 -0.0305 -0.0620
+-0.0282 -0.0104 -0.0071 -0.0242 -0.0255 0.0204 -0.0187 -0.0103 -0.0227 -0.0424
+-0.0056 0.0065 0.0151 -0.0376 0.0039 0.0009 -0.0507 -0.0040 0.0393 -0.0201
+0.0128 -0.0228 0.0115 -0.0446 0.0316 0.0266 -0.0036 0.0117 -0.0009 0.0048
+-0.0088 0.0226 0.0125 0.0090 0.0008 -0.0341 0.0243 -0.0178 -0.0589 0.0278
+0.0151 0.0021 -0.0349 -0.0365 -0.0098 -0.0179 -0.0212 -0.0313 0.0109 -0.0164
+-0.0211 -0.0112 -0.0446 0.0014 -0.0034 -0.0179 0.0110 0.0176 0.0286 0.0045
+0.0034 -0.0151 0.0380 0.0331 -0.0034 -0.0439 0.0145 0.0120 0.0036 0.0017
+-0.0348 0.0192 0.0167 0.0069 -0.0266 -0.0085 -0.0076 0.0260 0.0234 0.0075
+-0.0237 0.0150 -0.0094 -0.0201 0.0234 -0.0041 -0.0160 -0.0549 -0.0021 0.0239
+-0.0019 0.0173 0.0295 0.0443 0.0081 0.0181 -0.0039 -0.0270 0.0155 0.0107
+0.0065 -0.0055 -0.0368 0.0232 0.0370 0.0367 0.0046 -0.0167 0.0047 0.0173
+0.0116 0.0053 -0.0229 0.0382 0.0160 -0.0453 0.0057 -0.0267 0.0020 -0.0051
+-0.0140 0.0302 -0.0208 0.0106 0.0101 -0.0049 -0.0319 0.0227 -0.0206 -0.0371
+-0.0007 -0.0109 -0.0053 0.0078 0.0410 -0.0001 0.0543 0.0328 -0.0196 0.0332
+-0.0043 -0.0028 -0.0246 0.0285 -0.0248 0.0153 0.0303 -0.0310 -0.0335 -0.0315
+-0.0417 0.1029 0.0377 0.0069 0.0012 0.0065 0.0007 -0.0144 -0.0083 0.0004
+0.0295 0.0099 -0.0144 -0.0145 0.0141 -0.0013 0.0362 -0.0142 -0.0428 -0.0161
+-0.0095 -0.0206 0.0116 0.0132 0.0164 0.0158 0.0012 -0.0024 0.0640 0.0364
+0.0005 -0.0022 -0.0165 -0.0057 0.0263 0.0339 0.0014 0.0541 0.0164 -0.0411
+0.0039 -0.0143 -0.0107 0.0032 -0.0160 -0.0502 0.0010 0.0272 0.0161 -0.0500
+0.0083 0.0292 -0.0076 -0.0201 0.0313 0.0213 0.0120 0.0087 0.0285 0.0332
+0.0170 0.0018 0.0001 0.0205 0.0106 -0.0064 -0.0082 -0.0083 -0.0082 0.0886
+0.0075 -0.0078 -0.0038 -0.0337 -0.0491 0.0048 0.0069 0.0300 0.0369 0.0088
+-0.0091 -0.0327 0.0041 0.0376 0.0170 0.0154 0.0126 0.0153 -0.0024 -0.0353
+0.0289 -0.0080 0.0063 0.0274 -0.0061 0.0208 0.0390 -0.0060 0.0294 -0.0088
+-0.0037 -0.0195 0.0058 0.0023 -0.0149 -0.0360 -0.0587 -0.0248 0.0288 0.0203
+-0.0031 0.0081 -0.0112 -0.0221 0.0067 -0.0505 -0.0233 0.0353 -0.0131 0.0417
+0.0243 0.0231 -0.0013 0.0049 -0.0423 -0.0245 -0.0029 0.0184 -0.0162 -0.0010
+0.0045 0.0101 -0.0042 0.0014 -0.0133 -0.0321 0.0642 0.0153 0.0377 0.0277
+0.0275 0.0083 0.0286 -0.0243 -0.0084 -0.0236 0.0027 -0.0289 0.0201 0.0235
+0.0281 0.0078 0.0038 0.0069 0.0302 0.0170 -0.0423 -0.0340 0.0104 -0.0181
+0.0334 -0.0034 -0.0257 -0.0061 0.0140 -0.0099 -0.0195 0.0529 0.0019 0.0010
+-0.0114 0.0012 -0.0038 -0.0016 -0.0140 0.0697 0.0372 0.0243 0.0172 0.0066
+0.0192 0.0149 0.0285 0.0077 0.0246 -0.0135 0.0145 0.0317 -0.0074 -0.0438
+-0.0034 -0.0175 -0.0245 -0.0153 0.0357 -0.0102 -0.0062 -0.0053 -0.0308 -0.0499
+0.0025 -0.0253 0.0148 0.0031 0.0189 -0.0023 -0.0085 -0.0596 -0.0337 0.0175
+-0.0091 -0.0171 -0.0217 -0.0189 0.0056 0.0249 -0.0499 0.0236 0.0042 0.0449
diff --git a/gr-vocoder/lib/codec2/codec2.c b/gr-vocoder/lib/codec2/codec2.c
index 93ea920..bc4a084 100644
--- a/gr-vocoder/lib/codec2/codec2.c
+++ b/gr-vocoder/lib/codec2/codec2.c
@@ -42,7 +42,32 @@
#include "interp.h"
#include "postfilter.h"
#include "codec2.h"
+#include "lsp.h"
#include "codec2_internal.h"
+#include "machdep.h"
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION HEADERS
+
+\*---------------------------------------------------------------------------*/
+
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
+ float ak[]);
+void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char
* bits);
+void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char
* bits);
+void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char
* bits);
+void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char
* bits);
+void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char
* bits, float ber_est);
+void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short
speech[]);
+void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char
* bits);
+static void ear_protection(float in_out[], int n);
/*---------------------------------------------------------------------------*\
@@ -64,50 +89,68 @@
\*---------------------------------------------------------------------------*/
-void *codec2_create()
+struct CODEC2 * CODEC2_WIN32SUPPORT codec2_create(int mode)
{
- CODEC2 *c2;
- int i,l;
+ struct CODEC2 *c2;
+ int i,l;
- c2 = (CODEC2*)malloc(sizeof(CODEC2));
+ c2 = (struct CODEC2*)malloc(sizeof(struct CODEC2));
if (c2 == NULL)
return NULL;
+ assert(
+ (mode == CODEC2_MODE_3200) ||
+ (mode == CODEC2_MODE_2400) ||
+ (mode == CODEC2_MODE_1600) ||
+ (mode == CODEC2_MODE_1400) ||
+ (mode == CODEC2_MODE_1300) ||
+ (mode == CODEC2_MODE_1200)
+ );
+ c2->mode = mode;
for(i=0; i<M; i++)
c2->Sn[i] = 1.0;
c2->hpf_states[0] = c2->hpf_states[1] = 0.0;
for(i=0; i<2*N; i++)
c2->Sn_[i] = 0;
- make_analysis_window(c2->w,c2->W);
+ c2->fft_fwd_cfg = kiss_fft_alloc(FFT_ENC, 0, NULL, NULL);
+ make_analysis_window(c2->fft_fwd_cfg, c2->w,c2->W);
make_synthesis_window(c2->Pn);
+ c2->fft_inv_cfg = kiss_fft_alloc(FFT_DEC, 1, NULL, NULL);
quantise_init();
- c2->prev_Wo = 0.0;
+ c2->prev_Wo_enc = 0.0;
c2->bg_est = 0.0;
c2->ex_phase = 0.0;
- for(l=1; l<MAX_AMP; l++)
- c2->prev_model.A[l] = 0.0;
- c2->prev_model.Wo = TWO_PI/P_MAX;
- c2->prev_model.L = PI/c2->prev_model.Wo;
- c2->prev_model.voiced = 0;
+ for(l=1; l<=MAX_AMP; l++)
+ c2->prev_model_dec.A[l] = 0.0;
+ c2->prev_model_dec.Wo = TWO_PI/P_MAX;
+ c2->prev_model_dec.L = PI/c2->prev_model_dec.Wo;
+ c2->prev_model_dec.voiced = 0;
for(i=0; i<LPC_ORD; i++) {
- c2->prev_lsps[i] = i*PI/(LPC_ORD+1);
+ c2->prev_lsps_dec[i] = i*PI/(LPC_ORD+1);
}
- c2->prev_energy = 1;
+ c2->prev_e_dec = 1;
- c2->nlp = nlp_create();
+ c2->nlp = nlp_create(M);
if (c2->nlp == NULL) {
free (c2);
return NULL;
}
- return (void*)c2;
+ c2->lpc_pf = 1; c2->bass_boost = 1; c2->beta = LPCPF_BETA; c2->gamma =
LPCPF_GAMMA;
+
+ c2->xq_enc[0] = c2->xq_enc[1] = 0.0;
+ c2->xq_dec[0] = c2->xq_dec[1] = 0.0;
+
+ c2->smoothing = 0;
+
+ return c2;
}
/*---------------------------------------------------------------------------*\
- FUNCTION....: codec2_create
+ FUNCTION....: codec2_destroy
AUTHOR......: David Rowe
DATE CREATED: 21/8/2010
@@ -115,27 +158,282 @@ void *codec2_create()
\*---------------------------------------------------------------------------*/
-void codec2_destroy(void *codec2_state)
+void CODEC2_WIN32SUPPORT codec2_destroy(struct CODEC2 *c2)
{
- CODEC2 *c2;
-
- assert(codec2_state != NULL);
- c2 = (CODEC2*)codec2_state;
+ assert(c2 != NULL);
nlp_destroy(c2->nlp);
- free(codec2_state);
+ KISS_FFT_FREE(c2->fft_fwd_cfg);
+ KISS_FFT_FREE(c2->fft_inv_cfg);
+ free(c2);
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_bits_per_frame
+ AUTHOR......: David Rowe
+ DATE CREATED: Nov 14 2011
+
+ Returns the number of bits per frame.
+
+\*---------------------------------------------------------------------------*/
+
+int CODEC2_WIN32SUPPORT codec2_bits_per_frame(struct CODEC2 *c2) {
+ if (c2->mode == CODEC2_MODE_3200)
+ return 64;
+ if (c2->mode == CODEC2_MODE_2400)
+ return 48;
+ if (c2->mode == CODEC2_MODE_1600)
+ return 64;
+ if (c2->mode == CODEC2_MODE_1400)
+ return 56;
+ if (c2->mode == CODEC2_MODE_1300)
+ return 52;
+ if (c2->mode == CODEC2_MODE_1200)
+ return 48;
+
+ return 0; /* shouldn't get here */
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_samples_per_frame
+ AUTHOR......: David Rowe
+ DATE CREATED: Nov 14 2011
+
+ Returns the number of bits per frame.
+
+\*---------------------------------------------------------------------------*/
+
+int CODEC2_WIN32SUPPORT codec2_samples_per_frame(struct CODEC2 *c2) {
+ if (c2->mode == CODEC2_MODE_3200)
+ return 160;
+ if (c2->mode == CODEC2_MODE_2400)
+ return 160;
+ if (c2->mode == CODEC2_MODE_1600)
+ return 320;
+ if (c2->mode == CODEC2_MODE_1400)
+ return 320;
+ if (c2->mode == CODEC2_MODE_1300)
+ return 320;
+ if (c2->mode == CODEC2_MODE_1200)
+ return 320;
+
+ return 0; /* shouldnt get here */
+}
+
+void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *c2, unsigned char *bits,
short speech[])
+{
+ assert(c2 != NULL);
+ assert(
+ (c2->mode == CODEC2_MODE_3200) ||
+ (c2->mode == CODEC2_MODE_2400) ||
+ (c2->mode == CODEC2_MODE_1600) ||
+ (c2->mode == CODEC2_MODE_1400) ||
+ (c2->mode == CODEC2_MODE_1300) ||
+ (c2->mode == CODEC2_MODE_1200)
+ );
+
+ if (c2->mode == CODEC2_MODE_3200)
+ codec2_encode_3200(c2, bits, speech);
+ if (c2->mode == CODEC2_MODE_2400)
+ codec2_encode_2400(c2, bits, speech);
+ if (c2->mode == CODEC2_MODE_1600)
+ codec2_encode_1600(c2, bits, speech);
+ if (c2->mode == CODEC2_MODE_1400)
+ codec2_encode_1400(c2, bits, speech);
+ if (c2->mode == CODEC2_MODE_1300)
+ codec2_encode_1300(c2, bits, speech);
+ if (c2->mode == CODEC2_MODE_1200)
+ codec2_encode_1200(c2, bits, speech);
+}
+
+void CODEC2_WIN32SUPPORT codec2_decode(struct CODEC2 *c2, short speech[],
const unsigned char *bits, float ber_est)
+{
+ assert(c2 != NULL);
+ assert(
+ (c2->mode == CODEC2_MODE_3200) ||
+ (c2->mode == CODEC2_MODE_2400) ||
+ (c2->mode == CODEC2_MODE_1600) ||
+ (c2->mode == CODEC2_MODE_1400) ||
+ (c2->mode == CODEC2_MODE_1300) ||
+ (c2->mode == CODEC2_MODE_1200)
+ );
+
+ if (c2->mode == CODEC2_MODE_3200)
+ codec2_decode_3200(c2, speech, bits);
+ if (c2->mode == CODEC2_MODE_2400)
+ codec2_decode_2400(c2, speech, bits);
+ if (c2->mode == CODEC2_MODE_1600)
+ codec2_decode_1600(c2, speech, bits);
+ if (c2->mode == CODEC2_MODE_1400)
+ codec2_decode_1400(c2, speech, bits);
+ if (c2->mode == CODEC2_MODE_1300)
+ codec2_decode_1300(c2, speech, bits, ber_est);
+ if (c2->mode == CODEC2_MODE_1200)
+ codec2_decode_1200(c2, speech, bits);
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: codec2_encode
+ FUNCTION....: codec2_encode_3200
+ AUTHOR......: David Rowe
+ DATE CREATED: 13 Sep 2012
+
+ Encodes 160 speech samples (20ms of speech) into 64 bits.
+
+ The codec2 algorithm actually operates internally on 10ms (80
+ sample) frames, so we run the encoding algorithm twice. On the
+ first frame we just send the voicing bits. On the second frame we
+ send all model parameters. Compared to 2400 we use a larger number
+ of bits for the LSPs and non-VQ pitch and energy.
+
+ The bit allocation is:
+
+ Parameter bits/frame
+ --------------------------------------
+ Harmonic magnitudes (LSPs) 50
+ Pitch (Wo) 7
+ Energy 5
+ Voicing (10ms update) 2
+ TOTAL 64
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short
speech[])
+{
+ MODEL model;
+ float ak[LPC_ORD+1];
+ float lsps[LPC_ORD];
+ float e;
+ int Wo_index, e_index;
+ int lspd_indexes[LPC_ORD];
+ int i;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+ /* first 10ms analysis frame - we just want voicing */
+
+ analyse_one_frame(c2, &model, speech);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* second 10ms analysis frame */
+
+ analyse_one_frame(c2, &model, &speech[N]);
+ pack(bits, &nbit, model.voiced, 1);
+ Wo_index = encode_Wo(model.Wo);
+ pack(bits, &nbit, Wo_index, WO_BITS);
+
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ e_index = encode_energy(e);
+ pack(bits, &nbit, e_index, E_BITS);
+
+ encode_lspds_scalar(lspd_indexes, lsps, LPC_ORD);
+ for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
+ pack(bits, &nbit, lspd_indexes[i], lspd_bits(i));
+ }
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_decode_3200
+ AUTHOR......: David Rowe
+ DATE CREATED: 13 Sep 2012
+
+ Decodes a frame of 64 bits into 160 samples (20ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char
* bits)
+{
+ MODEL model[2];
+ int lspd_indexes[LPC_ORD];
+ float lsps[2][LPC_ORD];
+ int Wo_index, e_index;
+ float e[2];
+ float snr;
+ float ak[2][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ /* only need to zero these out due to (unused) snr calculation */
+
+ for(i=0; i<2; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 2 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+ model[1].voiced = unpack(bits, &nbit, 1);
+
+ Wo_index = unpack(bits, &nbit, WO_BITS);
+ model[1].Wo = decode_Wo(Wo_index);
+ model[1].L = PI/model[1].Wo;
+
+ e_index = unpack(bits, &nbit, E_BITS);
+ e[1] = decode_energy(e_index);
+
+ for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
+ lspd_indexes[i] = unpack(bits, &nbit, lspd_bits(i));
+ }
+ decode_lspds_scalar(&lsps[1][0], lspd_indexes, LPC_ORD);
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo and energy are sampled every 20ms, so we interpolate just 1
+ 10ms frame between 20ms samples */
+
+ interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+ e[0] = interp_energy(c2->prev_e_dec, e[1]);
+
+ /* LSPs are sampled every 20ms so we interpolate the frame in
+ between, then recover spectral amplitudes */
+
+ interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5);
+ for(i=0; i<2; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
+
+ /* synthesise ------------------------------------------------*/
+
+ for(i=0; i<2; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+ /* update memories for next frame ----------------------------*/
+
+ c2->prev_model_dec = model[1];
+ c2->prev_e_dec = e[1];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[1][i];
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_encode_2400
AUTHOR......: David Rowe
DATE CREATED: 21/8/2010
- Encodes 160 speech samples (20ms of speech) into 51 bits.
+ Encodes 160 speech samples (20ms of speech) into 48 bits.
The codec2 algorithm actually operates internally on 10ms (80
sample) frames, so we run the encoding algorithm twice. On the
- first frame we just send the voicing bit. One the second frame we
+ first frame we just send the voicing bit. On the second frame we
send all model parameters.
The bit allocation is:
@@ -143,132 +441,859 @@ void codec2_destroy(void *codec2_state)
Parameter bits/frame
--------------------------------------
Harmonic magnitudes (LSPs) 36
- Low frequency LPC correction 1
- Energy 5
- Wo (fundamental frequnecy) 7
+ Joint VQ of Energy and Wo 8
Voicing (10ms update) 2
- TOTAL 51
+ Spare 2
+ TOTAL 48
\*---------------------------------------------------------------------------*/
-void codec2_encode(void *codec2_state, unsigned char * bits, short speech[])
+void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short
speech[])
{
- CODEC2 *c2;
MODEL model;
- int voiced1, voiced2;
+ float ak[LPC_ORD+1];
+ float lsps[LPC_ORD];
+ float e;
+ int WoE_index;
int lsp_indexes[LPC_ORD];
- int energy_index;
- int Wo_index;
int i;
+ int spare = 0;
unsigned int nbit = 0;
- assert(codec2_state != NULL);
- c2 = (CODEC2*)codec2_state;
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
/* first 10ms analysis frame - we just want voicing */
analyse_one_frame(c2, &model, speech);
- voiced1 = model.voiced;
+ pack(bits, &nbit, model.voiced, 1);
/* second 10ms analysis frame */
analyse_one_frame(c2, &model, &speech[N]);
- voiced2 = model.voiced;
+ pack(bits, &nbit, model.voiced, 1);
+
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ WoE_index = encode_WoE(&model, e, c2->xq_enc);
+ pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+ encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+ }
+ pack(bits, &nbit, spare, 2);
+
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_decode_2400
+ AUTHOR......: David Rowe
+ DATE CREATED: 21/8/2010
+
+ Decodes frames of 48 bits into 160 samples (20ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char
* bits)
+{
+ MODEL model[2];
+ int lsp_indexes[LPC_ORD];
+ float lsps[2][LPC_ORD];
+ int WoE_index;
+ float e[2];
+ float snr;
+ float ak[2][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ /* only need to zero these out due to (unused) snr calculation */
+
+ for(i=0; i<2; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 2 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+
+ model[1].voiced = unpack(bits, &nbit, 1);
+ WoE_index = unpack(bits, &nbit, WO_E_BITS);
+ decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+ }
+ decode_lsps_scalar(&lsps[1][0], lsp_indexes, LPC_ORD);
+ check_lsp_order(&lsps[1][0], LPC_ORD);
+ bw_expand_lsps(&lsps[1][0], LPC_ORD, 50.0, 100.0);
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo and energy are sampled every 20ms, so we interpolate just 1
+ 10ms frame between 20ms samples */
+
+ interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+ e[0] = interp_energy(c2->prev_e_dec, e[1]);
+
+ /* LSPs are sampled every 20ms so we interpolate the frame in
+ between, then recover spectral amplitudes */
+
+ interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5);
+ for(i=0; i<2; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
+
+ /* synthesise ------------------------------------------------*/
+
+ for(i=0; i<2; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+ /* update memories for next frame ----------------------------*/
+
+ c2->prev_model_dec = model[1];
+ c2->prev_e_dec = e[1];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[1][i];
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_encode_1600
+ AUTHOR......: David Rowe
+ DATE CREATED: Feb 28 2013
+
+ Encodes 320 speech samples (40ms of speech) into 64 bits.
+
+ The codec2 algorithm actually operates internally on 10ms (80
+ sample) frames, so we run the encoding algorithm 4 times:
+
+ frame 0: voicing bit
+ frame 1: voicing bit, Wo and E
+ frame 2: voicing bit
+ frame 3: voicing bit, Wo and E, scalar LSPs
+
+ The bit allocation is:
+
+ Parameter frame 2 frame 4 Total
+ -------------------------------------------------------
+ Harmonic magnitudes (LSPs) 0 36 36
+ Pitch (Wo) 7 7 14
+ Energy 5 5 10
+ Voicing (10ms update) 2 2 4
+ TOTAL 14 50 64
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short
speech[])
+{
+ MODEL model;
+ float lsps[LPC_ORD];
+ float ak[LPC_ORD+1];
+ float e;
+ int lsp_indexes[LPC_ORD];
+ int Wo_index, e_index;
+ int i;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+ /* frame 1: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, speech);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 2: - voicing, scalar Wo & E -------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[N]);
+ pack(bits, &nbit, model.voiced, 1);
Wo_index = encode_Wo(model.Wo);
- encode_amplitudes(lsp_indexes,
- &energy_index,
- &model,
- c2->Sn,
- c2->w);
- memset(bits, '\0', ((CODEC2_BITS_PER_FRAME + 7) / 8));
pack(bits, &nbit, Wo_index, WO_BITS);
- for(i=0; i<LPC_ORD; i++) {
+
+ /* need to run this just to get LPC energy */
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ e_index = encode_energy(e);
+ pack(bits, &nbit, e_index, E_BITS);
+
+ /* frame 3: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[2*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
+
+ analyse_one_frame(c2, &model, &speech[3*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ Wo_index = encode_Wo(model.Wo);
+ pack(bits, &nbit, Wo_index, WO_BITS);
+
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ e_index = encode_energy(e);
+ pack(bits, &nbit, e_index, E_BITS);
+
+ encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
}
- pack(bits, &nbit, energy_index, E_BITS);
- pack(bits, &nbit, voiced1, 1);
- pack(bits, &nbit, voiced2, 1);
- assert(nbit == CODEC2_BITS_PER_FRAME);
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: codec2_decode
+ FUNCTION....: codec2_decode_1600
AUTHOR......: David Rowe
- DATE CREATED: 21/8/2010
+ DATE CREATED: 11 May 2012
- Decodes frames of 51 bits into 160 samples (20ms) of speech.
+ Decodes frames of 64 bits into 320 samples (40ms) of speech.
\*---------------------------------------------------------------------------*/
-void codec2_decode(void *codec2_state, short speech[],
- const unsigned char * bits)
+void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char
* bits)
+{
+ MODEL model[4];
+ int lsp_indexes[LPC_ORD];
+ float lsps[4][LPC_ORD];
+ int Wo_index, e_index;
+ float e[4];
+ float snr;
+ float ak[4][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+ float weight;
+
+ assert(c2 != NULL);
+
+ /* only need to zero these out due to (unused) snr calculation */
+
+ for(i=0; i<4; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 4 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+
+ model[1].voiced = unpack(bits, &nbit, 1);
+ Wo_index = unpack(bits, &nbit, WO_BITS);
+ model[1].Wo = decode_Wo(Wo_index);
+ model[1].L = PI/model[1].Wo;
+
+ e_index = unpack(bits, &nbit, E_BITS);
+ e[1] = decode_energy(e_index);
+
+ model[2].voiced = unpack(bits, &nbit, 1);
+
+ model[3].voiced = unpack(bits, &nbit, 1);
+ Wo_index = unpack(bits, &nbit, WO_BITS);
+ model[3].Wo = decode_Wo(Wo_index);
+ model[3].L = PI/model[3].Wo;
+
+ e_index = unpack(bits, &nbit, E_BITS);
+ e[3] = decode_energy(e_index);
+
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+ }
+ decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+ check_lsp_order(&lsps[3][0], LPC_ORD);
+ bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo and energy are sampled every 20ms, so we interpolate just 1
+ 10ms frame between 20ms samples */
+
+ interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+ e[0] = interp_energy(c2->prev_e_dec, e[1]);
+ interp_Wo(&model[2], &model[1], &model[3]);
+ e[2] = interp_energy(e[1], e[3]);
+
+ /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+ between, then recover spectral amplitudes */
+
+ for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+ interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0],
weight);
+ }
+ for(i=0; i<4; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
+
+ /* synthesise ------------------------------------------------*/
+
+ for(i=0; i<4; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+ /* update memories for next frame ----------------------------*/
+
+ c2->prev_model_dec = model[3];
+ c2->prev_e_dec = e[3];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_encode_1400
+ AUTHOR......: David Rowe
+ DATE CREATED: May 11 2012
+
+ Encodes 320 speech samples (40ms of speech) into 56 bits.
+
+ The codec2 algorithm actually operates internally on 10ms (80
+ sample) frames, so we run the encoding algorithm 4 times:
+
+ frame 0: voicing bit
+ frame 1: voicing bit, joint VQ of Wo and E
+ frame 2: voicing bit
+ frame 3: voicing bit, joint VQ of Wo and E, scalar LSPs
+
+ The bit allocation is:
+
+ Parameter frame 2 frame 4 Total
+ -------------------------------------------------------
+ Harmonic magnitudes (LSPs) 0 36 36
+ Energy+Wo 8 8 16
+ Voicing (10ms update) 2 2 4
+ TOTAL 10 46 56
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short
speech[])
{
- CODEC2 *c2;
MODEL model;
- int voiced1, voiced2;
+ float lsps[LPC_ORD];
+ float ak[LPC_ORD+1];
+ float e;
int lsp_indexes[LPC_ORD];
+ int WoE_index;
+ int i;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+ /* frame 1: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, speech);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 2: - voicing, joint Wo & E -------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* need to run this just to get LPC energy */
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+
+ WoE_index = encode_WoE(&model, e, c2->xq_enc);
+ pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+ /* frame 3: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[2*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
+
+ analyse_one_frame(c2, &model, &speech[3*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ WoE_index = encode_WoE(&model, e, c2->xq_enc);
+ pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+ encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+ }
+
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_decode_1400
+ AUTHOR......: David Rowe
+ DATE CREATED: 11 May 2012
+
+ Decodes frames of 56 bits into 320 samples (40ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char
* bits)
+{
+ MODEL model[4];
+ int lsp_indexes[LPC_ORD];
+ float lsps[4][LPC_ORD];
+ int WoE_index;
+ float e[4];
+ float snr;
+ float ak[4][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+ float weight;
+
+ assert(c2 != NULL);
+
+ /* only need to zero these out due to (unused) snr calculation */
+
+ for(i=0; i<4; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 4 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+
+ model[1].voiced = unpack(bits, &nbit, 1);
+ WoE_index = unpack(bits, &nbit, WO_E_BITS);
+ decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+ model[2].voiced = unpack(bits, &nbit, 1);
+
+ model[3].voiced = unpack(bits, &nbit, 1);
+ WoE_index = unpack(bits, &nbit, WO_E_BITS);
+ decode_WoE(&model[3], &e[3], c2->xq_dec, WoE_index);
+
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+ }
+ decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+ check_lsp_order(&lsps[3][0], LPC_ORD);
+ bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo and energy are sampled every 20ms, so we interpolate just 1
+ 10ms frame between 20ms samples */
+
+ interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+ e[0] = interp_energy(c2->prev_e_dec, e[1]);
+ interp_Wo(&model[2], &model[1], &model[3]);
+ e[2] = interp_energy(e[1], e[3]);
+
+ /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+ between, then recover spectral amplitudes */
+
+ for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+ interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0],
weight);
+ }
+ for(i=0; i<4; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
+
+ /* synthesise ------------------------------------------------*/
+
+ for(i=0; i<4; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+ /* update memories for next frame ----------------------------*/
+
+ c2->prev_model_dec = model[3];
+ c2->prev_e_dec = e[3];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_encode_1300
+ AUTHOR......: David Rowe
+ DATE CREATED: March 14 2013
+
+ Encodes 320 speech samples (40ms of speech) into 52 bits.
+
+ The codec2 algorithm actually operates internally on 10ms (80
+ sample) frames, so we run the encoding algorithm 4 times:
+
+ frame 0: voicing bit
+ frame 1: voicing bit,
+ frame 2: voicing bit
+ frame 3: voicing bit, Wo and E, scalar LSPs
+
+ The bit allocation is:
+
+ Parameter frame 2 frame 4 Total
+ -------------------------------------------------------
+ Harmonic magnitudes (LSPs) 0 36 36
+ Pitch (Wo) 0 7 7
+ Energy 0 5 5
+ Voicing (10ms update) 2 2 4
+ TOTAL 2 50 52
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short
speech[])
+{
+ MODEL model;
float lsps[LPC_ORD];
- int energy_index;
- float energy;
- int Wo_index;
float ak[LPC_ORD+1];
- float ak_interp[LPC_ORD+1];
+ float e;
+ int lsp_indexes[LPC_ORD];
+ int Wo_index, e_index;
int i;
unsigned int nbit = 0;
- MODEL model_interp;
+ #ifdef TIMER
+ unsigned int quant_start;
+ #endif
+
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+ /* frame 1: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, speech);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 2: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 3: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[2*N]);
+ pack(bits, &nbit, model.voiced, 1);
- assert(codec2_state != NULL);
- c2 = (CODEC2*)codec2_state;
+ /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
- /* unpack bit stream to integer codes */
+ analyse_one_frame(c2, &model, &speech[3*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ Wo_index = encode_Wo(model.Wo);
+ pack(bits, &nbit, Wo_index, WO_BITS);
+
+ #ifdef TIMER
+ quant_start = machdep_timer_sample();
+ #endif
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ e_index = encode_energy(e);
+ pack(bits, &nbit, e_index, E_BITS);
+
+ encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+ pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+ }
+ #ifdef TIMER
+ machdep_timer_sample_and_log(quant_start, " quant/packing");
+ #endif
+
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_decode_1300
+ AUTHOR......: David Rowe
+ DATE CREATED: 11 May 2012
+
+ Decodes frames of 52 bits into 320 samples (40ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char
* bits, float ber_est)
+{
+ MODEL model[4];
+ int lsp_indexes[LPC_ORD];
+ float lsps[4][LPC_ORD];
+ int Wo_index, e_index;
+ float e[4];
+ float snr;
+ float ak[4][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+ float weight;
+ TIMER_VAR(recover_start);
+
+ assert(c2 != NULL);
+
+ /* only need to zero these out due to (unused) snr calculation */
+
+ for(i=0; i<4; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 4 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+ model[1].voiced = unpack(bits, &nbit, 1);
+ model[2].voiced = unpack(bits, &nbit, 1);
+ model[3].voiced = unpack(bits, &nbit, 1);
Wo_index = unpack(bits, &nbit, WO_BITS);
- for(i=0; i<LPC_ORD; i++) {
+ model[3].Wo = decode_Wo(Wo_index);
+ model[3].L = PI/model[3].Wo;
+
+ e_index = unpack(bits, &nbit, E_BITS);
+ e[3] = decode_energy(e_index);
+
+ for(i=0; i<LSP_SCALAR_INDEXES; i++) {
lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
}
- energy_index = unpack(bits, &nbit, E_BITS);
- voiced1 = unpack(bits, &nbit, 1);
- voiced2 = unpack(bits, &nbit, 1);
- assert(nbit == CODEC2_BITS_PER_FRAME);
+ decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+ check_lsp_order(&lsps[3][0], LPC_ORD);
+ bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+ if (ber_est > 0.15) {
+ model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced
= 0;
+ e[3] = decode_energy(10);
+ bw_expand_lsps(&lsps[3][0], LPC_ORD, 200.0, 200.0);
+ fprintf(stderr, "soft mute\n");
+ }
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo, energy, and LSPs are sampled every 40ms so we interpolate
+ the 3 frames in between */
+
+ TIMER_SAMPLE(recover_start);
+ for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+ interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0],
weight);
+ interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight);
+ e[i] = interp_energy2(c2->prev_e_dec, e[3],weight);
+ }
+
+ /* then recover spectral amplitudes */
+
+ for(i=0; i<4; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
+ TIMER_SAMPLE_AND_LOG2(recover_start, " recover");
+
+ /* synthesise ------------------------------------------------*/
+
+ for(i=0; i<4; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+ /* update memories for next frame ----------------------------*/
+
+ c2->prev_model_dec = model[3];
+ c2->prev_e_dec = e[3];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_encode_1200
+ AUTHOR......: David Rowe
+ DATE CREATED: Nov 14 2011
+
+ Encodes 320 speech samples (40ms of speech) into 48 bits.
+
+ The codec2 algorithm actually operates internally on 10ms (80
+ sample) frames, so we run the encoding algorithm four times:
+
+ frame 0: voicing bit
+ frame 1: voicing bit, joint VQ of Wo and E
+ frame 2: voicing bit
+ frame 3: voicing bit, joint VQ of Wo and E, VQ LSPs
+
+ The bit allocation is:
+
+ Parameter frame 2 frame 4 Total
+ -------------------------------------------------------
+ Harmonic magnitudes (LSPs) 0 27 27
+ Energy+Wo 8 8 16
+ Voicing (10ms update) 2 2 4
+ Spare 0 1 1
+ TOTAL 10 38 48
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short
speech[])
+{
+ MODEL model;
+ float lsps[LPC_ORD];
+ float lsps_[LPC_ORD];
+ float ak[LPC_ORD+1];
+ float e;
+ int lsp_indexes[LPC_ORD];
+ int WoE_index;
+ int i;
+ int spare = 0;
+ unsigned int nbit = 0;
+
+ assert(c2 != NULL);
+
+ memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+ /* frame 1: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, speech);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 2: - voicing, joint Wo & E -------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* need to run this just to get LPC energy */
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+
+ WoE_index = encode_WoE(&model, e, c2->xq_enc);
+ pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+ /* frame 3: - voicing ---------------------------------------------*/
+
+ analyse_one_frame(c2, &model, &speech[2*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
+
+ analyse_one_frame(c2, &model, &speech[3*N]);
+ pack(bits, &nbit, model.voiced, 1);
+
+ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+ WoE_index = encode_WoE(&model, e, c2->xq_enc);
+ pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+ encode_lsps_vq(lsp_indexes, lsps, lsps_, LPC_ORD);
+ for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
+ pack(bits, &nbit, lsp_indexes[i], lsp_pred_vq_bits(i));
+ }
+ pack(bits, &nbit, spare, 1);
+
+ assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: codec2_decode_1200
+ AUTHOR......: David Rowe
+ DATE CREATED: 14 Feb 2012
+
+ Decodes frames of 48 bits into 320 samples (40ms) of speech.
- /* decode integer codes to model parameters */
+\*---------------------------------------------------------------------------*/
- model.Wo = decode_Wo(Wo_index);
- model.L = PI/model.Wo;
- memset(&model.A, 0, (model.L+1)*sizeof(model.A[0]));
- decode_amplitudes(&model,
- ak,
- lsp_indexes,
- energy_index,
- lsps,
- &energy);
+void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char
* bits)
+{
+ MODEL model[4];
+ int lsp_indexes[LPC_ORD];
+ float lsps[4][LPC_ORD];
+ int WoE_index;
+ float e[4];
+ float snr;
+ float ak[4][LPC_ORD+1];
+ int i,j;
+ unsigned int nbit = 0;
+ float weight;
- model.voiced = voiced2;
- model_interp.voiced = voiced1;
- model_interp.Wo = P_MAX/2;
- memset(&model_interp.A, 0, MAX_AMP*sizeof(model_interp.A[0]));
+ assert(c2 != NULL);
- /* interpolate middle frame's model parameters for adjacent frames */
+ /* only need to zero these out due to (unused) snr calculation */
- interpolate_lsp(&model_interp, &c2->prev_model, &model,
- c2->prev_lsps, c2->prev_energy, lsps, energy, ak_interp);
- apply_lpc_correction(&model_interp);
+ for(i=0; i<4; i++)
+ for(j=1; j<=MAX_AMP; j++)
+ model[i].A[j] = 0.0;
+
+ /* unpack bits from channel ------------------------------------*/
+
+ /* this will partially fill the model params for the 4 x 10ms
+ frames */
+
+ model[0].voiced = unpack(bits, &nbit, 1);
+
+ model[1].voiced = unpack(bits, &nbit, 1);
+ WoE_index = unpack(bits, &nbit, WO_E_BITS);
+ decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+ model[2].voiced = unpack(bits, &nbit, 1);
+
+ model[3].voiced = unpack(bits, &nbit, 1);
+ WoE_index = unpack(bits, &nbit, WO_E_BITS);
+ decode_WoE(&model[3], &e[3], c2->xq_dec, WoE_index);
+
+ for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
+ lsp_indexes[i] = unpack(bits, &nbit, lsp_pred_vq_bits(i));
+ }
+ decode_lsps_vq(lsp_indexes, &lsps[3][0], LPC_ORD);
+ check_lsp_order(&lsps[3][0], LPC_ORD);
+ bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+ /* interpolate ------------------------------------------------*/
+
+ /* Wo and energy are sampled every 20ms, so we interpolate just 1
+ 10ms frame between 20ms samples */
+
+ interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+ e[0] = interp_energy(c2->prev_e_dec, e[1]);
+ interp_Wo(&model[2], &model[1], &model[3]);
+ e[2] = interp_energy(e[1], e[3]);
+
+ /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+ between, then recover spectral amplitudes */
+
+ for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+ interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0],
weight);
+ }
+ for(i=0; i<4; i++) {
+ lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+ aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr,
0, 0,
+ c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+ apply_lpc_correction(&model[i]);
+ }
- /* synthesis two 10ms frames */
+ /* synthesise ------------------------------------------------*/
- synthesise_one_frame(c2, speech, &model_interp, ak_interp);
- synthesise_one_frame(c2, &speech[N], &model, ak);
+ for(i=0; i<4; i++)
+ synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
- /* update memories (decode states) for next time */
+ /* update memories for next frame ----------------------------*/
- memcpy(&c2->prev_model, &model, sizeof(MODEL));
- memcpy(c2->prev_lsps, lsps, sizeof(lsps));
- c2->prev_energy = energy;
+ c2->prev_model_dec = model[3];
+ c2->prev_e_dec = e[3];
+ for(i=0; i<LPC_ORD; i++)
+ c2->prev_lsps_dec[i] = lsps[3][i];
}
+
/*---------------------------------------------------------------------------*\
FUNCTION....: synthesise_one_frame()
@@ -279,13 +1304,30 @@ void codec2_decode(void *codec2_state, short speech[],
\*---------------------------------------------------------------------------*/
-void synthesise_one_frame(CODEC2 *c2, short speech[], MODEL *model, float ak[])
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
float ak[])
{
int i;
+ TIMER_VAR(phase_start, pf_start, synth_start);
+
+ #ifdef DUMP
+ dump_quantised_model(model);
+ #endif
+
+ TIMER_SAMPLE(phase_start);
+
+ phase_synth_zero_order(c2->fft_fwd_cfg, model, ak, &c2->ex_phase, LPC_ORD);
+
+ TIMER_SAMPLE_AND_LOG(pf_start,phase_start, " phase_synth");
- phase_synth_zero_order(model, ak, &c2->ex_phase, LPC_ORD);
postfilter(model, &c2->bg_est);
- synthesise(c2->Sn_, model, c2->Pn, 1);
+
+ TIMER_SAMPLE_AND_LOG(synth_start, pf_start, " postfilter");
+
+ synthesise(c2->fft_inv_cfg, c2->Sn_, model, c2->Pn, 1);
+
+ TIMER_SAMPLE_AND_LOG2(synth_start, " synth");
+
+ ear_protection(c2->Sn_, N);
for(i=0; i<N; i++) {
if (c2->Sn_[i] > 32767.0)
@@ -309,13 +1351,14 @@ void synthesise_one_frame(CODEC2 *c2, short speech[],
MODEL *model, float ak[])
\*---------------------------------------------------------------------------*/
-void analyse_one_frame(CODEC2 *c2, MODEL *model, short speech[])
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[])
{
COMP Sw[FFT_ENC];
COMP Sw_[FFT_ENC];
COMP Ew[FFT_ENC];
float pitch;
int i;
+ TIMER_VAR(dft_start, nlp_start, model_start, two_stage, estamps);
/* Read input speech */
@@ -324,19 +1367,155 @@ void analyse_one_frame(CODEC2 *c2, MODEL *model, short
speech[])
for(i=0; i<N; i++)
c2->Sn[i+M-N] = speech[i];
- dft_speech(Sw, c2->Sn, c2->w);
+ TIMER_SAMPLE(dft_start);
+ dft_speech(c2->fft_fwd_cfg, Sw, c2->Sn, c2->w);
+ TIMER_SAMPLE_AND_LOG(nlp_start, dft_start, " dft_speech");
/* Estimate pitch */
- nlp(c2->nlp,c2->Sn,N,M,P_MIN,P_MAX,&pitch,Sw,&c2->prev_Wo);
+ nlp(c2->nlp,c2->Sn,N,P_MIN,P_MAX,&pitch,Sw, c2->W, &c2->prev_Wo_enc);
+ TIMER_SAMPLE_AND_LOG(model_start, nlp_start, " nlp");
+
model->Wo = TWO_PI/pitch;
model->L = PI/model->Wo;
/* estimate model parameters */
two_stage_pitch_refinement(model, Sw);
- estimate_amplitudes(model, Sw, c2->W);
- est_voicing_mbe(model, Sw, c2->W, Sw_, Ew, c2->prev_Wo);
+ TIMER_SAMPLE_AND_LOG(two_stage, model_start, " two_stage");
+ estimate_amplitudes(model, Sw, c2->W, 0);
+ TIMER_SAMPLE_AND_LOG(estamps, two_stage, " est_amps");
+ est_voicing_mbe(model, Sw, c2->W, Sw_, Ew, c2->prev_Wo_enc);
+ c2->prev_Wo_enc = model->Wo;
+ TIMER_SAMPLE_AND_LOG2(estamps, " est_voicing");
+ #ifdef DUMP
+ dump_model(model);
+ #endif
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: ear_protection()
+ AUTHOR......: David Rowe
+ DATE CREATED: Nov 7 2012
+
+ Limits output level to protect ears when there are bit errors or the input
+ is overdriven. This doesn't correct or mask bit erros, just reduces the
+ worst of their damage.
+
+\*---------------------------------------------------------------------------*/
+
+static void ear_protection(float in_out[], int n) {
+ float max_sample, over, gain;
+ int i;
+
+ /* find maximum sample in frame */
+
+ max_sample = 0.0;
+ for(i=0; i<n; i++)
+ if (in_out[i] > max_sample)
+ max_sample = in_out[i];
+
+ /* determine how far above set point */
+
+ over = max_sample/30000.0;
+
+ /* If we are x dB over set point we reduce level by 2x dB, this
+ attenuates major excursions in amplitude (likely to be caused
+ by bit errors) more than smaller ones */
+
+ if (over > 1.0) {
+ gain = 1.0/(over*over);
+ //fprintf(stderr, "gain: %f\n", gain);
+ for(i=0; i<n; i++)
+ in_out[i] *= gain;
+ }
+}
+
+void CODEC2_WIN32SUPPORT codec2_set_lpc_post_filter(struct CODEC2 *c2, int
enable, int bass_boost, float beta, float gamma)
+{
+ assert((beta >= 0.0) && (beta <= 1.0));
+ assert((gamma >= 0.0) && (gamma <= 1.0));
+ c2->lpc_pf = enable;
+ c2->bass_boost = bass_boost;
+ c2->beta = beta;
+ c2->gamma = gamma;
+}
+
+/*
+ Allows optional stealing of one of the voicing bits for use as a
+ spare bit, only 1300 & 1400 & 1600 bit/s supported for now.
+ Experimental method of sending voice/data frames for FreeDV.
+*/
+
+int CODEC2_WIN32SUPPORT codec2_get_spare_bit_index(struct CODEC2 *c2)
+{
+ assert(c2 != NULL);
+
+ switch(c2->mode) {
+ case CODEC2_MODE_1300:
+ return 2; // bit 2 (3th bit) is v2 (third voicing bit)
+ break;
+ case CODEC2_MODE_1400:
+ return 10; // bit 10 (11th bit) is v2 (third voicing bit)
+ break;
+ case CODEC2_MODE_1600:
+ return 15; // bit 15 (16th bit) is v2 (third voicing bit)
+ break;
+ }
+
+ return -1;
+}
+
+/*
+ Reconstructs the spare voicing bit. Note works on unpacked bits
+ for convenience.
+*/
+
+int CODEC2_WIN32SUPPORT codec2_rebuild_spare_bit(struct CODEC2 *c2, int
unpacked_bits[])
+{
+ int v1,v3;
+
+ assert(c2 != NULL);
+
+ v1 = unpacked_bits[1];
+
+ switch(c2->mode) {
+ case CODEC2_MODE_1300:
+
+ v3 = unpacked_bits[1+1+1];
+
+ /* if either adjacent frame is voiced, make this one voiced */
+
+ unpacked_bits[2] = (v1 || v3);
+
+ return 0;
+
+ break;
+
+ case CODEC2_MODE_1400:
+
+ v3 = unpacked_bits[1+1+8+1];
+
+ /* if either adjacent frame is voiced, make this one voiced */
+
+ unpacked_bits[10] = (v1 || v3);
+
+ return 0;
+
+ break;
+
+ case CODEC2_MODE_1600:
+ v3 = unpacked_bits[1+1+8+5+1];
+
+ /* if either adjacent frame is voiced, make this one voiced */
+
+ unpacked_bits[15] = (v1 || v3);
+
+ return 0;
+
+ break;
+ }
- c2->prev_Wo = model->Wo;
+ return -1;
}
diff --git a/gr-vocoder/lib/codec2/codec2.h b/gr-vocoder/lib/codec2/codec2.h
index f812a05..2f0c2b1 100644
--- a/gr-vocoder/lib/codec2/codec2.h
+++ b/gr-vocoder/lib/codec2/codec2.h
@@ -2,10 +2,10 @@
FILE........: codec2.h
AUTHOR......: David Rowe
- DATE CREATED: 21/8/2010
+ DATE CREATED: 21 August 2010
- Codec2 fully quantised encoder and decoder functions. If you want use
- codec2, these are the functions you need to call.
+ Codec 2 fully quantised encoder and decoder functions. If you want use
+ Codec 2, these are the functions you need to call.
\*---------------------------------------------------------------------------*/
@@ -26,17 +26,49 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
#ifndef __CODEC2__
#define __CODEC2__
-#define CODEC2_SAMPLES_PER_FRAME 160
-#define CODEC2_BITS_PER_FRAME 50
-#define CODEC2_BYTES_PER_FRAME ((CODEC2_BITS_PER_FRAME + 7) / 8) // == 8
bytes when packing the 50 bits
+/* set up the calling convention for DLL function import/export for
+ WIN32 cross compiling */
+
+#ifdef __CODEC2_WIN32__
+#ifdef __CODEC2_BUILDING_DLL__
+#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
+#else
+#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
+#endif
+#else
+#define CODEC2_WIN32SUPPORT
+#endif
+
+#define CODEC2_MODE_3200 0
+#define CODEC2_MODE_2400 1
+#define CODEC2_MODE_1600 2
+#define CODEC2_MODE_1400 3
+#define CODEC2_MODE_1300 4
+#define CODEC2_MODE_1200 5
-void *codec2_create();
-void codec2_destroy(void *codec2_state);
-void codec2_encode(void *codec2_state, unsigned char * bits, short
speech_in[]);
-void codec2_decode(void *codec2_state, short speech_out[],
- const unsigned char * bits);
+struct CODEC2;
+
+struct CODEC2 * CODEC2_WIN32SUPPORT codec2_create(int mode);
+void CODEC2_WIN32SUPPORT codec2_destroy(struct CODEC2 *codec2_state);
+void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *codec2_state, unsigned
char * bits, short speech_in[]);
+ void CODEC2_WIN32SUPPORT codec2_decode(struct CODEC2 *codec2_state,
short speech_out[], const unsigned char *bits, float ber_est);
+int CODEC2_WIN32SUPPORT codec2_samples_per_frame(struct CODEC2 *codec2_state);
+int CODEC2_WIN32SUPPORT codec2_bits_per_frame(struct CODEC2 *codec2_state);
+
+void CODEC2_WIN32SUPPORT codec2_set_lpc_post_filter(struct CODEC2
*codec2_state, int enable, int bass_boost, float beta, float gamma);
+int CODEC2_WIN32SUPPORT codec2_get_spare_bit_index(struct CODEC2
*codec2_state);
+int CODEC2_WIN32SUPPORT codec2_rebuild_spare_bit(struct CODEC2 *codec2_state,
int unpacked_bits[]);
#endif
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/gr-vocoder/lib/codec2/codec2_fdmdv.h
b/gr-vocoder/lib/codec2/codec2_fdmdv.h
new file mode 100644
index 0000000..b7da96f
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codec2_fdmdv.h
@@ -0,0 +1,124 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: codec2_fdmdv.h
+ AUTHOR......: David Rowe
+ DATE CREATED: April 14 2012
+
+ A 1400 bit/s (nominal) Frequency Division Multiplexed Digital Voice
+ (FDMDV) modem. Used for digital audio over HF SSB. See
+ README_fdmdv.txt for more information, and fdmdv_mod.c and
+ fdmdv_demod.c for example usage.
+
+ The name codec2_fdmdv.h is used to make it unique when "make
+ installed".
+
+ References:
+
+ [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __FDMDV__
+#define __FDMDV__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* set up the calling convention for DLL function import/export for
+ WIN32 cross compiling */
+
+#ifdef __CODEC2_WIN32__
+#ifdef __CODEC2_BUILDING_DLL__
+#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
+#else
+#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
+#endif
+#else
+#define CODEC2_WIN32SUPPORT
+#endif
+
+#include "comp.h"
+
+#define FDMDV_NC 14 /* default number of data carriers
*/
+#define FDMDV_NC_MAX 20 /* maximum number of data carriers
*/
+#define FDMDV_BITS_PER_FRAME 28 /* 20ms frames, for nominal 1400
bit/s */
+#define FDMDV_NOM_SAMPLES_PER_FRAME 160 /* modulator output samples/frame
and nominal demod samples/frame */
+ /* at 8000 Hz sample rate
*/
+#define FDMDV_MAX_SAMPLES_PER_FRAME 200 /* max demod samples/frame, use this
to allocate storage */
+#define FDMDV_SCALE 1000 /* suggested scaling for 16 bit
shorts */
+#define FDMDV_FCENTRE 1500 /* Centre frequency, Nc/2 carriers
below this, Nc/2 carriers above (Hz) */
+
+/* 8 to 48 kHz sample rate conversion */
+
+#define FDMDV_OS 6 /* oversampling rate */
+#define FDMDV_OS_TAPS 48 /* number of OS filter taps */
+
+/* FFT points */
+
+#define FDMDV_NSPEC 512
+#define FDMDV_MAX_F_HZ 4000
+
+/* FDMDV states and stats structures */
+
+struct FDMDV;
+
+struct FDMDV_STATS {
+ int Nc;
+ float snr_est; /* estimated SNR of rx signal in dB (3
kHz noise BW) */
+ COMP rx_symbols[FDMDV_NC_MAX+1]; /* latest received symbols, for scatter
plot */
+ int sync; /* demod sync state
*/
+ float foff; /* estimated freq offset in Hz
*/
+ float rx_timing; /* estimated optimum timing offset in
samples */
+ float clock_offset; /* Estimated tx/rx sample clock offset
in ppm */
+};
+
+struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(int Nc);
+void CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv_state);
+void CODEC2_WIN32SUPPORT fdmdv_use_old_qpsk_mapping(struct FDMDV
*fdmdv_state);
+int CODEC2_WIN32SUPPORT fdmdv_bits_per_frame(struct FDMDV
*fdmdv_state);
+float CODEC2_WIN32SUPPORT fdmdv_get_fsep(struct FDMDV *fdmdv_state);
+void CODEC2_WIN32SUPPORT fdmdv_set_fsep(struct FDMDV *fdmdv_state,
float fsep);
+
+void CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv_state, COMP
tx_fdm[], int tx_bits[], int *sync_bit);
+void CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv_state, int
rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin);
+
+void CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV
*fdmdv_state, int tx_bits[]);
+int CODEC2_WIN32SUPPORT fdmdv_error_pattern_size(struct FDMDV
*fdmdv_state);
+void CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int
*sync, short error_pattern[], int *bit_errors, int *ntest_bits, int rx_bits[]);
+
+void CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV
*fdmdv_state, struct FDMDV_STATS *fdmdv_stats);
+void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV
*fdmdv_state, float mag_dB[], COMP rx_fdm[], int nin);
+
+void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[],
int n);
+void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[],
int n);
+
+void CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP
rx_fdm[], float foff, COMP *foff_rect, COMP *foff_phase_rect, int nin);
+
+/* debug/development function(s) */
+
+void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/gr-vocoder/lib/codec2/nlp.h b/gr-vocoder/lib/codec2/codec2_fifo.h
similarity index 57%
copy from gr-vocoder/lib/codec2/nlp.h
copy to gr-vocoder/lib/codec2/codec2_fifo.h
index 5e11f11..9140fd7 100644
--- a/gr-vocoder/lib/codec2/nlp.h
+++ b/gr-vocoder/lib/codec2/codec2_fifo.h
@@ -1,15 +1,19 @@
/*---------------------------------------------------------------------------*\
- FILE........: nlp.c
+ FILE........: codec2_fifo.h
AUTHOR......: David Rowe
- DATE CREATED: 23/3/93
+ DATE CREATED: Oct 15 2012
- Non Linear Pitch (NLP) estimation functions.
+ A FIFO design useful in gluing the FDMDV modem and codec together in
+ integrated applications.
+
+ The name codec2_fifo.h is used to make it unique when "make
+ installed".
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2009 David Rowe
+ Copyright (C) 2012 David Rowe
All rights reserved.
@@ -25,15 +29,23 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __NLP__
-#define __NLP__
+#ifndef __FIFO__
+#define __FIFO__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
-#include "comp.h"
+struct FIFO;
-void *nlp_create();
-void nlp_destroy(void *nlp_state);
-float nlp(void *nlp_state, float Sn[], int n, int m, int pmin, int pmax,
- float *pitch, COMP Sw[], float *prev_Wo);
-float test_candidate_mbe(COMP Sw[], float f0, COMP Sw_[]);
+struct FIFO *fifo_create(int nshort);
+void fifo_destroy(struct FIFO *fifo);
+int fifo_write(struct FIFO *fifo, short data[], int n);
+int fifo_read(struct FIFO *fifo, short data[], int n);
+int fifo_used(struct FIFO *fifo);
+
+#ifdef __cplusplus
+}
+#endif
#endif
diff --git a/gr-vocoder/lib/codec2/codec2_internal.h
b/gr-vocoder/lib/codec2/codec2_internal.h
index 3aa5300..246d1ae 100644
--- a/gr-vocoder/lib/codec2/codec2_internal.h
+++ b/gr-vocoder/lib/codec2/codec2_internal.h
@@ -2,15 +2,15 @@
FILE........: codec2_internal.h
AUTHOR......: David Rowe
- DATE CREATED: 22 March 2011
+ DATE CREATED: April 16 2012
- Some internal structures and states broken out here as they are useful for
- testing and development.
+ Header file for Codec2 internal states, exposed via this header
+ file to assist in testing.
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2011 David Rowe
+ Copyright (C) 2012 David Rowe
All rights reserved.
@@ -27,37 +27,36 @@
*/
#ifndef __CODEC2_INTERNAL__
-#define __CODEC2_INTERNAL__
-
-/*---------------------------------------------------------------------------*\
-
- STATES
-
-\*---------------------------------------------------------------------------*/
-
-typedef struct {
- float w[M]; /* time domain hamming window */
- COMP W[FFT_ENC]; /* DFT of w[] */
- float Pn[2*N]; /* trapezoidal synthesis window */
- float Sn[M]; /* input speech */
- float hpf_states[2]; /* high pass filter states */
- void *nlp; /* pitch predictor states */
- float Sn_[2*N]; /* synthesised output speech */
- float ex_phase; /* excitation model phase track */
- float bg_est; /* background noise estimate for post filter */
- float prev_Wo; /* previous frame's pitch estimate */
- MODEL prev_model; /* previous frame's model parameters */
- float prev_lsps[LPC_ORD]; /* previous frame's LSPs */
- float prev_energy; /* previous frame's LPC energy */
-} CODEC2;
-
-/*---------------------------------------------------------------------------*\
-
- FUNCTION HEADERS
-
-\*---------------------------------------------------------------------------*/
-
-void analyse_one_frame(CODEC2 *c2, MODEL *model, short speech[]);
-void synthesise_one_frame(CODEC2 *c2, short speech[], MODEL *model,float ak[]);
+#define __CODEC2_INTERNAL__
+
+struct CODEC2 {
+ int mode;
+ kiss_fft_cfg fft_fwd_cfg; /* forward FFT config
*/
+ float w[M]; /* time domain hamming
window */
+ COMP W[FFT_ENC]; /* DFT of w[]
*/
+ float Pn[2*N]; /* trapezoidal synthesis window
*/
+ float Sn[M]; /* input speech
*/
+ float hpf_states[2]; /* high pass filter states
*/
+ void *nlp; /* pitch predictor states
*/
+
+ kiss_fft_cfg fft_inv_cfg; /* inverse FFT config
*/
+ float Sn_[2*N]; /* synthesised output speech
*/
+ float ex_phase; /* excitation model phase track
*/
+ float bg_est; /* background noise estimate for
post filter */
+ float prev_Wo_enc; /* previous frame's pitch estimate
*/
+ MODEL prev_model_dec; /* previous frame's model
parameters */
+ float prev_lsps_dec[LPC_ORD]; /* previous frame's LSPs
*/
+ float prev_e_dec; /* previous frame's LPC energy
*/
+
+ int lpc_pf; /* LPC post filter on
*/
+ int bass_boost; /* LPC post filter bass boost
*/
+ float beta; /* LPC post filter parameters
*/
+ float gamma;
+
+ float xq_enc[2]; /* joint pitch and energy VQ states
*/
+ float xq_dec[2];
+
+ int smoothing; /* enable smoothing for channels
with errors */
+};
#endif
diff --git a/gr-vocoder/lib/codec2/defines.h b/gr-vocoder/lib/codec2/defines.h
index 75064fa..4b81357 100644
--- a/gr-vocoder/lib/codec2/defines.h
+++ b/gr-vocoder/lib/codec2/defines.h
@@ -68,8 +68,8 @@
typedef struct {
float Wo; /* fundamental frequency estimate in radians */
int L; /* number of harmonics */
- float A[MAX_AMP]; /* amplitiude of each harmonic */
- float phi[MAX_AMP]; /* phase of each harmonic */
+ float A[MAX_AMP+1]; /* amplitiude of each harmonic */
+ float phi[MAX_AMP+1]; /* phase of each harmonic */
int voiced; /* non-zero if this frame is voiced */
} MODEL;
@@ -81,8 +81,14 @@ struct lsp_codebook {
int m; /* elements in codebook */
const float * cb; /* The elements */
};
+
extern const struct lsp_codebook lsp_cb[];
extern const struct lsp_codebook lsp_cbd[];
-extern const struct lsp_codebook lsp_cbdvq[];
+extern const struct lsp_codebook lsp_cbvq[];
+extern const struct lsp_codebook lsp_cbjnd[];
+extern const struct lsp_codebook lsp_cbdt[];
+extern const struct lsp_codebook lsp_cbjvm[];
+extern const struct lsp_codebook lsp_cbvqanssi[];
+extern const struct lsp_codebook ge_cb[];
#endif
diff --git a/gr-vocoder/lib/codec2/dump.c b/gr-vocoder/lib/codec2/dump.c
index 1dc34c8..cc935d7 100644
--- a/gr-vocoder/lib/codec2/dump.c
+++ b/gr-vocoder/lib/codec2/dump.c
@@ -32,6 +32,13 @@
#include <string.h>
#include <math.h>
+#ifdef __EMBEDDED__
+#include "gdb_stdio.h"
+#define fprintf gdb_stdio_fprintf
+#define fopen gdb_stdio_fopen
+#define fclose gdb_stdio_fclose
+#endif
+
#ifdef DUMP
static int dumpon = 0;
@@ -41,8 +48,12 @@ static FILE *few = NULL;
static FILE *fsw_ = NULL;
static FILE *fmodel = NULL;
static FILE *fqmodel = NULL;
+static FILE *fpwb = NULL;
static FILE *fpw = NULL;
+static FILE *frw = NULL;
static FILE *flsp = NULL;
+static FILE *fweights = NULL;
+static FILE *flsp_ = NULL;
static FILE *fphase = NULL;
static FILE *fphase_ = NULL;
static FILE *ffw = NULL;
@@ -50,11 +61,13 @@ static FILE *fe = NULL;
static FILE *fsq = NULL;
static FILE *fdec = NULL;
static FILE *fsnr = NULL;
+static FILE *flpcsnr = NULL;
static FILE *fak = NULL;
+static FILE *fak_ = NULL;
static FILE *fbg = NULL;
static FILE *fE = NULL;
static FILE *frk = NULL;
-static FILE *fres = NULL;
+static FILE *fhephase = NULL;
static char prefix[MAX_STR];
@@ -76,10 +89,18 @@ void dump_off(){
fclose(fmodel);
if (fqmodel != NULL)
fclose(fqmodel);
+ if (fpwb != NULL)
+ fclose(fpwb);
if (fpw != NULL)
fclose(fpw);
+ if (frw != NULL)
+ fclose(frw);
if (flsp != NULL)
fclose(flsp);
+ if (fweights != NULL)
+ fclose(fweights);
+ if (flsp_ != NULL)
+ fclose(flsp_);
if (fphase != NULL)
fclose(fphase);
if (fphase_ != NULL)
@@ -94,16 +115,20 @@ void dump_off(){
fclose(fdec);
if (fsnr != NULL)
fclose(fsnr);
+ if (flpcsnr != NULL)
+ fclose(flpcsnr);
if (fak != NULL)
fclose(fak);
+ if (fak_ != NULL)
+ fclose(fak_);
if (fbg != NULL)
fclose(fbg);
if (fE != NULL)
fclose(fE);
if (frk != NULL)
fclose(frk);
- if (fres != NULL)
- fclose(fres);
+ if (fhephase != NULL)
+ fclose(fhephase);
}
void dump_Sn(float Sn[]) {
@@ -186,6 +211,7 @@ void dump_Ew(COMP Ew[]) {
void dump_model(MODEL *model) {
int l;
char s[MAX_STR];
+ char line[2048];
if (!dumpon) return;
@@ -195,18 +221,25 @@ void dump_model(MODEL *model) {
assert(fmodel != NULL);
}
- fprintf(fmodel,"%f\t%d\t", model->Wo, model->L);
- for(l=1; l<=model->L; l++)
- fprintf(fmodel,"%f\t",model->A[l]);
- for(l=model->L+1; l<MAX_AMP; l++)
- fprintf(fmodel,"0.0\t");
- fprintf(fmodel,"%d\t",model->voiced);
- fprintf(fmodel,"\n");
+ sprintf(line,"%12f %12d ", model->Wo, model->L);
+ for(l=1; l<=model->L; l++) {
+ sprintf(s,"%12f ",model->A[l]);
+ strcat(line, s);
+ }
+ for(l=model->L+1; l<=MAX_AMP; l++) {
+ sprintf(s,"%12f ", 0.0);
+ strcat(line,s);
+ }
+
+ sprintf(s,"%d\n",model->voiced);
+ strcat(line,s);
+ fprintf(fmodel,"%s",line);
}
void dump_quantised_model(MODEL *model) {
int l;
char s[MAX_STR];
+ char line[2048];
if (!dumpon) return;
@@ -216,32 +249,19 @@ void dump_quantised_model(MODEL *model) {
assert(fqmodel != NULL);
}
- fprintf(fqmodel,"%f\t%d\t", model->Wo, model->L);
- for(l=1; l<=model->L; l++)
- fprintf(fqmodel,"%f\t",model->A[l]);
- for(l=model->L+1; l<MAX_AMP; l++)
- fprintf(fqmodel,"0.0\t");
- fprintf(fqmodel,"\n");
-}
-
-void dump_resample(float w[], float A[], int n) {
- int l;
- char s[MAX_STR];
-
- if (!dumpon) return;
-
- if (fres == NULL) {
- sprintf(s,"%s_res.txt", prefix);
- fres = fopen(s, "wt");
- assert(fres != NULL);
+ sprintf(line,"%12f %12d ", model->Wo, model->L);
+ for(l=1; l<=model->L; l++) {
+ sprintf(s,"%12f ",model->A[l]);
+ strcat(line, s);
+ }
+ for(l=model->L+1; l<=MAX_AMP; l++) {
+ sprintf(s,"%12f ", 0.0);
+ strcat(line, s);
}
- fprintf(fres,"%d\t",n);
- for(l=0; l<n; l++)
- fprintf(fres,"%f\t",w[l]);
- for(l=0; l<n; l++)
- fprintf(fres,"%f\t",A[l]);
- fprintf(fres,"\n");
+ sprintf(s,"%d\n",model->voiced);
+ strcat(line, s);
+ fprintf(fqmodel, "%s", line);
}
void dump_phase(float phase[], int L) {
@@ -258,7 +278,7 @@ void dump_phase(float phase[], int L) {
for(l=1; l<=L; l++)
fprintf(fphase,"%f\t",phase[l]);
- for(l=L+1; l<MAX_AMP; l++)
+ for(l=L+1; l<=MAX_AMP; l++)
fprintf(fphase,"%f\t",0.0);
fprintf(fphase,"\n");
}
@@ -282,6 +302,25 @@ void dump_phase_(float phase_[], int L) {
fprintf(fphase_,"\n");
}
+
+void dump_hephase(int ind[], int dim) {
+ int m;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (fhephase == NULL) {
+ sprintf(s,"%s_hephase.txt", prefix);
+ fhephase = fopen(s, "wt");
+ assert(fhephase != NULL);
+ }
+
+ for(m=0; m<dim; m++)
+ fprintf(fhephase,"%d\t",ind[m]);
+ fprintf(fhephase,"\n");
+}
+
+
void dump_snr(float snr) {
char s[MAX_STR];
@@ -296,6 +335,39 @@ void dump_snr(float snr) {
fprintf(fsnr,"%f\n",snr);
}
+void dump_lpc_snr(float snr) {
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (flpcsnr == NULL) {
+ sprintf(s,"%s_lpc_snr.txt", prefix);
+ flpcsnr = fopen(s, "wt");
+ assert(flpcsnr != NULL);
+ }
+
+ fprintf(flpcsnr,"%f\n",snr);
+}
+
+/* Pw "before" post filter so we can plot before and after */
+
+void dump_Pwb(COMP Pwb[]) {
+ int i;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (fpwb == NULL) {
+ sprintf(s,"%s_pwb.txt", prefix);
+ fpwb = fopen(s, "wt");
+ assert(fpwb != NULL);
+ }
+
+ for(i=0; i<FFT_ENC/2; i++)
+ fprintf(fpwb,"%f\t",Pwb[i].real);
+ fprintf(fpwb,"\n");
+}
+
void dump_Pw(COMP Pw[]) {
int i;
char s[MAX_STR];
@@ -308,11 +380,45 @@ void dump_Pw(COMP Pw[]) {
assert(fpw != NULL);
}
- for(i=0; i<FFT_DEC/2; i++)
+ for(i=0; i<FFT_ENC/2; i++)
fprintf(fpw,"%f\t",Pw[i].real);
fprintf(fpw,"\n");
}
+void dump_Rw(float Rw[]) {
+ int i;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (frw == NULL) {
+ sprintf(s,"%s_rw.txt", prefix);
+ frw = fopen(s, "wt");
+ assert(frw != NULL);
+ }
+
+ for(i=0; i<FFT_ENC/2; i++)
+ fprintf(frw,"%f\t",Rw[i]);
+ fprintf(frw,"\n");
+}
+
+void dump_weights(float w[], int order) {
+ int i;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (fweights == NULL) {
+ sprintf(s,"%s_weights.txt", prefix);
+ fweights = fopen(s, "wt");
+ assert(fweights != NULL);
+ }
+
+ for(i=0; i<order; i++)
+ fprintf(fweights,"%f\t", w[i]);
+ fprintf(fweights,"\n");
+}
+
void dump_lsp(float lsp[]) {
int i;
char s[MAX_STR];
@@ -330,6 +436,23 @@ void dump_lsp(float lsp[]) {
fprintf(flsp,"\n");
}
+void dump_lsp_(float lsp_[]) {
+ int i;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (flsp_ == NULL) {
+ sprintf(s,"%s_lsp_.txt", prefix);
+ flsp_ = fopen(s, "wt");
+ assert(flsp_ != NULL);
+ }
+
+ for(i=0; i<10; i++)
+ fprintf(flsp_,"%f\t",lsp_[i]);
+ fprintf(flsp_,"\n");
+}
+
void dump_ak(float ak[], int order) {
int i;
char s[MAX_STR];
@@ -347,6 +470,23 @@ void dump_ak(float ak[], int order) {
fprintf(fak,"\n");
}
+void dump_ak_(float ak_[], int order) {
+ int i;
+ char s[MAX_STR];
+
+ if (!dumpon) return;
+
+ if (fak_ == NULL) {
+ sprintf(s,"%s_ak_.txt", prefix);
+ fak_ = fopen(s, "wt");
+ assert(fak_ != NULL);
+ }
+
+ for(i=0; i<=order; i++)
+ fprintf(fak_,"%f\t",ak_[i]);
+ fprintf(fak_,"\n");
+}
+
void dump_Fw(COMP Fw[]) {
int i;
char s[MAX_STR];
diff --git a/gr-vocoder/lib/codec2/dump.h b/gr-vocoder/lib/codec2/dump.h
index 4b92d00..a61fdaa 100644
--- a/gr-vocoder/lib/codec2/dump.h
+++ b/gr-vocoder/lib/codec2/dump.h
@@ -26,7 +26,10 @@
#ifndef __DUMP__
#define __DUMP__
+#include "defines.h"
#include "comp.h"
+#include "kiss_fft.h"
+#include "codec2_internal.h"
void dump_on(char filename_prefix[]);
void dump_off();
@@ -40,17 +43,23 @@ void dump_Ew(COMP Ew[]);
void dump_model(MODEL *m);
void dump_quantised_model(MODEL *m);
+void dump_Pwn(COMP Pw[]);
void dump_Pw(COMP Pw[]);
+void dump_Rw(float Rw[]);
void dump_lsp(float lsp[]);
+void dump_weights(float w[], int ndim);
+void dump_lsp_(float lsp_[]);
void dump_ak(float ak[], int order);
+void dump_ak_(float ak[], int order);
void dump_E(float E);
-void dump_resample(float w[], float A[], int n);
+void dump_lpc_snr(float snr);
/* phase modelling */
void dump_snr(float snr);
void dump_phase(float phase[], int L);
void dump_phase_(float phase[], int L);
+void dump_hephase(int ind[], int dim);
/* NLP states */
@@ -63,5 +72,6 @@ void dump_Rk(float Rk[]);
/* post filter */
void dump_bg(float e, float bg_est, float percent_uv);
+void dump_Pwb(COMP Pwb[]);
#endif
diff --git a/gr-vocoder/lib/codec2/fdmdv.c b/gr-vocoder/lib/codec2/fdmdv.c
new file mode 100644
index 0000000..6af1cf4
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fdmdv.c
@@ -0,0 +1,1569 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: fdmdv.c
+ AUTHOR......: David Rowe
+ DATE CREATED: April 14 2012
+
+ Functions that implement the FDMDV modem.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*---------------------------------------------------------------------------*\
+
+ INCLUDES
+
+\*---------------------------------------------------------------------------*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "fdmdv_internal.h"
+#include "codec2_fdmdv.h"
+#include "rn.h"
+#include "test_bits.h"
+#include "pilot_coeff.h"
+#include "kiss_fft.h"
+#include "hanning.h"
+#include "os.h"
+
+static int sync_uw[] = {1,-1,1,-1,1,-1};
+
+/*---------------------------------------------------------------------------*
\
+
+ FUNCTIONS
+
+\*---------------------------------------------------------------------------*/
+
+static COMP cneg(COMP a)
+{
+ COMP res;
+
+ res.real = -a.real;
+ res.imag = -a.imag;
+
+ return res;
+}
+
+static COMP cconj(COMP a)
+{
+ COMP res;
+
+ res.real = a.real;
+ res.imag = -a.imag;
+
+ return res;
+}
+
+static COMP cmult(COMP a, COMP b)
+{
+ COMP res;
+
+ res.real = a.real*b.real - a.imag*b.imag;
+ res.imag = a.real*b.imag + a.imag*b.real;
+
+ return res;
+}
+
+static COMP fcmult(float a, COMP b)
+{
+ COMP res;
+
+ res.real = a*b.real;
+ res.imag = a*b.imag;
+
+ return res;
+}
+
+static COMP cadd(COMP a, COMP b)
+{
+ COMP res;
+
+ res.real = a.real + b.real;
+ res.imag = a.imag + b.imag;
+
+ return res;
+}
+
+static float cabsolute(COMP a)
+{
+ return sqrt(pow(a.real, 2.0) + pow(a.imag, 2.0));
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_create
+ AUTHOR......: David Rowe
+ DATE CREATED: 16/4/2012
+
+ Create and initialise an instance of the modem. Returns a pointer
+ to the modem states or NULL on failure. One set of states is
+ sufficient for a full duplex modem.
+
+\*---------------------------------------------------------------------------*/
+
+struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(int Nc)
+{
+ struct FDMDV *f;
+ int c, i, k;
+
+ assert(NC == FDMDV_NC_MAX); /* check public and private #defines match */
+ assert(Nc <= NC);
+ assert(FDMDV_NOM_SAMPLES_PER_FRAME == M);
+ assert(FDMDV_MAX_SAMPLES_PER_FRAME == (M+M/P));
+
+ f = (struct FDMDV*)malloc(sizeof(struct FDMDV));
+ if (f == NULL)
+ return NULL;
+
+ f->Nc = Nc;
+
+ f->ntest_bits = Nc*NB*4;
+ f->current_test_bit = 0;
+ f->rx_test_bits_mem = (int*)malloc(sizeof(int)*f->ntest_bits);
+ assert(f->rx_test_bits_mem != NULL);
+ for(i=0; i<f->ntest_bits; i++)
+ f->rx_test_bits_mem[i] = 0;
+ assert((sizeof(test_bits)/sizeof(int)) >= f->ntest_bits);
+
+ f->old_qpsk_mapping = 0;
+
+ f->tx_pilot_bit = 0;
+
+ for(c=0; c<Nc+1; c++) {
+ f->prev_tx_symbols[c].real = 1.0;
+ f->prev_tx_symbols[c].imag = 0.0;
+ f->prev_rx_symbols[c].real = 1.0;
+ f->prev_rx_symbols[c].imag = 0.0;
+
+ for(k=0; k<NSYM; k++) {
+ f->tx_filter_memory[c][k].real = 0.0;
+ f->tx_filter_memory[c][k].imag = 0.0;
+ }
+
+ for(k=0; k<NFILTER; k++) {
+ f->rx_filter_memory[c][k].real = 0.0;
+ f->rx_filter_memory[c][k].imag = 0.0;
+ }
+
+ /* Spread initial FDM carrier phase out as far as possible.
+ This helped PAPR for a few dB. We don't need to adjust rx
+ phase as DQPSK takes care of that. */
+
+ f->phase_tx[c].real = cos(2.0*PI*c/(Nc+1));
+ f->phase_tx[c].imag = sin(2.0*PI*c/(Nc+1));
+
+ f->phase_rx[c].real = 1.0;
+ f->phase_rx[c].imag = 0.0;
+
+ for(k=0; k<NT*P; k++) {
+ f->rx_filter_mem_timing[c][k].real = 0.0;
+ f->rx_filter_mem_timing[c][k].imag = 0.0;
+ }
+ for(k=0; k<NFILTERTIMING; k++) {
+ f->rx_baseband_mem_timing[c][k].real = 0.0;
+ f->rx_baseband_mem_timing[c][k].imag = 0.0;
+ }
+ }
+
+ fdmdv_set_fsep(f, FSEP);
+ f->freq[Nc].real = cos(2.0*PI*FDMDV_FCENTRE/FS);
+ f->freq[Nc].imag = sin(2.0*PI*FDMDV_FCENTRE/FS);
+
+ /* Generate DBPSK pilot Look Up Table (LUT) */
+
+ generate_pilot_lut(f->pilot_lut, &f->freq[Nc]);
+
+ /* freq Offset estimation states */
+
+ f->fft_pilot_cfg = kiss_fft_alloc (MPILOTFFT, 0, NULL, NULL);
+ assert(f->fft_pilot_cfg != NULL);
+
+ for(i=0; i<NPILOTBASEBAND; i++) {
+ f->pilot_baseband1[i].real = f->pilot_baseband2[i].real = 0.0;
+ f->pilot_baseband1[i].imag = f->pilot_baseband2[i].imag = 0.0;
+ }
+ f->pilot_lut_index = 0;
+ f->prev_pilot_lut_index = 3*M;
+
+ for(i=0; i<NPILOTLPF; i++) {
+ f->pilot_lpf1[i].real = f->pilot_lpf2[i].real = 0.0;
+ f->pilot_lpf1[i].imag = f->pilot_lpf2[i].imag = 0.0;
+ }
+
+ f->foff = 0.0;
+ f->foff_rect.real = 1.0;
+ f->foff_rect.imag = 0.0;
+ f->foff_phase_rect.real = 1.0;
+ f->foff_phase_rect.imag = 0.0;
+
+ f->fest_state = 0;
+ f->sync = 0;
+ f->timer = 0;
+ for(i=0; i<NSYNC_MEM; i++)
+ f->sync_mem[i] = 0;
+
+ for(c=0; c<Nc+1; c++) {
+ f->sig_est[c] = 0.0;
+ f->noise_est[c] = 0.0;
+ }
+
+ for(i=0; i<2*FDMDV_NSPEC; i++)
+ f->fft_buf[i] = 0.0;
+ f->fft_cfg = kiss_fft_alloc (2*FDMDV_NSPEC, 0, NULL, NULL);
+ assert(f->fft_cfg != NULL);
+
+
+ return f;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_destroy
+ AUTHOR......: David Rowe
+ DATE CREATED: 16/4/2012
+
+ Destroy an instance of the modem.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv)
+{
+ assert(fdmdv != NULL);
+ KISS_FFT_FREE(fdmdv->fft_pilot_cfg);
+ KISS_FFT_FREE(fdmdv->fft_cfg);
+ free(fdmdv->rx_test_bits_mem);
+ free(fdmdv);
+}
+
+
+void CODEC2_WIN32SUPPORT fdmdv_use_old_qpsk_mapping(struct FDMDV *fdmdv) {
+ fdmdv->old_qpsk_mapping = 1;
+}
+
+
+int CODEC2_WIN32SUPPORT fdmdv_bits_per_frame(struct FDMDV *fdmdv)
+{
+ return (fdmdv->Nc * NB);
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_get_test_bits()
+ AUTHOR......: David Rowe
+ DATE CREATED: 16/4/2012
+
+ Generate a frame of bits from a repeating sequence of random data. OK so
+ it's not very random if it repeats but it makes syncing at the demod easier
+ for test purposes.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV *f, int tx_bits[])
+{
+ int i;
+ int bits_per_frame = fdmdv_bits_per_frame(f);
+
+ for(i=0; i<bits_per_frame; i++) {
+ tx_bits[i] = test_bits[f->current_test_bit];
+ f->current_test_bit++;
+ if (f->current_test_bit > (f->ntest_bits-1))
+ f->current_test_bit = 0;
+ }
+ }
+
+float CODEC2_WIN32SUPPORT fdmdv_get_fsep(struct FDMDV *f)
+{
+ return f->fsep;
+}
+
+void CODEC2_WIN32SUPPORT fdmdv_set_fsep(struct FDMDV *f, float fsep) {
+ int c;
+ float carrier_freq;
+
+ f->fsep = fsep;
+ /* Set up frequency of each carrier */
+
+ for(c=0; c<f->Nc/2; c++) {
+ carrier_freq = (-f->Nc/2 + c)*f->fsep + FDMDV_FCENTRE;
+ f->freq[c].real = cos(2.0*PI*carrier_freq/FS);
+ f->freq[c].imag = sin(2.0*PI*carrier_freq/FS);
+ }
+
+ for(c=f->Nc/2; c<f->Nc; c++) {
+ carrier_freq = (-f->Nc/2 + c + 1)*f->fsep + FDMDV_FCENTRE;
+ f->freq[c].real = cos(2.0*PI*carrier_freq/FS);
+ f->freq[c].imag = sin(2.0*PI*carrier_freq/FS);
+ }
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: bits_to_dqpsk_symbols()
+ AUTHOR......: David Rowe
+ DATE CREATED: 16/4/2012
+
+ Maps bits to parallel DQPSK symbols. Generate Nc+1 QPSK symbols from
+ vector of (1,Nc*Nb) input tx_bits. The Nc+1 symbol is the +1 -1 +1
+ .... BPSK sync carrier.
+
+\*---------------------------------------------------------------------------*/
+
+void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[],
int tx_bits[], int *pilot_bit, int old_qpsk_mapping)
+{
+ int c, msb, lsb;
+ COMP j = {0.0,1.0};
+
+ /* Map tx_bits to to Nc DQPSK symbols. Note legacy support for
+ old (suboptimal) V0.91 FreeDV mapping */
+
+ for(c=0; c<Nc; c++) {
+ msb = tx_bits[2*c];
+ lsb = tx_bits[2*c+1];
+ if ((msb == 0) && (lsb == 0))
+ tx_symbols[c] = prev_tx_symbols[c];
+ if ((msb == 0) && (lsb == 1))
+ tx_symbols[c] = cmult(j, prev_tx_symbols[c]);
+ if ((msb == 1) && (lsb == 0)) {
+ if (old_qpsk_mapping)
+ tx_symbols[c] = cneg(prev_tx_symbols[c]);
+ else
+ tx_symbols[c] = cmult(cneg(j),prev_tx_symbols[c]);
+ }
+ if ((msb == 1) && (lsb == 1)) {
+ if (old_qpsk_mapping)
+ tx_symbols[c] = cmult(cneg(j),prev_tx_symbols[c]);
+ else
+ tx_symbols[c] = cneg(prev_tx_symbols[c]);
+ }
+ }
+
+ /* +1 -1 +1 -1 BPSK sync carrier, once filtered becomes (roughly)
+ two spectral lines at +/- Rs/2 */
+
+ if (*pilot_bit)
+ tx_symbols[Nc] = cneg(prev_tx_symbols[Nc]);
+ else
+ tx_symbols[Nc] = prev_tx_symbols[Nc];
+
+ if (*pilot_bit)
+ *pilot_bit = 0;
+ else
+ *pilot_bit = 1;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: tx_filter()
+ AUTHOR......: David Rowe
+ DATE CREATED: 17/4/2012
+
+ Given Nc*NB bits construct M samples (1 symbol) of Nc+1 filtered
+ symbols streams.
+
+\*---------------------------------------------------------------------------*/
+
+void tx_filter(COMP tx_baseband[NC+1][M], int Nc, COMP tx_symbols[], COMP
tx_filter_memory[NC+1][NSYM])
+{
+ int c;
+ int i,j,k;
+ float acc;
+ COMP gain;
+
+ gain.real = sqrt(2.0)/2.0;
+ gain.imag = 0.0;
+
+ for(c=0; c<Nc+1; c++)
+ tx_filter_memory[c][NSYM-1] = cmult(tx_symbols[c], gain);
+
+ /*
+ tx filter each symbol, generate M filtered output samples for each
symbol.
+ Efficient polyphase filter techniques used as tx_filter_memory is sparse
+ */
+
+ for(i=0; i<M; i++) {
+ for(c=0; c<Nc+1; c++) {
+
+ /* filter real sample of symbol for carrier c */
+
+ acc = 0.0;
+ for(j=0,k=M-i-1; j<NSYM; j++,k+=M)
+ acc += M * tx_filter_memory[c][j].real * gt_alpha5_root[k];
+ tx_baseband[c][i].real = acc;
+
+ /* filter imag sample of symbol for carrier c */
+
+ acc = 0.0;
+ for(j=0,k=M-i-1; j<NSYM; j++,k+=M)
+ acc += M * tx_filter_memory[c][j].imag * gt_alpha5_root[k];
+ tx_baseband[c][i].imag = acc;
+
+ }
+ }
+
+ /* shift memory, inserting zeros at end */
+
+ for(i=0; i<NSYM-1; i++)
+ for(c=0; c<Nc+1; c++)
+ tx_filter_memory[c][i] = tx_filter_memory[c][i+1];
+
+ for(c=0; c<Nc+1; c++) {
+ tx_filter_memory[c][NSYM-1].real = 0.0;
+ tx_filter_memory[c][NSYM-1].imag = 0.0;
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdm_upconvert()
+ AUTHOR......: David Rowe
+ DATE CREATED: 17/4/2012
+
+ Construct FDM signal by frequency shifting each filtered symbol
+ stream. Returns complex signal so we can apply frequency offsets
+ easily.
+
+\*---------------------------------------------------------------------------*/
+
+void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC+1][M], COMP
phase_tx[], COMP freq[])
+{
+ int i,c;
+ COMP two = {2.0, 0.0};
+ COMP pilot;
+
+ for(i=0; i<M; i++) {
+ tx_fdm[i].real = 0.0;
+ tx_fdm[i].imag = 0.0;
+ }
+
+ /* Nc/2 tones below centre freq */
+
+ for (c=0; c<Nc/2; c++)
+ for (i=0; i<M; i++) {
+ phase_tx[c] = cmult(phase_tx[c], freq[c]);
+ tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband[c][i], phase_tx[c]));
+ }
+
+ /* Nc/2 tones above centre freq */
+
+ for (c=Nc/2; c<Nc; c++)
+ for (i=0; i<M; i++) {
+ phase_tx[c] = cmult(phase_tx[c], freq[c]);
+ tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband[c][i], phase_tx[c]));
+ }
+
+ /* add centre pilot tone */
+
+ c = Nc;
+ for (i=0; i<M; i++) {
+ phase_tx[c] = cmult(phase_tx[c], freq[c]);
+ pilot = cmult(cmult(two, tx_baseband[c][i]), phase_tx[c]);
+ tx_fdm[i] = cadd(tx_fdm[i], pilot);
+ }
+
+ /*
+ Scale such that total Carrier power C of real(tx_fdm) = Nc. This
+ excludes the power of the pilot tone.
+ We return the complex (single sided) signal to make frequency
+ shifting for the purpose of testing easier
+ */
+
+ for (i=0; i<M; i++)
+ tx_fdm[i] = cmult(two, tx_fdm[i]);
+
+ /* normalise digital oscilators as the magnitude can drfift over time */
+
+ for (c=0; c<Nc+1; c++) {
+ phase_tx[c].real /= cabsolute(phase_tx[c]);
+ phase_tx[c].imag /= cabsolute(phase_tx[c]);
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_mod()
+ AUTHOR......: David Rowe
+ DATE CREATED: 26/4/2012
+
+ FDMDV modulator, take a frame of FDMDV_BITS_PER_FRAME bits and
+ generates a frame of FDMDV_SAMPLES_PER_FRAME modulated symbols.
+ Sync bit is returned to aid alignment of your next frame.
+
+ The sync_bit value returned will be used for the _next_ frame.
+
+ The output signal is complex to support single sided frequency
+ shifting, for example when testing frequency offsets in channel
+ simulation.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv, COMP tx_fdm[],
+ int tx_bits[], int *sync_bit)
+{
+ COMP tx_symbols[NC+1];
+ COMP tx_baseband[NC+1][M];
+
+ bits_to_dqpsk_symbols(tx_symbols, fdmdv->Nc, fdmdv->prev_tx_symbols,
tx_bits, &fdmdv->tx_pilot_bit, fdmdv->old_qpsk_mapping);
+ memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP)*(fdmdv->Nc+1));
+ tx_filter(tx_baseband, fdmdv->Nc, tx_symbols, fdmdv->tx_filter_memory);
+ fdm_upconvert(tx_fdm, fdmdv->Nc, tx_baseband, fdmdv->phase_tx,
fdmdv->freq);
+
+ *sync_bit = fdmdv->tx_pilot_bit;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: generate_pilot_fdm()
+ AUTHOR......: David Rowe
+ DATE CREATED: 19/4/2012
+
+ Generate M samples of DBPSK pilot signal for Freq offset estimation.
+
+\*---------------------------------------------------------------------------*/
+
+void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol,
+ float *filter_mem, COMP *phase, COMP *freq)
+{
+ int i,j,k;
+ float tx_baseband[M];
+
+ /* +1 -1 +1 -1 DBPSK sync carrier, once filtered becomes (roughly)
+ two spectral lines at +/- RS/2 */
+
+ if (*bit)
+ *symbol = -*symbol;
+ else
+ *symbol = *symbol;
+ if (*bit)
+ *bit = 0;
+ else
+ *bit = 1;
+
+ /* filter DPSK symbol to create M baseband samples */
+
+ filter_mem[NFILTER-1] = (sqrt(2)/2) * *symbol;
+ for(i=0; i<M; i++) {
+ tx_baseband[i] = 0.0;
+ for(j=M-1,k=M-i-1; j<NFILTER; j+=M,k+=M)
+ tx_baseband[i] += M * filter_mem[j] * gt_alpha5_root[k];
+ }
+
+ /* shift memory, inserting zeros at end */
+
+ for(i=0; i<NFILTER-M; i++)
+ filter_mem[i] = filter_mem[i+M];
+
+ for(i=NFILTER-M; i<NFILTER; i++)
+ filter_mem[i] = 0.0;
+
+ /* upconvert */
+
+ for(i=0; i<M; i++) {
+ *phase = cmult(*phase, *freq);
+ pilot_fdm[i].real = sqrt(2)*2*tx_baseband[i] * phase->real;
+ pilot_fdm[i].imag = sqrt(2)*2*tx_baseband[i] * phase->imag;
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: generate_pilot_lut()
+ AUTHOR......: David Rowe
+ DATE CREATED: 19/4/2012
+
+ Generate a 4M sample vector of DBPSK pilot signal. As the pilot signal
+ is periodic in 4M samples we can then use this vector as a look up table
+ for pilot signal generation in the demod.
+
+\*---------------------------------------------------------------------------*/
+
+void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq)
+{
+ int pilot_rx_bit = 0;
+ float pilot_symbol = sqrt(2.0);
+ COMP pilot_phase = {1.0, 0.0};
+ float pilot_filter_mem[NFILTER];
+ COMP pilot[M];
+ int i,f;
+
+ for(i=0; i<NFILTER; i++)
+ pilot_filter_mem[i] = 0.0;
+
+ /* discard first 4 symbols as filter memory is filling, just keep
+ last four symbols */
+
+ for(f=0; f<8; f++) {
+ generate_pilot_fdm(pilot, &pilot_rx_bit, &pilot_symbol,
pilot_filter_mem, &pilot_phase, pilot_freq);
+ if (f >= 4)
+ memcpy(&pilot_lut[M*(f-4)], pilot, M*sizeof(COMP));
+ }
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: lpf_peak_pick()
+ AUTHOR......: David Rowe
+ DATE CREATED: 20/4/2012
+
+ LPF and peak pick part of freq est, put in a function as we call it twice.
+
+\*---------------------------------------------------------------------------*/
+
+void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[],
+ COMP pilot_lpf[], kiss_fft_cfg fft_pilot_cfg, COMP S[], int
nin)
+{
+ int i,j,k;
+ int mpilot;
+ COMP s[MPILOTFFT];
+ float mag, imax;
+ int ix;
+ float r;
+
+ /* LPF cutoff 200Hz, so we can handle max +/- 200 Hz freq offset */
+
+ for(i=0; i<NPILOTLPF-nin; i++)
+ pilot_lpf[i] = pilot_lpf[nin+i];
+ for(i=NPILOTLPF-nin, j=0; i<NPILOTLPF; i++,j++) {
+ pilot_lpf[i].real = 0.0; pilot_lpf[i].imag = 0.0;
+ for(k=0; k<NPILOTCOEFF; k++)
+ pilot_lpf[i] = cadd(pilot_lpf[i], fcmult(pilot_coeff[k],
pilot_baseband[j+k]));
+ }
+
+ /* decimate to improve DFT resolution, window and DFT */
+
+ mpilot = FS/(2*200); /* calc decimation rate given new sample rate is
twice LPF freq */
+ for(i=0; i<MPILOTFFT; i++) {
+ s[i].real = 0.0; s[i].imag = 0.0;
+ }
+ for(i=0,j=0; i<NPILOTLPF; i+=mpilot,j++) {
+ s[j] = fcmult(hanning[i], pilot_lpf[i]);
+ }
+
+ kiss_fft(fft_pilot_cfg, (kiss_fft_cpx *)s, (kiss_fft_cpx *)S);
+
+ /* peak pick and convert to Hz */
+
+ imax = 0.0;
+ ix = 0;
+ for(i=0; i<MPILOTFFT; i++) {
+ mag = S[i].real*S[i].real + S[i].imag*S[i].imag;
+ if (mag > imax) {
+ imax = mag;
+ ix = i;
+ }
+ }
+ r = 2.0*200.0/MPILOTFFT; /* maps FFT bin to frequency in Hz */
+
+ if (ix >= MPILOTFFT/2)
+ *foff = (ix - MPILOTFFT)*r;
+ else
+ *foff = (ix)*r;
+ *max = imax;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: rx_est_freq_offset()
+ AUTHOR......: David Rowe
+ DATE CREATED: 19/4/2012
+
+ Estimate frequency offset of FDM signal using BPSK pilot. Note that
+ this algorithm is quite sensitive to pilot tone level wrt other
+ carriers, so test variations to the pilot amplitude carefully.
+
+\*---------------------------------------------------------------------------*/
+
+float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin)
+{
+ int i,j;
+ COMP pilot[M+M/P];
+ COMP prev_pilot[M+M/P];
+ float foff, foff1, foff2;
+ float max1, max2;
+
+ assert(nin <= M+M/P);
+
+ /* get pilot samples used for correlation/down conversion of rx signal */
+
+ for (i=0; i<nin; i++) {
+ pilot[i] = f->pilot_lut[f->pilot_lut_index];
+ f->pilot_lut_index++;
+ if (f->pilot_lut_index >= 4*M)
+ f->pilot_lut_index = 0;
+
+ prev_pilot[i] = f->pilot_lut[f->prev_pilot_lut_index];
+ f->prev_pilot_lut_index++;
+ if (f->prev_pilot_lut_index >= 4*M)
+ f->prev_pilot_lut_index = 0;
+ }
+
+ /*
+ Down convert latest M samples of pilot by multiplying by ideal
+ BPSK pilot signal we have generated locally. The peak of the
+ resulting signal is sensitive to the time shift between the
+ received and local version of the pilot, so we do it twice at
+ different time shifts and choose the maximum.
+ */
+
+ for(i=0; i<NPILOTBASEBAND-nin; i++) {
+ f->pilot_baseband1[i] = f->pilot_baseband1[i+nin];
+ f->pilot_baseband2[i] = f->pilot_baseband2[i+nin];
+ }
+
+ for(i=0,j=NPILOTBASEBAND-nin; i<nin; i++,j++) {
+ f->pilot_baseband1[j] = cmult(rx_fdm[i], cconj(pilot[i]));
+ f->pilot_baseband2[j] = cmult(rx_fdm[i], cconj(prev_pilot[i]));
+ }
+
+ lpf_peak_pick(&foff1, &max1, f->pilot_baseband1, f->pilot_lpf1,
f->fft_pilot_cfg, f->S1, nin);
+ lpf_peak_pick(&foff2, &max2, f->pilot_baseband2, f->pilot_lpf2,
f->fft_pilot_cfg, f->S2, nin);
+
+ if (max1 > max2)
+ foff = foff1;
+ else
+ foff = foff2;
+
+ return foff;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_freq_shift()
+ AUTHOR......: David Rowe
+ DATE CREATED: 26/4/2012
+
+ Frequency shift modem signal. The use of complex input and output allows
+ single sided frequency shifting (no images).
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[],
float foff,
+ COMP *foff_rect, COMP
*foff_phase_rect, int nin)
+{
+ int i;
+
+ foff_rect->real = cos(2.0*PI*foff/FS);
+ foff_rect->imag = sin(2.0*PI*foff/FS);
+ for(i=0; i<nin; i++) {
+ *foff_phase_rect = cmult(*foff_phase_rect, *foff_rect);
+ rx_fdm_fcorr[i] = cmult(rx_fdm[i], *foff_phase_rect);
+ }
+
+ /* normalise digital oscilator as the magnitude can drfift over time */
+
+ foff_phase_rect->real /= cabsolute(*foff_phase_rect);
+ foff_phase_rect->imag /= cabsolute(*foff_phase_rect);
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdm_downconvert()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/4/2012
+
+ Frequency shift each modem carrier down to Nc+1 baseband signals.
+
+\*---------------------------------------------------------------------------*/
+
+void fdm_downconvert(COMP rx_baseband[NC+1][M+M/P], int Nc, COMP rx_fdm[],
COMP phase_rx[], COMP freq[], int nin)
+{
+ int i,c;
+
+ /* maximum number of input samples to demod */
+
+ assert(nin <= (M+M/P));
+
+ /* Nc/2 tones below centre freq */
+
+ for (c=0; c<Nc/2; c++)
+ for (i=0; i<nin; i++) {
+ phase_rx[c] = cmult(phase_rx[c], freq[c]);
+ rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+ }
+
+ /* Nc/2 tones above centre freq */
+
+ for (c=Nc/2; c<Nc; c++)
+ for (i=0; i<nin; i++) {
+ phase_rx[c] = cmult(phase_rx[c], freq[c]);
+ rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+ }
+
+ /* centre pilot tone */
+
+ c = Nc;
+ for (i=0; i<nin; i++) {
+ phase_rx[c] = cmult(phase_rx[c], freq[c]);
+ rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+ }
+
+ /* normalise digital oscilators as the magnitude can drift over time */
+
+ for (c=0; c<Nc+1; c++) {
+ phase_rx[c].real /= cabsolute(phase_rx[c]);
+ phase_rx[c].imag /= cabsolute(phase_rx[c]);
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: rx_filter()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/4/2012
+
+ Receive filter each baseband signal at oversample rate P. Filtering at
+ rate P lowers CPU compared to rate M.
+
+ Depending on the number of input samples to the demod nin, we
+ produce P-1, P (usually), or P+1 filtered samples at rate P. nin is
+ occasionally adjusted to compensate for timing slips due to
+ different tx and rx sample clocks.
+
+\*---------------------------------------------------------------------------*/
+
+void rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_baseband[NC+1][M+M/P],
COMP rx_filter_memory[NC+1][NFILTER], int nin)
+{
+ int c, i,j,k,l;
+ int n=M/P;
+
+ /* rx filter each symbol, generate P filtered output samples for
+ each symbol. Note we keep filter memory at rate M, it's just
+ the filter output at rate P */
+
+ for(i=0, j=0; i<nin; i+=n,j++) {
+
+ /* latest input sample */
+
+ for(c=0; c<Nc+1; c++)
+ for(k=NFILTER-n,l=i; k<NFILTER; k++,l++)
+ rx_filter_memory[c][k] = rx_baseband[c][l];
+
+ /* convolution (filtering) */
+
+ for(c=0; c<Nc+1; c++) {
+ rx_filt[c][j].real = 0.0; rx_filt[c][j].imag = 0.0;
+ for(k=0; k<NFILTER; k++)
+ rx_filt[c][j] = cadd(rx_filt[c][j], fcmult(gt_alpha5_root[k],
rx_filter_memory[c][k]));
+ }
+
+ /* make room for next input sample */
+
+ for(c=0; c<Nc+1; c++)
+ for(k=0,l=n; k<NFILTER-n; k++,l++)
+ rx_filter_memory[c][k] = rx_filter_memory[c][l];
+ }
+
+ assert(j <= (P+1)); /* check for any over runs */
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: rx_est_timing()
+ AUTHOR......: David Rowe
+ DATE CREATED: 23/4/2012
+
+ Estimate optimum timing offset, re-filter receive symbols at optimum
+ timing estimate.
+
+\*---------------------------------------------------------------------------*/
+
+float rx_est_timing(COMP rx_symbols[],
+ int Nc,
+ COMP rx_filt[NC+1][P+1],
+ COMP rx_baseband[NC+1][M+M/P],
+ COMP rx_filter_mem_timing[NC+1][NT*P],
+ float env[],
+ COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING],
+ int nin)
+{
+ int c,i,j,k;
+ int adjust, s;
+ COMP x, phase, freq;
+ float rx_timing;
+
+ /*
+ nin adjust
+ --------------------------------
+ 120 -1 (one less rate P sample)
+ 160 0 (nominal)
+ 200 1 (one more rate P sample)
+ */
+
+ adjust = P - nin*P/M;
+
+ /* update buffer of NT rate P filtered symbols */
+
+ for(c=0; c<Nc+1; c++)
+ for(i=0,j=P-adjust; i<(NT-1)*P+adjust; i++,j++)
+ rx_filter_mem_timing[c][i] = rx_filter_mem_timing[c][j];
+ for(c=0; c<Nc+1; c++)
+ for(i=(NT-1)*P+adjust,j=0; i<NT*P; i++,j++)
+ rx_filter_mem_timing[c][i] = rx_filt[c][j];
+
+ /* sum envelopes of all carriers */
+
+ for(i=0; i<NT*P; i++) {
+ env[i] = 0.0;
+ for(c=0; c<Nc+1; c++)
+ env[i] += cabsolute(rx_filter_mem_timing[c][i]);
+ }
+
+ /* The envelope has a frequency component at the symbol rate. The
+ phase of this frequency component indicates the timing. So work
+ out single DFT at frequency 2*pi/P */
+
+ x.real = 0.0; x.imag = 0.0;
+ freq.real = cos(2*PI/P);
+ freq.imag = sin(2*PI/P);
+ phase.real = 1.0;
+ phase.imag = 0.0;
+
+ for(i=0; i<NT*P; i++) {
+ x = cadd(x, fcmult(env[i], phase));
+ phase = cmult(phase, freq);
+ }
+
+ /* Map phase to estimated optimum timing instant at rate M. The
+ M/4 part was adjusted by experiment, I know not why.... */
+
+ rx_timing = atan2(x.imag, x.real)*M/(2*PI) + M/4;
+
+ if (rx_timing > M)
+ rx_timing -= M;
+ if (rx_timing < -M)
+ rx_timing += M;
+
+ /* rx_filt_mem_timing contains M + Nfilter + M samples of the
+ baseband signal at rate M this enables us to resample the
+ filtered rx symbol with M sample precision once we have
+ rx_timing */
+
+ for(c=0; c<Nc+1; c++)
+ for(i=0,j=nin; i<NFILTERTIMING-nin; i++,j++)
+ rx_baseband_mem_timing[c][i] = rx_baseband_mem_timing[c][j];
+ for(c=0; c<Nc+1; c++)
+ for(i=NFILTERTIMING-nin,j=0; i<NFILTERTIMING; i++,j++)
+ rx_baseband_mem_timing[c][i] = rx_baseband[c][j];
+
+ /* rx filter to get symbol for each carrier at estimated optimum
+ timing instant. We use rate M filter memory to get fine timing
+ resolution. */
+
+ s = round(rx_timing) + M;
+ for(c=0; c<Nc+1; c++) {
+ rx_symbols[c].real = 0.0;
+ rx_symbols[c].imag = 0.0;
+ for(k=s,j=0; k<s+NFILTER; k++,j++)
+ rx_symbols[c] = cadd(rx_symbols[c], fcmult(gt_alpha5_root[j],
rx_baseband_mem_timing[c][k]));
+ }
+
+ return rx_timing;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: qpsk_to_bits()
+ AUTHOR......: David Rowe
+ DATE CREATED: 24/4/2012
+
+ Convert DQPSK symbols back to an array of bits, extracts sync bit
+ from DBPSK pilot, and also uses pilot to estimate fine frequency
+ error.
+
+\*---------------------------------------------------------------------------*/
+
+float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP
phase_difference[], COMP prev_rx_symbols[],
+ COMP rx_symbols[], int old_qpsk_mapping)
+{
+ int c;
+ COMP pi_on_4;
+ COMP d;
+ int msb=0, lsb=0;
+ float ferr, norm;
+
+ pi_on_4.real = cos(PI/4.0);
+ pi_on_4.imag = sin(PI/4.0);
+
+ /* Extra 45 degree clockwise lets us use real and imag axis as
+ decision boundaries. "norm" makes sure the phase subtraction
+ from the previous symbol doesn't affect the amplitude, which
+ leads to sensible scatter plots */
+
+ for(c=0; c<Nc; c++) {
+ norm = 1.0/(cabsolute(prev_rx_symbols[c])+1E-6);
+ phase_difference[c] = cmult(cmult(rx_symbols[c],
fcmult(norm,cconj(prev_rx_symbols[c]))), pi_on_4);
+ }
+
+ /* map (Nc,1) DQPSK symbols back into an (1,Nc*Nb) array of bits */
+
+ for (c=0; c<Nc; c++) {
+ d = phase_difference[c];
+ if ((d.real >= 0) && (d.imag >= 0)) {
+ msb = 0; lsb = 0;
+ }
+ if ((d.real < 0) && (d.imag >= 0)) {
+ msb = 0; lsb = 1;
+ }
+ if ((d.real < 0) && (d.imag < 0)) {
+ if (old_qpsk_mapping) {
+ msb = 1; lsb = 0;
+ } else {
+ msb = 1; lsb = 1;
+ }
+ }
+ if ((d.real >= 0) && (d.imag < 0)) {
+ if (old_qpsk_mapping) {
+ msb = 1; lsb = 1;
+ } else {
+ msb = 1; lsb = 0;
+ }
+ }
+ rx_bits[2*c] = msb;
+ rx_bits[2*c+1] = lsb;
+ }
+
+ /* Extract DBPSK encoded Sync bit and fine freq offset estimate */
+
+ norm = 1.0/(cabsolute(prev_rx_symbols[Nc])+1E-6);
+ phase_difference[Nc] = cmult(rx_symbols[Nc], fcmult(norm,
cconj(prev_rx_symbols[Nc])));
+ if (phase_difference[Nc].real < 0) {
+ *sync_bit = 1;
+ ferr = phase_difference[Nc].imag;
+ }
+ else {
+ *sync_bit = 0;
+ ferr = -phase_difference[Nc].imag;
+ }
+
+ /* pilot carrier gets an extra pi/4 rotation to make it consistent
+ with other carriers, as we need it for snr_update and scatter
+ diagram */
+
+ phase_difference[Nc] = cmult(phase_difference[Nc], pi_on_4);
+
+ return ferr;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: snr_update()
+ AUTHOR......: David Rowe
+ DATE CREATED: 17 May 2012
+
+ Given phase differences update estimates of signal and noise levels.
+
+\*---------------------------------------------------------------------------*/
+
+void snr_update(float sig_est[], float noise_est[], int Nc, COMP
phase_difference[])
+{
+ float s[NC+1];
+ COMP refl_symbols[NC+1];
+ float n[NC+1];
+ COMP pi_on_4;
+ int c;
+
+ pi_on_4.real = cos(PI/4.0);
+ pi_on_4.imag = sin(PI/4.0);
+
+ /* mag of each symbol is distance from origin, this gives us a
+ vector of mags, one for each carrier. */
+
+ for(c=0; c<Nc+1; c++)
+ s[c] = cabsolute(phase_difference[c]);
+
+ /* signal mag estimate for each carrier is a smoothed version of
+ instantaneous magntitude, this gives us a vector of smoothed
+ mag estimates, one for each carrier. */
+
+ for(c=0; c<Nc+1; c++)
+ sig_est[c] = SNR_COEFF*sig_est[c] + (1.0 - SNR_COEFF)*s[c];
+
+ /* noise mag estimate is distance of current symbol from average
+ location of that symbol. We reflect all symbols into the first
+ quadrant for convenience. */
+
+ for(c=0; c<Nc+1; c++) {
+ refl_symbols[c].real = fabs(phase_difference[c].real);
+ refl_symbols[c].imag = fabs(phase_difference[c].imag);
+ n[c] = cabsolute(cadd(fcmult(sig_est[c], pi_on_4),
cneg(refl_symbols[c])));
+ }
+
+ /* noise mag estimate for each carrier is a smoothed version of
+ instantaneous noise mag, this gives us a vector of smoothed
+ noise power estimates, one for each carrier. */
+
+ for(c=0; c<Nc+1; c++)
+ noise_est[c] = SNR_COEFF*noise_est[c] + (1 - SNR_COEFF)*n[c];
+}
+
+// returns number of shorts in error_pattern[], one short per error
+
+int CODEC2_WIN32SUPPORT fdmdv_error_pattern_size(struct FDMDV *f) {
+ return f->ntest_bits;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_put_test_bits()
+ AUTHOR......: David Rowe
+ DATE CREATED: 24/4/2012
+
+ Accepts nbits from rx and attempts to sync with test_bits sequence.
+ If sync OK measures bit errors.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int *sync, short
error_pattern[],
+ int *bit_errors, int *ntest_bits,
+ int rx_bits[])
+{
+ int i,j;
+ float ber;
+ int bits_per_frame = fdmdv_bits_per_frame(f);
+
+ /* Append to our memory */
+
+ for(i=0,j=bits_per_frame; i<f->ntest_bits-bits_per_frame; i++,j++)
+ f->rx_test_bits_mem[i] = f->rx_test_bits_mem[j];
+ for(i=f->ntest_bits-bits_per_frame,j=0; i<f->ntest_bits; i++,j++)
+ f->rx_test_bits_mem[i] = rx_bits[j];
+
+ /* see how many bit errors we get when checked against test sequence */
+
+ *bit_errors = 0;
+ for(i=0; i<f->ntest_bits; i++) {
+ error_pattern[i] = test_bits[i] ^ f->rx_test_bits_mem[i];
+ *bit_errors += error_pattern[i];
+ //printf("%d %d %d %d\n", i, test_bits[i], f->rx_test_bits_mem[i],
test_bits[i] ^ f->rx_test_bits_mem[i]);
+ }
+
+ /* if less than a thresh we are aligned and in sync with test sequence */
+
+ ber = (float)*bit_errors/f->ntest_bits;
+
+ *sync = 0;
+ if (ber < 0.2)
+ *sync = 1;
+
+ *ntest_bits = f->ntest_bits;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: freq_state(()
+ AUTHOR......: David Rowe
+ DATE CREATED: 24/4/2012
+
+ Freq offset state machine. Moves between coarse and fine states
+ based on BPSK pilot sequence. Freq offset estimator occasionally
+ makes mistakes when used continuously. So we use it until we have
+ acquired the BPSK pilot, then switch to a more robust "fine"
+ tracking algorithm. If we lose sync we switch back to coarse mode
+ for fast re-acquisition of large frequency offsets.
+
+ The sync state is also useful for higher layers to determine when
+ there is valid FDMDV data for decoding. We want to reliably and
+ quickly get into sync, stay in sync even on fading channels, and
+ fall out of sync quickly if tx stops or it's a false sync.
+
+ In multipath fading channels the BPSK sync carrier may be pushed
+ down in the noise, despite other carriers being at full strength.
+ We want to avoid loss of sync in these cases.
+
+\*---------------------------------------------------------------------------*/
+
+int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer,
int *sync_mem)
+{
+ int next_state, sync, unique_word, i, corr;
+
+ /* look for 6 symbols (120ms) 101010 of sync sequence */
+
+ unique_word = 0;
+ for(i=0; i<NSYNC_MEM-1; i++)
+ sync_mem[i] = sync_mem[i+1];
+ sync_mem[i] = 1 - 2*sync_bit;
+ corr = 0;
+ for(i=0; i<NSYNC_MEM; i++)
+ corr += sync_mem[i]*sync_uw[i];
+ if (abs(corr) == NSYNC_MEM)
+ unique_word = 1;
+ *reliable_sync_bit = (corr == NSYNC_MEM);
+
+ /* iterate state machine */
+
+ next_state = *state;
+ switch(*state) {
+ case 0:
+ if (unique_word) {
+ next_state = 1;
+ *timer = 0;
+ }
+ break;
+ case 1: /* tentative sync state */
+ if (unique_word) {
+ (*timer)++;
+ if (*timer == 25) /* sync has been good for 500ms */
+ next_state = 2;
+ }
+ else
+ next_state = 0; /* quickly fall out of sync */
+ break;
+ case 2: /* good sync state */
+ if (unique_word == 0) {
+ *timer = 0;
+ next_state = 3;
+ }
+ break;
+ case 3: /* tentative bad state, but could be a fade */
+ if (unique_word)
+ next_state = 2;
+ else {
+ (*timer)++;
+ if (*timer == 50) /* wait for 1000ms in case sync comes back */
+ next_state = 0;
+ }
+ break;
+ }
+
+ //printf("state: %d next_state: %d uw: %d timer: %d\n", *state,
next_state, unique_word, *timer);
+ *state = next_state;
+ if (*state)
+ sync = 1;
+ else
+ sync = 0;
+
+ return sync;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_demod()
+ AUTHOR......: David Rowe
+ DATE CREATED: 26/4/2012
+
+ FDMDV demodulator, take an array of FDMDV_SAMPLES_PER_FRAME
+ modulated samples, returns an array of FDMDV_BITS_PER_FRAME bits,
+ plus the sync bit.
+
+ The input signal is complex to support single sided frequency shifting
+ before the demod input (e.g. fdmdv2 click to tune feature).
+
+ The number of input samples nin will normally be M ==
+ FDMDV_SAMPLES_PER_FRAME. However to adjust for differences in
+ transmit and receive sample clocks nin will occasionally be M-M/P,
+ or M+M/P.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv, int rx_bits[],
+ int *reliable_sync_bit, COMP rx_fdm[], int
*nin)
+{
+ float foff_coarse, foff_fine;
+ COMP rx_fdm_fcorr[M+M/P];
+ COMP rx_baseband[NC+1][M+M/P];
+ COMP rx_filt[NC+1][P+1];
+ COMP rx_symbols[NC+1];
+ float env[NT*P];
+ int sync_bit;
+
+ /* freq offset estimation and correction */
+
+ foff_coarse = rx_est_freq_offset(fdmdv, rx_fdm, *nin);
+
+ if (fdmdv->sync == 0)
+ fdmdv->foff = foff_coarse;
+ fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm, -fdmdv->foff, &fdmdv->foff_rect,
&fdmdv->foff_phase_rect, *nin);
+
+ /* baseband processing */
+
+ fdm_downconvert(rx_baseband, fdmdv->Nc, rx_fdm_fcorr, fdmdv->phase_rx,
fdmdv->freq, *nin);
+ rx_filter(rx_filt, fdmdv->Nc, rx_baseband, fdmdv->rx_filter_memory, *nin);
+ fdmdv->rx_timing = rx_est_timing(rx_symbols, fdmdv->Nc, rx_filt,
rx_baseband, fdmdv->rx_filter_mem_timing, env, fdmdv->rx_baseband_mem_timing,
*nin);
+
+ /* Adjust number of input samples to keep timing within bounds */
+
+ *nin = M;
+
+ if (fdmdv->rx_timing > 2*M/P)
+ *nin += M/P;
+
+ if (fdmdv->rx_timing < 0)
+ *nin -= M/P;
+
+ foff_fine = qpsk_to_bits(rx_bits, &sync_bit, fdmdv->Nc,
fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols,
+ fdmdv->old_qpsk_mapping);
+ memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(fdmdv->Nc+1));
+ snr_update(fdmdv->sig_est, fdmdv->noise_est, fdmdv->Nc,
fdmdv->phase_difference);
+
+ /* freq offset estimation state machine */
+
+ fdmdv->sync = freq_state(reliable_sync_bit, sync_bit, &fdmdv->fest_state,
&fdmdv->timer, fdmdv->sync_mem);
+ fdmdv->foff -= TRACK_COEFF*foff_fine;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: calc_snr()
+ AUTHOR......: David Rowe
+ DATE CREATED: 17 May 2012
+
+ Calculate current SNR estimate (3000Hz noise BW)
+
+\*---------------------------------------------------------------------------*/
+
+float calc_snr(int Nc, float sig_est[], float noise_est[])
+{
+ float S, SdB;
+ float mean, N50, N50dB, N3000dB;
+ float snr_dB;
+ int c;
+
+ S = 0.0;
+ for(c=0; c<Nc+1; c++)
+ S += pow(sig_est[c], 2.0);
+ SdB = 10.0*log10(S+1E-12);
+
+ /* Average noise mag across all carriers and square to get an
+ average noise power. This is an estimate of the noise power in
+ Rs = 50Hz of BW (note for raised root cosine filters Rs is the
+ noise BW of the filter) */
+
+ mean = 0.0;
+ for(c=0; c<Nc+1; c++)
+ mean += noise_est[c];
+ mean /= (Nc+1);
+ N50 = pow(mean, 2.0);
+ N50dB = 10.0*log10(N50+1E-12);
+
+ /* Now multiply by (3000 Hz)/(50 Hz) to find the total noise power
+ in 3000 Hz */
+
+ N3000dB = N50dB + 10.0*log10(3000.0/RS);
+
+ snr_dB = SdB - N3000dB;
+
+ return snr_dB;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_get_demod_stats()
+ AUTHOR......: David Rowe
+ DATE CREATED: 1 May 2012
+
+ Fills stats structure with a bunch of demod information.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV *fdmdv,
+ struct FDMDV_STATS *fdmdv_stats)
+{
+ int c;
+
+ fdmdv_stats->Nc = fdmdv->Nc;
+ fdmdv_stats->snr_est = calc_snr(fdmdv->Nc, fdmdv->sig_est,
fdmdv->noise_est);
+ fdmdv_stats->sync = fdmdv->sync;
+ fdmdv_stats->foff = fdmdv->foff;
+ fdmdv_stats->rx_timing = fdmdv->rx_timing;
+ fdmdv_stats->clock_offset = 0.0; /* TODO - implement clock offset
estimation */
+
+ for(c=0; c<fdmdv->Nc+1; c++) {
+ fdmdv_stats->rx_symbols[c] = fdmdv->phase_difference[c];
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_8_to_48()
+ AUTHOR......: David Rowe
+ DATE CREATED: 9 May 2012
+
+ Changes the sample rate of a signal from 8 to 48 kHz. Experience
+ with PC based modems has shown that PC sound cards have a more
+ accurate sample clock when set for 48 kHz than 8 kHz.
+
+ n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n samples
+ at the 48 kHz rate. A memory of FDMDV_OS_TAPS/FDMDV_OS samples is reqd for
+ in8k[] (see t48_8.c unit test as example).
+
+ This is a classic polyphase upsampler. We take the 8 kHz samples
+ and insert (FDMDV_OS-1) zeroes between each sample, then
+ FDMDV_OS_TAPS FIR low pass filter the signal at 4kHz. As most of
+ the input samples are zeroes, we only need to multiply non-zero
+ input samples by filter coefficients. The zero insertion and
+ filtering are combined in the code below and I'm too lazy to explain
+ it further right now....
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], int n)
+{
+ int i,j,k,l;
+
+ /* make sure n is an integer multiple of the oversampling rate, ow
+ this function breaks */
+
+ assert((n % FDMDV_OS) == 0);
+
+ for(i=0; i<n; i++) {
+ for(j=0; j<FDMDV_OS; j++) {
+ out48k[i*FDMDV_OS+j] = 0.0;
+ for(k=0,l=0; k<FDMDV_OS_TAPS; k+=FDMDV_OS,l++)
+ out48k[i*FDMDV_OS+j] += fdmdv_os_filter[k+j]*in8k[i-l];
+ out48k[i*FDMDV_OS+j] *= FDMDV_OS;
+
+ }
+ }
+
+ /* update filter memory */
+
+ for(i=-(FDMDV_OS_TAPS/FDMDV_OS); i<0; i++)
+ in8k[i] = in8k[i + n];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_48_to_8()
+ AUTHOR......: David Rowe
+ DATE CREATED: 9 May 2012
+
+ Changes the sample rate of a signal from 48 to 8 kHz.
+
+ n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n
+ samples at the 48 kHz rate. As above however a memory of
+ FDMDV_OS_TAPS samples is reqd for in48k[] (see t48_8.c unit test as example).
+
+ Low pass filter the 48 kHz signal at 4 kHz using the same filter as
+ the upsampler, then just output every FDMDV_OS-th filtered sample.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], int n)
+{
+ int i,j;
+
+ for(i=0; i<n; i++) {
+ out8k[i] = 0.0;
+ for(j=0; j<FDMDV_OS_TAPS; j++)
+ out8k[i] += fdmdv_os_filter[j]*in48k[i*FDMDV_OS-j];
+ }
+
+ /* update filter memory */
+
+ for(i=-FDMDV_OS_TAPS; i<0; i++)
+ in48k[i] = in48k[i + n*FDMDV_OS];
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: fdmdv_get_rx_spectrum()
+ AUTHOR......: David Rowe
+ DATE CREATED: 9 June 2012
+
+ Returns the FDMDV_NSPEC point magnitude spectrum of the rx signal in
+ dB. The spectral samples are scaled so that 0dB is the peak, a good
+ range for plotting is 0 to -40dB.
+
+ Note only the real part of the complex input signal is used at
+ present. A complex variable is used for input for compatability
+ with the other rx signal procesing.
+
+ Successive calls can be used to build up a waterfall or spectrogram
+ plot, by mapping the received levels to colours.
+
+ The time-frequency resolution of the spectrum can be adjusted by varying
+ FDMDV_NSPEC. Note that a 2*FDMDV_NSPEC size FFT is reqd to get
+ FDMDV_NSPEC output points. FDMDV_NSPEC must be a power of 2.
+
+ See octave/tget_spec.m for a demo real time spectral display using
+ Octave. This demo averages the output over time to get a smoother
+ display:
+
+ av = 0.9*av + 0.1*mag_dB
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV *f, float
mag_spec_dB[],
+ COMP rx_fdm[], int nin)
+{
+ int i,j;
+ COMP fft_in[2*FDMDV_NSPEC];
+ COMP fft_out[2*FDMDV_NSPEC];
+ float full_scale_dB;
+
+ /* update buffer of input samples */
+
+ for(i=0; i<2*FDMDV_NSPEC-nin; i++)
+ f->fft_buf[i] = f->fft_buf[i+nin];
+ for(j=0; j<nin; j++,i++)
+ f->fft_buf[i] = rx_fdm[j].real;
+ assert(i == 2*FDMDV_NSPEC);
+
+ /* window and FFT */
+
+ for(i=0; i<2*FDMDV_NSPEC; i++) {
+ fft_in[i].real = f->fft_buf[i] * (0.5 -
0.5*cos((float)i*2.0*PI/(2*FDMDV_NSPEC)));
+ fft_in[i].imag = 0.0;
+ }
+
+ kiss_fft(f->fft_cfg, (kiss_fft_cpx *)fft_in, (kiss_fft_cpx *)fft_out);
+
+ /* FFT scales up a signal of level 1 FDMDV_NSPEC */
+
+ full_scale_dB = 20*log10(FDMDV_NSPEC);
+
+ /* scale and convert to dB */
+
+ for(i=0; i<FDMDV_NSPEC; i++) {
+ mag_spec_dB[i] = 10.0*log10(fft_out[i].real*fft_out[i].real +
fft_out[i].imag*fft_out[i].imag + 1E-12);
+ mag_spec_dB[i] -= full_scale_dB;
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ Function used during development to test if magnitude of digital
+ oscillators was drifting. It was!
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f)
+{
+ int i;
+
+ fprintf(stderr, "phase_tx[]:\n");
+ for(i=0; i<=f->Nc; i++)
+ fprintf(stderr," %1.3f", cabsolute(f->phase_tx[i]));
+ fprintf(stderr,"\nfreq[]:\n");
+ for(i=0; i<=f->Nc; i++)
+ fprintf(stderr," %1.3f", cabsolute(f->freq[i]));
+ fprintf(stderr,"\nfoff_rect %1.3f foff_phase_rect: %1.3f",
cabsolute(f->foff_rect), cabsolute(f->foff_phase_rect));
+ fprintf(stderr,"\nphase_rx[]:\n");
+ for(i=0; i<=f->Nc; i++)
+ fprintf(stderr," %1.3f", cabsolute(f->phase_rx[i]));
+ fprintf(stderr, "\n\n");
+}
diff --git a/gr-vocoder/lib/codec2/fdmdv_internal.h
b/gr-vocoder/lib/codec2/fdmdv_internal.h
new file mode 100644
index 0000000..24080e6
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fdmdv_internal.h
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: fdmdv_internal.h
+ AUTHOR......: David Rowe
+ DATE CREATED: April 16 2012
+
+ Header file for FDMDV internal functions, exposed via this header
+ file for testing.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __FDMDV_INTERNAL__
+#define __FDMDV_INTERNAL__
+
+#include "comp.h"
+#include "codec2_fdmdv.h"
+#include "kiss_fft.h"
+
+/*---------------------------------------------------------------------------*\
+
+ DEFINES
+
+\*---------------------------------------------------------------------------*/
+
+#define PI 3.141592654
+#define FS 8000 /* sample rate in Hz
*/
+#define T (1.0/FS) /* sample period in seconds
*/
+#define RS 50 /* symbol rate in Hz
*/
+#define NC 20 /* max number of data carriers (plus one
pilot in the centre) */
+#define NB 2 /* Bits/symbol for QPSK modulation
*/
+#define RB (NC*RS*NB) /* bit rate
*/
+#define M (FS/RS) /* oversampling factor
*/
+#define NSYM 6 /* number of symbols to filter over
*/
+#define NFILTER (NSYM*M) /* size of tx/rx filters at sample rate M
*/
+
+#define FSEP 75 /* Default separation between carriers
(Hz) */
+
+#define NT 5 /* number of symbols we estimate timing
over */
+#define P 4 /* oversample factor used for initial rx
symbol filtering */
+#define NFILTERTIMING (M+NFILTER+M) /* filter memory used for resampling after
timing estimation */
+
+#define NPILOT_LUT (4*M) /* number of pilot look up table
samples */
+#define NPILOTCOEFF 30 /* number of FIR filter coeffs in
LP filter */
+#define NPILOTBASEBAND (NPILOTCOEFF+M+M/P) /* number of pilot baseband
samples reqd for pilot LPF */
+#define NPILOTLPF (4*M) /* number of samples we DFT pilot
over, pilot est window */
+#define MPILOTFFT 256
+
+#define NSYNC_MEM 6
+
+/* averaging filter coeffs */
+
+#define TRACK_COEFF 0.5
+#define SNR_COEFF 0.9 /* SNR est averaging filter coeff */
+
+/*---------------------------------------------------------------------------*\
+
+ STRUCT for States
+
+\*---------------------------------------------------------------------------*/
+
+struct FDMDV {
+
+ int Nc;
+ float fsep;
+
+ /* test data (test frame) states */
+
+ int ntest_bits;
+ int current_test_bit;
+ int *rx_test_bits_mem;
+
+ /* Modulator */
+
+ int old_qpsk_mapping;
+ int tx_pilot_bit;
+ COMP prev_tx_symbols[NC+1];
+ COMP tx_filter_memory[NC+1][NSYM];
+ COMP phase_tx[NC+1];
+ COMP freq[NC+1];
+
+ /* Pilot generation at demodulator */
+
+ COMP pilot_lut[NPILOT_LUT];
+ int pilot_lut_index;
+ int prev_pilot_lut_index;
+
+ /* freq offset estimation states */
+
+ kiss_fft_cfg fft_pilot_cfg;
+ COMP pilot_baseband1[NPILOTBASEBAND];
+ COMP pilot_baseband2[NPILOTBASEBAND];
+ COMP pilot_lpf1[NPILOTLPF];
+ COMP pilot_lpf2[NPILOTLPF];
+ COMP S1[MPILOTFFT];
+ COMP S2[MPILOTFFT];
+
+ /* freq offset correction states */
+
+ float foff;
+ COMP foff_rect;
+ COMP foff_phase_rect;
+
+ /* Demodulator */
+
+ COMP phase_rx[NC+1];
+ COMP rx_filter_memory[NC+1][NFILTER];
+ COMP rx_filter_mem_timing[NC+1][NT*P];
+ COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING];
+ float rx_timing;
+ COMP phase_difference[NC+1];
+ COMP prev_rx_symbols[NC+1];
+
+ /* sync state machine */
+
+ int sync_mem[NSYNC_MEM];
+ int fest_state;
+ int sync;
+ int timer;
+
+ /* SNR estimation states */
+
+ float sig_est[NC+1];
+ float noise_est[NC+1];
+
+ /* Buf for FFT/waterfall */
+
+ float fft_buf[2*FDMDV_NSPEC];
+ kiss_fft_cfg fft_cfg;
+ };
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION PROTOTYPES
+
+\*---------------------------------------------------------------------------*/
+
+void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[],
int tx_bits[], int *pilot_bit, int old_qpsk_mapping);
+void tx_filter(COMP tx_baseband[NC+1][M], int Nc, COMP tx_symbols[], COMP
tx_filter_memory[NC+1][NSYM]);
+void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC+1][M], COMP
phase_tx[], COMP freq_tx[]);
+void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol, float
*filter_mem, COMP *phase, COMP *freq);
+void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq);
+float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin);
+void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[], COMP
pilot_lpf[], kiss_fft_cfg fft_pilot_cfg, COMP S[], int nin);
+void freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP
*foff_rect, COMP *foff_phase_rect, int nin);
+void fdm_downconvert(COMP rx_baseband[NC+1][M+M/P], int Nc, COMP rx_fdm[],
COMP phase_rx[], COMP freq[], int nin);
+void rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_baseband[NC+1][M+M/P],
COMP rx_filter_memory[NC+1][NFILTER], int nin);
+float rx_est_timing(COMP rx_symbols[], int Nc,
+ COMP rx_filt[NC+1][P+1],
+ COMP rx_baseband[NC+1][M+M/P],
+ COMP rx_filter_mem_timing[NC+1][NT*P],
+ float env[],
+ COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING],
+ int nin);
+float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP
phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[], int
old_qpsk_mapping);
+void snr_update(float sig_est[], float noise_est[], int Nc, COMP
phase_difference[]);
+int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer,
int *sync_mem);
+float calc_snr(int Nc, float sig_est[], float noise_est[]);
+
+#endif
diff --git a/gr-vocoder/lib/codec2/fft.c b/gr-vocoder/lib/codec2/fft.c
deleted file mode 100644
index 19f3141..0000000
--- a/gr-vocoder/lib/codec2/fft.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
- FILE........: fft.c
- AUTHOR......: Bruce Robertson
- DATE CREATED: 20/11/2010
-
- Bridging function to the kiss_fft package.
-
-\*---------------------------------------------------------------------------*/
-
-/*
- Copyright (C) 2010 Bruce Robertson
-
- All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License version 2.1, as
- published by the Free Software Foundation. This program is
- distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <assert.h>
-#include "kiss_fft.h"
-
-/*---------------------------------------------------------------------------*\
-
- GLOBALS
-
-\*---------------------------------------------------------------------------*/
-
-kiss_fft_cpx *fin;
-kiss_fft_cpx *fout;
-kiss_fft_cfg cfg_forward;
-kiss_fft_cfg cfg_reverse;
-
-/*---------------------------------------------------------------------------*\
-
- initialize_fft(int n)
-
- Initialisation function for kiss_fft. This assumes that all calls to fft()
- use the same datatypes and are one arrays of the same size.
-
-\*---------------------------------------------------------------------------*/
-
-void
-initialize_fft (int n)
-{
- fin = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
- assert(fin != NULL);
- fout = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
- assert(fout != NULL);
- cfg_forward = kiss_fft_alloc (n, 0, NULL, NULL);
- assert(cfg_forward != NULL);
- cfg_reverse = kiss_fft_alloc (n, 1, NULL, NULL);
- assert(cfg_reverse != NULL);
-}
-
-/*---------------------------------------------------------------------------*\
-
- fft(float x[], int n, int isign)
- Function that calls kiss_fft with the signature of four1 from NRC.
-
-\*---------------------------------------------------------------------------*/
-
-
-void
-fft (float x[], int n, int isign)
-{
- //int isReverse = 0; // never used
- int c;
- kiss_fft_cfg cfg;
- if (cfg_forward == NULL)
- {
- initialize_fft (n);
- }
- for (c = 0; c < n * 2; c += 2)
- {
- fin[c / 2].r = x[c];
- fin[c / 2].i = -x[c + 1];
- }
- if (isign == -1)
- {
- cfg = cfg_reverse;
- }
- else
- {
- cfg = cfg_forward;
- }
- kiss_fft (cfg, fin, fout);
- for (c = 0; c < n * 2; c += 2)
- {
- x[c] = fout[(c) / 2].r;
- x[c + 1] = -fout[(c) / 2].i;
- }
-}
diff --git a/gr-vocoder/lib/codec2/fft.h b/gr-vocoder/lib/codec2/fft.h
deleted file mode 100644
index d5f8304..0000000
--- a/gr-vocoder/lib/codec2/fft.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
- FILE........: fft.h
- AUTHOR......: Bruce Robertson
- DATE CREATED: 29/11/2010
-
- Bridge between existing code and kiss_fft.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef __FFT__
-#define __FFT__
-void fft(float x[], int n, int isign);
-
-#endif /* __FFT__ */
-
diff --git a/gr-vocoder/lib/codec2/fifo.c b/gr-vocoder/lib/codec2/fifo.c
new file mode 100644
index 0000000..acac261
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fifo.c
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: fifo.c
+ AUTHOR......: David Rowe
+ DATE CREATED: Oct 15 2012
+
+ A FIFO design useful in gluing the FDMDV modem and codec together in
+ integrated applications. The unittest/tfifo indicates these
+ routines are thread safe without the need for syncronisation
+ object, e.g. a different thread can read and write to a fifo at the
+ same time.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "codec2_fifo.h"
+
+struct FIFO {
+ short *buf;
+ short *pin;
+ short *pout;
+ int nshort;
+};
+
+struct FIFO *fifo_create(int nshort) {
+ struct FIFO *fifo;
+
+ fifo = (struct FIFO *)malloc(sizeof(struct FIFO));
+ assert(fifo != NULL);
+
+ fifo->buf = (short*)malloc(sizeof(short)*nshort);
+ assert(fifo->buf != NULL);
+ fifo->pin = fifo->buf;
+ fifo->pout = fifo->buf;
+ fifo->nshort = nshort;
+
+ return fifo;
+}
+
+void fifo_destroy(struct FIFO *fifo) {
+ assert(fifo != NULL);
+ free(fifo->buf);
+ free(fifo);
+}
+
+int fifo_write(struct FIFO *fifo, short data[], int n) {
+ int i;
+ int fifo_free;
+ short *pdata;
+ short *pin = fifo->pin;
+
+ assert(fifo != NULL);
+ assert(data != NULL);
+
+ // available storage is one less than nshort as prd == pwr
+ // is reserved for empty rather than full
+
+ fifo_free = fifo->nshort - fifo_used(fifo) - 1;
+
+ if (n > fifo_free) {
+ return -1;
+ }
+ else {
+
+ /* This could be made more efficient with block copies
+ using memcpy */
+
+ pdata = data;
+ for(i=0; i<n; i++) {
+ *pin++ = *pdata++;
+ if (pin == (fifo->buf + fifo->nshort))
+ pin = fifo->buf;
+ }
+ fifo->pin = pin;
+ }
+
+ return 0;
+}
+
+int fifo_read(struct FIFO *fifo, short data[], int n)
+{
+ int i;
+ short *pdata;
+ short *pout = fifo->pout;
+
+ assert(fifo != NULL);
+ assert(data != NULL);
+
+ if (n > fifo_used(fifo)) {
+ return -1;
+ }
+ else {
+
+ /* This could be made more efficient with block copies
+ using memcpy */
+
+ pdata = data;
+ for(i=0; i<n; i++) {
+ *pdata++ = *pout++;
+ if (pout == (fifo->buf + fifo->nshort))
+ pout = fifo->buf;
+ }
+ fifo->pout = pout;
+ }
+
+ return 0;
+}
+
+int fifo_used(struct FIFO *fifo)
+{
+ short *pin = fifo->pin;
+ short *pout = fifo->pout;
+ unsigned int used;
+
+ assert(fifo != NULL);
+ if (pin >= pout)
+ used = pin - pout;
+ else
+ used = fifo->nshort + (unsigned int)(pin - pout);
+
+ return used;
+}
+
diff --git a/gr-vocoder/lib/codec2/fq20.sh b/gr-vocoder/lib/codec2/fq20.sh
deleted file mode 100755
index 9ccf739..0000000
--- a/gr-vocoder/lib/codec2/fq20.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-# fq20.shsh
-# David Rowe 27 July 2010
-#
-# Decode a file with fully quantised codec at 20ms frame rate
-
-../src/sinedec ../raw/$1.raw $1.mdl -o $1_phase0_lsp_20_EWo2.raw --phase 0
--lpc 10 --lsp --postfilter --dec
-
diff --git a/gr-vocoder/lib/codec2/hanning.h b/gr-vocoder/lib/codec2/hanning.h
new file mode 100644
index 0000000..81d88dc
--- /dev/null
+++ b/gr-vocoder/lib/codec2/hanning.h
@@ -0,0 +1,644 @@
+/* Generated by hanning_file() Octave function */
+
+const float hanning[]={
+ 0,
+ 2.4171e-05,
+ 9.66816e-05,
+ 0.000217525,
+ 0.000386689,
+ 0.000604158,
+ 0.00086991,
+ 0.00118392,
+ 0.00154616,
+ 0.00195659,
+ 0.00241517,
+ 0.00292186,
+ 0.00347661,
+ 0.00407937,
+ 0.00473008,
+ 0.00542867,
+ 0.00617507,
+ 0.00696922,
+ 0.00781104,
+ 0.00870045,
+ 0.00963736,
+ 0.0106217,
+ 0.0116533,
+ 0.0127322,
+ 0.0138581,
+ 0.0150311,
+ 0.0162509,
+ 0.0175175,
+ 0.0188308,
+ 0.0201906,
+ 0.0215968,
+ 0.0230492,
+ 0.0245478,
+ 0.0260923,
+ 0.0276826,
+ 0.0293186,
+ 0.0310001,
+ 0.032727,
+ 0.034499,
+ 0.036316,
+ 0.0381779,
+ 0.0400844,
+ 0.0420354,
+ 0.0440307,
+ 0.04607,
+ 0.0481533,
+ 0.0502802,
+ 0.0524506,
+ 0.0546643,
+ 0.056921,
+ 0.0592206,
+ 0.0615627,
+ 0.0639473,
+ 0.0663741,
+ 0.0688427,
+ 0.0713531,
+ 0.0739048,
+ 0.0764978,
+ 0.0791318,
+ 0.0818064,
+ 0.0845214,
+ 0.0872767,
+ 0.0900718,
+ 0.0929066,
+ 0.0957807,
+ 0.0986939,
+ 0.101646,
+ 0.104636,
+ 0.107665,
+ 0.110732,
+ 0.113836,
+ 0.116978,
+ 0.120156,
+ 0.123372,
+ 0.126624,
+ 0.129912,
+ 0.133235,
+ 0.136594,
+ 0.139989,
+ 0.143418,
+ 0.146881,
+ 0.150379,
+ 0.153911,
+ 0.157476,
+ 0.161074,
+ 0.164705,
+ 0.168368,
+ 0.172063,
+ 0.17579,
+ 0.179549,
+ 0.183338,
+ 0.187158,
+ 0.191008,
+ 0.194888,
+ 0.198798,
+ 0.202737,
+ 0.206704,
+ 0.2107,
+ 0.214724,
+ 0.218775,
+ 0.222854,
+ 0.226959,
+ 0.231091,
+ 0.235249,
+ 0.239432,
+ 0.243641,
+ 0.247874,
+ 0.252132,
+ 0.256414,
+ 0.260719,
+ 0.265047,
+ 0.269398,
+ 0.273772,
+ 0.278167,
+ 0.282584,
+ 0.287021,
+ 0.29148,
+ 0.295958,
+ 0.300456,
+ 0.304974,
+ 0.30951,
+ 0.314065,
+ 0.318638,
+ 0.323228,
+ 0.327835,
+ 0.332459,
+ 0.3371,
+ 0.341756,
+ 0.346427,
+ 0.351113,
+ 0.355814,
+ 0.360528,
+ 0.365256,
+ 0.369997,
+ 0.374751,
+ 0.379516,
+ 0.384293,
+ 0.389082,
+ 0.393881,
+ 0.398691,
+ 0.40351,
+ 0.408338,
+ 0.413176,
+ 0.418022,
+ 0.422876,
+ 0.427737,
+ 0.432605,
+ 0.43748,
+ 0.44236,
+ 0.447247,
+ 0.452138,
+ 0.457034,
+ 0.461935,
+ 0.466839,
+ 0.471746,
+ 0.476655,
+ 0.481568,
+ 0.486481,
+ 0.491397,
+ 0.496313,
+ 0.501229,
+ 0.506145,
+ 0.511061,
+ 0.515976,
+ 0.520889,
+ 0.5258,
+ 0.530708,
+ 0.535614,
+ 0.540516,
+ 0.545414,
+ 0.550308,
+ 0.555197,
+ 0.560081,
+ 0.564958,
+ 0.56983,
+ 0.574695,
+ 0.579552,
+ 0.584402,
+ 0.589244,
+ 0.594077,
+ 0.598901,
+ 0.603715,
+ 0.60852,
+ 0.613314,
+ 0.618097,
+ 0.622868,
+ 0.627628,
+ 0.632375,
+ 0.63711,
+ 0.641831,
+ 0.646538,
+ 0.651232,
+ 0.655911,
+ 0.660574,
+ 0.665222,
+ 0.669855,
+ 0.67447,
+ 0.679069,
+ 0.683651,
+ 0.688215,
+ 0.69276,
+ 0.697287,
+ 0.701795,
+ 0.706284,
+ 0.710752,
+ 0.7152,
+ 0.719627,
+ 0.724033,
+ 0.728418,
+ 0.73278,
+ 0.73712,
+ 0.741437,
+ 0.74573,
+ 0.75,
+ 0.754246,
+ 0.758467,
+ 0.762663,
+ 0.766833,
+ 0.770978,
+ 0.775097,
+ 0.779189,
+ 0.783254,
+ 0.787291,
+ 0.791301,
+ 0.795283,
+ 0.799236,
+ 0.80316,
+ 0.807055,
+ 0.810921,
+ 0.814756,
+ 0.81856,
+ 0.822334,
+ 0.826077,
+ 0.829788,
+ 0.833468,
+ 0.837115,
+ 0.840729,
+ 0.844311,
+ 0.847859,
+ 0.851374,
+ 0.854855,
+ 0.858301,
+ 0.861713,
+ 0.86509,
+ 0.868431,
+ 0.871737,
+ 0.875007,
+ 0.87824,
+ 0.881437,
+ 0.884598,
+ 0.887721,
+ 0.890806,
+ 0.893854,
+ 0.896864,
+ 0.899835,
+ 0.902768,
+ 0.905661,
+ 0.908516,
+ 0.911331,
+ 0.914106,
+ 0.916841,
+ 0.919536,
+ 0.92219,
+ 0.924804,
+ 0.927376,
+ 0.929907,
+ 0.932397,
+ 0.934845,
+ 0.93725,
+ 0.939614,
+ 0.941935,
+ 0.944213,
+ 0.946448,
+ 0.94864,
+ 0.950789,
+ 0.952894,
+ 0.954955,
+ 0.956972,
+ 0.958946,
+ 0.960874,
+ 0.962759,
+ 0.964598,
+ 0.966393,
+ 0.968142,
+ 0.969846,
+ 0.971505,
+ 0.973118,
+ 0.974686,
+ 0.976207,
+ 0.977683,
+ 0.979112,
+ 0.980495,
+ 0.981832,
+ 0.983122,
+ 0.984365,
+ 0.985561,
+ 0.986711,
+ 0.987813,
+ 0.988868,
+ 0.989876,
+ 0.990837,
+ 0.99175,
+ 0.992616,
+ 0.993434,
+ 0.994204,
+ 0.994927,
+ 0.995601,
+ 0.996228,
+ 0.996807,
+ 0.997337,
+ 0.99782,
+ 0.998255,
+ 0.998641,
+ 0.998979,
+ 0.999269,
+ 0.999511,
+ 0.999704,
+ 0.999849,
+ 0.999946,
+ 0.999994,
+ 0.999994,
+ 0.999946,
+ 0.999849,
+ 0.999704,
+ 0.999511,
+ 0.999269,
+ 0.998979,
+ 0.998641,
+ 0.998255,
+ 0.99782,
+ 0.997337,
+ 0.996807,
+ 0.996228,
+ 0.995601,
+ 0.994927,
+ 0.994204,
+ 0.993434,
+ 0.992616,
+ 0.99175,
+ 0.990837,
+ 0.989876,
+ 0.988868,
+ 0.987813,
+ 0.986711,
+ 0.985561,
+ 0.984365,
+ 0.983122,
+ 0.981832,
+ 0.980495,
+ 0.979112,
+ 0.977683,
+ 0.976207,
+ 0.974686,
+ 0.973118,
+ 0.971505,
+ 0.969846,
+ 0.968142,
+ 0.966393,
+ 0.964598,
+ 0.962759,
+ 0.960874,
+ 0.958946,
+ 0.956972,
+ 0.954955,
+ 0.952894,
+ 0.950789,
+ 0.94864,
+ 0.946448,
+ 0.944213,
+ 0.941935,
+ 0.939614,
+ 0.93725,
+ 0.934845,
+ 0.932397,
+ 0.929907,
+ 0.927376,
+ 0.924804,
+ 0.92219,
+ 0.919536,
+ 0.916841,
+ 0.914106,
+ 0.911331,
+ 0.908516,
+ 0.905661,
+ 0.902768,
+ 0.899835,
+ 0.896864,
+ 0.893854,
+ 0.890806,
+ 0.887721,
+ 0.884598,
+ 0.881437,
+ 0.87824,
+ 0.875007,
+ 0.871737,
+ 0.868431,
+ 0.86509,
+ 0.861713,
+ 0.858301,
+ 0.854855,
+ 0.851374,
+ 0.847859,
+ 0.844311,
+ 0.840729,
+ 0.837115,
+ 0.833468,
+ 0.829788,
+ 0.826077,
+ 0.822334,
+ 0.81856,
+ 0.814756,
+ 0.810921,
+ 0.807055,
+ 0.80316,
+ 0.799236,
+ 0.795283,
+ 0.791301,
+ 0.787291,
+ 0.783254,
+ 0.779189,
+ 0.775097,
+ 0.770978,
+ 0.766833,
+ 0.762663,
+ 0.758467,
+ 0.754246,
+ 0.75,
+ 0.74573,
+ 0.741437,
+ 0.73712,
+ 0.73278,
+ 0.728418,
+ 0.724033,
+ 0.719627,
+ 0.7152,
+ 0.710752,
+ 0.706284,
+ 0.701795,
+ 0.697287,
+ 0.69276,
+ 0.688215,
+ 0.683651,
+ 0.679069,
+ 0.67447,
+ 0.669855,
+ 0.665222,
+ 0.660574,
+ 0.655911,
+ 0.651232,
+ 0.646538,
+ 0.641831,
+ 0.63711,
+ 0.632375,
+ 0.627628,
+ 0.622868,
+ 0.618097,
+ 0.613314,
+ 0.60852,
+ 0.603715,
+ 0.598901,
+ 0.594077,
+ 0.589244,
+ 0.584402,
+ 0.579552,
+ 0.574695,
+ 0.56983,
+ 0.564958,
+ 0.560081,
+ 0.555197,
+ 0.550308,
+ 0.545414,
+ 0.540516,
+ 0.535614,
+ 0.530708,
+ 0.5258,
+ 0.520889,
+ 0.515976,
+ 0.511061,
+ 0.506145,
+ 0.501229,
+ 0.496313,
+ 0.491397,
+ 0.486481,
+ 0.481568,
+ 0.476655,
+ 0.471746,
+ 0.466839,
+ 0.461935,
+ 0.457034,
+ 0.452138,
+ 0.447247,
+ 0.44236,
+ 0.43748,
+ 0.432605,
+ 0.427737,
+ 0.422876,
+ 0.418022,
+ 0.413176,
+ 0.408338,
+ 0.40351,
+ 0.398691,
+ 0.393881,
+ 0.389082,
+ 0.384293,
+ 0.379516,
+ 0.374751,
+ 0.369997,
+ 0.365256,
+ 0.360528,
+ 0.355814,
+ 0.351113,
+ 0.346427,
+ 0.341756,
+ 0.3371,
+ 0.332459,
+ 0.327835,
+ 0.323228,
+ 0.318638,
+ 0.314065,
+ 0.30951,
+ 0.304974,
+ 0.300456,
+ 0.295958,
+ 0.29148,
+ 0.287021,
+ 0.282584,
+ 0.278167,
+ 0.273772,
+ 0.269398,
+ 0.265047,
+ 0.260719,
+ 0.256414,
+ 0.252132,
+ 0.247874,
+ 0.243641,
+ 0.239432,
+ 0.235249,
+ 0.231091,
+ 0.226959,
+ 0.222854,
+ 0.218775,
+ 0.214724,
+ 0.2107,
+ 0.206704,
+ 0.202737,
+ 0.198798,
+ 0.194888,
+ 0.191008,
+ 0.187158,
+ 0.183338,
+ 0.179549,
+ 0.17579,
+ 0.172063,
+ 0.168368,
+ 0.164705,
+ 0.161074,
+ 0.157476,
+ 0.153911,
+ 0.150379,
+ 0.146881,
+ 0.143418,
+ 0.139989,
+ 0.136594,
+ 0.133235,
+ 0.129912,
+ 0.126624,
+ 0.123372,
+ 0.120156,
+ 0.116978,
+ 0.113836,
+ 0.110732,
+ 0.107665,
+ 0.104636,
+ 0.101646,
+ 0.0986939,
+ 0.0957807,
+ 0.0929066,
+ 0.0900718,
+ 0.0872767,
+ 0.0845214,
+ 0.0818064,
+ 0.0791318,
+ 0.0764978,
+ 0.0739048,
+ 0.0713531,
+ 0.0688427,
+ 0.0663741,
+ 0.0639473,
+ 0.0615627,
+ 0.0592206,
+ 0.056921,
+ 0.0546643,
+ 0.0524506,
+ 0.0502802,
+ 0.0481533,
+ 0.04607,
+ 0.0440307,
+ 0.0420354,
+ 0.0400844,
+ 0.0381779,
+ 0.036316,
+ 0.034499,
+ 0.032727,
+ 0.0310001,
+ 0.0293186,
+ 0.0276826,
+ 0.0260923,
+ 0.0245478,
+ 0.0230492,
+ 0.0215968,
+ 0.0201906,
+ 0.0188308,
+ 0.0175175,
+ 0.0162509,
+ 0.0150311,
+ 0.0138581,
+ 0.0127322,
+ 0.0116533,
+ 0.0106217,
+ 0.00963736,
+ 0.00870045,
+ 0.00781104,
+ 0.00696922,
+ 0.00617507,
+ 0.00542867,
+ 0.00473008,
+ 0.00407937,
+ 0.00347661,
+ 0.00292186,
+ 0.00241517,
+ 0.00195659,
+ 0.00154616,
+ 0.00118392,
+ 0.00086991,
+ 0.000604158,
+ 0.000386689,
+ 0.000217525,
+ 9.66816e-05,
+ 2.4171e-05,
+ 0
+};
diff --git a/gr-vocoder/lib/codec2/interp.c b/gr-vocoder/lib/codec2/interp.c
index fad4554..be89fc3 100644
--- a/gr-vocoder/lib/codec2/interp.c
+++ b/gr-vocoder/lib/codec2/interp.c
@@ -29,13 +29,11 @@
#include <math.h>
#include <string.h>
#include <stdio.h>
-#include <stdlib.h>
#include "defines.h"
#include "interp.h"
#include "lsp.h"
#include "quantise.h"
-#include "dump.h"
float sample_log_amp(MODEL *model, float w);
@@ -113,23 +111,19 @@ float sample_log_amp(MODEL *model, float w)
assert(w > 0.0); assert (w <= PI);
- m = 0;
- while ((m+1)*model->Wo < w) m++;
- f = (w - m*model->Wo)/model->Wo;
+ m = floorf(w/model->Wo + 0.5);
+ f = (w - m*model->Wo)/w;
assert(f <= 1.0);
if (m < 1) {
- log_amp = f*log10(model->A[1] + 1E-6);
+ log_amp = f*log10f(model->A[1] + 1E-6);
}
else if ((m+1) > model->L) {
- log_amp = (1.0-f)*log10(model->A[model->L] + 1E-6);
+ log_amp = (1.0-f)*log10f(model->A[model->L] + 1E-6);
}
else {
- log_amp = (1.0-f)*log10(model->A[m] + 1E-6) +
- f*log10(model->A[m+1] + 1E-6);
- //printf("m=%d A[m] %f A[m+1] %f x %f %f %f\n", m, model->A[m],
- // model->A[m+1], pow(10.0, log_amp),
- // (1-f), f);
+ log_amp = (1.0-f)*log10f(model->A[m] + 1E-6) +
+ f*log10f(model->A[m+1] + 1E-6);
}
return log_amp;
@@ -137,338 +131,193 @@ float sample_log_amp(MODEL *model, float w)
/*---------------------------------------------------------------------------*\
- FUNCTION....: sample_log_amp_quad()
+ FUNCTION....: interp_lsp()
AUTHOR......: David Rowe
- DATE CREATED: 9 March 2011
-
- Samples the amplitude envelope at an arbitrary frequency w. Uses
- quadratic interpolation in the log domain to sample between harmonic
- amplitudes.
-
- y(x) = ax*x + bx + c
+ DATE CREATED: 10 Nov 2010
- We assume three points are x=-1, x=0, x=1, which we map to m-1,m,m+1
+ Given two frames decribed by model parameters 20ms apart, determines
+ the model parameters of the 10ms frame between them. Assumes
+ voicing is available for middle (interpolated) frame. Outputs are
+ amplitudes and Wo for the interpolated frame.
- c = y(0)
- b = (y(1) - y(-1))/2
- a = y(-1) + b - y(0)
+ This version uses interpolation of LSPs, seems to do a better job
+ with bg noise.
\*---------------------------------------------------------------------------*/
-float sample_log_amp_quad(MODEL *model, float w)
+void interpolate_lsp(
+ kiss_fft_cfg fft_fwd_cfg,
+ MODEL *interp, /* interpolated model params */
+ MODEL *prev, /* previous frames model params */
+ MODEL *next, /* next frames model params */
+ float *prev_lsps, /* previous frames LSPs */
+ float prev_e, /* previous frames LPC energy */
+ float *next_lsps, /* next frames LSPs */
+ float next_e, /* next frames LPC energy */
+ float *ak_interp, /* interpolated aks for this frame */
+ float *lsps_interp/* interpolated lsps for this frame */
+)
{
- int m;
- float a,b,c,x, log_amp;
+ int i;
+ float e;
+ float snr;
- assert(w > 0.0); assert (w <= PI);
+ /* trap corner case where V est is probably wrong */
- m = floor(w/model->Wo + 0.5);
- if (m < 2) m = 2;
- if (m > (model->L-1)) m = model->L-1;
- c = log10(model->A[m]+1E-6);
- b = (log10(model->A[m+1]+1E-6) - log10(model->A[m-1]+1E-6))/2.0;
- a = log10(model->A[m-1]+1E-6) + b - c;
- x = (w - m*model->Wo)/model->Wo;
-
- log_amp = a*x*x + b*x + c;
- //printf("m=%d A[m-1] %f A[m] %f A[m+1] %f w %f x %f log_amp %f\n", m,
- // model->A[m-1],
- // model->A[m], model->A[m+1], w, x, pow(10.0, log_amp));
- return log_amp;
-}
+ if (interp->voiced && !prev->voiced && !next->voiced) {
+ interp->voiced = 0;
+ }
-/*---------------------------------------------------------------------------*\
+ /* Wo depends on voicing of this and adjacent frames */
- FUNCTION....: sample_log_amp_quad_nl()
- AUTHOR......: David Rowe
- DATE CREATED: 10 March 2011
+ if (interp->voiced) {
+ if (prev->voiced && next->voiced)
+ interp->Wo = (prev->Wo + next->Wo)/2.0;
+ if (!prev->voiced && next->voiced)
+ interp->Wo = next->Wo;
+ if (prev->voiced && !next->voiced)
+ interp->Wo = prev->Wo;
+ }
+ else {
+ interp->Wo = TWO_PI/P_MAX;
+ }
+ interp->L = PI/interp->Wo;
- Samples the amplitude envelope at an arbitrary frequency w. Uses
- quadratic interpolation in the log domain to sample between harmonic
- amplitudes. This version can handle non-linear steps along a freq
- axis defined by arbitrary steps.
+ //printf(" interp: prev_v: %d next_v: %d prev_Wo: %f next_Wo: %f\n",
+ // prev->voiced, next->voiced, prev->Wo, next->Wo);
+ //printf(" interp: Wo: %1.5f L: %d\n", interp->Wo, interp->L);
- y(x) = ax*x + bx + c
+ /* interpolate LSPs */
- We assume three points are (x_1,y_1), (0,y0) and (x1,y1).
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_interp[i] = (prev_lsps[i] + next_lsps[i])/2.0;
+ }
-\*---------------------------------------------------------------------------*/
+ /* Interpolate LPC energy in log domain */
-float sample_log_amp_quad_nl(
- float w[], /* frequency points */
- float A[], /* for these amplitude samples */
- int np, /* number of frequency points */
- float w_sample /* frequency of new samples */
-)
-{
- int m,i;
- float a,b,c,x, log_amp, best_dist;
- float x_1, x1;
- float y_1, y0, y1;
-
- //printf("w_sample %f\n", w_sample);
- assert(w_sample >= 0.0); assert (w_sample <= 1.1*PI);
-
- /* find closest point to centre quadratic interpolator */
-
- best_dist = 1E32;
- m = 0;
- for (i=0; i<np; i++)
- if (fabs(w[i] - w_sample) < best_dist) {
- best_dist = fabs(w[i] - w_sample);
- m = i;
- }
-
- /* stay one point away from edge of array */
-
- if (m < 1) m = 1;
- if (m > (np-2)) m = np - 2;
-
- /* find polynomial coeffs */
-
- x_1 = w[m-1]- w[m]; x1 = w[m+1] - w[m];
- y_1 = log10(A[m-1]+1E-6);
- y0 = log10(A[m]+1E-6);
- y1 = log10(A[m+1]+1E-6);
-
- c = y0;
- a = (y_1*x1 - y1*x_1 + c*x_1 - c*x1)/(x_1*x_1*x1 - x1*x1*x_1);
- b = (y1 -a*x1*x1 - c)/x1;
- x = w_sample - w[m];
-
- //printf("%f %f %f\n", w[0], w[1], w[2]);
- //printf("%f %f %f %f %f %f\n", x_1, y_1, 0.0, y0, x1, y1);
- log_amp = a*x*x + b*x + c;
- //printf("a %f b %f c %f\n", a, b, c);
- //printf("m=%d A[m-1] %f A[m] %f A[m+1] %f w_sample %f w[m] %f x %f
log_amp %f\n", m,
- // A[m-1],
- // A[m], A[m+1], w_sample, w[m], x, log_amp);
- //exit(0);
- return log_amp;
-}
+ e = powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
+ //printf(" interp: e: %f\n", e);
-#define M_MAX 40
+ /* convert back to amplitudes */
+
+ lsp_to_lpc(lsps_interp, ak_interp, LPC_ORD);
+ aks_to_M2(fft_fwd_cfg, ak_interp, LPC_ORD, interp, e, &snr, 0, 0, 1, 1,
LPCPF_BETA, LPCPF_GAMMA);
+ //printf(" interp: ak[1]: %f A[1] %f\n", ak_interp[1], interp->A[1]);
+}
-float fres[] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000,
- 1200, 1400, 1600, 1850, 2100, 2350, 2600, 2900, 3400, 3800};
/*---------------------------------------------------------------------------*\
- FUNCTION....: resample_amp_nl()
+ FUNCTION....: interp_Wo()
AUTHOR......: David Rowe
- DATE CREATED: 7 March 2011
+ DATE CREATED: 22 May 2012
- Converts the current model with L {Am} samples spaced Wo apart to
- RES_POINTS samples spaced Wo/RES_POINTS apart. Then subtracts
- from the previous frames samples to get the delta.
+ Interpolates centre 10ms sample of Wo and L samples given two
+ samples 20ms apart. Assumes voicing is available for centre
+ (interpolated) frame.
\*---------------------------------------------------------------------------*/
-void resample_amp_fixed(MODEL *model,
- float w[], float A[],
- float wres[], float Ares[],
- float AresdB_prev[],
- float AresdB[],
- float deltat[])
+void interp_Wo(
+ MODEL *interp, /* interpolated model params */
+ MODEL *prev, /* previous frames model params */
+ MODEL *next /* next frames model params */
+ )
{
- int i;
-
- for(i=1; i<=model->L; i++) {
- w[i-1] = i*model->Wo;
- A[i-1] = model->A[i];
- }
-
- for(i=0; i<RES_POINTS; i++) {
- wres[i] = fres[i]*PI/4000.0;
- }
-
- for(i=0; i<RES_POINTS; i++) {
- Ares[i] = pow(10.0,sample_log_amp_quad_nl(w, A, model->L, wres[i]));
- }
-
- /* work out delta T vector for this frame */
-
- for(i=0; i<RES_POINTS; i++) {
- AresdB[i] = 20.0*log10(Ares[i]);
- deltat[i] = AresdB[i] - AresdB_prev[i];
- }
-
+ interp_Wo2(interp, prev, next, 0.5);
}
/*---------------------------------------------------------------------------*\
- FUNCTION....: resample_amp_nl()
+ FUNCTION....: interp_Wo2()
AUTHOR......: David Rowe
- DATE CREATED: 7 March 2011
-
- Converts the current model with L {Am} samples spaced Wo apart to M
- samples spaced Wo/M apart. Then converts back to L {Am} samples.
- used to prototype constant rate Amplitude encoding ideas.
+ DATE CREATED: 22 May 2012
- Returns the SNR in dB.
+ Weighted interpolation of two Wo samples.
\*---------------------------------------------------------------------------*/
-float resample_amp_nl(MODEL *model, int m, float AresdB_prev[])
+void interp_Wo2(
+ MODEL *interp, /* interpolated model params */
+ MODEL *prev, /* previous frames model params */
+ MODEL *next, /* next frames model params */
+ float weight
+)
{
- int i;
- float w[MAX_AMP], A[MAX_AMP];
- float wres[MAX_AMP], Ares[MAX_AMP], AresdB[MAX_AMP];
- float signal, noise, snr;
- float new_A;
- float deltat[MAX_AMP], deltat_q[MAX_AMP], AresdB_q[MAX_AMP];
-
- resample_amp_fixed(model, w, A, wres, Ares, AresdB_prev, AresdB, deltat);
-
- /* quantise delta T vector */
-
- for(i=0; i<RES_POINTS; i++) {
- noise = 3.0*(1.0 - 2.0*rand()/RAND_MAX);
- //noise = 0.0;
- deltat_q[i] = deltat[i] + noise;
- }
+ /* trap corner case where voicing est is probably wrong */
- /* recover Ares vector */
-
- for(i=0; i<RES_POINTS; i++) {
- AresdB_q[i] = AresdB_prev[i] + deltat_q[i];
- Ares[i] = pow(10.0, AresdB_q[i]/20.0);
- //printf("%d %f %f\n", i, AresdB[i], AresdB_q[i]);
+ if (interp->voiced && !prev->voiced && !next->voiced) {
+ interp->voiced = 0;
}
- /* update memory based on version at decoder */
+ /* Wo depends on voicing of this and adjacent frames */
- for(i=0; i<RES_POINTS; i++) {
- AresdB_prev[i] = AresdB_q[i];
+ if (interp->voiced) {
+ if (prev->voiced && next->voiced)
+ interp->Wo = (1.0 - weight)*prev->Wo + weight*next->Wo;
+ if (!prev->voiced && next->voiced)
+ interp->Wo = next->Wo;
+ if (prev->voiced && !next->voiced)
+ interp->Wo = prev->Wo;
}
-
-#ifdef DUMP
- dump_resample(wres,Ares,M_MAX);
-#endif
-
- signal = noise = 0.0;
-
- for(i=1; i<model->L; i++) {
- new_A = pow(10.0,sample_log_amp_quad_nl(wres, Ares, RES_POINTS,
model->Wo*i));
- signal += pow(model->A[i], 2.0);
- noise += pow(model->A[i] - new_A, 2.0);
- //printf("%f %f\n", model->A[i], new_A);
- model->A[i] = new_A;
+ else {
+ interp->Wo = TWO_PI/P_MAX;
}
-
- snr = 10.0*log10(signal/noise);
- printf("snr = %3.2f\n", snr);
- //exit(0);
- return snr;
+ interp->L = PI/interp->Wo;
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: resample_amp()
+ FUNCTION....: interp_energy()
AUTHOR......: David Rowe
- DATE CREATED: 10 March 2011
-
- Converts the current model with L {Am} samples spaced Wo apart to M
- samples with a non-linear spacing. Then converts back to L {Am}
- samples. used to prototype constant rate Amplitude encoding ideas.
+ DATE CREATED: 22 May 2012
- Returns the SNR in dB.
+ Interpolates centre 10ms sample of energy given two samples 20ms
+ apart.
\*---------------------------------------------------------------------------*/
-float resample_amp(MODEL *model, int m)
+float interp_energy(float prev_e, float next_e)
{
- int i;
- MODEL model_m;
- float new_A, signal, noise, snr, log_amp_dB;
- float n_db = 0.0;
-
- model_m.Wo = PI/(float)m;
- model_m.L = PI/model_m.Wo;
-
- for(i=1; i<=model_m.L; i++) {
- log_amp_dB = 20.0*sample_log_amp_quad(model, i*model_m.Wo);
- log_amp_dB += n_db*(1.0 - 2.0*rand()/RAND_MAX);
- model_m.A[i] = pow(10,log_amp_dB/20.0);
- }
-
- //dump_resample(&model_m);
-
- signal = noise = 0.0;
+ return powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
- for(i=1; i<model->L/4; i++) {
- new_A = pow(10,sample_log_amp_quad(&model_m, i*model->Wo));
- signal += pow(model->A[i], 2.0);
- noise += pow(model->A[i] - new_A, 2.0);
- //printf("%f %f\n", model->A[i], new_A);
- model->A[i] = new_A;
- }
-
- snr = 10.0*log10(signal/noise);
- //printf("snr = %3.2f\n", snr);
- //exit(0);
- return snr;
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: interp_lsp()
+ FUNCTION....: interp_energy2()
AUTHOR......: David Rowe
- DATE CREATED: 10 Nov 2010
-
- Given two frames decribed by model parameters 20ms apart, determines
- the model parameters of the 10ms frame between them. Assumes
- voicing is available for middle (interpolated) frame. Outputs are
- amplitudes and Wo for the interpolated frame.
+ DATE CREATED: 22 May 2012
- This version uses interpolation of LSPs, seems to do a better job
- with bg noise.
+ Interpolates centre 10ms sample of energy given two samples 20ms
+ apart.
\*---------------------------------------------------------------------------*/
-void interpolate_lsp(
- MODEL *interp, /* interpolated model params */
- MODEL *prev, /* previous frames model params */
- MODEL *next, /* next frames model params */
- float *prev_lsps, /* previous frames LSPs */
- float prev_e, /* previous frames LPC energy */
- float *next_lsps, /* next frames LSPs */
- float next_e, /* next frames LPC energy */
- float *ak_interp /* interpolated aks for this frame */
- )
+float interp_energy2(float prev_e, float next_e, float weight)
{
- //int l,i;
- int i;
- float lsps[LPC_ORD],e;
- float snr;
+ return powf(10.0, (1.0 - weight)*log10f(prev_e) + weight*log10f(next_e));
- /* Wo depends on voicing of this and adjacent frames */
+}
- if (interp->voiced) {
- if (prev->voiced && next->voiced)
- interp->Wo = (prev->Wo + next->Wo)/2.0;
- if (!prev->voiced && next->voiced)
- interp->Wo = next->Wo;
- if (prev->voiced && !next->voiced)
- interp->Wo = prev->Wo;
- }
- else {
- interp->Wo = TWO_PI/P_MAX;
- }
- interp->L = PI/interp->Wo;
- /* interpolate LSPs */
+/*---------------------------------------------------------------------------*\
- for(i=0; i<LPC_ORD; i++) {
- lsps[i] = (prev_lsps[i] + next_lsps[i])/2.0;
- }
+ FUNCTION....: interpolate_lsp_ver2()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22 May 2012
- /* Interpolate LPC energy in log domain */
+ Weighted interpolation of LSPs.
- e = pow(10.0, (log10(prev_e) + log10(next_e))/2.0);
+\*---------------------------------------------------------------------------*/
- /* convert back to amplitudes */
+void interpolate_lsp_ver2(float interp[], float prev[], float next[], float
weight)
+{
+ int i;
- lsp_to_lpc(lsps, ak_interp, LPC_ORD);
- aks_to_M2(ak_interp, LPC_ORD, interp, e, &snr, 0);
+ for(i=0; i<LPC_ORD; i++)
+ interp[i] = (1.0 - weight)*prev[i] + weight*next[i];
}
+
diff --git a/gr-vocoder/lib/codec2/interp.h b/gr-vocoder/lib/codec2/interp.h
index d509726..24cb946 100644
--- a/gr-vocoder/lib/codec2/interp.h
+++ b/gr-vocoder/lib/codec2/interp.h
@@ -28,14 +28,18 @@
#ifndef __INTERP__
#define __INTERP__
-#define RES_POINTS 20
+#include "kiss_fft.h"
void interpolate(MODEL *interp, MODEL *prev, MODEL *next);
-void interpolate_lsp(MODEL *interp, MODEL *prev, MODEL *next,
+void interpolate_lsp(kiss_fft_cfg fft_dec_cfg,
+ MODEL *interp, MODEL *prev, MODEL *next,
float *prev_lsps, float prev_e,
float *next_lsps, float next_e,
- float *ak_interp);
-float resample_amp(MODEL *model, int m);
-float resample_amp_nl(MODEL *model, int m, float Ares_prev[]);
+ float *ak_interp, float *lsps_interp);
+void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next);
+void interp_Wo2(MODEL *interp, MODEL *prev, MODEL *next, float weight);
+float interp_energy(float prev, float next);
+float interp_energy2(float prev, float next, float weight);
+void interpolate_lsp_ver2(float interp[], float prev[], float next[], float
weight);
#endif
diff --git a/gr-vocoder/lib/codec2/listensim.sh
b/gr-vocoder/lib/codec2/listensim.sh
deleted file mode 100755
index 0b27a1b..0000000
--- a/gr-vocoder/lib/codec2/listensim.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-# listensim.sh
-# David Rowe 10 Sep 2009
-#
-# Listen to files processed with sim.sh
-
-../script/menu.sh ../raw/$1.raw $1_uq.raw $1_phase0.raw $1_lpc10.raw
$1_phase0_lpc10.raw $1_phase0_lpc10_dec.raw $1_phase0_lsp_dec.raw $2 $3
-
-
diff --git a/gr-vocoder/lib/codec2/lpc.c b/gr-vocoder/lib/codec2/lpc.c
index 1784f75..9a730eb 100644
--- a/gr-vocoder/lib/codec2/lpc.c
+++ b/gr-vocoder/lib/codec2/lpc.c
@@ -2,14 +2,14 @@
FILE........: lpc.c
AUTHOR......: David Rowe
- DATE CREATED: 30/9/90
+ DATE CREATED: 30 Sep 1990 (!)
Linear Prediction functions written in C.
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2009 David Rowe
+ Copyright (C) 2009-2012 David Rowe
All rights reserved.
@@ -28,6 +28,9 @@
#define LPC_MAX_N 512 /* maximum no. of samples in frame */
#define PI 3.141592654 /* mathematical constant */
+#define ALPHA 1.0
+#define BETA 0.94
+
#include <assert.h>
#include <math.h>
#include "defines.h"
@@ -35,6 +38,60 @@
/*---------------------------------------------------------------------------*\
+ pre_emp()
+
+ Pre-emphasise (high pass filter with zero close to 0 Hz) a frame of
+ speech samples. Helps reduce dynamic range of LPC spectrum, giving
+ greater weight and hensea better match to low energy formants.
+
+ Should be balanced by de-emphasis of the output speech.
+
+\*---------------------------------------------------------------------------*/
+
+void pre_emp(
+ float Sn_pre[], /* output frame of speech samples */
+ float Sn[], /* input frame of speech samples */
+ float *mem, /* Sn[-1]single sample memory */
+ int Nsam /* number of speech samples to use */
+)
+{
+ int i;
+
+ for(i=0; i<Nsam; i++) {
+ Sn_pre[i] = Sn[i] - ALPHA * mem[0];
+ mem[0] = Sn[i];
+ }
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ de_emp()
+
+ De-emphasis filter (low pass filter with polse close to 0 Hz).
+
+\*---------------------------------------------------------------------------*/
+
+void de_emp(
+ float Sn_de[], /* output frame of speech samples */
+ float Sn[], /* input frame of speech samples */
+ float *mem, /* Sn[-1]single sample memory */
+ int Nsam /* number of speech samples to use */
+)
+{
+ int i;
+
+ for(i=0; i<Nsam; i++) {
+ Sn_de[i] = Sn[i] + BETA * mem[0];
+ mem[0] = Sn_de[i];
+ }
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
hanning_window()
Hanning windows a frame of speech samples.
@@ -50,7 +107,7 @@ void hanning_window(
int i; /* loop variable */
for(i=0; i<Nsam; i++)
- Wn[i] = Sn[i]*(0.5 - 0.5*cos(2*PI*(float)i/(Nsam-1)));
+ Wn[i] = Sn[i]*(0.5 - 0.5*cosf(2*PI*(float)i/(Nsam-1)));
}
/*---------------------------------------------------------------------------*\
@@ -80,33 +137,6 @@ void autocorrelate(
/*---------------------------------------------------------------------------*\
- autocorrelate_freq()
-
- Finds the first P autocorrelation values from an array of frequency domain
- power samples.
-
-\*---------------------------------------------------------------------------*/
-
-void autocorrelate_freq(
- float Pw[], /* Nsam frequency domain power spectrum samples */
- float w[], /* frequency of each sample in Pw[] */
- float R[], /* array of order+1 autocorrelation coefficients */
- int Nsam, /* number of windowed samples to use */
- int order /* order of LPC analysis */
-)
-{
- int i,j; /* loop variables */
-
- for(j=0; j<order+1; j++) {
- R[j] = 0.0;
- for(i=0; i<Nsam; i++)
- R[j] += Pw[i]*cos(j*w[i]);
- }
- R[j] /= Nsam;
-}
-
-/*---------------------------------------------------------------------------*\
-
levinson_durbin()
Given P+1 autocorrelation coefficients, finds P Linear Prediction Coeff.
@@ -139,7 +169,7 @@ void levinson_durbin(
for(j=1; j<=i-1; j++)
sum += a[i-1][j]*R[i-j];
k[i] = -1.0*(R[i] + sum)/E[i-1]; /* Equation 38b, Makhoul */
- if (fabs(k[i]) > 1.0)
+ if (fabsf(k[i]) > 1.0)
k[i] = 0.0;
a[i][i] = k[i];
@@ -274,6 +304,6 @@ void weight(
int i;
for(i=1; i<=order; i++)
- akw[i] = ak[i]*pow(gamma,(float)i);
+ akw[i] = ak[i]*powf(gamma,(float)i);
}
diff --git a/gr-vocoder/lib/codec2/lpc.h b/gr-vocoder/lib/codec2/lpc.h
index 9125189..482aa1f 100644
--- a/gr-vocoder/lib/codec2/lpc.h
+++ b/gr-vocoder/lib/codec2/lpc.h
@@ -9,7 +9,7 @@
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2009 David Rowe
+ Copyright (C) 2009-2012 David Rowe
All rights reserved.
@@ -30,9 +30,10 @@
#define LPC_MAX_ORDER 20
+void pre_emp(float Sn_pre[], float Sn[], float *mem, int Nsam);
+void de_emp(float Sn_se[], float Sn[], float *mem, int Nsam);
void hanning_window(float Sn[], float Wn[], int Nsam);
void autocorrelate(float Sn[], float Rn[], int Nsam, int order);
-void autocorrelate_freq(float Pw[], float w[], float R[], int Nsam, int
order);
void levinson_durbin(float R[], float lpcs[], int order);
void inverse_filter(float Sn[], float a[], int Nsam, float res[], int order);
void synthesis_filter(float res[], float a[], int Nsam, int order,
float Sn_[]);
diff --git a/gr-vocoder/lib/codec2/lsp.c b/gr-vocoder/lib/codec2/lsp.c
index b57507b..3f34444 100644
--- a/gr-vocoder/lib/codec2/lsp.c
+++ b/gr-vocoder/lib/codec2/lsp.c
@@ -212,7 +212,7 @@ int lpc_to_lsp (float *a, int lpcrdr, float *freq, int nb,
float delta)
interval between xl and xr and repeat till root is located
within the specified limits */
- if((psumr*psuml)<0.0){
+ if(((psumr*psuml)<0.0) || (psumr == 0.0)){
roots++;
psumm=psuml;
diff --git a/gr-vocoder/lib/codec2/machdep.h b/gr-vocoder/lib/codec2/machdep.h
new file mode 100644
index 0000000..ef2e649
--- /dev/null
+++ b/gr-vocoder/lib/codec2/machdep.h
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: machdep.h
+ AUTHOR......: David Rowe
+ DATE CREATED: May 2 2013
+
+ Machine dependant functions.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2013 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __MACHDEP__
+#define __MACHDEP__
+
+#ifdef TIMER
+#define TIMER_VAR(...) unsigned int __VA_ARGS__
+#define TIMER_SAMPLE(timestamp) timestamp = machdep_timer_sample()
+#define TIMER_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \
+ timestamp = machdep_timer_sample_and_log(prev_timestamp, label)
+#define TIMER_SAMPLE_AND_LOG2(prev_timestamp, label) \
+ machdep_timer_sample_and_log(prev_timestamp, label)
+#else
+#define TIMER_VAR(...)
+#define TIMER_SAMPLE(timestamp)
+#define TIMER_SAMPLE_AND_LOG(timestamp, prev_timestamp, label)
+#define TIMER_SAMPLE_AND_LOG2(prev_timestamp, label)
+#endif
+
+void machdep_timer_init(void);
+void machdep_timer_reset(void);
+unsigned int machdep_timer_sample(void);
+unsigned int machdep_timer_sample_and_log(unsigned int start, char s[]);
+void machdep_timer_print_logged_samples(void);
+
+#endif
diff --git a/gr-vocoder/lib/codec2/nlp.c b/gr-vocoder/lib/codec2/nlp.c
index 0d5e530..cca835b 100644
--- a/gr-vocoder/lib/codec2/nlp.c
+++ b/gr-vocoder/lib/codec2/nlp.c
@@ -28,7 +28,9 @@
#include "defines.h"
#include "nlp.h"
#include "dump.h"
-#include "fft.h"
+#include "kiss_fft.h"
+#undef TIMER
+#include "machdep.h"
#include <assert.h>
#include <math.h>
@@ -51,6 +53,8 @@
#define CNLP 0.3 /* post processor constant
*/
#define NLP_NTAP 48 /* Decimation LPF order */
+#undef DUMP
+
/*---------------------------------------------------------------------------*\
GLOBALS
@@ -111,12 +115,16 @@ const float nlp_fir[] = {
};
typedef struct {
- float sq[PMAX_M]; /* squared speech samples */
- float mem_x,mem_y; /* memory for notch filter */
- float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */
+ int m;
+ float w[PMAX_M/DEC]; /* DFT window */
+ float sq[PMAX_M]; /* squared speech samples */
+ float mem_x,mem_y; /* memory for notch filter */
+ float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */
+ kiss_fft_cfg fft_cfg; /* kiss FFT config */
} NLP;
-float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax);
+float test_candidate_mbe(COMP Sw[], COMP W[], float f0);
+float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[],
COMP W[], float *prev_Wo);
float post_process_sub_multiples(COMP Fw[],
int pmin, int pmax, float gmax, int gmax_bin,
float *prev_Wo);
@@ -129,15 +137,24 @@ float post_process_sub_multiples(COMP Fw[],
\*---------------------------------------------------------------------------*/
-void *nlp_create()
+void *nlp_create(
+int m /* analysis window size */
+)
{
NLP *nlp;
int i;
+ assert(m <= PMAX_M);
+
nlp = (NLP*)malloc(sizeof(NLP));
if (nlp == NULL)
return NULL;
+ nlp->m = m;
+ for(i=0; i<m/DEC; i++) {
+ nlp->w[i] = 0.5 - 0.5*cosf(2*PI*i/(m/DEC-1));
+ }
+
for(i=0; i<PMAX_M; i++)
nlp->sq[i] = 0.0;
nlp->mem_x = 0.0;
@@ -145,20 +162,27 @@ void *nlp_create()
for(i=0; i<NLP_NTAP; i++)
nlp->mem_fir[i] = 0.0;
+ nlp->fft_cfg = kiss_fft_alloc (PE_FFT_SIZE, 0, NULL, NULL);
+ assert(nlp->fft_cfg != NULL);
+
return (void*)nlp;
}
/*---------------------------------------------------------------------------*\
- nlp_destory()
+ nlp_destroy()
- Initialisation function for NLP pitch estimator.
+ Shut down function for NLP pitch estimator.
\*---------------------------------------------------------------------------*/
void nlp_destroy(void *nlp_state)
{
+ NLP *nlp;
assert(nlp_state != NULL);
+ nlp = (NLP*)nlp_state;
+
+ KISS_FFT_FREE(nlp->fft_cfg);
free(nlp_state);
}
@@ -196,28 +220,33 @@ float nlp(
void *nlp_state,
float Sn[], /* input speech vector */
int n, /* frames shift (no. new samples in Sn[]) */
- int m, /* analysis window size */
- int pmin, /* minimum pitch value */
+ int pmin, /* minimum pitch value */
int pmax, /* maximum pitch value */
float *pitch, /* estimated pitch period in samples */
COMP Sw[], /* Freq domain version of Sn[] */
+ COMP W[], /* Freq domain window */
float *prev_Wo
)
{
NLP *nlp;
- float notch; /* current notch filter output */
- COMP Fw[PE_FFT_SIZE]; /* DFT of squared signal */
+ float notch; /* current notch filter output */
+ COMP fw[PE_FFT_SIZE]; /* DFT of squared signal (input) */
+ COMP Fw[PE_FFT_SIZE]; /* DFT of squared signal (output) */
float gmax;
int gmax_bin;
- int i,j;
- float best_f0;
+ int m, i,j;
+ float best_f0;
+ TIMER_VAR(start, tnotch, filter, peakpick, window, fft, magsq, shiftmem);
assert(nlp_state != NULL);
nlp = (NLP*)nlp_state;
+ m = nlp->m;
+
+ TIMER_SAMPLE(start);
/* Square, notch filter at DC, and LP filter vector */
- for(i=m-n; i<M; i++) /* square latest speech samples */
+ for(i=m-n; i<m; i++) /* square latest speech samples */
nlp->sq[i] = Sn[i]*Sn[i];
for(i=m-n; i<m; i++) { /* notch filter at DC */
@@ -225,9 +254,18 @@ float nlp(
notch += COEFF*nlp->mem_y;
nlp->mem_x = nlp->sq[i];
nlp->mem_y = notch;
- nlp->sq[i] = notch;
+ nlp->sq[i] = notch + 1.0; /* With 0 input vectors to codec,
+ kiss_fft() would take a long
+ time to execute when running in
+ real time. Problem was traced
+ to kiss_fft function call in
+ this function. Adding this small
+ constant fixed problem. Not
+ exactly sure why. */
}
+ TIMER_SAMPLE_AND_LOG(tnotch, start, " square and notch");
+
for(i=m-n; i<m; i++) { /* FIR filter vector */
for(j=0; j<NLP_NTAP-1; j++)
@@ -239,26 +277,33 @@ float nlp(
nlp->sq[i] += nlp->mem_fir[j]*nlp_fir[j];
}
+ TIMER_SAMPLE_AND_LOG(filter, tnotch, " filter");
+
/* Decimate and DFT */
for(i=0; i<PE_FFT_SIZE; i++) {
- Fw[i].real = 0.0;
- Fw[i].imag = 0.0;
+ fw[i].real = 0.0;
+ fw[i].imag = 0.0;
}
for(i=0; i<m/DEC; i++) {
- Fw[i].real = nlp->sq[i*DEC]*(0.5 - 0.5*cos(2*PI*i/(m/DEC-1)));
+ fw[i].real = nlp->sq[i*DEC]*nlp->w[i];
}
-#ifdef DUMP
+ TIMER_SAMPLE_AND_LOG(window, filter, " window");
+ #ifdef DUMP
dump_dec(Fw);
-#endif
- fft(&Fw[0].real,PE_FFT_SIZE,1);
+ #endif
+
+ kiss_fft(nlp->fft_cfg, (kiss_fft_cpx *)fw, (kiss_fft_cpx *)Fw);
+ TIMER_SAMPLE_AND_LOG(fft, window, " fft");
+
for(i=0; i<PE_FFT_SIZE; i++)
Fw[i].real = Fw[i].real*Fw[i].real + Fw[i].imag*Fw[i].imag;
-#ifdef DUMP
+ TIMER_SAMPLE_AND_LOG(magsq, fft, " mag sq");
+ #ifdef DUMP
dump_sq(nlp->sq);
dump_Fw(Fw);
-#endif
+ #endif
/* find global peak */
@@ -271,8 +316,16 @@ float nlp(
}
}
- best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin,
- prev_Wo);
+ TIMER_SAMPLE_AND_LOG(peakpick, magsq, " peak pick");
+
+ //#define POST_PROCESS_MBE
+ #ifdef POST_PROCESS_MBE
+ best_f0 = post_process_mbe(Fw, pmin, pmax, gmax, Sw, W, prev_Wo);
+ #else
+ best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin,
prev_Wo);
+ #endif
+
+ TIMER_SAMPLE_AND_LOG(shiftmem, peakpick, " post process");
/* Shift samples in buffer to make room for new samples */
@@ -282,6 +335,11 @@ float nlp(
/* return pitch and F0 estimate */
*pitch = (float)SAMPLE_RATE/best_f0;
+
+ TIMER_SAMPLE_AND_LOG2(shiftmem, " shift mem");
+
+ TIMER_SAMPLE_AND_LOG2(start, " nlp int");
+
return(best_f0);
}
@@ -289,7 +347,7 @@ float nlp(
post_process_sub_multiples()
- Given the global maximma of Fw[] we search interger submultiples for
+ Given the global maximma of Fw[] we search integer submultiples for
local maxima. If local maxima exist and they are above an
experimentally derived threshold (OK a magic number I pulled out of
the air) we choose the submultiple as the F0 estimate.
@@ -314,7 +372,7 @@ float post_process_sub_multiples(COMP Fw[],
int mult;
float thresh, best_f0;
int b, bmin, bmax, lmax_bin;
- float lmax, cmax;
+ float lmax;
int prev_f0_bin;
/* post process estimate by searching submultiples */
@@ -342,7 +400,7 @@ float post_process_sub_multiples(COMP Fw[],
lmax = 0;
lmax_bin = bmin;
- for (b=bmin; b<=bmax; b++) /* look for maximum in interval
*/
+ for (b=bmin; b<=bmax; b++) /* look for maximum in interval */
if (Fw[b].real > lmax) {
lmax = Fw[b].real;
lmax_bin = b;
@@ -350,7 +408,6 @@ float post_process_sub_multiples(COMP Fw[],
if (lmax > thresh)
if ((lmax > Fw[lmax_bin-1].real) && (lmax > Fw[lmax_bin+1].real)) {
- cmax = lmax;
cmax_bin = lmax_bin;
}
@@ -362,3 +419,171 @@ float post_process_sub_multiples(COMP Fw[],
return best_f0;
}
+/*---------------------------------------------------------------------------*\
+
+ post_process_mbe()
+
+ Use the MBE pitch estimation algorithm to evaluate pitch candidates. This
+ works OK but the accuracy at low F0 is affected by NW, the analysis window
+ size used for the DFT of the input speech Sw[]. Also favours high F0 in
+ the presence of background noise which causes periodic artifacts in the
+ synthesised speech.
+
+\*---------------------------------------------------------------------------*/
+
+float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[],
COMP W[], float *prev_Wo)
+{
+ float candidate_f0;
+ float f0,best_f0; /* fundamental frequency */
+ float e,e_min; /* MBE cost function */
+ int i;
+ #ifdef DUMP
+ float e_hz[F0_MAX];
+ #endif
+ #if !defined(NDEBUG) || defined(DUMP)
+ int bin;
+ #endif
+ float f0_min, f0_max;
+ float f0_start, f0_end;
+
+ f0_min = (float)SAMPLE_RATE/pmax;
+ f0_max = (float)SAMPLE_RATE/pmin;
+
+ /* Now look for local maxima. Each local maxima is a candidate
+ that we test using the MBE pitch estimation algotithm */
+
+ #ifdef DUMP
+ for(i=0; i<F0_MAX; i++)
+ e_hz[i] = -1;
+ #endif
+ e_min = 1E32;
+ best_f0 = 50;
+ for(i=PE_FFT_SIZE*DEC/pmax; i<=PE_FFT_SIZE*DEC/pmin; i++) {
+ if ((Fw[i].real > Fw[i-1].real) && (Fw[i].real > Fw[i+1].real)) {
+
+ /* local maxima found, lets test if it's big enough */
+
+ if (Fw[i].real > T*gmax) {
+
+ /* OK, sample MBE cost function over +/- 10Hz range in 2.5Hz steps
*/
+
+ candidate_f0 = (float)i*SAMPLE_RATE/(PE_FFT_SIZE*DEC);
+ f0_start = candidate_f0-20;
+ f0_end = candidate_f0+20;
+ if (f0_start < f0_min) f0_start = f0_min;
+ if (f0_end > f0_max) f0_end = f0_max;
+
+ for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
+ e = test_candidate_mbe(Sw, W, f0);
+ #if !defined(NDEBUG) || defined(DUMP)
+ bin = floor(f0); assert((bin > 0) && (bin < F0_MAX));
+ #endif
+ #ifdef DUMP
+ e_hz[bin] = e;
+ #endif
+ if (e < e_min) {
+ e_min = e;
+ best_f0 = f0;
+ }
+ }
+
+ }
+ }
+ }
+
+ /* finally sample MBE cost function around previous pitch estimate
+ (form of pitch tracking) */
+
+ candidate_f0 = *prev_Wo * SAMPLE_RATE/TWO_PI;
+ f0_start = candidate_f0-20;
+ f0_end = candidate_f0+20;
+ if (f0_start < f0_min) f0_start = f0_min;
+ if (f0_end > f0_max) f0_end = f0_max;
+
+ for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
+ e = test_candidate_mbe(Sw, W, f0);
+ #if !defined(NDEBUG) || defined(DUMP)
+ bin = floor(f0); assert((bin > 0) && (bin < F0_MAX));
+ #endif
+ #ifdef DUMP
+ e_hz[bin] = e;
+ #endif
+ if (e < e_min) {
+ e_min = e;
+ best_f0 = f0;
+ }
+ }
+
+ #ifdef DUMP
+ dump_e(e_hz);
+ #endif
+
+ return best_f0;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ test_candidate_mbe()
+
+ Returns the error of the MBE cost function for the input f0.
+
+ Note: I think a lot of the operations below can be simplified as
+ W[].imag = 0 and has been normalised such that den always equals 1.
+
+\*---------------------------------------------------------------------------*/
+
+float test_candidate_mbe(
+ COMP Sw[],
+ COMP W[],
+ float f0
+)
+{
+ COMP Sw_[FFT_ENC]; /* DFT of all voiced synthesised signal */
+ int l,al,bl,m; /* loop variables */
+ COMP Am; /* amplitude sample for this band */
+ int offset; /* centers Hw[] about current harmonic */
+ float den; /* denominator of Am expression */
+ float error; /* accumulated error between originl and synthesised
*/
+ float Wo; /* current "test" fundamental freq. */
+ int L;
+
+ L = floor((SAMPLE_RATE/2.0)/f0);
+ Wo = f0*(2*PI/SAMPLE_RATE);
+
+ error = 0.0;
+
+ /* Just test across the harmonics in the first 1000 Hz (L/4) */
+
+ for(l=1; l<L/4; l++) {
+ Am.real = 0.0;
+ Am.imag = 0.0;
+ den = 0.0;
+ al = ceil((l - 0.5)*Wo*FFT_ENC/TWO_PI);
+ bl = ceil((l + 0.5)*Wo*FFT_ENC/TWO_PI);
+
+ /* Estimate amplitude of harmonic assuming harmonic is totally voiced */
+
+ for(m=al; m<bl; m++) {
+ offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
+ Am.real += Sw[m].real*W[offset].real + Sw[m].imag*W[offset].imag;
+ Am.imag += Sw[m].imag*W[offset].real - Sw[m].real*W[offset].imag;
+ den += W[offset].real*W[offset].real +
W[offset].imag*W[offset].imag;
+ }
+
+ Am.real = Am.real/den;
+ Am.imag = Am.imag/den;
+
+ /* Determine error between estimated harmonic and original */
+
+ for(m=al; m<bl; m++) {
+ offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
+ Sw_[m].real = Am.real*W[offset].real - Am.imag*W[offset].imag;
+ Sw_[m].imag = Am.real*W[offset].imag + Am.imag*W[offset].real;
+ error += (Sw[m].real - Sw_[m].real)*(Sw[m].real - Sw_[m].real);
+ error += (Sw[m].imag - Sw_[m].imag)*(Sw[m].imag - Sw_[m].imag);
+ }
+ }
+
+ return error;
+}
+
diff --git a/gr-vocoder/lib/codec2/nlp.h b/gr-vocoder/lib/codec2/nlp.h
index 5e11f11..6e03236 100644
--- a/gr-vocoder/lib/codec2/nlp.h
+++ b/gr-vocoder/lib/codec2/nlp.h
@@ -30,10 +30,9 @@
#include "comp.h"
-void *nlp_create();
+void *nlp_create(int m);
void nlp_destroy(void *nlp_state);
-float nlp(void *nlp_state, float Sn[], int n, int m, int pmin, int pmax,
- float *pitch, COMP Sw[], float *prev_Wo);
-float test_candidate_mbe(COMP Sw[], float f0, COMP Sw_[]);
+float nlp(void *nlp_state, float Sn[], int n, int pmin, int pmax,
+ float *pitch, COMP Sw[], COMP W[], float *prev_Wo);
#endif
diff --git a/gr-vocoder/lib/codec2/os.h b/gr-vocoder/lib/codec2/os.h
new file mode 100644
index 0000000..0dae9bf
--- /dev/null
+++ b/gr-vocoder/lib/codec2/os.h
@@ -0,0 +1,53 @@
+/* Generate using fir1(47,1/6) in Octave */
+
+const float fdmdv_os_filter[]= {
+ -3.55606818e-04,
+ -8.98615286e-04,
+ -1.40119781e-03,
+ -1.71713852e-03,
+ -1.56471179e-03,
+ -6.28128960e-04,
+ 1.24522223e-03,
+ 3.83138676e-03,
+ 6.41309478e-03,
+ 7.85893186e-03,
+ 6.93514929e-03,
+ 2.79361991e-03,
+ -4.51051400e-03,
+ -1.36671853e-02,
+ -2.21034939e-02,
+ -2.64084653e-02,
+ -2.31425052e-02,
+ -9.84218694e-03,
+ 1.40648474e-02,
+ 4.67316298e-02,
+ 8.39615986e-02,
+ 1.19925275e-01,
+ 1.48381174e-01,
+ 1.64097819e-01,
+ 1.64097819e-01,
+ 1.48381174e-01,
+ 1.19925275e-01,
+ 8.39615986e-02,
+ 4.67316298e-02,
+ 1.40648474e-02,
+ -9.84218694e-03,
+ -2.31425052e-02,
+ -2.64084653e-02,
+ -2.21034939e-02,
+ -1.36671853e-02,
+ -4.51051400e-03,
+ 2.79361991e-03,
+ 6.93514929e-03,
+ 7.85893186e-03,
+ 6.41309478e-03,
+ 3.83138676e-03,
+ 1.24522223e-03,
+ -6.28128960e-04,
+ -1.56471179e-03,
+ -1.71713852e-03,
+ -1.40119781e-03,
+ -8.98615286e-04,
+ -3.55606818e-04
+};
+
diff --git a/gr-vocoder/lib/codec2/pack.c b/gr-vocoder/lib/codec2/pack.c
index e04c937..3f8f93e 100644
--- a/gr-vocoder/lib/codec2/pack.c
+++ b/gr-vocoder/lib/codec2/pack.c
@@ -1,20 +1,20 @@
/*
Copyright (C) 2010 Perens LLC <address@hidden>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+ All rights reserved.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
- */
#include "defines.h"
#include "quantise.h"
#include <stdio.h>
diff --git a/gr-vocoder/lib/codec2/phase.c b/gr-vocoder/lib/codec2/phase.c
index 69cc669..a9c1c06 100644
--- a/gr-vocoder/lib/codec2/phase.c
+++ b/gr-vocoder/lib/codec2/phase.c
@@ -27,17 +27,16 @@
#include "defines.h"
#include "phase.h"
-#include "fft.h"
+#include "kiss_fft.h"
#include "comp.h"
-#include "glottal.c"
+#include "sine.h"
#include <assert.h>
+#include <ctype.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
-#define GLOTTAL_FFT_SIZE 512
-
/*---------------------------------------------------------------------------*\
aks_to_H()
@@ -48,6 +47,7 @@
\*---------------------------------------------------------------------------*/
void aks_to_H(
+ kiss_fft_cfg fft_fwd_cfg,
MODEL *model, /* model parameters */
float aks[], /* LPC's */
float G, /* energy term */
@@ -55,7 +55,8 @@ void aks_to_H(
int order
)
{
- COMP Pw[FFT_DEC]; /* power spectrum */
+ COMP pw[FFT_ENC]; /* power spectrum (input) */
+ COMP Pw[FFT_ENC]; /* power spectrum (output) */
int i,m; /* loop variables */
int am,bm; /* limits of current band */
float r; /* no. rads/bin */
@@ -64,35 +65,35 @@ void aks_to_H(
int b; /* centre bin of harmonic */
float phi_; /* phase of LPC spectra */
- r = TWO_PI/(FFT_DEC);
+ r = TWO_PI/(FFT_ENC);
/* Determine DFT of A(exp(jw)) ------------------------------------------*/
- for(i=0; i<FFT_DEC; i++) {
- Pw[i].real = 0.0;
- Pw[i].imag = 0.0;
+ for(i=0; i<FFT_ENC; i++) {
+ pw[i].real = 0.0;
+ pw[i].imag = 0.0;
}
for(i=0; i<=order; i++)
- Pw[i].real = aks[i];
+ pw[i].real = aks[i];
- fft(&Pw[0].real,FFT_DEC,-1);
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)pw, (kiss_fft_cpx *)Pw);
/* Sample magnitude and phase at harmonics */
for(m=1; m<=model->L; m++) {
- am = floor((m - 0.5)*model->Wo/r + 0.5);
- bm = floor((m + 0.5)*model->Wo/r + 0.5);
- b = floor(m*model->Wo/r + 0.5);
-
- Em = 0.0;
- for(i=am; i<bm; i++)
- Em += G/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
- Am = sqrt(fabs(Em/(bm-am)));
-
- phi_ = -atan2(Pw[b].imag,Pw[b].real);
- H[m].real = Am*cos(phi_);
- H[m].imag = Am*sin(phi_);
+ am = (int)((m - 0.5)*model->Wo/r + 0.5);
+ bm = (int)((m + 0.5)*model->Wo/r + 0.5);
+ b = (int)(m*model->Wo/r + 0.5);
+
+ Em = 0.0;
+ for(i=am; i<bm; i++)
+ Em += G/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
+ Am = sqrtf(fabsf(Em/(bm-am)));
+
+ phi_ = -atan2f(Pw[b].imag,Pw[b].real);
+ H[m].real = Am*cosf(phi_);
+ H[m].imag = Am*sinf(phi_);
}
}
@@ -188,6 +189,7 @@ void aks_to_H(
\*---------------------------------------------------------------------------*/
void phase_synth_zero_order(
+ kiss_fft_cfg fft_fwd_cfg,
MODEL *model,
float aks[],
float *ex_phase, /* excitation phase of fundamental */
@@ -196,16 +198,13 @@ void phase_synth_zero_order(
{
int m;
float new_phi;
- COMP Ex[MAX_AMP]; /* excitation samples */
- COMP A_[MAX_AMP]; /* synthesised harmonic samples */
- COMP H[MAX_AMP]; /* LPC freq domain samples */
+ COMP Ex[MAX_AMP+1]; /* excitation samples */
+ COMP A_[MAX_AMP+1]; /* synthesised harmonic samples */
+ COMP H[MAX_AMP+1]; /* LPC freq domain samples */
float G;
- float jitter = 0.0;
- float r;
- int b;
G = 1.0;
- aks_to_H(model, aks, G, H, order);
+ aks_to_H(fft_fwd_cfg, model, aks, G, H, order);
/*
Update excitation fundamental phase track, this sets the position
@@ -213,50 +212,42 @@ void phase_synth_zero_order(
I found that using just this frame's Wo improved quality for UV
sounds compared to interpolating two frames Wo like this:
- ex_phase[0] += (*prev_Wo+mode->Wo)*N/2;
+ ex_phase[0] += (*prev_Wo+model->Wo)*N/2;
*/
ex_phase[0] += (model->Wo)*N;
- ex_phase[0] -= TWO_PI*floor(ex_phase[0]/TWO_PI + 0.5);
- r = TWO_PI/GLOTTAL_FFT_SIZE;
+ ex_phase[0] -= TWO_PI*floorf(ex_phase[0]/TWO_PI + 0.5);
for(m=1; m<=model->L; m++) {
- /* generate excitation */
+ /* generate excitation */
if (model->voiced) {
- /* I think adding a little jitter helps improve low pitch
- males like hts1a. This moves the onset of each harmonic
- over at +/- 0.25 of a sample.
- */
- jitter = 0.25*(1.0 - 2.0*rand()/RAND_MAX);
- b = floor(m*model->Wo/r + 0.5);
- if (b > ((GLOTTAL_FFT_SIZE/2)-1)) {
- b = (GLOTTAL_FFT_SIZE/2)-1;
- }
- Ex[m].real = cos(ex_phase[0]*m - jitter*model->Wo*m + glottal[b]);
- Ex[m].imag = sin(ex_phase[0]*m - jitter*model->Wo*m + glottal[b]);
- }
- else {
-
- /* When a few samples were tested I found that LPC filter
- phase is not needed in the unvoiced case, but no harm in
- keeping it.
- */
- float phi = TWO_PI*(float)rand()/RAND_MAX;
- Ex[m].real = cos(phi);
- Ex[m].imag = sin(phi);
- }
-
- /* filter using LPC filter */
-
- A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag;
- A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag;
-
- /* modify sinusoidal phase */
-
- new_phi = atan2(A_[m].imag, A_[m].real+1E-12);
- model->phi[m] = new_phi;
+
+ Ex[m].real = cosf(ex_phase[0]*m);
+ Ex[m].imag = sinf(ex_phase[0]*m);
+ }
+ else {
+
+ /* When a few samples were tested I found that LPC filter
+ phase is not needed in the unvoiced case, but no harm in
+ keeping it.
+ */
+ float phi = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX;
+ Ex[m].real = cosf(phi);
+ Ex[m].imag = sinf(phi);
+ }
+
+ /* filter using LPC filter */
+
+ A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag;
+ A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag;
+
+ /* modify sinusoidal phase */
+
+ new_phi = atan2f(A_[m].imag, A_[m].real+1E-12);
+ model->phi[m] = new_phi;
}
}
+
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/phase.h
index 4f1a620..2927e91 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/phase.h
@@ -28,7 +28,12 @@
#ifndef __PHASE__
#define __PHASE__
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
+#include "kiss_fft.h"
+
+void phase_synth_zero_order(kiss_fft_cfg fft_dec_cfg,
+ MODEL *model,
+ float aks[],
+ float *ex_phase,
int order);
#endif
diff --git a/gr-vocoder/lib/codec2/phaseexp.c b/gr-vocoder/lib/codec2/phaseexp.c
new file mode 100644
index 0000000..61b240d
--- /dev/null
+++ b/gr-vocoder/lib/codec2/phaseexp.c
@@ -0,0 +1,1455 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: phaseexp.c
+ AUTHOR......: David Rowe
+ DATE CREATED: June 2012
+
+ Experimental functions for quantising, modelling and synthesising phase.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not,see <http://www.gnu.org/licenses/>.
+*/
+
+#include "defines.h"
+#include "phase.h"
+#include "kiss_fft.h"
+#include "comp.h"
+
+#include <assert.h>
+#include <ctype.h>
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+
+/* Bruce Perens' funcs to load codebook files */
+
+struct codebook {
+ unsigned int k;
+ unsigned int log2m;
+ unsigned int m;
+ COMP *cb;
+ unsigned int offset;
+};
+
+static const char format[] =
+"The table format must be:\n"
+"\tTwo integers describing the dimensions of the codebook.\n"
+"\tThen, enough numbers to fill the specified dimensions.\n";
+
+float get_float(FILE * in, const char * name, char * * cursor, char * buffer,
int size)
+{
+ for ( ; ; ) {
+ char * s = *cursor;
+ char c;
+
+ while ( (c = *s) != '\0' && !isdigit(c) && c != '-' && c != '.' )
+ s++;
+
+ /* Comments start with "#" and continue to the end of the line. */
+ if ( c != '\0' && c != '#' ) {
+ char * end = 0;
+ float f = 0;
+
+ f = strtod(s, &end);
+
+ if ( end != s )
+ *cursor = end;
+ return f;
+ }
+
+ if ( fgets(buffer, size, in) == NULL ) {
+ fprintf(stderr, "%s: Format error. %s\n", name, format);
+ exit(1);
+ }
+ *cursor = buffer;
+ }
+}
+
+static struct codebook *load(const char * name)
+{
+ FILE *file;
+ char line[2048];
+ char *cursor = line;
+ struct codebook *b = malloc(sizeof(struct codebook));
+ int i;
+ int size;
+ float angle;
+
+ file = fopen(name, "rt");
+ assert(file != NULL);
+
+ *cursor = '\0';
+
+ b->k = (int)get_float(file, name, &cursor, line, sizeof(line));
+ b->m = (int)get_float(file, name ,&cursor, line, sizeof(line));
+ size = b->k * b->m;
+
+ b->cb = (COMP *)malloc(size * sizeof(COMP));
+
+ for ( i = 0; i < size; i++ ) {
+ angle = get_float(file, name, &cursor, line, sizeof(line));
+ b->cb[i].real = cos(angle);
+ b->cb[i].imag = sin(angle);
+ }
+
+ fclose(file);
+
+ return b;
+}
+
+
+/* states for phase experiments */
+
+struct PEXP {
+ float phi1;
+ float phi_prev[MAX_AMP];
+ float Wo_prev;
+ int frames;
+ float snr;
+ float var;
+ int var_n;
+ struct codebook *vq1,*vq2,*vq3,*vq4,*vq5;
+ float vq_var;
+ int vq_var_n;
+ MODEL prev_model;
+ int state;
+};
+
+
+/*---------------------------------------------------------------------------*
\
+
+ phase_experiment_create()
+
+ Inits states for phase quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+struct PEXP * phase_experiment_create() {
+ struct PEXP *pexp;
+ int i;
+
+ pexp = (struct PEXP *)malloc(sizeof(struct PEXP));
+ assert (pexp != NULL);
+
+ pexp->phi1 = 0;
+ for(i=0; i<MAX_AMP; i++)
+ pexp->phi_prev[i] = 0.0;
+ pexp->Wo_prev = 0.0;
+ pexp->frames = 0;
+ pexp->snr = 0.0;
+ pexp->var = 0.0;
+ pexp->var_n = 0;
+
+ /* smoothed 10th order for 1st 1 khz */
+ //pexp->vq1 = load("../unittest/ph1_10_1024.txt");
+ //pexp->vq1->offset = 0;
+
+ /* load experimental phase VQ */
+
+ //pexp->vq1 = load("../unittest/testn1_20_1024.txt");
+ pexp->vq1 = load("../unittest/test.txt");
+ //pexp->vq2 = load("../unittest/testn21_40_1024.txt");
+ pexp->vq2 = load("../unittest/test11_20_1024.txt");
+ pexp->vq3 = load("../unittest/test21_30_1024.txt");
+ pexp->vq4 = load("../unittest/test31_40_1024.txt");
+ pexp->vq5 = load("../unittest/test41_60_1024.txt");
+ pexp->vq1->offset = 0;
+ pexp->vq2->offset = 10;
+ pexp->vq3->offset = 20;
+ pexp->vq4->offset = 30;
+ pexp->vq5->offset = 40;
+
+ pexp->vq_var = 0.0;
+ pexp->vq_var_n = 0;
+
+ pexp->state = 0;
+
+ return pexp;
+}
+
+
+/*---------------------------------------------------------------------------*
\
+
+ phase_experiment_destroy()
+
+\*---------------------------------------------------------------------------*/
+
+void phase_experiment_destroy(struct PEXP *pexp) {
+ assert(pexp != NULL);
+ if (pexp->snr != 0.0)
+ printf("snr: %4.2f dB\n", pexp->snr/pexp->frames);
+ if (pexp->var != 0.0)
+ printf("var...: %4.3f std dev...: %4.3f (%d non zero phases)\n",
+ pexp->var/pexp->var_n, sqrt(pexp->var/pexp->var_n), pexp->var_n);
+ if (pexp->vq_var != 0.0)
+ printf("vq var: %4.3f vq std dev: %4.3f (%d non zero phases)\n",
+ pexp->vq_var/pexp->vq_var_n, sqrt(pexp->vq_var/pexp->vq_var_n),
pexp->vq_var_n);
+ free(pexp);
+}
+
+
+/*---------------------------------------------------------------------------*
\
+
+ Various test and experimental functions ................
+
+\*---------------------------------------------------------------------------*/
+
+/* Bubblesort to find highest amplitude harmonics */
+
+struct AMPINDEX {
+ float amp;
+ int index;
+};
+
+static void bubbleSort(struct AMPINDEX numbers[], int array_size)
+{
+ int i, j;
+ struct AMPINDEX temp;
+
+ for (i = (array_size - 1); i > 0; i--)
+ {
+ for (j = 1; j <= i; j++)
+ {
+ //printf("i %d j %d %f %f \n", i, j, numbers[j-1].amp, numbers[j].amp);
+ if (numbers[j-1].amp < numbers[j].amp)
+ {
+ temp = numbers[j-1];
+ numbers[j-1] = numbers[j];
+ numbers[j] = temp;
+ }
+ }
+ }
+}
+
+
+static void print_pred_error(struct PEXP *pexp, MODEL *model, int start, int
end, float mag_thresh) {
+ int i;
+ float mag;
+
+ mag = 0.0;
+ for(i=start; i<=end; i++)
+ mag += model->A[i]*model->A[i];
+ mag = 10*log10(mag/(end-start));
+
+ if (mag > mag_thresh) {
+ for(i=start; i<=end; i++) {
+ float pred = pexp->phi_prev[i] + N*i*(model->Wo +
pexp->Wo_prev)/2.0;
+ float err = pred - model->phi[i];
+ err = atan2(sin(err),cos(err));
+ printf("%f\n",err);
+ }
+ //printf("\n");
+ }
+
+}
+
+
+static void predict_phases(struct PEXP *pexp, MODEL *model, int start, int
end) {
+ int i;
+
+ for(i=start; i<=end; i++) {
+ model->phi[i] = pexp->phi_prev[i] + N*i*model->Wo;
+ }
+
+}
+static float refine_Wo(struct PEXP *pexp,
+ MODEL *model,
+ int start,
+ int end);
+
+/* Fancy state based phase prediction. Actually works OK on most utterances,
+ but could use some tuning. Breaks down a bit on mmt1. */
+
+static void predict_phases_state(struct PEXP *pexp, MODEL *model, int start,
int end) {
+ int i, next_state;
+ float best_Wo, dWo;
+
+ //best_Wo = refine_Wo(pexp, model, start, end);
+ //best_Wo = (model->Wo + pexp->Wo_prev)/2.0;
+ best_Wo = model->Wo;
+
+ dWo = fabs(model->Wo - pexp->Wo_prev)/model->Wo;
+ next_state = pexp->state;
+ switch(pexp->state) {
+ case 0:
+ if (dWo < 0.1) {
+ /* UV -> V transition, so start with phases in lock. They will
+ drift a bit over voiced track which is kinda what we want, so
+ we don't get clicky speech.
+ */
+ next_state = 1;
+ for(i=start; i<=end; i++)
+ pexp->phi_prev[i] = i*pexp->phi1;
+ }
+
+ break;
+ case 1:
+ if (dWo > 0.1)
+ next_state = 0;
+ break;
+ }
+ pexp->state = next_state;
+
+ if (pexp->state == 0)
+ for(i=start; i<=end; i++) {
+ model->phi[i] = PI*(1.0 - 2.0*rand()/RAND_MAX);
+ }
+ else
+ for(i=start; i<=end; i++) {
+ model->phi[i] = pexp->phi_prev[i] + N*i*best_Wo;
+ }
+ printf("state %d\n", pexp->state);
+}
+
+static void struct_phases(struct PEXP *pexp, MODEL *model, int start, int end)
{
+ int i;
+
+ for(i=start; i<=end; i++)
+ model->phi[i] = pexp->phi1*i;
+
+}
+
+
+static void predict_phases2(struct PEXP *pexp, MODEL *model, int start, int
end) {
+ int i;
+ float pred, str, diff;
+
+ for(i=start; i<=end; i++) {
+ pred = pexp->phi_prev[i] + N*i*model->Wo;
+ str = pexp->phi1*i;
+ diff = str - pred;
+ diff = atan2(sin(diff), cos(diff));
+ if (diff > 0)
+ pred += PI/16;
+ else
+ pred -= PI/16;
+ model->phi[i] = pred;
+ }
+
+}
+
+static void rand_phases(MODEL *model, int start, int end) {
+ int i;
+
+ for(i=start; i<=end; i++)
+ model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX);
+
+}
+
+static void quant_phase(float *phase, float min, float max, int bits) {
+ int levels = 1 << bits;
+ int index;
+ float norm, step;
+
+ norm = (*phase - min)/(max - min);
+ index = floor(levels*norm);
+
+ //printf("phase %f norm %f index %d ", *phase, norm, index);
+ if (index < 0 ) index = 0;
+ if (index > (levels-1)) index = levels-1;
+ //printf("index %d ", index);
+ step = (max - min)/levels;
+ *phase = min + step*index + 0.5*step;
+ //printf("step %f phase %f\n", step, *phase);
+}
+
+static void quant_phases(MODEL *model, int start, int end, int bits) {
+ int i;
+
+ for(i=start; i<=end; i++) {
+ quant_phase(&model->phi[i], -PI, PI, bits);
+ }
+}
+
+static void fixed_bits_per_frame(struct PEXP *pexp, MODEL *model, int m, int
budget) {
+ int res, finished;
+
+ res = 3;
+ finished = 0;
+
+ while(!finished) {
+ if (m > model->L/2)
+ res = 2;
+ if (((budget - res) < 0) || (m > model->L))
+ finished = 1;
+ else {
+ quant_phase(&model->phi[m], -PI, PI, res);
+ budget -= res;
+ m++;
+ }
+ }
+ printf("m: %d L: %d budget: %d\n", m, model->L, budget);
+ predict_phases(pexp, model, m, model->L);
+ //rand_phases(model, m, model->L);
+}
+
+/* used to plot histogram of quantisation error, for 3 bits, 8 levels,
+ should be uniform between +/- PI/8 */
+
+static void check_phase_quant(MODEL *model, float tol)
+{
+ int m;
+ float phi_before[MAX_AMP];
+
+ for(m=1; m<=model->L; m++)
+ phi_before[m] = model->phi[m];
+
+ quant_phases(model, 1, model->L, 3);
+
+ for(m=1; m<=model->L; m++) {
+ float err = phi_before[m] - model->phi[m];
+ printf("%f\n", err);
+ if (fabs(err) > tol)
+ exit(0);
+ }
+}
+
+
+static float est_phi1(MODEL *model, int start, int end)
+{
+ int m;
+ float delta, s, c, phi1_est;
+
+ if (end > model->L)
+ end = model->L;
+
+ s = c = 0.0;
+ for(m=start; m<end; m++) {
+ delta = model->phi[m+1] - model->phi[m];
+ s += sin(delta);
+ c += cos(delta);
+ }
+
+ phi1_est = atan2(s,c);
+
+ return phi1_est;
+}
+
+static void print_phi1_pred_error(MODEL *model, int start, int end)
+{
+ int m;
+ float phi1_est;
+
+ phi1_est = est_phi1(model, start, end);
+
+ for(m=start; m<end; m++) {
+ float err = model->phi[m+1] - model->phi[m] - phi1_est;
+ err = atan2(sin(err),cos(err));
+ printf("%f\n", err);
+ }
+}
+
+
+static void first_order_band(MODEL *model, int start, int end, float phi1_est)
+{
+ int m;
+ float pred_err, av_pred_err;
+ float c,s;
+
+ s = c = 0.0;
+ for(m=start; m<end; m++) {
+ pred_err = model->phi[m] - phi1_est*m;
+ s += sin(pred_err);
+ c += cos(pred_err);
+ }
+
+ av_pred_err = atan2(s,c);
+ for(m=start; m<end; m++) {
+ model->phi[m] = av_pred_err + phi1_est*m;
+ model->phi[m] = atan2(sin(model->phi[m]), cos(model->phi[m]));
+ }
+
+}
+
+
+static void sub_linear(MODEL *model, int start, int end, float phi1_est)
+{
+ int m;
+
+ for(m=start; m<end; m++) {
+ model->phi[m] = m*phi1_est;
+ }
+}
+
+
+static void top_amp(struct PEXP *pexp, MODEL *model, int start, int end, int
n_harm, int pred)
+{
+ int removed = 0, not_removed = 0;
+ int top, i, j;
+ struct AMPINDEX sorted[MAX_AMP];
+
+ /* sort into ascending order of amplitude */
+
+ printf("\n");
+ for(i=start,j=0; i<end; i++,j++) {
+ sorted[j].amp = model->A[i];
+ sorted[j].index = i;
+ printf("%f ", model->A[i]);
+ }
+ bubbleSort(sorted, end-start);
+
+ printf("\n");
+ for(j=0; j<n_harm; j++)
+ printf("%d %f\n", j, sorted[j].amp);
+
+ /* keep phase of top n_harm, predict others */
+
+ for(i=start; i<end; i++) {
+ top = 0;
+ for(j=0; j<n_harm; j++) {
+ if (model->A[i] == sorted[j].amp) {
+ top = 1;
+ assert(i == sorted[j].index);
+ }
+ }
+
+ #define ALTTOP
+ #ifdef ALTTOP
+ model->phi[i] = 0.0; /* make sure */
+ if (top) {
+ model->phi[i] = i*pexp->phi1;
+ removed++;
+ }
+ else {
+ model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX); // note: try
rand for higher harms
+ removed++;
+ }
+ #else
+ if (!top) {
+ model->phi[i] = 0.0; /* make sure */
+ if (pred) {
+ //model->phi[i] = pexp->phi_prev[i] + i*N*(model->Wo +
pexp->Wo_prev)/2.0;
+ model->phi[i] = i*model->phi[1];
+ }
+ else
+ model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX); // note:
try rand for higher harms
+ removed++;
+ }
+ else {
+ /* need to make this work thru budget of bits */
+ quant_phase(&model->phi[i], -PI, PI, 3);
+ not_removed++;
+ }
+ #endif
+ }
+ printf("dim: %d rem %d not_rem %d\n", end-start, removed, not_removed);
+
+}
+
+
+static void limit_prediction_error(struct PEXP *pexp, MODEL *model, int start,
int end, float limit)
+{
+ int i;
+ float pred, pred_error, error;
+
+ for(i=start; i<=end; i++) {
+ pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+ pred_error = pred - model->phi[i];
+ pred_error -= TWO_PI*floor((pred_error+PI)/TWO_PI);
+ quant_phase(&pred_error, -limit, limit, 2);
+
+ error = pred - pred_error - model->phi[i];
+ error -= TWO_PI*floor((error+PI)/TWO_PI);
+ printf("%f\n", pred_error);
+ model->phi[i] = pred - pred_error;
+ }
+}
+
+
+static void quant_prediction_error(struct PEXP *pexp, MODEL *model, int start,
int end, float limit)
+{
+ int i;
+ float pred, pred_error;
+
+ for(i=start; i<=end; i++) {
+ pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+ pred_error = pred - model->phi[i];
+ pred_error -= TWO_PI*floor((pred_error+PI)/TWO_PI);
+
+ printf("%f\n", pred_error);
+ model->phi[i] = pred - pred_error;
+ }
+}
+
+
+static void print_sparse_pred_error(struct PEXP *pexp, MODEL *model, int
start, int end, float mag_thresh)
+{
+ int i, index;
+ float mag, pred, error;
+ float sparse_pe[MAX_AMP];
+
+ mag = 0.0;
+ for(i=start; i<=end; i++)
+ mag += model->A[i]*model->A[i];
+ mag = 10*log10(mag/(end-start));
+
+ if (mag > mag_thresh) {
+ for(i=0; i<MAX_AMP; i++) {
+ sparse_pe[i] = 0.0;
+ }
+
+ for(i=start; i<=end; i++) {
+ pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+ error = pred - model->phi[i];
+ error = atan2(sin(error),cos(error));
+
+ index = MAX_AMP*i*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe[index] = error;
+ }
+
+ /* dump spare phase vector in polar format */
+
+ for(i=0; i<MAX_AMP; i++)
+ printf("%f ", sparse_pe[i]);
+ printf("\n");
+ }
+}
+
+
+static void update_snr_calc(struct PEXP *pexp, MODEL *model, float before[])
+{
+ int m;
+ float signal, noise, diff;
+
+ signal = 0.0; noise = 0.0;
+ for(m=1; m<=model->L; m++) {
+ signal += model->A[m]*model->A[m];
+ diff = cos(model->phi[m]) - cos(before[m]);
+ noise += pow(model->A[m]*diff, 2.0);
+ diff = sin(model->phi[m]) - sin(before[m]);
+ noise += pow(model->A[m]*diff, 2.0);
+ //printf("%f %f\n", before[m], model->phi[m]);
+ }
+ //printf("%f %f snr = %f\n", signal, noise, 10.0*log10(signal/noise));
+ pexp->snr += 10.0*log10(signal/noise);
+}
+
+
+static void update_variance_calc(struct PEXP *pexp, MODEL *model, float
before[])
+{
+ int m;
+ float diff;
+
+ for(m=1; m<model->L; m++) {
+ diff = model->phi[m] - before[m];
+ diff = atan2(sin(diff), cos(diff));
+ pexp->var += diff*diff;
+ }
+ pexp->var_n += model->L;
+}
+
+void print_vec(COMP cb[], int d, int e)
+{
+ int i,j;
+
+ for(j=0; j<e; j++) {
+ for(i=0; i<d; i++)
+ printf("%f %f ", cb[j*d+i].real, cb[j*d+i].imag);
+ printf("\n");
+ }
+}
+
+static COMP cconj(COMP a)
+{
+ COMP res;
+
+ res.real = a.real;
+ res.imag = -a.imag;
+
+ return res;
+}
+
+static COMP cadd(COMP a, COMP b)
+{
+ COMP res;
+
+ res.real = a.real + b.real;
+ res.imag = a.imag + b.imag;
+
+ return res;
+}
+
+static COMP cmult(COMP a, COMP b)
+{
+ COMP res;
+
+ res.real = a.real*b.real - a.imag*b.imag;
+ res.imag = a.real*b.imag + a.imag*b.real;
+
+ return res;
+}
+
+static int vq_phase(COMP cb[], COMP vec[], float weights[], int d, int e,
float *se)
+{
+ float error; /* current error */
+ int besti; /* best index so far */
+ float best_error; /* best error so far */
+ int i,j;
+ int ignore;
+ COMP diffr;
+ float diffp, metric, best_metric;
+
+ besti = 0;
+ best_metric = best_error = 1E32;
+ for(j=0; j<e; j++) {
+ error = 0.0;
+ metric = 0.0;
+ for(i=0; i<d; i++) {
+ ignore = (vec[i].real == 0.0) && (vec[i].imag == 0.0);
+ if (!ignore) {
+ diffr = cmult(cb[j*d+i], cconj(vec[i]));
+ diffp = atan2(diffr.imag, diffr.real);
+ error += diffp*diffp;
+ metric += weights[i]*weights[i]*diffp*diffp;
+ //metric += weights[i]*diffp*diffp;
+ //metric = log10(weights[i]*fabs(diffp));
+ //printf("diffp %f metric %f\n", diffp, metric);
+ //if (metric < log10(PI/(8.0*sqrt(3.0))))
+ // metric = log10(PI/(8.0*sqrt(3.0)));
+ }
+ }
+ if (metric < best_metric) {
+ best_metric = metric;
+ best_error = error;
+ besti = j;
+ }
+ }
+
+ *se += best_error;
+
+ return(besti);
+}
+
+
+static float refine_Wo(struct PEXP *pexp,
+ MODEL *model,
+ int start,
+ int end)
+
+{
+ int i;
+ float Wo_est, best_var, Wo, var, pred, error, best_Wo;
+
+ /* test variance over a range of Wo values */
+
+ Wo_est = (model->Wo + pexp->Wo_prev)/2.0;
+ best_var = 1E32;
+ for(Wo=0.97*Wo_est; Wo<=1.03*Wo_est; Wo+=0.001*Wo_est) {
+
+ /* predict phase and sum differences between harmonics */
+
+ var = 0.0;
+ for(i=start; i<=end; i++) {
+ pred = pexp->phi_prev[i] + N*i*Wo;
+ error = pred - model->phi[i];
+ error = atan2(sin(error),cos(error));
+ var += error*error;
+ }
+
+ if (var < best_var) {
+ best_var = var;
+ best_Wo = Wo;
+ }
+ }
+
+ return best_Wo;
+}
+
+
+static void split_vq(COMP sparse_pe_out[], struct PEXP *pexp, struct codebook
*vq, float weights[], COMP sparse_pe_in[])
+{
+ int i, j, non_zero, vq_ind;
+
+ //printf("\n offset %d k %d m %d j: ", vq->offset, vq->k, vq->m);
+ vq_ind = vq_phase(vq->cb, &sparse_pe_in[vq->offset], &weights[vq->offset],
vq->k, vq->m, &pexp->vq_var);
+
+ non_zero = 0;
+ for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+ //printf("%f ", atan2(sparse_pe[i].imag, sparse_pe[i].real));
+ if ((sparse_pe_in[j].real != 0.0) && (sparse_pe_in[j].imag != 0.0)) {
+ //printf("%d ", j);
+ sparse_pe_out[j] = vq->cb[vq->k * vq_ind + i];
+ non_zero++;
+ }
+ }
+ pexp->vq_var_n += non_zero;
+}
+
+
+static void sparse_vq_pred_error(struct PEXP *pexp,
+ MODEL *model
+)
+{
+ int i, index;
+ float pred, error, error_q_angle, best_Wo;
+ COMP sparse_pe_in[MAX_AMP], sparse_pe_out[MAX_AMP];
+ float weights[MAX_AMP];
+ COMP error_q_rect;
+
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+ //best_Wo = (model->Wo + pexp->Wo_prev)/2.0;
+
+ /* transform to sparse pred error vector */
+
+ for(i=0; i<MAX_AMP; i++) {
+ sparse_pe_in[i].real = 0.0;
+ sparse_pe_in[i].imag = 0.0;
+ sparse_pe_out[i].real = 0.0;
+ sparse_pe_out[i].imag = 0.0;
+ }
+
+ //printf("\n");
+ for(i=1; i<=model->L; i++) {
+ pred = pexp->phi_prev[i] + N*i*best_Wo;
+ error = pred - model->phi[i];
+
+ index = MAX_AMP*i*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index].real = cos(error);
+ sparse_pe_in[index].imag = sin(error);
+ sparse_pe_out[index] = sparse_pe_in[index];
+ weights[index] = model->A[i];
+ //printf("%d ", index);
+ }
+
+ /* vector quantise */
+
+ split_vq(sparse_pe_out, pexp, pexp->vq1, weights, sparse_pe_in);
+ split_vq(sparse_pe_out, pexp, pexp->vq2, weights, sparse_pe_in);
+ split_vq(sparse_pe_out, pexp, pexp->vq3, weights, sparse_pe_in);
+ split_vq(sparse_pe_out, pexp, pexp->vq4, weights, sparse_pe_in);
+ split_vq(sparse_pe_out, pexp, pexp->vq5, weights, sparse_pe_in);
+
+ /* transform quantised phases back */
+
+ for(i=1; i<=model->L; i++) {
+ pred = pexp->phi_prev[i] + N*i*best_Wo;
+
+ index = MAX_AMP*i*model->Wo/PI;
+ assert(index < MAX_AMP);
+ error_q_rect = sparse_pe_out[index];
+ error_q_angle = atan2(error_q_rect.imag, error_q_rect.real);
+ model->phi[i] = pred - error_q_angle;
+ model->phi[i] = atan2(sin(model->phi[i]), cos(model->phi[i]));
+ }
+}
+
+
+static void predict_phases1(struct PEXP *pexp, MODEL *model, int start, int
end) {
+ int i;
+ float best_Wo;
+
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+ for(i=start; i<=end; i++) {
+ model->phi[i] = pexp->phi_prev[i] + N*i*best_Wo;
+ }
+}
+
+
+/*
+ This functions tests theory that some bands can be combined together
+ due to less frequency resolution at higher frequencies. This will
+ reduce the amount of information we need to encode.
+*/
+
+void smooth_phase(struct PEXP *pexp, MODEL *model, int mode)
+{
+ int m, i, j, index, step, v, en, nav, st;
+ COMP sparse_pe_in[MAX_AMP], av;
+ COMP sparse_pe_out[MAX_AMP];
+ COMP smoothed[MAX_AMP];
+ float best_Wo, pred, err;
+ float weights[MAX_AMP];
+ float avw, smoothed_weights[MAX_AMP];
+ COMP smoothed_in[MAX_AMP], smoothed_out[MAX_AMP];
+
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+ for(m=0; m<MAX_AMP; m++) {
+ sparse_pe_in[m].real = sparse_pe_in[m].imag = 0.0;
+ sparse_pe_out[m].real = sparse_pe_out[m].imag = 0.0;
+ }
+
+ /* set up sparse array */
+
+ for(m=1; m<=model->L; m++) {
+ pred = pexp->phi_prev[m] + N*m*best_Wo;
+ err = model->phi[m] - pred;
+ err = atan2(sin(err),cos(err));
+
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ sparse_pe_in[index].real = model->A[m]*cos(err);
+ sparse_pe_in[index].imag = model->A[m]*sin(err);
+ sparse_pe_out[index] = sparse_pe_in[index];
+ weights[index] = model->A[m];
+ }
+
+ /* now combine samples at high frequencies to reduce dimension */
+
+ step = 2;
+ st = 0;
+ for(i=st,v=0; i<MAX_AMP; i+=step,v++) {
+
+ /* average over one band */
+
+ av.real = 0.0; av.imag = 0.0; avw = 0.0; nav = 0;
+ en = i+step;
+ if (en > (MAX_AMP-1))
+ en = MAX_AMP-1;
+ for(j=i; j<en; j++) {
+ if ((sparse_pe_in[j].real != 0.0) &&(sparse_pe_in[j].imag != 0.0) )
{
+ av = cadd(av, sparse_pe_in[j]);
+ avw += weights[j];
+ nav++;
+ }
+ }
+ if (nav) {
+ smoothed[v] = av;
+ smoothed_weights[v] = avw/nav;
+ }
+ else
+ smoothed[v].real = smoothed[v].imag = 0.0;
+ }
+
+ if (mode == 2) {
+ for(i=0; i<MAX_AMP; i++) {
+ smoothed_in[i] = smoothed[i];
+ smoothed_out[i] = smoothed_in[i];
+ }
+ split_vq(smoothed_out, pexp, pexp->vq1, smoothed_weights, smoothed_in);
+ for(i=0; i<MAX_AMP; i++)
+ smoothed[i] = smoothed_out[i];
+ }
+
+ /* set all samples to smoothed average */
+
+ for(i=st,v=0; i<MAX_AMP; i+=step,v++) {
+ en = i+step;
+ if (en > (MAX_AMP-1))
+ en = MAX_AMP-1;
+ for(j=i; j<en; j++)
+ sparse_pe_out[j] = smoothed[v];
+ if (mode == 1)
+ printf("%f ", atan2(smoothed[v].imag, smoothed[v].real));
+ }
+ if (mode == 1)
+ printf("\n");
+
+ /* convert back to Am */
+
+ for(m=1; m<=model->L; m++) {
+ index = MAX_AMP*m*model->Wo/PI;
+ assert(index < MAX_AMP);
+ pred = pexp->phi_prev[m] + N*m*best_Wo;
+ err = atan2(sparse_pe_out[index].imag, sparse_pe_out[index].real);
+ model->phi[m] = pred + err;
+ }
+
+}
+
+/*
+ Another version of a functions that tests the theory that some bands
+ can be combined together due to less frequency resolution at higher
+ frequencies. This will reduce the amount of information we need to
+ encode.
+*/
+
+void smooth_phase2(struct PEXP *pexp, MODEL *model) {
+ float m;
+ float step;
+ int a,b,h,i;
+ float best_Wo, pred, err, s,c, phi1_;
+
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+ step = (float)model->L/30;
+ printf("\nL: %d step: %3.2f am,bm: ", model->L, step);
+ for(m=(float)model->L/4; m<=model->L; m+=step) {
+ a = floor(m);
+ b = floor(m+step);
+ if (b > model->L) b = model->L;
+ h = b-a;
+
+ printf("%d,%d,(%d) ", a, b, h);
+ c = s = 0.0;
+ if (h>1) {
+ for(i=a; i<b; i++) {
+ pred = pexp->phi_prev[i] + N*i*best_Wo;
+ err = model->phi[i] - pred;
+ c += cos(err); s += sin(err);
+ }
+ phi1_ = atan2(s,c);
+ for(i=a; i<b; i++) {
+ pred = pexp->phi_prev[i] + N*i*best_Wo;
+ printf("%d: %4.3f -> ", i, model->phi[i]);
+ model->phi[i] = pred + phi1_;
+ model->phi[i] = atan2(sin(model->phi[i]),cos(model->phi[i]));
+ printf("%4.3f ", model->phi[i]);
+ }
+ }
+ }
+}
+
+
+#define MAX_BINS 40
+//static float bins[] = {2600.0, 2800.0, 3000.0, 3200.0, 3400.0, 3600.0,
3800.0, 4000.0};
+static float bins[] = {/*
+
+ 1000.0, 1100.0, 1200.0, 1300.0, 1400.0,
+ 1500.0, 1600.0, 1700.0, 1800.0, 1900.0,*/
+
+ 2000.0, 2400.0, 2800.0,
+ 3000.0, 3400.0, 3600.0, 4000.0};
+
+void smooth_phase3(struct PEXP *pexp, MODEL *model) {
+ int m, i;
+ int nbins;
+ int b;
+ float f, best_Wo, pred, err;
+ COMP av[MAX_BINS];
+
+ nbins = sizeof(bins)/sizeof(float);
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+ /* clear all bins */
+
+ for(i=0; i<MAX_BINS; i++) {
+ av[i].real = 0.0;
+ av[i].imag = 0.0;
+ }
+
+ /* add phases into each bin */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ /* est predicted phase from average */
+
+ pred = pexp->phi_prev[m] + N*m*best_Wo;
+ err = model->phi[m] - pred;
+ av[b].real += cos(err); av[b].imag += sin(err);
+ }
+
+ }
+
+ /* use averages to est phases */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ /* add predicted phase error to this bin */
+
+ printf("L %d m %d f %4.f b %d\n", model->L, m, f, b);
+
+ pred = pexp->phi_prev[m] + N*m*best_Wo;
+ err = atan2(av[b].imag, av[b].real);
+ printf(" %d: %4.3f -> ", m, model->phi[m]);
+ model->phi[m] = pred + err;
+ model->phi[m] = atan2(sin(model->phi[m]),cos(model->phi[m]));
+ printf("%4.3f\n", model->phi[m]);
+ }
+ }
+ printf("\n");
+}
+
+
+/*
+ Try to code the phase of the largest amplitude in each band. Randomise the
+ phase of the other harmonics. The theory is that only the largest harmonic
+ will be audible.
+*/
+
+void cb_phase1(struct PEXP *pexp, MODEL *model) {
+ int m, i;
+ int nbins;
+ int b;
+ float f, best_Wo;
+ float max_val[MAX_BINS];
+ int max_ind[MAX_BINS];
+
+ nbins = sizeof(bins)/sizeof(float);
+ best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+ for(i=0; i<nbins; i++)
+ max_val[i] = 0.0;
+
+ /* determine max amplitude for each bin */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ if (model->A[m] > max_val[b]) {
+ max_val[b] = model->A[m];
+ max_ind[b] = m;
+ }
+ }
+
+ }
+
+ /* randomise phase of other harmonics */
+
+ for(m=1; m<=model->L; m++) {
+ f = m*model->Wo*FS/TWO_PI;
+ if (f > bins[0]) {
+
+ /* find bin */
+
+ for(i=0; i<nbins; i++)
+ if ((f > bins[i]) && (f <= bins[i+1]))
+ b = i;
+ assert(b < MAX_BINS);
+
+ if (m != max_ind[b])
+ model->phi[m] = pexp->phi_prev[m] + N*m*best_Wo;
+ }
+ }
+}
+
+
+/*
+ Theory is only the phase of the envelope of signal matters within a
+ Critical Band. So we estimate the position of an impulse that
+ approximates the envelope of the signal.
+*/
+
+void cb_phase2(struct PEXP *pexp, MODEL *model) {
+ int st, m, i, a, b, step;
+ float diff,w,c,s,phi1_;
+ float A[MAX_AMP];
+
+ for(m=1; m<=model->L; m++) {
+ A[m] = model->A[m];
+ model->A[m] = 0;
+ }
+
+ st = 2*model->L/4;
+ step = 3;
+ model->phi[1] = pexp->phi_prev[1] + (pexp->Wo_prev+model->Wo)*N/2.0;
+
+ printf("L=%d ", model->L);
+ for(m=st; m<st+step*2; m+=step) {
+ a = m; b=a+step;
+ if (b > model->L)
+ b = model->L;
+
+ c = s = 0;
+ for(i=a; i<b-1; i++) {
+ printf("diff %d,%d ", i, i+1);
+ diff = model->phi[i+1] - model->phi[i];
+ //w = (model->A[i+1] + model->A[i])/2;
+ w = 1.0;
+ c += w*cos(diff); s += w*sin(diff);
+ }
+ phi1_ = atan2(s,c);
+ printf("replacing: ");
+ for(i=a; i<b; i++) {
+ //model->phi[i] = i*phi1_;
+ //model->phi[i] = i*model->phi[1];
+ //model->phi[i] = m*(pexp->Wo_prev+model->Wo)*N/2.0;
+ model->A[m] = A[m];
+ printf("%d ", i);
+ }
+ printf(" . ");
+ }
+ printf("\n");
+}
+
+
+static void smooth_phase4(MODEL *model) {
+ int m;
+ float phi_m, phi_m_1;
+
+ if (model->L > 25) {
+ printf("\nL %d\n", model->L);
+ for(m=model->L/2; m<=model->L; m+=2) {
+ if ((m+1) <= model->L) {
+ phi_m = (model->phi[m] - model->phi[m+1])/2.0;
+ phi_m_1 = (model->phi[m+1] - model->phi[m])/2.0;
+ model->phi[m] = phi_m;
+ model->phi[m+1] = phi_m_1;
+ printf("%d %4.3f %4.3f ", m, phi_m, phi_m_1);
+ }
+ }
+ }
+
+}
+
+/* try repeating last frame, just advance phases to account for time shift */
+
+static void repeat_phases(struct PEXP *pexp, MODEL *model) {
+ int m;
+
+ *model = pexp->prev_model;
+ for(m=1; m<=model->L; m++)
+ model->phi[m] += N*m*model->Wo;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ phase_experiment()
+
+ Phase quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+void phase_experiment(struct PEXP *pexp, MODEL *model, char *arg) {
+ int m;
+ float before[MAX_AMP];
+
+ assert(pexp != NULL);
+ memcpy(before, &model->phi[0], sizeof(float)*MAX_AMP);
+
+ if (strcmp(arg,"q3") == 0) {
+ quant_phases(model, 1, model->L, 3);
+ update_snr_calc(pexp, model, before);
+ update_variance_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"dec2") == 0) {
+ if ((pexp->frames % 2) != 0) {
+ predict_phases(pexp, model, 1, model->L);
+ update_snr_calc(pexp, model, before);
+ update_variance_calc(pexp, model, before);
+ }
+ }
+
+ if (strcmp(arg,"repeat") == 0) {
+ if ((pexp->frames % 2) != 0) {
+ repeat_phases(pexp, model);
+ update_snr_calc(pexp, model, before);
+ update_variance_calc(pexp, model, before);
+ }
+ }
+
+ if (strcmp(arg,"vq") == 0) {
+ sparse_vq_pred_error(pexp, model);
+ update_snr_calc(pexp, model, before);
+ update_variance_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"pred") == 0)
+ predict_phases_state(pexp, model, 1, model->L);
+
+ if (strcmp(arg,"pred1k") == 0)
+ predict_phases(pexp, model, 1, model->L/4);
+
+ if (strcmp(arg,"smooth") == 0) {
+ smooth_phase(pexp, model,0);
+ update_snr_calc(pexp, model, before);
+ }
+ if (strcmp(arg,"smoothtrain") == 0)
+ smooth_phase(pexp, model,1);
+ if (strcmp(arg,"smoothvq") == 0) {
+ smooth_phase(pexp, model,2);
+ update_snr_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"smooth2") == 0)
+ smooth_phase2(pexp, model);
+ if (strcmp(arg,"smooth3") == 0)
+ smooth_phase3(pexp, model);
+ if (strcmp(arg,"smooth4") == 0)
+ smooth_phase4(model);
+ if (strcmp(arg,"vqsmooth3") == 0) {
+ sparse_vq_pred_error(pexp, model);
+ smooth_phase3(pexp, model);
+ }
+
+ if (strcmp(arg,"cb1") == 0) {
+ cb_phase1(pexp, model);
+ update_snr_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"top") == 0) {
+ //top_amp(pexp, model, 1, model->L/4, 4, 1);
+ //top_amp(pexp, model, model->L/4, model->L/3, 4, 1);
+ //top_amp(pexp, model, model->L/3+1, model->L/2, 4, 1);
+ //top_amp(pexp, model, model->L/2, model->L, 6, 1);
+ //rand_phases(model, model->L/2, 3*model->L/4);
+ //struct_phases(pexp, model, model->L/2, 3*model->L/4);
+ //update_snr_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"pred23") == 0) {
+ predict_phases2(pexp, model, model->L/2, model->L);
+ update_snr_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"struct23") == 0) {
+ struct_phases(pexp, model, model->L/2, 3*model->L/4 );
+ update_snr_calc(pexp, model, before);
+ }
+
+ if (strcmp(arg,"addnoise") == 0) {
+ int m;
+ float max;
+
+ max = 0;
+ for(m=1; m<=model->L; m++)
+ if (model->A[m] > max)
+ max = model->A[m];
+ max = 20.0*log10(max);
+ for(m=1; m<=model->L; m++)
+ if (20.0*log10(model->A[m]) < (max-20)) {
+ model->phi[m] += (PI/4)*(1.0 -2.0*rand()/RAND_MAX);
+ //printf("m %d\n", m);
+ }
+ }
+
+ /* normalise phases */
+
+ for(m=1; m<=model->L; m++)
+ model->phi[m] = atan2(sin(model->phi[m]), cos(model->phi[m]));
+
+ /* update states */
+
+ //best_Wo = refine_Wo(pexp, model, model->L/2, model->L);
+ pexp->phi1 += N*model->Wo;
+
+ for(m=1; m<=model->L; m++)
+ pexp->phi_prev[m] = model->phi[m];
+ pexp->Wo_prev = model->Wo;
+ pexp->frames++;
+ pexp->prev_model = *model;
+}
+
+#ifdef OLD_STUFF
+ //quant_phases(model, 1, model->L, 3);
+ //update_variance_calc(pexp, model, before);
+ //print_sparse_pred_error(pexp, model, 1, model->L, 40.0);
+
+ //sparse_vq_pred_error(pexp, model);
+
+ //quant_phases(model, model->L/4+1, model->L, 3);
+
+ //predict_phases1(pexp, model, 1, model->L/4);
+ //quant_phases(model, model->L/4+1, model->L, 3);
+
+ //quant_phases(model, 1, model->L/8, 3);
+
+ //update_snr_calc(pexp, model, before);
+ //update_variance_calc(pexp, model, before);
+
+ //fixed_bits_per_frame(pexp, model, 40);
+ //struct_phases(pexp, model, 1, model->L/4);
+ //rand_phases(model, 10, model->L);
+ //for(m=1; m<=model->L; m++)
+ // model->A[m] = 0.0;
+ //model->A[model->L/2] = 1000;
+ //repeat_phases(model, 20);
+ //predict_phases(pexp, model, 1, model->L/4);
+ //quant_phases(model, 1, 10, 3);
+ //quant_phases(model, 10, 20, 2);
+ //repeat_phases(model, 20);
+ //rand_phases(model, 3*model->L/4, model->L);
+ // print_phi1_pred_error(model, 1, model->L);
+ //predict_phases(pexp, model, 1, model->L/4);
+ //first_order_band(model, model->L/4, model->L/2);
+ //first_order_band(model, model->L/2, 3*model->L/4);
+ //if (fabs(model->Wo - pexp->Wo_prev)< 0.1*model->Wo)
+
+ //print_pred_error(pexp, model, 1, model->L, 40.0);
+ //print_sparse_pred_error(pexp, model, 1, model->L, 40.0);
+
+ //phi1_est = est_phi1(model, 1, model->L/4);
+ //print_phi1_pred_error(model, 1, model->L/4);
+
+ //first_order_band(model, 1, model->L/4, phi1_est);
+ //sub_linear(model, 1, model->L/4, phi1_est);
+
+ //top_amp(pexp, model, 1, model->L/4, 4);
+ //top_amp(pexp, model, model->L/4, model->L/2, 4);
+
+ //first_order_band(model, 1, model->L/4, phi1_est);
+ //first_order_band(model, model->L/4, model->L/2, phi1_est);
+
+ //if (fabs(model->Wo - pexp->Wo_prev) > 0.2*model->Wo)
+ // rand_phases(model, model->L/2, model->L);
+
+ //top_amp(pexp, model, 1, model->L/4, 4);
+ //top_amp(pexp, model, model->L/4, model->L/2, 8);
+ //top_amp(pexp, model, model->L/4+1, model->L/2, 10, 1);
+ //top_amp(pexp, model, 1, model->L/4, 10, 1);
+ //top_amp(pexp, model, model->L/4+1, 3*model->L/4, 10, 1);
+ //top_amp(pexp, model, 1, 3*model->L/4, 20, 1);
+
+ #ifdef REAS_CAND1
+ predict_phases(pexp, model, 1, model->L/4);
+ top_amp(pexp, model, model->L/4+1, 3*model->L/4, 10, 1);
+ rand_phases(model, 3*model->L/4+1, model->L);
+ #endif
+
+ #ifdef REAS_CAND2
+ if ((pexp->frames % 2) == 0) {
+ //printf("quant\n");
+ predict_phases(pexp, model, 1, model->L/4);
+ //top_amp(pexp, model, model->L/4+1, 3*model->L/4, 20, 1);
+ top_amp(pexp, model, model->L/4+1, 7*model->L/8, 20, 1);
+ rand_phases(model, 7*model->L/8+1, model->L);
+ }
+ else {
+ //printf("predict\n");
+ predict_phases(pexp, model, 1, model->L);
+ }
+ #endif
+
+ //#define REAS_CAND3
+ #ifdef REAS_CAND3
+ if ((pexp->frames % 3) != 0) {
+ printf("pred\n");
+ predict_phases(pexp, model, 1, model->L);
+ }
+ else {
+ predict_phases(pexp, model, 1, model->L/4);
+ fixed_bits_per_frame(pexp, model, model->L/4+1, 60);
+ }
+ #endif
+ //predict_phases(pexp, model, model->L/4, model->L);
+
+
+ //print_pred_error(pexp, model, 1, model->L);
+ //limit_prediction_error(pexp, model, model->L/2, model->L, PI/2);
+#endif
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/phaseexp.h
similarity index 67%
copy from gr-vocoder/lib/codec2/phase.h
copy to gr-vocoder/lib/codec2/phaseexp.h
index 4f1a620..865e8ae 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/phaseexp.h
@@ -1,15 +1,15 @@
/*---------------------------------------------------------------------------*\
- FILE........: phase.h
+ FILE........: phaseexp.h
AUTHOR......: David Rowe
- DATE CREATED: 1/2/09
+ DATE CREATED: June 2012
- Functions for modelling phase.
+ Experimental functions for quantising, modelling and synthesising phase.
\*---------------------------------------------------------------------------*/
/*
- Copyright (C) 2009 David Rowe
+ Copyright (C) 2012 David Rowe
All rights reserved.
@@ -25,10 +25,15 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __PHASE__
-#define __PHASE__
+#ifndef __PHASEEXP__
+#define __PHASEEXP__
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
- int order);
+#include "kiss_fft.h"
+
+struct PEXP;
+
+struct PEXP * phase_experiment_create();
+void phase_experiment_destroy(struct PEXP *pexp);
+void phase_experiment(struct PEXP *pexp, MODEL *model, char *arg);
#endif
diff --git a/gr-vocoder/lib/codec2/pilot_coeff.h
b/gr-vocoder/lib/codec2/pilot_coeff.h
new file mode 100644
index 0000000..66e7501
--- /dev/null
+++ b/gr-vocoder/lib/codec2/pilot_coeff.h
@@ -0,0 +1,34 @@
+/* Generated by pilot_coeff_file() Octave function */
+
+const float pilot_coeff[]={
+ 0.00204705,
+ 0.00276339,
+ 0.00432595,
+ 0.00697042,
+ 0.0108452,
+ 0.0159865,
+ 0.0223035,
+ 0.029577,
+ 0.0374709,
+ 0.045557,
+ 0.0533491,
+ 0.0603458,
+ 0.0660751,
+ 0.070138,
+ 0.0722452,
+ 0.0722452,
+ 0.070138,
+ 0.0660751,
+ 0.0603458,
+ 0.0533491,
+ 0.045557,
+ 0.0374709,
+ 0.029577,
+ 0.0223035,
+ 0.0159865,
+ 0.0108452,
+ 0.00697042,
+ 0.00432595,
+ 0.00276339,
+ 0.00204705
+};
diff --git a/gr-vocoder/lib/codec2/postfilter.c
b/gr-vocoder/lib/codec2/postfilter.c
index 05d77c8..7c1a606 100644
--- a/gr-vocoder/lib/codec2/postfilter.c
+++ b/gr-vocoder/lib/codec2/postfilter.c
@@ -27,6 +27,7 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
@@ -34,6 +35,7 @@
#include "defines.h"
#include "comp.h"
#include "dump.h"
+#include "sine.h"
#include "postfilter.h"
/*---------------------------------------------------------------------------*\
@@ -44,6 +46,11 @@
#define BG_THRESH 40.0 /* only consider low levels signals for bg_est */
#define BG_BETA 0.1 /* averaging filter constant */
+#define BG_MARGIN 6.0 /* harmonics this far above BG noise are
+ randomised. Helped make bg noise less
+ spikey (impulsive) for mmt1, but speech was
+ perhaps a little rougher.
+ */
/*---------------------------------------------------------------------------*\
@@ -61,7 +68,7 @@
(5-12) are required to transmit the frequency selective voicing
information. Mixed excitation also requires accurate voicing
estimation (parameter estimators always break occasionally under
- exceptional condition).
+ exceptional conditions).
In our case we use a post filter approach which requires no
additional bits to be transmitted. The decoder measures the average
@@ -97,15 +104,16 @@ void postfilter(
)
{
int m, uv;
- float e;
+ float e, thresh;
/* determine average energy across spectrum */
- e = 0.0;
+ e = 1E-12;
for(m=1; m<=model->L; m++)
e += model->A[m]*model->A[m];
- e = 10.0*log10(e/model->L);
+ assert(e > 0.0);
+ e = 10.0*log10f(e/model->L);
/* If beneath threhold, update bg estimate. The idea
of the threshold is to prevent updating during high level
@@ -119,10 +127,11 @@ void postfilter(
*/
uv = 0;
+ thresh = powf(10.0, (*bg_est + BG_MARGIN)/20.0);
if (model->voiced)
for(m=1; m<=model->L; m++)
- if (20.0*log10(model->A[m]) < *bg_est) {
- model->phi[m] = TWO_PI*(float)rand()/RAND_MAX;
+ if (model->A[m] < thresh) {
+ model->phi[m] = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX;
uv++;
}
diff --git a/gr-vocoder/lib/codec2/quantise.c b/gr-vocoder/lib/codec2/quantise.c
index 25f2606..6423dc8 100644
--- a/gr-vocoder/lib/codec2/quantise.c
+++ b/gr-vocoder/lib/codec2/quantise.c
@@ -36,7 +36,9 @@
#include "quantise.h"
#include "lpc.h"
#include "lsp.h"
-#include "fft.h"
+#include "kiss_fft.h"
+#undef TIMER
+#include "machdep.h"
#define LSP_DELTA1 0.01 /* grid spacing for LSP root searches */
@@ -59,38 +61,20 @@ int lsp_bits(int i) {
return lsp_cb[i].log2m;
}
-#if VECTOR_QUANTISATION
-/*---------------------------------------------------------------------------*\
-
- quantise_uniform
-
- Simulates uniform quantising of a float.
-
-\*---------------------------------------------------------------------------*/
-
-void quantise_uniform(float *val, float min, float max, int bits)
-{
- int levels = 1 << (bits-1);
- float norm;
- int index;
-
- /* hard limit to quantiser range */
-
- printf("min: %f max: %f val: %f ", min, max, val[0]);
- if (val[0] < min) val[0] = min;
- if (val[0] > max) val[0] = max;
-
- norm = (*val - min)/(max-min);
- printf("%f norm: %f ", val[0], norm);
- index = fabs(levels*norm + 0.5);
-
- *val = min + index*(max-min)/levels;
-
- printf("index %d val_: %f\n", index, val[0]);
+int lspd_bits(int i) {
+ return lsp_cbd[i].log2m;
}
+#ifdef __EXPERIMENTAL__
+int lspdt_bits(int i) {
+ return lsp_cbdt[i].log2m;
+}
#endif
+int lsp_pred_vq_bits(int i) {
+ return lsp_cbjvm[i].log2m;
+}
+
/*---------------------------------------------------------------------------*\
quantise_init
@@ -127,13 +111,16 @@ long quantise(const float * cb, float vec[], float w[],
int k, int m, float *se)
float beste; /* best error so far */
long j;
int i;
+ float diff;
besti = 0;
beste = 1E32;
for(j=0; j<m; j++) {
e = 0.0;
- for(i=0; i<k; i++)
- e += pow((cb[j*k+i]-vec[i])*w[i],2.0);
+ for(i=0; i<k; i++) {
+ diff = cb[j*k+i]-vec[i];
+ e += powf(diff*w[i],2.0);
+ }
if (e < beste) {
beste = e;
besti = j;
@@ -147,16 +134,16 @@ long quantise(const float * cb, float vec[], float w[],
int k, int m, float *se)
/*---------------------------------------------------------------------------*\
- lspd_quantise
+ encode_lspds_scalar()
- Scalar lsp difference quantiser.
+ Scalar/VQ LSP difference quantiser.
\*---------------------------------------------------------------------------*/
-void lspd_quantise(
- float lsp[],
- float lsp_[],
- int order
+void encode_lspds_scalar(
+ int indexes[],
+ float lsp[],
+ int order
)
{
int i,k,m;
@@ -164,10 +151,15 @@ void lspd_quantise(
float lsp__hz[LPC_MAX];
float dlsp[LPC_MAX];
float dlsp_[LPC_MAX];
- float wt[1];
+ float wt[LPC_MAX];
const float *cb;
- float se = 0.0;
- int indexes[LPC_MAX];
+ float se;
+
+ assert(order == LPC_ORD);
+
+ for(i=0; i<order; i++) {
+ wt[i] = 1.0;
+ }
/* convert from radians to Hz so we can use human readable
frequencies */
@@ -175,14 +167,13 @@ void lspd_quantise(
for(i=0; i<order; i++)
lsp_hz[i] = (4000.0/PI)*lsp[i];
- dlsp[0] = lsp_hz[0];
- for(i=1; i<order; i++)
- dlsp[i] = lsp_hz[i] - lsp_hz[i-1];
-
- /* simple uniform scalar quantisers */
+ //printf("\n");
wt[0] = 1.0;
for(i=0; i<order; i++) {
+
+ /* find difference from previous qunatised lsp */
+
if (i)
dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
else
@@ -194,496 +185,1361 @@ void lspd_quantise(
indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
dlsp_[i] = cb[indexes[i]*k];
+
if (i)
lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
else
lsp__hz[0] = dlsp_[0];
+
+ //printf("%d lsp %3.2f dlsp %3.2f dlsp_ %3.2f lsp_ %3.2f\n", i,
lsp_hz[i], dlsp[i], dlsp_[i], lsp__hz[i]);
}
- for(; i<order; i++)
- lsp__hz[i] = lsp__hz[i-1] + dlsp[i];
- /* convert back to radians */
+}
+
+void decode_lspds_scalar(
+ float lsp_[],
+ int indexes[],
+ int order
+)
+{
+ int i,k;
+ float lsp__hz[LPC_MAX];
+ float dlsp_[LPC_MAX];
+ const float *cb;
+
+ assert(order == LPC_ORD);
+
+ for(i=0; i<order; i++) {
+
+ k = lsp_cbd[i].k;
+ cb = lsp_cbd[i].cb;
+ dlsp_[i] = cb[indexes[i]*k];
+
+ if (i)
+ lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+ else
+ lsp__hz[0] = dlsp_[0];
- for(i=0; i<order; i++)
lsp_[i] = (PI/4000.0)*lsp__hz[i];
+
+ //printf("%d dlsp_ %3.2f lsp_ %3.2f\n", i, dlsp_[i], lsp__hz[i]);
+ }
+
}
+#ifdef __EXPERIMENTAL__
/*---------------------------------------------------------------------------*\
- lspd_vq_quantise
+ lspvq_quantise
- Vector lsp difference quantiser.
+ Vector LSP quantiser.
\*---------------------------------------------------------------------------*/
-void lspdvq_quantise(
+void lspvq_quantise(
float lsp[],
float lsp_[],
int order
)
{
int i,k,m,ncb, nlsp;
- float dlsp[LPC_MAX];
- float dlsp_[LPC_MAX];
- float wt[LPC_ORD];
+ float wt[LPC_ORD], lsp_hz[LPC_ORD];
const float *cb;
- float se = 0.0;
+ float se;
int index;
- dlsp[0] = lsp[0];
- for(i=1; i<order; i++)
- dlsp[i] = lsp[i] - lsp[i-1];
-
- for(i=0; i<order; i++)
- dlsp_[i] = dlsp[i];
-
- for(i=0; i<order; i++)
+ for(i=0; i<LPC_ORD; i++) {
wt[i] = 1.0;
+ lsp_hz[i] = 4000.0*lsp[i]/PI;
+ }
- /* scalar quantise dLSPs 1,2,3,4,5 */
+ /* scalar quantise LSPs 1,2,3,4 */
- for(i=0; i<5; i++) {
- if (i)
- dlsp[i] = (lsp[i] - lsp_[i-1])*4000.0/PI;
- else
- dlsp[0] = lsp[0]*4000.0/PI;
+ /* simple uniform scalar quantisers */
- k = lsp_cbdvq[i].k;
- m = lsp_cbdvq[i].m;
- cb = lsp_cbdvq[i].cb;
- index = quantise(cb, &dlsp[i], wt, k, m, &se);
- dlsp_[i] = cb[index*k]*PI/4000.0;
+ for(i=0; i<4; i++) {
+ k = lsp_cb[i].k;
+ m = lsp_cb[i].m;
+ cb = lsp_cb[i].cb;
+ index = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+ lsp_[i] = cb[index*k]*PI/4000.0;
+ }
- if (i)
- lsp_[i] = lsp_[i-1] + dlsp_[i];
- else
- lsp_[0] = dlsp_[0];
- }
- dlsp[i] = lsp[i] - lsp_[i-1];
- dlsp_[i] = dlsp[i];
-
- //printf("lsp[0] %f lsp_[0] %f\n", lsp[0], lsp_[0]);
- //printf("lsp[1] %f lsp_[1] %f\n", lsp[1], lsp_[1]);
-
-#ifdef TT
- /* VQ dLSPs 3,4,5 */
-
- ncb = 2;
- nlsp = 2;
- k = lsp_cbdvq[ncb].k;
- m = lsp_cbdvq[ncb].m;
- cb = lsp_cbdvq[ncb].cb;
- index = quantise(cb, &dlsp[nlsp], wt, k, m, &se);
- dlsp_[nlsp] = cb[index*k];
- dlsp_[nlsp+1] = cb[index*k+1];
- dlsp_[nlsp+2] = cb[index*k+2];
-
- lsp_[0] = dlsp_[0];
- for(i=1; i<5; i++)
- lsp_[i] = lsp_[i-1] + dlsp_[i];
- dlsp[i] = lsp[i] - lsp_[i-1];
- dlsp_[i] = dlsp[i];
+ //#define WGHT
+#ifdef WGHT
+ for(i=4; i<9; i++) {
+ wt[i] = 1.0/(lsp[i]-lsp[i-1]) + 1.0/(lsp[i+1]-lsp[i]);
+ //printf("wt[%d] = %f\n", i, wt[i]);
+ }
+ wt[9] = 1.0/(lsp[i]-lsp[i-1]);
#endif
- /* VQ dLSPs 6,7,8,9,10 */
- ncb = 5;
- nlsp = 5;
- k = lsp_cbdvq[ncb].k;
- m = lsp_cbdvq[ncb].m;
- cb = lsp_cbdvq[ncb].cb;
- index = quantise(cb, &dlsp[nlsp], wt, k, m, &se);
- dlsp_[nlsp] = cb[index*k];
- dlsp_[nlsp+1] = cb[index*k+1];
- dlsp_[nlsp+2] = cb[index*k+2];
- dlsp_[nlsp+3] = cb[index*k+3];
- dlsp_[nlsp+4] = cb[index*k+4];
-
- /* rebuild LSPs for dLSPs */
-
- lsp_[0] = dlsp_[0];
- for(i=1; i<order; i++)
- lsp_[i] = lsp_[i-1] + dlsp_[i];
+ /* VQ LSPs 5,6,7,8,9,10 */
+
+ ncb = 4;
+ nlsp = 4;
+ k = lsp_cbjnd[ncb].k;
+ m = lsp_cbjnd[ncb].m;
+ cb = lsp_cbjnd[ncb].cb;
+ index = quantise(cb, &lsp_hz[nlsp], &wt[nlsp], k, m, &se);
+ for(i=4; i<LPC_ORD; i++) {
+ lsp_[i] = cb[index*k+i-4]*(PI/4000.0);
+ //printf("%4.f (%4.f) ", lsp_hz[i], cb[index*k+i-4]);
+ }
}
-void check_lsp_order(float lsp[], int lpc_order)
-{
- int i;
- float tmp;
+/*---------------------------------------------------------------------------*\
- for(i=1; i<lpc_order; i++)
- if (lsp[i] < lsp[i-1]) {
- printf("swap %d\n",i);
- tmp = lsp[i-1];
- lsp[i-1] = lsp[i]-0.05;
- lsp[i] = tmp+0.05;
- }
-}
+ lspjnd_quantise
-void force_min_lsp_dist(float lsp[], int lpc_order)
-{
- int i;
+ Experimental JND LSP quantiser.
- for(i=1; i<lpc_order; i++)
- if ((lsp[i]-lsp[i-1]) < 0.01) {
- lsp[i] += 0.01;
- }
-}
+\*---------------------------------------------------------------------------*/
-/*---------------------------------------------------------------------------*\
+void lspjnd_quantise(float lsps[], float lsps_[], int order)
+{
+ int i,k,m;
+ float wt[LPC_ORD], lsps_hz[LPC_ORD];
+ const float *cb;
+ float se = 0.0;
+ int index;
- lpc_model_amplitudes
+ for(i=0; i<LPC_ORD; i++) {
+ wt[i] = 1.0;
+ }
- Derive a LPC model for amplitude samples then estimate amplitude samples
- from this model with optional LSP quantisation.
+ /* convert to Hz */
- Returns the spectral distortion for this frame.
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_hz[i] = lsps[i]*(4000.0/PI);
+ lsps_[i] = lsps[i];
+ }
-\*---------------------------------------------------------------------------*/
+ /* simple uniform scalar quantisers */
-float lpc_model_amplitudes(
- float Sn[], /* Input frame of speech samples */
- float w[],
- MODEL *model, /* sinusoidal model parameters */
- int order, /* LPC model order */
- int lsp_quant, /* optional LSP quantisation if non-zero */
- float ak[] /* output aks */
-)
-{
- float Wn[M];
- float R[LPC_MAX+1];
- float E;
- int i,j;
- float snr;
- float lsp[LPC_MAX];
- float lsp_hz[LPC_MAX];
- float lsp_[LPC_MAX];
- int roots; /* number of LSP roots found */
- int index;
- float se = 0.0;
- int k,m;
- const float * cb;
- float wt[LPC_MAX];
-
- for(i=0; i<M; i++)
- Wn[i] = Sn[i]*w[i];
- autocorrelate(Wn,R,M,order);
- levinson_durbin(R,ak,order);
-
- E = 0.0;
- for(i=0; i<=order; i++)
- E += ak[i]*R[i];
+ for(i=0; i<4; i++) {
+ k = lsp_cbjnd[i].k;
+ m = lsp_cbjnd[i].m;
+ cb = lsp_cbjnd[i].cb;
+ index = quantise(cb, &lsps_hz[i], wt, k, m, &se);
+ lsps_[i] = cb[index*k]*(PI/4000.0);
+ }
- for(i=0; i<order; i++)
- wt[i] = 1.0;
+ /* VQ LSPs 5,6,7,8,9,10 */
+
+ k = lsp_cbjnd[4].k;
+ m = lsp_cbjnd[4].m;
+ cb = lsp_cbjnd[4].cb;
+ index = quantise(cb, &lsps_hz[4], &wt[4], k, m, &se);
+ //printf("k = %d m = %d c[0] %f cb[k] %f\n", k,m,cb[0],cb[k]);
+ //printf("index = %4d: ", index);
+ for(i=4; i<LPC_ORD; i++) {
+ lsps_[i] = cb[index*k+i-4]*(PI/4000.0);
+ //printf("%4.f (%4.f) ", lsps_hz[i], cb[index*k+i-4]);
+ }
+ //printf("\n");
+}
- if (lsp_quant) {
- roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
- if (roots != order)
- printf("LSP roots not found\n");
+void compute_weights(const float *x, float *w, int ndim);
- /* convert from radians to Hz to make quantisers more
- human readable */
+/*---------------------------------------------------------------------------*\
- for(i=0; i<order; i++)
- lsp_hz[i] = (4000.0/PI)*lsp[i];
+ lspdt_quantise
- /* simple uniform scalar quantisers */
+ LSP difference in time quantiser. Split VQ, encoding LSPs 1-4 with
+ one VQ, and LSPs 5-10 with a second. Update of previous lsp memory
+ is done outside of this function to handle dT between 10 or 20ms
+ frames.
- for(i=0; i<10; i++) {
- k = lsp_cb[i].k;
- m = lsp_cb[i].m;
- cb = lsp_cb[i].cb;
- index = quantise(cb, &lsp_hz[i], wt, k, m, &se);
- lsp_hz[i] = cb[index*k];
- }
+ mode action
+ ------------------
- /* experiment: simulating uniform quantisation error
- for(i=0; i<order; i++)
- lsp[i] += PI*(12.5/4000.0)*(1.0 - 2.0*(float)rand()/RAND_MAX);
- */
+ LSPDT_ALL VQ LSPs 1-4 and 5-10
+ LSPDT_LOW Just VQ LSPs 1-4, for LSPs 5-10 just copy previous
+ LSPDT_HIGH Just VQ LSPs 5-10, for LSPs 1-4 just copy previous
- for(i=0; i<order; i++)
- lsp[i] = (PI/4000.0)*lsp_hz[i];
+\*---------------------------------------------------------------------------*/
- /* Bandwidth Expansion (BW). Prevents any two LSPs getting too
- close together after quantisation. We know from experiment
- that LSP quantisation errors < 12.5Hz (25Hz setp size) are
- inaudible so we use that as the minimum LSP separation.
- */
+void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode)
+{
+ int i;
+ float wt[LPC_ORD];
+ float lsps_dt[LPC_ORD];
+#ifdef TRY_LSPDT_VQ
+ int k,m;
+ int index;
+ const float *cb;
+ float se = 0.0;
+#endif // TRY_LSPDT_VQ
- for(i=1; i<5; i++) {
- if (lsp[i] - lsp[i-1] < PI*(12.5/4000.0))
- lsp[i] = lsp[i-1] + PI*(12.5/4000.0);
+ //compute_weights(lsps, wt, LPC_ORD);
+ for(i=0; i<LPC_ORD; i++) {
+ wt[i] = 1.0;
}
- /* as quantiser gaps increased, larger BW expansion was required
- to prevent twinkly noises */
+ //compute_weights(lsps, wt, LPC_ORD );
- for(i=5; i<8; i++) {
- if (lsp[i] - lsp[i-1] < PI*(25.0/4000.0))
- lsp[i] = lsp[i-1] + PI*(25.0/4000.0);
- }
- for(i=8; i<order; i++) {
- if (lsp[i] - lsp[i-1] < PI*(75.0/4000.0))
- lsp[i] = lsp[i-1] + PI*(75.0/4000.0);
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_dt[i] = lsps[i] - lsps__prev[i];
+ lsps_[i] = lsps__prev[i];
}
- for(j=0; j<order; j++)
- lsp_[j] = lsp[j];
-
- lsp_to_lpc(lsp_, ak, order);
-#ifdef DUMP
- dump_lsp(lsp);
+ //#define TRY_LSPDT_VQ
+#ifdef TRY_LSPDT_VQ
+ /* this actually improves speech a bit, but 40ms updates works surprsingly
well.... */
+ k = lsp_cbdt[0].k;
+ m = lsp_cbdt[0].m;
+ cb = lsp_cbdt[0].cb;
+ index = quantise(cb, lsps_dt, wt, k, m, &se);
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_[i] += cb[index*k + i];
+ }
#endif
- }
-#ifdef DUMP
- dump_E(E);
+}
#endif
- #ifdef SIM_QUANT
- /* simulated LPC energy quantisation */
- {
- float e = 10.0*log10(E);
- e += 2.0*(1.0 - 2.0*(float)rand()/RAND_MAX);
- E = pow(10.0,e/10.0);
- }
- #endif
- aks_to_M2(ak,order,model,E,&snr, 1); /* {ak} -> {Am} LPC decode */
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX_ENTRIES 16384
- return snr;
+void compute_weights(const float *x, float *w, int ndim)
+{
+ int i;
+ w[0] = MIN(x[0], x[1]-x[0]);
+ for (i=1;i<ndim-1;i++)
+ w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+ w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
+
+ for (i=0;i<ndim;i++)
+ w[i] = 1./(.01+w[i]);
+ //w[0]*=3;
+ //w[1]*=2;
}
-/*---------------------------------------------------------------------------*\
-
- aks_to_M2()
-
- Transforms the linear prediction coefficients to spectral amplitude
- samples. This function determines A(m) from the average energy per
- band using an FFT.
+/* LSP weight calculation ported from m-file function kindly submitted
+ by Anssi, OH3GDD */
-\*---------------------------------------------------------------------------*/
+void compute_weights_anssi_mode2(const float *x, float *w, int ndim)
+{
+ int i;
+ float d[LPC_ORD];
+
+ assert(ndim == LPC_ORD);
+
+ for(i=0; i<LPC_ORD; i++)
+ d[i] = 1.0;
+
+ d[0] = x[1];
+ for (i=1; i<LPC_ORD-1; i++)
+ d[i] = x[i+1] - x[i-1];
+ d[LPC_ORD-1] = PI - x[8];
+ for (i=0; i<LPC_ORD; i++) {
+ if (x[i]<((400.0/4000.0)*PI))
+ w[i]=5.0/(0.01+d[i]);
+ else if (x[i]<((700.0/4000.0)*PI))
+ w[i]=4.0/(0.01+d[i]);
+ else if (x[i]<((1200.0/4000.0)*PI))
+ w[i]=3.0/(0.01+d[i]);
+ else if (x[i]<((2000.0/4000.0)*PI))
+ w[i]=2.0/(0.01+d[i]);
+ else
+ w[i]=1.0/(0.01+d[i]);
+
+ w[i]=pow(w[i]+0.3, 0.66);
+ }
+}
-void aks_to_M2(
- float ak[], /* LPC's */
- int order,
- MODEL *model, /* sinusoidal model parameters for this frame */
- float E, /* energy term */
- float *snr, /* signal to noise ratio for this frame in dB */
- int dump /* true to dump sample to dump file */
-)
+int find_nearest(const float *codebook, int nb_entries, float *x, int ndim)
{
- COMP Pw[FFT_DEC]; /* power spectrum */
- int i,m; /* loop variables */
- int am,bm; /* limits of current band */
- float r; /* no. rads/bin */
- float Em; /* energy in band */
- float Am; /* spectral amplitude sample */
- float signal, noise;
+ int i, j;
+ float min_dist = 1e15;
+ int nearest = 0;
- r = TWO_PI/(FFT_DEC);
+ for (i=0;i<nb_entries;i++)
+ {
+ float dist=0;
+ for (j=0;j<ndim;j++)
+ dist += (x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
+ if (dist<min_dist)
+ {
+ min_dist = dist;
+ nearest = i;
+ }
+ }
+ return nearest;
+}
- /* Determine DFT of A(exp(jw)) --------------------------------------------*/
+int find_nearest_weighted(const float *codebook, int nb_entries, float *x,
const float *w, int ndim)
+{
+ int i, j;
+ float min_dist = 1e15;
+ int nearest = 0;
- for(i=0; i<FFT_DEC; i++) {
- Pw[i].real = 0.0;
- Pw[i].imag = 0.0;
+ for (i=0;i<nb_entries;i++)
+ {
+ float dist=0;
+ for (j=0;j<ndim;j++)
+ dist += w[j]*(x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
+ if (dist<min_dist)
+ {
+ min_dist = dist;
+ nearest = i;
+ }
}
+ return nearest;
+}
- for(i=0; i<=order; i++)
- Pw[i].real = ak[i];
- fft(&Pw[0].real,FFT_DEC,1);
-
- /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
+void lspjvm_quantise(float *x, float *xq, int ndim)
+{
+ int i, n1, n2, n3;
+ float err[LPC_ORD], err2[LPC_ORD], err3[LPC_ORD];
+ float w[LPC_ORD], w2[LPC_ORD], w3[LPC_ORD];
+ const float *codebook1 = lsp_cbjvm[0].cb;
+ const float *codebook2 = lsp_cbjvm[1].cb;
+ const float *codebook3 = lsp_cbjvm[2].cb;
- for(i=0; i<FFT_DEC/2; i++)
- Pw[i].real = E/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
-#ifdef DUMP
- if (dump)
- dump_Pw(Pw);
-#endif
+ w[0] = MIN(x[0], x[1]-x[0]);
+ for (i=1;i<ndim-1;i++)
+ w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+ w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
- /* Determine magnitudes by linear interpolation of P(w) -------------------*/
+ compute_weights(x, w, ndim);
- signal = noise = 0.0;
- for(m=1; m<=model->L; m++) {
- am = floor((m - 0.5)*model->Wo/r + 0.5);
- bm = floor((m + 0.5)*model->Wo/r + 0.5);
- Em = 0.0;
+ n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, ndim);
- for(i=am; i<bm; i++)
- Em += Pw[i].real;
- Am = sqrt(Em);
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = codebook1[ndim*n1+i];
+ err[i] = x[i] - xq[i];
+ }
+ for (i=0;i<ndim/2;i++)
+ {
+ err2[i] = err[2*i];
+ err3[i] = err[2*i+1];
+ w2[i] = w[2*i];
+ w3[i] = w[2*i+1];
+ }
+ n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, ndim/2);
+ n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, ndim/2);
- signal += pow(model->A[m],2.0);
- noise += pow(model->A[m] - Am,2.0);
- model->A[m] = Am;
+ for (i=0;i<ndim/2;i++)
+ {
+ xq[2*i] += codebook2[ndim*n2/2+i];
+ xq[2*i+1] += codebook3[ndim*n3/2+i];
}
- *snr = 10.0*log10(signal/noise);
}
-/*---------------------------------------------------------------------------*\
+#ifdef __EXPERIMENTAL__
- FUNCTION....: encode_Wo()
- AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
+#define MBEST_STAGES 4
- Encodes Wo using a WO_LEVELS quantiser.
+struct MBEST_LIST {
+ int index[MBEST_STAGES]; /* index of each stage that lead us to this
error */
+ float error;
+};
-\*---------------------------------------------------------------------------*/
+struct MBEST {
+ int entries; /* number of entries in mbest list */
+ struct MBEST_LIST *list;
+};
-int encode_Wo(float Wo)
-{
- int index;
- float Wo_min = TWO_PI/P_MAX;
- float Wo_max = TWO_PI/P_MIN;
- float norm;
- norm = (Wo - Wo_min)/(Wo_max - Wo_min);
- index = floor(WO_LEVELS * norm + 0.5);
- if (index < 0 ) index = 0;
- if (index > (WO_LEVELS-1)) index = WO_LEVELS-1;
+static struct MBEST *mbest_create(int entries) {
+ int i,j;
+ struct MBEST *mbest;
- return index;
+ assert(entries > 0);
+ mbest = (struct MBEST *)malloc(sizeof(struct MBEST));
+ assert(mbest != NULL);
+
+ mbest->entries = entries;
+ mbest->list = (struct MBEST_LIST *)malloc(entries*sizeof(struct
MBEST_LIST));
+ assert(mbest->list != NULL);
+
+ for(i=0; i<mbest->entries; i++) {
+ for(j=0; j<MBEST_STAGES; j++)
+ mbest->list[i].index[j] = 0;
+ mbest->list[i].error = 1E32;
+ }
+
+ return mbest;
+}
+
+
+static void mbest_destroy(struct MBEST *mbest) {
+ assert(mbest != NULL);
+ free(mbest->list);
+ free(mbest);
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: decode_Wo()
- AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
+ mbest_insert
- Decodes Wo using a WO_LEVELS quantiser.
+ Insert the results of a vector to codebook entry comparison. The
+ list is ordered in order or error, so those entries with the
+ smallest error will be first on the list.
\*---------------------------------------------------------------------------*/
-float decode_Wo(int index)
-{
- float Wo_min = TWO_PI/P_MAX;
- float Wo_max = TWO_PI/P_MIN;
- float step;
- float Wo;
+static void mbest_insert(struct MBEST *mbest, int index[], float error) {
+ int i, j, found;
+ struct MBEST_LIST *list = mbest->list;
+ int entries = mbest->entries;
+
+ found = 0;
+ for(i=0; i<entries && !found; i++)
+ if (error < list[i].error) {
+ found = 1;
+ for(j=entries-1; j>i; j--)
+ list[j] = list[j-1];
+ for(j=0; j<MBEST_STAGES; j++)
+ list[i].index[j] = index[j];
+ list[i].error = error;
+ }
+}
- step = (Wo_max - Wo_min)/WO_LEVELS;
- Wo = Wo_min + step*(index);
- return Wo;
+static void mbest_print(char title[], struct MBEST *mbest) {
+ int i,j;
+
+ printf("%s\n", title);
+ for(i=0; i<mbest->entries; i++) {
+ for(j=0; j<MBEST_STAGES; j++)
+ printf(" %4d ", mbest->list[i].index[j]);
+ printf(" %f\n", mbest->list[i].error);
+ }
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: speech_to_uq_lsps()
- AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
+ mbest_search
- Analyse a windowed frame of time domain speech to determine LPCs
- which are the converted to LSPs for quantisation and transmission
- over the channel.
+ Searches vec[] to a codebbook of vectors, and maintains a list of the mbest
+ closest matches.
\*---------------------------------------------------------------------------*/
-float speech_to_uq_lsps(float lsp[],
- float ak[],
- float Sn[],
- float w[],
- int order
+static void mbest_search(
+ const float *cb, /* VQ codebook to search */
+ float vec[], /* target vector */
+ float w[], /* weighting vector */
+ int k, /* dimension of vector */
+ int m, /* number on entries in codebook */
+ struct MBEST *mbest, /* list of closest matches */
+ int index[] /* indexes that lead us here */
)
{
- int i, roots;
- float Wn[M];
- float R[LPC_MAX+1];
- float E;
+ float e;
+ int i,j;
+ float diff;
- for(i=0; i<M; i++)
- Wn[i] = Sn[i]*w[i];
- autocorrelate(Wn, R, M, order);
- levinson_durbin(R, ak, order);
+ for(j=0; j<m; j++) {
+ e = 0.0;
+ for(i=0; i<k; i++) {
+ diff = cb[j*k+i]-vec[i];
+ e += pow(diff*w[i],2.0);
+ }
+ index[0] = j;
+ mbest_insert(mbest, index, e);
+ }
+}
- E = 0.0;
- for(i=0; i<=order; i++)
- E += ak[i]*R[i];
- roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
- if (roots != order) {
- /* for some reason LSP roots could not be found */
- /* some alpha testers are reporting this condition */
- fprintf(stderr, "LSP roots not found!\nroots = %d\n", roots);
- for(i=0; i<=order; i++)
- fprintf(stderr, "a[%d] = %f\n", i, ak[i]);
+/* 3 stage VQ LSP quantiser. Design and guidance kindly submitted by Anssi,
OH3GDD */
- /* some benign LSP values we can use instead */
+void lspanssi_quantise(float *x, float *xq, int ndim, int mbest_entries)
+{
+ int i, j, n1, n2, n3, n4;
+ float w[LPC_ORD];
+ const float *codebook1 = lsp_cbvqanssi[0].cb;
+ const float *codebook2 = lsp_cbvqanssi[1].cb;
+ const float *codebook3 = lsp_cbvqanssi[2].cb;
+ const float *codebook4 = lsp_cbvqanssi[3].cb;
+ struct MBEST *mbest_stage1, *mbest_stage2, *mbest_stage3, *mbest_stage4;
+ float target[LPC_ORD];
+ int index[MBEST_STAGES];
+
+ mbest_stage1 = mbest_create(mbest_entries);
+ mbest_stage2 = mbest_create(mbest_entries);
+ mbest_stage3 = mbest_create(mbest_entries);
+ mbest_stage4 = mbest_create(mbest_entries);
+ for(i=0; i<MBEST_STAGES; i++)
+ index[i] = 0;
+
+ compute_weights_anssi_mode2(x, w, ndim);
+
+ #ifdef DUMP
+ dump_weights(w, ndim);
+ #endif
+
+ /* Stage 1 */
+
+ mbest_search(codebook1, x, w, ndim, lsp_cbvqanssi[0].m, mbest_stage1, index);
+ mbest_print("Stage 1:", mbest_stage1);
+
+ /* Stage 2 */
+
+ for (j=0; j<mbest_entries; j++) {
+ index[1] = n1 = mbest_stage1->list[j].index[0];
+ for(i=0; i<ndim; i++)
+ target[i] = x[i] - codebook1[ndim*n1+i];
+ mbest_search(codebook2, target, w, ndim, lsp_cbvqanssi[1].m,
mbest_stage2, index);
+ }
+ mbest_print("Stage 2:", mbest_stage2);
+
+ /* Stage 3 */
+
+ for (j=0; j<mbest_entries; j++) {
+ index[2] = n1 = mbest_stage2->list[j].index[1];
+ index[1] = n2 = mbest_stage2->list[j].index[0];
+ for(i=0; i<ndim; i++)
+ target[i] = x[i] - codebook1[ndim*n1+i] - codebook2[ndim*n2+i];
+ mbest_search(codebook3, target, w, ndim, lsp_cbvqanssi[2].m,
mbest_stage3, index);
+ }
+ mbest_print("Stage 3:", mbest_stage3);
+
+ /* Stage 4 */
+
+ for (j=0; j<mbest_entries; j++) {
+ index[3] = n1 = mbest_stage3->list[j].index[2];
+ index[2] = n2 = mbest_stage3->list[j].index[1];
+ index[1] = n3 = mbest_stage3->list[j].index[0];
+ for(i=0; i<ndim; i++)
+ target[i] = x[i] - codebook1[ndim*n1+i] - codebook2[ndim*n2+i] -
codebook3[ndim*n3+i];
+ mbest_search(codebook4, target, w, ndim, lsp_cbvqanssi[3].m,
mbest_stage4, index);
+ }
+ mbest_print("Stage 4:", mbest_stage4);
+
+ n1 = mbest_stage4->list[0].index[3];
+ n2 = mbest_stage4->list[0].index[2];
+ n3 = mbest_stage4->list[0].index[1];
+ n4 = mbest_stage4->list[0].index[0];
+ for (i=0;i<ndim;i++)
+ xq[i] = codebook1[ndim*n1+i] + codebook2[ndim*n2+i] +
codebook3[ndim*n3+i] + codebook4[ndim*n4+i];
+
+ mbest_destroy(mbest_stage1);
+ mbest_destroy(mbest_stage2);
+ mbest_destroy(mbest_stage3);
+ mbest_destroy(mbest_stage4);
+}
+#endif
+
+int check_lsp_order(float lsp[], int lpc_order)
+{
+ int i;
+ float tmp;
+ int swaps = 0;
+
+ for(i=1; i<lpc_order; i++)
+ if (lsp[i] < lsp[i-1]) {
+ //fprintf(stderr, "swap %d\n",i);
+ swaps++;
+ tmp = lsp[i-1];
+ lsp[i-1] = lsp[i]-0.1;
+ lsp[i] = tmp+0.1;
+ i = 1; /* start check again, as swap may have caused out of order
*/
+ }
+
+ return swaps;
+}
+
+void force_min_lsp_dist(float lsp[], int lpc_order)
+{
+ int i;
+
+ for(i=1; i<lpc_order; i++)
+ if ((lsp[i]-lsp[i-1]) < 0.01) {
+ lsp[i] += 0.01;
+ }
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ lpc_post_filter()
+
+ Applies a post filter to the LPC synthesis filter power spectrum
+ Pw, which supresses the inter-formant energy.
+
+ The algorithm is from p267 (Section 8.6) of "Digital Speech",
+ edited by A.M. Kondoz, 1994 published by Wiley and Sons. Chapter 8
+ of this text is on the MBE vocoder, and this is a freq domain
+ adaptation of post filtering commonly used in CELP.
+
+ I used the Octave simulation lpcpf.m to get an understaing of the
+ algorithm.
+
+ Requires two more FFTs which is significantly more MIPs. However
+ it should be possible to implement this more efficiently in the
+ time domain. Just not sure how to handle relative time delays
+ between the synthesis stage and updating these coeffs. A smaller
+ FFT size might also be accetable to save CPU.
+
+ TODO:
+ [ ] sync var names between Octave and C version
+ [ ] doc gain normalisation
+ [ ] I think the first FFT is not rqd as we do the same
+ thing in aks_to_M2().
+
+\*---------------------------------------------------------------------------*/
+
+void lpc_post_filter(kiss_fft_cfg fft_fwd_cfg, MODEL *model, COMP Pw[], float
ak[],
+ int order, int dump, float beta, float gamma, int
bass_boost)
+{
+ int i;
+ COMP x[FFT_ENC]; /* input to FFTs */
+ COMP Aw[FFT_ENC]; /* LPC analysis filter spectrum */
+ COMP Ww[FFT_ENC]; /* weighting spectrum */
+ float Rw[FFT_ENC]; /* R = WA */
+ float e_before, e_after, gain;
+ float Pfw[FFT_ENC]; /* Post filter mag spectrum */
+ float max_Rw, min_Rw;
+ float coeff;
+ TIMER_VAR(tstart, tfft1, taw, tfft2, tww, tr);
+
+ TIMER_SAMPLE(tstart);
+
+ /* Determine LPC inverse filter spectrum 1/A(exp(jw)) -----------*/
+
+ /* we actually want the synthesis filter A(exp(jw)) but the
+ inverse (analysis) filter is easier to find as it's FIR, we
+ just use the inverse of 1/A to get the synthesis filter
+ A(exp(jw)) */
+
+ for(i=0; i<FFT_ENC; i++) {
+ x[i].real = 0.0;
+ x[i].imag = 0.0;
+ }
+
+ for(i=0; i<=order; i++)
+ x[i].real = ak[i];
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)x, (kiss_fft_cpx *)Aw);
+
+ TIMER_SAMPLE_AND_LOG(tfft1, tstart, " fft1");
+
+ for(i=0; i<FFT_ENC/2; i++) {
+ Aw[i].real = 1.0/(Aw[i].real*Aw[i].real + Aw[i].imag*Aw[i].imag);
+ }
+
+ TIMER_SAMPLE_AND_LOG(taw, tfft1, " Aw");
+
+ /* Determine weighting filter spectrum W(exp(jw)) ---------------*/
+
+ for(i=0; i<FFT_ENC; i++) {
+ x[i].real = 0.0;
+ x[i].imag = 0.0;
+ }
+
+ x[0].real = ak[0];
+ coeff = gamma;
+ for(i=1; i<=order; i++) {
+ x[i].real = ak[i] * coeff;
+ coeff *= gamma;
+ }
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)x, (kiss_fft_cpx *)Ww);
+
+ TIMER_SAMPLE_AND_LOG(tfft2, taw, " fft2");
+
+ for(i=0; i<FFT_ENC/2; i++) {
+ Ww[i].real = Ww[i].real*Ww[i].real + Ww[i].imag*Ww[i].imag;
+ }
+
+ TIMER_SAMPLE_AND_LOG(tww, tfft2, " Ww");
+
+ /* Determined combined filter R = WA ---------------------------*/
+
+ max_Rw = 0.0; min_Rw = 1E32;
+ for(i=0; i<FFT_ENC/2; i++) {
+ Rw[i] = sqrtf(Ww[i].real * Aw[i].real);
+ if (Rw[i] > max_Rw)
+ max_Rw = Rw[i];
+ if (Rw[i] < min_Rw)
+ min_Rw = Rw[i];
+
+ }
+
+ TIMER_SAMPLE_AND_LOG(tr, tww, " R");
+
+ #ifdef DUMP
+ if (dump)
+ dump_Rw(Rw);
+ #endif
+
+ /* create post filter mag spectrum and apply ------------------*/
+
+ /* measure energy before post filtering */
+
+ e_before = 1E-4;
+ for(i=0; i<FFT_ENC/2; i++)
+ e_before += Pw[i].real;
+
+ /* apply post filter and measure energy */
+
+ #ifdef DUMP
+ if (dump)
+ dump_Pwb(Pw);
+ #endif
+
+ e_after = 1E-4;
+ for(i=0; i<FFT_ENC/2; i++) {
+ Pfw[i] = powf(Rw[i], beta);
+ Pw[i].real *= Pfw[i] * Pfw[i];
+ e_after += Pw[i].real;
+ }
+ gain = e_before/e_after;
+
+ /* apply gain factor to normalise energy */
+
+ for(i=0; i<FFT_ENC/2; i++) {
+ Pw[i].real *= gain;
+ }
+
+ if (bass_boost) {
+ /* add 3dB to first 1 kHz to account for LP effect of PF */
+
+ for(i=0; i<FFT_ENC/8; i++) {
+ Pw[i].real *= 1.4*1.4;
+ }
+ }
+
+ TIMER_SAMPLE_AND_LOG2(tr, " filt");
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ aks_to_M2()
+
+ Transforms the linear prediction coefficients to spectral amplitude
+ samples. This function determines A(m) from the average energy per
+ band using an FFT.
+
+\*---------------------------------------------------------------------------*/
+
+void aks_to_M2(
+ kiss_fft_cfg fft_fwd_cfg,
+ float ak[], /* LPC's */
+ int order,
+ MODEL *model, /* sinusoidal model parameters for this frame */
+ float E, /* energy term */
+ float *snr, /* signal to noise ratio for this frame in dB */
+ int dump, /* true to dump sample to dump file */
+ int sim_pf, /* true to simulate a post filter */
+ int pf, /* true to LPC post filter */
+ int bass_boost, /* enable LPC filter 0-1khz 3dB boost */
+ float beta,
+ float gamma /* LPC post filter parameters */
+)
+{
+ COMP pw[FFT_ENC]; /* input to FFT for power spectrum */
+ COMP Pw[FFT_ENC]; /* output power spectrum */
+ int i,m; /* loop variables */
+ int am,bm; /* limits of current band */
+ float r; /* no. rads/bin */
+ float Em; /* energy in band */
+ float Am; /* spectral amplitude sample */
+ float signal, noise;
+ TIMER_VAR(tstart, tfft, tpw, tpf);
+
+ TIMER_SAMPLE(tstart);
+
+ r = TWO_PI/(FFT_ENC);
+
+ /* Determine DFT of A(exp(jw)) --------------------------------------------*/
+
+ for(i=0; i<FFT_ENC; i++) {
+ pw[i].real = 0.0;
+ pw[i].imag = 0.0;
+ }
+
+ for(i=0; i<=order; i++)
+ pw[i].real = ak[i];
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)pw, (kiss_fft_cpx *)Pw);
+
+ TIMER_SAMPLE_AND_LOG(tfft, tstart, " fft");
+
+ /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
+
+ for(i=0; i<FFT_ENC/2; i++)
+ Pw[i].real = E/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
+
+ TIMER_SAMPLE_AND_LOG(tpw, tfft, " Pw");
+
+ if (pf)
+ lpc_post_filter(fft_fwd_cfg, model, Pw, ak, order, dump, beta, gamma,
bass_boost);
+
+ TIMER_SAMPLE_AND_LOG(tpf, tpw, " LPC post filter");
+
+ #ifdef DUMP
+ if (dump)
+ dump_Pw(Pw);
+ #endif
+
+ /* Determine magnitudes from P(w) ----------------------------------------*/
+
+ /* when used just by decoder {A} might be all zeroes so init signal
+ and noise to prevent log(0) errors */
+
+ signal = 1E-30; noise = 1E-32;
+
+ for(m=1; m<=model->L; m++) {
+ am = (int)((m - 0.5)*model->Wo/r + 0.5);
+ bm = (int)((m + 0.5)*model->Wo/r + 0.5);
+ Em = 0.0;
+
+ for(i=am; i<bm; i++)
+ Em += Pw[i].real;
+ Am = sqrtf(Em);
+
+ signal += model->A[m]*model->A[m];
+ noise += (model->A[m] - Am)*(model->A[m] - Am);
+
+ /* This code significantly improves perf of LPC model, in
+ particular when combined with phase0. The LPC spectrum tends
+ to track just under the peaks of the spectral envelope, and
+ just above nulls. This algorithm does the reverse to
+ compensate - raising the amplitudes of spectral peaks, while
+ attenuating the null. This enhances the formants, and
+ supresses the energy between formants. */
+
+ if (sim_pf) {
+ if (Am > model->A[m])
+ Am *= 0.7;
+ if (Am < model->A[m])
+ Am *= 1.4;
+ }
+
+ model->A[m] = Am;
+ }
+ *snr = 10.0*log10f(signal/noise);
+
+ TIMER_SAMPLE_AND_LOG2(tpf, " rec");
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_Wo()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/8/2010
+
+ Encodes Wo using a WO_LEVELS quantiser.
+
+\*---------------------------------------------------------------------------*/
+
+int encode_Wo(float Wo)
+{
+ int index;
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+ float norm;
+
+ norm = (Wo - Wo_min)/(Wo_max - Wo_min);
+ index = floorf(WO_LEVELS * norm + 0.5);
+ if (index < 0 ) index = 0;
+ if (index > (WO_LEVELS-1)) index = WO_LEVELS-1;
+
+ return index;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: decode_Wo()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/8/2010
+
+ Decodes Wo using a WO_LEVELS quantiser.
+
+\*---------------------------------------------------------------------------*/
+
+float decode_Wo(int index)
+{
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+ float step;
+ float Wo;
+
+ step = (Wo_max - Wo_min)/WO_LEVELS;
+ Wo = Wo_min + step*(index);
+
+ return Wo;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_Wo_dt()
+ AUTHOR......: David Rowe
+ DATE CREATED: 6 Nov 2011
+
+ Encodes Wo difference from last frame.
+
+\*---------------------------------------------------------------------------*/
+
+int encode_Wo_dt(float Wo, float prev_Wo)
+{
+ int index, mask, max_index, min_index;
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+ float norm;
+
+ norm = (Wo - prev_Wo)/(Wo_max - Wo_min);
+ index = floor(WO_LEVELS * norm + 0.5);
+ //printf("ENC index: %d ", index);
+
+ /* hard limit */
+
+ max_index = (1 << (WO_DT_BITS-1)) - 1;
+ min_index = - (max_index+1);
+ if (index > max_index) index = max_index;
+ if (index < min_index) index = min_index;
+ //printf("max_index: %d min_index: %d hard index: %d ",
+ // max_index, min_index, index);
+
+ /* mask so that only LSB WO_DT_BITS remain, bit WO_DT_BITS is the sign bit
*/
+
+ mask = ((1 << WO_DT_BITS) - 1);
+ index &= mask;
+ //printf("mask: 0x%x index: 0x%x\n", mask, index);
+
+ return index;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: decode_Wo_dt()
+ AUTHOR......: David Rowe
+ DATE CREATED: 6 Nov 2011
+
+ Decodes Wo using WO_DT_BITS difference from last frame.
+
+\*---------------------------------------------------------------------------*/
+
+float decode_Wo_dt(int index, float prev_Wo)
+{
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+ float step;
+ float Wo;
+ int mask;
+
+ /* sign extend index */
+
+ //printf("DEC index: %d ");
+ if (index & (1 << (WO_DT_BITS-1))) {
+ mask = ~((1 << WO_DT_BITS) - 1);
+ index |= mask;
+ }
+ //printf("DEC mask: 0x%x index: %d \n", mask, index);
+
+ step = (Wo_max - Wo_min)/WO_LEVELS;
+ Wo = prev_Wo + step*(index);
+
+ /* bit errors can make us go out of range leading to all sorts of
+ probs like seg faults */
+
+ if (Wo > Wo_max) Wo = Wo_max;
+ if (Wo < Wo_min) Wo = Wo_min;
+
+ return Wo;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: speech_to_uq_lsps()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/8/2010
+
+ Analyse a windowed frame of time domain speech to determine LPCs
+ which are the converted to LSPs for quantisation and transmission
+ over the channel.
+
+\*---------------------------------------------------------------------------*/
+
+float speech_to_uq_lsps(float lsp[],
+ float ak[],
+ float Sn[],
+ float w[],
+ int order
+)
+{
+ int i, roots;
+ float Wn[M];
+ float R[LPC_MAX+1];
+ float e, E;
+
+ e = 0.0;
+ for(i=0; i<M; i++) {
+ Wn[i] = Sn[i]*w[i];
+ e += Wn[i]*Wn[i];
+ }
+
+ /* trap 0 energy case as LPC analysis will fail */
+
+ if (e == 0.0) {
+ for(i=0; i<order; i++)
+ lsp[i] = (PI/order)*(float)i;
+ return 0.0;
+ }
+
+ autocorrelate(Wn, R, M, order);
+ levinson_durbin(R, ak, order);
+
+ E = 0.0;
+ for(i=0; i<=order; i++)
+ E += ak[i]*R[i];
+
+ /* 15 Hz BW expansion as I can't hear the difference and it may help
+ help occasional fails in the LSP root finding. Important to do this
+ after energy calculation to avoid -ve energy values.
+ */
+
+ for(i=0; i<=order; i++)
+ ak[i] *= powf(0.994,(float)i);
+
+ roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
+ if (roots != order) {
+ /* if root finding fails use some benign LSP values instead */
for(i=0; i<order; i++)
lsp[i] = (PI/order)*(float)i;
}
- return E;
+ return E;
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_lsps_scalar()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/8/2010
+
+ Thirty-six bit sclar LSP quantiser. From a vector of unquantised
+ (floating point) LSPs finds the quantised LSP indexes.
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_scalar(int indexes[], float lsp[], int order)
+{
+ int i,k,m;
+ float wt[1];
+ float lsp_hz[LPC_MAX];
+ const float * cb;
+ float se;
+
+ /* convert from radians to Hz so we can use human readable
+ frequencies */
+
+ for(i=0; i<order; i++)
+ lsp_hz[i] = (4000.0/PI)*lsp[i];
+
+ /* scalar quantisers */
+
+ wt[0] = 1.0;
+ for(i=0; i<order; i++) {
+ k = lsp_cb[i].k;
+ m = lsp_cb[i].m;
+ cb = lsp_cb[i].cb;
+ indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: decode_lsps_scalar()
+ AUTHOR......: David Rowe
+ DATE CREATED: 22/8/2010
+
+ From a vector of quantised LSP indexes, returns the quantised
+ (floating point) LSPs.
+
+\*---------------------------------------------------------------------------*/
+
+void decode_lsps_scalar(float lsp[], int indexes[], int order)
+{
+ int i,k;
+ float lsp_hz[LPC_MAX];
+ const float * cb;
+
+ for(i=0; i<order; i++) {
+ k = lsp_cb[i].k;
+ cb = lsp_cb[i].cb;
+ lsp_hz[i] = cb[indexes[i]*k];
+ }
+
+ /* convert back to radians */
+
+ for(i=0; i<order; i++)
+ lsp[i] = (PI/4000.0)*lsp_hz[i];
+}
+
+
+#ifdef __EXPERIMENTAL__
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_lsps_diff_freq_vq()
+ AUTHOR......: David Rowe
+ DATE CREATED: 15 November 2011
+
+ Twenty-five bit LSP quantiser. LSPs 1-4 are quantised with scalar
+ LSP differences (in frequency, i.e difference from the previous
+ LSP). LSPs 5-10 are quantised with a VQ trained generated using
+ vqtrainjnd.c
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order)
+{
+ int i,k,m;
+ float lsp_hz[LPC_MAX];
+ float lsp__hz[LPC_MAX];
+ float dlsp[LPC_MAX];
+ float dlsp_[LPC_MAX];
+ float wt[LPC_MAX];
+ const float * cb;
+ float se;
+
+ for(i=0; i<LPC_ORD; i++) {
+ wt[i] = 1.0;
+ }
+
+ /* convert from radians to Hz so we can use human readable
+ frequencies */
+
+ for(i=0; i<order; i++)
+ lsp_hz[i] = (4000.0/PI)*lsp[i];
+
+ /* scalar quantisers for LSP differences 1..4 */
+
+ wt[0] = 1.0;
+ for(i=0; i<4; i++) {
+ if (i)
+ dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
+ else
+ dlsp[0] = lsp_hz[0];
+
+ k = lsp_cbd[i].k;
+ m = lsp_cbd[i].m;
+ cb = lsp_cbd[i].cb;
+ indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
+ dlsp_[i] = cb[indexes[i]*k];
+
+ if (i)
+ lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+ else
+ lsp__hz[0] = dlsp_[0];
+ }
+
+ /* VQ LSPs 5,6,7,8,9,10 */
+
+ k = lsp_cbjnd[4].k;
+ m = lsp_cbjnd[4].m;
+ cb = lsp_cbjnd[4].cb;
+ indexes[4] = quantise(cb, &lsp_hz[4], &wt[4], k, m, &se);
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: encode_lsps()
+ FUNCTION....: decode_lsps_diff_freq_vq()
AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
+ DATE CREATED: 15 Nov 2011
- From a vector of unquantised (floating point) LSPs finds the quantised
- LSP indexes.
+ From a vector of quantised LSP indexes, returns the quantised
+ (floating point) LSPs.
\*---------------------------------------------------------------------------*/
-void encode_lsps(int indexes[], float lsp[], int order)
+void decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order)
{
int i,k,m;
- float wt[1];
- float lsp_hz[LPC_MAX];
+ float dlsp_[LPC_MAX];
+ float lsp__hz[LPC_MAX];
const float * cb;
- float se = 0.0;
- /* convert from radians to Hz so we can use human readable
- frequencies */
+ /* scalar LSP differences */
+
+ for(i=0; i<4; i++) {
+ cb = lsp_cbd[i].cb;
+ dlsp_[i] = cb[indexes[i]];
+ if (i)
+ lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+ else
+ lsp__hz[0] = dlsp_[0];
+ }
+
+ /* VQ */
+
+ k = lsp_cbjnd[4].k;
+ m = lsp_cbjnd[4].m;
+ cb = lsp_cbjnd[4].cb;
+ for(i=4; i<order; i++)
+ lsp__hz[i] = cb[indexes[4]*k+i-4];
+
+ /* convert back to radians */
for(i=0; i<order; i++)
- lsp_hz[i] = (4000.0/PI)*lsp[i];
+ lsp_[i] = (PI/4000.0)*lsp__hz[i];
+}
- /* simple uniform scalar quantisers */
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_lsps_diff_time()
+ AUTHOR......: David Rowe
+ DATE CREATED: 12 Sep 2012
+
+ Encode difference from preious frames's LSPs using
+ 3,3,2,2,2,2,1,1,1,1 scalar quantisers (18 bits total).
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_diff_time(int indexes[],
+ float lsps[],
+ float lsps__prev[],
+ int order)
+{
+ int i,k,m;
+ float lsps_dt[LPC_ORD];
+ float wt[LPC_MAX];
+ const float * cb;
+ float se;
+
+ /* Determine difference in time and convert from radians to Hz so
+ we can use human readable frequencies */
+
+ for(i=0; i<LPC_ORD; i++) {
+ lsps_dt[i] = (4000/PI)*(lsps[i] - lsps__prev[i]);
+ }
+
+ /* scalar quantisers */
wt[0] = 1.0;
for(i=0; i<order; i++) {
- k = lsp_cb[i].k;
- m = lsp_cb[i].m;
- cb = lsp_cb[i].cb;
- indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+ k = lsp_cbdt[i].k;
+ m = lsp_cbdt[i].m;
+ cb = lsp_cbdt[i].cb;
+ indexes[i] = quantise(cb, &lsps_dt[i], wt, k, m, &se);
}
+
}
+
/*---------------------------------------------------------------------------*\
- FUNCTION....: decode_lsps()
+ FUNCTION....: decode_lsps_diff_time()
AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
+ DATE CREATED: 15 Nov 2011
- From a vector of quantised LSP indexes, returns the quantised
+ From a quantised LSP indexes, returns the quantised
(floating point) LSPs.
\*---------------------------------------------------------------------------*/
-void decode_lsps(float lsp[], int indexes[], int order)
+void decode_lsps_diff_time(
+ float lsps_[],
+ int indexes[],
+ float lsps__prev[],
+ int order)
{
- int i,k;
- float lsp_hz[LPC_MAX];
- const float * cb;
+ int i,k,m;
+ const float * cb;
+
+ for(i=0; i<order; i++)
+ lsps_[i] = lsps__prev[i];
for(i=0; i<order; i++) {
- k = lsp_cb[i].k;
- cb = lsp_cb[i].cb;
- lsp_hz[i] = cb[indexes[i]*k];
+ k = lsp_cbdt[i].k;
+ cb = lsp_cbdt[i].cb;
+ lsps_[i] += (PI/4000.0)*cb[indexes[i]*k];
}
- /* convert back to radians */
+}
+#endif
- for(i=0; i<order; i++)
- lsp[i] = (PI/4000.0)*lsp_hz[i];
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_lsps_vq()
+ AUTHOR......: David Rowe
+ DATE CREATED: 15 Feb 2012
+
+ Multi-stage VQ LSP quantiser developed by Jean-Marc Valin.
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_vq(int *indexes, float *x, float *xq, int ndim)
+{
+ int i, n1, n2, n3;
+ float err[LPC_ORD], err2[LPC_ORD], err3[LPC_ORD];
+ float w[LPC_ORD], w2[LPC_ORD], w3[LPC_ORD];
+ const float *codebook1 = lsp_cbjvm[0].cb;
+ const float *codebook2 = lsp_cbjvm[1].cb;
+ const float *codebook3 = lsp_cbjvm[2].cb;
+
+ assert(ndim <= LPC_ORD);
+
+ w[0] = MIN(x[0], x[1]-x[0]);
+ for (i=1;i<ndim-1;i++)
+ w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+ w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
+
+ compute_weights(x, w, ndim);
+
+ n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, ndim);
+
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = codebook1[ndim*n1+i];
+ err[i] = x[i] - xq[i];
+ }
+ for (i=0;i<ndim/2;i++)
+ {
+ err2[i] = err[2*i];
+ err3[i] = err[2*i+1];
+ w2[i] = w[2*i];
+ w3[i] = w[2*i+1];
+ }
+ n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, ndim/2);
+ n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, ndim/2);
+
+ indexes[0] = n1;
+ indexes[1] = n2;
+ indexes[2] = n3;
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: decode_lsps_vq()
+ AUTHOR......: David Rowe
+ DATE CREATED: 15 Feb 2012
+
+\*---------------------------------------------------------------------------*/
+
+void decode_lsps_vq(int *indexes, float *xq, int ndim)
+{
+ int i, n1, n2, n3;
+ const float *codebook1 = lsp_cbjvm[0].cb;
+ const float *codebook2 = lsp_cbjvm[1].cb;
+ const float *codebook3 = lsp_cbjvm[2].cb;
+
+ n1 = indexes[0];
+ n2 = indexes[1];
+ n3 = indexes[2];
+
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = codebook1[ndim*n1+i];
+ }
+ for (i=0;i<ndim/2;i++)
+ {
+ xq[2*i] += codebook2[ndim*n2/2+i];
+ xq[2*i+1] += codebook3[ndim*n3/2+i];
+ }
}
+
/*---------------------------------------------------------------------------*\
FUNCTION....: bw_expand_lsps()
@@ -692,20 +1548,44 @@ void decode_lsps(float lsp[], int indexes[], int order)
Applies Bandwidth Expansion (BW) to a vector of LSPs. Prevents any
two LSPs getting too close together after quantisation. We know
- from experiment that LSP quantisation errors < 12.5Hz (25Hz setp
+ from experiment that LSP quantisation errors < 12.5Hz (25Hz step
size) are inaudible so we use that as the minimum LSP separation.
\*---------------------------------------------------------------------------*/
-void bw_expand_lsps(float lsp[],
+void bw_expand_lsps(float lsp[], int order, float min_sep_low, float
min_sep_high)
+{
+ int i;
+
+ for(i=1; i<4; i++) {
+
+ if ((lsp[i] - lsp[i-1]) < min_sep_low*(PI/4000.0))
+ lsp[i] = lsp[i-1] + min_sep_low*(PI/4000.0);
+
+ }
+
+ /* As quantiser gaps increased, larger BW expansion was required
+ to prevent twinkly noises. This may need more experiment for
+ different quanstisers.
+ */
+
+ for(i=4; i<order; i++) {
+ if (lsp[i] - lsp[i-1] < min_sep_high*(PI/4000.0))
+ lsp[i] = lsp[i-1] + min_sep_high*(PI/4000.0);
+ }
+}
+
+void bw_expand_lsps2(float lsp[],
int order
)
{
int i;
- for(i=1; i<5; i++) {
- if (lsp[i] - lsp[i-1] < PI*(12.5/4000.0))
- lsp[i] = lsp[i-1] + PI*(12.5/4000.0);
+ for(i=1; i<4; i++) {
+
+ if ((lsp[i] - lsp[i-1]) < 100.0*(PI/4000.0))
+ lsp[i] = lsp[i-1] + 100.0*(PI/4000.0);
+
}
/* As quantiser gaps increased, larger BW expansion was required
@@ -713,16 +1593,84 @@ void bw_expand_lsps(float lsp[],
different quanstisers.
*/
- for(i=5; i<8; i++) {
- if (lsp[i] - lsp[i-1] < PI*(25.0/4000.0))
- lsp[i] = lsp[i-1] + PI*(25.0/4000.0);
+ for(i=4; i<order; i++) {
+ if (lsp[i] - lsp[i-1] < 200.0*(PI/4000.0))
+ lsp[i] = lsp[i-1] + 200.0*(PI/4000.0);
+ }
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: locate_lsps_jnd_steps()
+ AUTHOR......: David Rowe
+ DATE CREATED: 27/10/2011
+
+ Applies a form of Bandwidth Expansion (BW) to a vector of LSPs.
+ Listening tests have determined that "quantising" the position of
+ each LSP to the non-linear steps below introduces a "just noticable
+ difference" in the synthesised speech.
+
+ This operation can be used before quantisation to limit the input
+ data to the quantiser to a number of discrete steps.
+
+ This operation can also be used during quantisation as a form of
+ hysteresis in the calculation of quantiser error. For example if
+ the quantiser target of lsp1 is 500 Hz, candidate vectors with lsp1
+ of 515 and 495 Hz sound effectively the same.
+
+\*---------------------------------------------------------------------------*/
+
+void locate_lsps_jnd_steps(float lsps[], int order)
+{
+ int i;
+ float lsp_hz, step;
+
+ assert(order == 10);
+
+ /* quantise to 25Hz steps */
+
+ step = 25;
+ for(i=0; i<2; i++) {
+ lsp_hz = lsps[i]*4000.0/PI;
+ lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+ lsps[i] = lsp_hz*PI/4000.0;
+ if (i) {
+ if (lsps[i] == lsps[i-1])
+ lsps[i] += step*PI/4000.0;
+
+ }
+ }
+
+ /* quantise to 50Hz steps */
+
+ step = 50;
+ for(i=2; i<4; i++) {
+ lsp_hz = lsps[i]*4000.0/PI;
+ lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+ lsps[i] = lsp_hz*PI/4000.0;
+ if (i) {
+ if (lsps[i] == lsps[i-1])
+ lsps[i] += step*PI/4000.0;
+
+ }
}
- for(i=8; i<order; i++) {
- if (lsp[i] - lsp[i-1] < PI*(75.0/4000.0))
- lsp[i] = lsp[i-1] + PI*(75.0/4000.0);
+
+ /* quantise to 100Hz steps */
+
+ step = 100;
+ for(i=4; i<10; i++) {
+ lsp_hz = lsps[i]*4000.0/PI;
+ lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+ lsps[i] = lsp_hz*PI/4000.0;
+ if (i) {
+ if (lsps[i] == lsps[i-1])
+ lsps[i] += step*PI/4000.0;
+
+ }
}
}
+
/*---------------------------------------------------------------------------*\
FUNCTION....: apply_lpc_correction()
@@ -758,9 +1706,9 @@ int encode_energy(float e)
float e_max = E_MAX_DB;
float norm;
- e = 10.0*log10(e);
+ e = 10.0*log10f(e);
norm = (e - e_min)/(e_max - e_min);
- index = floor(E_LEVELS * norm + 0.5);
+ index = floorf(E_LEVELS * norm + 0.5);
if (index < 0 ) index = 0;
if (index > (E_LEVELS-1)) index = E_LEVELS-1;
@@ -773,7 +1721,7 @@ int encode_energy(float e)
AUTHOR......: David Rowe
DATE CREATED: 22/8/2010
- Decodes energy using a WO_BITS quantiser.
+ Decodes energy using a E_LEVELS quantiser.
\*---------------------------------------------------------------------------*/
@@ -786,39 +1734,12 @@ float decode_energy(int index)
step = (e_max - e_min)/E_LEVELS;
e = e_min + step*(index);
- e = pow(10.0,e/10.0);
+ e = powf(10.0,e/10.0);
return e;
}
-/*---------------------------------------------------------------------------*\
-
- FUNCTION....: encode_amplitudes()
- AUTHOR......: David Rowe
- DATE CREATED: 22/8/2010
-
- Time domain LPC is used model the amplitudes which are then
- converted to LSPs and quantised. So we don't actually encode the
- amplitudes directly, rather we derive an equivalent representation
- from the time domain speech.
-
-\*---------------------------------------------------------------------------*/
-
-void encode_amplitudes(int lsp_indexes[],
- int *energy_index,
- MODEL *model,
- float Sn[],
- float w[])
-{
- float lsps[LPC_ORD];
- float ak[LPC_ORD+1];
- float e;
-
- e = speech_to_uq_lsps(lsps, ak, Sn, w, LPC_ORD);
- encode_lsps(lsp_indexes, lsps, LPC_ORD);
- *energy_index = encode_energy(e);
-}
-
+#ifdef NOT_USED
/*---------------------------------------------------------------------------*\
FUNCTION....: decode_amplitudes()
@@ -830,7 +1751,8 @@ void encode_amplitudes(int lsp_indexes[],
\*---------------------------------------------------------------------------*/
-float decode_amplitudes(MODEL *model,
+float decode_amplitudes(kiss_fft_cfg fft_fwd_cfg,
+ MODEL *model,
float ak[],
int lsp_indexes[],
int energy_index,
@@ -840,12 +1762,209 @@ float decode_amplitudes(MODEL *model,
{
float snr;
- decode_lsps(lsps, lsp_indexes, LPC_ORD);
+ decode_lsps_scalar(lsps, lsp_indexes, LPC_ORD);
bw_expand_lsps(lsps, LPC_ORD);
lsp_to_lpc(lsps, ak, LPC_ORD);
*e = decode_energy(energy_index);
- aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1);
+ aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1, 0, 0, 1);
apply_lpc_correction(model);
return snr;
}
+#endif
+
+static float ge_coeff[2] = {0.8, 0.9};
+
+void compute_weights2(const float *x, const float *xp, float *w, int ndim)
+{
+ w[0] = 30;
+ w[1] = 1;
+ if (x[1]<0)
+ {
+ w[0] *= .6;
+ w[1] *= .3;
+ }
+ if (x[1]<-10)
+ {
+ w[0] *= .3;
+ w[1] *= .3;
+ }
+ /* Higher weight if pitch is stable */
+ if (fabsf(x[0]-xp[0])<.2)
+ {
+ w[0] *= 2;
+ w[1] *= 1.5;
+ } else if (fabsf(x[0]-xp[0])>.5) /* Lower if not stable */
+ {
+ w[0] *= .5;
+ }
+
+ /* Lower weight for low energy */
+ if (x[1] < xp[1]-10)
+ {
+ w[1] *= .5;
+ }
+ if (x[1] < xp[1]-20)
+ {
+ w[1] *= .5;
+ }
+
+ //w[0] = 30;
+ //w[1] = 1;
+
+ /* Square the weights because it's applied on the squared error */
+ w[0] *= w[0];
+ w[1] *= w[1];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: quantise_WoE()
+ AUTHOR......: Jean-Marc Valin & David Rowe
+ DATE CREATED: 29 Feb 2012
+
+ Experimental joint Wo and LPC energy vector quantiser developed by
+ Jean-Marc Valin. Exploits correlations between the difference in
+ the log pitch and log energy from frame to frame. For example
+ both the pitch and energy tend to only change by small amounts
+ during voiced speech, however it is important that these changes be
+ coded carefully. During unvoiced speech they both change a lot but
+ the ear is less sensitve to errors so coarser quantisation is OK.
+
+ The ear is sensitive to log energy and loq pitch so we quantise in
+ these domains. That way the error measure used to quantise the
+ values is close to way the ear senses errors.
+
+ See http://jmspeex.livejournal.com/10446.html
+
+\*---------------------------------------------------------------------------*/
+
+void quantise_WoE(MODEL *model, float *e, float xq[])
+{
+ int i, n1;
+ float x[2];
+ float err[2];
+ float w[2];
+ const float *codebook1 = ge_cb[0].cb;
+ int nb_entries = ge_cb[0].m;
+ int ndim = ge_cb[0].k;
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+
+ x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
+ x[1] = 10.0*log10f(1e-4 + *e);
+
+ compute_weights2(x, xq, w, ndim);
+ for (i=0;i<ndim;i++)
+ err[i] = x[i]-ge_coeff[i]*xq[i];
+ n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
+
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+ err[i] -= codebook1[ndim*n1+i];
+ }
+
+ /*
+ x = log2(4000*Wo/(PI*50));
+ 2^x = 4000*Wo/(PI*50)
+ Wo = (2^x)*(PI*50)/4000;
+ */
+
+ model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
+
+ /* bit errors can make us go out of range leading to all sorts of
+ probs like seg faults */
+
+ if (model->Wo > Wo_max) model->Wo = Wo_max;
+ if (model->Wo < Wo_min) model->Wo = Wo_min;
+
+ model->L = PI/model->Wo; /* if we quantise Wo re-compute L */
+
+ *e = powf(10.0, xq[1]/10.0);
+}
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: encode_WoE()
+ AUTHOR......: Jean-Marc Valin & David Rowe
+ DATE CREATED: 11 May 2012
+
+ Joint Wo and LPC energy vector quantiser developed my Jean-Marc
+ Valin. Returns index, and updated states xq[].
+
+\*---------------------------------------------------------------------------*/
+
+int encode_WoE(MODEL *model, float e, float xq[])
+{
+ int i, n1;
+ float x[2];
+ float err[2];
+ float w[2];
+ const float *codebook1 = ge_cb[0].cb;
+ int nb_entries = ge_cb[0].m;
+ int ndim = ge_cb[0].k;
+
+ assert((1<<WO_E_BITS) == nb_entries);
+
+ if (e < 0.0) e = 0; /* occasional small negative energies due LPC round off
I guess */
+
+ x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
+ x[1] = 10.0*log10f(1e-4 + e);
+
+ compute_weights2(x, xq, w, ndim);
+ for (i=0;i<ndim;i++)
+ err[i] = x[i]-ge_coeff[i]*xq[i];
+ n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
+
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+ err[i] -= codebook1[ndim*n1+i];
+ }
+
+ //printf("enc: %f %f (%f)(%f) \n", xq[0], xq[1], e, 10.0*log10(1e-4 + e));
+ return n1;
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+ FUNCTION....: decode_WoE()
+ AUTHOR......: Jean-Marc Valin & David Rowe
+ DATE CREATED: 11 May 2012
+
+ Joint Wo and LPC energy vector quantiser developed my Jean-Marc
+ Valin. Given index and states xq[], returns Wo & E, and updates
+ states xq[].
+
+\*---------------------------------------------------------------------------*/
+
+void decode_WoE(MODEL *model, float *e, float xq[], int n1)
+{
+ int i;
+ const float *codebook1 = ge_cb[0].cb;
+ int ndim = ge_cb[0].k;
+ float Wo_min = TWO_PI/P_MAX;
+ float Wo_max = TWO_PI/P_MIN;
+
+ for (i=0;i<ndim;i++)
+ {
+ xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+ }
+
+ //printf("dec: %f %f\n", xq[0], xq[1]);
+ model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
+
+ /* bit errors can make us go out of range leading to all sorts of
+ probs like seg faults */
+
+ if (model->Wo > Wo_max) model->Wo = Wo_max;
+ if (model->Wo < Wo_min) model->Wo = Wo_min;
+
+ model->L = PI/model->Wo; /* if we quantise Wo re-compute L */
+
+ *e = powf(10.0, xq[1]/10.0);
+}
+
diff --git a/gr-vocoder/lib/codec2/quantise.h b/gr-vocoder/lib/codec2/quantise.h
index 42b05f4..0932d9d 100644
--- a/gr-vocoder/lib/codec2/quantise.h
+++ b/gr-vocoder/lib/codec2/quantise.h
@@ -26,47 +26,82 @@
#ifndef __QUANTISE__
#define __QUANTISE__
-#define WO_BITS 7
-#define WO_LEVELS (1<<WO_BITS)
-#define E_BITS 5
-#define E_LEVELS (1<<E_BITS)
-#define E_MIN_DB -10.0
-#define E_MAX_DB 40.0
+#include "kiss_fft.h"
+
+#define WO_BITS 7
+#define WO_LEVELS (1<<WO_BITS)
+#define WO_DT_BITS 3
+
+#define E_BITS 5
+#define E_LEVELS (1<<E_BITS)
+#define E_MIN_DB -10.0
+#define E_MAX_DB 40.0
+
+#define LSP_SCALAR_INDEXES 10
+#define LSPD_SCALAR_INDEXES 10
+#define LSP_PRED_VQ_INDEXES 3
+#define LSP_DIFF_FREQ_INDEXES 5
+#define LSP_DIFF_TIME_BITS 7
+
+#define LSPDT_ALL 0
+#define LSPDT_LOW 1
+#define LSPDT_HIGH 2
+
+#define WO_E_BITS 8
+
+#define LPCPF_GAMMA 0.5
+#define LPCPF_BETA 0.2
void quantise_init();
float lpc_model_amplitudes(float Sn[], float w[], MODEL *model, int order,
int lsp,float ak[]);
-void aks_to_M2(float ak[], int order, MODEL *model, float E, float *snr,
- int dump);
+void aks_to_M2(kiss_fft_cfg fft_fwd_cfg, float ak[], int order, MODEL *model,
+ float E, float *snr, int dump, int sim_pf,
+ int pf, int bass_boost, float beta, float gamma);
int encode_Wo(float Wo);
float decode_Wo(int index);
-
-void encode_lsps(int indexes[], float lsp[], int order);
-void decode_lsps(float lsp[], int indexes[], int order);
-void lspd_quantise(float lsp[], float lsp_[], int order);
-void lspdvq_quantise(float lsp[], float lsp_[], int order);
+int encode_Wo_dt(float Wo, float prev_Wo);
+float decode_Wo_dt(int index, float prev_Wo);
+void encode_lsps_scalar(int indexes[], float lsp[], int order);
+void decode_lsps_scalar(float lsp[], int indexes[], int order);
+void encode_lspds_scalar(int indexes[], float lsp[], int order);
+void decode_lspds_scalar(float lsp[], int indexes[], int order);
+void encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order);
+void decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order);
+void encode_lsps_diff_time(int indexes[],
+ float lsp[],
+ float lsp__prev[],
+ int order);
+void decode_lsps_diff_time(float lsp_[],
+ int indexes[],
+ float lsp__prev[],
+ int order);
+
+void encode_lsps_vq(int *indexes, float *x, float *xq, int ndim);
+void decode_lsps_vq(int *indexes, float *xq, int ndim);
+
+long quantise(const float * cb, float vec[], float w[], int k, int m, float
*se);
+void lspvq_quantise(float lsp[], float lsp_[], int order);
+void lspjnd_quantise(float lsp[], float lsp_[], int order);
+void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode);
+void lspjvm_quantise(float lsps[], float lsps_[], int order);
+void lspanssi_quantise(float lsps[], float lsps_[], int order, int
mbest_entries);
+
+void quantise_WoE(MODEL *model, float *e, float xq[]);
+int encode_WoE(MODEL *model, float e, float xq[]);
+void decode_WoE(MODEL *model, float *e, float xq[], int n1);
int encode_energy(float e);
float decode_energy(int index);
-void encode_amplitudes(int lsp_indexes[],
- int *energy_index,
- MODEL *model,
- float Sn[],
- float w[]);
-
-float decode_amplitudes(MODEL *model,
- float ak[],
- int lsp_indexes[],
- int energy_index,
- float lsps[],
- float *e);
-
void pack(unsigned char * bits, unsigned int *nbit, int index, unsigned int
index_bits);
int unpack(const unsigned char * bits, unsigned int *nbit, unsigned int
index_bits);
int lsp_bits(int i);
+int lspd_bits(int i);
+int lspdt_bits(int i);
+int lsp_pred_vq_bits(int i);
void apply_lpc_correction(MODEL *model);
float speech_to_uq_lsps(float lsp[],
@@ -75,9 +110,15 @@ float speech_to_uq_lsps(float lsp[],
float w[],
int order
);
-void bw_expand_lsps(float lsp[],
- int order
- );
-void decode_lsps(float lsp[], int indexes[], int order);
+int check_lsp_order(float lsp[], int lpc_order);
+void bw_expand_lsps(float lsp[], int order, float min_sep_low, float
min_sep_high);
+void bw_expand_lsps2(float lsp[], int order);
+void locate_lsps_jnd_steps(float lsp[], int order);
+float decode_amplitudes(MODEL *model,
+ float ak[],
+ int lsp_indexes[],
+ int energy_index,
+ float lsps[],
+ float *e);
#endif
diff --git a/gr-vocoder/lib/codec2/rn.h b/gr-vocoder/lib/codec2/rn.h
new file mode 100644
index 0000000..934f458
--- /dev/null
+++ b/gr-vocoder/lib/codec2/rn.h
@@ -0,0 +1,964 @@
+/* Generated by rn_file() Octave function */
+
+const float gt_alpha5_root[]={
+ 2.86997e-05,
+ 2.2286e-05,
+ 1.82863e-05,
+ 1.42303e-05,
+ 1.04905e-05,
+ 6.70859e-06,
+ 3.05918e-06,
+ -6.22187e-07,
+ -4.22748e-06,
+ -7.85603e-06,
+ -1.14317e-05,
+ -1.50227e-05,
+ -1.85712e-05,
+ -2.21275e-05,
+ -2.56455e-05,
+ -2.91642e-05,
+ -3.26453e-05,
+ -3.61199e-05,
+ -3.95556e-05,
+ -4.29778e-05,
+ -4.63581e-05,
+ -4.97179e-05,
+ -5.3032e-05,
+ -5.63184e-05,
+ -5.95548e-05,
+ -6.27565e-05,
+ -6.59032e-05,
+ -6.90085e-05,
+ -7.20538e-05,
+ -7.50509e-05,
+ -7.7983e-05,
+ -8.08605e-05,
+ -8.36678e-05,
+ -8.64141e-05,
+ -8.9085e-05,
+ -9.16888e-05,
+ -9.42119e-05,
+ -9.66619e-05,
+ -9.9026e-05,
+ -0.000101311,
+ -0.000103505,
+ -0.000105614,
+ -0.000107627,
+ -0.00010955,
+ -0.000111372,
+ -0.000113099,
+ -0.00011472,
+ -0.000116241,
+ -0.000117652,
+ -0.000118959,
+ -0.000120152,
+ -0.000121235,
+ -0.000122201,
+ -0.000123053,
+ -0.000123784,
+ -0.000124397,
+ -0.000124884,
+ -0.00012525,
+ -0.000125487,
+ -0.000125598,
+ -0.000125578,
+ -0.000125428,
+ -0.000125145,
+ -0.000124729,
+ -0.000124185,
+ -0.000123518,
+ -0.000122709,
+ -0.000121766,
+ -0.000120685,
+ -0.000119471,
+ -0.000118119,
+ -0.000116633,
+ -0.000115009,
+ -0.000113251,
+ -0.000111356,
+ -0.000109326,
+ -0.00010716,
+ -0.00010486,
+ -0.000102424,
+ -9.98553e-05,
+ -9.71528e-05,
+ -9.43199e-05,
+ -9.13551e-05,
+ -8.82623e-05,
+ -8.50404e-05,
+ -8.16936e-05,
+ -7.82211e-05,
+ -7.46271e-05,
+ -7.09109e-05,
+ -6.70773e-05,
+ -6.31256e-05,
+ -5.90607e-05,
+ -5.48823e-05,
+ -5.05954e-05,
+ -4.62001e-05,
+ -4.17016e-05,
+ -3.71002e-05,
+ -3.24015e-05,
+ -2.7606e-05,
+ -2.27195e-05,
+ -1.77428e-05,
+ -1.2682e-05,
+ -7.53795e-06,
+ -2.31702e-06,
+ 2.97965e-06,
+ 8.34567e-06,
+ 1.37796e-05,
+ 1.9275e-05,
+ 2.483e-05,
+ 3.04382e-05,
+ 3.60975e-05,
+ 4.18011e-05,
+ 4.75467e-05,
+ 5.33273e-05,
+ 5.91403e-05,
+ 6.49787e-05,
+ 7.08393e-05,
+ 7.67152e-05,
+ 8.26029e-05,
+ 8.84957e-05,
+ 9.43895e-05,
+ 0.000100278,
+ 0.000106157,
+ 0.00011202,
+ 0.000117864,
+ 0.000123681,
+ 0.000129468,
+ 0.000135218,
+ 0.000140929,
+ 0.000146583,
+ 0.000152183,
+ 0.000157725,
+ 0.000163202,
+ 0.000168608,
+ 0.000173938,
+ 0.000179183,
+ 0.00018434,
+ 0.0001894,
+ 0.00019436,
+ 0.000199211,
+ 0.000203949,
+ 0.000208568,
+ 0.000213063,
+ 0.000217426,
+ 0.000221654,
+ 0.00022574,
+ 0.000229678,
+ 0.000233463,
+ 0.000237089,
+ 0.000240551,
+ 0.000243843,
+ 0.000246959,
+ 0.000249895,
+ 0.000252644,
+ 0.000255202,
+ 0.000257562,
+ 0.000259721,
+ 0.000261672,
+ 0.000263411,
+ 0.000264933,
+ 0.000266234,
+ 0.000267308,
+ 0.000268152,
+ 0.00026876,
+ 0.000269128,
+ 0.000269253,
+ 0.000269129,
+ 0.000268754,
+ 0.000268123,
+ 0.000267232,
+ 0.000266079,
+ 0.000264658,
+ 0.000262968,
+ 0.000261006,
+ 0.000258767,
+ 0.000256251,
+ 0.000253453,
+ 0.000250373,
+ 0.000247007,
+ 0.000243354,
+ 0.000239412,
+ 0.00023518,
+ 0.000230655,
+ 0.000225837,
+ 0.000220723,
+ 0.000215314,
+ 0.000209608,
+ 0.000203605,
+ 0.000197304,
+ 0.000190706,
+ 0.000183812,
+ 0.000176621,
+ 0.000169145,
+ 0.000161363,
+ 0.000153275,
+ 0.000144895,
+ 0.000136224,
+ 0.000127266,
+ 0.00011802,
+ 0.000108491,
+ 9.8679e-05,
+ 8.85877e-05,
+ 7.82196e-05,
+ 6.7577e-05,
+ 5.66636e-05,
+ 4.54822e-05,
+ 3.40369e-05,
+ 2.23311e-05,
+ 1.03695e-05,
+ -1.844e-06,
+ -1.43041e-05,
+ -2.70061e-05,
+ -3.99444e-05,
+ -5.31139e-05,
+ -6.65082e-05,
+ -8.01218e-05,
+ -9.39481e-05,
+ -0.000107981,
+ -0.000122213,
+ -0.000136638,
+ -0.000151248,
+ -0.000166036,
+ -0.000180995,
+ -0.000196115,
+ -0.00021139,
+ -0.000226811,
+ -0.000242369,
+ -0.000258056,
+ -0.000273861,
+ -0.000289776,
+ -0.000305792,
+ -0.000321898,
+ -0.000338084,
+ -0.000354342,
+ -0.00037066,
+ -0.000387027,
+ -0.000403434,
+ -0.00041987,
+ -0.000436324,
+ -0.000452784,
+ -0.00046924,
+ -0.00048568,
+ -0.000502091,
+ -0.000518464,
+ -0.000534785,
+ -0.000551043,
+ -0.000567225,
+ -0.000583319,
+ -0.000599314,
+ -0.000615196,
+ -0.000630955,
+ -0.000646575,
+ -0.000662049,
+ -0.000677361,
+ -0.000692506,
+ -0.000707464,
+ -0.00072229,
+ -0.000736922,
+ -0.000751266,
+ -0.000765372,
+ -0.000779217,
+ -0.000792798,
+ -0.000806094,
+ -0.000819098,
+ -0.000831793,
+ -0.000844168,
+ -0.000856207,
+ -0.000867898,
+ -0.000879227,
+ -0.00089018,
+ -0.000900744,
+ -0.000910906,
+ -0.000920652,
+ -0.00092997,
+ -0.000938844,
+ -0.000947263,
+ -0.000955214,
+ -0.000962682,
+ -0.000969654,
+ -0.000976119,
+ -0.000982062,
+ -0.00098747,
+ -0.000992332,
+ -0.000996634,
+ -0.00100036,
+ -0.00100351,
+ -0.00100606,
+ -0.001008,
+ -0.00100932,
+ -0.00101,
+ -0.00101005,
+ -0.00100943,
+ -0.00100816,
+ -0.0010062,
+ -0.00100356,
+ -0.00100021,
+ -0.000996162,
+ -0.000991392,
+ -0.000985892,
+ -0.000979654,
+ -0.000972668,
+ -0.000964925,
+ -0.000956415,
+ -0.000947131,
+ -0.000937065,
+ -0.000926208,
+ -0.000914552,
+ -0.00090209,
+ -0.000888816,
+ -0.000874721,
+ -0.0008598,
+ -0.000844046,
+ -0.000827453,
+ -0.000810015,
+ -0.000791726,
+ -0.000772581,
+ -0.000752576,
+ -0.000731704,
+ -0.000709965,
+ -0.00068735,
+ -0.000663865,
+ -0.000639509,
+ -0.000614269,
+ -0.000588146,
+ -0.000561139,
+ -0.000533246,
+ -0.000504468,
+ -0.000474802,
+ -0.000444251,
+ -0.000412813,
+ -0.00038049,
+ -0.000347281,
+ -0.000313189,
+ -0.000278215,
+ -0.000242361,
+ -0.000205629,
+ -0.000168024,
+ -0.000129546,
+ -9.02024e-05,
+ -4.99954e-05,
+ -8.93026e-06,
+ 3.2988e-05,
+ 7.57537e-05,
+ 0.000119361,
+ 0.000163804,
+ 0.000209075,
+ 0.000255167,
+ 0.000302074,
+ 0.000349786,
+ 0.000398297,
+ 0.000447596,
+ 0.000497676,
+ 0.000548526,
+ 0.000600136,
+ 0.000652497,
+ 0.000705598,
+ 0.000759427,
+ 0.000813972,
+ 0.000869223,
+ 0.000925166,
+ 0.000981789,
+ 0.00103908,
+ 0.00109702,
+ 0.00115561,
+ 0.00121482,
+ 0.00127464,
+ 0.00133505,
+ 0.00139605,
+ 0.00145762,
+ 0.00151973,
+ 0.00158238,
+ 0.00164555,
+ 0.00170922,
+ 0.00177337,
+ 0.00183799,
+ 0.00190305,
+ 0.00196854,
+ 0.00203445,
+ 0.00210075,
+ 0.00216742,
+ 0.00223445,
+ 0.00230181,
+ 0.00236949,
+ 0.00243747,
+ 0.00250572,
+ 0.00257423,
+ 0.00264296,
+ 0.00271192,
+ 0.00278107,
+ 0.00285039,
+ 0.00291986,
+ 0.00298947,
+ 0.00305918,
+ 0.00312898,
+ 0.00319884,
+ 0.00326874,
+ 0.00333866,
+ 0.00340857,
+ 0.00347846,
+ 0.00354831,
+ 0.00361808,
+ 0.00368775,
+ 0.00375731,
+ 0.00382673,
+ 0.00389599,
+ 0.00396506,
+ 0.00403393,
+ 0.00410256,
+ 0.00417094,
+ 0.00423904,
+ 0.00430684,
+ 0.00437431,
+ 0.00444144,
+ 0.0045082,
+ 0.00457457,
+ 0.00464052,
+ 0.00470603,
+ 0.00477108,
+ 0.00483565,
+ 0.00489972,
+ 0.00496325,
+ 0.00502623,
+ 0.00508865,
+ 0.00515046,
+ 0.00521166,
+ 0.00527223,
+ 0.00533213,
+ 0.00539135,
+ 0.00544987,
+ 0.00550766,
+ 0.00556472,
+ 0.005621,
+ 0.00567651,
+ 0.00573121,
+ 0.00578508,
+ 0.00583811,
+ 0.00589028,
+ 0.00594157,
+ 0.00599196,
+ 0.00604143,
+ 0.00608996,
+ 0.00613754,
+ 0.00618415,
+ 0.00622977,
+ 0.00627439,
+ 0.00631798,
+ 0.00636054,
+ 0.00640204,
+ 0.0064425,
+ 0.00648186,
+ 0.00652009,
+ 0.00655722,
+ 0.00659322,
+ 0.00662808,
+ 0.00666179,
+ 0.00669433,
+ 0.00672571,
+ 0.00675589,
+ 0.00678488,
+ 0.00681266,
+ 0.00683921,
+ 0.00686454,
+ 0.00688863,
+ 0.00691147,
+ 0.00693305,
+ 0.00695336,
+ 0.0069724,
+ 0.00699016,
+ 0.00700663,
+ 0.00702181,
+ 0.00703569,
+ 0.00704826,
+ 0.00705952,
+ 0.00706947,
+ 0.00707809,
+ 0.0070854,
+ 0.00709138,
+ 0.00709604,
+ 0.00709937,
+ 0.00710136,
+ 0.00710203,
+ 0.00710136,
+ 0.00709937,
+ 0.00709604,
+ 0.00709138,
+ 0.0070854,
+ 0.00707809,
+ 0.00706947,
+ 0.00705952,
+ 0.00704826,
+ 0.00703569,
+ 0.00702181,
+ 0.00700663,
+ 0.00699016,
+ 0.0069724,
+ 0.00695336,
+ 0.00693305,
+ 0.00691147,
+ 0.00688863,
+ 0.00686454,
+ 0.00683921,
+ 0.00681266,
+ 0.00678488,
+ 0.00675589,
+ 0.00672571,
+ 0.00669433,
+ 0.00666179,
+ 0.00662808,
+ 0.00659322,
+ 0.00655722,
+ 0.00652009,
+ 0.00648186,
+ 0.0064425,
+ 0.00640204,
+ 0.00636054,
+ 0.00631798,
+ 0.00627439,
+ 0.00622977,
+ 0.00618415,
+ 0.00613754,
+ 0.00608996,
+ 0.00604143,
+ 0.00599196,
+ 0.00594157,
+ 0.00589028,
+ 0.00583811,
+ 0.00578508,
+ 0.00573121,
+ 0.00567651,
+ 0.005621,
+ 0.00556472,
+ 0.00550766,
+ 0.00544987,
+ 0.00539135,
+ 0.00533213,
+ 0.00527223,
+ 0.00521166,
+ 0.00515046,
+ 0.00508865,
+ 0.00502623,
+ 0.00496325,
+ 0.00489972,
+ 0.00483565,
+ 0.00477108,
+ 0.00470603,
+ 0.00464052,
+ 0.00457457,
+ 0.0045082,
+ 0.00444144,
+ 0.00437431,
+ 0.00430684,
+ 0.00423904,
+ 0.00417094,
+ 0.00410256,
+ 0.00403393,
+ 0.00396506,
+ 0.00389599,
+ 0.00382673,
+ 0.00375731,
+ 0.00368775,
+ 0.00361808,
+ 0.00354831,
+ 0.00347846,
+ 0.00340857,
+ 0.00333866,
+ 0.00326874,
+ 0.00319884,
+ 0.00312898,
+ 0.00305918,
+ 0.00298947,
+ 0.00291986,
+ 0.00285039,
+ 0.00278107,
+ 0.00271192,
+ 0.00264296,
+ 0.00257423,
+ 0.00250572,
+ 0.00243747,
+ 0.00236949,
+ 0.00230181,
+ 0.00223445,
+ 0.00216742,
+ 0.00210075,
+ 0.00203445,
+ 0.00196854,
+ 0.00190305,
+ 0.00183799,
+ 0.00177337,
+ 0.00170922,
+ 0.00164555,
+ 0.00158238,
+ 0.00151973,
+ 0.00145762,
+ 0.00139605,
+ 0.00133505,
+ 0.00127464,
+ 0.00121482,
+ 0.00115561,
+ 0.00109702,
+ 0.00103908,
+ 0.000981789,
+ 0.000925166,
+ 0.000869223,
+ 0.000813972,
+ 0.000759427,
+ 0.000705598,
+ 0.000652497,
+ 0.000600136,
+ 0.000548526,
+ 0.000497676,
+ 0.000447596,
+ 0.000398297,
+ 0.000349786,
+ 0.000302074,
+ 0.000255167,
+ 0.000209075,
+ 0.000163804,
+ 0.000119361,
+ 7.57537e-05,
+ 3.2988e-05,
+ -8.93026e-06,
+ -4.99954e-05,
+ -9.02024e-05,
+ -0.000129546,
+ -0.000168024,
+ -0.000205629,
+ -0.000242361,
+ -0.000278215,
+ -0.000313189,
+ -0.000347281,
+ -0.00038049,
+ -0.000412813,
+ -0.000444251,
+ -0.000474802,
+ -0.000504468,
+ -0.000533246,
+ -0.000561139,
+ -0.000588146,
+ -0.000614269,
+ -0.000639509,
+ -0.000663865,
+ -0.00068735,
+ -0.000709965,
+ -0.000731704,
+ -0.000752576,
+ -0.000772581,
+ -0.000791726,
+ -0.000810015,
+ -0.000827453,
+ -0.000844046,
+ -0.0008598,
+ -0.000874721,
+ -0.000888816,
+ -0.00090209,
+ -0.000914552,
+ -0.000926208,
+ -0.000937065,
+ -0.000947131,
+ -0.000956415,
+ -0.000964925,
+ -0.000972668,
+ -0.000979654,
+ -0.000985892,
+ -0.000991392,
+ -0.000996162,
+ -0.00100021,
+ -0.00100356,
+ -0.0010062,
+ -0.00100816,
+ -0.00100943,
+ -0.00101005,
+ -0.00101,
+ -0.00100932,
+ -0.001008,
+ -0.00100606,
+ -0.00100351,
+ -0.00100036,
+ -0.000996634,
+ -0.000992332,
+ -0.00098747,
+ -0.000982062,
+ -0.000976119,
+ -0.000969654,
+ -0.000962682,
+ -0.000955214,
+ -0.000947263,
+ -0.000938844,
+ -0.00092997,
+ -0.000920652,
+ -0.000910906,
+ -0.000900744,
+ -0.00089018,
+ -0.000879227,
+ -0.000867898,
+ -0.000856207,
+ -0.000844168,
+ -0.000831793,
+ -0.000819098,
+ -0.000806094,
+ -0.000792798,
+ -0.000779217,
+ -0.000765372,
+ -0.000751266,
+ -0.000736922,
+ -0.00072229,
+ -0.000707464,
+ -0.000692506,
+ -0.000677361,
+ -0.000662049,
+ -0.000646575,
+ -0.000630955,
+ -0.000615196,
+ -0.000599314,
+ -0.000583319,
+ -0.000567225,
+ -0.000551043,
+ -0.000534785,
+ -0.000518464,
+ -0.000502091,
+ -0.00048568,
+ -0.00046924,
+ -0.000452784,
+ -0.000436324,
+ -0.00041987,
+ -0.000403434,
+ -0.000387027,
+ -0.00037066,
+ -0.000354342,
+ -0.000338084,
+ -0.000321898,
+ -0.000305792,
+ -0.000289776,
+ -0.000273861,
+ -0.000258056,
+ -0.000242369,
+ -0.000226811,
+ -0.00021139,
+ -0.000196115,
+ -0.000180995,
+ -0.000166036,
+ -0.000151248,
+ -0.000136638,
+ -0.000122213,
+ -0.000107981,
+ -9.39481e-05,
+ -8.01218e-05,
+ -6.65082e-05,
+ -5.31139e-05,
+ -3.99444e-05,
+ -2.70061e-05,
+ -1.43041e-05,
+ -1.844e-06,
+ 1.03695e-05,
+ 2.23311e-05,
+ 3.40369e-05,
+ 4.54822e-05,
+ 5.66636e-05,
+ 6.7577e-05,
+ 7.82196e-05,
+ 8.85877e-05,
+ 9.8679e-05,
+ 0.000108491,
+ 0.00011802,
+ 0.000127266,
+ 0.000136224,
+ 0.000144895,
+ 0.000153275,
+ 0.000161363,
+ 0.000169145,
+ 0.000176621,
+ 0.000183812,
+ 0.000190706,
+ 0.000197304,
+ 0.000203605,
+ 0.000209608,
+ 0.000215314,
+ 0.000220723,
+ 0.000225837,
+ 0.000230655,
+ 0.00023518,
+ 0.000239412,
+ 0.000243354,
+ 0.000247007,
+ 0.000250373,
+ 0.000253453,
+ 0.000256251,
+ 0.000258767,
+ 0.000261006,
+ 0.000262968,
+ 0.000264658,
+ 0.000266079,
+ 0.000267232,
+ 0.000268123,
+ 0.000268754,
+ 0.000269129,
+ 0.000269253,
+ 0.000269128,
+ 0.00026876,
+ 0.000268152,
+ 0.000267308,
+ 0.000266234,
+ 0.000264933,
+ 0.000263411,
+ 0.000261672,
+ 0.000259721,
+ 0.000257562,
+ 0.000255202,
+ 0.000252644,
+ 0.000249895,
+ 0.000246959,
+ 0.000243843,
+ 0.000240551,
+ 0.000237089,
+ 0.000233463,
+ 0.000229678,
+ 0.00022574,
+ 0.000221654,
+ 0.000217426,
+ 0.000213063,
+ 0.000208568,
+ 0.000203949,
+ 0.000199211,
+ 0.00019436,
+ 0.0001894,
+ 0.00018434,
+ 0.000179183,
+ 0.000173938,
+ 0.000168608,
+ 0.000163202,
+ 0.000157725,
+ 0.000152183,
+ 0.000146583,
+ 0.000140929,
+ 0.000135218,
+ 0.000129468,
+ 0.000123681,
+ 0.000117864,
+ 0.00011202,
+ 0.000106157,
+ 0.000100278,
+ 9.43895e-05,
+ 8.84957e-05,
+ 8.26029e-05,
+ 7.67152e-05,
+ 7.08393e-05,
+ 6.49787e-05,
+ 5.91403e-05,
+ 5.33273e-05,
+ 4.75467e-05,
+ 4.18011e-05,
+ 3.60975e-05,
+ 3.04382e-05,
+ 2.483e-05,
+ 1.9275e-05,
+ 1.37796e-05,
+ 8.34567e-06,
+ 2.97965e-06,
+ -2.31702e-06,
+ -7.53795e-06,
+ -1.2682e-05,
+ -1.77428e-05,
+ -2.27195e-05,
+ -2.7606e-05,
+ -3.24015e-05,
+ -3.71002e-05,
+ -4.17016e-05,
+ -4.62001e-05,
+ -5.05954e-05,
+ -5.48823e-05,
+ -5.90607e-05,
+ -6.31256e-05,
+ -6.70773e-05,
+ -7.09109e-05,
+ -7.46271e-05,
+ -7.82211e-05,
+ -8.16936e-05,
+ -8.50404e-05,
+ -8.82623e-05,
+ -9.13551e-05,
+ -9.43199e-05,
+ -9.71528e-05,
+ -9.98553e-05,
+ -0.000102424,
+ -0.00010486,
+ -0.00010716,
+ -0.000109326,
+ -0.000111356,
+ -0.000113251,
+ -0.000115009,
+ -0.000116633,
+ -0.000118119,
+ -0.000119471,
+ -0.000120685,
+ -0.000121766,
+ -0.000122709,
+ -0.000123518,
+ -0.000124185,
+ -0.000124729,
+ -0.000125145,
+ -0.000125428,
+ -0.000125578,
+ -0.000125598,
+ -0.000125487,
+ -0.00012525,
+ -0.000124884,
+ -0.000124397,
+ -0.000123784,
+ -0.000123053,
+ -0.000122201,
+ -0.000121235,
+ -0.000120152,
+ -0.000118959,
+ -0.000117652,
+ -0.000116241,
+ -0.00011472,
+ -0.000113099,
+ -0.000111372,
+ -0.00010955,
+ -0.000107627,
+ -0.000105614,
+ -0.000103505,
+ -0.000101311,
+ -9.9026e-05,
+ -9.66619e-05,
+ -9.42119e-05,
+ -9.16888e-05,
+ -8.9085e-05,
+ -8.64141e-05,
+ -8.36678e-05,
+ -8.08605e-05,
+ -7.7983e-05,
+ -7.50509e-05,
+ -7.20538e-05,
+ -6.90085e-05,
+ -6.59032e-05,
+ -6.27565e-05,
+ -5.95548e-05,
+ -5.63184e-05,
+ -5.3032e-05,
+ -4.97179e-05,
+ -4.63581e-05,
+ -4.29778e-05,
+ -3.95556e-05,
+ -3.61199e-05,
+ -3.26453e-05,
+ -2.91642e-05,
+ -2.56455e-05,
+ -2.21275e-05,
+ -1.85712e-05,
+ -1.50227e-05,
+ -1.14317e-05,
+ -7.85603e-06,
+ -4.22748e-06,
+ -6.22187e-07,
+ 3.05918e-06,
+ 6.70859e-06,
+ 1.04905e-05,
+ 1.42303e-05,
+ 1.82863e-05,
+ 2.2286e-05
+};
diff --git a/gr-vocoder/lib/codec2/sim.sh b/gr-vocoder/lib/codec2/sim.sh
deleted file mode 100755
index 10152d9..0000000
--- a/gr-vocoder/lib/codec2/sim.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# sim.sh
-# David Rowe 10 Sep 2009
-
-# Process a source file using the codec 2 simulation. An output
-# speech file is generated for each major processing step, from the
-# unquantised siusoidal model to fully quantised. This way we can
-# listen to the effect of each processing step. Use listensim.sh to
-# test the output files.
-
-../src/c2sim ../raw/$1.raw -o $1_uq.raw
-../src/c2sim ../raw/$1.raw --phase0 -o $1_phase0.raw --postfilter
-../src/c2sim ../raw/$1.raw --lpc 10 -o $1_lpc10.raw --postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 -o $1_phase0_lpc10.raw
--postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --dec -o $1_phase0_lpc10_dec.raw
--postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp --dec -o
$1_phase0_lsp_dec.raw --postfilter
-
-#../src/c2sim ../raw/$1.raw --lpc 10 --lsp -o $1_lsp.raw
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 -o $1_phase0_lpc10.raw
--postfilter
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp -o $1_phase0_lsp.raw
--postfilter
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp -o $1_phase0_lsp_dec.raw
--postfilter --dec
-
diff --git a/gr-vocoder/lib/codec2/sine.c b/gr-vocoder/lib/codec2/sine.c
index b30f9ab..be4df00 100644
--- a/gr-vocoder/lib/codec2/sine.c
+++ b/gr-vocoder/lib/codec2/sine.c
@@ -37,7 +37,7 @@
#include "defines.h"
#include "sine.h"
-#include "fft.h"
+#include "kiss_fft.h"
#define HPF_BETA 0.125
@@ -66,9 +66,10 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float
pmin, float pmax,
\*---------------------------------------------------------------------------*/
-void make_analysis_window(float w[],COMP W[])
+void make_analysis_window(kiss_fft_cfg fft_fwd_cfg, float w[], COMP W[])
{
float m;
+ COMP wshift[FFT_ENC];
COMP temp;
int i,j;
@@ -87,7 +88,7 @@ void make_analysis_window(float w[],COMP W[])
for(i=0; i<M/2-NW/2; i++)
w[i] = 0.0;
for(i=M/2-NW/2,j=0; i<M/2+NW/2; i++,j++) {
- w[i] = 0.5 - 0.5*cos(TWO_PI*j/(NW-1));
+ w[i] = 0.5 - 0.5*cosf(TWO_PI*j/(NW-1));
m += w[i]*w[i];
}
for(i=M/2+NW/2; i<M; i++)
@@ -96,7 +97,7 @@ void make_analysis_window(float w[],COMP W[])
/* Normalise - makes freq domain amplitude estimation straight
forward */
- m = 1.0/sqrt(m*FFT_ENC);
+ m = 1.0/sqrtf(m*FFT_ENC);
for(i=0; i<M; i++) {
w[i] *= m;
}
@@ -123,15 +124,15 @@ void make_analysis_window(float w[],COMP W[])
*/
for(i=0; i<FFT_ENC; i++) {
- W[i].real = 0.0;
- W[i].imag = 0.0;
+ wshift[i].real = 0.0;
+ wshift[i].imag = 0.0;
}
for(i=0; i<NW/2; i++)
- W[i].real = w[i+M/2];
+ wshift[i].real = w[i+M/2];
for(i=FFT_ENC-NW/2,j=M/2-NW/2; i<FFT_ENC; i++,j++)
- W[i].real = w[j];
+ wshift[i].real = w[j];
- fft(&W[0].real,FFT_ENC,-1); /* "Numerical Recipes in C" FFT */
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)wshift, (kiss_fft_cpx *)W);
/*
Re-arrange W[] to be symmetrical about FFT_ENC/2. Makes later
@@ -198,13 +199,14 @@ float hpf(float x, float states[])
\*---------------------------------------------------------------------------*/
-void dft_speech(COMP Sw[], float Sn[], float w[])
+void dft_speech(kiss_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[])
{
- int i;
+ int i;
+ COMP sw[FFT_ENC];
for(i=0; i<FFT_ENC; i++) {
- Sw[i].real = 0.0;
- Sw[i].imag = 0.0;
+ sw[i].real = 0.0;
+ sw[i].imag = 0.0;
}
/* Centre analysis window on time axis, we need to arrange input
@@ -213,14 +215,14 @@ void dft_speech(COMP Sw[], float Sn[], float w[])
/* move 2nd half to start of FFT input vector */
for(i=0; i<NW/2; i++)
- Sw[i].real = Sn[i+M/2]*w[i+M/2];
+ sw[i].real = Sn[i+M/2]*w[i+M/2];
/* move 1st half to end of FFT input vector */
for(i=0; i<NW/2; i++)
- Sw[FFT_ENC-NW/2+i].real = Sn[i+M/2-NW/2]*w[i+M/2-NW/2];
+ sw[FFT_ENC-NW/2+i].real = Sn[i+M/2-NW/2]*w[i+M/2-NW/2];
- fft(&Sw[0].real,FFT_ENC,-1);
+ kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)sw, (kiss_fft_cpx *)Sw);
}
/*---------------------------------------------------------------------------*\
@@ -287,7 +289,7 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float
pmin, float pmax, float
float Wo; /* current "test" fundamental freq. */
float Wom; /* Wo that maximises E */
float Em; /* mamimum energy */
- float r; /* number of rads/bin */
+ float r, one_on_r; /* number of rads/bin */
float p; /* current pitch */
/* Initialisation */
@@ -296,6 +298,7 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float
pmin, float pmax, float
Wom = model->Wo;
Em = 0.0;
r = TWO_PI/FFT_ENC;
+ one_on_r = 1.0/r;
/* Determine harmonic sum for a range of Wo values */
@@ -304,12 +307,10 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float
pmin, float pmax, float
Wo = TWO_PI/p;
/* Sum harmonic magnitudes */
-
for(m=1; m<=model->L; m++) {
- b = floor(m*Wo/r + 0.5);
- E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag;
+ b = (int)(m*Wo*one_on_r + 0.5);
+ E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag;
}
-
/* Compare to see if this is a maximum */
if (E > Em) {
@@ -331,40 +332,45 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float
pmin, float pmax, float
\*---------------------------------------------------------------------------*/
-void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[])
+void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase)
{
int i,m; /* loop variables */
int am,bm; /* bounds of current harmonic */
int b; /* DFT bin of centre of current harmonic */
float den; /* denominator of amplitude expression */
- float r; /* number of rads/bin */
+ float r, one_on_r; /* number of rads/bin */
int offset;
COMP Am;
r = TWO_PI/FFT_ENC;
+ one_on_r = 1.0/r;
for(m=1; m<=model->L; m++) {
den = 0.0;
- am = floor((m - 0.5)*model->Wo/r + 0.5);
- bm = floor((m + 0.5)*model->Wo/r + 0.5);
- b = floor(m*model->Wo/r + 0.5);
+ am = (int)((m - 0.5)*model->Wo*one_on_r + 0.5);
+ bm = (int)((m + 0.5)*model->Wo*one_on_r + 0.5);
+ b = (int)(m*model->Wo/r + 0.5);
/* Estimate ampltude of harmonic */
den = 0.0;
Am.real = Am.imag = 0.0;
+ offset = FFT_ENC/2 - (int)(m*model->Wo*one_on_r + 0.5);
for(i=am; i<bm; i++) {
den += Sw[i].real*Sw[i].real + Sw[i].imag*Sw[i].imag;
- offset = i + FFT_ENC/2 - floor(m*model->Wo/r + 0.5);
- Am.real += Sw[i].real*W[offset].real;
- Am.imag += Sw[i].imag*W[offset].real;
+ Am.real += Sw[i].real*W[i + offset].real;
+ Am.imag += Sw[i].imag*W[i + offset].real;
}
- model->A[m] = sqrt(den);
+ model->A[m] = sqrtf(den);
+
+ if (est_phase) {
- /* Estimate phase of harmonic */
+ /* Estimate phase of harmonic, this is expensive in CPU for
+ embedded devicesso we make it an option */
- model->phi[m] = atan2(Sw[b].imag,Sw[b].real);
+ model->phi[m] = atan2(Sw[b].imag,Sw[b].real);
+ }
}
}
@@ -396,9 +402,9 @@ float est_voicing_mbe(
float Wo;
float sig, snr;
float elow, ehigh, eratio;
- float dF0, sixty;
+ float sixty;
- sig = 0.0;
+ sig = 1E-4;
for(l=1; l<=model->L/4; l++) {
sig += model->A[l]*model->A[l];
}
@@ -410,7 +416,7 @@ float est_voicing_mbe(
}
Wo = model->Wo;
- error = 0.0;
+ error = 1E-4;
/* Just test across the harmonics in the first 1000 Hz (L/4) */
@@ -423,11 +429,11 @@ float est_voicing_mbe(
/* Estimate amplitude of harmonic assuming harmonic is totally voiced */
+ offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
for(m=al; m<bl; m++) {
- offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
- Am.real += Sw[m].real*W[offset].real + Sw[m].imag*W[offset].imag;
- Am.imag += Sw[m].imag*W[offset].real - Sw[m].real*W[offset].imag;
- den += W[offset].real*W[offset].real +
W[offset].imag*W[offset].imag;
+ Am.real += Sw[m].real*W[offset+m].real;
+ Am.imag += Sw[m].imag*W[offset+m].real;
+ den += W[offset+m].real*W[offset+m].real;
}
Am.real = Am.real/den;
@@ -435,10 +441,10 @@ float est_voicing_mbe(
/* Determine error between estimated harmonic and original */
+ offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
for(m=al; m<bl; m++) {
- offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
- Sw_[m].real = Am.real*W[offset].real - Am.imag*W[offset].imag;
- Sw_[m].imag = Am.real*W[offset].imag + Am.imag*W[offset].real;
+ Sw_[m].real = Am.real*W[offset+m].real;
+ Sw_[m].imag = Am.imag*W[offset+m].real;
Ew[m].real = Sw[m].real - Sw_[m].real;
Ew[m].imag = Sw[m].imag - Sw_[m].imag;
error += Ew[m].real*Ew[m].real;
@@ -446,7 +452,7 @@ float est_voicing_mbe(
}
}
- snr = 10.0*log10(sig/error);
+ snr = 10.0*log10f(sig/error);
if (snr > V_THRESH)
model->voiced = 1;
else
@@ -455,21 +461,20 @@ float est_voicing_mbe(
/* post processing, helps clean up some voicing errors ------------------*/
/*
- Determine the ratio of low freancy to high frequency energy,
+ Determine the ratio of low freqency to high frequency energy,
voiced speech tends to be dominated by low frequency energy,
unvoiced by high frequency. This measure can be used to
determine if we have made any gross errors.
*/
- elow = ehigh = 0.0;
+ elow = ehigh = 1E-4;
for(l=1; l<=model->L/2; l++) {
elow += model->A[l]*model->A[l];
}
for(l=model->L/2; l<=model->L; l++) {
ehigh += model->A[l]*model->A[l];
}
- eratio = 10.0*log10(elow/ehigh);
- dF0 = 0.0;
+ eratio = 10.0*log10f(elow/ehigh);
/* Look for Type 1 errors, strongly V speech that has been
accidentally declared UV */
@@ -485,16 +490,10 @@ float est_voicing_mbe(
if (eratio < -10.0)
model->voiced = 0;
- /* If pitch is jumping about it's likely this is UV */
-
- dF0 = (model->Wo - prev_Wo)*FS/TWO_PI;
- if (fabs(dF0) > 15.0)
- model->voiced = 0;
-
/* A common source of Type 2 errors is the pitch estimator
gives a low (50Hz) estimate for UV speech, which gives a
good match with noise due to the close harmoonic spacing.
- These errors are much more common than people with 50Hz
+ These errors are much more common than people with 50Hz3
pitch, so we have just a small eratio threshold. */
sixty = 60.0*TWO_PI/FS;
@@ -551,6 +550,7 @@ void make_synthesis_window(float Pn[])
\*---------------------------------------------------------------------------*/
void synthesise(
+ kiss_fft_cfg fft_inv_cfg,
float Sn_[], /* time domain synthesised signal
*/
MODEL *model, /* ptr to model parameters for this frame
*/
float Pn[], /* time domain Parzen window */
@@ -559,10 +559,10 @@ void synthesise(
{
int i,l,j,b; /* loop variables */
COMP Sw_[FFT_DEC]; /* DFT of synthesised signal */
+ COMP sw_[FFT_DEC]; /* synthesised signal */
if (shift) {
/* Update memories */
-
for(i=0; i<N-1; i++) {
Sn_[i] = Sn_[i+N];
}
@@ -578,7 +578,7 @@ void synthesise(
Nov 2010 - found that synthesis using time domain cos() functions
gives better results for synthesis frames greater than 10ms. Inverse
FFT synthesis using a 512 pt FFT works well for 10ms window. I think
- (but am not sure) that the problem is realted to the quantisation of
+ (but am not sure) that the problem is related to the quantisation of
the harmonic frequencies to the FFT bin size, e.g. there is a
8000/512 Hz step between FFT bins. For some reason this makes
the speech from longer frame > 10ms sound poor. The effect can also
@@ -592,19 +592,21 @@ void synthesise(
#ifdef FFT_SYNTHESIS
/* Now set up frequency domain synthesised speech */
for(l=1; l<=model->L; l++) {
- b = floor(l*model->Wo*FFT_DEC/TWO_PI + 0.5);
+ //for(l=model->L/2; l<=model->L; l++) {
+ //for(l=1; l<=model->L/4; l++) {
+ b = (int)(l*model->Wo*FFT_DEC/TWO_PI + 0.5);
if (b > ((FFT_DEC/2)-1)) {
b = (FFT_DEC/2)-1;
}
- Sw_[b].real = model->A[l]*cos(model->phi[l]);
- Sw_[b].imag = model->A[l]*sin(model->phi[l]);
+ Sw_[b].real = model->A[l]*cosf(model->phi[l]);
+ Sw_[b].imag = model->A[l]*sinf(model->phi[l]);
Sw_[FFT_DEC-b].real = Sw_[b].real;
Sw_[FFT_DEC-b].imag = -Sw_[b].imag;
}
/* Perform inverse DFT */
- fft(&Sw_[0].real,FFT_DEC,1);
+ kiss_fft(fft_inv_cfg, (kiss_fft_cpx *)Sw_, (kiss_fft_cpx *)sw_);
#else
/*
Direct time domain synthesis using the cos() function. Works
@@ -625,14 +627,22 @@ void synthesise(
/* Overlap add to previous samples */
for(i=0; i<N-1; i++) {
- Sn_[i] += Sw_[FFT_DEC-N+1+i].real*Pn[i];
+ Sn_[i] += sw_[FFT_DEC-N+1+i].real*Pn[i];
}
if (shift)
for(i=N-1,j=0; i<2*N; i++,j++)
- Sn_[i] = Sw_[j].real*Pn[i];
+ Sn_[i] = sw_[j].real*Pn[i];
else
for(i=N-1,j=0; i<2*N; i++,j++)
- Sn_[i] += Sw_[j].real*Pn[i];
+ Sn_[i] += sw_[j].real*Pn[i];
+}
+
+
+static unsigned long next = 1;
+
+int codec2_rand(void) {
+ next = next * 1103515245 + 12345;
+ return((unsigned)(next/65536) % 32768);
}
diff --git a/gr-vocoder/lib/codec2/sine.h b/gr-vocoder/lib/codec2/sine.h
index f223e2a..3a3ce46 100644
--- a/gr-vocoder/lib/codec2/sine.h
+++ b/gr-vocoder/lib/codec2/sine.h
@@ -30,15 +30,19 @@
#include "defines.h"
#include "comp.h"
+#include "kiss_fft.h"
-void make_analysis_window(float w[], COMP W[]);
+void make_analysis_window(kiss_fft_cfg fft_fwd_cfg, float w[], COMP W[]);
float hpf(float x, float states[]);
-void dft_speech(COMP Sw[], float Sn[], float w[]);
+void dft_speech(kiss_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]);
void two_stage_pitch_refinement(MODEL *model, COMP Sw[]);
-void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[]);
+void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase);
float est_voicing_mbe(MODEL *model, COMP Sw[], COMP W[], COMP Sw_[],COMP Ew[],
float prev_Wo);
void make_synthesis_window(float Pn[]);
-void synthesise(float Sn_[], MODEL *model, float Pn[], int shift);
+void synthesise(kiss_fft_cfg fft_inv_cfg, float Sn_[], MODEL *model, float
Pn[], int shift);
+
+#define CODEC2_RAND_MAX 32767
+int codec2_rand(void);
#endif
diff --git a/gr-vocoder/lib/codec2/test_bits.h
b/gr-vocoder/lib/codec2/test_bits.h
new file mode 100644
index 0000000..d1c01a0
--- /dev/null
+++ b/gr-vocoder/lib/codec2/test_bits.h
@@ -0,0 +1,164 @@
+/* Generated by test_bits_file() Octave function */
+
+const int test_bits[]={
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1
+};
- [Commit-gnuradio] [gnuradio] 41/57: digital: adding an async message passsing CRC32 calc/check block for PDUs., (continued)
- [Commit-gnuradio] [gnuradio] 41/57: digital: adding an async message passsing CRC32 calc/check block for PDUs., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 38/57: fec: wip: cleaning up tagged decoder, rep code., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 57/57: digital: fixing up some work done in the fec api development., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 40/57: fec: wip: adding async (PDU) encoder and decoder blocks., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 36/57: fec: wip: mods for ber plotting. Now adding theoretical BPSK in AWGN curve., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 52/57: fec: wip: async encoder/decoder working deployments., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 16/57: fec: Merging fecapi with support for CC code., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 33/57: fec: wip: adding a dummy encoder/decoder and repetition code to exercise the API., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 49/57: blocks: adding reverse packing/unpacking functions., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 28/57: fec: updating puncturing, adding documentation, adding CCSDS encoder., git, 2014/05/20
- [Commit-gnuradio] [gnuradio] 05/57: codec2 library update,
git <=