diff --git a/src/audio.c b/src/audio.c index f322ae7b..1193a12d 100644 --- a/src/audio.c +++ b/src/audio.c @@ -6,8 +6,7 @@ initially written by Michael Hipp */ -#include "mpg123.h" -#include "layer3.h" +#include "mpg123app.h" #ifdef HAVE_SYS_WAIT_H #include @@ -126,16 +125,21 @@ static void audio_output_dump(audio_output_t *ao) #define NUM_ENCODINGS 6 #define NUM_RATES 10 -struct audio_format_name audio_val2name[NUM_ENCODINGS+1] = { - { AUDIO_FORMAT_SIGNED_16 , "signed 16 bit" , "s16 " } , - { AUDIO_FORMAT_UNSIGNED_16, "unsigned 16 bit" , "u16 " } , - { AUDIO_FORMAT_UNSIGNED_8 , "unsigned 8 bit" , "u8 " } , - { AUDIO_FORMAT_SIGNED_8 , "signed 8 bit" , "s8 " } , - { AUDIO_FORMAT_ULAW_8 , "mu-law (8 bit)" , "ulaw " } , - { AUDIO_FORMAT_ALAW_8 , "a-law (8 bit)" , "alaw " } , - { -1 , NULL } -}; - +/* Safer as function... */ +const char* audio_encoding_name(const int encoding, const int longer) +{ + const char *name = longer ? "unknown" : "???"; + switch(encoding) + { + case MPG123_ENC_SIGNED_16: name = longer ? "signed 16 bit" : "s16 "; break; + case MPG123_ENC_UNSIGNED_16: name = longer ? "unsigned 16 bit" : "u16 "; break; + case MPG123_ENC_UNSIGNED_8: name = longer ? "unsigned 8 bit" : "u8 "; break; + case MPG123_ENC_SIGNED_8: name = longer ? "signed 8 bit" : "s8 "; break; + case MPG123_ENC_ULAW_8: name = longer ? "mu-law (8 bit)" : "ulaw "; break; + case MPG123_ENC_ALAW_8: name = longer ? "a-law (8 bit)" : "alaw "; break; + } + return name; +} static int channels[NUM_CHANNELS] = { 1 , 2 }; static int rates[NUM_RATES] = { @@ -154,222 +158,75 @@ static int encodings[NUM_ENCODINGS] = { AUDIO_FORMAT_ALAW_8 }; -static char capabilities[NUM_CHANNELS][NUM_ENCODINGS][NUM_RATES]; - -static void print_capabilities(audio_output_t *ao) +static void capline(mpg123_handle *mh, int ratei) { - int j,k,k1=NUM_RATES-1; - if(param.force_rate) { - rates[NUM_RATES-1] = param.force_rate; - k1 = NUM_RATES; + int enci; + fprintf(stderr," %5ld |", ratei >= 0 ? mpg123_rates[ratei] : param.force_rate); + for(enci=0; encimodule->name, ao->device != NULL ? ao->device : ""); - for(j=0;j= 0 ? mpg123_rates[ri] : param.force_rate; + fmts = ao1.get_formats(&ao1); + if(fmts < 0) continue; + else mpg123_format(mh, ri, ao1.channels, fmts); } ao1.close(&ao1); } - if(param.verbose > 1) print_capabilities(ao); + if(param.verbose > 1) print_capabilities(ao, mh); } -static int rate2num(int r) -{ - int i; - for(i=0;i= 0) { - for(i=f0;irate = rates[rn]; - ao->format = encodings[i]; - ao->channels = channels[c]; - return 1; - } - } - } - return 0; - -} - -/* - * c=num of channels of stream - * r=rate of stream - * return 0 on error - */ -int audio_fit_capabilities(audio_output_t *ao,int c,int r) -{ - int rn; - int f0=0; - - /* skip the 16bit encodings */ - if(param.force_8bit) { - f0 = 2; - } - - c--; /* stereo=1 ,mono=0 */ - - /* force stereo is stronger */ - if(param.force_mono) c = 0; - if(param.force_stereo) c = 1; - - if(param.force_rate) { - rates[NUM_RATES-1] = param.force_rate; /* To make STDOUT decoding work. */ - rn = rate2num(param.force_rate); - /* 16bit encodings */ - if(audio_fit_cap_helper(ao,rn,f0,2,c)) return 1; - /* 8bit encodings */ - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) return 1; - - /* try again with different stereoness */ - if(c == 1 && !param.force_stereo) c = 0; - else if(c == 0 && !param.force_mono) c = 1; - - /* 16bit encodings */ - if(audio_fit_cap_helper(ao,rn,f0,2,c)) return 1; - /* 8bit encodings */ - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) return 1; - - error3("Unable to set up output device! Constraints: %s%s%liHz.", - (param.force_stereo ? "stereo, " : - (param.force_mono ? "mono, " : "")), - (param.force_8bit ? "8bit, " : ""), - param.force_rate); - if(param.verbose <= 1) print_capabilities(ao); - return 0; - } - - /* try different rates with 16bit */ - rn = rate2num(r>>0); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) - return 1; - rn = rate2num(r>>1); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) - return 1; - rn = rate2num(r>>2); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) - return 1; - - /* try different rates with 8bit */ - rn = rate2num(r>>0); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) - return 1; - rn = rate2num(r>>1); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) - return 1; - rn = rate2num(r>>2); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) - return 1; - - /* try agaon with different stereoness */ - if(c == 1 && !param.force_stereo) c = 0; - else if(c == 0 && !param.force_mono) c = 1; - - /* 16bit */ - rn = rate2num(r>>0); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) return 1; - rn = rate2num(r>>1); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) return 1; - rn = rate2num(r>>2); - if(audio_fit_cap_helper(ao,rn,f0,2,c)) return 1; - - /* 8bit */ - rn = rate2num(r>>0); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) return 1; - rn = rate2num(r>>1); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) return 1; - rn = rate2num(r>>2); - if(audio_fit_cap_helper(ao,rn,2,NUM_ENCODINGS,c)) return 1; - - error5("Unable to set up output device! Constraints: %s%s%i, %i or %iHz.", - (param.force_stereo ? "stereo, " : - (param.force_mono ? "mono, " : "")), - (param.force_8bit ? "8bit, " : ""), - r, r>>1, r>>2); - if(param.verbose <= 1) print_capabilities(ao); - return 0; -} - -char *audio_encoding_name(int format) -{ - int i; - - for(i=0;idata; - pcm_point = 0; + if (bufferbytes < bufferblock) + { + bufferbytes = 2*bufferblock; + if(!param.quiet) fprintf(stderr, "Note: raising buffer to minimal size %liKiB\n", (unsigned long) bufferbytes>>10); + } + bufferbytes -= bufferbytes % bufferblock; + /* No +1024 for NtoM rounding problems anymore! */ + xfermem_init (&buffermem, bufferbytes ,0,0); + mpg123_replace_buffer(mh, (unsigned char *) buffermem->data, bufferblock); sigemptyset (&newsigset); sigaddset (&newsigset, SIGUSR1); sigprocmask (SIG_BLOCK, &newsigset, &oldsigset); - #if !defined(WIN32) && !defined(GENERIC) - catchsignal (SIGCHLD, catch_child); - #endif - - switch ((buffer_pid = fork())) { +#if !defined(WIN32) && !defined(GENERIC) + catchsignal (SIGCHLD, catch_child); +#endif + switch ((buffer_pid = fork())) + { case -1: /* error */ - perror("fork()"); - return 1; + perror("fork()"); + safe_exit(1); case 0: /* child */ - if(rd) rd->close(rd); /* child doesn't need the input stream */ - xfermem_init_reader (buffermem); - buffer_loop(ao, &oldsigset); - xfermem_done_reader (buffermem); - xfermem_done (buffermem); - exit(0); + /* oh, is that trouble here? well, buffer should actually be opened before loading tracks IMHO */ + mpg123_close(mh); /* child doesn't need the input stream */ + xfermem_init_reader (buffermem); + buffer_loop (ao, &oldsigset); + xfermem_done_reader (buffermem); + xfermem_done (buffermem); + exit(0); default: /* parent */ - xfermem_init_writer (buffermem); - param.outmode = DECODE_BUFFER; - break; + xfermem_init_writer (buffermem); + param.outmode = DECODE_BUFFER; } - } else { -#endif - - /* + 1024 for NtoM rate converter */ - if (!(pcm_sample = (unsigned char *) malloc(audiobufsize * 2 + 1024))) { - perror ("malloc()"); - return 1; -#ifndef NOXFERMEM } #endif - - } - + /* Open audio if not decoding to buffer */ switch(param.outmode) { case DECODE_AUDIO: if(ao->open(ao) < 0) { @@ -469,39 +315,33 @@ int init_output( audio_output_t *ao ) cdr_open(ao,param.filename); break; } - + return 0; } - -void flush_output(int outmode, audio_output_t *ao) +void flush_output(int outmode, audio_output_t *ao, unsigned char *bytes, size_t count) { - /* the gapless code is not in effect for buffered mode... as then condition for flush_output is never met */ - #ifdef GAPLESS - if(param.gapless) layer3_gapless_buffercheck(); - #endif - - if(pcm_point) + if(count) { switch(outmode) { case DECODE_FILE: - write (OutputDescriptor, pcm_sample, pcm_point); + write (OutputDescriptor, bytes, count); break; case DECODE_AUDIO: - ao->write(ao, pcm_sample, pcm_point); + ao->write(ao, bytes, count); break; case DECODE_BUFFER: error("The buffer doesn't work like that... I shouldn't ever be getting here."); - write (buffer_fd[1], pcm_sample, pcm_point); + write (buffer_fd[1], bytes, count); break; case DECODE_WAV: case DECODE_CDR: case DECODE_AU: - wav_write(pcm_sample, pcm_point); + wav_write(bytes, count); break; } - pcm_point = 0; + count = 0; } } diff --git a/src/audio.h b/src/audio.h index 95122d14..cd7fa387 100644 --- a/src/audio.h +++ b/src/audio.h @@ -89,7 +89,7 @@ extern int audio_fit_capabilities(audio_output_t *ao,int c,int r); extern char *audio_encoding_name(int format); extern int init_output( audio_output_t *ao ); -extern void flush_output(int mod, audio_output_t *ao ); +void flush_output(int outmode, audio_output_t *ao, unsigned char *bytes, size_t count) extern void close_output(int mod, audio_output_t *ao ); diff --git a/src/buffer.c b/src/buffer.c index ad6dca09..fafaf66c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -10,13 +10,14 @@ - dammed night coders;-) */ -#include "mpg123.h" +#include "mpg123app.h" #ifndef NOXFERMEM +#include "common.h" #include -int outburst = MAXOUTBURST; +int outburst = 32768; static int intflag = FALSE; static int usr1flag = FALSE; diff --git a/src/common.c b/src/common.c index 477db9c9..1aedbef8 100644 --- a/src/common.c +++ b/src/common.c @@ -1,126 +1,28 @@ /* - common: anything can happen here... frame reading, output, messages + common: misc stuff... audio flush, status display... - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ -#include "mpg123.h" - -/* #include */ +#include "mpg123app.h" #include #include #include -#include "id3.h" -#include "icy.h" #include "common.h" #ifdef WIN32 #include #endif -/* bitrates for [mpeg1/2][layer] */ -int tabsel_123[2][3][16] = { - { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,}, - {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,}, - {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} }, - - { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} } -}; - -long freqs[9] = { 44100, 48000, 32000, 22050, 24000, 16000 , 11025 , 12000 , 8000 }; - -struct bitstream_info bsi; - -static int fsizeold=0,ssize; -static unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ -static unsigned char *bsbuf=bsspace[1],*bsbufold; -static int bsnum=0; - -static unsigned long oldhead = 0; -unsigned long firsthead=0; -#define CBR 0 -#define VBR 1 -#define ABR 2 -int vbr = CBR; /* variable bitrate flag */ -int abr_rate = 0; -#ifdef GAPLESS -#include "layer3.h" -#endif -unsigned long track_frames = 0; -/* a limit for number of frames in a track; beyond that unsigned long may not be enough to hold byte addresses */ -#define TRACK_MAX_FRAMES ULONG_MAX/4/1152 - -/* this could become a struct... */ -scale_t lastscale = -1; /* last used scale */ -int rva_level[2] = {-1,-1}; /* significance level of stored rva */ -float rva_gain[2] = {0,0}; /* mix, album */ -float rva_peak[2] = {0,0}; const char* rva_name[3] = { "off", "mix", "album" }; - -static double mean_framesize; -static unsigned long mean_frames; -static int do_recover = 0; -struct -{ - off_t data[INDEX_SIZE]; - size_t fill; - unsigned long step; -} frame_index; - -unsigned char *pcm_sample; -int pcm_point = 0; -int audiobufsize = AUDIOBUFSIZE; - -#define RESYNC_LIMIT 1024 - -#ifdef VARMODESUPPORT - /* - * This is a dirty hack! It might burn your PC and kill your cat! - * When in "varmode", specially formatted layer-3 mpeg files are - * expected as input -- it will NOT work with standard mpeg files. - * The reason for this: - * Varmode mpeg files enable my own GUI player to perform fast - * forward and backward functions, and to jump to an arbitrary - * timestamp position within the file. This would be possible - * with standard mpeg files, too, but it would be a lot harder to - * implement. - * A filter for converting standard mpeg to varmode mpeg is - * available on request, but it's really not useful on its own. - * - * Oliver Fromme - * Mon Mar 24 00:04:24 MET 1997 - */ -int varmode = FALSE; -int playlimit; -#endif - -static int decode_header(struct frame *fr,unsigned long newhead); - -#ifdef GAPLESS -/* take into account: channels, bytes per sample, resampling (integer samples!) */ -unsigned long samples_to_bytes(unsigned long s, struct frame *fr , audio_output_t *ao) -{ - /* rounding positive number... */ - double sammy, samf; - sammy = (1.0*s) * (1.0*ao->rate)/freqs[fr->sampling_frequency]; - debug4("%lu samples to bytes with freq %li (ai.rate %li); sammy %f", s, freqs[fr->sampling_frequency], ao->rate, sammy); - samf = floor(sammy); - return (unsigned long) - (((ao->format & AUDIO_FORMAT_MASK) == AUDIO_FORMAT_16) ? 2 : 1) -#ifdef FLOATOUT - * 2 -#endif - * ao->channels - * (int) (((sammy - samf) < 0.5) ? samf : ( sammy-samf > 0.5 ? samf+1 : ((unsigned long) samf % 2 == 0 ? samf : samf + 1))); -} -#endif - +static const char *modes[5] = {"Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel", "Invalid" }; +static const char *smodes[5] = { "stereo", "joint-stereo", "dual-channel", "mono", "invalid" }; +static const char *layers[4] = { "Unknown" , "I", "II", "III" }; +static const char *versions[4] = {"1.0", "2.0", "2.5", "x.x" }; #if !defined(WIN32) && !defined(GENERIC) void (*catchsignal(int signum, void(*handler)()))() @@ -142,877 +44,73 @@ void (*catchsignal(int signum, void(*handler)()))() } #endif -void read_frame_init (struct frame* fr) -{ - fr->num = -1; - oldhead = 0; - firsthead = 0; - vbr = CBR; - abr_rate = 0; - track_frames = 0; - mean_frames = 0; - mean_framesize = 0; - rva_level[0] = -1; - rva_level[1] = -1; - #ifdef GAPLESS - /* one can at least skip the delay at beginning - though not add it at end since end is unknown */ - if(param.gapless) layer3_gapless_init(DECODER_DELAY+GAP_SHIFT, 0); - #endif - frame_index.fill = 0; - frame_index.step = 1; - reset_id3(); -} - -#define free_format_header(head) ( ((head & 0xffe00000) == 0xffe00000) && ((head>>17)&3) && (((head>>12)&0xf) == 0x0) && (((head>>10)&0x3) != 0x3 )) - -/* compiler is smart enought to inline this one or should I really do it as macro...? */ -int head_check(unsigned long head) -{ - if - ( - /* first 11 bits are set to 1 for frame sync */ - ((head & 0xffe00000) != 0xffe00000) - || - /* layer: 01,10,11 is 1,2,3; 00 is reserved */ - (!((head>>17)&3)) - || - /* 1111 means bad bitrate */ - (((head>>12)&0xf) == 0xf) - || - /* 0000 means free format... */ - (((head>>12)&0xf) == 0x0) - || - /* sampling freq: 11 is reserved */ - (((head>>10)&0x3) == 0x3 ) - /* here used to be a mpeg 2.5 check... re-enabled 2.5 decoding due to lack of evidence that it is really not good */ - ) - { - return FALSE; - } - /* if no check failed, the header is valid (hopefully)*/ - else - { - return TRUE; - } -} - -void do_volume(double factor) -{ - if(factor < 0) factor = 0; - /* change the output scaling and apply with rva */ - outscale = (double) MAXOUTBURST * factor; - do_rva(); -} - -/* adjust the volume, taking both outscale and rva values into account */ -void do_rva() -{ - double rvafact = 1; - float peak = 0; - scale_t newscale; - - if(param.rva) - { - int rt = 0; - /* Should one assume a zero RVA as no RVA? */ - if(param.rva == 2 && rva_level[1] != -1) rt = 1; - if(rva_level[rt] != -1) - { - rvafact = pow(10,rva_gain[rt]/20); - peak = rva_peak[rt]; - if(param.verbose > 1) fprintf(stderr, "Note: doing RVA with gain %f\n", rva_gain[rt]); - } - else - { - warning("no RVA value found"); - } - } - - newscale = outscale*rvafact; - - /* if peak is unknown (== 0) this check won't hurt */ - if((peak*newscale) > MAXOUTBURST) - { - newscale = (scale_t) ((double) MAXOUTBURST/peak); - warning2("limiting scale value to %li to prevent clipping with indicated peak factor of %f", newscale, peak); - } - /* first rva setting is forced with lastscale < 0 */ - if(newscale != lastscale) - { - debug3("changing scale value from %li to %li (peak estimated to %li)", lastscale != -1 ? lastscale : outscale, newscale, (long) (newscale*peak)); - opt_make_decode_tables(newscale); /* the actual work */ - lastscale = newscale; - } -} - - -int read_frame_recover(struct frame* fr) -{ - int ret; - do_recover = 1; - ret = read_frame(fr); - do_recover = 0; - return ret; -} - -/***************************************************************** - - * read next frame - */ -int read_frame(struct frame *fr) -{ - /* TODO: rework this thing */ - unsigned long newhead; - static unsigned char ssave[34]; - off_t framepos; - int give_note = param.verbose > 1 ? 1 : (do_recover ? 0 : 1 ); - fsizeold=fr->framesize; /* for Layer3 */ - - if (param.halfspeed) { - static int halfphase = 0; - if (halfphase--) { - bsi.bitindex = 0; - bsi.wordpointer = (unsigned char *) bsbuf; - if (fr->lay == 3) - memcpy (bsbuf, ssave, ssize); - return 1; - } - else - halfphase = param.halfspeed - 1; - } - -read_again: - - if(!rd->head_read(rd,&newhead)) - { - return FALSE; - } - - /* this if wrap looks like dead code... */ - if(1 || oldhead != newhead || !oldhead) - { - -init_resync: - - fr->header_change = 2; - if(oldhead) { - if((oldhead & 0xc00) == (newhead & 0xc00)) { - if( (oldhead & 0xc0) == 0 && (newhead & 0xc0) == 0) - fr->header_change = 1; - else if( (oldhead & 0xc0) > 0 && (newhead & 0xc0) > 0) - fr->header_change = 1; - } - } - -#ifdef SKIP_JUNK - /* watch out for junk/tags on beginning of stream by invalid header */ - if(!firsthead && !head_check(newhead) && !free_format_header(newhead)) { - int i; - - /* check for id3v2; first three bytes (of 4) are "ID3" */ - if((newhead & (unsigned long) 0xffffff00) == (unsigned long) 0x49443300) - { - int id3length = 0; - id3length = parse_new_id3(newhead, rd); - goto read_again; - } - else if(param.verbose > 1) fprintf(stderr,"Note: Junk at the beginning (0x%08lx)\n",newhead); - - /* I even saw RIFF headers at the beginning of MPEG streams ;( */ - if(newhead == ('R'<<24)+('I'<<16)+('F'<<8)+'F') { - if(param.verbose > 1) fprintf(stderr, "Note: Looks like a RIFF header.\n"); - if(!rd->head_read(rd,&newhead)) - return 0; - while(newhead != ('d'<<24)+('a'<<16)+('t'<<8)+'a') { - if(!rd->head_shift(rd,&newhead)) - return 0; - } - if(!rd->head_read(rd,&newhead)) - return 0; - if(param.verbose > 1) fprintf(stderr,"Note: Skipped RIFF header!\n"); - goto read_again; - } - /* unhandled junk... just continue search for a header */ - /* step in byte steps through next 64K */ - debug("searching for header..."); - for(i=0;i<65536;i++) { - if(!rd->head_shift(rd,&newhead)) - return 0; - /* if(head_check(newhead)) */ - if(head_check(newhead) && decode_header(fr, newhead)) - break; - } - if(i == 65536) { - if(!param.quiet) error("Giving up searching valid MPEG header after 64K of junk."); - return 0; - } - else debug("hopefully found one..."); - /* - * should we additionaly check, whether a new frame starts at - * the next expected position? (some kind of read ahead) - * We could implement this easily, at least for files. - */ - } -#endif - - /* first attempt of read ahead check to find the real first header; cannot believe what junk is out there! */ - /* for now, a spurious first free format header screws up here; need free format support for detecting false free format headers... */ - if(!firsthead && rd->flags & READER_SEEKABLE && head_check(newhead) && decode_header(fr, newhead)) - { - unsigned long nexthead = 0; - int hd = 0; - off_t start = rd->tell(rd); - debug1("doing ahead check with BPF %d", fr->framesize+4); - /* step framesize bytes forward and read next possible header*/ - if(rd->back_bytes(rd, -fr->framesize)) - { - error("cannot seek!"); - return 0; - } - hd = rd->head_read(rd,&nexthead); - if(rd->back_bytes(rd, rd->tell(rd)-start)) - { - error("cannot seek!"); - return 0; - } - if(!hd) - { - warning("cannot read next header, a one-frame stream? Duh..."); - } - else - { - debug2("does next header 0x%08lx match first 0x%08lx?", nexthead, newhead); - /* not allowing free format yet */ - if(!head_check(nexthead) || (nexthead & HDRCMPMASK) != (newhead & HDRCMPMASK)) - { - debug("No, the header was not valid, start from beginning..."); - oldhead = 0; /* start over */ - /* try next byte for valid header */ - if(rd->back_bytes(rd, 3)) - { - error("cannot seek!"); - return 0; - } - goto read_again; - } - } - } - - /* why has this head check been avoided here before? */ - if(!head_check(newhead)) - { - if(!firsthead && free_format_header(newhead)) - { - error1("Header 0x%08lx seems to indicate a free format stream; I do not handle that yet", newhead); - goto read_again; - return 0; - } - /* and those ugly ID3 tags */ - if((newhead & 0xffffff00) == ('T'<<24)+('A'<<16)+('G'<<8)) { - rd->skip_bytes(rd,124); - if (param.verbose > 1) fprintf(stderr,"Note: Skipped ID3 Tag!\n"); - goto read_again; - } - /* duplicated code from above! */ - /* check for id3v2; first three bytes (of 4) are "ID3" */ - if((newhead & (unsigned long) 0xffffff00) == (unsigned long) 0x49443300) - { - int id3length = 0; - id3length = parse_new_id3(newhead, rd); - goto read_again; - } - else if (give_note) - { - fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset 0x%lx.\n", - newhead, (long unsigned int)rd->tell(rd)-4); - } - - if(give_note && (newhead & 0xffffff00) == ('b'<<24)+('m'<<16)+('p'<<8)) fprintf(stderr,"Note: Could be a BMP album art.\n"); - if (param.tryresync || do_recover) { - int try = 0; - /* TODO: make this more robust, I'd like to cat two mp3 fragments together (in a dirty way) and still have mpg123 beign able to decode all it somehow. */ - if(give_note) fprintf(stderr, "Note: Trying to resync...\n"); - /* Read more bytes until we find something that looks - reasonably like a valid header. This is not a - perfect strategy, but it should get us back on the - track within a short time (and hopefully without - too much distortion in the audio output). */ - do { - if(!rd->head_shift(rd,&newhead)) - return 0; - debug2("resync try %i, got newhead 0x%08lx", try, newhead); - if (!oldhead) - { - debug("going to init_resync..."); - goto init_resync; /* "considered harmful", eh? */ - } - /* we should perhaps collect a list of valid headers that occured in file... there can be more */ - /* Michael's new resync routine seems to work better with the one frame readahead (and some input buffering?) */ - } while - ( - ++try < RESYNC_LIMIT - && (newhead & HDRCMPMASK) != (oldhead & HDRCMPMASK) - && (newhead & HDRCMPMASK) != (firsthead & HDRCMPMASK) - ); - /* too many false positives - }while (!(head_check(newhead) && decode_header(fr, newhead))); */ - if(try == RESYNC_LIMIT) - { - error("giving up resync - your stream is not nice... perhaps an improved routine could catch up"); - return 0; - } - - if (give_note) - fprintf (stderr, "Note: Skipped %d bytes in input.\n", try); - } - else - { - error("not attempting to resync..."); - return (0); - } - } - - if (!firsthead) { - if(!decode_header(fr,newhead)) - { - error("decode header failed before first valid one, going to read again"); - goto read_again; - } - } - else - if(!decode_header(fr,newhead)) - { - error("decode header failed - goto resync"); - /* return 0; */ - goto init_resync; - } - } - else - fr->header_change = 0; - - /* flip/init buffer for Layer 3 */ - bsbufold = bsbuf; - bsbuf = bsspace[bsnum]+512; - bsnum = (bsnum + 1) & 1; - /* if filepos is invalid, so is framepos */ - framepos = rd->filepos - 4; - /* read main data into memory */ - /* 0 is error! */ - if(!rd->read_frame_body(rd,bsbuf,fr->framesize)) - return 0; - if(!firsthead) - { - /* following stuff is actually layer3 specific (in practice, not in theory) */ - if(fr->lay == 3) - { - /* - going to look for Xing or Info at some position after the header - MPEG 1 MPEG 2/2.5 (LSF) - Stereo, Joint Stereo, Dual Channel 32 17 - Mono 17 9 - - Also, how to avoid false positives? I guess I should interpret more of the header to rule that out(?). - I hope that ensuring all zeros until tag start is enough. - */ - size_t lame_offset = (fr->stereo == 2) ? (fr->lsf ? 17 : 32 ) : (fr->lsf ? 9 : 17); - if(fr->framesize >= 120+lame_offset) /* traditional Xing header is 120 bytes */ - { - size_t i; - int lame_type = 0; - debug("do we have lame tag?"); - /* only search for tag when all zero before it (apart from checksum) */ - for(i=2; i < lame_offset; ++i) if(bsbuf[i] != 0) break; - if(i == lame_offset) - { - debug("possibly..."); - if - ( - (bsbuf[lame_offset] == 'I') - && (bsbuf[lame_offset+1] == 'n') - && (bsbuf[lame_offset+2] == 'f') - && (bsbuf[lame_offset+3] == 'o') - ) - { - lame_type = 1; /* We still have to see what there is */ - } - else if - ( - (bsbuf[lame_offset] == 'X') - && (bsbuf[lame_offset+1] == 'i') - && (bsbuf[lame_offset+2] == 'n') - && (bsbuf[lame_offset+3] == 'g') - ) - { - lame_type = 2; - vbr = VBR; /* Xing header means always VBR */ - } - if(lame_type) - { - unsigned long xing_flags; - - /* we have one of these headers... */ - if(param.verbose > 1) fprintf(stderr, "Note: Xing/Lame/Info header detected\n"); - /* now interpret the Xing part, I have 120 bytes total for sure */ - /* there are 4 bytes for flags, but only the last byte contains known ones */ - lame_offset += 4; /* now first byte after Xing/Name */ - /* 4 bytes dword for flags */ - #define make_long(a, o) ((((unsigned long) a[o]) << 24) | (((unsigned long) a[o+1]) << 16) | (((unsigned long) a[o+2]) << 8) | ((unsigned long) a[o+3])) - /* 16 bit */ - #define make_short(a,o) ((((unsigned short) a[o]) << 8) | ((unsigned short) a[o+1])) - xing_flags = make_long(bsbuf, lame_offset); - lame_offset += 4; - debug1("Xing: flags 0x%08lx", xing_flags); - if(xing_flags & 1) /* frames */ - { - /* - In theory, one should use that value for skipping... - When I know the exact number of samples I could simply count in flush_output, - but that's problematic with seeking and such. - I still miss the real solution for detecting the end. - */ - track_frames = make_long(bsbuf, lame_offset); - if(track_frames > TRACK_MAX_FRAMES) track_frames = 0; /* endless stream? */ - #ifdef GAPLESS - /* if no further info there, remove/add at least the decoder delay */ - if(param.gapless) - { - unsigned long length = track_frames * spf(fr); - if(length > 1) - layer3_gapless_init(DECODER_DELAY+GAP_SHIFT, length+DECODER_DELAY+GAP_SHIFT); - } - #endif - debug1("Xing: %lu frames", track_frames); - lame_offset += 4; - } - if(xing_flags & 0x2) /* bytes */ - { - #ifdef DEBUG - unsigned long xing_bytes = make_long(bsbuf, lame_offset); - debug1("Xing: %lu bytes", xing_bytes); - #endif - lame_offset += 4; - } - if(xing_flags & 0x4) /* TOC */ - { - lame_offset += 100; /* just skip */ - } - if(xing_flags & 0x8) /* VBR quality */ - { - #ifdef DEBUG - unsigned long xing_quality = make_long(bsbuf, lame_offset); - debug1("Xing: quality = %lu", xing_quality); - #endif - lame_offset += 4; - } - /* I guess that either 0 or LAME extra data follows */ - /* there may this crc16 be floating around... (?) */ - if(bsbuf[lame_offset] != 0) - { - unsigned char lame_vbr; - float replay_gain[2] = {0,0}; - float peak = 0; - float gain_offset = 0; /* going to be +6 for old lame that used 83dB */ - char nb[10]; - memcpy(nb, bsbuf+lame_offset, 9); - nb[9] = 0; - debug1("Info: Encoder: %s", nb); - if(!strncmp("LAME", nb, 4)) - { - gain_offset = 6; - debug("TODO: finish lame detetcion..."); - } - lame_offset += 9; - /* the 4 big bits are tag revision, the small bits vbr method */ - lame_vbr = bsbuf[lame_offset] & 15; - debug1("Info: rev %u", bsbuf[lame_offset] >> 4); - debug1("Info: vbr mode %u", lame_vbr); - lame_offset += 1; - switch(lame_vbr) - { - /* from rev1 proposal... not sure if all good in practice */ - case 1: - case 8: vbr = CBR; break; - case 2: - case 9: vbr = ABR; break; - default: vbr = VBR; /* 00==unknown is taken as VBR */ - } - /* skipping: lowpass filter value */ - lame_offset += 1; - /* replaygain */ - /* 32bit float: peak amplitude -- why did I parse it as int before??*/ - /* Ah, yes, lame seems to store it as int since some day in 2003; I've only seen zeros anyway until now, bah! */ - if - ( - (bsbuf[lame_offset] != 0) - || (bsbuf[lame_offset+1] != 0) - || (bsbuf[lame_offset+2] != 0) - || (bsbuf[lame_offset+3] != 0) - ) - { - debug("Wow! Is there _really_ a non-zero peak value? Now is it stored as float or int - how should I know?"); - peak = *(float*) (bsbuf+lame_offset); - } - debug1("Info: peak = %f (I won't use this)", peak); - peak = 0; /* until better times arrived */ - lame_offset += 4; - /* - ReplayGain values - lame only writes radio mode gain... - 16bit gain, 3 bits name, 3 bits originator, sign (1=-, 0=+), dB value*10 in 9 bits (fixed point) - ignore the setting if name or originator == 000! - radio 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 1 - audiophile 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 - */ - - for(i =0; i < 2; ++i) - { - unsigned char origin = (bsbuf[lame_offset] >> 2) & 0x7; /* the 3 bits after that... */ - if(origin != 0) - { - unsigned char gt = bsbuf[lame_offset] >> 5; /* only first 3 bits */ - if(gt == 1) gt = 0; /* radio */ - else if(gt == 2) gt = 1; /* audiophile */ - else continue; - /* get the 9 bits into a number, divide by 10, multiply sign... happy bit banging */ - replay_gain[0] = ((bsbuf[lame_offset] & 0x2) ? -0.1 : 0.1) * (make_short(bsbuf, lame_offset) & 0x1f); - } - lame_offset += 2; - } - debug1("Info: Radio Gain = %03.1fdB", replay_gain[0]); - debug1("Info: Audiophile Gain = %03.1fdB", replay_gain[1]); - for(i=0; i < 2; ++i) - { - if(rva_level[i] <= 0) - { - rva_peak[i] = 0; /* at some time the parsed peak should be used */ - rva_gain[i] = replay_gain[i]; - rva_level[i] = 0; - } - } - lame_offset += 1; /* skipping encoding flags byte */ - if(vbr == ABR) - { - abr_rate = bsbuf[lame_offset]; - debug1("Info: ABR rate = %u", abr_rate); - } - lame_offset += 1; - /* encoder delay and padding, two 12 bit values... lame does write them from int ...*/ - #ifdef GAPLESS - if(param.gapless) - { - /* - Temporary hack that doesn't work with seeking and also is not waterproof but works most of the time; - in future the lame delay/padding and frame number info should be passed to layer3.c and the junk samples avoided at the source. - */ - unsigned long length = track_frames * spf(fr); - unsigned long skipbegin = DECODER_DELAY + ((((int) bsbuf[lame_offset]) << 4) | (((int) bsbuf[lame_offset+1]) >> 4)); - unsigned long skipend = -DECODER_DELAY + (((((int) bsbuf[lame_offset+1]) << 8) | (((int) bsbuf[lame_offset+2]))) & 0xfff); - debug3("preparing gapless mode for layer3: length %lu, skipbegin %lu, skipend %lu", length, skipbegin, skipend); - if(length > 1) - layer3_gapless_init(skipbegin+GAP_SHIFT, (skipend < length) ? length-skipend+GAP_SHIFT : length+GAP_SHIFT); - } - #endif - } - /* switch buffer back ... */ - bsbuf = bsspace[bsnum]+512; - bsnum = (bsnum + 1) & 1; - goto read_again; - } - } - } - } /* end block for Xing/Lame/Info tag */ - firsthead = newhead; /* _now_ it's time to store it... the first real header */ - debug1("firsthead: %08lx", firsthead); - /* now adjust volume */ - do_rva(); - /* and print id3/stream info */ - if(!param.quiet) - { - print_id3_tag(rd->flags & READER_ID3TAG ? rd->id3buf : NULL); - if(icy.name.fill) fprintf(stderr, "ICY-NAME: %s\n", icy.name.p); - if(icy.url.fill) fprintf(stderr, "ICY-URL: %s\n", icy.url.p); - } - } - bsi.bitindex = 0; - bsi.wordpointer = (unsigned char *) bsbuf; - - if (param.halfspeed && fr->lay == 3) - memcpy (ssave, bsbuf, ssize); - - debug2("N %08lx %i", newhead, fr->framesize); - if(++mean_frames != 0) - { - mean_framesize = ((mean_frames-1)*mean_framesize+compute_bpf(fr)) / mean_frames ; - } - ++fr->num; /* 0 for the first! */ - /* index the position */ - if(INDEX_SIZE > 0) /* any sane compiler should make a no-brainer out of this */ - { - if(fr->num == frame_index.fill*frame_index.step) - { - if(frame_index.fill == INDEX_SIZE) - { - size_t c; - /* increase step, reduce fill */ - frame_index.step *= 2; - frame_index.fill /= 2; /* divisable by 2! */ - for(c = 0; c < frame_index.fill; ++c) - { - frame_index.data[c] = frame_index.data[2*c]; - } - } - if(fr->num == frame_index.fill*frame_index.step) - { - frame_index.data[frame_index.fill] = framepos; - ++frame_index.fill; - } - } - } - return 1; -} - -void print_frame_index(FILE* out) -{ - size_t c; - for(c=0; c < frame_index.fill;++c) fprintf(out, "[%lu] %lu: %li (+%li)\n", (unsigned long) c, (unsigned long) c*frame_index.step, (long)frame_index.data[c], (long) (c ? frame_index.data[c]-frame_index.data[c-1] : 0)); -} - -/* - find the best frame in index just before the wanted one, seek to there - then step to just before wanted one with read_frame - do not care tabout the stuff that was in buffer but not played back - everything that left the decoder is counted as played - - Decide if you want low latency reaction and accurate timing info or stable long-time playback with buffer! -*/ - -off_t frame_index_find(unsigned long want_frame, unsigned long* get_frame) -{ - /* default is file start if no index position */ - off_t gopos = 0; - *get_frame = 0; - if(frame_index.fill) - { - /* find in index */ - size_t fi; - /* at index fi there is frame step*fi... */ - fi = want_frame/frame_index.step; - if(fi >= frame_index.fill) fi = frame_index.fill - 1; - *get_frame = fi*frame_index.step; - gopos = frame_index.data[fi]; - } - return gopos; -} - -/* dead code? - see readers.c */ -/**************************************** - * HACK,HACK,HACK: step back frames - * can only work if the 'stream' isn't a real stream but a file - */ -int back_frame(struct reader *rds,struct frame *fr,int num) -{ - long bytes; - unsigned long newhead; - - if(!firsthead) - return 0; - - bytes = (fr->framesize+8)*(num+2); - - if(rds->back_bytes(rds,bytes) < 0) - return -1; - if(!rds->head_read(rds,&newhead)) - return -1; - - while( (newhead & HDRCMPMASK) != (firsthead & HDRCMPMASK) ) { - if(!rds->head_shift(rds,&newhead)) - return -1; - } - - if(rds->back_bytes(rds,4) <0) - return -1; - - read_frame(fr); - read_frame(fr); - - if(fr->lay == 3) { - set_pointer(512); - } - - return 0; -} - - -/* - * decode a header and write the information - * into the frame structure - */ -static int decode_header(struct frame *fr,unsigned long newhead) -{ - if(!head_check(newhead)) - { - error("tried to decode obviously invalid header"); - return 0; - } - if( newhead & (1<<20) ) { - fr->lsf = (newhead & (1<<19)) ? 0x0 : 0x1; - fr->mpeg25 = 0; - } - else { - fr->lsf = 1; - fr->mpeg25 = 1; - } - - if (!param.tryresync || !oldhead || - (((oldhead>>19)&0x3) ^ ((newhead>>19)&0x3))) { - /* If "tryresync" is false, assume that certain - parameters do not change within the stream! - Force an update if lsf or mpeg25 settings - have changed. */ - fr->lay = 4-((newhead>>17)&3); - if( ((newhead>>10)&0x3) == 0x3) { - error("Stream error"); - return 0; /* exit() here really is too much, isn't it? */ - } - if(fr->mpeg25) { - fr->sampling_frequency = 6 + ((newhead>>10)&0x3); - } - else - fr->sampling_frequency = ((newhead>>10)&0x3) + (fr->lsf*3); - } - - #ifdef DEBUG - if((((newhead>>16)&0x1)^0x1) != fr->error_protection) debug("changed crc bit!"); - #endif - fr->error_protection = ((newhead>>16)&0x1)^0x1; /* seen a file where this varies (old lame tag without crc, track with crc) */ - fr->bitrate_index = ((newhead>>12)&0xf); - fr->padding = ((newhead>>9)&0x1); - fr->extension = ((newhead>>8)&0x1); - fr->mode = ((newhead>>6)&0x3); - fr->mode_ext = ((newhead>>4)&0x3); - fr->copyright = ((newhead>>3)&0x1); - fr->original = ((newhead>>2)&0x1); - fr->emphasis = newhead & 0x3; - - fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2; - - oldhead = newhead; - - if(!fr->bitrate_index) { - error1("encountered free format header %08lx in decode_header - not supported yet",newhead); - return (0); - } - - switch(fr->lay) { - case 1: - fr->do_layer = do_layer1; -#ifdef VARMODESUPPORT - if (varmode) { - error("Sorry, layer-1 not supported in varmode."); - return (0); - } -#endif - fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; - fr->framesize /= freqs[fr->sampling_frequency]; - fr->framesize = ((fr->framesize+fr->padding)<<2)-4; - break; - case 2: - fr->do_layer = do_layer2; -#ifdef VARMODESUPPORT - if (varmode) { - error("Sorry, layer-2 not supported in varmode."); - return (0); - } -#endif -debug2("bitrate index: %i (%i)", fr->bitrate_index, tabsel_123[fr->lsf][1][fr->bitrate_index] ); - fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000; - fr->framesize /= freqs[fr->sampling_frequency]; - fr->framesize += fr->padding - 4; - break; - case 3: - fr->do_layer = do_layer3; - if(fr->lsf) - ssize = (fr->stereo == 1) ? 9 : 17; - else - ssize = (fr->stereo == 1) ? 17 : 32; - if(fr->error_protection) - ssize += 2; - fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000; - fr->framesize /= freqs[fr->sampling_frequency]<<(fr->lsf); - fr->framesize = fr->framesize + fr->padding - 4; - break; - default: - error("unknown layer type (!!)"); - return (0); - } - if (fr->framesize > MAXFRAMESIZE) { - error1("Frame size too big: %d", fr->framesize+4-fr->padding); - return (0); - } - return 1; -} - /* concurring to print_rheader... here for control_generic */ const char* remote_header_help = "S "; void print_remote_header(struct frame* fr) { - static char *modes[4] = {"Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel"}; + struct mpg123_frameinfo i; + mpg123_info(mh, &i); + if(i.mode >= 4 || i.mode < 0) i.mode = 4; + if(i.version >= 3 || i.version < 0) i.version = 3; generic_sendmsg("S %s %d %ld %s %d %d %d %d %d %d %d %d %d", - fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), - fr->lay, - freqs[fr->sampling_frequency], - modes[fr->mode], - fr->mode_ext, - fr->framesize+4, - fr->stereo, - fr->copyright ? 1 : 0, - fr->error_protection ? 1 : 0, - fr->emphasis, - tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index], - fr->extension, - vbr); + versions[i.version], + i.layer, + i.rate, + modes[i.mode], + i.mode_ext, + i.framesize, + i.mode == MPG123_M_MONO ? 1 : 2, + i.flags & MPG123_COPYRIGHT ? 1 : 0, + i.flags & MPG123_CRC ? 1 : 0, + i.emphasis, + i.bitrate, + i.flags & MPG123_PRIVATE ? 1 : 0, + i.vbr); } -void print_header(struct frame *fr) +void print_header(mpg123_handle *mh) { - static char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" }; - static char *layers[4] = { "Unknown" , "I", "II", "III" }; - + struct mpg123_frameinfo i; + mpg123_info(mh, &i); + if(i.mode > 4 || i.mode < 0) i.mode = 4; + if(i.version > 3 || i.version < 0) i.version = 3; + if(i.layer > 3 || i.layer < 0) i.layer = 0; fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n", - fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), - layers[fr->lay],freqs[fr->sampling_frequency], - modes[fr->mode],fr->mode_ext,fr->framesize+4); + versions[i.version], + layers[i.layer], i.rate, + modes[i.mode],i.mode_ext,i.framesize); fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n", - fr->stereo,fr->copyright?"Yes":"No", - fr->original?"Yes":"No",fr->error_protection?"Yes":"No", - fr->emphasis); + i.mode == MPG123_M_MONO ? 1 : 2,i.flags & MPG123_COPYRIGHT ? "Yes" : "No", + i.flags & MPG123_ORIGINAL ? "Yes" : "No", i.flags & MPG123_CRC ? "Yes" : "No", + i.emphasis); fprintf(stderr,"Bitrate: "); - switch(vbr) + switch(i.vbr) { - case CBR: fprintf(stderr, "%d kbits/s", tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]); break; - case VBR: fprintf(stderr, "VBR"); break; - case ABR: fprintf(stderr, "%d kbit/s ABR", abr_rate); break; + case MPG123_CBR: fprintf(stderr, "%d kbit/s", i.bitrate); break; + case MPG123_VBR: fprintf(stderr, "VBR"); break; + case MPG123_ABR: fprintf(stderr, "%d kbit/s ABR", i.abr_rate); break; default: fprintf(stderr, "???"); } - fprintf(stderr, " Extension value: %d\n", fr->extension); + fprintf(stderr, " Extension value: %d\n", i.flags & MPG123_PRIVATE ? 1 : 0); } -void print_header_compact(struct frame *fr) +void print_header_compact(mpg123_handle *mh) { - static char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" }; - static char *layers[4] = { "Unknown" , "I", "II", "III" }; + struct mpg123_frameinfo i; + mpg123_info(mh, &i); + if(i.mode > 4 || i.mode < 0) i.mode = 4; + if(i.version > 3 || i.version < 0) i.version = 3; + if(i.layer > 3 || i.layer < 0) i.layer = 0; - fprintf(stderr,"MPEG %s layer %s, ", - fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), - layers[fr->lay]); - switch(vbr) + fprintf(stderr,"MPEG %s layer %s, ", versions[i.version], layers[i.layer]); + switch(i.vbr) { - case CBR: fprintf(stderr, "%d kbits/s", tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]); break; - case VBR: fprintf(stderr, "VBR"); break; - case ABR: fprintf(stderr, "%d kbit/s ABR", abr_rate); break; + case MPG123_CBR: fprintf(stderr, "%d kbit/s", i.bitrate); break; + case MPG123_VBR: fprintf(stderr, "VBR"); break; + case MPG123_ABR: fprintf(stderr, "%d kbit/s ABR", i.abr_rate); break; default: fprintf(stderr, "???"); } - fprintf(stderr,", %ld Hz %s\n", - freqs[fr->sampling_frequency], modes[fr->mode]); + fprintf(stderr,", %ld Hz %s\n", i.rate, smodes[i.mode]); } #if 0 @@ -1083,91 +181,20 @@ int split_dir_file (const char *path, char **dname, char **fname) } } -void set_pointer(long backstep) +unsigned int roundui(double val) { - bsi.wordpointer = bsbuf + ssize - backstep; - if (backstep) - memcpy(bsi.wordpointer,bsbufold+fsizeold-backstep,backstep); - bsi.bitindex = 0; + double base = floor(val); + return (unsigned int) ((val-base) < 0.5 ? base : base + 1 ); } -/********************************/ - -double compute_bpf(struct frame *fr) +void print_stat(mpg123_handle *fr, long offset, long buffsize) { - double bpf; - - switch(fr->lay) { - case 1: - bpf = tabsel_123[fr->lsf][0][fr->bitrate_index]; - bpf *= 12000.0 * 4.0; - bpf /= freqs[fr->sampling_frequency] <<(fr->lsf); - break; - case 2: - case 3: - bpf = tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]; - bpf *= 144000; - bpf /= freqs[fr->sampling_frequency] << (fr->lsf); - break; - default: - bpf = 1.0; - } - - return bpf; -} - -double compute_tpf(struct frame *fr) -{ - static int bs[4] = { 0,384,1152,1152 }; - double tpf; - - tpf = (double) bs[fr->lay]; - tpf /= freqs[fr->sampling_frequency] << (fr->lsf); - return tpf; -} - -/* - * Returns number of frames queued up in output buffer, i.e. - * offset between currently played and currently decoded frame. - */ - -long compute_buffer_offset(struct frame *fr) -{ - long bufsize; - - /* - * buffermem->buf[0] holds output sampling rate, - * buffermem->buf[1] holds number of channels, - * buffermem->buf[2] holds audio format of output. - */ - - if(!param.usebuffer || !(bufsize=xfermem_get_usedspace(buffermem)) - || !buffermem->buf[0] || !buffermem->buf[1]) - return 0; - - bufsize = (long)((double) bufsize / buffermem->buf[0] / - buffermem->buf[1] / compute_tpf(fr)); - - if((buffermem->buf[2] & AUDIO_FORMAT_MASK) == AUDIO_FORMAT_16) - return bufsize/2; - else - return bufsize; -} - -/* Way too many parameters - heck, this fr and ai is always the same! */ -int position_info(struct frame* fr, unsigned long no, long buffsize, audio_output_t *ao, - unsigned long* frames_left, double* current_seconds, double* seconds_left) -{ - double tpf; - double dt = 0.0; - - if(!rd || !fr) - { - debug("reader troubles!"); - return -1; - } - + double tim1,tim2; + long rno, no; + double basevol, realvol; + char *icy; #ifndef GENERIC +/* Only generate new stat line when stderr is ready... don't overfill... */ { struct timeval t; fd_set serr; @@ -1178,109 +205,25 @@ int position_info(struct frame* fr, unsigned long no, long buffsize, audio_outpu FD_ZERO(&serr); FD_SET(errfd,&serr); n = select(errfd+1,NULL,&serr,NULL,&t); - if(n <= 0) - return -2; + if(n <= 0) return; } #endif - - tpf = compute_tpf(fr); - if(buffsize > 0 && ao && ao->rate > 0 && ao->channels > 0) { - dt = (double) buffsize / ao->rate / ao->channels; - if( (ao->format & AUDIO_FORMAT_MASK) == AUDIO_FORMAT_16) - dt *= 0.5; - } - - (*frames_left) = 0; - - if((track_frames != 0) && (track_frames >= fr->num)) (*frames_left) = no < track_frames ? track_frames - no : 0; - else - if(rd->filelen >= 0) + if( MPG123_OK == mpg123_position(fr, offset, buffsize, &no, &rno, &tim1, &tim2) + && MPG123_OK == mpg123_getvolume(fr, &basevol, &realvol, NULL) ) { - double bpf; - long t = rd->tell(rd); - bpf = mean_framesize ? mean_framesize : compute_bpf(fr); - (*frames_left) = (unsigned long)((double)(rd->filelen-t)/bpf); - /* no can be different for prophetic purposes, file pointer is always associated with fr->num! */ - if(fr->num != no) - { - if(fr->num > no) *frames_left += fr->num - no; - else - { - if(*frames_left >= (no - fr->num)) *frames_left -= no - fr->num; - else *frames_left = 0; /* uh, oh! */ - } - } - /* I totally don't understand why we should re-estimate the given correct(?) value */ - /* fr->num = (unsigned long)((double)t/bpf); */ - } - - /* beginning with 0 or 1?*/ - (*current_seconds) = (double) no*tpf-dt; - (*seconds_left) = (double)(*frames_left)*tpf+dt; -#if 0 - (*current_seconds) = (*current_seconds) < 0 ? 0.0 : (*current_seconds); -#endif - if((*seconds_left) < 0) - { - warning("seconds_left < 0!"); - (*seconds_left) = 0.0; - } - return 0; -} - -long time_to_frame(struct frame *fr, double seconds) -{ - return (long) (seconds/compute_tpf(fr)); -} - -unsigned int roundui(double val) -{ - double base = floor(val); - return (unsigned int) ((val-base) < 0.5 ? base : base + 1 ); -} - -void print_stat(struct frame *fr, unsigned long no, long buffsize, audio_output_t *ao) -{ - double tim1,tim2; - unsigned long rno; - if(!position_info(fr, no, buffsize, ao, &rno, &tim1, &tim2)) - { - /* All these sprintf... only to avoid two writes to stderr in case of using buffer? - I guess we can drop that. */ - fprintf(stderr, "\rFrame# %5lu [%5lu], Time: %02lu:%02u.%02u [%02u:%02u.%02u], RVA:%6s, Vol: %3u(%3u)", + fprintf(stderr, "\rFrame# %5li [%5li], Time: %02lu:%02u.%02u [%02u:%02u.%02u], RVA:%6s, Vol: %3u(%3u)", no,rno, (unsigned long) tim1/60, (unsigned int)tim1%60, (unsigned int)(tim1*100)%100, (unsigned int)tim2/60, (unsigned int)tim2%60, (unsigned int)(tim2*100)%100, - rva_name[param.rva], roundui((double)outscale/MAXOUTBURST*100), roundui((double)lastscale/MAXOUTBURST*100) ); + rva_name[param.rva], roundui(basevol*100), roundui(realvol*100) ); if(param.usebuffer) fprintf(stderr,", [%8ld] ",(long)buffsize); } - if(icy.changed && icy.data) - { - fprintf(stderr, "\nICY-META: %s\n", icy.data); - icy.changed = 0; - } + /* Check for changed tags here too? */ + if( mpg123_meta_check(fr) & MPG123_NEW_ICY && MPG123_OK == mpg123_icy(fr, &icy) ) + fprintf(stderr, "\nICY-META: %s\n", icy); } void clear_stat() { fprintf(stderr, "\r \r"); } - -int get_songlen(struct frame *fr,int no) -{ - double tpf; - - if(!fr) - return 0; - - if(no < 0) { - if(!rd || rd->filelen < 0) - return 0; - no = (double) rd->filelen / compute_bpf(fr); - } - - tpf = compute_tpf(fr); - return no*tpf; -} - - diff --git a/src/common.h b/src/common.h index a2d55b3e..37ffb71d 100644 --- a/src/common.h +++ b/src/common.h @@ -9,115 +9,21 @@ #ifndef _MPG123_COMMON_H_ #define _MPG123_COMMON_H_ -/* max = 1728 */ -#define MAXFRAMESIZE 3456 -/* - AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM - A: sync - B: mpeg version - C: layer - D: CRC - E: bitrate - F:sampling rate - G: padding - H: private - I: channel mode - J: mode ext - K: copyright - L: original - M: emphasis +#include "mpg123.h" - old compare mask 0xfffffd00: - 11111111 11111111 11111101 00000000 - - means: everything must match excluding padding and channel mode, ext mode, ... - But a vbr stream's headers will differ in bitrate! - We are already strict in allowing only frames of same type in stream, we should at least watch out for VBR while being strict. - - So a better mask is: - 11111111 11111111 00001101 00000000 - - Even more, I'll allow varying crc bit. - 11111111 11111110 00001101 00000000 - - (still unsure about this private bit) -*/ -#define HDRCMPMASK 0xfffe0d00 - -extern unsigned long firsthead; -extern int tabsel_123[2][3][16]; -extern double compute_tpf(struct frame *fr); -extern double compute_bpf(struct frame *fr); -extern long compute_buffer_offset(struct frame *fr); - -struct bitstream_info { - int bitindex; - unsigned char *wordpointer; -}; - -extern struct bitstream_info bsi; - -/* well, I take that one for granted... at least layer3 */ -#define DECODER_DELAY 529 - -#ifdef GAPLESS -unsigned long samples_to_bytes(unsigned long s, struct frame *fr, audio_output_t* ao); -/* samples per frame ... -Layer I -Layer II -Layer III -MPEG-1 -384 -1152 -1152 -MPEG-2 LSF -384 -1152 -576 -MPEG 2.5 -384 -1152 -576 -*/ -#define spf(fr) (fr->lay == 1 ? 384 : (fr->lay==2 ? 1152 : (fr->lsf || fr->mpeg25 ? 576 : 1152))) -/* still fine-tuning the "real music" window... see read_frame */ -#define GAP_SHIFT -1 -#endif +void (*catchsignal(int signum, void(*handler)()))(); +void print_header(mpg123_handle *); +void print_header_compact(mpg123_handle *); +void print_stat(mpg123_handle *fr, long offset, long buffsize); +void clear_stat(); /* for control_generic */ extern const char* remote_header_help; void print_remote_header(struct frame* fr); void generic_sendmsg (const char *fmt, ...); -int position_info(struct frame* fr, unsigned long no, long buffsize, audio_output_t *ao, - unsigned long* frames_left, double* current_seconds, double* seconds_left); - -int read_frame_recover(struct frame* fr); - -off_t frame_index_find(unsigned long want_frame, unsigned long* get_frame); -void print_frame_index(FILE* out); +int split_dir_file(const char *path, char **dname, char **fname); +extern const char* rva_name[3]; #endif -void print_stat(struct frame *fr,unsigned long no,long buffsize,audio_output_t *ao); -void clear_stat(); - -/* rva data, used in common.c, set in id3.c */ -extern scale_t lastscale; -extern int rva_level[2]; -extern float rva_gain[2]; -extern float rva_peak[2]; - -/* adjust volume to current outscale and rva values if wanted */ -#define RVA_OFF 0 -#define RVA_MIX 1 -#define RVA_ALBUM 2 -#define RVA_MAX RVA_ALBUM -extern const char* rva_name[3]; -void do_rva(); -/* wrap over do_rva that prepares outscale */ -void do_volume(double factor); - -/* positive and negative for offsets... I guess I'll drop the unsigned frame position type anyway */ -long time_to_frame(struct frame *fr, double seconds); - diff --git a/src/control_generic.c b/src/control_generic.c index 42da81a8..59eb5a7c 100644 --- a/src/control_generic.c +++ b/src/control_generic.c @@ -17,16 +17,12 @@ #endif #include #include +#include - -#include "mpg123.h" +#include "mpg123app.h" #include "common.h" #include "buffer.h" -#include "icy.h" -#ifdef GAPLESS -#include "layer3.h" -extern audio_output_t pre_ao; -#endif +#include "genre.h" #define MODE_STOPPED 0 #define MODE_PLAYING 1 #define MODE_PAUSED 2 @@ -40,6 +36,8 @@ int control_file = STDIN_FILENO; #define control_file STDIN_FILENO #endif FILE *outstream; +static int mode = MODE_STOPPED; +static int init = 0; void generic_sendmsg (const char *fmt, ...) { @@ -51,26 +49,34 @@ void generic_sendmsg (const char *fmt, ...) fprintf(outstream, "\n"); } -void generic_sendstat (struct frame *fr) +void generic_sendstat (mpg123_handle *fr) { - unsigned long frames_left; + long current_frame, frames_left; double current_seconds, seconds_left; - if(!position_info(fr, fr->num, xfermem_get_usedspace(buffermem), &ao, &frames_left, ¤t_seconds, &seconds_left)) - generic_sendmsg("F %li %lu %3.2f %3.2f", fr->num, frames_left, current_seconds, seconds_left); + if(!mpg123_position(fr, 0, xfermem_get_usedspace(buffermem), ¤t_frame, &frames_left, ¤t_seconds, &seconds_left)) + generic_sendmsg("F %li %li %3.2f %3.2f", current_frame, frames_left, current_seconds, seconds_left); } -extern char *genre_table[]; -extern int genre_count; -void generic_sendinfoid3 (char *buf) +void generic_sendinfoid3(mpg123_handle *mh) { - char info[200] = "", *c; + char info[125] = ""; int i; - unsigned char genre; - for (i=0, c=buf+3; i<124; i++, c++) - info[i] = *c ? *c : ' '; + mpg123_id3v1 *v1; + mpg123_id3v2 *v2; + if(MPG123_OK != mpg123_id3(mh, &v1, &v2)) + { + error1("Cannot get ID3 data: %s", mpg123_strerror(mh)); + return; + } + if(v1 == NULL) return; + memcpy(info, v1->title, 30); + memcpy(info+30, v1->artist, 30); + memcpy(info+60, v1->album, 30); + memcpy(info+90, v1->year, 4); + memcpy(info+94, v1->comment, 30); + for(i=0;i<124; ++i) if(info[i] == 0) info[i] = ' '; info[i] = 0; - genre = *c; - generic_sendmsg("I ID3:%s%s", info, (genre<=genre_count) ? genre_table[genre] : "Unknown"); + generic_sendmsg("I ID3:%s%s", info, (v1->genre<=genre_count) ? genre_table[v1->genre] : "Unknown"); } void generic_sendinfo (char *filename) @@ -87,18 +93,38 @@ void generic_sendinfo (char *filename) generic_sendmsg("I %s", s); } -int control_generic (struct frame *fr) +static void generic_load(mpg123_handle *fr, char *arg, int state) +{ + if(mode != MODE_STOPPED) + { + close_track(); + mode = MODE_STOPPED; + } + if(!open_track(arg)) + { + generic_sendmsg("E Error opening stream: %s", arg); + generic_sendmsg("P 0"); + return; + } + if(mpg123_meta_check(fr) & MPG123_NEW_ID3) generic_sendinfoid3(fr); + else generic_sendinfo(arg); + + if(htd.icy_name.fill) generic_sendmsg("I ICY-NAME: %s", htd.icy_name.p); + if(htd.icy_url.fill) generic_sendmsg("I ICY-URL: %s", htd.icy_url.p); + mode = state; + init = 1; + generic_sendmsg(mode == MODE_PAUSED ? "P 1" : "P 2"); +} + +int control_generic (mpg123_handle *fr) { struct timeval tv; fd_set fds; int n; - int mode = MODE_STOPPED; - int init = 0; /* ThOr */ char alive = 1; char silent = 0; - unsigned long frame_before = 0; /* responses to stderr for frontends needing audio data from stdout */ if (param.remote_err) @@ -146,35 +172,27 @@ int control_generic (struct frame *fr) if (mode == MODE_PLAYING) { n = select(32, &fds, NULL, NULL, &tv); if (n == 0) { - if (!read_frame(fr)) { + if (!play_frame()) + { mode = MODE_STOPPED; - flush_output(param.outmode, &ao); - rd->close(rd); + close_track(); generic_sendmsg("P 0"); continue; } - if(!play_frame(init,fr)) - { - generic_sendmsg("E play_frame failed"); - flush_output(param.outmode, &ao); - rd->close(rd); - mode = MODE_STOPPED; - generic_sendmsg("P 0"); - } if (init) { print_remote_header(fr); init = 0; } - if(!frame_before && (silent == 0)) + if(silent == 0) { generic_sendstat(fr); - if (icy.changed && icy.data) + if(mpg123_meta_check(fr) & MPG123_NEW_ICY) { - generic_sendmsg("I ICY-META: %s", icy.data); - icy.changed = 0; + char *meta; + if(mpg123_icy(fr, &meta) == MPG123_OK) + generic_sendmsg("I ICY-META: %s", meta != NULL ? meta : ""); } } - if(frame_before) --frame_before; } } else { @@ -247,7 +265,6 @@ int control_generic (struct frame *fr) { if (mode == MODE_PLAYING) { mode = MODE_PAUSED; - flush_output(param.outmode, &ao); buffer_stop(); generic_sendmsg("P 1"); } else { @@ -262,8 +279,7 @@ int control_generic (struct frame *fr) /* STOP */ if (!strcasecmp(comstr, "S") || !strcasecmp(comstr, "STOP")) { if (mode != MODE_STOPPED) { - flush_output(param.outmode, &ao); - rd->close(rd); + close_track(); mode = MODE_STOPPED; generic_sendmsg("P 0"); } @@ -293,6 +309,7 @@ int control_generic (struct frame *fr) generic_sendmsg("VOLUME/V : set volume in % (0..100...); float value"); generic_sendmsg("RVA off|(mix|radio)|(album|audiophile): set rva mode"); generic_sendmsg("EQ/E : set equalizer value for frequency band on channel"); + generic_sendmsg("SEEK/K |<+offset>|<-offset>: jump to output sample position or change position by offset"); generic_sendmsg("SEQ : simple eq setting..."); generic_sendmsg("SILENCE: be silent during playback (meaning silence in text form)"); generic_sendmsg("meaning of the @S stream info:"); @@ -310,30 +327,20 @@ int control_generic (struct frame *fr) { /* Simple EQ: SEQ */ if (!strcasecmp(cmd, "SEQ")) { - real b,m,t; + double b,m,t; int cn; - have_eq_settings = TRUE; - if(sscanf(arg, REAL_SCANF" "REAL_SCANF" "REAL_SCANF, &b, &m, &t) == 3) + if(sscanf(arg, "%lf %lf %lf", &b, &m, &t) == 3) { - /* very raw line */ + /* Consider adding mpg123_seq()... but also, on could define a nicer courve for that. */ if ((t >= 0) && (t <= 3)) - for(cn=0; cn < 1; ++cn) - { - equalizer[0][cn] = b; - equalizer[1][cn] = b; - } + for(cn=0; cn < 1; ++cn) mpg123_eq(fr, MPG123_LEFT|MPG123_RIGHT, cn, b); + if ((m >= 0) && (m <= 3)) - for(cn=1; cn < 2; ++cn) - { - equalizer[0][cn] = m; - equalizer[1][cn] = m; - } + for(cn=1; cn < 2; ++cn) mpg123_eq(fr, MPG123_LEFT|MPG123_RIGHT, cn, m); + if ((b >= 0) && (b <= 3)) - for(cn=2; cn < 32; ++cn) - { - equalizer[0][cn] = t; - equalizer[1][cn] = t; - } + for(cn=2; cn < 32; ++cn) mpg123_eq(fr, MPG123_LEFT|MPG123_RIGHT, cn, t); + generic_sendmsg("bass: %f mid: %f treble: %f", b, m, t); } else generic_sendmsg("E invalid arguments for SEQ: %s", arg); @@ -342,25 +349,41 @@ int control_generic (struct frame *fr) /* Equalizer control :) (JMG) */ if (!strcasecmp(cmd, "E") || !strcasecmp(cmd, "EQ")) { - real e; /* ThOr: equalizer is of type real... whatever that is */ + double e; /* ThOr: equalizer is of type real... whatever that is */ int c, v; - have_eq_settings = TRUE; /*generic_sendmsg("%s",updown);*/ - if(sscanf(arg, "%i %i "REAL_SCANF, &c, &v, &e) == 3) + if(sscanf(arg, "%i %i %lf", &c, &v, &e) == 3) { - equalizer[c][v] = e; - generic_sendmsg("%i : %i : "REAL_PRINTF, c, v, e); + mpg123_eq(fr, c, v, e); + generic_sendmsg("%i : %i : %f", c, v, e); } else generic_sendmsg("E invalid arguments for EQ: %s", arg); continue; } + /* SEEK to a sample offset */ + if(!strcasecmp(cmd, "K") || !strcasecmp(cmd, "SEEK")) + { + off_t soff; + char *spos = arg; + int whence = SEEK_SET; + if(!spos || (mode == MODE_STOPPED)) continue; + + soff = atol(spos); + if(spos[0] == '-' || spos[0] == '+') whence = SEEK_CUR; + if(0 > (soff = mpg123_seek(fr, soff, whence))) + { + generic_sendmsg("E Error while seeking: %s", mpg123_strerror(fr)); + mpg123_seek(fr, 0, SEEK_SET); + } + generic_sendmsg("K %li", (long)mpg123_tell(fr)); + continue; + } /* JUMP */ if (!strcasecmp(cmd, "J") || !strcasecmp(cmd, "JUMP")) { char *spos; - long offset; + off_t offset; double secs; - flush_output(param.outmode, &ao); spos = arg; if (!spos) @@ -368,39 +391,20 @@ int control_generic (struct frame *fr) if (mode == MODE_STOPPED) continue; - if(spos[strlen(spos)-1] == 's' && sscanf(arg, "%lf", &secs) == 1) offset = time_to_frame(fr, secs); + if(spos[strlen(spos)-1] == 's' && sscanf(arg, "%lf", &secs) == 1) offset = mpg123_timeframe(fr, secs); else offset = atol(spos); /* totally replaced that stuff - it never fully worked a bit usure about why +pos -> spos+1 earlier... */ - if (spos[0] == '-' || spos[0] == '+') - offset += frame_before; - else - offset -= fr->num; - - /* ah, this offset stuff is twisted - I want absolute numbers */ - #ifdef GAPLESS - if(param.gapless && (fr->lay == 3) && (mode == MODE_PAUSED)) - { - if(fr->num+offset > 0) - { - --offset; - frame_before = 1; - if(fr->num+offset > 0) - { - --offset; - ++frame_before; - } - } - else frame_before = 0; - } - #endif - if(rd->back_frame(rd, fr, -offset)) + if (spos[0] == '-' || spos[0] == '+') offset += framenum; + + if(0 > (framenum = mpg123_seek_frame(fr, offset, SEEK_SET))) { generic_sendmsg("E Error while seeking"); - rd->rewind(rd); - fr->num = 0; + mpg123_seek_frame(fr, 0, SEEK_SET); } + if(param.usebuffer) buffer_resync(); +<<<<<<< .working #ifdef GAPLESS if(param.gapless && (fr->lay == 3)) { @@ -411,80 +415,38 @@ int control_generic (struct frame *fr) #endif generic_sendmsg("J %d", fr->num+frame_before); +======= + generic_sendmsg("J %d", framenum); +>>>>>>> .merge-right.r998 continue; } /* VOLUME in percent */ if(!strcasecmp(cmd, "V") || !strcasecmp(cmd, "VOLUME")) { - do_volume(atof(arg)/100); - generic_sendmsg("V %f%%", outscale / (double) MAXOUTBURST * 100); + double v; + mpg123_volume(fr, atof(arg)/100); + mpg123_getvolume(fr, &v, NULL, NULL); /* Necessary? */ + generic_sendmsg("V %f%%", v * 100); continue; } /* RVA mode */ if(!strcasecmp(cmd, "RVA")) { - if(!strcasecmp(arg, "off")) param.rva = RVA_OFF; - else if(!strcasecmp(arg, "mix") || !strcasecmp(arg, "radio")) param.rva = RVA_MIX; - else if(!strcasecmp(arg, "album") || !strcasecmp(arg, "audiophile")) param.rva = RVA_ALBUM; - do_rva(); + if(!strcasecmp(arg, "off")) param.rva = MPG123_RVA_OFF; + else if(!strcasecmp(arg, "mix") || !strcasecmp(arg, "radio")) param.rva = MPG123_RVA_MIX; + else if(!strcasecmp(arg, "album") || !strcasecmp(arg, "audiophile")) param.rva = MPG123_RVA_ALBUM; + mpg123_volume(fr, -1); generic_sendmsg("RVA %s", rva_name[param.rva]); continue; } /* LOAD - actually play */ - if (!strcasecmp(cmd, "L") || !strcasecmp(cmd, "LOAD")) { - #ifdef GAPLESS - frame_before = 0; - #endif - if (mode != MODE_STOPPED) { - rd->close(rd); - mode = MODE_STOPPED; - } - if( open_stream(arg, -1) < 0 ){ - generic_sendmsg("E Error opening stream: %s", arg); - generic_sendmsg("P 0"); - continue; - } - if (rd && rd->flags & READER_ID3TAG) - generic_sendinfoid3((char *)rd->id3buf); - else - generic_sendinfo(arg); - - if (icy.name.fill) generic_sendmsg("I ICY-NAME: %s", icy.name.p); - if (icy.url.fill) generic_sendmsg("I ICY-URL: %s", icy.url.p); - mode = MODE_PLAYING; - init = 1; - read_frame_init(fr); - generic_sendmsg("P 2"); - continue; - } + if (!strcasecmp(cmd, "L") || !strcasecmp(cmd, "LOAD")){ generic_load(fr, arg, MODE_PLAYING); continue; } /* LOADPAUSED */ - if (!strcasecmp(cmd, "LP") || !strcasecmp(cmd, "LOADPAUSED")) { - #ifdef GAPLESS - frame_before = 0; - #endif - if (mode != MODE_STOPPED) { - rd->close(rd); - mode = MODE_STOPPED; - } - if( open_stream(arg, -1) < 0 ){ - generic_sendmsg("E Error opening stream: %s", arg); - generic_sendmsg("P 0"); - continue; - } - if (rd && rd->flags & READER_ID3TAG) - generic_sendinfoid3((char *)rd->id3buf); - else - generic_sendinfo(arg); - mode = MODE_PAUSED; - init = 1; - read_frame_init(fr); - generic_sendmsg("P 1"); - continue; - } + if (!strcasecmp(cmd, "LP") || !strcasecmp(cmd, "LOADPAUSED")){ generic_load(fr, arg, MODE_PAUSED); continue; } /* no command matched */ generic_sendmsg("E Unknown command: %s", cmd); /* unknown command */ @@ -519,11 +481,6 @@ int control_generic (struct frame *fr) xfermem_done_writer(buffermem); waitpid(buffer_pid, NULL, 0); xfermem_done(buffermem); - } else { -#endif - flush_output(param.outmode, &ao); - free(pcm_sample); -#ifndef NOXFERMEM } #endif if (param.outmode == DECODE_AUDIO) diff --git a/src/dct36_3dnow.S b/src/dct36_3dnow.S deleted file mode 100644 index cf566eeb..00000000 --- a/src/dct36_3dnow.S +++ /dev/null @@ -1,503 +0,0 @@ -/* - dct64_3dnow.s: Replacement of dct36() with AMD's 3DNow! SIMD operations support - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Syuuhei Kashiyama - - This code based 'dct36_3dnow.s' by Syuuhei Kashiyama - ,only two types of changes have been made: - - - remove PREFETCH instruction for speedup - - change function name for support 3DNow! automatic detect - - You can find Kashiyama's original 3dnow! support patch - (for mpg123-0.59o) at - http://user.ecc.u-tokyo.ac.jp/~g810370/linux-simd/ (Japanese). - - by KIMURA Takuhiro - until 31.Mar.1999 - - after 1.Apr.1999 - - Replacement of dct36() with AMD's 3DNow! SIMD operations support - - Syuuhei Kashiyama - - The author of this program disclaim whole expressed or implied - warranties with regard to this program, and in no event shall the - author of this program liable to whatever resulted from the use of - this program. Use it at your own risk. -*/ - -#include "mangle.h" - - .globl ASM_NAME(dct36_3dnow) -/* .type ASM_NAME(dct36_3dnow),@function */ -ASM_NAME(dct36_3dnow): - pushl %ebp - movl %esp,%ebp - subl $120,%esp - pushl %esi - pushl %ebx - movl 8(%ebp),%eax - movl 12(%ebp),%esi - movl 16(%ebp),%ecx - movl 20(%ebp),%edx - movl 24(%ebp),%ebx - leal -128(%ebp),%esp - - femms - movq (%eax),%mm0 - movq 4(%eax),%mm1 - pfadd %mm1,%mm0 - movq %mm0,4(%eax) - psrlq $32,%mm1 - movq 12(%eax),%mm2 - punpckldq %mm2,%mm1 - pfadd %mm2,%mm1 - movq %mm1,12(%eax) - psrlq $32,%mm2 - movq 20(%eax),%mm3 - punpckldq %mm3,%mm2 - pfadd %mm3,%mm2 - movq %mm2,20(%eax) - psrlq $32,%mm3 - movq 28(%eax),%mm4 - punpckldq %mm4,%mm3 - pfadd %mm4,%mm3 - movq %mm3,28(%eax) - psrlq $32,%mm4 - movq 36(%eax),%mm5 - punpckldq %mm5,%mm4 - pfadd %mm5,%mm4 - movq %mm4,36(%eax) - psrlq $32,%mm5 - movq 44(%eax),%mm6 - punpckldq %mm6,%mm5 - pfadd %mm6,%mm5 - movq %mm5,44(%eax) - psrlq $32,%mm6 - movq 52(%eax),%mm7 - punpckldq %mm7,%mm6 - pfadd %mm7,%mm6 - movq %mm6,52(%eax) - psrlq $32,%mm7 - movq 60(%eax),%mm0 - punpckldq %mm0,%mm7 - pfadd %mm0,%mm7 - movq %mm7,60(%eax) - psrlq $32,%mm0 - movd 68(%eax),%mm1 - pfadd %mm1,%mm0 - movd %mm0,68(%eax) - movd 4(%eax),%mm0 - movd 12(%eax),%mm1 - punpckldq %mm1,%mm0 - punpckldq 20(%eax),%mm1 - pfadd %mm1,%mm0 - movd %mm0,12(%eax) - psrlq $32,%mm0 - movd %mm0,20(%eax) - psrlq $32,%mm1 - movd 28(%eax),%mm2 - punpckldq %mm2,%mm1 - punpckldq 36(%eax),%mm2 - pfadd %mm2,%mm1 - movd %mm1,28(%eax) - psrlq $32,%mm1 - movd %mm1,36(%eax) - psrlq $32,%mm2 - movd 44(%eax),%mm3 - punpckldq %mm3,%mm2 - punpckldq 52(%eax),%mm3 - pfadd %mm3,%mm2 - movd %mm2,44(%eax) - psrlq $32,%mm2 - movd %mm2,52(%eax) - psrlq $32,%mm3 - movd 60(%eax),%mm4 - punpckldq %mm4,%mm3 - punpckldq 68(%eax),%mm4 - pfadd %mm4,%mm3 - movd %mm3,60(%eax) - psrlq $32,%mm3 - movd %mm3,68(%eax) - - movq 24(%eax),%mm0 - movq 48(%eax),%mm1 - movd ASM_NAME(COS9)+12,%mm2 - punpckldq %mm2,%mm2 - movd ASM_NAME(COS9)+24,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm2,%mm0 - pfmul %mm3,%mm1 - pushl %eax - movl $1,%eax - movd %eax,%mm7 - pi2fd %mm7,%mm7 - popl %eax - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+4,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfadd %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+20,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+28,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+0,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 108(%edx),%mm6 - punpckldq 104(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,36(%ecx) - psrlq $32,%mm5 - movd %mm5,32(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 32(%edx),%mm6 - punpckldq 36(%edx),%mm6 - pfmul %mm6,%mm5 - movd 32(%esi),%mm6 - punpckldq 36(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,1024(%ebx) - psrlq $32,%mm5 - movd %mm5,1152(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+32,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 140(%edx),%mm6 - punpckldq 72(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,68(%ecx) - psrlq $32,%mm5 - movd %mm5,0(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 0(%edx),%mm6 - punpckldq 68(%edx),%mm6 - pfmul %mm6,%mm5 - movd 0(%esi),%mm6 - punpckldq 68(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,0(%ebx) - psrlq $32,%mm5 - movd %mm5,2176(%ebx) - movq 8(%eax),%mm2 - movq 40(%eax),%mm3 - pfsub %mm3,%mm2 - movq 56(%eax),%mm3 - pfsub %mm3,%mm2 - movd ASM_NAME(COS9)+12,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - movq 16(%eax),%mm3 - movq 32(%eax),%mm4 - pfsub %mm4,%mm3 - movq 64(%eax),%mm4 - pfsub %mm4,%mm3 - movd ASM_NAME(COS9)+24,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - movq 48(%eax),%mm4 - pfsub %mm4,%mm3 - movq (%eax),%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+4,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 112(%edx),%mm6 - punpckldq 100(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,40(%ecx) - psrlq $32,%mm5 - movd %mm5,28(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 28(%edx),%mm6 - punpckldq 40(%edx),%mm6 - pfmul %mm6,%mm5 - movd 28(%esi),%mm6 - punpckldq 40(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,896(%ebx) - psrlq $32,%mm5 - movd %mm5,1280(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+28,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 136(%edx),%mm6 - punpckldq 76(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,64(%ecx) - psrlq $32,%mm5 - movd %mm5,4(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 4(%edx),%mm6 - punpckldq 64(%edx),%mm6 - pfmul %mm6,%mm5 - movd 4(%esi),%mm6 - punpckldq 64(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,128(%ebx) - psrlq $32,%mm5 - movd %mm5,2048(%ebx) - - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+20,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfsub %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+28,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfsub %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+4,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+8,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 116(%edx),%mm6 - punpckldq 96(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,44(%ecx) - psrlq $32,%mm5 - movd %mm5,24(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 24(%edx),%mm6 - punpckldq 44(%edx),%mm6 - pfmul %mm6,%mm5 - movd 24(%esi),%mm6 - punpckldq 44(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,768(%ebx) - psrlq $32,%mm5 - movd %mm5,1408(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+24,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 132(%edx),%mm6 - punpckldq 80(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,60(%ecx) - psrlq $32,%mm5 - movd %mm5,8(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 8(%edx),%mm6 - punpckldq 60(%edx),%mm6 - pfmul %mm6,%mm5 - movd 8(%esi),%mm6 - punpckldq 60(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,256(%ebx) - psrlq $32,%mm5 - movd %mm5,1920(%ebx) - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+28,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfsub %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+4,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+20,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfsub %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+12,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 120(%edx),%mm6 - punpckldq 92(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,48(%ecx) - psrlq $32,%mm5 - movd %mm5,20(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 20(%edx),%mm6 - punpckldq 48(%edx),%mm6 - pfmul %mm6,%mm5 - movd 20(%esi),%mm6 - punpckldq 48(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,640(%ebx) - psrlq $32,%mm5 - movd %mm5,1536(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+20,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 128(%edx),%mm6 - punpckldq 84(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,56(%ecx) - psrlq $32,%mm5 - movd %mm5,12(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 12(%edx),%mm6 - punpckldq 56(%edx),%mm6 - pfmul %mm6,%mm5 - movd 12(%esi),%mm6 - punpckldq 56(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,384(%ebx) - psrlq $32,%mm5 - movd %mm5,1792(%ebx) - - movq (%eax),%mm4 - movq 16(%eax),%mm3 - pfsub %mm3,%mm4 - movq 32(%eax),%mm3 - pfadd %mm3,%mm4 - movq 48(%eax),%mm3 - pfsub %mm3,%mm4 - movq 64(%eax),%mm3 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+16,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 124(%edx),%mm6 - punpckldq 88(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,52(%ecx) - psrlq $32,%mm5 - movd %mm5,16(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 16(%edx),%mm6 - punpckldq 52(%edx),%mm6 - pfmul %mm6,%mm5 - movd 16(%esi),%mm6 - punpckldq 52(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,512(%ebx) - psrlq $32,%mm5 - movd %mm5,1664(%ebx) - - femms - popl %ebx - popl %esi - movl %ebp,%esp - popl %ebp - ret diff --git a/src/dct36_3dnowext.S b/src/dct36_3dnowext.S deleted file mode 100644 index 168db254..00000000 --- a/src/dct36_3dnowext.S +++ /dev/null @@ -1,510 +0,0 @@ -/* - dct36_3dnowext: extended 3DNow optimized DCT36 - - copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - - Transformed back into standalone asm, with help of - gcc -S -DHAVE_CONFIG_H -I. -march=k6-3 -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o dct36_3dnowext.{S,c} - - MPlayer comment follows. -*/ - -/* - * dct36_3dnow.c - 3DNow! optimized dct36() - * - * This code based 'dct36_3dnow.s' by Syuuhei Kashiyama - * , only two types of changes have been made: - * - * - removed PREFETCH instruction for speedup - * - changed function name for support 3DNow! automatic detection - * - * You can find Kashiyama's original 3dnow! support patch - * (for mpg123-0.59o) at - * http://user.ecc.u-tokyo.ac.jp/~g810370/linux-simd/ (Japanese). - * - * by KIMURA Takuhiro - until 31.Mar.1999 - * - after 1.Apr.1999 - * - * Modified for use with MPlayer, for details see the changelog at - * http://svn.mplayerhq.hu/mplayer/trunk/ - * $Id: dct36_3dnow.c 18786 2006-06-22 13:34:00Z diego $ - * - * Original disclaimer: - * The author of this program disclaim whole expressed or implied - * warranties with regard to this program, and in no event shall the - * author of this program liable to whatever resulted from the use of - * this program. Use it at your own risk. - * - * 2003/06/21: Moved to GCC inline assembly - Alex Beregszaszi - */ - -#include "mangle.h" - - .text - ALIGN32,,31 -.globl ASM_NAME(dct36_3dnowext) - /* .type ASM_NAME(dct36_3dnowext), @function */ -ASM_NAME(dct36_3dnowext): - pushl %ebp - movl %esp, %ebp - pushl %esi - pushl %ebx - movl 8(%ebp), %eax - movl 12(%ebp), %esi - movl 16(%ebp), %ecx - movl 20(%ebp), %edx - movl 24(%ebp), %ebx -#APP - movq (%eax),%mm0 - movq 4(%eax),%mm1 - pfadd %mm1,%mm0 - movq %mm0,4(%eax) - psrlq $32,%mm1 - movq 12(%eax),%mm2 - punpckldq %mm2,%mm1 - pfadd %mm2,%mm1 - movq %mm1,12(%eax) - psrlq $32,%mm2 - movq 20(%eax),%mm3 - punpckldq %mm3,%mm2 - pfadd %mm3,%mm2 - movq %mm2,20(%eax) - psrlq $32,%mm3 - movq 28(%eax),%mm4 - punpckldq %mm4,%mm3 - pfadd %mm4,%mm3 - movq %mm3,28(%eax) - psrlq $32,%mm4 - movq 36(%eax),%mm5 - punpckldq %mm5,%mm4 - pfadd %mm5,%mm4 - movq %mm4,36(%eax) - psrlq $32,%mm5 - movq 44(%eax),%mm6 - punpckldq %mm6,%mm5 - pfadd %mm6,%mm5 - movq %mm5,44(%eax) - psrlq $32,%mm6 - movq 52(%eax),%mm7 - punpckldq %mm7,%mm6 - pfadd %mm7,%mm6 - movq %mm6,52(%eax) - psrlq $32,%mm7 - movq 60(%eax),%mm0 - punpckldq %mm0,%mm7 - pfadd %mm0,%mm7 - movq %mm7,60(%eax) - psrlq $32,%mm0 - movd 68(%eax),%mm1 - pfadd %mm1,%mm0 - movd %mm0,68(%eax) - movd 4(%eax),%mm0 - movd 12(%eax),%mm1 - punpckldq %mm1,%mm0 - punpckldq 20(%eax),%mm1 - pfadd %mm1,%mm0 - movd %mm0,12(%eax) - psrlq $32,%mm0 - movd %mm0,20(%eax) - psrlq $32,%mm1 - movd 28(%eax),%mm2 - punpckldq %mm2,%mm1 - punpckldq 36(%eax),%mm2 - pfadd %mm2,%mm1 - movd %mm1,28(%eax) - psrlq $32,%mm1 - movd %mm1,36(%eax) - psrlq $32,%mm2 - movd 44(%eax),%mm3 - punpckldq %mm3,%mm2 - punpckldq 52(%eax),%mm3 - pfadd %mm3,%mm2 - movd %mm2,44(%eax) - psrlq $32,%mm2 - movd %mm2,52(%eax) - psrlq $32,%mm3 - movd 60(%eax),%mm4 - punpckldq %mm4,%mm3 - punpckldq 68(%eax),%mm4 - pfadd %mm4,%mm3 - movd %mm3,60(%eax) - psrlq $32,%mm3 - movd %mm3,68(%eax) - movq 24(%eax),%mm0 - movq 48(%eax),%mm1 - movd ASM_NAME(COS9)+12,%mm2 - punpckldq %mm2,%mm2 - movd ASM_NAME(COS9)+24,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm2,%mm0 - pfmul %mm3,%mm1 - pushl %eax - movl $1,%eax - movd %eax,%mm7 - pi2fd %mm7,%mm7 - popl %eax - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+4,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfadd %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+20,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+28,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+0,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 108(%edx),%mm6 - punpckldq 104(%edx),%mm6 - pfmul %mm6,%mm5 - pswapd %mm5,%mm5 - movq %mm5,32(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 32(%edx),%mm6 - punpckldq 36(%edx),%mm6 - pfmul %mm6,%mm5 - movd 32(%esi),%mm6 - punpckldq 36(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,1024(%ebx) - psrlq $32,%mm5 - movd %mm5,1152(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+32,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 140(%edx),%mm6 - punpckldq 72(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,68(%ecx) - psrlq $32,%mm5 - movd %mm5,0(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 0(%edx),%mm6 - punpckldq 68(%edx),%mm6 - pfmul %mm6,%mm5 - movd 0(%esi),%mm6 - punpckldq 68(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,0(%ebx) - psrlq $32,%mm5 - movd %mm5,2176(%ebx) - movq 8(%eax),%mm2 - movq 40(%eax),%mm3 - pfsub %mm3,%mm2 - movq 56(%eax),%mm3 - pfsub %mm3,%mm2 - movd ASM_NAME(COS9)+12,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - movq 16(%eax),%mm3 - movq 32(%eax),%mm4 - pfsub %mm4,%mm3 - movq 64(%eax),%mm4 - pfsub %mm4,%mm3 - movd ASM_NAME(COS9)+24,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - movq 48(%eax),%mm4 - pfsub %mm4,%mm3 - movq (%eax),%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+4,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 112(%edx),%mm6 - punpckldq 100(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,40(%ecx) - psrlq $32,%mm5 - movd %mm5,28(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 28(%edx),%mm6 - punpckldq 40(%edx),%mm6 - pfmul %mm6,%mm5 - movd 28(%esi),%mm6 - punpckldq 40(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,896(%ebx) - psrlq $32,%mm5 - movd %mm5,1280(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+28,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 136(%edx),%mm6 - punpckldq 76(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,64(%ecx) - psrlq $32,%mm5 - movd %mm5,4(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 4(%edx),%mm6 - punpckldq 64(%edx),%mm6 - pfmul %mm6,%mm5 - movd 4(%esi),%mm6 - punpckldq 64(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,128(%ebx) - psrlq $32,%mm5 - movd %mm5,2048(%ebx) - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+20,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfsub %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+28,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfsub %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+4,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+8,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 116(%edx),%mm6 - punpckldq 96(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,44(%ecx) - psrlq $32,%mm5 - movd %mm5,24(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 24(%edx),%mm6 - punpckldq 44(%edx),%mm6 - pfmul %mm6,%mm5 - movd 24(%esi),%mm6 - punpckldq 44(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,768(%ebx) - psrlq $32,%mm5 - movd %mm5,1408(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+24,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 132(%edx),%mm6 - punpckldq 80(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,60(%ecx) - psrlq $32,%mm5 - movd %mm5,8(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 8(%edx),%mm6 - punpckldq 60(%edx),%mm6 - pfmul %mm6,%mm5 - movd 8(%esi),%mm6 - punpckldq 60(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,256(%ebx) - psrlq $32,%mm5 - movd %mm5,1920(%ebx) - movq 8(%eax),%mm2 - movd ASM_NAME(COS9)+28,%mm3 - punpckldq %mm3,%mm3 - pfmul %mm3,%mm2 - pfsub %mm0,%mm2 - movq 40(%eax),%mm3 - movd ASM_NAME(COS9)+4,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfadd %mm3,%mm2 - movq 56(%eax),%mm3 - movd ASM_NAME(COS9)+20,%mm4 - punpckldq %mm4,%mm4 - pfmul %mm4,%mm3 - pfsub %mm3,%mm2 - movq (%eax),%mm3 - movq 16(%eax),%mm4 - movd ASM_NAME(COS9)+16,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq 32(%eax),%mm4 - movd ASM_NAME(COS9)+32,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfadd %mm4,%mm3 - pfadd %mm1,%mm3 - movq 64(%eax),%mm4 - movd ASM_NAME(COS9)+8,%mm5 - punpckldq %mm5,%mm5 - pfmul %mm5,%mm4 - pfsub %mm4,%mm3 - movq %mm2,%mm4 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+12,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 120(%edx),%mm6 - punpckldq 92(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,48(%ecx) - psrlq $32,%mm5 - movd %mm5,20(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 20(%edx),%mm6 - punpckldq 48(%edx),%mm6 - pfmul %mm6,%mm5 - movd 20(%esi),%mm6 - punpckldq 48(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,640(%ebx) - psrlq $32,%mm5 - movd %mm5,1536(%ebx) - movq %mm3,%mm4 - pfsub %mm2,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+20,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 128(%edx),%mm6 - punpckldq 84(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,56(%ecx) - psrlq $32,%mm5 - movd %mm5,12(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 12(%edx),%mm6 - punpckldq 56(%edx),%mm6 - pfmul %mm6,%mm5 - movd 12(%esi),%mm6 - punpckldq 56(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,384(%ebx) - psrlq $32,%mm5 - movd %mm5,1792(%ebx) - movq (%eax),%mm4 - movq 16(%eax),%mm3 - pfsub %mm3,%mm4 - movq 32(%eax),%mm3 - pfadd %mm3,%mm4 - movq 48(%eax),%mm3 - pfsub %mm3,%mm4 - movq 64(%eax),%mm3 - pfadd %mm3,%mm4 - movq %mm7,%mm5 - punpckldq ASM_NAME(tfcos36)+16,%mm5 - pfmul %mm5,%mm4 - movq %mm4,%mm5 - pfacc %mm5,%mm5 - movd 124(%edx),%mm6 - punpckldq 88(%edx),%mm6 - pfmul %mm6,%mm5 - movd %mm5,52(%ecx) - psrlq $32,%mm5 - movd %mm5,16(%ecx) - movq %mm4,%mm6 - punpckldq %mm6,%mm5 - pfsub %mm6,%mm5 - punpckhdq %mm5,%mm5 - movd 16(%edx),%mm6 - punpckldq 52(%edx),%mm6 - pfmul %mm6,%mm5 - movd 16(%esi),%mm6 - punpckldq 52(%esi),%mm6 - pfadd %mm6,%mm5 - movd %mm5,512(%ebx) - psrlq $32,%mm5 - movd %mm5,1664(%ebx) - femms - -#NO_APP - popl %ebx - popl %esi - leave - ret - /* .size ASM_NAME(dct36_3dnowext), .-ASM_NAME(dct36_3dnowext) */ diff --git a/src/dct64.c b/src/dct64.c deleted file mode 100644 index 92cba526..00000000 --- a/src/dct64.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - dct64.c: DCT64, the plain C version - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -/* - * Discrete Cosine Tansform (DCT) for subband synthesis - * - * -funroll-loops (for gcc) will remove the loops for better performance - * using loops in the source-code enhances readabillity - * - * - * TODO: write an optimized version for the down-sampling modes - * (in these modes the bands 16-31 (2:1) or 8-31 (4:1) are zero - */ - -#include "mpg123.h" - -void dct64(real *out0,real *out1,real *samples) -{ - real bufs[64]; - - { - register int i,j; - register real *b1,*b2,*bs,*costab; - - b1 = samples; - bs = bufs; - costab = pnts[0]+16; - b2 = b1 + 32; - - for(i=15;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=15;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), *--costab); - - b1 = bufs; - costab = pnts[1]+8; - b2 = b1 + 16; - - { - for(i=7;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=7;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), *--costab); - b2 += 32; - costab += 8; - for(i=7;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=7;i>=0;i--) - *bs++ = REAL_MUL((*b1++ - *--b2), *--costab); - b2 += 32; - } - - bs = bufs; - costab = pnts[2]; - b2 = b1 + 8; - - for(j=2;j;j--) - { - for(i=3;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=3;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), costab[i]); - b2 += 16; - for(i=3;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=3;i>=0;i--) - *bs++ = REAL_MUL((*b1++ - *--b2), costab[i]); - b2 += 16; - } - - b1 = bufs; - costab = pnts[3]; - b2 = b1 + 4; - - for(j=4;j;j--) - { - *bs++ = (*b1++ + *--b2); - *bs++ = (*b1++ + *--b2); - *bs++ = REAL_MUL((*--b2 - *b1++), costab[1]); - *bs++ = REAL_MUL((*--b2 - *b1++), costab[0]); - b2 += 8; - *bs++ = (*b1++ + *--b2); - *bs++ = (*b1++ + *--b2); - *bs++ = REAL_MUL((*b1++ - *--b2), costab[1]); - *bs++ = REAL_MUL((*b1++ - *--b2), costab[0]); - b2 += 8; - } - bs = bufs; - costab = pnts[4]; - - for(j=8;j;j--) - { - real v0,v1; - v0=*b1++; v1 = *b1++; - *bs++ = (v0 + v1); - *bs++ = REAL_MUL((v0 - v1), (*costab)); - v0=*b1++; v1 = *b1++; - *bs++ = (v0 + v1); - *bs++ = REAL_MUL((v1 - v0), (*costab)); - } - - } - - - { - register real *b1; - register int i; - - for(b1=bufs,i=8;i;i--,b1+=4) - b1[2] += b1[3]; - - for(b1=bufs,i=4;i;i--,b1+=8) - { - b1[4] += b1[6]; - b1[6] += b1[5]; - b1[5] += b1[7]; - } - - for(b1=bufs,i=2;i;i--,b1+=16) - { - b1[8] += b1[12]; - b1[12] += b1[10]; - b1[10] += b1[14]; - b1[14] += b1[9]; - b1[9] += b1[13]; - b1[13] += b1[11]; - b1[11] += b1[15]; - } - } - - - out0[0x10*16] = bufs[0]; - out0[0x10*15] = bufs[16+0] + bufs[16+8]; - out0[0x10*14] = bufs[8]; - out0[0x10*13] = bufs[16+8] + bufs[16+4]; - out0[0x10*12] = bufs[4]; - out0[0x10*11] = bufs[16+4] + bufs[16+12]; - out0[0x10*10] = bufs[12]; - out0[0x10* 9] = bufs[16+12] + bufs[16+2]; - out0[0x10* 8] = bufs[2]; - out0[0x10* 7] = bufs[16+2] + bufs[16+10]; - out0[0x10* 6] = bufs[10]; - out0[0x10* 5] = bufs[16+10] + bufs[16+6]; - out0[0x10* 4] = bufs[6]; - out0[0x10* 3] = bufs[16+6] + bufs[16+14]; - out0[0x10* 2] = bufs[14]; - out0[0x10* 1] = bufs[16+14] + bufs[16+1]; - out0[0x10* 0] = bufs[1]; - - out1[0x10* 0] = bufs[1]; - out1[0x10* 1] = bufs[16+1] + bufs[16+9]; - out1[0x10* 2] = bufs[9]; - out1[0x10* 3] = bufs[16+9] + bufs[16+5]; - out1[0x10* 4] = bufs[5]; - out1[0x10* 5] = bufs[16+5] + bufs[16+13]; - out1[0x10* 6] = bufs[13]; - out1[0x10* 7] = bufs[16+13] + bufs[16+3]; - out1[0x10* 8] = bufs[3]; - out1[0x10* 9] = bufs[16+3] + bufs[16+11]; - out1[0x10*10] = bufs[11]; - out1[0x10*11] = bufs[16+11] + bufs[16+7]; - out1[0x10*12] = bufs[7]; - out1[0x10*13] = bufs[16+7] + bufs[16+15]; - out1[0x10*14] = bufs[15]; - out1[0x10*15] = bufs[16+15]; - -} - - diff --git a/src/dct64_3dnow.S b/src/dct64_3dnow.S deleted file mode 100644 index 6f509daa..00000000 --- a/src/dct64_3dnow.S +++ /dev/null @@ -1,711 +0,0 @@ -/* - dct64_3dnow.s: Replacement of dct64() with AMD's 3DNow! SIMD operations support - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Syuuhei Kashiyama - - Original "license" statement: - The author of this program disclaim whole expressed or implied - warranties with regard to this program, and in no event shall the - author of this program liable to whatever resulted from the use of - this program. Use it at your own risk. -*/ - -#include "mangle.h" - - .globl ASM_NAME(dct64_3dnow) -/* .type ASM_NAME(dct64_3dnow),@function */ -ASM_NAME(dct64_3dnow): - subl $256,%esp - pushl %ebp - pushl %edi - pushl %esi - pushl %ebx - leal 16(%esp),%ebx - movl 284(%esp),%edi - movl 276(%esp),%ebp - movl 280(%esp),%edx - leal 128(%ebx),%esi - - /* femms */ - - /* 1 */ - movl ASM_NAME(pnts),%eax - movq 0(%edi),%mm0 - movq %mm0,%mm1 - movd 124(%edi),%mm2 - punpckldq 120(%edi),%mm2 - movq 0(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,0(%ebx) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,124(%ebx) - psrlq $32,%mm1 - movd %mm1,120(%ebx) - movq 8(%edi),%mm4 - movq %mm4,%mm5 - movd 116(%edi),%mm6 - punpckldq 112(%edi),%mm6 - movq 8(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,8(%ebx) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,116(%ebx) - psrlq $32,%mm5 - movd %mm5,112(%ebx) - movq 16(%edi),%mm0 - movq %mm0,%mm1 - movd 108(%edi),%mm2 - punpckldq 104(%edi),%mm2 - movq 16(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,16(%ebx) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,108(%ebx) - psrlq $32,%mm1 - movd %mm1,104(%ebx) - movq 24(%edi),%mm4 - movq %mm4,%mm5 - movd 100(%edi),%mm6 - punpckldq 96(%edi),%mm6 - movq 24(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,24(%ebx) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,100(%ebx) - psrlq $32,%mm5 - movd %mm5,96(%ebx) - movq 32(%edi),%mm0 - movq %mm0,%mm1 - movd 92(%edi),%mm2 - punpckldq 88(%edi),%mm2 - movq 32(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,32(%ebx) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,92(%ebx) - psrlq $32,%mm1 - movd %mm1,88(%ebx) - movq 40(%edi),%mm4 - movq %mm4,%mm5 - movd 84(%edi),%mm6 - punpckldq 80(%edi),%mm6 - movq 40(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,40(%ebx) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,84(%ebx) - psrlq $32,%mm5 - movd %mm5,80(%ebx) - movq 48(%edi),%mm0 - movq %mm0,%mm1 - movd 76(%edi),%mm2 - punpckldq 72(%edi),%mm2 - movq 48(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,48(%ebx) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,76(%ebx) - psrlq $32,%mm1 - movd %mm1,72(%ebx) - movq 56(%edi),%mm4 - movq %mm4,%mm5 - movd 68(%edi),%mm6 - punpckldq 64(%edi),%mm6 - movq 56(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,56(%ebx) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,68(%ebx) - psrlq $32,%mm5 - movd %mm5,64(%ebx) - - /* 2 */ - movl ASM_NAME(pnts)+4,%eax - /* 0,14 */ - movq 0(%ebx),%mm0 - movq %mm0,%mm1 - movd 60(%ebx),%mm2 - punpckldq 56(%ebx),%mm2 - movq 0(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,0(%esi) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,60(%esi) - psrlq $32,%mm1 - movd %mm1,56(%esi) - /* 16,30 */ - movq 64(%ebx),%mm0 - movq %mm0,%mm1 - movd 124(%ebx),%mm2 - punpckldq 120(%ebx),%mm2 - pfadd %mm2,%mm0 - movq %mm0,64(%esi) - pfsubr %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,124(%esi) - psrlq $32,%mm1 - movd %mm1,120(%esi) - /* 2,12 */ - movq 8(%ebx),%mm4 - movq %mm4,%mm5 - movd 52(%ebx),%mm6 - punpckldq 48(%ebx),%mm6 - movq 8(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,8(%esi) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,52(%esi) - psrlq $32,%mm5 - movd %mm5,48(%esi) - /* 18,28 */ - movq 72(%ebx),%mm4 - movq %mm4,%mm5 - movd 116(%ebx),%mm6 - punpckldq 112(%ebx),%mm6 - pfadd %mm6,%mm4 - movq %mm4,72(%esi) - pfsubr %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,116(%esi) - psrlq $32,%mm5 - movd %mm5,112(%esi) - /* 4,10 */ - movq 16(%ebx),%mm0 - movq %mm0,%mm1 - movd 44(%ebx),%mm2 - punpckldq 40(%ebx),%mm2 - movq 16(%eax),%mm3 - pfadd %mm2,%mm0 - movq %mm0,16(%esi) - pfsub %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,44(%esi) - psrlq $32,%mm1 - movd %mm1,40(%esi) - /* 20,26 */ - movq 80(%ebx),%mm0 - movq %mm0,%mm1 - movd 108(%ebx),%mm2 - punpckldq 104(%ebx),%mm2 - pfadd %mm2,%mm0 - movq %mm0,80(%esi) - pfsubr %mm2,%mm1 - pfmul %mm3,%mm1 - movd %mm1,108(%esi) - psrlq $32,%mm1 - movd %mm1,104(%esi) - /* 6,8 */ - movq 24(%ebx),%mm4 - movq %mm4,%mm5 - movd 36(%ebx),%mm6 - punpckldq 32(%ebx),%mm6 - movq 24(%eax),%mm7 - pfadd %mm6,%mm4 - movq %mm4,24(%esi) - pfsub %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,36(%esi) - psrlq $32,%mm5 - movd %mm5,32(%esi) - /* 22,24 */ - movq 88(%ebx),%mm4 - movq %mm4,%mm5 - movd 100(%ebx),%mm6 - punpckldq 96(%ebx),%mm6 - pfadd %mm6,%mm4 - movq %mm4,88(%esi) - pfsubr %mm6,%mm5 - pfmul %mm7,%mm5 - movd %mm5,100(%esi) - psrlq $32,%mm5 - movd %mm5,96(%esi) - - /* 3 */ - movl ASM_NAME(pnts)+8,%eax - movq 0(%eax),%mm0 - movq 8(%eax),%mm1 - /* 0,6 */ - movq 0(%esi),%mm2 - movq %mm2,%mm3 - movd 28(%esi),%mm4 - punpckldq 24(%esi),%mm4 - pfadd %mm4,%mm2 - pfsub %mm4,%mm3 - pfmul %mm0,%mm3 - movq %mm2,0(%ebx) - movd %mm3,28(%ebx) - psrlq $32,%mm3 - movd %mm3,24(%ebx) - /* 2,4 */ - movq 8(%esi),%mm5 - movq %mm5,%mm6 - movd 20(%esi),%mm7 - punpckldq 16(%esi),%mm7 - pfadd %mm7,%mm5 - pfsub %mm7,%mm6 - pfmul %mm1,%mm6 - movq %mm5,8(%ebx) - movd %mm6,20(%ebx) - psrlq $32,%mm6 - movd %mm6,16(%ebx) - /* 8,14 */ - movq 32(%esi),%mm2 - movq %mm2,%mm3 - movd 60(%esi),%mm4 - punpckldq 56(%esi),%mm4 - pfadd %mm4,%mm2 - pfsubr %mm4,%mm3 - pfmul %mm0,%mm3 - movq %mm2,32(%ebx) - movd %mm3,60(%ebx) - psrlq $32,%mm3 - movd %mm3,56(%ebx) - /* 10,12 */ - movq 40(%esi),%mm5 - movq %mm5,%mm6 - movd 52(%esi),%mm7 - punpckldq 48(%esi),%mm7 - pfadd %mm7,%mm5 - pfsubr %mm7,%mm6 - pfmul %mm1,%mm6 - movq %mm5,40(%ebx) - movd %mm6,52(%ebx) - psrlq $32,%mm6 - movd %mm6,48(%ebx) - /* 16,22 */ - movq 64(%esi),%mm2 - movq %mm2,%mm3 - movd 92(%esi),%mm4 - punpckldq 88(%esi),%mm4 - pfadd %mm4,%mm2 - pfsub %mm4,%mm3 - pfmul %mm0,%mm3 - movq %mm2,64(%ebx) - movd %mm3,92(%ebx) - psrlq $32,%mm3 - movd %mm3,88(%ebx) - /* 18,20 */ - movq 72(%esi),%mm5 - movq %mm5,%mm6 - movd 84(%esi),%mm7 - punpckldq 80(%esi),%mm7 - pfadd %mm7,%mm5 - pfsub %mm7,%mm6 - pfmul %mm1,%mm6 - movq %mm5,72(%ebx) - movd %mm6,84(%ebx) - psrlq $32,%mm6 - movd %mm6,80(%ebx) - /* 24,30 */ - movq 96(%esi),%mm2 - movq %mm2,%mm3 - movd 124(%esi),%mm4 - punpckldq 120(%esi),%mm4 - pfadd %mm4,%mm2 - pfsubr %mm4,%mm3 - pfmul %mm0,%mm3 - movq %mm2,96(%ebx) - movd %mm3,124(%ebx) - psrlq $32,%mm3 - movd %mm3,120(%ebx) - /* 26,28 */ - movq 104(%esi),%mm5 - movq %mm5,%mm6 - movd 116(%esi),%mm7 - punpckldq 112(%esi),%mm7 - pfadd %mm7,%mm5 - pfsubr %mm7,%mm6 - pfmul %mm1,%mm6 - movq %mm5,104(%ebx) - movd %mm6,116(%ebx) - psrlq $32,%mm6 - movd %mm6,112(%ebx) - - /* 4 */ - movl ASM_NAME(pnts)+12,%eax - movq 0(%eax),%mm0 - /* 0 */ - movq 0(%ebx),%mm1 - movq %mm1,%mm2 - movd 12(%ebx),%mm3 - punpckldq 8(%ebx),%mm3 - pfadd %mm3,%mm1 - pfsub %mm3,%mm2 - pfmul %mm0,%mm2 - movq %mm1,0(%esi) - movd %mm2,12(%esi) - psrlq $32,%mm2 - movd %mm2,8(%esi) - /* 4 */ - movq 16(%ebx),%mm4 - movq %mm4,%mm5 - movd 28(%ebx),%mm6 - punpckldq 24(%ebx),%mm6 - pfadd %mm6,%mm4 - pfsubr %mm6,%mm5 - pfmul %mm0,%mm5 - movq %mm4,16(%esi) - movd %mm5,28(%esi) - psrlq $32,%mm5 - movd %mm5,24(%esi) - /* 8 */ - movq 32(%ebx),%mm1 - movq %mm1,%mm2 - movd 44(%ebx),%mm3 - punpckldq 40(%ebx),%mm3 - pfadd %mm3,%mm1 - pfsub %mm3,%mm2 - pfmul %mm0,%mm2 - movq %mm1,32(%esi) - movd %mm2,44(%esi) - psrlq $32,%mm2 - movd %mm2,40(%esi) - /* 12 */ - movq 48(%ebx),%mm4 - movq %mm4,%mm5 - movd 60(%ebx),%mm6 - punpckldq 56(%ebx),%mm6 - pfadd %mm6,%mm4 - pfsubr %mm6,%mm5 - pfmul %mm0,%mm5 - movq %mm4,48(%esi) - movd %mm5,60(%esi) - psrlq $32,%mm5 - movd %mm5,56(%esi) - /* 16 */ - movq 64(%ebx),%mm1 - movq %mm1,%mm2 - movd 76(%ebx),%mm3 - punpckldq 72(%ebx),%mm3 - pfadd %mm3,%mm1 - pfsub %mm3,%mm2 - pfmul %mm0,%mm2 - movq %mm1,64(%esi) - movd %mm2,76(%esi) - psrlq $32,%mm2 - movd %mm2,72(%esi) - /* 20 */ - movq 80(%ebx),%mm4 - movq %mm4,%mm5 - movd 92(%ebx),%mm6 - punpckldq 88(%ebx),%mm6 - pfadd %mm6,%mm4 - pfsubr %mm6,%mm5 - pfmul %mm0,%mm5 - movq %mm4,80(%esi) - movd %mm5,92(%esi) - psrlq $32,%mm5 - movd %mm5,88(%esi) - /* 24 */ - movq 96(%ebx),%mm1 - movq %mm1,%mm2 - movd 108(%ebx),%mm3 - punpckldq 104(%ebx),%mm3 - pfadd %mm3,%mm1 - pfsub %mm3,%mm2 - pfmul %mm0,%mm2 - movq %mm1,96(%esi) - movd %mm2,108(%esi) - psrlq $32,%mm2 - movd %mm2,104(%esi) - /* 28 */ - movq 112(%ebx),%mm4 - movq %mm4,%mm5 - movd 124(%ebx),%mm6 - punpckldq 120(%ebx),%mm6 - pfadd %mm6,%mm4 - pfsubr %mm6,%mm5 - pfmul %mm0,%mm5 - movq %mm4,112(%esi) - movd %mm5,124(%esi) - psrlq $32,%mm5 - movd %mm5,120(%esi) - - /* 5 */ - movl $-1,%eax - movd %eax,%mm1 - movl $1,%eax - /* L | H */ - movd %eax,%mm0 - punpckldq %mm1,%mm0 - /* 1.0 | -1.0 */ - pi2fd %mm0,%mm0 - movd %eax,%mm1 - pi2fd %mm1,%mm1 - movl ASM_NAME(pnts)+16,%eax - movd 0(%eax),%mm2 - /* 1.0 | cos0 */ - punpckldq %mm2,%mm1 - /* 0 */ - movq 0(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq %mm2,0(%ebx) - movq 8(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm4,8(%ebx) - /* 4 */ - movq 16(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq 24(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm2,%mm3 - psrlq $32,%mm3 - pfadd %mm4,%mm2 - pfadd %mm3,%mm4 - movq %mm2,16(%ebx) - movq %mm4,24(%ebx) - /* 8 */ - movq 32(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq %mm2,32(%ebx) - movq 40(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm4,40(%ebx) - /* 12 */ - movq 48(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq 56(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm2,%mm3 - psrlq $32,%mm3 - pfadd %mm4,%mm2 - pfadd %mm3,%mm4 - movq %mm2,48(%ebx) - movq %mm4,56(%ebx) - /* 16 */ - movq 64(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq %mm2,64(%ebx) - movq 72(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm4,72(%ebx) - /* 20 */ - movq 80(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq 88(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm2,%mm3 - psrlq $32,%mm3 - pfadd %mm4,%mm2 - pfadd %mm3,%mm4 - movq %mm2,80(%ebx) - movq %mm4,88(%ebx) - /* 24 */ - movq 96(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq %mm2,96(%ebx) - movq 104(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm4,104(%ebx) - /* 28 */ - movq 112(%esi),%mm2 - movq %mm2,%mm3 - pfmul %mm0,%mm3 - pfacc %mm3,%mm2 - pfmul %mm1,%mm2 - movq 120(%esi),%mm4 - movq %mm4,%mm5 - pfmul %mm0,%mm5 - pfacc %mm5,%mm4 - pfmul %mm0,%mm4 - pfmul %mm1,%mm4 - movq %mm4,%mm5 - psrlq $32,%mm5 - pfacc %mm5,%mm4 - movq %mm2,%mm3 - psrlq $32,%mm3 - pfadd %mm4,%mm2 - pfadd %mm3,%mm4 - movq %mm2,112(%ebx) - movq %mm4,120(%ebx) - - /* Phase6 */ - movl 0(%ebx),%eax - movl %eax,1024(%ebp) - movl 4(%ebx),%eax - movl %eax,0(%ebp) - movl %eax,0(%edx) - movl 8(%ebx),%eax - movl %eax,512(%ebp) - movl 12(%ebx),%eax - movl %eax,512(%edx) - - movl 16(%ebx),%eax - movl %eax,768(%ebp) - movl 20(%ebx),%eax - movl %eax,256(%edx) - - movl 24(%ebx),%eax - movl %eax,256(%ebp) - movl 28(%ebx),%eax - movl %eax,768(%edx) - - movq 32(%ebx),%mm0 - movq 48(%ebx),%mm1 - pfadd %mm1,%mm0 - movd %mm0,896(%ebp) - psrlq $32,%mm0 - movd %mm0,128(%edx) - movq 40(%ebx),%mm2 - pfadd %mm2,%mm1 - movd %mm1,640(%ebp) - psrlq $32,%mm1 - movd %mm1,384(%edx) - - movq 56(%ebx),%mm3 - pfadd %mm3,%mm2 - movd %mm2,384(%ebp) - psrlq $32,%mm2 - movd %mm2,640(%edx) - - movd 36(%ebx),%mm4 - pfadd %mm4,%mm3 - movd %mm3,128(%ebp) - psrlq $32,%mm3 - movd %mm3,896(%edx) - movq 96(%ebx),%mm0 - movq 64(%ebx),%mm1 - - movq 112(%ebx),%mm2 - pfadd %mm2,%mm0 - movq %mm0,%mm3 - pfadd %mm1,%mm3 - movd %mm3,960(%ebp) - psrlq $32,%mm3 - movd %mm3,64(%edx) - movq 80(%ebx),%mm1 - pfadd %mm1,%mm0 - movd %mm0,832(%ebp) - psrlq $32,%mm0 - movd %mm0,192(%edx) - movq 104(%ebx),%mm3 - pfadd %mm3,%mm2 - movq %mm2,%mm4 - pfadd %mm1,%mm4 - movd %mm4,704(%ebp) - psrlq $32,%mm4 - movd %mm4,320(%edx) - movq 72(%ebx),%mm1 - pfadd %mm1,%mm2 - movd %mm2,576(%ebp) - psrlq $32,%mm2 - movd %mm2,448(%edx) - - movq 120(%ebx),%mm4 - pfadd %mm4,%mm3 - movq %mm3,%mm5 - pfadd %mm1,%mm5 - movd %mm5,448(%ebp) - psrlq $32,%mm5 - movd %mm5,576(%edx) - movq 88(%ebx),%mm1 - pfadd %mm1,%mm3 - movd %mm3,320(%ebp) - psrlq $32,%mm3 - movd %mm3,704(%edx) - - movd 100(%ebx),%mm5 - pfadd %mm5,%mm4 - movq %mm4,%mm6 - pfadd %mm1,%mm6 - movd %mm6,192(%ebp) - psrlq $32,%mm6 - movd %mm6,832(%edx) - movd 68(%ebx),%mm1 - pfadd %mm1,%mm4 - movd %mm4,64(%ebp) - psrlq $32,%mm4 - movd %mm4,960(%edx) - - /* femms */ - - popl %ebx - popl %esi - popl %edi - popl %ebp - addl $256,%esp - - ret - diff --git a/src/dct64_3dnowext.S b/src/dct64_3dnowext.S deleted file mode 100644 index bf20654c..00000000 --- a/src/dct64_3dnowext.S +++ /dev/null @@ -1,712 +0,0 @@ -/* - dct64_3dnowext: extended 3DNow optimized DCT64 - - copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - - Transformed back into standalone asm, with help of - gcc -S -DHAVE_CONFIG_H -I. -march=k6-3 -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o dct64_3dnowext.{S,c} - - MPlayer comment follows. -*/ - -/* -* This code was taken from http://www.mpg123.org -* See ChangeLog of mpg123-0.59s-pre.1 for detail -* Applied to mplayer by Nick Kurshev -* Partial 3dnowex-DSP! optimization by Nick Kurshev -* -* TODO: optimize scalar 3dnow! code -* Warning: Phases 7 & 8 are not tested -*/ - -#include "mangle.h" - - .data - ALIGN4 - /* .type plus_1f, @object - .size plus_1f, 4 */ -plus_1f: - .long 1065353216 - ALIGN8 - /* .type x_plus_minus_3dnow, @object - .size x_plus_minus_3dnow, 8 */ -x_plus_minus_3dnow: - .long 0 - .long -2147483648 - - .text - ALIGN32,,31 -.globl ASM_NAME(dct64_3dnowext) - /* .type ASM_NAME(dct64_3dnowext), @function */ -ASM_NAME(dct64_3dnowext): - pushl %ebp - movl %esp, %ebp - pushl %edi - pushl %esi - pushl %ebx - subl $256, %esp -#APP - movl 16(%ebp),%eax - leal 128+-268(%ebp),%edx - movl 8(%ebp),%esi - movl 12(%ebp),%edi - movl $ASM_NAME(costab_mmxsse),%ebx - leal -268(%ebp),%ecx - movq (%eax), %mm0 - movq 8(%eax), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 120(%eax), %mm1 - pswapd 112(%eax), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, (%edx) - movq %mm4, 8(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul (%ebx), %mm3 - pfmul 8(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 120(%edx) - movq %mm7, 112(%edx) - movq 16(%eax), %mm0 - movq 24(%eax), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 104(%eax), %mm1 - pswapd 96(%eax), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 16(%edx) - movq %mm4, 24(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul 16(%ebx), %mm3 - pfmul 24(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 104(%edx) - movq %mm7, 96(%edx) - movq 32(%eax), %mm0 - movq 40(%eax), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 88(%eax), %mm1 - pswapd 80(%eax), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 32(%edx) - movq %mm4, 40(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul 32(%ebx), %mm3 - pfmul 40(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 88(%edx) - movq %mm7, 80(%edx) - movq 48(%eax), %mm0 - movq 56(%eax), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 72(%eax), %mm1 - pswapd 64(%eax), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 48(%edx) - movq %mm4, 56(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul 48(%ebx), %mm3 - pfmul 56(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 72(%edx) - movq %mm7, 64(%edx) - movq (%edx), %mm0 - movq 8(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 56(%edx), %mm1 - pswapd 48(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, (%ecx) - movq %mm4, 8(%ecx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul 64(%ebx), %mm3 - pfmul 72(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 56(%ecx) - movq %mm7, 48(%ecx) - movq 16(%edx), %mm0 - movq 24(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 40(%edx), %mm1 - pswapd 32(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 16(%ecx) - movq %mm4, 24(%ecx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul 80(%ebx), %mm3 - pfmul 88(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 40(%ecx) - movq %mm7, 32(%ecx) - movq 64(%edx), %mm0 - movq 72(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 120(%edx), %mm1 - pswapd 112(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 64(%ecx) - movq %mm4, 72(%ecx) - pfsubr %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul 64(%ebx), %mm3 - pfmul 72(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 120(%ecx) - movq %mm7, 112(%ecx) - movq 80(%edx), %mm0 - movq 88(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 104(%edx), %mm1 - pswapd 96(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 80(%ecx) - movq %mm4, 88(%ecx) - pfsubr %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul 80(%ebx), %mm3 - pfmul 88(%ebx), %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 104(%ecx) - movq %mm7, 96(%ecx) - movq 96(%ebx), %mm2 - movq 104(%ebx), %mm6 - movq (%ecx), %mm0 - movq 8(%ecx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 24(%ecx), %mm1 - pswapd 16(%ecx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, (%edx) - movq %mm4, 8(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm6, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 24(%edx) - movq %mm7, 16(%edx) - movq 32(%ecx), %mm0 - movq 40(%ecx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 56(%ecx), %mm1 - pswapd 48(%ecx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 32(%edx) - movq %mm4, 40(%edx) - pfsubr %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm6, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 56(%edx) - movq %mm7, 48(%edx) - movq 64(%ecx), %mm0 - movq 72(%ecx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 88(%ecx), %mm1 - pswapd 80(%ecx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 64(%edx) - movq %mm4, 72(%edx) - pfsub %mm1, %mm3 - pfsub %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm6, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 88(%edx) - movq %mm7, 80(%edx) - movq 96(%ecx), %mm0 - movq 104(%ecx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 120(%ecx), %mm1 - pswapd 112(%ecx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 96(%edx) - movq %mm4, 104(%edx) - pfsubr %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm6, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 120(%edx) - movq %mm7, 112(%edx) - movq 112(%ebx), %mm2 - movq (%edx), %mm0 - movq 16(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 8(%edx), %mm1 - pswapd 24(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, (%ecx) - movq %mm4, 16(%ecx) - pfsub %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm2, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 8(%ecx) - movq %mm7, 24(%ecx) - movq 32(%edx), %mm0 - movq 48(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 40(%edx), %mm1 - pswapd 56(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 32(%ecx) - movq %mm4, 48(%ecx) - pfsub %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm2, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 40(%ecx) - movq %mm7, 56(%ecx) - movq 64(%edx), %mm0 - movq 80(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 72(%edx), %mm1 - pswapd 88(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 64(%ecx) - movq %mm4, 80(%ecx) - pfsub %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm2, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 72(%ecx) - movq %mm7, 88(%ecx) - movq 96(%edx), %mm0 - movq 112(%edx), %mm4 - movq %mm0, %mm3 - movq %mm4, %mm7 - pswapd 104(%edx), %mm1 - pswapd 120(%edx), %mm5 - pfadd %mm1, %mm0 - pfadd %mm5, %mm4 - movq %mm0, 96(%ecx) - movq %mm4, 112(%ecx) - pfsub %mm1, %mm3 - pfsubr %mm5, %mm7 - pfmul %mm2, %mm3 - pfmul %mm2, %mm7 - pswapd %mm3, %mm3 - pswapd %mm7, %mm7 - movq %mm3, 104(%ecx) - movq %mm7, 120(%ecx) - movd plus_1f, %mm6 - punpckldq 120(%ebx), %mm6 - movq x_plus_minus_3dnow, %mm7 - movq 32(%ecx), %mm0 - movq 64(%ecx), %mm2 - movq %mm0, %mm1 - movq %mm2, %mm3 - pxor %mm7, %mm1 - pxor %mm7, %mm3 - pfacc %mm1, %mm0 - pfacc %mm3, %mm2 - pfmul %mm6, %mm0 - pfmul %mm6, %mm2 - movq %mm0, 32(%edx) - movq %mm2, 64(%edx) - movd 44(%ecx), %mm0 - movd 40(%ecx), %mm2 - movd 120(%ebx), %mm3 - punpckldq 76(%ecx), %mm0 - punpckldq 72(%ecx), %mm2 - punpckldq %mm3, %mm3 - movq %mm0, %mm4 - movq %mm2, %mm5 - pfsub %mm2, %mm0 - pfmul %mm3, %mm0 - movq %mm0, %mm1 - pfadd %mm5, %mm0 - pfadd %mm4, %mm0 - movq %mm0, %mm2 - punpckldq %mm1, %mm0 - punpckhdq %mm1, %mm2 - movq %mm0, 40(%edx) - movq %mm2, 72(%edx) - movd 48(%ecx), %mm3 - movd 60(%ecx), %mm2 - pfsub 52(%ecx), %mm3 - pfsub 56(%ecx), %mm2 - pfmul 120(%ebx), %mm3 - pfmul 120(%ebx), %mm2 - movq %mm2, %mm1 - pfadd 56(%ecx), %mm1 - pfadd 60(%ecx), %mm1 - movq %mm1, %mm0 - pfadd 48(%ecx), %mm0 - pfadd 52(%ecx), %mm0 - pfadd %mm3, %mm1 - punpckldq %mm2, %mm1 - pfadd %mm3, %mm2 - punpckldq %mm2, %mm0 - movq %mm1, 56(%edx) - movq %mm0, 48(%edx) - movd 92(%ecx), %mm1 - pfsub 88(%ecx), %mm1 - pfmul 120(%ebx), %mm1 - movd %mm1, 92(%edx) - pfadd 92(%ecx), %mm1 - pfadd 88(%ecx), %mm1 - movq %mm1, %mm0 - pfadd 80(%ecx), %mm0 - pfadd 84(%ecx), %mm0 - movd %mm0, 80(%edx) - movd 80(%ecx), %mm0 - pfsub 84(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - pfadd %mm0, %mm1 - pfadd 92(%edx), %mm0 - punpckldq %mm1, %mm0 - movq %mm0, 84(%edx) - movq 96(%ecx), %mm0 - movq %mm0, %mm1 - pxor %mm7, %mm1 - pfacc %mm1, %mm0 - pfmul %mm6, %mm0 - movq %mm0, 96(%edx) - movd 108(%ecx), %mm0 - pfsub 104(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 108(%edx) - pfadd 104(%ecx), %mm0 - pfadd 108(%ecx), %mm0 - movd %mm0, 104(%edx) - movd 124(%ecx), %mm1 - pfsub 120(%ecx), %mm1 - pfmul 120(%ebx), %mm1 - movd %mm1, 124(%edx) - pfadd 120(%ecx), %mm1 - pfadd 124(%ecx), %mm1 - movq %mm1, %mm0 - pfadd 112(%ecx), %mm0 - pfadd 116(%ecx), %mm0 - movd %mm0, 112(%edx) - movd 112(%ecx), %mm0 - pfsub 116(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - pfadd %mm0,%mm1 - pfadd 124(%edx), %mm0 - punpckldq %mm1, %mm0 - movq %mm0, 116(%edx) - jnz .L01 - movd (%ecx), %mm0 - pfadd 4(%ecx), %mm0 - movd %mm0, 1024(%esi) - movd (%ecx), %mm0 - pfsub 4(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, (%esi) - movd %mm0, (%edi) - movd 12(%ecx), %mm0 - pfsub 8(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 512(%edi) - pfadd 12(%ecx), %mm0 - pfadd 8(%ecx), %mm0 - movd %mm0, 512(%esi) - movd 16(%ecx), %mm0 - pfsub 20(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movq %mm0, %mm3 - movd 28(%ecx), %mm0 - pfsub 24(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 768(%edi) - movq %mm0, %mm2 - pfadd 24(%ecx), %mm0 - pfadd 28(%ecx), %mm0 - movq %mm0, %mm1 - pfadd 16(%ecx), %mm0 - pfadd 20(%ecx), %mm0 - movd %mm0, 768(%esi) - pfadd %mm3, %mm1 - movd %mm1, 256(%esi) - pfadd %mm3, %mm2 - movd %mm2, 256(%edi) - movq 32(%edx), %mm0 - movq 48(%edx), %mm1 - pfadd 48(%edx), %mm0 - pfadd 40(%edx), %mm1 - movd %mm0, 896(%esi) - movd %mm1, 640(%esi) - psrlq $32, %mm0 - psrlq $32, %mm1 - movd %mm0, 128(%edi) - movd %mm1, 384(%edi) - movd 40(%edx), %mm0 - pfadd 56(%edx), %mm0 - movd %mm0, 384(%esi) - movd 56(%edx), %mm0 - pfadd 36(%edx), %mm0 - movd %mm0, 128(%esi) - movd 60(%edx), %mm0 - movd %mm0, 896(%edi) - pfadd 44(%edx), %mm0 - movd %mm0, 640(%edi) - movq 96(%edx), %mm0 - movq 112(%edx), %mm2 - movq 104(%edx), %mm4 - pfadd 112(%edx), %mm0 - pfadd 104(%edx), %mm2 - pfadd 120(%edx), %mm4 - movq %mm0, %mm1 - movq %mm2, %mm3 - movq %mm4, %mm5 - pfadd 64(%edx), %mm0 - pfadd 80(%edx), %mm2 - pfadd 72(%edx), %mm4 - movd %mm0, 960(%esi) - movd %mm2, 704(%esi) - movd %mm4, 448(%esi) - psrlq $32, %mm0 - psrlq $32, %mm2 - psrlq $32, %mm4 - movd %mm0, 64(%edi) - movd %mm2, 320(%edi) - movd %mm4, 576(%edi) - pfadd 80(%edx), %mm1 - pfadd 72(%edx), %mm3 - pfadd 88(%edx), %mm5 - movd %mm1, 832(%esi) - movd %mm3, 576(%esi) - movd %mm5, 320(%esi) - psrlq $32, %mm1 - psrlq $32, %mm3 - psrlq $32, %mm5 - movd %mm1, 192(%edi) - movd %mm3, 448(%edi) - movd %mm5, 704(%edi) - movd 120(%edx), %mm0 - pfadd 100(%edx), %mm0 - movq %mm0, %mm1 - pfadd 88(%edx), %mm0 - movd %mm0, 192(%esi) - pfadd 68(%edx), %mm1 - movd %mm1, 64(%esi) - movd 124(%edx), %mm0 - movd %mm0, 960(%edi) - pfadd 92(%edx), %mm0 - movd %mm0, 832(%edi) - jmp .L_bye -.L01: - movq (%ecx), %mm0 - movq %mm0, %mm1 - pxor %mm7, %mm1 - pfacc %mm1, %mm0 - pfmul %mm6, %mm0 - pf2iw %mm0, %mm0 - movd %mm0, %eax - movw %ax, 512(%esi) - psrlq $32, %mm0 - movd %mm0, %eax - movw %ax, (%esi) - movd 12(%ecx), %mm0 - pfsub 8(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - pf2iw %mm0, %mm7 - movd %mm7, %eax - movw %ax, 256(%edi) - pfadd 12(%ecx), %mm0 - pfadd 8(%ecx), %mm0 - pf2iw %mm0, %mm0 - movd %mm0, %eax - movw %ax, 256(%esi) - movd 16(%ecx), %mm3 - pfsub 20(%ecx), %mm3 - pfmul 120(%ebx), %mm3 - movq %mm3, %mm2 - movd 28(%ecx), %mm2 - pfsub 24(%ecx), %mm2 - pfmul 120(%ebx), %mm2 - movq %mm2, %mm1 - pf2iw %mm2, %mm7 - movd %mm7, %eax - movw %ax, 384(%edi) - pfadd 24(%ecx), %mm1 - pfadd 28(%ecx), %mm1 - movq %mm1, %mm0 - pfadd 16(%ecx), %mm0 - pfadd 20(%ecx), %mm0 - pf2iw %mm0, %mm0 - movd %mm0, %eax - movw %ax, 384(%esi) - pfadd %mm3, %mm1 - pf2iw %mm1, %mm1 - movd %mm1, %eax - movw %ax, 128(%esi) - pfadd %mm3, %mm2 - pf2iw %mm2, %mm2 - movd %mm2, %eax - movw %ax, 128(%edi) - movq 32(%edx), %mm0 - movq 48(%edx), %mm1 - pfadd 48(%edx), %mm0 - pfadd 40(%edx), %mm1 - pf2iw %mm0, %mm0 - pf2iw %mm1, %mm1 - movd %mm0, %eax - movd %mm1, %ecx - movw %ax, 448(%esi) - movw %cx, 320(%esi) - psrlq $32, %mm0 - psrlq $32, %mm1 - movd %mm0, %eax - movd %mm1, %ecx - movw %ax, 64(%edi) - movw %cx, 192(%edi) - movd 40(%edx), %mm3 - movd 56(%edx), %mm4 - movd 60(%edx), %mm0 - movd 44(%edx), %mm2 - movd 120(%edx), %mm5 - punpckldq %mm4, %mm3 - punpckldq 124(%edx), %mm0 - pfadd 100(%edx), %mm5 - punpckldq 36(%edx), %mm4 - punpckldq 92(%edx), %mm2 - movq %mm5, %mm6 - pfadd %mm4, %mm3 - pf2iw %mm0, %mm1 - pf2iw %mm3, %mm3 - pfadd 88(%edx), %mm5 - movd %mm1, %eax - movd %mm3, %ecx - movw %ax, 448(%edi) - movw %cx, 192(%esi) - pf2iw %mm5, %mm5 - psrlq $32, %mm1 - psrlq $32, %mm3 - movd %mm5, %ebx - movd %mm1, %eax - movd %mm3, %ecx - movw %bx, 96(%esi) - movw %ax, 480(%edi) - movw %cx, 64(%esi) - pfadd %mm2, %mm0 - pf2iw %mm0, %mm0 - movd %mm0, %eax - pfadd 68(%edx), %mm6 - movw %ax, 320(%edi) - psrlq $32, %mm0 - pf2iw %mm6, %mm6 - movd %mm0, %eax - movd %mm6, %ebx - movw %ax, 416(%edi) - movw %bx, 32(%esi) - movq 96(%edx), %mm0 - movq 112(%edx), %mm2 - movq 104(%edx), %mm4 - pfadd %mm2, %mm0 - pfadd %mm4, %mm2 - pfadd 120(%edx), %mm4 - movq %mm0, %mm1 - movq %mm2, %mm3 - movq %mm4, %mm5 - pfadd 64(%edx), %mm0 - pfadd 80(%edx), %mm2 - pfadd 72(%edx), %mm4 - pf2iw %mm0, %mm0 - pf2iw %mm2, %mm2 - pf2iw %mm4, %mm4 - movd %mm0, %eax - movd %mm2, %ecx - movd %mm4, %ebx - movw %ax, 480(%esi) - movw %cx, 352(%esi) - movw %bx, 224(%esi) - psrlq $32, %mm0 - psrlq $32, %mm2 - psrlq $32, %mm4 - movd %mm0, %eax - movd %mm2, %ecx - movd %mm4, %ebx - movw %ax, 32(%edi) - movw %cx, 160(%edi) - movw %bx, 288(%edi) - pfadd 80(%edx), %mm1 - pfadd 72(%edx), %mm3 - pfadd 88(%edx), %mm5 - pf2iw %mm1, %mm1 - pf2iw %mm3, %mm3 - pf2iw %mm5, %mm5 - movd %mm1, %eax - movd %mm3, %ecx - movd %mm5, %ebx - movw %ax, 416(%esi) - movw %cx, 288(%esi) - movw %bx, 160(%esi) - psrlq $32, %mm1 - psrlq $32, %mm3 - psrlq $32, %mm5 - movd %mm1, %eax - movd %mm3, %ecx - movd %mm5, %ebx - movw %ax, 96(%edi) - movw %cx, 224(%edi) - movw %bx, 352(%edi) - movsw -.L_bye: - femms - -#NO_APP - addl $256, %esp - popl %ebx - popl %esi - popl %edi - leave - ret - /* .size ASM_NAME(dct64_3dnowext), .-ASM_NAME(dct64_3dnowext) */ diff --git a/src/dct64_altivec.c b/src/dct64_altivec.c deleted file mode 100644 index b73ee1a6..00000000 --- a/src/dct64_altivec.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - dct64_altivec.c: Discrete Cosine Tansform (DCT) for Altivec - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - altivec optimization by tmkk -*/ - -/* - * Discrete Cosine Tansform (DCT) for subband synthesis - * - * -funroll-loops (for gcc) will remove the loops for better performance - * using loops in the source-code enhances readabillity - * - * - * TODO: write an optimized version for the down-sampling modes - * (in these modes the bands 16-31 (2:1) or 8-31 (4:1) are zero - */ - -#include "mpg123.h" - -#ifndef __APPLE__ -#include -#endif - -void dct64_altivec(real *out0,real *out1,real *samples) -{ - ALIGNED(16) real bufs[64]; - - { - register real *b1,*costab; - - vector unsigned char vinvert,vperm1,vperm2,vperm3,vperm4; - vector float v1,v2,v3,v4,v5,v6,v7,v8; - vector float vbs1,vbs2,vbs3,vbs4,vbs5,vbs6,vbs7,vbs8; - vector float vbs9,vbs10,vbs11,vbs12,vbs13,vbs14,vbs15,vbs16; - vector float vzero; - b1 = samples; - costab = pnts[0]; - - vzero = vec_xor(vzero,vzero); -#ifdef __APPLE__ - vinvert = (vector unsigned char)(12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3); -#else - vinvert = (vector unsigned char){12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3}; -#endif - vperm1 = vec_lvsl(0,b1); - vperm2 = vec_perm(vperm1,vperm1,vinvert); - - v1 = vec_ld(0,b1); - v2 = vec_ld(16,b1); - v3 = vec_ld(112,b1); - v4 = vec_ld(127,b1); - v5 = vec_perm(v1,v2,vperm1); /* b1[0,1,2,3] */ - v6 = vec_perm(v3,v4,vperm2); /* b1[31,30,29,28] */ - - vbs1 = vec_add(v5,v6); - vbs8 = vec_sub(v5,v6); - - v1 = vec_ld(32,b1); - v4 = vec_ld(96,b1); - v5 = vec_perm(v2,v1,vperm1); /* b1[4,5,6,7] */ - v6 = vec_perm(v4,v3,vperm2); /* b1[27,26,25,24] */ - - vbs2 = vec_add(v5,v6); - vbs7 = vec_sub(v5,v6); - - v2 = vec_ld(48,b1); - v3 = vec_ld(80,b1); - v5 = vec_perm(v1,v2,vperm1); /* b1[8,9,10,11] */ - v6 = vec_perm(v3,v4,vperm2); /* b1[23,22,21,20] */ - - vbs3 = vec_add(v5,v6); - vbs6 = vec_sub(v5,v6); - - v1 = vec_ld(64,b1); - v5 = vec_perm(v2,v1,vperm1); /* b1[12,13,14,15] */ - v6 = vec_perm(v1,v3,vperm2); /* b1[19,18,17,16] */ - - vbs4 = vec_add(v5,v6); - vbs5 = vec_sub(v5,v6); - - v1 = vec_ld(0,costab); - vbs8 = vec_madd(vbs8,v1,vzero); - v2 = vec_ld(16,costab); - vbs7 = vec_madd(vbs7,v2,vzero); - v3 = vec_ld(32,costab); - vbs6 = vec_madd(vbs6,v3,vzero); - v4 = vec_ld(48,costab); - vbs5 = vec_madd(vbs5,v4,vzero); - vbs6 = vec_perm(vbs6,vbs6,vinvert); - vbs5 = vec_perm(vbs5,vbs5,vinvert); - - - costab = pnts[1]; - - v1 = vec_perm(vbs4,vbs4,vinvert); - vbs9 = vec_add(vbs1,v1); - v3 = vec_sub(vbs1,v1); - v5 = vec_ld(0,costab); - v2 = vec_perm(vbs3,vbs3,vinvert); - vbs10 = vec_add(vbs2,v2); - v4 = vec_sub(vbs2,v2); - v6 = vec_ld(16,costab); - vbs12 = vec_madd(v3,v5,vzero); - vbs11 = vec_madd(v4,v6,vzero); - - v7 = vec_sub(vbs7,vbs6); - v8 = vec_sub(vbs8,vbs5); - vbs13 = vec_add(vbs5,vbs8); - vbs14 = vec_add(vbs6,vbs7); - vbs15 = vec_madd(v7,v6,vzero); - vbs16 = vec_madd(v8,v5,vzero); - - - costab = pnts[2]; - - v1 = vec_perm(vbs10,vbs10,vinvert); - v5 = vec_perm(vbs14,vbs14,vinvert); - vbs1 = vec_add(v1,vbs9); - vbs5 = vec_add(v5,vbs13); - v2 = vec_sub(vbs9,v1); - v6 = vec_sub(vbs13,v5); - v3 = vec_ld(0,costab); - vbs11 = vec_perm(vbs11,vbs11,vinvert); - vbs15 = vec_perm(vbs15,vbs15,vinvert); - vbs3 = vec_add(vbs11,vbs12); - vbs7 = vec_add(vbs15,vbs16); - v4 = vec_sub(vbs12,vbs11); - v7 = vec_sub(vbs16,vbs15); - vbs2 = vec_madd(v2,v3,vzero); - vbs4 = vec_madd(v4,v3,vzero); - vbs6 = vec_madd(v6,v3,vzero); - vbs8 = vec_madd(v7,v3,vzero); - - vbs2 = vec_perm(vbs2,vbs2,vinvert); - vbs4 = vec_perm(vbs4,vbs4,vinvert); - vbs6 = vec_perm(vbs6,vbs6,vinvert); - vbs8 = vec_perm(vbs8,vbs8,vinvert); - - - costab = pnts[3]; - -#ifdef __APPLE__ - vperm1 = (vector unsigned char)(0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23); - vperm2 = (vector unsigned char)(12,13,14,15,8,9,10,11,28,29,30,31,24,25,26,27); - vperm3 = (vector unsigned char)(0,1,2,3,4,5,6,7,20,21,22,23,16,17,18,19); -#else - vperm1 = (vector unsigned char){0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23}; - vperm2 = (vector unsigned char){12,13,14,15,8,9,10,11,28,29,30,31,24,25,26,27}; - vperm3 = (vector unsigned char){0,1,2,3,4,5,6,7,20,21,22,23,16,17,18,19}; -#endif - vperm4 = vec_add(vperm3,vec_splat_u8(8)); - - v1 = vec_ld(0,costab); - v2 = vec_splat(v1,0); - v3 = vec_splat(v1,1); - v1 = vec_mergeh(v2,v3); - - v2 = vec_perm(vbs1,vbs3,vperm1); - v3 = vec_perm(vbs2,vbs4,vperm1); - v4 = vec_perm(vbs1,vbs3,vperm2); - v5 = vec_perm(vbs2,vbs4,vperm2); - v6 = vec_sub(v2,v4); - v7 = vec_sub(v3,v5); - v2 = vec_add(v2,v4); - v3 = vec_add(v3,v5); - v4 = vec_madd(v6,v1,vzero); - v5 = vec_nmsub(v7,v1,vzero); - vbs9 = vec_perm(v2,v4,vperm3); - vbs11 = vec_perm(v2,v4,vperm4); - vbs10 = vec_perm(v3,v5,vperm3); - vbs12 = vec_perm(v3,v5,vperm4); - - v2 = vec_perm(vbs5,vbs7,vperm1); - v3 = vec_perm(vbs6,vbs8,vperm1); - v4 = vec_perm(vbs5,vbs7,vperm2); - v5 = vec_perm(vbs6,vbs8,vperm2); - v6 = vec_sub(v2,v4); - v7 = vec_sub(v3,v5); - v2 = vec_add(v2,v4); - v3 = vec_add(v3,v5); - v4 = vec_madd(v6,v1,vzero); - v5 = vec_nmsub(v7,v1,vzero); - vbs13 = vec_perm(v2,v4,vperm3); - vbs15 = vec_perm(v2,v4,vperm4); - vbs14 = vec_perm(v3,v5,vperm3); - vbs16 = vec_perm(v3,v5,vperm4); - - - costab = pnts[4]; - - v1 = vec_lde(0,costab); -#ifdef __APPLE__ - v2 = (vector float)(1.0f,-1.0f,1.0f,-1.0f); -#else - v2 = (vector float){1.0f,-1.0f,1.0f,-1.0f}; -#endif - v3 = vec_splat(v1,0); - v1 = vec_madd(v2,v3,vzero); - - v2 = vec_mergeh(vbs9,vbs10); - v3 = vec_mergel(vbs9,vbs10); - v4 = vec_mergeh(vbs11,vbs12); - v5 = vec_mergel(vbs11,vbs12); - v6 = vec_mergeh(v2,v3); - v7 = vec_mergel(v2,v3); - v2 = vec_mergeh(v4,v5); - v3 = vec_mergel(v4,v5); - v4 = vec_sub(v6,v7); - v5 = vec_sub(v2,v3); - v6 = vec_add(v6,v7); - v7 = vec_add(v2,v3); - v2 = vec_madd(v4,v1,vzero); - v3 = vec_madd(v5,v1,vzero); - vbs1 = vec_mergeh(v6,v2); - vbs2 = vec_mergel(v6,v2); - vbs3 = vec_mergeh(v7,v3); - vbs4 = vec_mergel(v7,v3); - - v2 = vec_mergeh(vbs13,vbs14); - v3 = vec_mergel(vbs13,vbs14); - v4 = vec_mergeh(vbs15,vbs16); - v5 = vec_mergel(vbs15,vbs16); - v6 = vec_mergeh(v2,v3); - v7 = vec_mergel(v2,v3); - v2 = vec_mergeh(v4,v5); - v3 = vec_mergel(v4,v5); - v4 = vec_sub(v6,v7); - v5 = vec_sub(v2,v3); - v6 = vec_add(v6,v7); - v7 = vec_add(v2,v3); - v2 = vec_madd(v4,v1,vzero); - v3 = vec_madd(v5,v1,vzero); - vbs5 = vec_mergeh(v6,v2); - vbs6 = vec_mergel(v6,v2); - vbs7 = vec_mergeh(v7,v3); - vbs8 = vec_mergel(v7,v3); - - vec_st(vbs1,0,bufs); - vec_st(vbs2,16,bufs); - vec_st(vbs3,32,bufs); - vec_st(vbs4,48,bufs); - vec_st(vbs5,64,bufs); - vec_st(vbs6,80,bufs); - vec_st(vbs7,96,bufs); - vec_st(vbs8,112,bufs); - vec_st(vbs9,128,bufs); - vec_st(vbs10,144,bufs); - vec_st(vbs11,160,bufs); - vec_st(vbs12,176,bufs); - vec_st(vbs13,192,bufs); - vec_st(vbs14,208,bufs); - vec_st(vbs15,224,bufs); - vec_st(vbs16,240,bufs); - - - } - - { - register real *b1; - register int i; - - for(b1=bufs,i=8;i;i--,b1+=4) - b1[2] += b1[3]; - - for(b1=bufs,i=4;i;i--,b1+=8) - { - b1[4] += b1[6]; - b1[6] += b1[5]; - b1[5] += b1[7]; - } - - for(b1=bufs,i=2;i;i--,b1+=16) - { - b1[8] += b1[12]; - b1[12] += b1[10]; - b1[10] += b1[14]; - b1[14] += b1[9]; - b1[9] += b1[13]; - b1[13] += b1[11]; - b1[11] += b1[15]; - } - } - - - out0[0x10*16] = bufs[0]; - out0[0x10*15] = bufs[16+0] + bufs[16+8]; - out0[0x10*14] = bufs[8]; - out0[0x10*13] = bufs[16+8] + bufs[16+4]; - out0[0x10*12] = bufs[4]; - out0[0x10*11] = bufs[16+4] + bufs[16+12]; - out0[0x10*10] = bufs[12]; - out0[0x10* 9] = bufs[16+12] + bufs[16+2]; - out0[0x10* 8] = bufs[2]; - out0[0x10* 7] = bufs[16+2] + bufs[16+10]; - out0[0x10* 6] = bufs[10]; - out0[0x10* 5] = bufs[16+10] + bufs[16+6]; - out0[0x10* 4] = bufs[6]; - out0[0x10* 3] = bufs[16+6] + bufs[16+14]; - out0[0x10* 2] = bufs[14]; - out0[0x10* 1] = bufs[16+14] + bufs[16+1]; - out0[0x10* 0] = bufs[1]; - - out1[0x10* 0] = bufs[1]; - out1[0x10* 1] = bufs[16+1] + bufs[16+9]; - out1[0x10* 2] = bufs[9]; - out1[0x10* 3] = bufs[16+9] + bufs[16+5]; - out1[0x10* 4] = bufs[5]; - out1[0x10* 5] = bufs[16+5] + bufs[16+13]; - out1[0x10* 6] = bufs[13]; - out1[0x10* 7] = bufs[16+13] + bufs[16+3]; - out1[0x10* 8] = bufs[3]; - out1[0x10* 9] = bufs[16+3] + bufs[16+11]; - out1[0x10*10] = bufs[11]; - out1[0x10*11] = bufs[16+11] + bufs[16+7]; - out1[0x10*12] = bufs[7]; - out1[0x10*13] = bufs[16+7] + bufs[16+15]; - out1[0x10*14] = bufs[15]; - out1[0x10*15] = bufs[16+15]; - -} - - diff --git a/src/dct64_i386.c b/src/dct64_i386.c deleted file mode 100644 index 836d029a..00000000 --- a/src/dct64_i386.c +++ /dev/null @@ -1,336 +0,0 @@ -/* - dct64_i386.c: DCT64, a C variant for i386 - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -/* - * Discrete Cosine Tansform (DCT) for subband synthesis - * optimized for machines with no auto-increment. - * The performance is highly compiler dependend. Maybe - * the dct64.c version for 'normal' processor may be faster - * even for Intel processors. - */ - -#include "mpg123.h" - -static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) -{ - { - register real *costab = pnts[0]; - - b1[0x00] = samples[0x00] + samples[0x1F]; - b1[0x01] = samples[0x01] + samples[0x1E]; - b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0]; - b1[0x1E] = (samples[0x01] - samples[0x1E]) * costab[0x1]; - - b1[0x02] = samples[0x02] + samples[0x1D]; - b1[0x03] = samples[0x03] + samples[0x1C]; - b1[0x1D] = (samples[0x02] - samples[0x1D]) * costab[0x2]; - b1[0x1C] = (samples[0x03] - samples[0x1C]) * costab[0x3]; - - b1[0x04] = samples[0x04] + samples[0x1B]; - b1[0x05] = samples[0x05] + samples[0x1A]; - b1[0x1B] = (samples[0x04] - samples[0x1B]) * costab[0x4]; - b1[0x1A] = (samples[0x05] - samples[0x1A]) * costab[0x5]; - - b1[0x06] = samples[0x06] + samples[0x19]; - b1[0x07] = samples[0x07] + samples[0x18]; - b1[0x19] = (samples[0x06] - samples[0x19]) * costab[0x6]; - b1[0x18] = (samples[0x07] - samples[0x18]) * costab[0x7]; - - b1[0x08] = samples[0x08] + samples[0x17]; - b1[0x09] = samples[0x09] + samples[0x16]; - b1[0x17] = (samples[0x08] - samples[0x17]) * costab[0x8]; - b1[0x16] = (samples[0x09] - samples[0x16]) * costab[0x9]; - - b1[0x0A] = samples[0x0A] + samples[0x15]; - b1[0x0B] = samples[0x0B] + samples[0x14]; - b1[0x15] = (samples[0x0A] - samples[0x15]) * costab[0xA]; - b1[0x14] = (samples[0x0B] - samples[0x14]) * costab[0xB]; - - b1[0x0C] = samples[0x0C] + samples[0x13]; - b1[0x0D] = samples[0x0D] + samples[0x12]; - b1[0x13] = (samples[0x0C] - samples[0x13]) * costab[0xC]; - b1[0x12] = (samples[0x0D] - samples[0x12]) * costab[0xD]; - - b1[0x0E] = samples[0x0E] + samples[0x11]; - b1[0x0F] = samples[0x0F] + samples[0x10]; - b1[0x11] = (samples[0x0E] - samples[0x11]) * costab[0xE]; - b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF]; - - } - - - { - register real *costab = pnts[1]; - - b2[0x00] = b1[0x00] + b1[0x0F]; - b2[0x01] = b1[0x01] + b1[0x0E]; - b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0]; - b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1]; - - b2[0x02] = b1[0x02] + b1[0x0D]; - b2[0x03] = b1[0x03] + b1[0x0C]; - b2[0x0D] = (b1[0x02] - b1[0x0D]) * costab[2]; - b2[0x0C] = (b1[0x03] - b1[0x0C]) * costab[3]; - - b2[0x04] = b1[0x04] + b1[0x0B]; - b2[0x05] = b1[0x05] + b1[0x0A]; - b2[0x0B] = (b1[0x04] - b1[0x0B]) * costab[4]; - b2[0x0A] = (b1[0x05] - b1[0x0A]) * costab[5]; - - b2[0x06] = b1[0x06] + b1[0x09]; - b2[0x07] = b1[0x07] + b1[0x08]; - b2[0x09] = (b1[0x06] - b1[0x09]) * costab[6]; - b2[0x08] = (b1[0x07] - b1[0x08]) * costab[7]; - - /* */ - - b2[0x10] = b1[0x10] + b1[0x1F]; - b2[0x11] = b1[0x11] + b1[0x1E]; - b2[0x1F] = (b1[0x1F] - b1[0x10]) * costab[0]; - b2[0x1E] = (b1[0x1E] - b1[0x11]) * costab[1]; - - b2[0x12] = b1[0x12] + b1[0x1D]; - b2[0x13] = b1[0x13] + b1[0x1C]; - b2[0x1D] = (b1[0x1D] - b1[0x12]) * costab[2]; - b2[0x1C] = (b1[0x1C] - b1[0x13]) * costab[3]; - - b2[0x14] = b1[0x14] + b1[0x1B]; - b2[0x15] = b1[0x15] + b1[0x1A]; - b2[0x1B] = (b1[0x1B] - b1[0x14]) * costab[4]; - b2[0x1A] = (b1[0x1A] - b1[0x15]) * costab[5]; - - b2[0x16] = b1[0x16] + b1[0x19]; - b2[0x17] = b1[0x17] + b1[0x18]; - b2[0x19] = (b1[0x19] - b1[0x16]) * costab[6]; - b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7]; - } - - { - register real *costab = pnts[2]; - - b1[0x00] = b2[0x00] + b2[0x07]; - b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0]; - b1[0x01] = b2[0x01] + b2[0x06]; - b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1]; - b1[0x02] = b2[0x02] + b2[0x05]; - b1[0x05] = (b2[0x02] - b2[0x05]) * costab[2]; - b1[0x03] = b2[0x03] + b2[0x04]; - b1[0x04] = (b2[0x03] - b2[0x04]) * costab[3]; - - b1[0x08] = b2[0x08] + b2[0x0F]; - b1[0x0F] = (b2[0x0F] - b2[0x08]) * costab[0]; - b1[0x09] = b2[0x09] + b2[0x0E]; - b1[0x0E] = (b2[0x0E] - b2[0x09]) * costab[1]; - b1[0x0A] = b2[0x0A] + b2[0x0D]; - b1[0x0D] = (b2[0x0D] - b2[0x0A]) * costab[2]; - b1[0x0B] = b2[0x0B] + b2[0x0C]; - b1[0x0C] = (b2[0x0C] - b2[0x0B]) * costab[3]; - - b1[0x10] = b2[0x10] + b2[0x17]; - b1[0x17] = (b2[0x10] - b2[0x17]) * costab[0]; - b1[0x11] = b2[0x11] + b2[0x16]; - b1[0x16] = (b2[0x11] - b2[0x16]) * costab[1]; - b1[0x12] = b2[0x12] + b2[0x15]; - b1[0x15] = (b2[0x12] - b2[0x15]) * costab[2]; - b1[0x13] = b2[0x13] + b2[0x14]; - b1[0x14] = (b2[0x13] - b2[0x14]) * costab[3]; - - b1[0x18] = b2[0x18] + b2[0x1F]; - b1[0x1F] = (b2[0x1F] - b2[0x18]) * costab[0]; - b1[0x19] = b2[0x19] + b2[0x1E]; - b1[0x1E] = (b2[0x1E] - b2[0x19]) * costab[1]; - b1[0x1A] = b2[0x1A] + b2[0x1D]; - b1[0x1D] = (b2[0x1D] - b2[0x1A]) * costab[2]; - b1[0x1B] = b2[0x1B] + b2[0x1C]; - b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3]; - } - - { - register real const cos0 = pnts[3][0]; - register real const cos1 = pnts[3][1]; - - b2[0x00] = b1[0x00] + b1[0x03]; - b2[0x03] = (b1[0x00] - b1[0x03]) * cos0; - b2[0x01] = b1[0x01] + b1[0x02]; - b2[0x02] = (b1[0x01] - b1[0x02]) * cos1; - - b2[0x04] = b1[0x04] + b1[0x07]; - b2[0x07] = (b1[0x07] - b1[0x04]) * cos0; - b2[0x05] = b1[0x05] + b1[0x06]; - b2[0x06] = (b1[0x06] - b1[0x05]) * cos1; - - b2[0x08] = b1[0x08] + b1[0x0B]; - b2[0x0B] = (b1[0x08] - b1[0x0B]) * cos0; - b2[0x09] = b1[0x09] + b1[0x0A]; - b2[0x0A] = (b1[0x09] - b1[0x0A]) * cos1; - - b2[0x0C] = b1[0x0C] + b1[0x0F]; - b2[0x0F] = (b1[0x0F] - b1[0x0C]) * cos0; - b2[0x0D] = b1[0x0D] + b1[0x0E]; - b2[0x0E] = (b1[0x0E] - b1[0x0D]) * cos1; - - b2[0x10] = b1[0x10] + b1[0x13]; - b2[0x13] = (b1[0x10] - b1[0x13]) * cos0; - b2[0x11] = b1[0x11] + b1[0x12]; - b2[0x12] = (b1[0x11] - b1[0x12]) * cos1; - - b2[0x14] = b1[0x14] + b1[0x17]; - b2[0x17] = (b1[0x17] - b1[0x14]) * cos0; - b2[0x15] = b1[0x15] + b1[0x16]; - b2[0x16] = (b1[0x16] - b1[0x15]) * cos1; - - b2[0x18] = b1[0x18] + b1[0x1B]; - b2[0x1B] = (b1[0x18] - b1[0x1B]) * cos0; - b2[0x19] = b1[0x19] + b1[0x1A]; - b2[0x1A] = (b1[0x19] - b1[0x1A]) * cos1; - - b2[0x1C] = b1[0x1C] + b1[0x1F]; - b2[0x1F] = (b1[0x1F] - b1[0x1C]) * cos0; - b2[0x1D] = b1[0x1D] + b1[0x1E]; - b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1; - } - - { - register real const cos0 = pnts[4][0]; - - b1[0x00] = b2[0x00] + b2[0x01]; - b1[0x01] = (b2[0x00] - b2[0x01]) * cos0; - b1[0x02] = b2[0x02] + b2[0x03]; - b1[0x03] = (b2[0x03] - b2[0x02]) * cos0; - b1[0x02] += b1[0x03]; - - b1[0x04] = b2[0x04] + b2[0x05]; - b1[0x05] = (b2[0x04] - b2[0x05]) * cos0; - b1[0x06] = b2[0x06] + b2[0x07]; - b1[0x07] = (b2[0x07] - b2[0x06]) * cos0; - b1[0x06] += b1[0x07]; - b1[0x04] += b1[0x06]; - b1[0x06] += b1[0x05]; - b1[0x05] += b1[0x07]; - - b1[0x08] = b2[0x08] + b2[0x09]; - b1[0x09] = (b2[0x08] - b2[0x09]) * cos0; - b1[0x0A] = b2[0x0A] + b2[0x0B]; - b1[0x0B] = (b2[0x0B] - b2[0x0A]) * cos0; - b1[0x0A] += b1[0x0B]; - - b1[0x0C] = b2[0x0C] + b2[0x0D]; - b1[0x0D] = (b2[0x0C] - b2[0x0D]) * cos0; - b1[0x0E] = b2[0x0E] + b2[0x0F]; - b1[0x0F] = (b2[0x0F] - b2[0x0E]) * cos0; - b1[0x0E] += b1[0x0F]; - b1[0x0C] += b1[0x0E]; - b1[0x0E] += b1[0x0D]; - b1[0x0D] += b1[0x0F]; - - b1[0x10] = b2[0x10] + b2[0x11]; - b1[0x11] = (b2[0x10] - b2[0x11]) * cos0; - b1[0x12] = b2[0x12] + b2[0x13]; - b1[0x13] = (b2[0x13] - b2[0x12]) * cos0; - b1[0x12] += b1[0x13]; - - b1[0x14] = b2[0x14] + b2[0x15]; - b1[0x15] = (b2[0x14] - b2[0x15]) * cos0; - b1[0x16] = b2[0x16] + b2[0x17]; - b1[0x17] = (b2[0x17] - b2[0x16]) * cos0; - b1[0x16] += b1[0x17]; - b1[0x14] += b1[0x16]; - b1[0x16] += b1[0x15]; - b1[0x15] += b1[0x17]; - - b1[0x18] = b2[0x18] + b2[0x19]; - b1[0x19] = (b2[0x18] - b2[0x19]) * cos0; - b1[0x1A] = b2[0x1A] + b2[0x1B]; - b1[0x1B] = (b2[0x1B] - b2[0x1A]) * cos0; - b1[0x1A] += b1[0x1B]; - - b1[0x1C] = b2[0x1C] + b2[0x1D]; - b1[0x1D] = (b2[0x1C] - b2[0x1D]) * cos0; - b1[0x1E] = b2[0x1E] + b2[0x1F]; - b1[0x1F] = (b2[0x1F] - b2[0x1E]) * cos0; - b1[0x1E] += b1[0x1F]; - b1[0x1C] += b1[0x1E]; - b1[0x1E] += b1[0x1D]; - b1[0x1D] += b1[0x1F]; - } - - out0[0x10*16] = b1[0x00]; - out0[0x10*12] = b1[0x04]; - out0[0x10* 8] = b1[0x02]; - out0[0x10* 4] = b1[0x06]; - out0[0x10* 0] = b1[0x01]; - out1[0x10* 0] = b1[0x01]; - out1[0x10* 4] = b1[0x05]; - out1[0x10* 8] = b1[0x03]; - out1[0x10*12] = b1[0x07]; - -#if 1 - out0[0x10*14] = b1[0x08] + b1[0x0C]; - out0[0x10*10] = b1[0x0C] + b1[0x0a]; - out0[0x10* 6] = b1[0x0A] + b1[0x0E]; - out0[0x10* 2] = b1[0x0E] + b1[0x09]; - out1[0x10* 2] = b1[0x09] + b1[0x0D]; - out1[0x10* 6] = b1[0x0D] + b1[0x0B]; - out1[0x10*10] = b1[0x0B] + b1[0x0F]; - out1[0x10*14] = b1[0x0F]; -#else - b1[0x08] += b1[0x0C]; - out0[0x10*14] = b1[0x08]; - b1[0x0C] += b1[0x0a]; - out0[0x10*10] = b1[0x0C]; - b1[0x0A] += b1[0x0E]; - out0[0x10* 6] = b1[0x0A]; - b1[0x0E] += b1[0x09]; - out0[0x10* 2] = b1[0x0E]; - b1[0x09] += b1[0x0D]; - out1[0x10* 2] = b1[0x09]; - b1[0x0D] += b1[0x0B]; - out1[0x10* 6] = b1[0x0D]; - b1[0x0B] += b1[0x0F]; - out1[0x10*10] = b1[0x0B]; - out1[0x10*14] = b1[0x0F]; -#endif - - { - real tmp; - tmp = b1[0x18] + b1[0x1C]; - out0[0x10*15] = tmp + b1[0x10]; - out0[0x10*13] = tmp + b1[0x14]; - tmp = b1[0x1C] + b1[0x1A]; - out0[0x10*11] = tmp + b1[0x14]; - out0[0x10* 9] = tmp + b1[0x12]; - tmp = b1[0x1A] + b1[0x1E]; - out0[0x10* 7] = tmp + b1[0x12]; - out0[0x10* 5] = tmp + b1[0x16]; - tmp = b1[0x1E] + b1[0x19]; - out0[0x10* 3] = tmp + b1[0x16]; - out0[0x10* 1] = tmp + b1[0x11]; - tmp = b1[0x19] + b1[0x1D]; - out1[0x10* 1] = tmp + b1[0x11]; - out1[0x10* 3] = tmp + b1[0x15]; - tmp = b1[0x1D] + b1[0x1B]; - out1[0x10* 5] = tmp + b1[0x15]; - out1[0x10* 7] = tmp + b1[0x13]; - tmp = b1[0x1B] + b1[0x1F]; - out1[0x10* 9] = tmp + b1[0x13]; - out1[0x10*11] = tmp + b1[0x17]; - out1[0x10*13] = b1[0x17] + b1[0x1F]; - out1[0x10*15] = b1[0x1F]; - } -} - -/* - * the call via dct64 is a trick to force GCC to use - * (new) registers for the b1,b2 pointer to the bufs[xx] field - */ -void dct64_i386(real *a,real *b,real *c) -{ - real bufs[0x40]; - dct64_1(a,b,bufs,bufs+0x20,c); -} - diff --git a/src/dct64_i486.c b/src/dct64_i486.c deleted file mode 100644 index 6d53b3ca..00000000 --- a/src/dct64_i486.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - dct64_i486.c: DCT64, a plain C variant for i486 - - copyright 1998-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Fabrice Bellard -*/ - -/* Discrete Cosine Tansform (DCT) for subband synthesis. - * - * This code is optimized for 80486. It should be compiled with gcc - * 2.7.2 or higher. - * - * Note: This code does not give the necessary accuracy. Moreover, no - * overflow test are done. - * - * (c) 1998 Fabrice Bellard. - */ - -#include "mpg123.h" - -#define COS_0_0 16403 -#define COS_0_1 16563 -#define COS_0_2 16890 -#define COS_0_3 17401 -#define COS_0_4 18124 -#define COS_0_5 19101 -#define COS_0_6 20398 -#define COS_0_7 22112 -#define COS_0_8 24396 -#define COS_0_9 27503 -#define COS_0_10 31869 -#define COS_0_11 38320 -#define COS_0_12 48633 -#define COS_0_13 67429 -#define COS_0_14 111660 -#define COS_0_15 333906 -#define COS_1_0 16463 -#define COS_1_1 17121 -#define COS_1_2 18577 -#define COS_1_3 21195 -#define COS_1_4 25826 -#define COS_1_5 34756 -#define COS_1_6 56441 -#define COS_1_7 167154 -#define COS_2_0 16704 -#define COS_2_1 19704 -#define COS_2_2 29490 -#define COS_2_3 83981 -#define COS_3_0 17733 -#define COS_3_1 42813 -#define COS_4_0 23170 - -#define SETOUT(out,n,expr) out[FIR_BUFFER_SIZE*(n)]=(expr) -#define MULL(a,b) (((long long)(a)*(long long)(b)) >> 15) -#define MUL(a,b) \ -(\ - ((!(b & 0x3F)) ? (((a)*(b >> 6)) >> 9) :\ - ((!(b & 0x1F)) ? (((a)*(b >> 5)) >> 10) :\ - ((!(b & 0x0F)) ? (((a)*(b >> 4)) >> 11) :\ - ((!(b & 0x07)) ? (((a)*(b >> 3)) >> 12) :\ - ((!(b & 0x03)) ? (((a)*(b >> 2)) >> 13) :\ - ((!(b & 0x01)) ? (((a)*(b >> 1)) >> 14) :\ - (((a)*(b )) >> 15)))))))) - - -void dct64_1_486(int *out0,int *out1,int *b1,int *b2) -{ - b1[0x00] = b2[0x00] + b2[0x1F]; - b1[0x1F] = MUL((b2[0x00] - b2[0x1F]),COS_0_0); - - b1[0x01] = b2[0x01] + b2[0x1E]; - b1[0x1E] = MUL((b2[0x01] - b2[0x1E]),COS_0_1); - - b1[0x02] = b2[0x02] + b2[0x1D]; - b1[0x1D] = MUL((b2[0x02] - b2[0x1D]),COS_0_2); - - b1[0x03] = b2[0x03] + b2[0x1C]; - b1[0x1C] = MUL((b2[0x03] - b2[0x1C]),COS_0_3); - - b1[0x04] = b2[0x04] + b2[0x1B]; - b1[0x1B] = MUL((b2[0x04] - b2[0x1B]),COS_0_4); - - b1[0x05] = b2[0x05] + b2[0x1A]; - b1[0x1A] = MUL((b2[0x05] - b2[0x1A]),COS_0_5); - - b1[0x06] = b2[0x06] + b2[0x19]; - b1[0x19] = MUL((b2[0x06] - b2[0x19]),COS_0_6); - - b1[0x07] = b2[0x07] + b2[0x18]; - b1[0x18] = MUL((b2[0x07] - b2[0x18]),COS_0_7); - - b1[0x08] = b2[0x08] + b2[0x17]; - b1[0x17] = MUL((b2[0x08] - b2[0x17]),COS_0_8); - - b1[0x09] = b2[0x09] + b2[0x16]; - b1[0x16] = MUL((b2[0x09] - b2[0x16]),COS_0_9); - - b1[0x0A] = b2[0x0A] + b2[0x15]; - b1[0x15] = MUL((b2[0x0A] - b2[0x15]),COS_0_10); - - b1[0x0B] = b2[0x0B] + b2[0x14]; - b1[0x14] = MUL((b2[0x0B] - b2[0x14]),COS_0_11); - - b1[0x0C] = b2[0x0C] + b2[0x13]; - b1[0x13] = MUL((b2[0x0C] - b2[0x13]),COS_0_12); - - b1[0x0D] = b2[0x0D] + b2[0x12]; - b1[0x12] = MULL((b2[0x0D] - b2[0x12]),COS_0_13); - - b1[0x0E] = b2[0x0E] + b2[0x11]; - b1[0x11] = MULL((b2[0x0E] - b2[0x11]),COS_0_14); - - b1[0x0F] = b2[0x0F] + b2[0x10]; - b1[0x10] = MULL((b2[0x0F] - b2[0x10]),COS_0_15); - - - b2[0x00] = b1[0x00] + b1[0x0F]; - b2[0x0F] = MUL((b1[0x00] - b1[0x0F]),COS_1_0); - b2[0x01] = b1[0x01] + b1[0x0E]; - b2[0x0E] = MUL((b1[0x01] - b1[0x0E]),COS_1_1); - b2[0x02] = b1[0x02] + b1[0x0D]; - b2[0x0D] = MUL((b1[0x02] - b1[0x0D]),COS_1_2); - b2[0x03] = b1[0x03] + b1[0x0C]; - b2[0x0C] = MUL((b1[0x03] - b1[0x0C]),COS_1_3); - b2[0x04] = b1[0x04] + b1[0x0B]; - b2[0x0B] = MUL((b1[0x04] - b1[0x0B]),COS_1_4); - b2[0x05] = b1[0x05] + b1[0x0A]; - b2[0x0A] = MUL((b1[0x05] - b1[0x0A]),COS_1_5); - b2[0x06] = b1[0x06] + b1[0x09]; - b2[0x09] = MUL((b1[0x06] - b1[0x09]),COS_1_6); - b2[0x07] = b1[0x07] + b1[0x08]; - b2[0x08] = MULL((b1[0x07] - b1[0x08]),COS_1_7); - - b2[0x10] = b1[0x10] + b1[0x1F]; - b2[0x1F] = MUL((b1[0x1F] - b1[0x10]),COS_1_0); - b2[0x11] = b1[0x11] + b1[0x1E]; - b2[0x1E] = MUL((b1[0x1E] - b1[0x11]),COS_1_1); - b2[0x12] = b1[0x12] + b1[0x1D]; - b2[0x1D] = MUL((b1[0x1D] - b1[0x12]),COS_1_2); - b2[0x13] = b1[0x13] + b1[0x1C]; - b2[0x1C] = MUL((b1[0x1C] - b1[0x13]),COS_1_3); - b2[0x14] = b1[0x14] + b1[0x1B]; - b2[0x1B] = MUL((b1[0x1B] - b1[0x14]),COS_1_4); - b2[0x15] = b1[0x15] + b1[0x1A]; - b2[0x1A] = MUL((b1[0x1A] - b1[0x15]),COS_1_5); - b2[0x16] = b1[0x16] + b1[0x19]; - b2[0x19] = MUL((b1[0x19] - b1[0x16]),COS_1_6); - b2[0x17] = b1[0x17] + b1[0x18]; - b2[0x18] = MULL((b1[0x18] - b1[0x17]),COS_1_7); - - - b1[0x00] = b2[0x00] + b2[0x07]; - b1[0x07] = MUL((b2[0x00] - b2[0x07]),COS_2_0); - b1[0x01] = b2[0x01] + b2[0x06]; - b1[0x06] = MUL((b2[0x01] - b2[0x06]),COS_2_1); - b1[0x02] = b2[0x02] + b2[0x05]; - b1[0x05] = MUL((b2[0x02] - b2[0x05]),COS_2_2); - b1[0x03] = b2[0x03] + b2[0x04]; - b1[0x04] = MULL((b2[0x03] - b2[0x04]),COS_2_3); - - b1[0x08] = b2[0x08] + b2[0x0F]; - b1[0x0F] = MUL((b2[0x0F] - b2[0x08]),COS_2_0); - b1[0x09] = b2[0x09] + b2[0x0E]; - b1[0x0E] = MUL((b2[0x0E] - b2[0x09]),COS_2_1); - b1[0x0A] = b2[0x0A] + b2[0x0D]; - b1[0x0D] = MUL((b2[0x0D] - b2[0x0A]),COS_2_2); - b1[0x0B] = b2[0x0B] + b2[0x0C]; - b1[0x0C] = MULL((b2[0x0C] - b2[0x0B]),COS_2_3); - - b1[0x10] = b2[0x10] + b2[0x17]; - b1[0x17] = MUL((b2[0x10] - b2[0x17]),COS_2_0); - b1[0x11] = b2[0x11] + b2[0x16]; - b1[0x16] = MUL((b2[0x11] - b2[0x16]),COS_2_1); - b1[0x12] = b2[0x12] + b2[0x15]; - b1[0x15] = MUL((b2[0x12] - b2[0x15]),COS_2_2); - b1[0x13] = b2[0x13] + b2[0x14]; - b1[0x14] = MULL((b2[0x13] - b2[0x14]),COS_2_3); - - b1[0x18] = b2[0x18] + b2[0x1F]; - b1[0x1F] = MUL((b2[0x1F] - b2[0x18]),COS_2_0); - b1[0x19] = b2[0x19] + b2[0x1E]; - b1[0x1E] = MUL((b2[0x1E] - b2[0x19]),COS_2_1); - b1[0x1A] = b2[0x1A] + b2[0x1D]; - b1[0x1D] = MUL((b2[0x1D] - b2[0x1A]),COS_2_2); - b1[0x1B] = b2[0x1B] + b2[0x1C]; - b1[0x1C] = MULL((b2[0x1C] - b2[0x1B]),COS_2_3); - - - b2[0x00] = b1[0x00] + b1[0x03]; - b2[0x03] = MUL((b1[0x00] - b1[0x03]),COS_3_0); - b2[0x01] = b1[0x01] + b1[0x02]; - b2[0x02] = MUL((b1[0x01] - b1[0x02]),COS_3_1); - - b2[0x04] = b1[0x04] + b1[0x07]; - b2[0x07] = MUL((b1[0x07] - b1[0x04]),COS_3_0); - b2[0x05] = b1[0x05] + b1[0x06]; - b2[0x06] = MUL((b1[0x06] - b1[0x05]),COS_3_1); - - b2[0x08] = b1[0x08] + b1[0x0B]; - b2[0x0B] = MUL((b1[0x08] - b1[0x0B]),COS_3_0); - b2[0x09] = b1[0x09] + b1[0x0A]; - b2[0x0A] = MUL((b1[0x09] - b1[0x0A]),COS_3_1); - - b2[0x0C] = b1[0x0C] + b1[0x0F]; - b2[0x0F] = MUL((b1[0x0F] - b1[0x0C]),COS_3_0); - b2[0x0D] = b1[0x0D] + b1[0x0E]; - b2[0x0E] = MUL((b1[0x0E] - b1[0x0D]),COS_3_1); - - b2[0x10] = b1[0x10] + b1[0x13]; - b2[0x13] = MUL((b1[0x10] - b1[0x13]),COS_3_0); - b2[0x11] = b1[0x11] + b1[0x12]; - b2[0x12] = MUL((b1[0x11] - b1[0x12]),COS_3_1); - - b2[0x14] = b1[0x14] + b1[0x17]; - b2[0x17] = MUL((b1[0x17] - b1[0x14]),COS_3_0); - b2[0x15] = b1[0x15] + b1[0x16]; - b2[0x16] = MUL((b1[0x16] - b1[0x15]),COS_3_1); - - b2[0x18] = b1[0x18] + b1[0x1B]; - b2[0x1B] = MUL((b1[0x18] - b1[0x1B]),COS_3_0); - b2[0x19] = b1[0x19] + b1[0x1A]; - b2[0x1A] = MUL((b1[0x19] - b1[0x1A]),COS_3_1); - - b2[0x1C] = b1[0x1C] + b1[0x1F]; - b2[0x1F] = MUL((b1[0x1F] - b1[0x1C]),COS_3_0); - b2[0x1D] = b1[0x1D] + b1[0x1E]; - b2[0x1E] = MUL((b1[0x1E] - b1[0x1D]),COS_3_1); - - { - int i; - for(i=0;i<32;i+=4) { - b1[i+0x00] = b2[i+0x00] + b2[i+0x01]; - b1[i+0x01] = MUL((b2[i+0x00] - b2[i+0x01]),COS_4_0); - b1[i+0x02] = b2[i+0x02] + b2[i+0x03]; - b1[i+0x03] = MUL((b2[i+0x03] - b2[i+0x02]),COS_4_0); - } - } - - b1[0x02] += b1[0x03]; - b1[0x06] += b1[0x07]; - b1[0x04] += b1[0x06]; - b1[0x06] += b1[0x05]; - b1[0x05] += b1[0x07]; - - b1[0x0A] += b1[0x0B]; - b1[0x0E] += b1[0x0F]; - b1[0x0C] += b1[0x0E]; - b1[0x0E] += b1[0x0D]; - b1[0x0D] += b1[0x0F]; - - b1[0x12] += b1[0x13]; - b1[0x16] += b1[0x17]; - b1[0x14] += b1[0x16]; - b1[0x16] += b1[0x15]; - b1[0x15] += b1[0x17]; - - b1[0x1A] += b1[0x1B]; - b1[0x1E] += b1[0x1F]; - b1[0x1C] += b1[0x1E]; - b1[0x1E] += b1[0x1D]; - b1[0x1D] += b1[0x1F]; - - SETOUT(out0,16,b1[0x00]); - SETOUT(out0,12,b1[0x04]); - SETOUT(out0, 8,b1[0x02]); - SETOUT(out0, 4,b1[0x06]); - SETOUT(out0, 0,b1[0x01]); - SETOUT(out1, 0,b1[0x01]); - SETOUT(out1, 4,b1[0x05]); - SETOUT(out1, 8,b1[0x03]); - SETOUT(out1,12,b1[0x07]); - - b1[0x08] += b1[0x0C]; - SETOUT(out0,14,b1[0x08]); - b1[0x0C] += b1[0x0a]; - SETOUT(out0,10,b1[0x0C]); - b1[0x0A] += b1[0x0E]; - SETOUT(out0, 6,b1[0x0A]); - b1[0x0E] += b1[0x09]; - SETOUT(out0, 2,b1[0x0E]); - b1[0x09] += b1[0x0D]; - SETOUT(out1, 2,b1[0x09]); - b1[0x0D] += b1[0x0B]; - SETOUT(out1, 6,b1[0x0D]); - b1[0x0B] += b1[0x0F]; - SETOUT(out1,10,b1[0x0B]); - SETOUT(out1,14,b1[0x0F]); - - b1[0x18] += b1[0x1C]; - SETOUT(out0,15,b1[0x10] + b1[0x18]); - SETOUT(out0,13,b1[0x18] + b1[0x14]); - b1[0x1C] += b1[0x1a]; - SETOUT(out0,11,b1[0x14] + b1[0x1C]); - SETOUT(out0, 9,b1[0x1C] + b1[0x12]); - b1[0x1A] += b1[0x1E]; - SETOUT(out0, 7,b1[0x12] + b1[0x1A]); - SETOUT(out0, 5,b1[0x1A] + b1[0x16]); - b1[0x1E] += b1[0x19]; - SETOUT(out0, 3,b1[0x16] + b1[0x1E]); - SETOUT(out0, 1,b1[0x1E] + b1[0x11]); - b1[0x19] += b1[0x1D]; - SETOUT(out1, 1,b1[0x11] + b1[0x19]); - SETOUT(out1, 3,b1[0x19] + b1[0x15]); - b1[0x1D] += b1[0x1B]; - SETOUT(out1, 5,b1[0x15] + b1[0x1D]); - SETOUT(out1, 7,b1[0x1D] + b1[0x13]); - b1[0x1B] += b1[0x1F]; - SETOUT(out1, 9,b1[0x13] + b1[0x1B]); - SETOUT(out1,11,b1[0x1B] + b1[0x17]); - SETOUT(out1,13,b1[0x17] + b1[0x1F]); - SETOUT(out1,15,b1[0x1F]); -} - - -/* - * the call via dct64 is a trick to force GCC to use - * (new) registers for the b1,b2 pointer to the bufs[xx] field - */ -void dct64_i486(int *a,int *b,real *samples) -{ - int bufs[64]; - int i; - -#ifdef REAL_IS_FIXED -#define TOINT(a) ((a) * 32768 / (int)REAL_FACTOR) - - for(i=0;i<32;i++) { - bufs[i]=TOINT(samples[i]); - } -#else - int *p = bufs; - register double const scale = ((65536.0 * 32) + 1) * 65536.0; - - for(i=0;i<32;i++) { - *((double *) (p++)) = scale + *samples++; /* beware on bufs overrun: 8B store from x87 */ - } -#endif - - dct64_1_486(a,b,bufs+32,bufs); -} - diff --git a/src/dct64_mmx.S b/src/dct64_mmx.S deleted file mode 100644 index 45a82131..00000000 --- a/src/dct64_mmx.S +++ /dev/null @@ -1,846 +0,0 @@ -/* - dct64_mmx.s: MMX optimized DCT64 - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by the mysterious higway (apparently) -*/ - -#include "mangle.h" - -.data - ALIGN32 -ASM_NAME(costab): - .long 1056974725 - .long 1057056395 - .long 1057223771 - .long 1057485416 - .long 1057855544 - .long 1058356026 - .long 1059019886 - .long 1059897405 - .long 1061067246 - .long 1062657950 - .long 1064892987 - .long 1066774581 - .long 1069414683 - .long 1073984175 - .long 1079645762 - .long 1092815430 - .long 1057005197 - .long 1057342072 - .long 1058087743 - .long 1059427869 - .long 1061799040 - .long 1065862217 - .long 1071413542 - .long 1084439708 - .long 1057128951 - .long 1058664893 - .long 1063675095 - .long 1076102863 - .long 1057655764 - .long 1067924853 - .long 1060439283 - -.text - - ALIGN32 -.globl ASM_NAME(dct64_mmx) -ASM_NAME(dct64_mmx): - - xorl %ecx,%ecx -.globl ASM_NAME(dct64_MMX) -ASM_NAME(dct64_MMX): - pushl %ebx - pushl %esi - pushl %edi - subl $256,%esp - movl 280(%esp),%eax - flds (%eax) - leal 128(%esp),%edx - fadds 124(%eax) - movl 272(%esp),%esi - fstps (%edx) - movl 276(%esp),%edi - flds 4(%eax) - movl $ASM_NAME(costab),%ebx - fadds 120(%eax) - orl %ecx,%ecx - fstps 4(%edx) - flds (%eax) - movl %esp,%ecx - fsubs 124(%eax) - fmuls (%ebx) - fstps 124(%edx) - flds 4(%eax) - fsubs 120(%eax) - fmuls 4(%ebx) - fstps 120(%edx) - flds 8(%eax) - fadds 116(%eax) - fstps 8(%edx) - flds 12(%eax) - fadds 112(%eax) - fstps 12(%edx) - flds 8(%eax) - fsubs 116(%eax) - fmuls 8(%ebx) - fstps 116(%edx) - flds 12(%eax) - fsubs 112(%eax) - fmuls 12(%ebx) - fstps 112(%edx) - flds 16(%eax) - fadds 108(%eax) - fstps 16(%edx) - flds 20(%eax) - fadds 104(%eax) - fstps 20(%edx) - flds 16(%eax) - fsubs 108(%eax) - fmuls 16(%ebx) - fstps 108(%edx) - flds 20(%eax) - fsubs 104(%eax) - fmuls 20(%ebx) - fstps 104(%edx) - flds 24(%eax) - fadds 100(%eax) - fstps 24(%edx) - flds 28(%eax) - fadds 96(%eax) - fstps 28(%edx) - flds 24(%eax) - fsubs 100(%eax) - fmuls 24(%ebx) - fstps 100(%edx) - flds 28(%eax) - fsubs 96(%eax) - fmuls 28(%ebx) - fstps 96(%edx) - flds 32(%eax) - fadds 92(%eax) - fstps 32(%edx) - flds 36(%eax) - fadds 88(%eax) - fstps 36(%edx) - flds 32(%eax) - fsubs 92(%eax) - fmuls 32(%ebx) - fstps 92(%edx) - flds 36(%eax) - fsubs 88(%eax) - fmuls 36(%ebx) - fstps 88(%edx) - flds 40(%eax) - fadds 84(%eax) - fstps 40(%edx) - flds 44(%eax) - fadds 80(%eax) - fstps 44(%edx) - flds 40(%eax) - fsubs 84(%eax) - fmuls 40(%ebx) - fstps 84(%edx) - flds 44(%eax) - fsubs 80(%eax) - fmuls 44(%ebx) - fstps 80(%edx) - flds 48(%eax) - fadds 76(%eax) - fstps 48(%edx) - flds 52(%eax) - fadds 72(%eax) - fstps 52(%edx) - flds 48(%eax) - fsubs 76(%eax) - fmuls 48(%ebx) - fstps 76(%edx) - flds 52(%eax) - fsubs 72(%eax) - fmuls 52(%ebx) - fstps 72(%edx) - flds 56(%eax) - fadds 68(%eax) - fstps 56(%edx) - flds 60(%eax) - fadds 64(%eax) - fstps 60(%edx) - flds 56(%eax) - fsubs 68(%eax) - fmuls 56(%ebx) - fstps 68(%edx) - flds 60(%eax) - fsubs 64(%eax) - fmuls 60(%ebx) - fstps 64(%edx) - - flds (%edx) - fadds 60(%edx) - fstps (%ecx) - flds 4(%edx) - fadds 56(%edx) - fstps 4(%ecx) - flds (%edx) - fsubs 60(%edx) - fmuls 64(%ebx) - fstps 60(%ecx) - flds 4(%edx) - fsubs 56(%edx) - fmuls 68(%ebx) - fstps 56(%ecx) - flds 8(%edx) - fadds 52(%edx) - fstps 8(%ecx) - flds 12(%edx) - fadds 48(%edx) - fstps 12(%ecx) - flds 8(%edx) - fsubs 52(%edx) - fmuls 72(%ebx) - fstps 52(%ecx) - flds 12(%edx) - fsubs 48(%edx) - fmuls 76(%ebx) - fstps 48(%ecx) - flds 16(%edx) - fadds 44(%edx) - fstps 16(%ecx) - flds 20(%edx) - fadds 40(%edx) - fstps 20(%ecx) - flds 16(%edx) - fsubs 44(%edx) - fmuls 80(%ebx) - fstps 44(%ecx) - flds 20(%edx) - fsubs 40(%edx) - fmuls 84(%ebx) - fstps 40(%ecx) - flds 24(%edx) - fadds 36(%edx) - fstps 24(%ecx) - flds 28(%edx) - fadds 32(%edx) - fstps 28(%ecx) - flds 24(%edx) - fsubs 36(%edx) - fmuls 88(%ebx) - fstps 36(%ecx) - flds 28(%edx) - fsubs 32(%edx) - fmuls 92(%ebx) - fstps 32(%ecx) - - flds 64(%edx) - fadds 124(%edx) - fstps 64(%ecx) - flds 68(%edx) - fadds 120(%edx) - fstps 68(%ecx) - flds 124(%edx) - fsubs 64(%edx) - fmuls 64(%ebx) - fstps 124(%ecx) - flds 120(%edx) - fsubs 68(%edx) - fmuls 68(%ebx) - fstps 120(%ecx) - flds 72(%edx) - fadds 116(%edx) - fstps 72(%ecx) - flds 76(%edx) - fadds 112(%edx) - fstps 76(%ecx) - flds 116(%edx) - fsubs 72(%edx) - fmuls 72(%ebx) - fstps 116(%ecx) - flds 112(%edx) - fsubs 76(%edx) - fmuls 76(%ebx) - fstps 112(%ecx) - flds 80(%edx) - fadds 108(%edx) - fstps 80(%ecx) - flds 84(%edx) - fadds 104(%edx) - fstps 84(%ecx) - flds 108(%edx) - fsubs 80(%edx) - fmuls 80(%ebx) - fstps 108(%ecx) - flds 104(%edx) - fsubs 84(%edx) - fmuls 84(%ebx) - fstps 104(%ecx) - flds 88(%edx) - fadds 100(%edx) - fstps 88(%ecx) - flds 92(%edx) - fadds 96(%edx) - fstps 92(%ecx) - flds 100(%edx) - fsubs 88(%edx) - fmuls 88(%ebx) - fstps 100(%ecx) - flds 96(%edx) - fsubs 92(%edx) - fmuls 92(%ebx) - fstps 96(%ecx) - - flds (%ecx) - fadds 28(%ecx) - fstps (%edx) - flds (%ecx) - fsubs 28(%ecx) - fmuls 96(%ebx) - fstps 28(%edx) - flds 4(%ecx) - fadds 24(%ecx) - fstps 4(%edx) - flds 4(%ecx) - fsubs 24(%ecx) - fmuls 100(%ebx) - fstps 24(%edx) - flds 8(%ecx) - fadds 20(%ecx) - fstps 8(%edx) - flds 8(%ecx) - fsubs 20(%ecx) - fmuls 104(%ebx) - fstps 20(%edx) - flds 12(%ecx) - fadds 16(%ecx) - fstps 12(%edx) - flds 12(%ecx) - fsubs 16(%ecx) - fmuls 108(%ebx) - fstps 16(%edx) - flds 32(%ecx) - fadds 60(%ecx) - fstps 32(%edx) - flds 60(%ecx) - fsubs 32(%ecx) - fmuls 96(%ebx) - fstps 60(%edx) - flds 36(%ecx) - fadds 56(%ecx) - fstps 36(%edx) - flds 56(%ecx) - fsubs 36(%ecx) - fmuls 100(%ebx) - fstps 56(%edx) - flds 40(%ecx) - fadds 52(%ecx) - fstps 40(%edx) - flds 52(%ecx) - fsubs 40(%ecx) - fmuls 104(%ebx) - fstps 52(%edx) - flds 44(%ecx) - fadds 48(%ecx) - fstps 44(%edx) - flds 48(%ecx) - fsubs 44(%ecx) - fmuls 108(%ebx) - fstps 48(%edx) - flds 64(%ecx) - fadds 92(%ecx) - fstps 64(%edx) - flds 64(%ecx) - fsubs 92(%ecx) - fmuls 96(%ebx) - fstps 92(%edx) - flds 68(%ecx) - fadds 88(%ecx) - fstps 68(%edx) - flds 68(%ecx) - fsubs 88(%ecx) - fmuls 100(%ebx) - fstps 88(%edx) - flds 72(%ecx) - fadds 84(%ecx) - fstps 72(%edx) - flds 72(%ecx) - fsubs 84(%ecx) - fmuls 104(%ebx) - fstps 84(%edx) - flds 76(%ecx) - fadds 80(%ecx) - fstps 76(%edx) - flds 76(%ecx) - fsubs 80(%ecx) - fmuls 108(%ebx) - fstps 80(%edx) - flds 96(%ecx) - fadds 124(%ecx) - fstps 96(%edx) - flds 124(%ecx) - fsubs 96(%ecx) - fmuls 96(%ebx) - fstps 124(%edx) - flds 100(%ecx) - fadds 120(%ecx) - fstps 100(%edx) - flds 120(%ecx) - fsubs 100(%ecx) - fmuls 100(%ebx) - fstps 120(%edx) - flds 104(%ecx) - fadds 116(%ecx) - fstps 104(%edx) - flds 116(%ecx) - fsubs 104(%ecx) - fmuls 104(%ebx) - fstps 116(%edx) - flds 108(%ecx) - fadds 112(%ecx) - fstps 108(%edx) - flds 112(%ecx) - fsubs 108(%ecx) - fmuls 108(%ebx) - fstps 112(%edx) - flds (%edx) - fadds 12(%edx) - fstps (%ecx) - flds (%edx) - fsubs 12(%edx) - fmuls 112(%ebx) - fstps 12(%ecx) - flds 4(%edx) - fadds 8(%edx) - fstps 4(%ecx) - flds 4(%edx) - fsubs 8(%edx) - fmuls 116(%ebx) - fstps 8(%ecx) - flds 16(%edx) - fadds 28(%edx) - fstps 16(%ecx) - flds 28(%edx) - fsubs 16(%edx) - fmuls 112(%ebx) - fstps 28(%ecx) - flds 20(%edx) - fadds 24(%edx) - fstps 20(%ecx) - flds 24(%edx) - fsubs 20(%edx) - fmuls 116(%ebx) - fstps 24(%ecx) - flds 32(%edx) - fadds 44(%edx) - fstps 32(%ecx) - flds 32(%edx) - fsubs 44(%edx) - fmuls 112(%ebx) - fstps 44(%ecx) - flds 36(%edx) - fadds 40(%edx) - fstps 36(%ecx) - flds 36(%edx) - fsubs 40(%edx) - fmuls 116(%ebx) - fstps 40(%ecx) - flds 48(%edx) - fadds 60(%edx) - fstps 48(%ecx) - flds 60(%edx) - fsubs 48(%edx) - fmuls 112(%ebx) - fstps 60(%ecx) - flds 52(%edx) - fadds 56(%edx) - fstps 52(%ecx) - flds 56(%edx) - fsubs 52(%edx) - fmuls 116(%ebx) - fstps 56(%ecx) - flds 64(%edx) - fadds 76(%edx) - fstps 64(%ecx) - flds 64(%edx) - fsubs 76(%edx) - fmuls 112(%ebx) - fstps 76(%ecx) - flds 68(%edx) - fadds 72(%edx) - fstps 68(%ecx) - flds 68(%edx) - fsubs 72(%edx) - fmuls 116(%ebx) - fstps 72(%ecx) - flds 80(%edx) - fadds 92(%edx) - fstps 80(%ecx) - flds 92(%edx) - fsubs 80(%edx) - fmuls 112(%ebx) - fstps 92(%ecx) - flds 84(%edx) - fadds 88(%edx) - fstps 84(%ecx) - flds 88(%edx) - fsubs 84(%edx) - fmuls 116(%ebx) - fstps 88(%ecx) - flds 96(%edx) - fadds 108(%edx) - fstps 96(%ecx) - flds 96(%edx) - fsubs 108(%edx) - fmuls 112(%ebx) - fstps 108(%ecx) - flds 100(%edx) - fadds 104(%edx) - fstps 100(%ecx) - flds 100(%edx) - fsubs 104(%edx) - fmuls 116(%ebx) - fstps 104(%ecx) - flds 112(%edx) - fadds 124(%edx) - fstps 112(%ecx) - flds 124(%edx) - fsubs 112(%edx) - fmuls 112(%ebx) - fstps 124(%ecx) - flds 116(%edx) - fadds 120(%edx) - fstps 116(%ecx) - flds 120(%edx) - fsubs 116(%edx) - fmuls 116(%ebx) - fstps 120(%ecx) - - flds 32(%ecx) - fadds 36(%ecx) - fstps 32(%edx) - flds 32(%ecx) - fsubs 36(%ecx) - fmuls 120(%ebx) - fstps 36(%edx) - flds 44(%ecx) - fsubs 40(%ecx) - fmuls 120(%ebx) - fsts 44(%edx) - fadds 40(%ecx) - fadds 44(%ecx) - fstps 40(%edx) - flds 48(%ecx) - fsubs 52(%ecx) - fmuls 120(%ebx) - flds 60(%ecx) - fsubs 56(%ecx) - fmuls 120(%ebx) - fld %st(0) - fadds 56(%ecx) - fadds 60(%ecx) - fld %st(0) - fadds 48(%ecx) - fadds 52(%ecx) - fstps 48(%edx) - fadd %st(2) - fstps 56(%edx) - fsts 60(%edx) - faddp %st(1) - fstps 52(%edx) - flds 64(%ecx) - fadds 68(%ecx) - fstps 64(%edx) - flds 64(%ecx) - fsubs 68(%ecx) - fmuls 120(%ebx) - fstps 68(%edx) - flds 76(%ecx) - fsubs 72(%ecx) - fmuls 120(%ebx) - fsts 76(%edx) - fadds 72(%ecx) - fadds 76(%ecx) - fstps 72(%edx) - flds 92(%ecx) - fsubs 88(%ecx) - fmuls 120(%ebx) - fsts 92(%edx) - fadds 92(%ecx) - fadds 88(%ecx) - fld %st(0) - fadds 80(%ecx) - fadds 84(%ecx) - fstps 80(%edx) - flds 80(%ecx) - fsubs 84(%ecx) - fmuls 120(%ebx) - fadd %st(0), %st(1) - fadds 92(%edx) - fstps 84(%edx) - fstps 88(%edx) - flds 96(%ecx) - fadds 100(%ecx) - fstps 96(%edx) - flds 96(%ecx) - fsubs 100(%ecx) - fmuls 120(%ebx) - fstps 100(%edx) - flds 108(%ecx) - fsubs 104(%ecx) - fmuls 120(%ebx) - fsts 108(%edx) - fadds 104(%ecx) - fadds 108(%ecx) - fstps 104(%edx) - flds 124(%ecx) - fsubs 120(%ecx) - fmuls 120(%ebx) - fsts 124(%edx) - fadds 120(%ecx) - fadds 124(%ecx) - fld %st(0) - fadds 112(%ecx) - fadds 116(%ecx) - fstps 112(%edx) - flds 112(%ecx) - fsubs 116(%ecx) - fmuls 120(%ebx) - fadd %st(0),%st(1) - fadds 124(%edx) - fstps 116(%edx) - fstps 120(%edx) - jnz .L01 - - flds (%ecx) - fadds 4(%ecx) - fstps 1024(%esi) - flds (%ecx) - fsubs 4(%ecx) - fmuls 120(%ebx) - fsts (%esi) - fstps (%edi) - flds 12(%ecx) - fsubs 8(%ecx) - fmuls 120(%ebx) - fsts 512(%edi) - fadds 12(%ecx) - fadds 8(%ecx) - fstps 512(%esi) - flds 16(%ecx) - fsubs 20(%ecx) - fmuls 120(%ebx) - flds 28(%ecx) - fsubs 24(%ecx) - fmuls 120(%ebx) - fsts 768(%edi) - fld %st(0) - fadds 24(%ecx) - fadds 28(%ecx) - fld %st(0) - fadds 16(%ecx) - fadds 20(%ecx) - fstps 768(%esi) - fadd %st(2) - fstps 256(%esi) - faddp %st(1) - fstps 256(%edi) - - flds 32(%edx) - fadds 48(%edx) - fstps 896(%esi) - flds 48(%edx) - fadds 40(%edx) - fstps 640(%esi) - flds 40(%edx) - fadds 56(%edx) - fstps 384(%esi) - flds 56(%edx) - fadds 36(%edx) - fstps 128(%esi) - flds 36(%edx) - fadds 52(%edx) - fstps 128(%edi) - flds 52(%edx) - fadds 44(%edx) - fstps 384(%edi) - flds 60(%edx) - fsts 896(%edi) - fadds 44(%edx) - fstps 640(%edi) - flds 96(%edx) - fadds 112(%edx) - fld %st(0) - fadds 64(%edx) - fstps 960(%esi) - fadds 80(%edx) - fstps 832(%esi) - flds 112(%edx) - fadds 104(%edx) - fld %st(0) - fadds 80(%edx) - fstps 704(%esi) - fadds 72(%edx) - fstps 576(%esi) - flds 104(%edx) - fadds 120(%edx) - fld %st(0) - fadds 72(%edx) - fstps 448(%esi) - fadds 88(%edx) - fstps 320(%esi) - flds 120(%edx) - fadds 100(%edx) - fld %st(0) - fadds 88(%edx) - fstps 192(%esi) - fadds 68(%edx) - fstps 64(%esi) - flds 100(%edx) - fadds 116(%edx) - fld %st(0) - fadds 68(%edx) - fstps 64(%edi) - fadds 84(%edx) - fstps 192(%edi) - flds 116(%edx) - fadds 108(%edx) - fld %st(0) - fadds 84(%edx) - fstps 320(%edi) - fadds 76(%edx) - fstps 448(%edi) - flds 108(%edx) - fadds 124(%edx) - fld %st(0) - fadds 76(%edx) - fstps 576(%edi) - fadds 92(%edx) - fstps 704(%edi) - flds 124(%edx) - fsts 960(%edi) - fadds 92(%edx) - fstps 832(%edi) - addl $256,%esp - popl %edi - popl %esi - popl %ebx - ret -.L01: - flds (%ecx) - fadds 4(%ecx) - fistp 512(%esi) - flds (%ecx) - fsubs 4(%ecx) - fmuls 120(%ebx) - - fistp (%esi) - - flds 12(%ecx) - fsubs 8(%ecx) - fmuls 120(%ebx) - fist 256(%edi) - fadds 12(%ecx) - fadds 8(%ecx) - fistp 256(%esi) - flds 16(%ecx) - fsubs 20(%ecx) - fmuls 120(%ebx) - flds 28(%ecx) - fsubs 24(%ecx) - fmuls 120(%ebx) - fist 384(%edi) - fld %st(0) - fadds 24(%ecx) - fadds 28(%ecx) - fld %st(0) - fadds 16(%ecx) - fadds 20(%ecx) - fistp 384(%esi) - fadd %st(2) - fistp 128(%esi) - faddp %st(1) - fistp 128(%edi) - - flds 32(%edx) - fadds 48(%edx) - fistp 448(%esi) - flds 48(%edx) - fadds 40(%edx) - fistp 320(%esi) - flds 40(%edx) - fadds 56(%edx) - fistp 192(%esi) - flds 56(%edx) - fadds 36(%edx) - fistp 64(%esi) - flds 36(%edx) - fadds 52(%edx) - fistp 64(%edi) - flds 52(%edx) - fadds 44(%edx) - fistp 192(%edi) - flds 60(%edx) - fist 448(%edi) - fadds 44(%edx) - fistp 320(%edi) - flds 96(%edx) - fadds 112(%edx) - fld %st(0) - fadds 64(%edx) - fistp 480(%esi) - fadds 80(%edx) - fistp 416(%esi) - flds 112(%edx) - fadds 104(%edx) - fld %st(0) - fadds 80(%edx) - fistp 352(%esi) - fadds 72(%edx) - fistp 288(%esi) - flds 104(%edx) - fadds 120(%edx) - fld %st(0) - fadds 72(%edx) - fistp 224(%esi) - fadds 88(%edx) - fistp 160(%esi) - flds 120(%edx) - fadds 100(%edx) - fld %st(0) - fadds 88(%edx) - fistp 96(%esi) - fadds 68(%edx) - fistp 32(%esi) - flds 100(%edx) - fadds 116(%edx) - fld %st(0) - fadds 68(%edx) - fistp 32(%edi) - fadds 84(%edx) - fistp 96(%edi) - flds 116(%edx) - fadds 108(%edx) - fld %st(0) - fadds 84(%edx) - fistp 160(%edi) - fadds 76(%edx) - fistp 224(%edi) - flds 108(%edx) - fadds 124(%edx) - fld %st(0) - fadds 76(%edx) - fistp 288(%edi) - fadds 92(%edx) - fistp 352(%edi) - flds 124(%edx) - fist 480(%edi) - fadds 92(%edx) - fistp 416(%edi) - movsw - addl $256,%esp - popl %edi - popl %esi - popl %ebx - ret - - diff --git a/src/dct64_sse.S b/src/dct64_sse.S deleted file mode 100644 index 36e7d640..00000000 --- a/src/dct64_sse.S +++ /dev/null @@ -1,557 +0,0 @@ -/* - dct64_sse: MMX/SSE optimized dct64 - - copyright 2006-2007 by Zuxy Meng / the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by the mysterious higway for MMX (apparently) - then developed into SSE opt by Zuxy Meng, also building on Romain Dolbeau's AltiVec - Both have agreed to distribution under LGPL 2.1 . - - Transformed back into standalone asm, with help of - gcc -S -DHAVE_CONFIG_H -I. -march=pentium3 -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o dct64_sse.{S,c} - - Original comment from MPlayer source follows: -*/ - -/* - * Discrete Cosine Tansform (DCT) for SSE - * based upon code from mp3lib/dct64.c, mp3lib/dct64_altivec.c - * and mp3lib/dct64_MMX.c - */ - -#include "mangle.h" - -#ifndef __APPLE__ - .section .rodata -#else - .data -#endif - ALIGN16 - /* .type nnnn, @object - .size nnnn, 16 */ -nnnn: - .long -2147483648 - .long -2147483648 - .long -2147483648 - .long -2147483648 - ALIGN16 - /* .type ppnn, @object - .size ppnn, 16 */ -ppnn: - .long 0 - .long 0 - .long -2147483648 - .long -2147483648 - ALIGN16 - /* .type pnpn, @object - .size pnpn, 16 */ -pnpn: - .long 0 - .long -2147483648 - .long 0 - .long -2147483648 - ALIGN4 - /* .type one.4748, @object - .size one.4748, 4 */ -one.4748: - .long 1065353216 - - /* no .data ? */ - /* .local b2.4747 */ - ALIGN16 - COMM(b2.4747,128,16) - /* .local b1.4746 */ - ALIGN16 - COMM(b1.4746,128,16) - - .text - ALIGN16,,15 -.globl ASM_NAME(dct64_sse) - /* .type ASM_NAME(dct64_sse), @function */ -ASM_NAME(dct64_sse): - pushl %ebp - movl %esp, %ebp - movl 16(%ebp), %eax - pushl %ebx - movl 8(%ebp), %ecx -#APP -/* for (i = 0; i < 0x20 / 2; i += 4) cycle 1 */ - movaps ASM_NAME(costab_mmxsse), %xmm3 - shufps $27, %xmm3, %xmm3 - MOVUAPS (%eax), %xmm1 - movaps %xmm1, %xmm4 - MOVUAPS 112(%eax), %xmm2 - shufps $27, %xmm4, %xmm4 - movaps %xmm2, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b1.4746 - subps %xmm2, %xmm4 - mulps %xmm3, %xmm4 - movaps %xmm4, b1.4746+112 - -#NO_APP - movl 12(%ebp), %ebx -#APP -/* for (i = 0; i < 0x20 / 2; i += 4) cycle 2 */ - movaps ASM_NAME(costab_mmxsse)+16, %xmm3 - shufps $27, %xmm3, %xmm3 - MOVUAPS 16(%eax), %xmm1 - movaps %xmm1, %xmm4 - MOVUAPS 96(%eax), %xmm2 - shufps $27, %xmm4, %xmm4 - movaps %xmm2, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b1.4746+16 - subps %xmm2, %xmm4 - mulps %xmm3, %xmm4 - movaps %xmm4, b1.4746+96 - -/* for (i = 0; i < 0x20 / 2; i += 4) cycle 3 */ - movaps ASM_NAME(costab_mmxsse)+32, %xmm3 - shufps $27, %xmm3, %xmm3 - MOVUAPS 32(%eax), %xmm1 - movaps %xmm1, %xmm4 - MOVUAPS 80(%eax), %xmm2 - shufps $27, %xmm4, %xmm4 - movaps %xmm2, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b1.4746+32 - subps %xmm2, %xmm4 - mulps %xmm3, %xmm4 - movaps %xmm4, b1.4746+80 - -/* for (i = 0; i < 0x20 / 2; i += 4) cycle 4 */ - movaps ASM_NAME(costab_mmxsse)+48, %xmm3 - shufps $27, %xmm3, %xmm3 - MOVUAPS 48(%eax), %xmm1 - movaps %xmm1, %xmm4 - MOVUAPS 64(%eax), %xmm2 - shufps $27, %xmm4, %xmm4 - movaps %xmm2, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b1.4746+48 - subps %xmm2, %xmm4 - mulps %xmm3, %xmm4 - movaps %xmm4, b1.4746+64 - - movaps b1.4746, %xmm1 - movaps b1.4746+16, %xmm3 - movaps b1.4746+32, %xmm4 - movaps b1.4746+48, %xmm6 - movaps %xmm1, %xmm7 - shufps $27, %xmm7, %xmm7 - movaps %xmm3, %xmm5 - shufps $27, %xmm5, %xmm5 - movaps %xmm4, %xmm2 - shufps $27, %xmm2, %xmm2 - movaps %xmm6, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b2.4747 - addps %xmm2, %xmm3 - movaps %xmm3, b2.4747+16 - subps %xmm4, %xmm5 - movaps %xmm5, b2.4747+32 - subps %xmm6, %xmm7 - movaps %xmm7, b2.4747+48 - - movaps b1.4746+64, %xmm1 - movaps b1.4746+80, %xmm3 - movaps b1.4746+96, %xmm4 - movaps b1.4746+112, %xmm6 - movaps %xmm1, %xmm7 - shufps $27, %xmm7, %xmm7 - movaps %xmm3, %xmm5 - shufps $27, %xmm5, %xmm5 - movaps %xmm4, %xmm2 - shufps $27, %xmm2, %xmm2 - movaps %xmm6, %xmm0 - shufps $27, %xmm0, %xmm0 - addps %xmm0, %xmm1 - movaps %xmm1, b2.4747+64 - addps %xmm2, %xmm3 - movaps %xmm3, b2.4747+80 - subps %xmm4, %xmm5 - movaps %xmm5, b2.4747+96 - subps %xmm6, %xmm7 - movaps %xmm7, b2.4747+112 - - movaps b2.4747+32, %xmm0 - movaps b2.4747+48, %xmm1 - movaps ASM_NAME(costab_mmxsse)+64, %xmm4 - xorps %xmm6, %xmm6 - shufps $27, %xmm4, %xmm4 - mulps %xmm4, %xmm1 - movaps ASM_NAME(costab_mmxsse)+80, %xmm2 - xorps %xmm7, %xmm7 - shufps $27, %xmm2, %xmm2 - mulps %xmm2, %xmm0 - movaps %xmm0, b2.4747+32 - movaps %xmm1, b2.4747+48 - movaps b2.4747+96, %xmm3 - mulps %xmm2, %xmm3 - subps %xmm3, %xmm6 - movaps %xmm6, b2.4747+96 - movaps b2.4747+112, %xmm5 - mulps %xmm4, %xmm5 - subps %xmm5, %xmm7 - movaps %xmm7, b2.4747+112 - - movaps ASM_NAME(costab_mmxsse)+96, %xmm0 - shufps $27, %xmm0, %xmm0 - movaps nnnn, %xmm5 - movaps %xmm5, %xmm6 - - movaps b2.4747, %xmm2 - movaps b2.4747+16, %xmm3 - movaps %xmm2, %xmm4 - xorps %xmm5, %xmm6 - shufps $27, %xmm4, %xmm4 - movaps %xmm3, %xmm1 - shufps $27, %xmm1, %xmm1 - addps %xmm1, %xmm2 - movaps %xmm2, b1.4746 - subps %xmm3, %xmm4 - xorps %xmm6, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b1.4746+16 - - movaps b2.4747+32, %xmm2 - movaps b2.4747+48, %xmm3 - movaps %xmm2, %xmm4 - xorps %xmm5, %xmm6 - shufps $27, %xmm4, %xmm4 - movaps %xmm3, %xmm1 - shufps $27, %xmm1, %xmm1 - addps %xmm1, %xmm2 - movaps %xmm2, b1.4746+32 - subps %xmm3, %xmm4 - xorps %xmm6, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b1.4746+48 - - movaps b2.4747+64, %xmm2 - movaps b2.4747+80, %xmm3 - movaps %xmm2, %xmm4 - xorps %xmm5, %xmm6 - shufps $27, %xmm4, %xmm4 - movaps %xmm3, %xmm1 - shufps $27, %xmm1, %xmm1 - addps %xmm1, %xmm2 - movaps %xmm2, b1.4746+64 - subps %xmm3, %xmm4 - xorps %xmm6, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b1.4746+80 - - movaps b2.4747+96, %xmm2 - movaps b2.4747+112, %xmm3 - movaps %xmm2, %xmm4 - xorps %xmm5, %xmm6 - shufps $27, %xmm4, %xmm4 - movaps %xmm3, %xmm1 - shufps $27, %xmm1, %xmm1 - addps %xmm1, %xmm2 - movaps %xmm2, b1.4746+96 - subps %xmm3, %xmm4 - xorps %xmm6, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b1.4746+112 - - movss one.4748, %xmm1 - movss ASM_NAME(costab_mmxsse)+112, %xmm0 - movaps %xmm1, %xmm3 - unpcklps %xmm0, %xmm3 - movss ASM_NAME(costab_mmxsse)+116, %xmm2 - movaps %xmm1, %xmm0 - unpcklps %xmm2, %xmm0 - unpcklps %xmm3, %xmm0 - movaps ppnn, %xmm2 - - movaps b1.4746, %xmm3 - movaps %xmm3, %xmm4 - shufps $20, %xmm4, %xmm4 - shufps $235, %xmm3, %xmm3 - xorps %xmm2, %xmm3 - addps %xmm3, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b2.4747 - movaps b1.4746+16, %xmm6 - movaps %xmm6, %xmm5 - shufps $27, %xmm5, %xmm5 - xorps %xmm2, %xmm5 - addps %xmm5, %xmm6 - mulps %xmm0, %xmm6 - movaps %xmm6, b2.4747+16 - - movaps b1.4746+32, %xmm3 - movaps %xmm3, %xmm4 - shufps $20, %xmm4, %xmm4 - shufps $235, %xmm3, %xmm3 - xorps %xmm2, %xmm3 - addps %xmm3, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b2.4747+32 - movaps b1.4746+48, %xmm6 - movaps %xmm6, %xmm5 - shufps $27, %xmm5, %xmm5 - xorps %xmm2, %xmm5 - addps %xmm5, %xmm6 - mulps %xmm0, %xmm6 - movaps %xmm6, b2.4747+48 - - movaps b1.4746+64, %xmm3 - movaps %xmm3, %xmm4 - shufps $20, %xmm4, %xmm4 - shufps $235, %xmm3, %xmm3 - xorps %xmm2, %xmm3 - addps %xmm3, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b2.4747+64 - movaps b1.4746+80, %xmm6 - movaps %xmm6, %xmm5 - shufps $27, %xmm5, %xmm5 - xorps %xmm2, %xmm5 - addps %xmm5, %xmm6 - mulps %xmm0, %xmm6 - movaps %xmm6, b2.4747+80 - - movaps b1.4746+96, %xmm3 - movaps %xmm3, %xmm4 - shufps $20, %xmm4, %xmm4 - shufps $235, %xmm3, %xmm3 - xorps %xmm2, %xmm3 - addps %xmm3, %xmm4 - mulps %xmm0, %xmm4 - movaps %xmm4, b2.4747+96 - movaps b1.4746+112, %xmm6 - movaps %xmm6, %xmm5 - shufps $27, %xmm5, %xmm5 - xorps %xmm2, %xmm5 - addps %xmm5, %xmm6 - mulps %xmm0, %xmm6 - movaps %xmm6, b2.4747+112 - - movss ASM_NAME(costab_mmxsse)+120, %xmm0 - movaps %xmm1, %xmm2 - movaps %xmm0, %xmm7 - unpcklps %xmm1, %xmm2 - unpcklps %xmm0, %xmm7 - movaps pnpn, %xmm0 - unpcklps %xmm7, %xmm2 - - movaps b2.4747+32, %xmm1 - movaps %xmm1, %xmm3 - shufps $224, %xmm3, %xmm3 - shufps $181, %xmm1, %xmm1 - xorps %xmm0, %xmm1 - addps %xmm1, %xmm3 - mulps %xmm2, %xmm3 - movaps %xmm3, b1.4746+32 - movaps b2.4747+48, %xmm4 - movaps %xmm4, %xmm5 - shufps $224, %xmm5, %xmm5 - shufps $181, %xmm4, %xmm4 - xorps %xmm0, %xmm4 - addps %xmm4, %xmm5 - mulps %xmm2, %xmm5 - movaps %xmm5, b1.4746+48 - - movaps b2.4747+64, %xmm1 - movaps %xmm1, %xmm3 - shufps $224, %xmm3, %xmm3 - shufps $181, %xmm1, %xmm1 - xorps %xmm0, %xmm1 - addps %xmm1, %xmm3 - mulps %xmm2, %xmm3 - movaps %xmm3, b1.4746+64 - movaps b2.4747+80, %xmm4 - movaps %xmm4, %xmm5 - shufps $224, %xmm5, %xmm5 - shufps $181, %xmm4, %xmm4 - xorps %xmm0, %xmm4 - addps %xmm4, %xmm5 - mulps %xmm2, %xmm5 - movaps %xmm5, b1.4746+80 - - movaps b2.4747+96, %xmm1 - movaps %xmm1, %xmm3 - shufps $224, %xmm3, %xmm3 - shufps $181, %xmm1, %xmm1 - xorps %xmm0, %xmm1 - addps %xmm1, %xmm3 - mulps %xmm2, %xmm3 - movaps %xmm3, b1.4746+96 - movaps b2.4747+112, %xmm4 - movaps %xmm4, %xmm5 - shufps $224, %xmm5, %xmm5 - shufps $181, %xmm4, %xmm4 - xorps %xmm0, %xmm4 - addps %xmm4, %xmm5 - mulps %xmm2, %xmm5 - movaps %xmm5, b1.4746+112 - -#NO_APP - flds b1.4746+40 - movl $b1.4746, %edx - movl $b2.4747, %eax - fadds b1.4746+44 - fstps b1.4746+40 - flds b1.4746+56 - fadds b1.4746+60 - flds b1.4746+48 - fadd %st(1), %st - fstps b1.4746+48 - fadds b1.4746+52 - fstps b1.4746+56 - flds b1.4746+52 - fadds b1.4746+60 - fstps b1.4746+52 - flds b1.4746+72 - fadds b1.4746+76 - fstps b1.4746+72 - flds b1.4746+88 - fadds b1.4746+92 - flds b1.4746+80 - fadd %st(1), %st - fstps b1.4746+80 - fadds b1.4746+84 - fstps b1.4746+88 - flds b1.4746+84 - fadds b1.4746+92 - fstps b1.4746+84 - flds b1.4746+104 - fadds b1.4746+108 - fstps b1.4746+104 - flds b1.4746+120 - fadds b1.4746+124 - flds b1.4746+112 - fadd %st(1), %st - fstps b1.4746+112 - fadds b1.4746+116 - fstps b1.4746+120 - flds b1.4746+116 - fadds b1.4746+124 - fstps b1.4746+116 -#APP - flds ASM_NAME(costab_mmxsse)+120 - flds (%eax) - fadds 4(%eax) - fistp 512(%ecx) - flds (%eax) - fsubs 4(%eax) - fmul %st(1) - fistp (%ecx) - flds 12(%eax) - fsubs 8(%eax) - fmul %st(1) - fist 256(%ebx) - fadds 12(%eax) - fadds 8(%eax) - fistp 256(%ecx) - flds 16(%eax) - fsubs 20(%eax) - fmul %st(1) - flds 28(%eax) - fsubs 24(%eax) - fmul %st(2) - fist 384(%ebx) - fld %st(0) - fadds 24(%eax) - fadds 28(%eax) - fld %st(0) - fadds 16(%eax) - fadds 20(%eax) - fistp 384(%ecx) - fadd %st(2) - fistp 128(%ecx) - faddp %st(1) - fistp 128(%ebx) - flds 32(%edx) - fadds 48(%edx) - fistp 448(%ecx) - flds 48(%edx) - fadds 40(%edx) - fistp 320(%ecx) - flds 40(%edx) - fadds 56(%edx) - fistp 192(%ecx) - flds 56(%edx) - fadds 36(%edx) - fistp 64(%ecx) - flds 36(%edx) - fadds 52(%edx) - fistp 64(%ebx) - flds 52(%edx) - fadds 44(%edx) - fistp 192(%ebx) - flds 60(%edx) - fist 448(%ebx) - fadds 44(%edx) - fistp 320(%ebx) - flds 96(%edx) - fadds 112(%edx) - fld %st(0) - fadds 64(%edx) - fistp 480(%ecx) - fadds 80(%edx) - fistp 416(%ecx) - flds 112(%edx) - fadds 104(%edx) - fld %st(0) - fadds 80(%edx) - fistp 352(%ecx) - fadds 72(%edx) - fistp 288(%ecx) - flds 104(%edx) - fadds 120(%edx) - fld %st(0) - fadds 72(%edx) - fistp 224(%ecx) - fadds 88(%edx) - fistp 160(%ecx) - flds 120(%edx) - fadds 100(%edx) - fld %st(0) - fadds 88(%edx) - fistp 96(%ecx) - fadds 68(%edx) - fistp 32(%ecx) - flds 100(%edx) - fadds 116(%edx) - fld %st(0) - fadds 68(%edx) - fistp 32(%ebx) - fadds 84(%edx) - fistp 96(%ebx) - flds 116(%edx) - fadds 108(%edx) - fld %st(0) - fadds 84(%edx) - fistp 160(%ebx) - fadds 76(%edx) - fistp 224(%ebx) - flds 108(%edx) - fadds 124(%edx) - fld %st(0) - fadds 76(%edx) - fistp 288(%ebx) - fadds 92(%edx) - fistp 352(%ebx) - flds 124(%edx) - fist 480(%ebx) - fadds 92(%edx) - fistp 416(%ebx) - ffreep %st(0) - -#NO_APP - movzwl (%ecx), %eax - movw %ax, (%ebx) - popl %ebx - popl %ebp - ret - /* .size ASM_NAME(dct64_sse), .-ASM_NAME(dct64_sse) */ diff --git a/src/debug.h b/src/debug.h deleted file mode 100644 index 12b2bf3a..00000000 --- a/src/debug.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - debug.h: - if DEBUG defined: debugging macro fprintf wrappers - else: macros defined to do nothing - That saves typing #ifdef DEBUG all the time and still preserves - lean code without debugging. - - public domain (or LGPL / GPL, if you like that more;-) - generated by debugdef.pl, what was - trivially written by Thomas Orgis -*/ - -/* - I could do that with variadic macros available: - #define sdebug(me, s) fprintf(stderr, "[location] " s "\n") - #define debug(me, s, ...) fprintf(stderr, "[location] " s "}n", __VA_ARGS__) - - Variadic macros are a C99 feature... - Now just predefining stuff non-variadic for up to 10 arguments. - It's cumbersome to have them all with different names, though... -*/ - -#ifdef DEBUG -#include -#define debug(s) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__) -#define debug1(s, a) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a) -#define debug2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b) -#define debug3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c) -#define debug4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d) -#define debug5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e) -#define debug6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f) -#define debug7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define debug8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define debug9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define debug10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) -#else -#define debug(s) -#define debug1(s, a) -#define debug2(s, a, b) -#define debug3(s, a, b, c) -#define debug4(s, a, b, c, d) -#define debug5(s, a, b, c, d, e) -#define debug6(s, a, b, c, d, e, f) -#define debug7(s, a, b, c, d, e, f, g) -#define debug8(s, a, b, c, d, e, f, g, h) -#define debug9(s, a, b, c, d, e, f, g, h, i) -#define debug10(s, a, b, c, d, e, f, g, h, i, j) -#endif - -/* warning macros also here... */ -#define warning(s) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__) -#define warning1(s, a) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a) -#define warning2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b) -#define warning3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c) -#define warning4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d) -#define warning5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e) -#define warning6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f) -#define warning7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define warning8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define warning9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define warning10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) - -/* error macros also here... */ -#define error(s) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__) -#define error1(s, a) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a) -#define error2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b) -#define error3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c) -#define error4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d) -#define error5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e) -#define error6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f) -#define error7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define error8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define error9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define error10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) diff --git a/src/decode.c b/src/decode.c deleted file mode 100644 index bb09057e..00000000 --- a/src/decode.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - decode.c: decoding samples... - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include -#include - -#include "mpg123.h" -#include "decode.h" - -/* 8bit functions silenced for FLOATOUT */ - -int synth_1to1_8bit(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[64]; - sample_t *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1=0; - - ret = synth_1to1(bandPtr,channel,(unsigned char *) samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<32;i++) { -#ifdef FLOATOUT - *samples = 0; -#else - *samples = conv16to8[*tmp1>>AUSHIFT]; -#endif - samples += 2; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_8bit_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { -#ifdef FLOATOUT - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 32; - - return ret; -} - -int synth_1to1_8bit_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { -#ifdef FLOATOUT - *samples++ = 0; - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *( (sample_t *)samples) = *tmp1; - samples += sizeof(sample_t); - tmp1 += 2; - } - *pnt += 32*sizeof(sample_t); - - return ret; -} - - -int synth_1to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - - ret = synth_1to1(bandPtr,0,samples,pnt); - samples = samples + *pnt - 64*sizeof(sample_t); - - for(i=0;i<32;i++) { - ((sample_t *)samples)[1] = ((sample_t *)samples)[0]; - samples+=2*sizeof(sample_t); - } - - return ret; -} - - -int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static real buffs[2][2][0x110]; - static const int step = 2; - static int bo = 1; - sample_t *samples = (sample_t *) (out+*pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - } - else { - samples++; - buf = buffs[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - - { - register int j; - real *window = opt_decwin + 16 - bo1; - - for (j=16;j;j--,window+=0x10,samples+=step) - { - real sum; - sum = REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - sum += REAL_MUL(*window++, *b0++); - sum -= REAL_MUL(*window++, *b0++); - - WRITE_SAMPLE(samples,sum,clip); - } - - { - real sum; - sum = REAL_MUL(window[0x0], b0[0x0]); - sum += REAL_MUL(window[0x2], b0[0x2]); - sum += REAL_MUL(window[0x4], b0[0x4]); - sum += REAL_MUL(window[0x6], b0[0x6]); - sum += REAL_MUL(window[0x8], b0[0x8]); - sum += REAL_MUL(window[0xA], b0[0xA]); - sum += REAL_MUL(window[0xC], b0[0xC]); - sum += REAL_MUL(window[0xE], b0[0xE]); - WRITE_SAMPLE(samples,sum,clip); - b0-=0x10,window-=0x20,samples+=step; - } - window += bo1<<1; - - for (j=15;j;j--,b0-=0x20,window-=0x10,samples+=step) - { - real sum; - sum = -REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - sum -= REAL_MUL(*(--window), *b0++); - - WRITE_SAMPLE(samples,sum,clip); - } - } - - *pnt += 64*sizeof(sample_t); - - return clip; -} diff --git a/src/decode.h b/src/decode.h deleted file mode 100644 index 99f300eb..00000000 --- a/src/decode.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - decode.h: common definitions for decode functions - - copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, taking WRITE_SAMPLE from decode.c -*/ - -#ifdef FLOATOUT -#define WRITE_SAMPLE(samples,sum,clip) *(samples) = sum -#define sample_t float -#else -#define WRITE_SAMPLE(samples,sum,clip) \ - if( (sum) > REAL_PLUS_32767) { *(samples) = 0x7fff; (clip)++; } \ - else if( (sum) < REAL_MINUS_32768) { *(samples) = -0x8000; (clip)++; } \ - else { *(samples) = REAL_TO_SHORT(sum); } -#define sample_t short -#endif diff --git a/src/decode_2to1.c b/src/decode_2to1.c deleted file mode 100644 index be0ae4fe..00000000 --- a/src/decode_2to1.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - decode_2to1.c: ...with 2to1 downsampling - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include -#include - -#include "mpg123.h" -#include "decode.h" - -int synth_2to1_8bit(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[32]; - sample_t *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1 = 0; - - ret = synth_2to1(bandPtr,channel,(unsigned char *) samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<16;i++) { -#ifdef FLOATOUT - *samples = 0; -#else - *samples = conv16to8[*tmp1>>AUSHIFT]; -#endif - samples += 2; - tmp1 += 2; - } - *pnt += 32; - - return ret; -} - -int synth_2to1_8bit_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[32]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_2to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<16;i++) { -#ifdef FLOATOUT - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 16; - - return ret; -} - - -int synth_2to1_8bit_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[32]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_2to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<16;i++) { -#ifdef FLOATOUT - *samples++ = 0; - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 32; - - return ret; -} - -int synth_2to1_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[32]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1=0; - - ret = synth_2to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<16;i++) { - *( (sample_t *) samples) = *tmp1; - samples += sizeof(sample_t); - tmp1 += 2; - } - *pnt += 16*sizeof(sample_t); - - return ret; -} - -int synth_2to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - - ret = synth_2to1(bandPtr,0,samples,pnt); - samples = samples + *pnt - 32*sizeof(sample_t); - - for(i=0;i<16;i++) { - ((sample_t *)samples)[1] = ((sample_t *)samples)[0]; - samples+=2*sizeof(sample_t); - } - - return ret; -} - -int synth_2to1(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static real buffs[2][2][0x110]; - static const int step = 2; - static int bo = 1; - sample_t *samples = (sample_t *) (out + *pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - } - else { - samples++; - buf = buffs[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - opt_dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - opt_dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - { - register int j; - real *window = opt_decwin + 16 - bo1; - - for (j=8;j;j--,b0+=0x10,window+=0x30) - { - real sum; - sum = *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - } - - { - real sum; - sum = window[0x0] * b0[0x0]; - sum += window[0x2] * b0[0x2]; - sum += window[0x4] * b0[0x4]; - sum += window[0x6] * b0[0x6]; - sum += window[0x8] * b0[0x8]; - sum += window[0xA] * b0[0xA]; - sum += window[0xC] * b0[0xC]; - sum += window[0xE] * b0[0xE]; - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - b0-=0x20,window-=0x40; - } - window += bo1<<1; - - for (j=7;j;j--,b0-=0x30,window-=0x30) - { - real sum; - sum = -*(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - } - } - - *pnt += 32*sizeof(sample_t); - - return clip; -} - - diff --git a/src/decode_3dnow.S b/src/decode_3dnow.S deleted file mode 100644 index f9453d7b..00000000 --- a/src/decode_3dnow.S +++ /dev/null @@ -1,288 +0,0 @@ -/* - decode_3dnow.s - 3DNow! optimized synth_1to1() - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Syuuhei Kashiyama - - This code based 'decode_3dnow.s' by Syuuhei Kashiyama - ,only two types of changes have been made: - - - remove PREFETCH instruction for speedup - - change function name for support 3DNow! automatic detect - - femms moved to before 'call dct64_3dnow' - - You can find Kashiyama's original 3dnow! support patch - (for mpg123-0.59o) at - http://user.ecc.u-tokyo.ac.jp/~g810370/linux-simd/ (Japanese). - - by KIMURA Takuhiro - until 31.Mar.1999 - - after 1.Apr.1999 - - - - Replacement of synth_1to1() with AMD's 3DNow! SIMD operations support - - Syuuhei Kashiyama - - The author of this program disclaim whole expressed or implied - warranties with regard to this program, and in no event shall the - author of this program liable to whatever resulted from the use of - this program. Use it at your own risk. -*/ - -#include "mangle.h" - -#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__) - .comm buffs.40,4352 -#else - .local buffs.40 - .comm buffs.40,4352,32 -#endif -.data - ALIGN4 -/* .type bo.42,@object */ -/* .size bo.42,4 */ -bo.42: - .long 1 -.text -.globl ASM_NAME(synth_1to1_3dnow) -/* .type ASM_NAME(synth_1to1_3dnow),@function */ -ASM_NAME(synth_1to1_3dnow): - subl $24,%esp - pushl %ebp - pushl %edi - xorl %ebp,%ebp - pushl %esi - pushl %ebx - movl 56(%esp),%esi - movl 52(%esp),%edi - movl 0(%esi),%esi - movl 48(%esp),%ebx - addl %edi,%esi - movl %esi,16(%esp) - - femms - /* fixed by Takuhiro */ - cmpl $0,ASM_NAME(equalfile) - je .L25 - pushl %ebx - pushl 48(%esp) - call ASM_NAME(do_equalizer_3dnow) - addl $8,%esp -.L25: - testl %ebx,%ebx - jne .L26 - decl bo.42 - movl $buffs.40,%ecx - andl $15,bo.42 - jmp .L27 -.L26: - addl $2,16(%esp) - movl $buffs.40+2176,%ecx -.L27: - movl bo.42,%edx - testb $1,%dl - je .L28 - movl %edx,36(%esp) - movl %ecx,%ebx - movl 44(%esp),%esi - movl %edx,%edi - pushl %esi - sall $2,%edi - movl %ebx,%eax - movl %edi,24(%esp) - addl %edi,%eax - pushl %eax - movl %edx,%eax - incl %eax - andl $15,%eax - leal 1088(,%eax,4),%eax - addl %ebx,%eax - pushl %eax - call ASM_NAME(dct64_3dnow) - addl $12,%esp - jmp .L29 -.L28: - leal 1(%edx),%esi - movl 44(%esp),%edi - movl %esi,36(%esp) - leal 1092(%ecx,%edx,4),%eax - pushl %edi - leal 1088(%ecx),%ebx - pushl %eax - sall $2,%esi - leal (%ecx,%edx,4),%eax - pushl %eax - call ASM_NAME(dct64_3dnow) - addl $12,%esp - movl %esi,20(%esp) -.L29: - movl $ASM_NAME(decwin)+64,%edx - movl $16,%ecx - subl 20(%esp),%edx - movl 16(%esp),%edi - - movq (%edx),%mm0 - movq (%ebx),%mm1 - ALIGN32 -.L33: - movq 8(%edx),%mm3 - pfmul %mm1,%mm0 - movq 8(%ebx),%mm4 - movq 16(%edx),%mm5 - pfmul %mm4,%mm3 - movq 16(%ebx),%mm6 - pfadd %mm3,%mm0 - movq 24(%edx),%mm1 - pfmul %mm6,%mm5 - movq 24(%ebx),%mm2 - pfadd %mm5,%mm0 - movq 32(%edx),%mm3 - pfmul %mm2,%mm1 - movq 32(%ebx),%mm4 - pfadd %mm1,%mm0 - movq 40(%edx),%mm5 - pfmul %mm4,%mm3 - movq 40(%ebx),%mm6 - pfadd %mm3,%mm0 - movq 48(%edx),%mm1 - pfmul %mm6,%mm5 - movq 48(%ebx),%mm2 - pfadd %mm0,%mm5 - movq 56(%edx),%mm3 - pfmul %mm1,%mm2 - movq 56(%ebx),%mm4 - pfadd %mm5,%mm2 - addl $64,%ebx - subl $-128,%edx - movq (%edx),%mm0 - pfmul %mm4,%mm3 - movq (%ebx),%mm1 - pfadd %mm3,%mm2 - movq %mm2,%mm3 - psrlq $32,%mm3 - pfsub %mm3,%mm2 - incl %ebp - pf2id %mm2,%mm2 - packssdw %mm2,%mm2 - movd %mm2,%eax - movw %ax,0(%edi) - addl $4,%edi - decl %ecx - jnz .L33 - - movd (%ebx),%mm0 - movd (%edx),%mm1 - punpckldq 8(%ebx),%mm0 - punpckldq 8(%edx),%mm1 - movd 16(%ebx),%mm3 - movd 16(%edx),%mm4 - pfmul %mm1,%mm0 - punpckldq 24(%ebx),%mm3 - punpckldq 24(%edx),%mm4 - movd 32(%ebx),%mm5 - movd 32(%edx),%mm6 - pfmul %mm4,%mm3 - punpckldq 40(%ebx),%mm5 - punpckldq 40(%edx),%mm6 - pfadd %mm3,%mm0 - movd 48(%ebx),%mm1 - movd 48(%edx),%mm2 - pfmul %mm6,%mm5 - punpckldq 56(%ebx),%mm1 - punpckldq 56(%edx),%mm2 - pfadd %mm5,%mm0 - pfmul %mm2,%mm1 - pfadd %mm1,%mm0 - pfacc %mm1,%mm0 - pf2id %mm0,%mm0 - packssdw %mm0,%mm0 - movd %mm0,%eax - movw %ax,0(%edi) - incl %ebp - movl 36(%esp),%esi - addl $-64,%ebx - movl $15,%ebp - addl $4,%edi - leal -128(%edx,%esi,8),%edx - - movl $15,%ecx - movd (%ebx),%mm0 - movd -4(%edx),%mm1 - punpckldq 4(%ebx),%mm0 - punpckldq -8(%edx),%mm1 - ALIGN32 -.L46: - movd 8(%ebx),%mm3 - movd -12(%edx),%mm4 - pfmul %mm1,%mm0 - punpckldq 12(%ebx),%mm3 - punpckldq -16(%edx),%mm4 - movd 16(%ebx),%mm5 - movd -20(%edx),%mm6 - pfmul %mm4,%mm3 - punpckldq 20(%ebx),%mm5 - punpckldq -24(%edx),%mm6 - pfadd %mm3,%mm0 - movd 24(%ebx),%mm1 - movd -28(%edx),%mm2 - pfmul %mm6,%mm5 - punpckldq 28(%ebx),%mm1 - punpckldq -32(%edx),%mm2 - pfadd %mm5,%mm0 - movd 32(%ebx),%mm3 - movd -36(%edx),%mm4 - pfmul %mm2,%mm1 - punpckldq 36(%ebx),%mm3 - punpckldq -40(%edx),%mm4 - pfadd %mm1,%mm0 - movd 40(%ebx),%mm5 - movd -44(%edx),%mm6 - pfmul %mm4,%mm3 - punpckldq 44(%ebx),%mm5 - punpckldq -48(%edx),%mm6 - pfadd %mm3,%mm0 - movd 48(%ebx),%mm1 - movd -52(%edx),%mm2 - pfmul %mm6,%mm5 - punpckldq 52(%ebx),%mm1 - punpckldq -56(%edx),%mm2 - pfadd %mm0,%mm5 - movd 56(%ebx),%mm3 - movd -60(%edx),%mm4 - pfmul %mm2,%mm1 - punpckldq 60(%ebx),%mm3 - punpckldq (%edx),%mm4 - pfadd %mm1,%mm5 - addl $-128,%edx - addl $-64,%ebx - movd (%ebx),%mm0 - movd -4(%edx),%mm1 - pfmul %mm4,%mm3 - punpckldq 4(%ebx),%mm0 - punpckldq -8(%edx),%mm1 - pfadd %mm5,%mm3 - pfacc %mm3,%mm3 - incl %ebp - pf2id %mm3,%mm3 - movd %mm3,%eax - negl %eax - movd %eax,%mm3 - packssdw %mm3,%mm3 - movd %mm3,%eax - movw %ax,(%edi) - addl $4,%edi - decl %ecx - jnz .L46 - - femms - movl 56(%esp),%esi - movl %ebp,%eax - subl $-128,0(%esi) - popl %ebx - popl %esi - popl %edi - popl %ebp - addl $24,%esp - ret diff --git a/src/decode_4to1.c b/src/decode_4to1.c deleted file mode 100644 index bb0b7dee..00000000 --- a/src/decode_4to1.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - decode_4to1.c: ...with 4to1 downsampling / decoding of every 4th sample - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - dunno why it sounds THIS annoying (maybe we should adapt the window?) - absolutely not optimized for this operation -*/ - -#include -#include - -#include "mpg123.h" -#include "decode.h" - -int synth_4to1_8bit(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[16]; - sample_t *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1 = 0; - - ret = synth_4to1(bandPtr,channel,(unsigned char *) samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<8;i++) { -#ifdef FLOATOUT - *samples = 0; -#else - *samples = conv16to8[*tmp1>>AUSHIFT]; -#endif - samples += 2; - tmp1 += 2; - } - *pnt += 16; - - return ret; -} - -int synth_4to1_8bit_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[16]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_4to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<8;i++) { -#ifdef FLOATOUT - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 8; - - return ret; -} - - -int synth_4to1_8bit_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[16]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_4to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<8;i++) { -#ifdef FLOATOUT - *samples++ = 0; - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += 16; - - return ret; -} - -int synth_4to1_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[16]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_4to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<8;i++) { - *( (sample_t *)samples) = *tmp1; - samples += sizeof(sample_t); - tmp1 += 2; - } - *pnt += 8*sizeof(sample_t); - - return ret; -} - -int synth_4to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - - ret = synth_4to1(bandPtr,0,samples,pnt); - samples = samples + *pnt - 16*sizeof(sample_t); - - for(i=0;i<8;i++) { - ((sample_t *)samples)[1] = ((sample_t *)samples)[0]; - samples+=2*sizeof(sample_t); - } - - return ret; -} - -int synth_4to1(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static real buffs[2][2][0x110]; - static const int step = 2; - static int bo = 1; - sample_t *samples = (sample_t *) (out + *pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - } - else { - samples++; - buf = buffs[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - opt_dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - opt_dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - { - register int j; - real *window = opt_decwin + 16 - bo1; - - for (j=4;j;j--,b0+=0x30,window+=0x70) - { - real sum; - sum = *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - } - - { - real sum; - sum = window[0x0] * b0[0x0]; - sum += window[0x2] * b0[0x2]; - sum += window[0x4] * b0[0x4]; - sum += window[0x6] * b0[0x6]; - sum += window[0x8] * b0[0x8]; - sum += window[0xA] * b0[0xA]; - sum += window[0xC] * b0[0xC]; - sum += window[0xE] * b0[0xE]; - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - b0-=0x40,window-=0x80; - } - window += bo1<<1; - - for (j=3;j;j--,b0-=0x50,window-=0x70) - { - real sum; - sum = -*(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - - WRITE_SAMPLE(samples,sum,clip); samples += step; -#if 0 - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; - WRITE_SAMPLE(samples,sum,clip); samples += step; -#endif - } - } - - *pnt += 16*sizeof(sample_t); - - return clip; -} - - diff --git a/src/decode_altivec.c b/src/decode_altivec.c deleted file mode 100644 index 42484a00..00000000 --- a/src/decode_altivec.c +++ /dev/null @@ -1,582 +0,0 @@ -/* - decode.c: decoding samples... - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - altivec optimization by tmkk -*/ - -#include -#include - -#include "mpg123.h" - -#ifndef __APPLE__ -#include -#endif - -#define WRITE_SAMPLE(samples,sum,clip) \ - if( (sum) > REAL_PLUS_32767) { *(samples) = 0x7fff; (clip)++; } \ - else if( (sum) < REAL_MINUS_32768) { *(samples) = -0x8000; (clip)++; } \ - else { *(samples) = REAL_TO_SHORT(sum); } - -int synth_1to1_8bit_altivec(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1=0; - - ret = synth_1to1_altivec(bandPtr,channel,(unsigned char *) samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<32;i++) { - *samples = conv16to8[*tmp1>>AUSHIFT]; - samples += 2; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_8bit_mono_altivec(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1_altivec(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - tmp1 += 2; - } - *pnt += 32; - - return ret; -} - -int synth_1to1_8bit_mono2stereo_altivec(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1_altivec(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_mono_altivec(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_1to1_altivec(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *( (short *)samples) = *tmp1; - samples += 2; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - - -int synth_1to1_mono2stereo_altivec(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - - ret = synth_1to1_altivec(bandPtr,0,samples,pnt); - samples = samples + *pnt - 128; - - for(i=0;i<32;i++) { - ((short *)samples)[1] = ((short *)samples)[0]; - samples+=4; - } - - return ret; -} - - -int synth_1to1_altivec(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static ALIGNED(16) real buffs[4][4][0x110]; - static const int step = 2; - static int bo = 1; - short *samples = (short *) (out+*pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - } - else { - samples++; - buf = buffs[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - dct64_altivec(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - dct64_altivec(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - - { - register int j; - real *window = decwin + 16 - bo1; - - ALIGNED(16) int clip_tmp[4]; - vector float v1,v2,v3,v4,v5,v6,v7,v8,v9; - vector unsigned char vperm1,vperm2,vperm3,vperm4,vperm5; - vector float vsum,vsum2,vsum3,vsum4,vmin,vmax; - vector signed int vclip; - vector signed short vsample1,vsample2; - vclip = vec_xor(vclip,vclip); -#ifdef __APPLE__ - vmax = (vector float)(32767.0f); - vmin = (vector float)(-32768.0f); - vperm5 = (vector unsigned char)(0,1,18,19,2,3,22,23,4,5,26,27,6,7,30,31); -#else - vmax = (vector float){32767.0f,32767.0f,32767.0f,32767.0f}; - vmin = (vector float){-32768.0f,-32768.0f,-32768.0f,-32768.0f}; - vperm5 = (vector unsigned char){0,1,18,19,2,3,22,23,4,5,26,27,6,7,30,31}; -#endif - - vperm1 = vec_lvsl(0,window); - vperm3 = vec_lvsl(0,samples); - vperm4 = vec_lvsr(0,samples); - for (j=4;j;j--) - { - vsum = vec_xor(vsum,vsum); - vsum2 = vec_xor(vsum2,vsum2); - vsum3 = vec_xor(vsum3,vsum3); - vsum4 = vec_xor(vsum4,vsum4); - v1 = vec_ld(0,window); - v2 = vec_ld(16,window); - v3 = vec_ld(32,window); - v4 = vec_ld(48,window); - v5 = vec_ld(64,window); - v1 = vec_perm(v1,v2,vperm1); - v6 = vec_ld(0,b0); - v2 = vec_perm(v2,v3,vperm1); - v7 = vec_ld(16,b0); - v3 = vec_perm(v3,v4,vperm1); - v8 = vec_ld(32,b0); - v4 = vec_perm(v4,v5,vperm1); - v9 = vec_ld(48,b0); - - vsum = vec_madd(v1,v6,vsum); - vsum = vec_madd(v2,v7,vsum); - vsum = vec_madd(v3,v8,vsum); - vsum = vec_madd(v4,v9,vsum); - - window += 32; - b0 += 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(16,window); - v3 = vec_ld(32,window); - v4 = vec_ld(48,window); - v5 = vec_ld(64,window); - v1 = vec_perm(v1,v2,vperm1); - v6 = vec_ld(0,b0); - v2 = vec_perm(v2,v3,vperm1); - v7 = vec_ld(16,b0); - v3 = vec_perm(v3,v4,vperm1); - v8 = vec_ld(32,b0); - v4 = vec_perm(v4,v5,vperm1); - v9 = vec_ld(48,b0); - - vsum2 = vec_madd(v1,v6,vsum2); - vsum2 = vec_madd(v2,v7,vsum2); - vsum2 = vec_madd(v3,v8,vsum2); - vsum2 = vec_madd(v4,v9,vsum2); - - window += 32; - b0 += 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(16,window); - v3 = vec_ld(32,window); - v4 = vec_ld(48,window); - v5 = vec_ld(64,window); - v1 = vec_perm(v1,v2,vperm1); - v6 = vec_ld(0,b0); - v2 = vec_perm(v2,v3,vperm1); - v7 = vec_ld(16,b0); - v3 = vec_perm(v3,v4,vperm1); - v8 = vec_ld(32,b0); - v4 = vec_perm(v4,v5,vperm1); - v9 = vec_ld(48,b0); - - vsum3 = vec_madd(v1,v6,vsum3); - vsum3 = vec_madd(v2,v7,vsum3); - vsum3 = vec_madd(v3,v8,vsum3); - vsum3 = vec_madd(v4,v9,vsum3); - - window += 32; - b0 += 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(16,window); - v3 = vec_ld(32,window); - v4 = vec_ld(48,window); - v5 = vec_ld(64,window); - v1 = vec_perm(v1,v2,vperm1); - v6 = vec_ld(0,b0); - v2 = vec_perm(v2,v3,vperm1); - v7 = vec_ld(16,b0); - v3 = vec_perm(v3,v4,vperm1); - v8 = vec_ld(32,b0); - v4 = vec_perm(v4,v5,vperm1); - v9 = vec_ld(48,b0); - - vsum4 = vec_madd(v1,v6,vsum4); - vsum4 = vec_madd(v2,v7,vsum4); - vsum4 = vec_madd(v3,v8,vsum4); - vsum4 = vec_madd(v4,v9,vsum4); - - window += 32; - b0 += 16; - - v1 = vec_mergeh(vsum,vsum3); - v2 = vec_mergeh(vsum2,vsum4); - v3 = vec_mergel(vsum,vsum3); - v4 = vec_mergel(vsum2,vsum4); - v5 = vec_mergeh(v1,v2); - v6 = vec_mergel(v1,v2); - v7 = vec_mergeh(v3,v4); - v8 = vec_mergel(v3,v4); - - vsum = vec_sub(v5,v6); - v9 = vec_sub(v7,v8); - vsum = vec_add(vsum,v9); - - v3 = (vector float)vec_cts(vsum,0); - v1 = (vector float)vec_cmpgt(vsum,vmax); - v2 = (vector float)vec_cmplt(vsum,vmin); - vsample1 = vec_ld(0,samples); - vsample2 = vec_ld(15,samples); - v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); - v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); - v5 = (vector float)vec_perm(v3,v4,vperm5); - v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); - v7 = (vector float)vec_perm(v5,v6,vperm4); - v8 = (vector float)vec_perm(v6,v5,vperm4); - vec_st((vector signed short)v7,15,samples); - vec_st((vector signed short)v8,0,samples); - samples += 8; -#ifdef __APPLE__ - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31)); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31)); -#else - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,31}); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,31}); -#endif - v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); - vclip = vec_sums((vector signed int)v5,vclip); - } - - { - real sum; - sum = REAL_MUL(window[0x0], b0[0x0]); - sum += REAL_MUL(window[0x2], b0[0x2]); - sum += REAL_MUL(window[0x4], b0[0x4]); - sum += REAL_MUL(window[0x6], b0[0x6]); - sum += REAL_MUL(window[0x8], b0[0x8]); - sum += REAL_MUL(window[0xA], b0[0xA]); - sum += REAL_MUL(window[0xC], b0[0xC]); - sum += REAL_MUL(window[0xE], b0[0xE]); - WRITE_SAMPLE(samples,sum,clip); - b0-=0x10,window-=0x20,samples+=step; - } - window += bo1<<1; - - vperm1 = vec_lvsl(0,window); -#ifdef __APPLE__ - vperm2 = vec_perm(vperm1,vperm1,(vector unsigned char)(12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3)); -#else - vperm2 = vec_perm(vperm1,vperm1,(vector unsigned char){12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3}); -#endif - vperm3 = vec_lvsl(0,samples); - vperm4 = vec_lvsr(0,samples); - for (j=3;j;j--) - { - vsum = vec_xor(vsum,vsum); - vsum2 = vec_xor(vsum2,vsum2); - vsum3 = vec_xor(vsum3,vsum3); - vsum4 = vec_xor(vsum4,vsum4); - v1 = vec_ld(-1,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum = vec_nmsub(v1,v6,vsum); - vsum = vec_nmsub(v2,v7,vsum); - vsum = vec_nmsub(v3,v8,vsum); - vsum = vec_nmsub(v4,v9,vsum); - - window -= 32; - b0 -= 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum2 = vec_nmsub(v1,v6,vsum2); - vsum2 = vec_nmsub(v2,v7,vsum2); - vsum2 = vec_nmsub(v3,v8,vsum2); - vsum2 = vec_nmsub(v4,v9,vsum2); - - window -= 32; - b0 -= 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum3 = vec_nmsub(v1,v6,vsum3); - vsum3 = vec_nmsub(v2,v7,vsum3); - vsum3 = vec_nmsub(v3,v8,vsum3); - vsum3 = vec_nmsub(v4,v9,vsum3); - - window -= 32; - b0 -= 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum4 = vec_nmsub(v1,v6,vsum4); - vsum4 = vec_nmsub(v2,v7,vsum4); - vsum4 = vec_nmsub(v3,v8,vsum4); - vsum4 = vec_nmsub(v4,v9,vsum4); - - window -= 32; - b0 -= 16; - - v1 = vec_mergeh(vsum,vsum3); - v2 = vec_mergeh(vsum2,vsum4); - v3 = vec_mergel(vsum,vsum3); - v4 = vec_mergel(vsum2,vsum4); - v5 = vec_mergeh(v1,v2); - v6 = vec_mergel(v1,v2); - v7 = vec_mergeh(v3,v4); - v8 = vec_mergel(v3,v4); - - vsum = vec_add(v5,v6); - v9 = vec_add(v7,v8); - vsum = vec_add(vsum,v9); - - v3 = (vector float)vec_cts(vsum,0); - v1 = (vector float)vec_cmpgt(vsum,vmax); - v2 = (vector float)vec_cmplt(vsum,vmin); - vsample1 = vec_ld(0,samples); - vsample2 = vec_ld(15,samples); - v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); - v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); - v5 = (vector float)vec_perm(v3,v4,vperm5); - v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); - v7 = (vector float)vec_perm(v5,v6,vperm4); - v8 = (vector float)vec_perm(v6,v5,vperm4); - vec_st((vector signed short)v7,15,samples); - vec_st((vector signed short)v8,0,samples); - samples += 8; -#ifdef __APPLE__ - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31)); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31)); -#else - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,31}); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,31}); -#endif - v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); - vclip = vec_sums((vector signed int)v5,vclip); - } -#ifdef __APPLE__ - vperm5 = (vector unsigned char)(0,1,18,19,2,3,22,23,4,5,26,27,28,29,30,31); -#else - vperm5 = (vector unsigned char){0,1,18,19,2,3,22,23,4,5,26,27,28,29,30,31}; -#endif - { - vsum = vec_xor(vsum,vsum); - vsum2 = vec_xor(vsum2,vsum2); - vsum3 = vec_xor(vsum3,vsum3); - vsum4 = vec_xor(vsum4,vsum4); - v1 = vec_ld(-1,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum = vec_nmsub(v1,v6,vsum); - vsum = vec_nmsub(v2,v7,vsum); - vsum = vec_nmsub(v3,v8,vsum); - vsum = vec_nmsub(v4,v9,vsum); - - window -= 32; - b0 -= 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum2 = vec_nmsub(v1,v6,vsum2); - vsum2 = vec_nmsub(v2,v7,vsum2); - vsum2 = vec_nmsub(v3,v8,vsum2); - vsum2 = vec_nmsub(v4,v9,vsum2); - - window -= 32; - b0 -= 16; - - v1 = vec_ld(0,window); - v2 = vec_ld(-16,window); - v3 = vec_ld(-32,window); - v4 = vec_ld(-48,window); - v5 = vec_ld(-64,window); - v1 = vec_perm(v2,v1,vperm2); - v6 = vec_ld(0,b0); - v2 = vec_perm(v3,v2,vperm2); - v7 = vec_ld(16,b0); - v3 = vec_perm(v4,v3,vperm2); - v8 = vec_ld(32,b0); - v4 = vec_perm(v5,v4,vperm2); - v9 = vec_ld(48,b0); - - vsum3 = vec_nmsub(v1,v6,vsum3); - vsum3 = vec_nmsub(v2,v7,vsum3); - vsum3 = vec_nmsub(v3,v8,vsum3); - vsum3 = vec_nmsub(v4,v9,vsum3); - - v1 = vec_mergeh(vsum,vsum3); - v2 = vec_mergeh(vsum2,vsum2); - v3 = vec_mergel(vsum,vsum3); - v4 = vec_mergel(vsum2,vsum2); - v5 = vec_mergeh(v1,v2); - v6 = vec_mergel(v1,v2); - v7 = vec_mergeh(v3,v4); - v8 = vec_mergel(v3,v4); - - vsum = vec_add(v5,v6); - v9 = vec_add(v7,v8); - vsum = vec_add(vsum,v9); - - v3 = (vector float)vec_cts(vsum,0); - v1 = (vector float)vec_cmpgt(vsum,vmax); - v2 = (vector float)vec_cmplt(vsum,vmin); - vsample1 = vec_ld(0,samples); - vsample2 = vec_ld(15,samples); - v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); - v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); - v5 = (vector float)vec_perm(v3,v4,vperm5); - v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); - v7 = (vector float)vec_perm(v5,v6,vperm4); - v8 = (vector float)vec_perm(v6,v5,vperm4); - vec_st((vector signed short)v7,15,samples); - vec_st((vector signed short)v8,0,samples); - samples += 6; -#ifdef __APPLE__ - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31,31,31,32)); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31,31,31,32)); -#else - v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,32}); - v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,32}); -#endif - v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); - vclip = vec_sums((vector signed int)v5,vclip); - vec_st(vclip,0,clip_tmp); - clip += clip_tmp[3]; - } - } - *pnt += 128; - - return clip; -} diff --git a/src/decode_i386.c b/src/decode_i386.c deleted file mode 100644 index af6c453c..00000000 --- a/src/decode_i386.c +++ /dev/null @@ -1,287 +0,0 @@ -/* - decode_i386.c: decode for i386 (really faster?) - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - slighlty optimized for machines without autoincrement/decrement. - The performance is highly compiler dependend. Maybe - the decode.c version for 'normal' processor may be faster - even for Intel processors. -*/ - -#include -#include - -#include "mpg123.h" - -#if 1 - /* old WRITE_SAMPLE */ -#define WRITE_SAMPLE(samples,sum,clip) \ - if( (sum) > 32767.0) { *(samples) = 0x7fff; (clip)++; } \ - else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \ - else { *(samples) = sum; } -#else - /* new WRITE_SAMPLE */ - /* keep in mind that we are on known little-endian i386 here and special tricks are allowed... */ -#define WRITE_SAMPLE(samples,sum,clip) { \ - double dtemp; int v; /* sizeof(int) == 4 */ \ - dtemp = ((((65536.0 * 65536.0 * 16)+(65536.0 * 0.5))* 65536.0)) + (sum); \ - v = ((*(int *)&dtemp) - 0x80000000); \ - if( v > 32767) { *(samples) = 0x7fff; (clip)++; } \ - else if( v < -32768) { *(samples) = -0x8000; (clip)++; } \ - else { *(samples) = v; } \ -} -#endif - -int synth_1to1_8bit_i386(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1 = 0; - - ret = opt_synth_1to1(bandPtr,channel,(unsigned char *)samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<32;i++) { - *samples = conv16to8[*tmp1>>AUSHIFT]; - samples += 2; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_8bit_mono_i386(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = opt_synth_1to1(bandPtr,0,(unsigned char *)samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - tmp1+=2; - } - *pnt += 32; - - return ret; -} - -int synth_1to1_8bit_mono2stereo_i386(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = opt_synth_1to1(bandPtr,0,(unsigned char *)samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - -int synth_1to1_mono_i386(real *bandPtr,unsigned char *samples,int *pnt) -{ - short samples_tmp[64]; - short *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = opt_synth_1to1(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<32;i++) { - *( (short *) samples) = *tmp1; - samples += 2; - tmp1 += 2; - } - *pnt += 64; - - return ret; -} - - -int synth_1to1_mono2stereo_i386(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - - ret = opt_synth_1to1(bandPtr,0,samples,pnt); - samples = samples + *pnt - 128; - - for(i=0;i<32;i++) { - ((short *)samples)[1] = ((short *)samples)[0]; - samples+=4; - } - - return ret; -} - -/* needed for i386, i486 */ -#ifdef OPT_I386 -int synth_1to1_i386(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static real buffs[2][2][0x110]; - static const int step = 2; - static int bo = 1; - short *samples = (short *) (out + *pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - } - else { - samples++; - buf = buffs[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - dct64_i386(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - dct64_i386(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - { - register int j; - real *window = opt_decwin + 16 - bo1; - - for (j=16;j;j--,b0+=0x10,window+=0x20,samples+=step) - { - real sum; - sum = window[0x0] * b0[0x0]; - sum -= window[0x1] * b0[0x1]; - sum += window[0x2] * b0[0x2]; - sum -= window[0x3] * b0[0x3]; - sum += window[0x4] * b0[0x4]; - sum -= window[0x5] * b0[0x5]; - sum += window[0x6] * b0[0x6]; - sum -= window[0x7] * b0[0x7]; - sum += window[0x8] * b0[0x8]; - sum -= window[0x9] * b0[0x9]; - sum += window[0xA] * b0[0xA]; - sum -= window[0xB] * b0[0xB]; - sum += window[0xC] * b0[0xC]; - sum -= window[0xD] * b0[0xD]; - sum += window[0xE] * b0[0xE]; - sum -= window[0xF] * b0[0xF]; - - WRITE_SAMPLE(samples,sum,clip); - } - - { - real sum; - sum = window[0x0] * b0[0x0]; - sum += window[0x2] * b0[0x2]; - sum += window[0x4] * b0[0x4]; - sum += window[0x6] * b0[0x6]; - sum += window[0x8] * b0[0x8]; - sum += window[0xA] * b0[0xA]; - sum += window[0xC] * b0[0xC]; - sum += window[0xE] * b0[0xE]; - WRITE_SAMPLE(samples,sum,clip); - b0-=0x10,window-=0x20,samples+=step; - } - window += bo1<<1; - - for (j=15;j;j--,b0-=0x10,window-=0x20,samples+=step) - { - real sum; - sum = -window[-0x1] * b0[0x0]; - sum -= window[-0x2] * b0[0x1]; - sum -= window[-0x3] * b0[0x2]; - sum -= window[-0x4] * b0[0x3]; - sum -= window[-0x5] * b0[0x4]; - sum -= window[-0x6] * b0[0x5]; - sum -= window[-0x7] * b0[0x6]; - sum -= window[-0x8] * b0[0x7]; - sum -= window[-0x9] * b0[0x8]; - sum -= window[-0xA] * b0[0x9]; - sum -= window[-0xB] * b0[0xA]; - sum -= window[-0xC] * b0[0xB]; - sum -= window[-0xD] * b0[0xC]; - sum -= window[-0xE] * b0[0xD]; - sum -= window[-0xF] * b0[0xE]; - sum -= window[-0x0] * b0[0xF]; - - WRITE_SAMPLE(samples,sum,clip); - } - } - *pnt += 128; - - return clip; -} -#endif - -#ifdef OPT_PENTIUM -int synth_1to1_i586(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - int ret; - if(have_eq_settings) do_equalizer(bandPtr,channel); - - /* this is in asm, can be dither or not */ - /* uh, is this return from pointer correct? */ - ret = (int) opt_synth_1to1_i586_asm(bandPtr,channel,out+*pnt); - *pnt += 128; - return ret; -} -#endif - -#ifdef OPT_MMX -/* these are in asm, dct64 called directly there */ -extern void dct64_MMX(short *a,short *b,real *c); -extern int synth_1to1_MMX(real *, int, short *, short *, int *); -/* wrapper for da interface */ -int synth_1to1_mmx(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static short buffs[2][2][0x110]; - static int bo = 1; - short *samples = (short *) (out + *pnt); - if(have_eq_settings) do_equalizer(bandPtr,channel); - - /* in asm */ - synth_1to1_MMX(bandPtr, channel, samples, (short *) buffs, &bo); - *pnt += 128; - return 0; -} -#endif - -#ifdef OPT_MPLAYER -void synth_1to1_sse_s(real *bandPtr, int channel, short *samples, short *buffs, int *bo); -int synth_1to1_sse(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static short buffs[2][2][0x110]; - static int bo = 1; - short *samples = (short *) (out + *pnt); - if(have_eq_settings) do_equalizer(bandPtr,channel); - - synth_1to1_sse_s(bandPtr, channel, samples, (short *) buffs, &bo); - *pnt += 128; - return 0; -} -#endif diff --git a/src/decode_i486.c b/src/decode_i486.c deleted file mode 100644 index 9a325e1a..00000000 --- a/src/decode_i486.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - decode_i486.c: i486 decode - - copyright 1998-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Fabrice Bellard -*/ - -/* - * Subband Synthesis for MPEG Audio. - * - * Version optimized for 80486 by using integer arithmetic, - * multiplications by shift and add, and by increasing locality in - * order to fit the 8KB L1 cache. This code should be compiled with gcc - * 2.7.2 or higher. - * - * Note: this version does not guaranty a good accuracy. The filter - * coefficients are quantified on 14 bits. - * - * (c) 1998 Fabrice Bellard - */ - -#include "mpg123.h" - -#define FIR_SIZE 16 - -#define FIR16_1(pos,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15) \ -{\ - int sum;\ - sum=(c0)*b0[0]+(c1)*b0[1]+(c2)*b0[2]+(c3)*b0[3]+\ - (c4)*b0[4]+(c5)*b0[5]+(c6)*b0[6]+(c7)*b0[7]+\ - (c8)*b0[8]+(c9)*b0[9]+(c10)*b0[10]+(c11)*b0[11]+\ - (c12)*b0[12]+(c13)*b0[13]+(c14)*b0[14]+(c15)*b0[15];\ - sum=(sum+(1 << 13))>>14;\ - if (sum<-32768) sum=-32768;\ - else if (sum>32767) sum=32767;\ - samples[2*(pos)]=sum;\ - b0+=FIR_BUFFER_SIZE;\ -} - -#define FIR16_2(pos1,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,\ - pos2,d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15) \ -{\ - int sum1,sum2,v;\ -\ - v=b0[0];\ - sum1=(c0)*v;\ - sum2=(d0)*v;\ - v=b0[1];\ - sum1+=(c1)*v;\ - sum2+=(d1)*v;\ - v=b0[2];\ - sum1+=(c2)*v;\ - sum2+=(d2)*v;\ - v=b0[3];\ - sum1+=(c3)*v;\ - sum2+=(d3)*v;\ - v=b0[4];\ - sum1+=(c4)*v;\ - sum2+=(d4)*v;\ - v=b0[5];\ - sum1+=(c5)*v;\ - sum2+=(d5)*v;\ - v=b0[6];\ - sum1+=(c6)*v;\ - sum2+=(d6)*v;\ - v=b0[7];\ - sum1+=(c7)*v;\ - sum2+=(d7)*v;\ - v=b0[8];\ - sum1+=(c8)*v;\ - sum2+=(d8)*v;\ - v=b0[9];\ - sum1+=(c9)*v;\ - sum2+=(d9)*v;\ - v=b0[10];\ - sum1+=(c10)*v;\ - sum2+=(d10)*v;\ - v=b0[11];\ - sum1+=(c11)*v;\ - sum2+=(d11)*v;\ - v=b0[12];\ - sum1+=(c12)*v;\ - sum2+=(d12)*v;\ - v=b0[13];\ - sum1+=(c13)*v;\ - sum2+=(d13)*v;\ - v=b0[14];\ - sum1+=(c14)*v;\ - sum2+=(d14)*v;\ - v=b0[15];\ - sum1+=(c15)*v;\ - sum2+=(d15)*v;\ -\ - sum1=(sum1+(1<<13))>>14;\ - sum2=(sum2+(1<<13))>>14;\ -\ - if (sum1<-32768) sum1=-32768;\ - else if (sum1>32767) sum1=32767;\ - samples[(pos1)*2]=sum1;\ -\ - if (sum2<-32768) sum2=-32768;\ - else if (sum2>32767) sum2=32767;\ - samples[(pos2)*2]=sum2;\ - b0+=FIR_BUFFER_SIZE;\ -} - -int synth_1to1_486(real *bandPtr,int channel,unsigned char *out,int nb_blocks) -{ - static int buffs[2][2][17*FIR_BUFFER_SIZE]; - static int bo[2] = { FIR_SIZE-1, FIR_SIZE-1 }; - short *samples = (short *) out; - int *b0,(*buf)[17*FIR_BUFFER_SIZE]; - int clip = 0; - int block,b,bo_start; - - /* samples address */ - samples+=channel; - - bo_start=bo[channel]; - buf = buffs[channel]; - - b=bo_start; - for(block=0;block= FIR_BUFFER_SIZE) { - int *p,*q; - int c,i,j; - - /* we shift the buffers */ - for(c=0;c<2;c++) { - p=&buf[c][0]+1; - q=p+(FIR_BUFFER_SIZE-FIR_SIZE); - for(i=0;i<17;i++) { - for(j=0;j= FIR_BUFFER_SIZE) b=FIR_SIZE; - if(b & 1) { - b0 = buf[0] + b - (FIR_SIZE-1); - } else { - b0 = buf[1] + b - (FIR_SIZE-1); - } - - FIR16_1(0,-7,53,-114,509,-1288,1643,-9372,18759,9372,1643,1288,509,114,53,7,0); - FIR16_2(1,-6,52,-100,515,-1197,1783,-8910,18748,9834,1489,1379,500,129,54,7,0, - 31,0,-7,54,-129,500,-1379,1489,-9834,18748,8910,1783,1197,515,100,52,6); - FIR16_2(2,-6,50,-86,520,-1106,1910,-8447,18714,10294,1322,1469,488,145,55,8,0, - 30,0,-8,55,-145,488,-1469,1322,-10294,18714,8447,1910,1106,520,86,50,6); - FIR16_2(3,-5,49,-73,521,-1015,2023,-7986,18657,10751,1140,1559,473,161,56,9,0, - 29,0,-9,56,-161,473,-1559,1140,-10751,18657,7986,2023,1015,521,73,49,5); - samples+=64; - } - samples-=64*nb_blocks; - - /* filter bank: part 2 */ - - b=bo_start; - for(block=0;block= FIR_BUFFER_SIZE) b=FIR_SIZE; - if(b & 1) { - b0 = buf[0] + b - (FIR_SIZE-1) + 4*FIR_BUFFER_SIZE; - } else { - b0 = buf[1] + b - (FIR_SIZE-1) + 4*FIR_BUFFER_SIZE; - } - - FIR16_2(4,-4,47,-61,521,-926,2123,-7528,18578,11205,944,1647,455,177,56,10,0, - 28,0,-10,56,-177,455,-1647,944,-11205,18578,7528,2123,926,521,61,47,4); - FIR16_2(5,-4,45,-49,518,-837,2210,-7072,18477,11654,733,1733,434,194,57,11,0, - 27,0,-11,57,-194,434,-1733,733,-11654,18477,7072,2210,837,518,49,45,4); - FIR16_2(6,-4,44,-38,514,-751,2284,-6620,18353,12097,509,1817,411,212,57,12,0, - 26,0,-12,57,-212,411,-1817,509,-12097,18353,6620,2284,751,514,38,44,4); - FIR16_2(7,-3,42,-27,508,-665,2347,-6173,18208,12534,270,1899,383,229,56,13,0, - 25,0,-13,56,-229,383,-1899,270,-12534,18208,6173,2347,665,508,27,42,3); - - samples+=64; - } - samples-=64*nb_blocks; - - /* filter bank: part 3 */ - - b=bo_start; - for(block=0;block= FIR_BUFFER_SIZE) b=FIR_SIZE; - if(b & 1) { - b0 = buf[0] + b - (FIR_SIZE-1) + 8*FIR_BUFFER_SIZE; - } else { - b0 = buf[1] + b - (FIR_SIZE-1) + 8*FIR_BUFFER_SIZE; - } - - FIR16_2(8,-3,40,-18,500,-582,2398,-5732,18042,12963,17,1977,353,247,56,14,0, - 24,0,-14,56,-247,353,-1977,17,-12963,18042,5732,2398,582,500,18,40,3); - FIR16_2(9,-2,38,-9,490,-501,2437,-5297,17855,13383,-249,2052,320,266,55,15,0, - 23,0,-15,55,-266,320,-2052,-249,-13383,17855,5297,2437,501,490,9,38,2); - FIR16_2(10,-2,36,0,479,-423,2465,-4869,17647,13794,-530,2122,282,284,53,17,0, - 22,0,-17,53,-284,282,-2122,-530,-13794,17647,4869,2465,423,479,0,36,2); - FIR16_2(11,-2,34,7,467,-347,2483,-4449,17419,14194,-825,2188,242,302,52,18,0, - 21,0,-18,52,-302,242,-2188,-825,-14194,17419,4449,2483,347,467,-7,34,2); - - samples+=64; - } - samples-=64*nb_blocks; - - /* filter bank: part 4 */ - - b=bo_start; - for(block=0;block= FIR_BUFFER_SIZE) b=FIR_SIZE; - if(b & 1) { - b0 = buf[0] + b - (FIR_SIZE-1) + 12*FIR_BUFFER_SIZE; - } else { - b0 = buf[1] + b - (FIR_SIZE-1) + 12*FIR_BUFFER_SIZE; - } - - FIR16_2(12,-2,33,14,454,-273,2491,-4038,17173,14583,-1133,2249,198,320,50,19,0, - 20,0,-19,50,-320,198,-2249,-1133,-14583,17173,4038,2491,273,454,-14,33,2); - FIR16_2(13,-1,31,20,439,-203,2489,-3637,16907,14959,-1454,2304,151,339,47,21,-1, - 19,-1,-21,47,-339,151,-2304,-1454,-14959,16907,3637,2489,203,439,-20,31,1); - FIR16_2(14,-1,29,26,424,-136,2479,-3245,16623,15322,-1788,2354,100,357,44,22,-1, - 18,-1,-22,44,-357,100,-2354,-1788,-15322,16623,3245,2479,136,424,-26,29,1); - FIR16_2(15,-1,27,31,408,-72,2459,-2863,16322,15671,-2135,2396,46,374,40,24,-1, - 17,-1,-24,40,-374,46,-2396,-2135,-15671,16322,2863,2459,72,408,-31,27,1); - FIR16_1(16,-1,0,36,0,-11,0,-2493,0,16004,0,2431,0,391,0,26,0); - - samples+=64; - } - - return clip; -} - diff --git a/src/decode_i586.S b/src/decode_i586.S deleted file mode 100644 index d8cd3c42..00000000 --- a/src/decode_i586.S +++ /dev/null @@ -1,332 +0,0 @@ -/* - decode_i586: asm synth - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Stefan Bieschewski - - synth_1to1 works the same way as the c version of this - file. only two types of changes have been made: - - reordered floating point instructions to - prevent pipline stalls - - made WRITE_SAMPLE use integer instead of - (slower) floating point - all kinds of x86 processors should benefit from these - modifications. - - useful sources of information on optimizing x86 code include: - - Intel Architecture Optimization Manual - http://www.intel.com/design/pentium/manuals/242816.htm - - Cyrix 6x86 Instruction Set Summary - ftp://ftp.cyrix.com/6x86/6x-dbch6.pdf - - AMD-K5 Processor Software Development - http://www.amd.com/products/cpg/techdocs/appnotes/20007e.pdf - - Stefan Bieschewski - - $Id: decode_i586.s 1 2004-09-18 13:30:08Z thomas $ -*/ - -#include "mangle.h" - -BSS - COMM(buffs,4352,4) -.data - ALIGN4 -bo: - .long 1 -#ifndef __APPLE__ -.section .rodata -#endif - ALIGN8 -.LC0: - .long 0x0,0x40dfffc0 - ALIGN8 -.LC1: - .long 0x0,0xc0e00000 - ALIGN8 -.text -.globl ASM_NAME(synth_1to1_i586_asm) -ASM_NAME(synth_1to1_i586_asm): - subl $12,%esp - pushl %ebp - pushl %edi - pushl %esi - pushl %ebx - movl 32(%esp),%eax - movl 40(%esp),%esi - xorl %edi,%edi - movl bo,%ebp - cmpl %edi,36(%esp) - jne .L48 - decl %ebp - andl $15,%ebp - movl %ebp,bo - movl $buffs,%ecx - jmp .L49 -.L48: - addl $2,%esi - movl $buffs+2176,%ecx -.L49: - testl $1,%ebp - je .L50 - movl %ecx,%ebx - movl %ebp,16(%esp) - pushl %eax - movl 20(%esp),%edx - leal (%ebx,%edx,4),%eax - pushl %eax - movl 24(%esp),%eax - incl %eax - andl $15,%eax - leal 1088(,%eax,4),%eax - addl %ebx,%eax - jmp .L74 -.L50: - leal 1088(%ecx),%ebx - leal 1(%ebp),%edx - movl %edx,16(%esp) - pushl %eax - leal 1092(%ecx,%ebp,4),%eax - pushl %eax - leal (%ecx,%ebp,4),%eax -.L74: - pushl %eax - call ASM_NAME(dct64_i386) - addl $12,%esp - movl 16(%esp),%edx - leal 0(,%edx,4),%edx - movl $ASM_NAME(decwin)+64,%eax - movl %eax,%ecx - subl %edx,%ecx - movl $16,%ebp -.L55: - flds (%ecx) - fmuls (%ebx) - flds 4(%ecx) - fmuls 4(%ebx) - fxch %st(1) - flds 8(%ecx) - fmuls 8(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 12(%ecx) - fmuls 12(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 16(%ecx) - fmuls 16(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 20(%ecx) - fmuls 20(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 24(%ecx) - fmuls 24(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 28(%ecx) - fmuls 28(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 32(%ecx) - fmuls 32(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 36(%ecx) - fmuls 36(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 40(%ecx) - fmuls 40(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 44(%ecx) - fmuls 44(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 48(%ecx) - fmuls 48(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 52(%ecx) - fmuls 52(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 56(%ecx) - fmuls 56(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 60(%ecx) - fmuls 60(%ebx) - fxch %st(2) - subl $4,%esp - faddp %st,%st(1) - fxch %st(1) - fsubrp %st,%st(1) - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: incl %edi -4: -.L54: - addl $64,%ebx - subl $-128,%ecx - addl $4,%esi - decl %ebp - jnz .L55 - flds (%ecx) - fmuls (%ebx) - flds 8(%ecx) - fmuls 8(%ebx) - flds 16(%ecx) - fmuls 16(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 24(%ecx) - fmuls 24(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 32(%ecx) - fmuls 32(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 40(%ecx) - fmuls 40(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 48(%ecx) - fmuls 48(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 56(%ecx) - fmuls 56(%ebx) - fxch %st(2) - subl $4,%esp - faddp %st,%st(1) - fxch %st(1) - faddp %st,%st(1) - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: incl %edi -4: -.L62: - addl $-64,%ebx - addl $4,%esi - movl 16(%esp),%edx - leal -128(%ecx,%edx,8),%ecx - movl $15,%ebp -.L68: - flds -4(%ecx) - fchs - fmuls (%ebx) - flds -8(%ecx) - fmuls 4(%ebx) - fxch %st(1) - flds -12(%ecx) - fmuls 8(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -16(%ecx) - fmuls 12(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -20(%ecx) - fmuls 16(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -24(%ecx) - fmuls 20(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -28(%ecx) - fmuls 24(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -32(%ecx) - fmuls 28(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -36(%ecx) - fmuls 32(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -40(%ecx) - fmuls 36(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -44(%ecx) - fmuls 40(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -48(%ecx) - fmuls 44(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -52(%ecx) - fmuls 48(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -56(%ecx) - fmuls 52(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -60(%ecx) - fmuls 56(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds (%ecx) - fmuls 60(%ebx) - fxch %st(2) - subl $4,%esp - fsubrp %st,%st(1) - fxch %st(1) - fsubrp %st,%st(1) - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: incl %edi -4: -.L67: - addl $-64,%ebx - addl $-128,%ecx - addl $4,%esi - decl %ebp - jnz .L68 - movl %edi,%eax - popl %ebx - popl %esi - popl %edi - popl %ebp - addl $12,%esp - ret - diff --git a/src/decode_i586_dither.S b/src/decode_i586_dither.S deleted file mode 100644 index b1b3a54f..00000000 --- a/src/decode_i586_dither.S +++ /dev/null @@ -1,365 +0,0 @@ -/* - synth_1to1 works the same way as the c version of this - file. only two types of changes have been made: - - reordered floating point instructions to - prevent pipline stalls - - made WRITE_SAMPLE use integer instead of - (slower) floating point - all kinds of x86 processors should benefit from these - modifications. - - useful sources of information on optimizing x86 code include: - - Intel Architecture Optimization Manual - http:#/www.intel.com/design/pentium/manuals/242816.htm - - Cyrix 6x86 Instruction Set Summary - ftp:#/ftp.cyrix.com/6x86/6x-dbch6.pdf - - AMD-K5 Processor Software Development - http:#/www.amd.com/products/cpg/techdocs/appnotes/20007e.pdf - - Stefan Bieschewski - - You can use this part under GPL. - - This version uses "circular" 64k dither noise. - (Patch by Adrian ) -*/ - -#include "mangle.h" - -BSS - COMM(buffs,4352,4) - COMM(ditherindex.1,4,4) -.data - ALIGN4 -bo: - .long 1 - -#ifndef __APPLE__ - .section .rodata -#endif - ALIGN8 -.LC0: - .long 0x0,0x40dfffc0 - ALIGN8 -.LC1: - .long 0x0,0xc0e00000 - ALIGN8 -.text -.globl ASM_NAME(synth_1to1_i586_asm_dither) -ASM_NAME(synth_1to1_i586_asm_dither): - subl $12,%esp - pushl %ebp - pushl %edi - pushl %esi - pushl %ebx - movl 32(%esp),%eax - movl 40(%esp),%esi - xorl %edi,%edi - movl bo,%ebp - cmpl %edi,36(%esp) - jne .L48 - decl %ebp - andl $15,%ebp - movl %ebp,bo - movl $buffs,%ecx - jmp .L49 -.L48: -/* In stereo mode , "rewind" dither pointer 32 samples , so 2nd channel */ -/* has same dither values. Tested OK for mono and stereo MP2 and MP3 */ - subl $128,ditherindex.1 - andl $0x0003fffc,ditherindex.1 - addl $2,%esi - movl $buffs+2176,%ecx -.L49: - -/* Now edi is mine, load it with indexpointer */ -/* movl $ASM_NAME(dithernoise),%edi */ - testl $1,%ebp - je .L50 - movl %ecx,%ebx - movl %ebp,16(%esp) - pushl %eax - movl 20(%esp),%edx - leal (%ebx,%edx,4),%eax - pushl %eax - movl 24(%esp),%eax - incl %eax - andl $15,%eax - leal 1088(,%eax,4),%eax - addl %ebx,%eax - jmp .L74 -.L50: - leal 1088(%ecx),%ebx - leal 1(%ebp),%edx - movl %edx,16(%esp) - pushl %eax - leal 1092(%ecx,%ebp,4),%eax - pushl %eax - leal (%ecx,%ebp,4),%eax -.L74: - pushl %eax - call ASM_NAME(dct64_i386) - addl $12,%esp - movl 16(%esp),%edx - leal 0(,%edx,4),%edx - movl $ASM_NAME(decwin)+64,%eax - movl %eax,%ecx - subl %edx,%ecx - movl $16,%ebp -.L55: - flds (%ecx) - fmuls (%ebx) - flds 4(%ecx) - fmuls 4(%ebx) - fxch %st(1) - flds 8(%ecx) - fmuls 8(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 12(%ecx) - fmuls 12(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 16(%ecx) - fmuls 16(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 20(%ecx) - fmuls 20(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 24(%ecx) - fmuls 24(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 28(%ecx) - fmuls 28(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 32(%ecx) - fmuls 32(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 36(%ecx) - fmuls 36(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 40(%ecx) - fmuls 40(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 44(%ecx) - fmuls 44(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 48(%ecx) - fmuls 48(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 52(%ecx) - fmuls 52(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 56(%ecx) - fmuls 56(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds 60(%ecx) - fmuls 60(%ebx) - fxch %st(2) - subl $4,%esp - faddp %st,%st(1) - fxch %st(1) - fsubrp %st,%st(1) - - - addl $4,ditherindex.1 - andl $0x0003fffc,ditherindex.1 - movl $ASM_NAME(dithernoise),%edi - addl ditherindex.1,%edi - - fadd (%edi) - - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: -/* incl %edi */ -4: -.L54: - addl $64,%ebx - subl $-128,%ecx - addl $4,%esi - decl %ebp - jnz .L55 - flds (%ecx) - fmuls (%ebx) - flds 8(%ecx) - fmuls 8(%ebx) - flds 16(%ecx) - fmuls 16(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 24(%ecx) - fmuls 24(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 32(%ecx) - fmuls 32(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 40(%ecx) - fmuls 40(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 48(%ecx) - fmuls 48(%ebx) - fxch %st(2) - faddp %st,%st(1) - flds 56(%ecx) - fmuls 56(%ebx) - fxch %st(2) - subl $4,%esp - faddp %st,%st(1) - fxch %st(1) - faddp %st,%st(1) - - addl $4,ditherindex.1 - andl $0x0003fffc,ditherindex.1 - movl $ASM_NAME(dithernoise),%edi - addl ditherindex.1,%edi - - fadd (%edi) - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: -/* incl %edi */ -4: -.L62: - addl $-64,%ebx - addl $4,%esi - movl 16(%esp),%edx - leal -128(%ecx,%edx,8),%ecx - movl $15,%ebp -.L68: - flds -4(%ecx) - fchs - fmuls (%ebx) - flds -8(%ecx) - fmuls 4(%ebx) - fxch %st(1) - flds -12(%ecx) - fmuls 8(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -16(%ecx) - fmuls 12(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -20(%ecx) - fmuls 16(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -24(%ecx) - fmuls 20(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -28(%ecx) - fmuls 24(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -32(%ecx) - fmuls 28(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -36(%ecx) - fmuls 32(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -40(%ecx) - fmuls 36(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -44(%ecx) - fmuls 40(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -48(%ecx) - fmuls 44(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -52(%ecx) - fmuls 48(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -56(%ecx) - fmuls 52(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds -60(%ecx) - fmuls 56(%ebx) - fxch %st(2) - fsubrp %st,%st(1) - flds (%ecx) - fmuls 60(%ebx) - fxch %st(2) - subl $4,%esp - fsubrp %st,%st(1) - fxch %st(1) - fsubrp %st,%st(1) - - addl $4,ditherindex.1 - andl $0x0003fffc,ditherindex.1 - movl $ASM_NAME(dithernoise),%edi - addl ditherindex.1,%edi - - fadd (%edi) - fistpl (%esp) - popl %eax - cmpl $32767,%eax - jg 1f - cmpl $-32768,%eax - jl 2f - movw %ax,(%esi) - jmp 4f -1: movw $32767,(%esi) - jmp 3f -2: movw $-32768,(%esi) -3: -/* incl %edi */ -4: -.L67: - addl $-64,%ebx - addl $-128,%ecx - addl $4,%esi - decl %ebp - jnz .L68 -/* return ipv edi 0 in eax */ - movl $0,%eax - popl %ebx - popl %esi - popl %edi - popl %ebp - addl $12,%esp - ret - diff --git a/src/decode_mmx.S b/src/decode_mmx.S deleted file mode 100644 index 24c8418f..00000000 --- a/src/decode_mmx.S +++ /dev/null @@ -1,121 +0,0 @@ -/* - decode_MMX.s: MMX optimized synth - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by the mysterious higway (apparently) - - Thomas' words about a note: - Initially, I found the note "this code comes under GPL" in this file. - After asking Michael about legal status of the MMX files, he said that he got them without any comment and thus I believe that the GPL comment was made by Michael, since he made mpg123 GPL at some time - and marked some files that way, but not all. - Based on that thought, I now consider this file along with the other parts of higway's MMX optimization to be licensed under LGPL 2.1 by Michael's decision. -*/ - -#include "mangle.h" - -.text - -.globl ASM_NAME(synth_1to1_MMX) - -ASM_NAME(synth_1to1_MMX): - pushl %ebp - pushl %edi - pushl %esi - pushl %ebx - movl 24(%esp),%ecx - movl 28(%esp),%edi - movl $15,%ebx - movl 36(%esp),%edx - leal (%edi,%ecx,2),%edi - decl %ecx - movl 32(%esp),%esi - movl (%edx),%eax - jecxz .L1 - decl %eax - andl %ebx,%eax - leal 1088(%esi),%esi - movl %eax,(%edx) -.L1: - leal (%esi,%eax,2),%edx - movl %eax,%ebp - incl %eax - pushl 20(%esp) - andl %ebx,%eax - leal 544(%esi,%eax,2),%ecx - incl %ebx - testl $1, %eax - jnz .L2 - xchgl %edx,%ecx - incl %ebp - leal 544(%esi),%esi -.L2: - pushl %edx - pushl %ecx - call ASM_NAME(dct64_MMX) - addl $12,%esp - leal 1(%ebx), %ecx - subl %ebp,%ebx - - leal ASM_NAME(decwins)(%ebx,%ebx,1), %edx -.L3: - movq (%edx),%mm0 - pmaddwd (%esi),%mm0 - movq 8(%edx),%mm1 - pmaddwd 8(%esi),%mm1 - movq 16(%edx),%mm2 - pmaddwd 16(%esi),%mm2 - movq 24(%edx),%mm3 - pmaddwd 24(%esi),%mm3 - paddd %mm1,%mm0 - paddd %mm2,%mm0 - paddd %mm3,%mm0 - movq %mm0,%mm1 - psrlq $32,%mm1 - paddd %mm1,%mm0 - psrad $13,%mm0 - packssdw %mm0,%mm0 - movd %mm0,%eax - movw %ax, (%edi) - - leal 32(%esi),%esi - leal 64(%edx),%edx - leal 4(%edi),%edi - loop .L3 - - - subl $64,%esi - movl $15,%ecx -.L4: - movq (%edx),%mm0 - pmaddwd (%esi),%mm0 - movq 8(%edx),%mm1 - pmaddwd 8(%esi),%mm1 - movq 16(%edx),%mm2 - pmaddwd 16(%esi),%mm2 - movq 24(%edx),%mm3 - pmaddwd 24(%esi),%mm3 - paddd %mm1,%mm0 - paddd %mm2,%mm0 - paddd %mm3,%mm0 - movq %mm0,%mm1 - psrlq $32,%mm1 - paddd %mm0,%mm1 - psrad $13,%mm1 - packssdw %mm1,%mm1 - psubd %mm0,%mm0 - psubsw %mm1,%mm0 - movd %mm0,%eax - movw %ax,(%edi) - - subl $32,%esi - addl $64,%edx - leal 4(%edi),%edi - loop .L4 - emms - popl %ebx - popl %esi - popl %edi - popl %ebp - ret - - diff --git a/src/decode_mmxsse.S b/src/decode_mmxsse.S deleted file mode 100644 index c9070812..00000000 --- a/src/decode_mmxsse.S +++ /dev/null @@ -1,278 +0,0 @@ -/* - decode_mmxsse: Synth for SSE and extended 3DNow (yeah, the name is a relic) - - copyright 2006-2007 by Zuxy Meng/the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by the mysterious higway for MMX (apparently) - then developed into SSE opt by Zuxy Meng, also building on Romain Dolbeau's AltiVec - Both have agreed to distribution under LGPL 2.1 . - - Transformed back into standalone asm, with help of - gcc -S -DHAVE_CONFIG_H -I. -march=pentium -O3 -Wall -pedantic -fno-strict-aliasing -DREAL_IS_FLOAT -c -o decode_mmxsse.{S,c} - - Original comment from MPlayer source follows: -*/ - -/* - * this code comes under GPL - * This code was taken from http://www.mpg123.org - * See ChangeLog of mpg123-0.59s-pre.1 for detail - * Applied to mplayer by Nick Kurshev - * - * Local ChangeLog: - * - Partial loops unrolling and removing MOVW insn from loops -*/ - -#include "mangle.h" - -.globl ASM_NAME(costab_mmxsse) - .data - ALIGN16 - /* .type ASM_NAME(costab_mmxsse), @object - .size ASM_NAME(costab_mmxsse), 124 */ -ASM_NAME(costab_mmxsse): - .long 1056974725 - .long 1057056395 - .long 1057223771 - .long 1057485416 - .long 1057855544 - .long 1058356026 - .long 1059019886 - .long 1059897405 - .long 1061067246 - .long 1062657950 - .long 1064892987 - .long 1066774581 - .long 1069414683 - .long 1073984175 - .long 1079645762 - .long 1092815430 - .long 1057005197 - .long 1057342072 - .long 1058087743 - .long 1059427869 - .long 1061799040 - .long 1065862217 - .long 1071413542 - .long 1084439708 - .long 1057128951 - .long 1058664893 - .long 1063675095 - .long 1076102863 - .long 1057655764 - .long 1067924853 - .long 1060439283 - ALIGN8 - /* .type one_null, @object - .size one_null, 8 */ -one_null: - .long -65536 - .long -65536 - ALIGN8 - /* .type null_one, @object - .size null_one, 8 */ -null_one: - .long 65535 - .long 65535 - /* .local temp */ - COMM(temp,4,4) - - .text - ALIGN16,,15 - /* void synth_1to1_sse_s(real *bandPtr, int channel, short *samples, short *buffs, int *bo) */ -.globl ASM_NAME(synth_1to1_sse_s) - /* .type ASM_NAME(synth_1to1_sse_s), @function */ -ASM_NAME(synth_1to1_sse_s): - pushl %ebp - movl %esp, %ebp - pushl %edi - pushl %esi - pushl %ebx -#APP - movl 12(%ebp),%ecx - movl 16(%ebp),%edi - movl $15,%ebx - movl 24(%ebp),%edx - leal (%edi,%ecx,2),%edi - decl %ecx - movl 20(%ebp),%esi - movl (%edx),%eax - jecxz .L01 - decl %eax - andl %ebx,%eax - leal 1088(%esi),%esi - movl %eax,(%edx) - .L01: - leal (%esi,%eax,2),%edx - movl %eax,temp - incl %eax - andl %ebx,%eax - leal 544(%esi,%eax,2),%ecx - incl %ebx - testl $1, %eax - jnz .L02 - xchgl %edx,%ecx - incl temp - leal 544(%esi),%esi - .L02: - emms - pushl 8(%ebp) - pushl %edx - pushl %ecx - call *ASM_NAME(mpl_dct64) - addl $12, %esp - leal 1(%ebx), %ecx - subl temp,%ebx - pushl %ecx - leal ASM_NAME(decwins)(%ebx,%ebx,1), %edx - shrl $1, %ecx - ALIGN16 - .L03: - movq (%edx),%mm0 - movq 64(%edx),%mm4 - pmaddwd (%esi),%mm0 - pmaddwd 32(%esi),%mm4 - movq 8(%edx),%mm1 - movq 72(%edx),%mm5 - pmaddwd 8(%esi),%mm1 - pmaddwd 40(%esi),%mm5 - movq 16(%edx),%mm2 - movq 80(%edx),%mm6 - pmaddwd 16(%esi),%mm2 - pmaddwd 48(%esi),%mm6 - movq 24(%edx),%mm3 - movq 88(%edx),%mm7 - pmaddwd 24(%esi),%mm3 - pmaddwd 56(%esi),%mm7 - paddd %mm1,%mm0 - paddd %mm5,%mm4 - paddd %mm2,%mm0 - paddd %mm6,%mm4 - paddd %mm3,%mm0 - paddd %mm7,%mm4 - movq %mm0,%mm1 - movq %mm4,%mm5 - psrlq $32,%mm1 - psrlq $32,%mm5 - paddd %mm1,%mm0 - paddd %mm5,%mm4 - psrad $13,%mm0 - psrad $13,%mm4 - packssdw %mm0,%mm0 - packssdw %mm4,%mm4 - movq (%edi), %mm1 - punpckldq %mm4, %mm0 - pand one_null, %mm1 - pand null_one, %mm0 - por %mm0, %mm1 - movq %mm1,(%edi) - leal 64(%esi),%esi - leal 128(%edx),%edx - leal 8(%edi),%edi - decl %ecx - jnz .L03 - popl %ecx - andl $1, %ecx - jecxz .next_loop - movq (%edx),%mm0 - pmaddwd (%esi),%mm0 - movq 8(%edx),%mm1 - pmaddwd 8(%esi),%mm1 - movq 16(%edx),%mm2 - pmaddwd 16(%esi),%mm2 - movq 24(%edx),%mm3 - pmaddwd 24(%esi),%mm3 - paddd %mm1,%mm0 - paddd %mm2,%mm0 - paddd %mm3,%mm0 - movq %mm0,%mm1 - psrlq $32,%mm1 - paddd %mm1,%mm0 - psrad $13,%mm0 - packssdw %mm0,%mm0 - movd %mm0,%eax - movw %ax, (%edi) - leal 32(%esi),%esi - leal 64(%edx),%edx - leal 4(%edi),%edi - .next_loop: - subl $64,%esi - movl $7,%ecx - ALIGN16 - .L04: - movq (%edx),%mm0 - movq 64(%edx),%mm4 - pmaddwd (%esi),%mm0 - pmaddwd -32(%esi),%mm4 - movq 8(%edx),%mm1 - movq 72(%edx),%mm5 - pmaddwd 8(%esi),%mm1 - pmaddwd -24(%esi),%mm5 - movq 16(%edx),%mm2 - movq 80(%edx),%mm6 - pmaddwd 16(%esi),%mm2 - pmaddwd -16(%esi),%mm6 - movq 24(%edx),%mm3 - movq 88(%edx),%mm7 - pmaddwd 24(%esi),%mm3 - pmaddwd -8(%esi),%mm7 - paddd %mm1,%mm0 - paddd %mm5,%mm4 - paddd %mm2,%mm0 - paddd %mm6,%mm4 - paddd %mm3,%mm0 - paddd %mm7,%mm4 - movq %mm0,%mm1 - movq %mm4,%mm5 - psrlq $32,%mm1 - psrlq $32,%mm5 - paddd %mm0,%mm1 - paddd %mm4,%mm5 - psrad $13,%mm1 - psrad $13,%mm5 - packssdw %mm1,%mm1 - packssdw %mm5,%mm5 - psubd %mm0,%mm0 - psubd %mm4,%mm4 - psubsw %mm1,%mm0 - psubsw %mm5,%mm4 - movq (%edi), %mm1 - punpckldq %mm4, %mm0 - pand one_null, %mm1 - pand null_one, %mm0 - por %mm0, %mm1 - movq %mm1,(%edi) - subl $64,%esi - addl $128,%edx - leal 8(%edi),%edi - decl %ecx - jnz .L04 - movq (%edx),%mm0 - pmaddwd (%esi),%mm0 - movq 8(%edx),%mm1 - pmaddwd 8(%esi),%mm1 - movq 16(%edx),%mm2 - pmaddwd 16(%esi),%mm2 - movq 24(%edx),%mm3 - pmaddwd 24(%esi),%mm3 - paddd %mm1,%mm0 - paddd %mm2,%mm0 - paddd %mm3,%mm0 - movq %mm0,%mm1 - psrlq $32,%mm1 - paddd %mm0,%mm1 - psrad $13,%mm1 - packssdw %mm1,%mm1 - psubd %mm0,%mm0 - psubsw %mm1,%mm0 - movd %mm0,%eax - movw %ax,(%edi) - emms - -#NO_APP - popl %ebx - popl %esi - popl %edi - popl %ebp - ret - /* .size ASM_NAME(synth_1to1_sse_s), .-ASM_NAME(synth_1to1_sse_s) */ diff --git a/src/decode_ntom.c b/src/decode_ntom.c deleted file mode 100644 index c333611a..00000000 --- a/src/decode_ntom.c +++ /dev/null @@ -1,296 +0,0 @@ -/* - decode_ntom.c: N->M down/up sampling. Not optimized for speed. - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include -#include - -#include "mpg123.h" -#include "decode.h" - -#define NTOM_MUL (32768) -static unsigned long ntom_val[2] = { NTOM_MUL>>1,NTOM_MUL>>1 }; -static unsigned long ntom_step = NTOM_MUL; - - -int synth_ntom_set_step(long m,long n) -{ - if(param.verbose > 1) - fprintf(stderr,"Init rate converter: %ld->%ld\n",m,n); - - if(n >= 96000 || m >= 96000 || m == 0 || n == 0) { - error("NtoM converter: illegal rates"); - return 0; - } - - n *= NTOM_MUL; - ntom_step = n / m; - - if(ntom_step > 8*NTOM_MUL) { - error("max. 1:8 conversion allowed!"); - return 0; - } - - ntom_val[0] = ntom_val[1] = NTOM_MUL>>1; - return 1; -} - -int synth_ntom_8bit(real *bandPtr,int channel,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[8*64]; - sample_t *tmp1 = samples_tmp + channel; - int i,ret; - int pnt1 = 0; - - ret = synth_ntom(bandPtr,channel,(unsigned char *) samples_tmp,&pnt1); - samples += channel + *pnt; - - for(i=0;i<(pnt1>>2);i++) { -#ifdef FLOATOUT - *samples = 0; -#else - *samples = conv16to8[*tmp1>>AUSHIFT]; -#endif - samples += 2; - tmp1 += 2; - } - *pnt += pnt1>>1; - - return ret; -} - -int synth_ntom_8bit_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[8*64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_ntom(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<(pnt1>>2);i++) { -#ifdef FLOATOUT - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += pnt1 >> 2; - - return ret; -} - -int synth_ntom_8bit_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[8*64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_ntom(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<(pnt1>>2);i++) { -#ifdef FLOATOUT - *samples++ = 0; - *samples++ = 0; -#else - *samples++ = conv16to8[*tmp1>>AUSHIFT]; - *samples++ = conv16to8[*tmp1>>AUSHIFT]; -#endif - tmp1 += 2; - } - *pnt += pnt1 >> 1; - - return ret; -} - -int synth_ntom_mono(real *bandPtr,unsigned char *samples,int *pnt) -{ - sample_t samples_tmp[8*64]; - sample_t *tmp1 = samples_tmp; - int i,ret; - int pnt1 = 0; - - ret = synth_ntom(bandPtr,0,(unsigned char *) samples_tmp,&pnt1); - samples += *pnt; - - for(i=0;i<(pnt1>>2);i++) { - *( (sample_t *)samples) = *tmp1; - samples += sizeof(sample_t); - tmp1 += 2; - } - *pnt += (pnt1>>2)*sizeof(sample_t); - - return ret; -} - - -int synth_ntom_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt) -{ - int i,ret; - int pnt1 = *pnt; - - ret = synth_ntom(bandPtr,0,samples,pnt); - samples += pnt1; - - for(i=0;i<((*pnt-pnt1)>>2);i++) { - ((sample_t *)samples)[1] = ((sample_t *)samples)[0]; - samples+=2*sizeof(sample_t); - } - - return ret; -} - - -int synth_ntom(real *bandPtr,int channel,unsigned char *out,int *pnt) -{ - static real buffs[2][2][0x110]; - static const int step = 2; - static int bo = 1; - sample_t *samples = (sample_t *) (out + *pnt); - - real *b0,(*buf)[0x110]; - int clip = 0; - int bo1; - int ntom; - - if(have_eq_settings) - do_equalizer(bandPtr,channel); - - if(!channel) { - bo--; - bo &= 0xf; - buf = buffs[0]; - ntom = ntom_val[1] = ntom_val[0]; - } - else { - samples++; - out += 2; /* to compute the right *pnt value */ - buf = buffs[1]; - ntom = ntom_val[1]; - } - - if(bo & 0x1) { - b0 = buf[0]; - bo1 = bo; - opt_dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); - } - else { - b0 = buf[1]; - bo1 = bo+1; - opt_dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); - } - - - { - register int j; - real *window = opt_decwin + 16 - bo1; - - for (j=16;j;j--,window+=0x10) - { - real sum; - - ntom += ntom_step; - if(ntom < NTOM_MUL) { - window += 16; - b0 += 16; - continue; - } - - sum = *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - sum += *window++ * *b0++; - sum -= *window++ * *b0++; - - while(ntom >= NTOM_MUL) { - WRITE_SAMPLE(samples,sum,clip); - samples += step; - ntom -= NTOM_MUL; - } - } - - ntom += ntom_step; - if(ntom >= NTOM_MUL) - { - real sum; - sum = window[0x0] * b0[0x0]; - sum += window[0x2] * b0[0x2]; - sum += window[0x4] * b0[0x4]; - sum += window[0x6] * b0[0x6]; - sum += window[0x8] * b0[0x8]; - sum += window[0xA] * b0[0xA]; - sum += window[0xC] * b0[0xC]; - sum += window[0xE] * b0[0xE]; - - while(ntom >= NTOM_MUL) { - WRITE_SAMPLE(samples,sum,clip); - samples += step; - ntom -= NTOM_MUL; - } - } - - b0-=0x10,window-=0x20; - window += bo1<<1; - - for (j=15;j;j--,b0-=0x20,window-=0x10) - { - real sum; - - ntom += ntom_step; - if(ntom < NTOM_MUL) { - window -= 16; - b0 += 16; - continue; - } - - sum = -*(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - sum -= *(--window) * *b0++; - - while(ntom >= NTOM_MUL) { - WRITE_SAMPLE(samples,sum,clip); - samples += step; - ntom -= NTOM_MUL; - } - } - } - - ntom_val[channel] = ntom; - *pnt = ((unsigned char *) samples - out); - - return clip; -} - - diff --git a/src/dnoise.c b/src/dnoise.c deleted file mode 100644 index 725c4f46..00000000 --- a/src/dnoise.c +++ /dev/null @@ -1,65539 +0,0 @@ -float dithernoise[65536] = -{ --0.126371, -0.497872, --0.779434, -0.843073, --0.646505, -0.245335, -0.222073, --0.581612, -0.695388, --0.530708, -0.185041, -0.158622, --0.331470, -0.278622, --0.092817, --0.048841, -0.011484, -0.193124, --0.404798, -0.427858, --0.181552, --0.226995, -0.570757, --0.665446, -0.501044, --0.236217, -0.058892, --0.027609, -0.026705, -0.123418, --0.489333, -0.929757, --1.170636, -1.002794, --0.453246, --0.206738, -0.632205, --0.633397, -0.294532, -0.104633, --0.302673, -0.242320, --0.089727, -0.081029, --0.324990, -0.717858, --1.029248, -1.079430, --0.865108, -0.545086, --0.315316, -0.279339, --0.403600, -0.567323, --0.649849, -0.592073, --0.408065, -0.162572, -0.060177, --0.184770, -0.170196, --0.029769, --0.166320, -0.316669, --0.336468, -0.202805, -0.031615, --0.267881, -0.415993, --0.441208, -0.374135, --0.283867, -0.237228, --0.269021, -0.372174, --0.501860, -0.588166, --0.561109, -0.389184, --0.113668, --0.154052, -0.288390, --0.230394, -0.033172, -0.169925, --0.254336, -0.180427, -0.001239, --0.207596, -0.381351, --0.497008, -0.525549, --0.416073, -0.133741, -0.274462, --0.657655, -0.824427, --0.655465, -0.181011, -0.434058, --0.978169, -1.285011, --1.277038, -0.964366, --0.433292, --0.163679, -0.640509, --0.853299, -0.787458, --0.582884, -0.449365, --0.512563, -0.704562, --0.798259, -0.577758, --0.023201, --0.637865, -1.068069, --1.056910, -0.681034, --0.259306, -0.124050, --0.373801, -0.794477, --1.013669, -0.775175, --0.129223, --0.599158, -1.031099, --0.974601, -0.517839, -0.066833, --0.512471, -0.700553, --0.680405, -0.587045, --0.534422, -0.550606, --0.576378, -0.514289, --0.298390, --0.051238, -0.423241, --0.671410, -0.704669, --0.549354, -0.333014, --0.194403, -0.184374, --0.232905, -0.206095, --0.008017, --0.348208, -0.743970, --1.019454, -1.049885, --0.795487, -0.316931, -0.236503, --0.666516, -0.797240, --0.561812, -0.056286, -0.489703, --0.828997, -0.835407, --0.572158, -0.239403, --0.035552, -0.028771, --0.126091, -0.156077, --0.002708, --0.304050, -0.602824, --0.710860, -0.555917, --0.239252, --0.018276, -0.017531, -0.282194, --0.725074, -1.049196, --1.048341, -0.699686, --0.177881, --0.246852, -0.355969, --0.086717, --0.456173, -1.068131, --1.539105, -1.723683, --1.568057, -1.105834, --0.444760, --0.248736, -0.779518, --0.982741, -0.800518, --0.332841, --0.187653, -0.507058, --0.492466, -0.211669, -0.113055, --0.253987, -0.128636, -0.153526, --0.377464, -0.374412, --0.128717, --0.227781, -0.516816, --0.630938, -0.590884, --0.517150, -0.545354, --0.739329, -1.047802, --1.323966, -1.397959, --1.168752, -0.669202, --0.066645, --0.409525, -0.580521, --0.410935, -0.026572, -0.356685, --0.553327, -0.504346, --0.288332, -0.043253, -0.141181, --0.277205, -0.436716, --0.651000, -0.844066, --0.869754, -0.635648, --0.215008, --0.157355, -0.226196, -0.096190, --0.635057, -1.036336, --0.990329, -0.451464, -0.299472, --0.807388, -0.722275, --0.027316, --0.935817, -1.664935, --1.792102, -1.287557, --0.451326, --0.286585, -0.618143, --0.505490, -0.152416, -0.157551, --0.240544, -0.102379, -0.099415, --0.179993, -0.051984, -0.226031, --0.500686, -0.633198, --0.588798, -0.445032, --0.317995, -0.269202, --0.269536, -0.248552, --0.182288, -0.135708, --0.212630, -0.448683, --0.739797, -0.880135, --0.697185, -0.191455, -0.424851, --0.828880, -0.772228, --0.236914, --0.534490, -1.158070, --1.314780, -0.930502, --0.226757, --0.393937, -0.571055, --0.192762, --0.537378, -1.218571, --1.487907, -1.229142, --0.628217, -0.047183, -0.196134, --0.002984, --0.476145, -0.954564, --1.178012, -1.043978, --0.617449, -0.062058, -0.451735, --0.808485, -0.964828, --0.938582, -0.790698, --0.605411, -0.463329, --0.409224, -0.430645, --0.465883, -0.442322, --0.322865, -0.131314, -0.058113, --0.158472, -0.113045, -0.075994, --0.343025, -0.580166, --0.678519, -0.574712, --0.281691, --0.113686, -0.486386, --0.724084, -0.768183, --0.628861, -0.372934, --0.093638, --0.124324, -0.231160, --0.219429, -0.112956, -0.050462, --0.226928, -0.362720, --0.395747, -0.279793, --0.024831, --0.282393, -0.510873, --0.563079, -0.442322, --0.249115, -0.100163, --0.032927, --0.020319, -0.160193, --0.409025, -0.663533, --0.766234, -0.647766, --0.419203, -0.320701, --0.544970, -1.065059, --1.610836, -1.833730, --1.553197, -0.903052, --0.259697, --0.007328, --0.212963, -0.698974, --1.051706, -0.966280, --0.430702, --0.275602, -0.767679, --0.792826, -0.371346, -0.230092, --0.659509, -0.676170, --0.279738, --0.289389, -0.677696, --0.612296, -0.059468, -0.744351, --1.415615, -1.633517, --1.310116, -0.618659, -0.125613, --0.641087, -0.797705, --0.624972, -0.244521, -0.200689, --0.580801, -0.792009, --0.778689, -0.563061, --0.245811, --0.048662, -0.255707, --0.416065, -0.636467, --0.985799, -1.405228, --1.706730, -1.672335, --1.194345, -0.367253, -0.531114, --1.167965, -1.328168, --1.033785, -0.534288, --0.161470, -0.130608, --0.412598, -0.763537, --0.892412, -0.650136, --0.110037, --0.506462, -0.990219, --1.265662, -1.392091, --1.463807, -1.502231, --1.428187, -1.130763, --0.575290, --0.131447, -0.766594, --1.094440, -0.988759, --0.506066, --0.132718, -0.647549, --0.840015, -0.693105, --0.370183, -0.110418, --0.083722, -0.297888, --0.616739, -0.869546, --0.967642, -0.943438, --0.891181, -0.867534, --0.838194, -0.714985, --0.449887, -0.104667, -0.165938, --0.209080, --0.023751, -0.441613, --0.868145, -1.141624, --1.192608, -1.058257, --0.840340, -0.643364, --0.524861, -0.474193, --0.425268, -0.302863, --0.085859, --0.152176, -0.268761, --0.148889, --0.186358, -0.549277, --0.681526, -0.428213, -0.134062, --0.721509, -1.019052, --0.887599, -0.451604, --0.001794, --0.212825, -0.146477, -0.045285, --0.159039, -0.121305, --0.050041, -0.156332, --0.567752, -1.211385, --1.841873, -2.186326, --2.095567, -1.601731, --0.866160, -0.082809, -0.585382, --1.015759, -1.120463, --0.871128, -0.346640, -0.255073, --0.689651, -0.801037, --0.626363, -0.379712, --0.308040, -0.514921, --0.883995, -1.165453, --1.164216, -0.885950, --0.525427, -0.303936, --0.284000, -0.312088, --0.143421, --0.341842, -0.999944, --1.480440, -1.452371, --0.841920, --0.091956, -0.905720, --1.243410, -1.043876, --0.544013, -0.088666, -0.104874, --0.059335, --0.036917, -0.011546, -0.152849, --0.322889, -0.341940, --0.168819, --0.082418, -0.226453, --0.143899, --0.133743, -0.451565, --0.644967, -0.652353, --0.544854, -0.456003, --0.468467, -0.544916, --0.555947, -0.384552, --0.029689, --0.369447, -0.608910, --0.544448, -0.180984, -0.328957, --0.768386, -0.962414, --0.848542, -0.488615, --0.036194, --0.319074, -0.419543, --0.209805, --0.218671, -0.647677, --0.830564, -0.627034, --0.091921, --0.545405, -1.004111, --1.098973, -0.820335, --0.308723, --0.240546, -0.669917, --0.897878, -0.904382, --0.702341, -0.330260, -0.134447, --0.571624, -0.851422, --0.896608, -0.730999, --0.469036, -0.242118, --0.111680, -0.038244, -0.064536, --0.233955, -0.406047, --0.460742, -0.332000, --0.086600, --0.106043, -0.098374, -0.116018, --0.389234, -0.525811, --0.425894, -0.154290, -0.111027, --0.203706, -0.073183, -0.196870, --0.451806, -0.557485, --0.464065, -0.217680, -0.073077, --0.293398, -0.375712, --0.328123, -0.223963, --0.156283, -0.182045, --0.288072, -0.398408, --0.418353, -0.291616, --0.042398, --0.219641, -0.341600, --0.208667, --0.171333, -0.634521, --0.920253, -0.810839, --0.275652, --0.477942, -1.094327, --1.255779, -0.853991, --0.044561, --0.840078, -1.457267, --1.601629, -1.265814, --0.609276, --0.122629, -0.682685, --0.887867, -0.668919, --0.102846, --0.591799, -1.123047, --1.252539, -0.925260, --0.317176, --0.250328, -0.493810, --0.337583, --0.044739, -0.347126, --0.327706, --0.046634, -0.595021, --1.044198, -1.185353, --0.971055, -0.515207, --0.021765, --0.308064, -0.353022, --0.116044, --0.276426, -0.627639, --0.764058, -0.624909, --0.291646, --0.067457, -0.304359, --0.377220, -0.356467, --0.351534, -0.415600, --0.499381, -0.487763, --0.292859, --0.063127, -0.437589, --0.645581, -0.579737, --0.290667, --0.034326, -0.188131, --0.081413, --0.193407, -0.418649, --0.392865, -0.064960, -0.425936, --0.830973, -0.943858, --0.732277, -0.364261, --0.105132, -0.140695, --0.439890, -0.759009, --0.802184, -0.436993, -0.192156, --0.749808, -0.944502, --0.739487, -0.373420, --0.169415, -0.280941, --0.577621, -0.762562, --0.625049, -0.221936, -0.159477, --0.228902, --0.068902, -0.491491, --0.660812, -0.331401, -0.427909, --1.263737, -1.753887, --1.661433, -1.063673, --0.284554, --0.311289, -0.524205, --0.400098, -0.152814, -0.000831, -0.024832, --0.164273, -0.290136, --0.331264, -0.327050, --0.383008, -0.570581, --0.854593, -1.104448, --1.177109, -1.006895, --0.639477, -0.194828, -0.203307, --0.479882, -0.615899, --0.623115, -0.517761, --0.316398, -0.052591, -0.205826, --0.361960, -0.326457, --0.071748, --0.329229, -0.713980, --0.900912, -0.788143, --0.419879, --0.029883, -0.355239, --0.436436, -0.298387, --0.070931, --0.114130, -0.208693, --0.254976, -0.318693, --0.412097, -0.473227, --0.416822, -0.214036, -0.063603, --0.271802, -0.276965, --0.042089, --0.340042, -0.690092, --0.839610, -0.726656, --0.430764, -0.121686, -0.049591, --0.047432, --0.031360, -0.035101, -0.124440, --0.400909, -0.644842, --0.713888, -0.575514, --0.322630, -0.096578, -0.013152, --0.010922, --0.043259, -0.102322, --0.163330, -0.241401, --0.326364, -0.374773, --0.347347, -0.253156, --0.155689, -0.134088, --0.232258, -0.432746, --0.665160, -0.833455, --0.846793, -0.649700, --0.250874, --0.263652, -0.751424, --1.070271, -1.140694, --0.975397, -0.660284, --0.309355, -0.028465, -0.099423, --0.024506, --0.246477, -0.626578, --0.962104, -1.100112, --0.975528, -0.649942, --0.264381, --0.059637, -0.289311, --0.464241, -0.618969, --0.724111, -0.705307, --0.521791, -0.228780, -0.036842, --0.137976, -0.020887, -0.258619, --0.575388, -0.805269, --0.883310, -0.827107, --0.721062, -0.666692, --0.716213, -0.826535, --0.873709, -0.735604, --0.394343, --0.020124, -0.291573, --0.252174, --0.102241, -0.599796, --0.991718, -1.093305, --0.874595, -0.453732, --0.014581, --0.289499, -0.394402, --0.331127, -0.193321, --0.087056, -0.079568, --0.165102, -0.270096, --0.307337, -0.252447, --0.182961, -0.231172, --0.469057, -0.816267, --1.067345, -1.044785, --0.764925, -0.466107, --0.445726, -0.817137, --1.383623, -1.748763, --1.595159, -0.922294, --0.061379, --0.542436, -0.615714, --0.205097, --0.399097, -0.881831, --1.092023, -1.077639, --0.975025, -0.867492, --0.731467, -0.498781, --0.162509, --0.178186, -0.379277, --0.369241, -0.220551, --0.107283, -0.172762, --0.406348, -0.629314, --0.612433, -0.249310, -0.338060, --0.846355, -0.972771, --0.617145, --0.032780, -0.600043, --0.746601, -0.386403, -0.256532, --0.784731, -0.870020, --0.445768, --0.268976, -0.915043, --1.203731, -1.059589, --0.623752, -0.141269, -0.182059, --0.269220, -0.172855, --0.008117, --0.129451, -0.210069, --0.258417, -0.302920, --0.330486, -0.287292, --0.128816, --0.121732, -0.361859, --0.469078, -0.394170, --0.214734, -0.093875, --0.162012, -0.406885, --0.663390, -0.723732, --0.491897, -0.064450, -0.327834, --0.474959, -0.320895, -0.022322, --0.378511, -0.635648, --0.795615, -0.917141, --1.016394, -1.019779, --0.813605, -0.350780, -0.273418, --0.841845, -1.126313, --1.017729, -0.590333, --0.058643, --0.345717, -0.499637, --0.441121, -0.322034, --0.298458, -0.431822, --0.660216, -0.849055, --0.880159, -0.720260, --0.431131, -0.123961, -0.105120, --0.214306, -0.208351, --0.100351, --0.114623, -0.440820, --0.829259, -1.145886, --1.213623, -0.923573, --0.340590, --0.289546, -0.661411, --0.590929, -0.132205, -0.454372, --0.863841, -0.929048, --0.703966, -0.400286, --0.228318, -0.251690, --0.350402, -0.312806, -0.007098, --0.572131, -1.162878, --1.497817, -1.394627, --0.870285, -0.122760, -0.580750, --1.028903, -1.132477, --0.917120, -0.479999, -0.047192, --0.519970, -0.808986, --0.846259, -0.667735, --0.410196, -0.243936, --0.273427, -0.470404, --0.688768, -0.757221, --0.593355, -0.267412, -0.028232, --0.091791, --0.156209, -0.605217, --1.004469, -1.112847, --0.859761, -0.404783, --0.041174, --0.003764, --0.264562, -0.598731, --0.673303, -0.309215, -0.401547, --1.157364, -1.641678, --1.705791, -1.418602, --0.974983, -0.558513, --0.265421, -0.120322, --0.129348, -0.297804, --0.594940, -0.915478, --1.098386, -1.010987, --0.641185, -0.122715, -0.334966, --0.569442, -0.558987, --0.424526, -0.339881, --0.409981, -0.597664, --0.747025, -0.688491, --0.356512, --0.158509, -0.658171, --0.951136, -0.958656, --0.745797, -0.467615, --0.274757, -0.239728, --0.339133, -0.486582, --0.586261, -0.579078, --0.467582, -0.315632, --0.221506, -0.269172, --0.474973, -0.760398, --0.975954, -0.973743, --0.690864, -0.192410, -0.356026, --0.772543, -0.949729, --0.900134, -0.733633, --0.583325, -0.523436, --0.525331, -0.478425, --0.268967, --0.127116, -0.598335, --0.940496, -0.973332, --0.658561, -0.133762, -0.369268, --0.668722, -0.736605, --0.688751, -0.674695, --0.756061, -0.865415, --0.870559, -0.688613, --0.363137, -0.049877, -0.075865, -0.071788, --0.431807, -0.823065, --1.038807, -0.955526, --0.596866, -0.118791, -0.274354, --0.436421, -0.350777, --0.128100, --0.067161, -0.119981, --0.035890, --0.067142, -0.045999, -0.155266, --0.448546, -0.649838, --0.607867, -0.322344, -0.041586, --0.263861, -0.228872, --0.013125, --0.171139, -0.138699, -0.123717, --0.445500, -0.605721, --0.507377, -0.252150, --0.054281, -0.064718, --0.251054, -0.432242, --0.435885, -0.242430, -0.004844, --0.127050, -0.058282, -0.113901, --0.244058, -0.265755, --0.241002, -0.279204, --0.406938, -0.517508, --0.456691, -0.173850, -0.198372, --0.416717, -0.304491, -0.105234, --0.575120, -0.817256, --0.683192, -0.256697, -0.209879, --0.463639, -0.407055, --0.141686, --0.120206, -0.209269, --0.111371, --0.036117, -0.056245, -0.132113, --0.455004, -0.738924, --0.831891, -0.695433, --0.407892, -0.095410, -0.144420, --0.276075, -0.316568, --0.311501, -0.313140, --0.354244, -0.416890, --0.422025, -0.270441, -0.074684, --0.526041, -0.897210, --1.015672, -0.842516, --0.499020, -0.171551, -0.030642, --0.146657, -0.306201, --0.595179, -0.962286, --1.245916, -1.295508, --1.081126, -0.700356, --0.285323, --0.099657, -0.476437, --0.875218, -1.241929, --1.431463, -1.310947, --0.891512, -0.366863, --0.005617, --0.031304, --0.194777, -0.450450, --0.509341, -0.318669, --0.023303, --0.165326, -0.142850, -0.012307, --0.116057, -0.039768, -0.174585, --0.333380, -0.228331, -0.207951, --0.834385, -1.364494, --1.518036, -1.172248, --0.431292, --0.417212, -1.034792, --1.191249, -0.875492, --0.299263, --0.217953, -0.429268, --0.301802, -0.025015, -0.127076, -0.012276, --0.394095, -0.806780, --1.043587, -1.048174, --0.924980, -0.818928, --0.778188, -0.723077, --0.543930, -0.233090, -0.075025, --0.199677, -0.066336, -0.217387, --0.432228, -0.409344, --0.151076, --0.184965, -0.416687, --0.467639, -0.391133, --0.283283, -0.176900, --0.017769, --0.258219, -0.624694, --0.942099, -1.044431, --0.868458, -0.517675, --0.204333, -0.112470, --0.284888, -0.611869, --0.915314, -1.054162, --0.979808, -0.727258, --0.379226, -0.039545, -0.184125, --0.210794, -0.032270, -0.259758, --0.504564, -0.558015, --0.378406, -0.050077, -0.271750, --0.452459, -0.442826, --0.283869, -0.066321, -0.116858, --0.198305, -0.145301, -0.035784, --0.293010, -0.530312, --0.632053, -0.512656, --0.170955, --0.285003, -0.669622, --0.804852, -0.619735, --0.205060, --0.220618, -0.427814, --0.313197, --0.029399, -0.357015, --0.422249, -0.124783, -0.426866, --0.980676, -1.285697, --1.222558, -0.847610, --0.342968, --0.081648, -0.278461, --0.210017, --0.049320, -0.352640, --0.549652, -0.561496, --0.422917, -0.258953, --0.201742, -0.299498, --0.482371, -0.609926, --0.562707, -0.309754, -0.088441, --0.525716, -0.898143, --1.125803, -1.158252, --0.986273, -0.658672, --0.277931, --0.041854, -0.233335, --0.304836, -0.313730, --0.306201, -0.274504, --0.167333, --0.056101, -0.372723, --0.686676, -0.875548, --0.864011, -0.676555, --0.431590, -0.275262, --0.293007, -0.454948, --0.632119, -0.675175, --0.507616, -0.176505, -0.169068, --0.358550, -0.294113, --0.006279, --0.359251, -0.615854, --0.630706, -0.387357, -0.015235, --0.421784, -0.699343, --0.791669, -0.725989, --0.578780, -0.427831, --0.317745, -0.252718, --0.212435, -0.175990, --0.137676, -0.106774, --0.094368, -0.098810, --0.100976, -0.073057, -0.006375, --0.142302, -0.325267, --0.541313, -0.778582, --1.022235, -1.240814, --1.378523, -1.367406, --1.161542, -0.778153, --0.318791, --0.051722, -0.170870, -0.038593, --0.514572, -1.069342, --1.473991, -1.570776, --1.349059, -0.940323, --0.539828, -0.306654, --0.300306, -0.479036, --0.742283, -0.981081, --1.110657, -1.083779, --0.894245, -0.576321, --0.196482, --0.165455, -0.439992, --0.585456, -0.593641, --0.487724, -0.320186, --0.170138, -0.129661, --0.270644, -0.599909, --1.029764, -1.394669, --1.521270, -1.322157, --0.857043, -0.314362, -0.087627, --0.225309, -0.138654, -0.005851, --0.038163, --0.092435, -0.286070, --0.380001, -0.289860, --0.092329, --0.022898, --0.099272, -0.445759, --0.824991, -0.993879, --0.828842, -0.413001, -0.022589, --0.255005, -0.207553, -0.022108, --0.248469, -0.326430, --0.233274, -0.062357, -0.051383, --0.019135, --0.150237, -0.356854, --0.466509, -0.388746, --0.136404, --0.169770, -0.363775, --0.335023, -0.104683, -0.180737, --0.346056, -0.315050, --0.177286, -0.137148, --0.369718, -0.878869, --1.458996, -1.795941, --1.650661, -1.012486, --0.126298, --0.626793, -0.927206, --0.680170, -0.053978, -0.622507, --1.037653, -1.046285, --0.712487, -0.237690, -0.167528, --0.387699, -0.432696, --0.396343, -0.384227, --0.454948, -0.598305, --0.750330, -0.830445, --0.783369, -0.608248, --0.361498, -0.131084, -0.004466, --0.008442, --0.106326, -0.291594, --0.482222, -0.606105, --0.591277, -0.386474, -0.002125, --0.481882, -0.888868, --1.059688, -0.925105, --0.560939, -0.150254, -0.127323, --0.206099, -0.165933, --0.162594, -0.308410, --0.590654, -0.884120, --1.042306, -0.996308, --0.790537, -0.537674, --0.335780, -0.212223, --0.130261, -0.040124, -0.075285, --0.198047, -0.309149, --0.417683, -0.550934, --0.711807, -0.847520, --0.868410, -0.712931, --0.410214, -0.086215, -0.100619, --0.056309, --0.182961, -0.462160, --0.594302, -0.473966, --0.148668, --0.201714, -0.373232, --0.270681, --0.024302, -0.303310, --0.372952, -0.190864, -0.103034, --0.286269, -0.215294, -0.065693, --0.343818, -0.370732, --0.023498, --0.604514, -1.232847, --1.527338, -1.271319, --0.490821, --0.533027, -1.382690, --1.705096, -1.391742, --0.633061, --0.192174, -0.729938, --0.834421, -0.608782, --0.288889, -0.065827, -0.021201, --0.055577, -0.125187, --0.230018, -0.295264, --0.266293, -0.185280, --0.168070, -0.296549, --0.525245, -0.692595, --0.636416, -0.321086, -0.127152, --0.504578, -0.666483, --0.613017, -0.467016, --0.370717, -0.383103, --0.449985, -0.459639, --0.335926, -0.100074, -0.139102, --0.254889, -0.183248, -0.035394, --0.273479, -0.377977, --0.242704, --0.141088, -0.674361, --1.182653, -1.479144, --1.434833, -1.028470, --0.356300, --0.400691, -1.037117, --1.387793, -1.376616, --1.037221, -0.499455, -0.059051, --0.483843, -0.707778, --0.771247, -0.779539, --0.817796, -0.878985, --0.858590, -0.627723, --0.140865, --0.494144, -1.038073, --1.234972, -0.961761, --0.324582, --0.368443, -0.762767, --0.662284, -0.156057, -0.427814, --0.725503, -0.569076, --0.087663, --0.392051, -0.572664, --0.378117, --0.017438, -0.327032, --0.342688, -0.048028, -0.407031, --0.824422, -1.071446, --1.117622, -0.995038, --0.738888, -0.367537, -0.085878, --0.532210, -0.832099, --0.865933, -0.623684, --0.239136, --0.073903, -0.150679, -0.019128, --0.286856, -0.443702, --0.350596, -0.010160, -0.455583, --0.886996, -1.162013, --1.223766, -1.068054, --0.724916, -0.255554, -0.242930, --0.648100, -0.848158, --0.788456, -0.498334, --0.078706, --0.343317, -0.663446, --0.825617, -0.819414, --0.667896, -0.424025, --0.172050, -0.011215, --0.010753, -0.158761, --0.351189, -0.445401, --0.351037, -0.092183, -0.208582, --0.414398, -0.462014, --0.389127, -0.288430, --0.233138, -0.235014, --0.260855, -0.283222, --0.316240, -0.405761, --0.582664, -0.819253, --1.026533, -1.101420, --0.996201, -0.761894, --0.527704, -0.419489, --0.465984, -0.561297, --0.521609, -0.208199, -0.365522, --1.021585, -1.513503, --1.666461, -1.466653, --1.046055, -0.585909, --0.213872, --0.037456, -0.198072, --0.294995, -0.310708, --0.195764, --0.078267, -0.468995, --0.857159, -1.094255, --1.077061, -0.803287, --0.374940, --0.052045, -0.341770, --0.435986, -0.368958, --0.238494, -0.152980, --0.180209, -0.318427, --0.498555, -0.615258, --0.575636, -0.345979, -0.025882, --0.428371, -0.739907, --0.890239, -0.890841, --0.812574, -0.725756, --0.647373, -0.537835, --0.351525, -0.100754, -0.123649, --0.203250, -0.085058, -0.154156, --0.333356, -0.281126, -0.036597, --0.472377, -0.781267, --0.782275, -0.482621, --0.072404, --0.208383, -0.234324, --0.072849, --0.075694, -0.028513, -0.247859, --0.614901, -0.858885, --0.834937, -0.558063, --0.184959, --0.089833, -0.144801, -0.020925, --0.315614, -0.616334, --0.814619, -0.833074, --0.634503, -0.242623, -0.238931, --0.643939, -0.811448, --0.672304, -0.293367, -0.157997, --0.508230, -0.664236, --0.635522, -0.489119, --0.287489, -0.063018, -0.161815, --0.346614, -0.439637, --0.420470, -0.337019, --0.292934, -0.384054, --0.629788, -0.954009, --1.231756, -1.367329, --1.345980, -1.224245, --1.071118, -0.909174, --0.702947, -0.404456, --0.018987, --0.364264, -0.609390, --0.619389, -0.410068, --0.114896, --0.088350, -0.081209, -0.131863, --0.438847, -0.694655, --0.797210, -0.717569, --0.481647, -0.137508, -0.258831, --0.637591, -0.914521, --1.015672, -0.918905, --0.678063, -0.400736, --0.184714, -0.054164, -0.055583, --0.246526, -0.571070, --0.971940, -1.295944, --1.376902, -1.133565, --0.618778, --0.006816, -0.554644, --0.893077, -0.996645, --0.943563, -0.866136, --0.873903, -0.983292, --1.094365, -1.040139, --0.691809, -0.059973, -0.677729, --1.250438, -1.432056, --1.162356, -0.579162, -0.055740, --0.492782, -0.615857, --0.484135, -0.276158, --0.172039, -0.243543, --0.416184, -0.525495, --0.431605, -0.118041, -0.291860, --0.614069, -0.726525, --0.649218, -0.522187, --0.493238, -0.596064, --0.713226, -0.661348, --0.344190, --0.141255, -0.538115, --0.597623, -0.270197, -0.225134, --0.522265, -0.352333, -0.256921, --0.975051, -1.373203, --1.203945, -0.563151, -0.178625, --0.624059, -0.599968, --0.239178, --0.149309, -0.310270, --0.198822, --0.036547, -0.202401, --0.203183, -0.070257, -0.116519, --0.314281, -0.521588, --0.711438, -0.785017, --0.621040, -0.193358, -0.354431, --0.765992, -0.835962, --0.553717, -0.108635, -0.250074, --0.387750, -0.359865, --0.341019, -0.474357, --0.759662, -1.055456, --1.180507, -1.034917, --0.660368, -0.208078, -0.156640, --0.350083, -0.407457, --0.441324, -0.549667, --0.736101, -0.897979, --0.894352, -0.649271, --0.220177, --0.217032, -0.458825, --0.385109, -0.026166, -0.449216, --0.813522, -0.886222, --0.615216, -0.098736, -0.461573, --0.854682, -0.957067, --0.784865, -0.476586, --0.217121, -0.143448, --0.278967, -0.526843, --0.725240, -0.737806, --0.534771, -0.217928, -0.032291, --0.064752, --0.143493, -0.465984, --0.706201, -0.728534, --0.548320, -0.311897, --0.178440, -0.193516, --0.255232, -0.203867, -0.033096, --0.357364, -0.551625, --0.436597, -0.018082, -0.490990, --0.800441, -0.738459, --0.372463, --0.038132, -0.229979, --0.129838, --0.092408, -0.158006, -0.096308, --0.576703, -0.987951, --1.049909, -0.710174, --0.187830, --0.185788, -0.206140, -0.068123, --0.379929, -0.480943, --0.316740, -0.050821, -0.081471, -0.031126, --0.281472, -0.419307, --0.235200, --0.282433, -0.926887, --1.398347, -1.486065, --1.188334, -0.699641, --0.281686, -0.104348, --0.154339, -0.262842, --0.228935, --0.042555, -0.475951, --0.872085, -1.034053, --0.889130, -0.529564, --0.151569, --0.063670, -0.051196, -0.112866, --0.269791, -0.278498, --0.095450, --0.210252, -0.509979, --0.698288, -0.749898, --0.715488, -0.664358, --0.620823, -0.544824, --0.372517, -0.084993, -0.250845, --0.504614, -0.556701, --0.375009, -0.044560, -0.266908, --0.385601, -0.211107, -0.234015, --0.802283, -1.270601, --1.430702, -1.188960, --0.625687, --0.028828, -0.501610, --0.613103, -0.362747, -0.085527, --0.502260, -0.709530, --0.647155, -0.364028, -0.038358, --0.460888, -0.828573, --1.082807, -1.170806, --1.054445, -0.737460, --0.289902, --0.154061, -0.433104, --0.419558, -0.078131, -0.505783, --1.148989, -1.643317, --1.847843, -1.749887, --1.455119, -1.111372, --0.818955, -0.591584, --0.391431, -0.200297, --0.059297, -0.038764, --0.163718, -0.362139, --0.488731, -0.416219, --0.129928, --0.246186, -0.516795, --0.533689, -0.286711, -0.092007, --0.408378, -0.513845, --0.372031, -0.056056, -0.303641, --0.579108, -0.686730, --0.609381, -0.402074, --0.173817, -0.037575, --0.045069, -0.148993, --0.229629, -0.176944, -0.029180, --0.302890, -0.515421, --0.589254, -0.551983, --0.510036, -0.564084, --0.729529, -0.919099, --0.999345, -0.880746, --0.580157, -0.213581, -0.073575, --0.190483, -0.143524, --0.016184, --0.090829, -0.113627, --0.043581, --0.086270, -0.225019, --0.323440, -0.350807, --0.311101, -0.248490, --0.226689, -0.285156, --0.401305, -0.492689, --0.465546, -0.279628, -0.015186, --0.296663, -0.433280, --0.357615, -0.109936, -0.174640, --0.333294, -0.263187, -0.022563, --0.406906, -0.740149, --0.919323, -0.921802, --0.782057, -0.547244, --0.257042, --0.042433, -0.281539, --0.381533, -0.299948, --0.069528, --0.206146, -0.401240, --0.426720, -0.263612, -0.037951, --0.378841, -0.636115, --0.695895, -0.499676, --0.090678, --0.374824, -0.679106, --0.646836, -0.247897, -0.365233, --0.917955, -1.148801, --0.949562, -0.428392, -0.150876, --0.528294, -0.609869, --0.518530, -0.486335, --0.657006, -0.947586, --1.087743, -0.823357, --0.137023, --0.687535, -1.220794, --1.162949, -0.548004, -0.268380, --0.831330, -0.869686, --0.451043, --0.087681, -0.377053, --0.253329, --0.158900, -0.559491, --0.684041, -0.461603, --0.024538, --0.406372, -0.657995, --0.671154, -0.483405, --0.177941, --0.150153, -0.404783, --0.503786, -0.412109, --0.170363, --0.116119, -0.332719, --0.419242, -0.395863, --0.336292, -0.313903, --0.359442, -0.450644, --0.529319, -0.531370, --0.419283, -0.207427, -0.033401, --0.204619, -0.234314, --0.126566, --0.031379, -0.115554, --0.039302, --0.191031, -0.471725, --0.648014, -0.584866, --0.230152, --0.353081, -0.998338, --1.493963, -1.671718, --1.486682, -1.040804, --0.527877, -0.128480, -0.079172, --0.136246, -0.146262, --0.195577, -0.310294, --0.467862, -0.633382, --0.779402, -0.878064, --0.889381, -0.772913, --0.520682, -0.181049, -0.154971, --0.400760, -0.519660, --0.533704, -0.490230, --0.416690, -0.302854, --0.125764, --0.104559, -0.320594, --0.420702, -0.328230, --0.044451, --0.343344, -0.703453, --0.920583, -0.936195, --0.751871, -0.409001, -0.028065, --0.472741, -0.813951, --0.934627, -0.759882, --0.312261, --0.269040, -0.774731, --1.023162, -0.952504, --0.645888, -0.271716, -0.017259, --0.155583, -0.165945, --0.106782, -0.020404, -0.080545, --0.195296, -0.319038, --0.446802, -0.581940, --0.726477, -0.856766, --0.914989, -0.839109, --0.614266, -0.298458, -0.008471, --0.233888, -0.384284, --0.535614, -0.766746, --1.084455, -1.394704, --1.542551, -1.399011, --0.944210, -0.296978, -0.332108, --0.743257, -0.848942, --0.712651, -0.499768, --0.372049, -0.394537, --0.512283, -0.604156, --0.569910, -0.393207, --0.148246, --0.044160, -0.081996, -0.063617, --0.329044, -0.586079, --0.709048, -0.647662, --0.457487, -0.260988, --0.161615, -0.176025, --0.240137, -0.282608, --0.297620, -0.346146, --0.480821, -0.665068, --0.769095, -0.659929, --0.315369, --0.134644, -0.478955, --0.557610, -0.358738, --0.015240, --0.285679, -0.410500, --0.337130, -0.141074, -0.064001, --0.188227, -0.199666, --0.123229, -0.013763, -0.080160, --0.143672, -0.200009, --0.289143, -0.433038, --0.610552, -0.759239, --0.803111, -0.687251, --0.397481, --0.040959, -0.573251, --1.118135, -1.565584, --1.790847, -1.703770, --1.318926, -0.792891, --0.375164, -0.273771, --0.513338, -0.892817, --1.093799, -0.880851, --0.258690, --0.524646, -1.130703, --1.332252, -1.130414, --0.722582, -0.361197, --0.206034, -0.258942, --0.401848, -0.491879, --0.443485, -0.254409, -0.018609, --0.298500, -0.511586, --0.596809, -0.518956, --0.292346, --0.004270, -0.247112, --0.322540, -0.185699, -0.117595, --0.479903, -0.788915, --0.973114, -1.011938, --0.916855, -0.708714, --0.412559, -0.070075, -0.249893, --0.462515, -0.501738, --0.356279, -0.080272, -0.230237, --0.478014, -0.597503, --0.567615, -0.411475, --0.191365, --0.003413, -0.085315, --0.009961, --0.193997, -0.433441, --0.601202, -0.639698, --0.575868, -0.504072, --0.526577, -0.687061, --0.934848, -1.139871, --1.151483, -0.873319, --0.318192, --0.383914, -1.029385, --1.416548, -1.420226, --1.036267, -0.382090, -0.342891, --0.923570, -1.203340, --1.142593, -0.835789, --0.470521, -0.237320, --0.232078, -0.406938, --0.604147, -0.656699, --0.493846, -0.183328, -0.117077, --0.264593, -0.222040, --0.074067, --0.037641, -0.010903, -0.156445, --0.380192, -0.560245, --0.651024, -0.681249, --0.714967, -0.790370, --0.885143, -0.931891, --0.869123, -0.689424, --0.451279, -0.246335, --0.142984, -0.144585, --0.194064, -0.226460, --0.231706, -0.273703, --0.439613, -0.751835, --1.116397, -1.363254, --1.360211, -1.113566, --0.767718, -0.494177, --0.354288, -0.249815, --0.010917, --0.442066, -0.992591, --1.372363, -1.335995, --0.841753, -0.103063, -0.532037, --0.790522, -0.627749, --0.225791, --0.146821, -0.304932, --0.231748, -0.043121, -0.116028, --0.158372, -0.077254, -0.077760, --0.230565, -0.293844, --0.187611, --0.118309, -0.553616, --0.940403, -1.066957, --0.815879, -0.259748, -0.357129, --0.754074, -0.778588, --0.484770, -0.073600, -0.253158, --0.413865, -0.460220, --0.491110, -0.550692, --0.595068, -0.545912, --0.375444, -0.147647, -0.015979, --0.013363, --0.179477, -0.503929, --0.857141, -1.135290, --1.256986, -1.172767, --0.879676, -0.442975, --0.001015, --0.274484, -0.260684, -0.036653, --0.466437, -0.806461, --0.892182, -0.717038, --0.432922, -0.248135, --0.292330, -0.538738, --0.827441, -0.962933, --0.819501, -0.400551, -0.163920, --0.669947, -0.923093, --0.827092, -0.439551, -0.044087, --0.385837, -0.432755, --0.197511, --0.161521, -0.446239, --0.536139, -0.441217, --0.265379, -0.118401, --0.040783, --0.012832, -0.128967, --0.363268, -0.687353, --0.989191, -1.130906, --1.033045, -0.733884, --0.381682, -0.157862, --0.175602, -0.416977, --0.747233, -0.992749, --1.029877, -0.832445, --0.461383, -0.019650, -0.391798, --0.696255, -0.845937, --0.822484, -0.640130, --0.347129, -0.019244, -0.255562, --0.397308, -0.356229, --0.134565, --0.200581, -0.527796, --0.714263, -0.678909, --0.441631, -0.122685, -0.116618, --0.162727, -0.016839, -0.200817, --0.314547, -0.192912, -0.167082, --0.618188, -0.922917, --0.874195, -0.417552, -0.295837, --0.966641, -1.294251, --1.134125, -0.575335, -0.107086, --0.595590, -0.687400, --0.382063, --0.137735, -0.609875, --0.820043, -0.689105, --0.285906, --0.227096, -0.675938, --0.938141, -0.962307, --0.753510, -0.354992, -0.152102, --0.638744, -0.938660, --0.900757, -0.468971, -0.260284, --1.051652, -1.624108, --1.779578, -1.496639, --0.937557, -0.365867, --0.019468, -0.004088, --0.258709, -0.606946, --0.863370, -0.934130, --0.853624, -0.737878, --0.689511, -0.721288, --0.750211, -0.662233, --0.398656, -0.003781, -0.395112, --0.658302, -0.709349, --0.572694, -0.354205, --0.177510, -0.113002, --0.141904, -0.178076, --0.132288, --0.027125, -0.258618, --0.479897, -0.612793, --0.604218, -0.423411, --0.067866, --0.403633, -0.842763, --1.044842, -0.860092, --0.317029, --0.348339, -0.808586, --0.841345, -0.465645, -0.084612, --0.528094, -0.715858, --0.693531, -0.616266, --0.599909, -0.630020, --0.590547, -0.376186, -0.006241, --0.424043, -0.698380, --0.716365, -0.498281, --0.179653, --0.073519, -0.158685, --0.083065, --0.059102, -0.156879, --0.153659, -0.077425, --0.016851, -0.062719, --0.251956, -0.545587, --0.848644, -1.056025, --1.097501, -0.959988, --0.681359, -0.326019, -0.040565, --0.363343, -0.595650, --0.696246, -0.640953, --0.448522, -0.197247, --0.003356, --0.042873, --0.055074, -0.187334, --0.207762, -0.046311, -0.224140, --0.430290, -0.427310, --0.212992, --0.069169, -0.244149, --0.241955, -0.141108, --0.083755, -0.137304, --0.223887, -0.181261, -0.091615, --0.522494, -0.882591, --0.929659, -0.578491, -0.024808, --0.583194, -0.831315, --0.694679, -0.314872, -0.070362, --0.297727, -0.372162, --0.422291, -0.565085, --0.793621, -0.974205, --0.949583, -0.666281, --0.232602, --0.132286, -0.224761, -0.019112, --0.475632, -0.893026, --1.028685, -0.787499, --0.278747, --0.244744, -0.528017, --0.449088, -0.070534, -0.408971, --0.759602, -0.820773, --0.558796, -0.073470, -0.443318, --0.787926, -0.837980, --0.609563, -0.235793, -0.125460, --0.389008, -0.570047, --0.725592, -0.869734, --0.945008, -0.877152, --0.659929, -0.387366, --0.197952, -0.173833, --0.276754, -0.372678, --0.327273, -0.103790, -0.203096, --0.417096, -0.380040, --0.040029, --0.520783, -1.128173, --1.596589, -1.802555, --1.718330, -1.403732, --0.972923, -0.554823, --0.254443, -0.119587, --0.122541, -0.172299, --0.162062, -0.032229, -0.189992, --0.405746, -0.510978, --0.469612, -0.338522, --0.221559, -0.185540, --0.205582, -0.188133, --0.057889, --0.161825, -0.346485, --0.357892, -0.158997, -0.136055, --0.326007, -0.264464, -0.021243, --0.327005, -0.398712, --0.106879, --0.454051, -1.016182, --1.306998, -1.218919, --0.861230, -0.462849, --0.203489, -0.099407, --0.024008, --0.161062, -0.472231, --0.774195, -0.878487, --0.694303, -0.312907, -0.042947, --0.170913, -0.030041, -0.233755, --0.395642, -0.312106, --0.017151, --0.309739, -0.471361, --0.378827, -0.091377, -0.241780, --0.478785, -0.549649, --0.458876, -0.250842, -0.020407, --0.299063, -0.526616, --0.650183, -0.639832, --0.500290, -0.268718, --0.006441, --0.206243, -0.279298, --0.141860, --0.210395, -0.681758, --1.098297, -1.291756, --1.198631, -0.902203, --0.580181, -0.390489, --0.378055, -0.468861, --0.548564, -0.557291, --0.524485, -0.523138, --0.591200, -0.691534, --0.743108, -0.691332, --0.553235, -0.397922, --0.281785, -0.197061, --0.081008, --0.119636, -0.383267, --0.605619, -0.663926, --0.508492, -0.210165, -0.077557, --0.218305, -0.180971, --0.050463, --0.045219, -0.033848, -0.051171, --0.103668, -0.030440, -0.174841, --0.420181, -0.570739, --0.533477, -0.319014, --0.043636, --0.133021, -0.102999, -0.117117, --0.384451, -0.509666, --0.374797, -0.014058, -0.399860, --0.660111, -0.653626, --0.427387, -0.149322, -0.008095, -0.018677, --0.149358, -0.225024, --0.128123, --0.122301, -0.364028, --0.382707, -0.050552, -0.569919, --1.225497, -1.589892, --1.443867, -0.816398, -0.004849, --0.615577, -0.717420, --0.288924, --0.404560, -0.974452, --1.144661, -0.907597, --0.500275, -0.222426, --0.225126, -0.415901, --0.540898, -0.380406, -0.082131, --0.634721, -0.972002, --0.899178, -0.468524, -0.043868, --0.309733, -0.159310, -0.306827, --0.781798, -0.952862, --0.704508, -0.187072, -0.293013, --0.479912, -0.326180, -0.001376, --0.256280, -0.279384, --0.081684, --0.197160, -0.401383, --0.451213, -0.360261, --0.191787, -0.007325, -0.154586, --0.274152, -0.347994, --0.398200, -0.472076, --0.609750, -0.792721, --0.921477, -0.862682, --0.547664, -0.049591, -0.431092, --0.676468, -0.582884, --0.221695, --0.210417, -0.510289, --0.572506, -0.418887, --0.153674, --0.109267, -0.297955, --0.393470, -0.411710, --0.377378, -0.304428, --0.187905, -0.008803, -0.247330, --0.563732, -0.873215, --1.066507, -1.036816, --0.744110, -0.259945, -0.245475, --0.581337, -0.641334, --0.469990, -0.241825, --0.158539, -0.327369, --0.698726, -1.102845, --1.358399, -1.378813, --1.207433, -0.964289, --0.749245, -0.574780, --0.377587, -0.097631, -0.242712, --0.531838, -0.651232, --0.586219, -0.467686, --0.492564, -0.769405, --1.207456, -1.548798, --1.536846, -1.104150, --0.436749, --0.141362, -0.386170, --0.297073, -0.105355, --0.096076, -0.395329, --0.881289, -1.284105, --1.395202, -1.222070, --0.967848, -0.854348, --0.933519, -1.042270, --0.938708, -0.511004, -0.108814, --0.616590, -0.738337, --0.413367, --0.168801, -0.691835, --0.902107, -0.739922, --0.341660, --0.068537, -0.316579, --0.359060, -0.267572, --0.145267, -0.046820, -0.038627, --0.139325, -0.241719, --0.281692, -0.198056, -0.000270, --0.217924, -0.328597, --0.261181, -0.050262, -0.185775, --0.320323, -0.294185, --0.144409, --0.026160, -0.115796, --0.086744, --0.013131, -0.084818, --0.049252, --0.091285, -0.248226, --0.308562, -0.223186, --0.055498, --0.051087, --0.029486, -0.309900, --0.661086, -0.873203, --0.770487, -0.314147, -0.361459, --0.997462, -1.320178, --1.163021, -0.546701, -0.319640, --1.120531, -1.564979, --1.504857, -0.983742, --0.195992, --0.612650, -1.242382, --1.585210, -1.615515, --1.360289, -0.885628, --0.301826, --0.243249, -0.610030, --0.738635, -0.692729, --0.627475, -0.686685, --0.896275, -1.134849, --1.210264, -0.990717, --0.496406, --0.110806, -0.623410, --0.894328, -0.884526, --0.642684, -0.259118, -0.162057, --0.508617, -0.672763, --0.590866, -0.291821, -0.091427, --0.376323, -0.429730, --0.249400, --0.031275, -0.224937, --0.207544, --0.005572, -0.273479, --0.420425, -0.341380, --0.057923, --0.300434, -0.567505, --0.620250, -0.431184, --0.076851, --0.297746, -0.544830, --0.581489, -0.422934, --0.159416, --0.108446, -0.328162, --0.502772, -0.645874, --0.731094, -0.691654, --0.480386, -0.139913, -0.187821, --0.337943, -0.234891, -0.049507, --0.345350, -0.506867, --0.509398, -0.441670, --0.402876, -0.397598, --0.325625, -0.081264, -0.322093, --0.715459, -0.871000, --0.667551, -0.197497, -0.274068, --0.477826, -0.318380, -0.066326, --0.407475, -0.494424, --0.312493, -0.031953, -0.134405, --0.089424, --0.096770, -0.271942, --0.342575, -0.348444, --0.413454, -0.625010, --0.951786, -1.268622, --1.457473, -1.488184, --1.409604, -1.270812, --1.058728, -0.719750, --0.247997, --0.247302, -0.572164, --0.567225, -0.225188, -0.290671, --0.745573, -0.974279, --0.958820, -0.795487, --0.594750, -0.404584, --0.212204, -0.001885, -0.201113, --0.347725, -0.424049, --0.487697, -0.635969, --0.924619, -1.303586, --1.625086, -1.720479, --1.490869, -0.955395, --0.241827, --0.459108, -0.951082, --1.094318, -0.867600, --0.401073, --0.062730, -0.288882, --0.190369, --0.113208, -0.377107, --0.405335, -0.188251, -0.103954, --0.264672, -0.214032, --0.052039, --0.034008, --0.074528, -0.334105, --0.574658, -0.627141, --0.442442, -0.120501, -0.157889, --0.239963, -0.080050, -0.248788, --0.602737, -0.840248, --0.883867, -0.747335, --0.520891, -0.323449, --0.243893, -0.300449, --0.438510, -0.566891, --0.609625, -0.542287, --0.394149, -0.219859, --0.062824, --0.065298, -0.178474, --0.291090, -0.393279, --0.445312, -0.397726, --0.226245, --0.040860, -0.323771, --0.525081, -0.578446, --0.481393, -0.290717, --0.084988, --0.077775, -0.178516, --0.225446, -0.230479, --0.196537, -0.121651, --0.008090, --0.134731, -0.291881, --0.440922, -0.548186, --0.575779, -0.505154, --0.360026, -0.201101, --0.087198, -0.031789, -0.003659, --0.070564, -0.183447, --0.306845, -0.389908, --0.410721, -0.383729, --0.323208, -0.207852, -0.003795, --0.306365, -0.589492, --0.660540, -0.361844, -0.290027, --1.054436, -1.568439, --1.553140, -0.991325, --0.152345, --0.557044, -0.817060, --0.551846, --0.065191, -0.732820, --1.175694, -1.245252, --0.942576, -0.387807, -0.232434, --0.725270, -0.953425, --0.882675, -0.590651, --0.225997, --0.065008, -0.205528, --0.213888, -0.177285, --0.191989, -0.305432, --0.492433, -0.675562, --0.772311, -0.736921, --0.573809, -0.323503, --0.039305, --0.228064, -0.436022, --0.552773, -0.559997, --0.453136, -0.240719, -0.050608, --0.363239, -0.604627, --0.676495, -0.537399, --0.257948, -0.009435, -0.034687, -0.169698, --0.475468, -0.621523, --0.415972, --0.102086, -0.653030, --0.886606, -0.621967, -0.012213, --0.641343, -0.870747, --0.519254, --0.289605, -1.219819, --1.916665, -2.171739, --1.977335, -1.476143, --0.868491, -0.335485, -0.002043, --0.098177, --0.018347, -0.260311, --0.517219, -0.700699, --0.778713, -0.778278, --0.754163, -0.741925, --0.724540, -0.637382, --0.415003, -0.055462, -0.344095, --0.618277, -0.627973, --0.361784, --0.032232, -0.321667, --0.331741, -0.057391, -0.335735, --0.624319, -0.674343, --0.518569, -0.313024, --0.209018, -0.237839, --0.295108, -0.236805, --0.011957, --0.276544, -0.439378, --0.349153, -0.050303, -0.264052, --0.394596, -0.284245, --0.054063, --0.097097, -0.043419, -0.183815, --0.431190, -0.534496, --0.419575, -0.133826, -0.191325, --0.409785, -0.425122, --0.229560, --0.092228, -0.397741, --0.550403, -0.483247, --0.227354, --0.110567, -0.404316, --0.560796, -0.543003, --0.365689, -0.083587, -0.216353, --0.428290, -0.461704, --0.291305, --0.010791, -0.296637, --0.419125, -0.318058, --0.055394, --0.227252, -0.397663, --0.404435, -0.287552, --0.135097, -0.027602, --0.005565, -0.065935, --0.174999, -0.288243, --0.374523, -0.433995, --0.491709, -0.560707, --0.603044, -0.534389, --0.288092, --0.104696, -0.493980, --0.687132, -0.579466, --0.242191, --0.105858, -0.231040, --0.032873, --0.394543, -0.827471, --1.056841, -1.012388, --0.784966, -0.539453, --0.388966, -0.325566, --0.255809, -0.104335, -0.104633, --0.257928, -0.248013, --0.072859, --0.143146, -0.229166, --0.091175, --0.212826, -0.503175, --0.595626, -0.425131, --0.091841, --0.200495, -0.270039, --0.061334, --0.335520, -0.751776, --1.036077, -1.114284, --0.989265, -0.707733, --0.337303, --0.031794, -0.285961, --0.321488, -0.109323, -0.256635, --0.582846, -0.678903, --0.479671, -0.097068, -0.247361, --0.371286, -0.257927, --0.065909, -0.011288, --0.206497, -0.574304, --0.900316, -0.984032, --0.776651, -0.407072, --0.083149, --0.053455, -0.014283, -0.061568, --0.015622, --0.220931, -0.588103, --0.941700, -1.141362, --1.123595, -0.923182, --0.642816, -0.397162, --0.262781, -0.254484, --0.332367, -0.431065, --0.494066, -0.495849, --0.440880, -0.343064, --0.202175, --0.002288, -0.291103, --0.651358, -1.015103, --1.273346, -1.324234, --1.128951, -0.740113, --0.284602, --0.088353, -0.263841, --0.196952, --0.078952, -0.464920, --0.825664, -1.036509, --1.039388, -0.878338, --0.678671, -0.565905, --0.574947, -0.624107, --0.587844, -0.418199, --0.210515, -0.143633, --0.328269, -0.685487, --0.967314, -0.922911, --0.492144, --0.125710, -0.592553, --0.661944, -0.350223, -0.082077, --0.328069, -0.263227, --0.029854, --0.088703, --0.094291, -0.508477, --0.872759, -0.913225, --0.579084, -0.084790, -0.252122, --0.245379, --0.036303, -0.340966, --0.428326, -0.230684, -0.129903, --0.453195, -0.596058, --0.534192, -0.332933, --0.080596, --0.154367, -0.326370, --0.402730, -0.370305, --0.256598, -0.135218, --0.091629, -0.161865, --0.290085, -0.349102, --0.224076, --0.093956, -0.477274, --0.727938, -0.704171, --0.417978, -0.030159, -0.257049, --0.332209, -0.236269, --0.112665, -0.089925, --0.187689, -0.312049, --0.334391, -0.187558, -0.091156, --0.393088, -0.612579, --0.705328, -0.695531, --0.640017, -0.584297, --0.540708, -0.495411, --0.430770, -0.345988, --0.265543, -0.233056, --0.291579, -0.457174, --0.698798, -0.940254, --1.089764, -1.083442, --0.915600, -0.635808, --0.317563, -0.025212, -0.195534, --0.304532, -0.257896, --0.026881, --0.362544, -0.808464, --1.165345, -1.322663, --1.275995, -1.131800, --1.032160, -1.048827, --1.123407, -1.099093, --0.825491, -0.267944, -0.447801, --1.082441, -1.395181, --1.262178, -0.742786, --0.060752, --0.494224, -0.700404, --0.506513, -0.046237, -0.445902, --0.767793, -0.849210, --0.757322, -0.613288, --0.487679, -0.353552, --0.129280, --0.227304, -0.652624, --0.998460, -1.132358, --1.042815, -0.861484, --0.772141, -0.866992, --1.061005, -1.138944, --0.907809, -0.342286, -0.384460, --1.002445, -1.297595, --1.208726, -0.821170, --0.292070, --0.222726, -0.600895, --0.759003, -0.665014, --0.366583, -0.004992, -0.223216, --0.160634, --0.207864, -0.716052, --1.085886, -1.080465, --0.649969, --0.029554, -0.661092, --1.011446, -1.049951, --0.942910, -0.909964, --1.050910, -1.271539, --1.358134, -1.137299, --0.599193, --0.098737, -0.735356, --1.149960, -1.302206, --1.246253, -1.063139, --0.812494, -0.530714, --0.255599, -0.039408, -0.068227, --0.053090, --0.046114, -0.155132, --0.207668, -0.185696, --0.126551, -0.089044, --0.100403, -0.124801, --0.084529, --0.072880, -0.309489, --0.492412, -0.469135, --0.178505, --0.285817, -0.716654, --0.920551, -0.843798, --0.606004, -0.415975, --0.428875, -0.643802, --0.908536, -1.022930, --0.870276, -0.494349, --0.079889, --0.147733, -0.046430, -0.360538, --0.886111, -1.266601, --1.295285, -0.935670, --0.349910, --0.185137, -0.437977, --0.366854, -0.150318, --0.069002, -0.306470, --0.805767, -1.290856, --1.446141, -1.126653, --0.446525, --0.311003, -0.880141, --1.148574, -1.155364, --0.986887, -0.683997, --0.240992, --0.322007, -0.901967, --1.339235, -1.511446, --1.412539, -1.145624, --0.834421, -0.530756, --0.200097, --0.201301, -0.628608, --0.926401, -0.919111, --0.552230, --0.030373, -0.546084, --0.736742, -0.519624, --0.020471, --0.524762, -0.916116, --1.077353, -1.041307, --0.875167, -0.624510, --0.317885, -0.006383, -0.221230, --0.277987, -0.143806, -0.106139, --0.345105, -0.482931, --0.528428, -0.572614, --0.703939, -0.924267, --1.134810, -1.204348, --1.064170, -0.752837, --0.377190, -0.027762, -0.274892, --0.556263, -0.812750, --0.964700, -0.898134, --0.574953, -0.116772, -0.228811, --0.240760, --0.109124, -0.611455, --0.947592, -0.906989, --0.533558, -0.090180, -0.131283, --0.010638, --0.334257, -0.651823, --0.740509, -0.572694, --0.279935, -0.030178, -0.099701, --0.164826, -0.288834, --0.553345, -0.922047, --1.248018, -1.353580, --1.129240, -0.594383, -0.108674, --0.776892, -1.230147, --1.378881, -1.250122, --0.964492, -0.675222, --0.496725, -0.457487, --0.502090, -0.539665, --0.507559, -0.408932, --0.301698, -0.250262, --0.274494, -0.329568, --0.328477, -0.194825, -0.082335, --0.421251, -0.668868, --0.671285, -0.364827, -0.163348, --0.693481, -0.978163, --0.882398, -0.469695, -0.032074, --0.373596, -0.442597, --0.325589, -0.226815, --0.305105, -0.552463, --0.804065, -0.866315, --0.660496, -0.276331, -0.092959, --0.274081, -0.205247, -0.053842, --0.378153, -0.648657, --0.796849, -0.812446, --0.725869, -0.580914, --0.410503, -0.226737, --0.033621, --0.144114, -0.242101, --0.176097, --0.098527, -0.528020, --0.957619, -1.205972, --1.173771, -0.906739, --0.560829, -0.294629, --0.172736, -0.153330, --0.158711, -0.155860, --0.169532, -0.218383, --0.243526, -0.114817, -0.267443, --0.851094, -1.403276, --1.625405, -1.348758, --0.672248, --0.067663, -0.489450, --0.398620, --0.094884, -0.651498, --0.917347, -0.737365, --0.231262, --0.305286, -0.596872, --0.548308, -0.271760, -0.019057, --0.159930, -0.125879, --0.009196, --0.078666, -0.095131, --0.076607, -0.074269, --0.083080, -0.035462, -0.129732, --0.383214, -0.586500, --0.567103, -0.238637, -0.323461, --0.908337, -1.283202, --1.320893, -1.063396, --0.687961, -0.400965, --0.323193, -0.430815, --0.582410, -0.613291, --0.439372, -0.107909, -0.234723, --0.434949, -0.423745, --0.249918, -0.038696, -0.091739, --0.098347, -0.025751, -0.035612, --0.010708, --0.118571, -0.307534, --0.469439, -0.504802, --0.330227, --0.091630, -0.721506, --1.426262, -1.998989, --2.229942, -2.009140, --1.405980, -0.663995, --0.088382, --0.123303, -0.002729, -0.208134, --0.219714, --0.101210, -0.632089, --1.078164, -1.184796, --0.924127, -0.515469, --0.260762, -0.314663, --0.560161, -0.685478, --0.412628, --0.283219, -1.121688, --1.676481, -1.642226, --1.029293, -0.155681, -0.554051, --0.822052, -0.655179, --0.292327, -0.021850, --0.006914, -0.223916, --0.521758, -0.729458, --0.736331, -0.518920, --0.135007, --0.293882, -0.615568, --0.708293, -0.552999, --0.265365, -0.043834, --0.047949, -0.285286, --0.593897, -0.743290, --0.589334, -0.176118, -0.284250, --0.537244, -0.432698, --0.003414, --0.560838, -1.016504, --1.184087, -1.024646, --0.647796, -0.254108, --0.036842, -0.083572, --0.325977, -0.572339, --0.615881, -0.360720, -0.115725, --0.609175, -0.914280, --0.941688, -0.747800, --0.468798, -0.222383, --0.053039, --0.054626, -0.129985, --0.188393, -0.235630, --0.279882, -0.324996, --0.352092, -0.319876, --0.196874, -0.000523, -0.198250, --0.317855, -0.322642, --0.243156, -0.141351, --0.051430, --0.050986, -0.225153, --0.506668, -0.861412, --1.186912, -1.358900, --1.291789, -0.978223, --0.491688, --0.041870, -0.487542, --0.745955, -0.788242, --0.669562, -0.507645, --0.424532, -0.474443, --0.602663, -0.673082, --0.559714, -0.246095, -0.141969, --0.406604, -0.413975, --0.201701, --0.029188, -0.048523, -0.227810, --0.651265, -0.920670, --0.787705, -0.243846, -0.453365, --0.943357, -1.000186, --0.672280, -0.227686, -0.042676, --0.010154, --0.247401, -0.550621, --0.768198, -0.890087, --0.983230, -1.091111, --1.173899, -1.137704, --0.918646, -0.544809, --0.127233, --0.206139, -0.377393, --0.382558, -0.271286, --0.112291, --0.029387, -0.101568, --0.074839, --0.039904, -0.178227, --0.234465, -0.109277, -0.224970, --0.681967, -1.081117, --1.234594, -1.055971, --0.616999, -0.103982, -0.304598, --0.551613, -0.716940, --0.918643, -1.178752, --1.368926, -1.291759, --0.841342, -0.114822, -0.620489, --1.085797, -1.155632, --0.907100, -0.529301, --0.181291, --0.084008, -0.285105, --0.427265, -0.466366, --0.360529, -0.151854, -0.018157, -0.002641, --0.247484, -0.572012, --0.729559, -0.536335, --0.009917, --0.618829, -1.031841, --1.008996, -0.560319, -0.070335, --0.532640, -0.559204, --0.114048, --0.585591, -1.191529, --1.422435, -1.216252, --0.741192, -0.263225, -0.032651, --0.140056, -0.186302, --0.294414, -0.469451, --0.599119, -0.559628, --0.332468, -0.033522, -0.167475, --0.168541, -0.000998, -0.207059, --0.330579, -0.327157, --0.240157, -0.138876, --0.058682, --0.007478, -0.070995, --0.112566, -0.092822, -0.000163, --0.117875, -0.176230, --0.126445, -0.011334, -0.048822, -0.060672, --0.357668, -0.733598, --1.007875, -1.028113, --0.751537, -0.264120, -0.264351, --0.659643, -0.819042, --0.751448, -0.562268, --0.385545, -0.296783, --0.261529, -0.162529, -0.102660, --0.519651, -0.933507, --1.136608, -1.014853, --0.642541, -0.243688, --0.037466, -0.082220, --0.241625, -0.303665, --0.158006, --0.112238, -0.298461, --0.235963, --0.065555, -0.432663, --0.663032, -0.669228, --0.521549, -0.371957, --0.335344, -0.423435, --0.567109, -0.686447, --0.740125, -0.720555, --0.616593, -0.392283, --0.008911, --0.524542, -1.114883, --1.597376, -1.801324, --1.639541, -1.173521, --0.610996, -0.219570, --0.185894, -0.494192, --0.908062, -1.092333, --0.821325, -0.146794, -0.598264, --0.985602, -0.761960, --0.026495, --0.812538, -1.285527, --1.155787, -0.564027, -0.077831, --0.373298, -0.211976, -0.166535, --0.363265, -0.128904, -0.435318, --0.938123, -0.981179, --0.457275, --0.358899, -0.996505, --1.113849, -0.725142, --0.168950, --0.146643, -0.027700, -0.395034, --0.790653, -0.875560, --0.596094, -0.126987, -0.285561, --0.498573, -0.534973, --0.509660, -0.503956, --0.501443, -0.431015, --0.264702, -0.072615, -0.019252, -0.066068, --0.279847, -0.466762, --0.466667, -0.219899, -0.199651, --0.637430, -0.946347, --1.047688, -0.939786, --0.674686, -0.334426, --0.017541, --0.176795, -0.179243, -0.013408, --0.321348, -0.604794, --0.723041, -0.601608, --0.271008, --0.145545, -0.490552, --0.647408, -0.593176, --0.403096, -0.204976, --0.107120, -0.136398, --0.221085, -0.233663, --0.076698, --0.238095, -0.575192, --0.750250, -0.655411, --0.347889, -0.027590, -0.093959, -0.055283, --0.349910, -0.551548, --0.479915, -0.148414, -0.234722, --0.402936, -0.212261, -0.257863, --0.753343, -1.011607, --0.931423, -0.629019, --0.342068, -0.252985, --0.363418, -0.513827, --0.530708, -0.383428, --0.223723, -0.271568, --0.632089, -1.183520, --1.626874, -1.669518, --1.218210, -0.449893, -0.286217, --0.667714, -0.569332, --0.103837, --0.473772, -0.920530, --1.119118, -1.098869, --0.978989, -0.885801, --0.888913, -0.974709, --1.057175, -1.019729, --0.776421, -0.328930, -0.211366, --0.657667, -0.831089, --0.654693, -0.205826, -0.309829, --0.658150, -0.698735, --0.456396, -0.094537, -0.192904, --0.297076, -0.237991, --0.114737, -0.013538, -0.047695, --0.100598, -0.166439, --0.221055, -0.219199, --0.148792, -0.054470, --0.000427, -0.005696, --0.017055, --0.047317, -0.217935, --0.430964, -0.565848, --0.535143, -0.350139, --0.106333, --0.096331, -0.226760, --0.327670, -0.453931, --0.604669, -0.711059, --0.689117, -0.510334, --0.231878, --0.034763, -0.189549, --0.196750, -0.093421, -0.045738, --0.161609, -0.248131, --0.347853, -0.502772, --0.691651, -0.808014, --0.714627, -0.351877, -0.181925, --0.658058, -0.856023, --0.718865, -0.401624, --0.163378, -0.177502, --0.403699, -0.619532, --0.585382, -0.217405, -0.354235, --0.870532, -1.097772, --0.943974, -0.479259, -0.122210, --0.663464, -0.988845, --1.024918, -0.802408, --0.450092, -0.143980, --0.021055, -0.104857, --0.299036, -0.460974, --0.503038, -0.443604, --0.371122, -0.358354, --0.403398, -0.445458, --0.433861, -0.383664, --0.366836, -0.446719, --0.610975, -0.758297, --0.753224, -0.514259, --0.077766, --0.406923, -0.755051, --0.853371, -0.728424, --0.525928, -0.409701, --0.448850, -0.576026, --0.648374, -0.562200, --0.330301, -0.063264, -0.121787, --0.183250, -0.161666, --0.117964, -0.071951, --0.003268, --0.090939, -0.148502, --0.067373, --0.203274, -0.582902, --0.871686, -0.866565, --0.505741, --0.065206, -0.563148, --0.734882, -0.514915, --0.068428, --0.311516, -0.388585, --0.129533, --0.285054, -0.593885, --0.639600, -0.473430, --0.303486, -0.324606, --0.557398, -0.817924, --0.842203, -0.476371, -0.200163, --0.900000, -1.282147, --1.139415, -0.512477, -0.329449, --1.028613, -1.324595, --1.182772, -0.790060, --0.419015, -0.249424, --0.270056, -0.326624, --0.272237, -0.097175, -0.063976, --0.047451, --0.200077, -0.568259, --0.851478, -0.880821, --0.624456, -0.196510, -0.216800, --0.459225, -0.476443, --0.328132, -0.143623, --0.050014, -0.109799, --0.296546, -0.515949, --0.656538, -0.643436, --0.471689, -0.207762, -0.040075, --0.169791, -0.131449, -0.050519, --0.289287, -0.472482, --0.504468, -0.338414, -0.005409, --0.435241, -0.805263, --0.964372, -0.827578, --0.433044, --0.060214, -0.447696, --0.589301, -0.484144, --0.260291, -0.087105, --0.070316, -0.197711, --0.364186, -0.450662, --0.399320, -0.239519, --0.057116, --0.062800, -0.080513, --0.012553, --0.084611, -0.140083, --0.091556, --0.092993, -0.393827, --0.728650, -0.970882, --1.003411, -0.785887, --0.394528, -0.000853, -0.207817, --0.125550, --0.213018, -0.646809, --0.969731, -1.035895, --0.832442, -0.481945, --0.172958, -0.054202, --0.147830, -0.331544, --0.406986, -0.224945, -0.202408, --0.678522, -0.919490, --0.725553, -0.120935, -0.636440, --1.192810, -1.300832, --0.955351, -0.377113, -0.135593, --0.381861, -0.345547, --0.153617, --0.044475, -0.179483, --0.277918, -0.394620, --0.528956, -0.599608, --0.503511, -0.216561, -0.144026, --0.355966, -0.220973, -0.290089, --0.977716, -1.499030, --1.564019, -1.124921, --0.427453, --0.127495, -0.234168, -0.120402, --0.650648, -0.967278, --0.838203, -0.334200, -0.235846, --0.541188, -0.436594, --0.024432, --0.444936, -0.737127, --0.743916, -0.492689, --0.093862, --0.309823, -0.569860, --0.560990, -0.235903, -0.319709, --0.891390, -1.228585, --1.182558, -0.796673, --0.283913, --0.094235, -0.166888, -0.070107, --0.470086, -0.815972, --0.917150, -0.684509, --0.163239, --0.484433, -1.042994, --1.330976, -1.272025, --0.914208, -0.389968, -0.153343, --0.606478, -0.906855, --1.013643, -0.888487, --0.512360, --0.069853, -0.721250, --1.242528, -1.457586, --1.304343, -0.867921, --0.332641, --0.114795, -0.367876, --0.424326, -0.352780, --0.238240, -0.143126, --0.096325, -0.099380, --0.133879, -0.165046, --0.148021, -0.045035, -0.147653, --0.376234, -0.529781, --0.479164, -0.148778, -0.413927, --1.021922, -1.417356, --1.402957, -0.958453, --0.259390, --0.423048, -0.874216, --1.033633, -0.977495, --0.820460, -0.630962, --0.426702, -0.230348, --0.106425, -0.123211, --0.268116, -0.405529, --0.343156, --0.021454, -0.584142, --1.054132, -1.122659, --0.677207, --0.089132, -0.761951, --0.943008, -0.493610, -0.373551, --1.215587, -1.618231, --1.429460, -0.826943, --0.190235, --0.127669, --0.015902, -0.510021, --1.082590, -1.449050, --1.434002, -1.026566, --0.371459, --0.290533, -0.719974, --0.786447, -0.534794, --0.160196, --0.106436, -0.133889, -0.045893, --0.288322, -0.454015, --0.497935, -0.466211, --0.422642, -0.385190, --0.331848, -0.258960, --0.218287, -0.282075, --0.463511, -0.677002, --0.792808, -0.748181, --0.611649, -0.528225, --0.582071, -0.697501, --0.676367, -0.352968, -0.258085, --0.944758, -1.426563, --1.526888, -1.259996, --0.785479, -0.292843, -0.083858, --0.275168, -0.246975, -0.002633, --0.407117, -0.808843, --1.010298, -0.890773, --0.502844, -0.057057, -0.213881, --0.216396, -0.057282, -0.047049, -0.056106, --0.335389, -0.601029, --0.652031, -0.426478, --0.040212, --0.306923, -0.475665, --0.470863, -0.412053, --0.430415, -0.577668, --0.805668, -1.010597, --1.093558, -0.998251, --0.721297, -0.311680, -0.135008, --0.499848, -0.688748, --0.683970, -0.556161, --0.413507, -0.315763, --0.220563, -0.015215, -0.377736, --0.897506, -1.331623, --1.422053, -1.034440, --0.280938, --0.495393, -0.884833, --0.639251, --0.171074, -1.175932, --1.901354, -2.032957, --1.585442, -0.873251, --0.305495, -0.143323, --0.374770, -0.772108, --1.067783, -1.115971, --0.939304, -0.657709, --0.377661, -0.129107, -0.117295, --0.385735, -0.644419, --0.808074, -0.789276, --0.561258, -0.190030, -0.185156, --0.413919, -0.406369, --0.176463, --0.166510, -0.473340, --0.626450, -0.589045, --0.407800, -0.174648, -0.024650, --0.143809, -0.177727, --0.141824, -0.051878, -0.077033, --0.213732, -0.297605, --0.255452, -0.053459, -0.247968, --0.490183, -0.493595, --0.182585, --0.331094, -0.785857, --0.924410, -0.663411, --0.153225, --0.321369, -0.527412, --0.420031, -0.136542, -0.130846, --0.274815, -0.320570, --0.361710, -0.453097, --0.554409, -0.567425, --0.428973, -0.179086, -0.054156, --0.143048, -0.053799, -0.126687, --0.252288, -0.223070, --0.058499, --0.113934, -0.147959, -0.015120, --0.296033, -0.519549, --0.524223, -0.269437, -0.130010, --0.464908, -0.550013, --0.327288, --0.104395, -0.544889, --0.796581, -0.758246, --0.461645, -0.037183, -0.365787, --0.652952, -0.807156, --0.850948, -0.789371, --0.591098, -0.231354, -0.240917, --0.681836, -0.914861, --0.839890, -0.505172, --0.082564, --0.235882, -0.342727, --0.250882, -0.052597, -0.150818, --0.294883, -0.357570, --0.344971, -0.280876, --0.201950, -0.145338, --0.123832, -0.106635, --0.031482, --0.147281, -0.405120, --0.635934, -0.706091, --0.545080, -0.206593, -0.153445, --0.374925, -0.398980, --0.302383, -0.234263, --0.303176, -0.498767, --0.703584, -0.781056, --0.670772, -0.422279, --0.149257, --0.053625, -0.165766, --0.229839, -0.292719, --0.352727, -0.358324, --0.258271, -0.059364, -0.158659, --0.286940, -0.259069, --0.095796, --0.111272, -0.265034, --0.325744, -0.323336, --0.313569, -0.321146, --0.322651, -0.281890, --0.197575, -0.110114, --0.056711, -0.022431, -0.052982, --0.204567, -0.370279, --0.398599, -0.156550, -0.333431, --0.843944, -1.046034, --0.717989, --0.080168, -1.001590, --1.601829, -1.607727, --1.085087, -0.386063, -0.090017, --0.156865, --0.057294, -0.230942, --0.098285, --0.354709, -0.882940, --1.160666, -1.013643, --0.540326, -0.039729, -0.199317, --0.096242, --0.176697, -0.332659, --0.187507, --0.204962, -0.597557, --0.735460, -0.540863, --0.162390, --0.136730, -0.159885, -0.101628, --0.477146, -0.729473, --0.688721, -0.332900, -0.212217, --0.738307, -1.049954, --1.051372, -0.786507, --0.409060, -0.091110, -0.078567, --0.138109, -0.200631, --0.339365, -0.499303, --0.516709, -0.248117, -0.285642, --0.863558, -1.185511, --1.072140, -0.590121, --0.000549, --0.430618, -0.608039, --0.632071, -0.669351, --0.793797, -0.934729, --0.959931, -0.799660, --0.495470, -0.144573, -0.188014, --0.497774, -0.789741, --1.013207, -1.060642, --0.845908, -0.398536, -0.111654, --0.454763, -0.480392, --0.220967, --0.119599, -0.295385, --0.185254, --0.118980, -0.372973, --0.355185, -0.034638, -0.394835, --0.646046, -0.543867, --0.153527, --0.264019, -0.435977, --0.264376, --0.118415, -0.456876, --0.554016, -0.394394, --0.131874, --0.030077, --0.029945, -0.292349, --0.628640, -0.883375, --0.949846, -0.807329, --0.517186, -0.189211, -0.067120, --0.188122, -0.176165, --0.082646, --0.034323, -0.145095, --0.249969, -0.351257, --0.428076, -0.443014, --0.376859, -0.257399, --0.149838, -0.111335, --0.145260, -0.193119, --0.171287, -0.025657, -0.232478, --0.527492, -0.751141, --0.806369, -0.647480, --0.304896, --0.116750, -0.474073, --0.645954, -0.590970, --0.365534, -0.088105, -0.128589, --0.232097, -0.238333, --0.197634, -0.154660, --0.134513, -0.155004, --0.236399, -0.384576, --0.557622, -0.655393, --0.562552, -0.229735, -0.264477, --0.728152, -0.953482, --0.840364, -0.464038, --0.038842, --0.200695, -0.127728, -0.215109, --0.648481, -0.954924, --0.983212, -0.706866, --0.218428, --0.323354, -0.759385, --0.979325, -0.943324, --0.683120, -0.293156, -0.088180, --0.316511, -0.299308, --0.048450, --0.313277, -0.613527, --0.730906, -0.665321, --0.522029, -0.417552, --0.382063, -0.340203, --0.188867, --0.092517, -0.395562, --0.547229, -0.441220, --0.134833, --0.167770, -0.239724, -0.022543, --0.531829, -1.063270, --1.385975, -1.384523, --1.097507, -0.663983, --0.229292, --0.120606, -0.359847, --0.478145, -0.447529, --0.242081, --0.101753, -0.446728, --0.596532, -0.411710, -0.079733, --0.670766, -1.089263, --1.164341, -0.925483, --0.562715, -0.282511, --0.169734, -0.153994, --0.092595, --0.104489, -0.402953, --0.669908, -0.765665, --0.631201, -0.317882, -0.044607, --0.310499, -0.376111, --0.217806, --0.093857, -0.410920, --0.564051, -0.447815, --0.094366, --0.319605, -0.558132, --0.466598, -0.080196, -0.381026, --0.642673, -0.555211, --0.199799, --0.160714, -0.261284, --0.023855, --0.380046, -0.641716, --0.525260, -0.027681, -0.618945, --1.095567, -1.186283, --0.887369, -0.381276, -0.086807, --0.342724, -0.354616, --0.220595, -0.099144, --0.127320, -0.361596, --0.756008, -1.178477, --1.461449, -1.475040, --1.195523, -0.729708, --0.269038, --0.010043, -0.039020, -0.119804, --0.335169, -0.502710, --0.598839, -0.655125, --0.686661, -0.649554, --0.476526, -0.165587, -0.162431, --0.310309, -0.145572, -0.265166, --0.651161, -0.699337, --0.286023, --0.397344, -0.942460, --0.999017, -0.531602, -0.139447, --0.555547, -0.440543, -0.111846, --0.716591, -0.972771, --0.725163, -0.130397, -0.491274, --0.880645, -0.971382, --0.860783, -0.684599, --0.516694, -0.362148, --0.217683, -0.121160, --0.139053, -0.307242, --0.583054, -0.851910, --0.983185, -0.893512, --0.578837, -0.107415, -0.408095, --0.840886, -1.079797, --1.062799, -0.807159, --0.411943, -0.014671, -0.283169, --0.472348, -0.625049, --0.816186, -1.034902, --1.162630, -1.048165, --0.632742, -0.031262, -0.499762, --0.698854, -0.456819, -0.105725, --0.692831, -0.990147, --0.834704, -0.301245, -0.343761, --0.793833, -0.873233, --0.627743, -0.282198, --0.091924, -0.182437, --0.479948, -0.774531, --0.866986, -0.695400, --0.358062, -0.030579, -0.150259, --0.149972, -0.017439, -0.178269, --0.391210, -0.591978, --0.735377, -0.750834, --0.579391, -0.234157, -0.168117, --0.443276, -0.436832, --0.127577, --0.332465, -0.681517, --0.692452, -0.315813, -0.272249, --0.758678, -0.872201, --0.540457, --0.074193, -0.678736, --1.018885, -1.003729, --0.719870, -0.349883, --0.063179, --0.058426, -0.038815, -0.018557, -0.017526, --0.241961, -0.655059, --1.140163, -1.503059, --1.566612, -1.272532, --0.725553, -0.145716, -0.247177, --0.345702, -0.194289, -0.063912, --0.288176, -0.414175, --0.452748, -0.430633, --0.338176, -0.138440, -0.170510, --0.505046, -0.718478, --0.693060, -0.430061, --0.060280, --0.238142, -0.351081, --0.283159, -0.123165, -0.037310, --0.158505, -0.244293, --0.298390, -0.301382, --0.233352, -0.112670, --0.001598, --0.036531, --0.008537, -0.082090, --0.110879, -0.069287, --0.007658, -0.018603, --0.169240, -0.451517, --0.782597, -1.048183, --1.157230, -1.080000, --0.857675, -0.584774, --0.371608, -0.298258, --0.377321, -0.543441, --0.677908, -0.660889, --0.429655, -0.016831, -0.451309, --0.801406, -0.887557, --0.659396, -0.187406, -0.369805, --0.837205, -1.092261, --1.095856, -0.879822, --0.514491, -0.082388, -0.333854, --0.660841, -0.852325, --0.909475, -0.883927, --0.849878, -0.854688, --0.879504, -0.841854, --0.649206, -0.276491, -0.183394, --0.539653, -0.598684, --0.285943, --0.281790, -0.830624, --1.064358, -0.828225, --0.204292, --0.522887, -1.015258, --1.059977, -0.674885, --0.081924, --0.429104, -0.659622, --0.589364, -0.349430, --0.115163, --0.001923, --0.003441, -0.064685, --0.111407, -0.115064, --0.086369, -0.042389, -0.017488, --0.104573, -0.214895, --0.316418, -0.367268, --0.349916, -0.286524, --0.217825, -0.164145, --0.108633, -0.021864, -0.095259, --0.195521, -0.218375, --0.146507, -0.034215, -0.023326, -0.038913, --0.198256, -0.346822, --0.358485, -0.178968, -0.120913, --0.370442, -0.395881, --0.132084, --0.325738, -0.770854, --1.006886, -0.960426, --0.708416, -0.407859, --0.187966, -0.085187, --0.057506, -0.046944, --0.027978, -0.006559, -0.011669, --0.038032, -0.079790, --0.106931, -0.054098, -0.125101, --0.391040, -0.605709, --0.607542, -0.331252, -0.118297, --0.506087, -0.605992, --0.347195, --0.133078, -0.567326, --0.714728, -0.497914, --0.039230, --0.417686, -0.648759, --0.569469, -0.269923, -0.048099, --0.190651, -0.077223, -0.224333, --0.547190, -0.724212, --0.677708, -0.452817, --0.182743, -0.011106, --0.016720, -0.180985, --0.411075, -0.600108, --0.685263, -0.668987, --0.596216, -0.510665, --0.426061, -0.333315, --0.232101, -0.153910, --0.150493, -0.253909, --0.443434, -0.652749, --0.815310, -0.907192, --0.944984, -0.938728, --0.848608, -0.600466, --0.162648, --0.379864, -0.833238, --1.003026, -0.830689, --0.447717, -0.091798, -0.060292, --0.015902, --0.051865, --0.047983, -0.361331, --0.738304, -0.935533, --0.795588, -0.370836, -0.100633, --0.351940, -0.268136, -0.035277, --0.292189, -0.271672, -0.056810, --0.492886, -0.734313, --0.580831, -0.074897, -0.516688, --0.868750, -0.798661, --0.368171, --0.176204, -0.574050, --0.710633, -0.660931, --0.603301, -0.677651, --0.890174, -1.118394, --1.197123, -1.020092, --0.598827, -0.057581, -0.423086, --0.684965, -0.660692, --0.403427, -0.061149, -0.195345, --0.254371, -0.110926, -0.144310, --0.382943, -0.505905, --0.483265, -0.352148, --0.184913, -0.051785, -0.002190, -0.039007, --0.168306, -0.359912, --0.570331, -0.745520, --0.841592, -0.849216, --0.798408, -0.730301, --0.653787, -0.528544, --0.300193, --0.034287, -0.388808, --0.620543, -0.616671, --0.370037, --0.014150, -0.381631, --0.609869, -0.650759, --0.522601, -0.280827, -0.000535, --0.235763, -0.343609, --0.282357, -0.081166, -0.165905, --0.349970, -0.406455, --0.337771, -0.187497, -0.000176, --0.192779, -0.349627, --0.408807, -0.318076, --0.093382, --0.157106, -0.289866, --0.234942, -0.066313, -0.038948, -0.067230, --0.384036, -0.754482, --0.978822, -0.956221, --0.743386, -0.492737, --0.332591, -0.289721, --0.304738, -0.307280, --0.276107, -0.238252, --0.224740, -0.234492, --0.239050, -0.216561, --0.178451, -0.165665, --0.220812, -0.358351, --0.550665, -0.734024, --0.832740, -0.795988, --0.634014, -0.430597, --0.312624, -0.381399, --0.642845, -0.984911, --1.226427, -1.214317, --0.910167, -0.411150, -0.105155, --0.472738, -0.607485, --0.522679, -0.299460, --0.046280, --0.132968, -0.167459, --0.054293, --0.116602, -0.185813, --0.012925, --0.411510, -0.916584, --1.225542, -1.126522, --0.626948, --0.025903, -0.486377, --0.523564, -0.159191, -0.364261, --0.756819, -0.868309, --0.758321, -0.611097, --0.573263, -0.642956, --0.687892, -0.565171, --0.240091, --0.185717, -0.545882, --0.713086, -0.657018, --0.432153, -0.130626, -0.151798, --0.326132, -0.323271, --0.130832, --0.168090, -0.404193, --0.402959, -0.096547, -0.416792, --0.920861, -1.210538, --1.208345, -0.984973, --0.678015, -0.383747, --0.109863, --0.183559, -0.504733, --0.789967, -0.937337, --0.882252, -0.649793, --0.343422, -0.083487, -0.057344, --0.081548, -0.049367, --0.034381, -0.076718, --0.153933, -0.184770, --0.072778, --0.225083, -0.645087, --1.024095, -1.177646, --1.006132, -0.557389, --0.001924, --0.459082, -0.687892, --0.650851, -0.400217, --0.032081, --0.345788, -0.633809, --0.763653, -0.727664, --0.590958, -0.461478, --0.424058, -0.483024, --0.560051, -0.554260, --0.420148, -0.202995, --0.005605, --0.084486, -0.050303, -0.053355, --0.142341, -0.150636, --0.054043, --0.127704, -0.334462, --0.471984, -0.438039, --0.176878, --0.264260, -0.727762, --1.017016, -1.013425, --0.755227, -0.409168, --0.146008, -0.013300, -0.089317, --0.304732, -0.664314, --1.016438, -1.111226, --0.790665, -0.140022, -0.526655, --0.854196, -0.680969, --0.152338, --0.371492, -0.550457, --0.279314, --0.260502, -0.734447, --0.870029, -0.607735, --0.103650, --0.392349, -0.686375, --0.727532, -0.600114, --0.449660, -0.394537, --0.464223, -0.586351, --0.627869, -0.477003, --0.126606, --0.296581, -0.590744, --0.600296, -0.319399, -0.099825, --0.444352, -0.571427, --0.479700, -0.279090, --0.099319, -0.013986, --0.026295, -0.101655, --0.201163, -0.289075, --0.325679, -0.272663, --0.117706, --0.103261, -0.312276, --0.427429, -0.408035, --0.275937, -0.100132, -0.041870, --0.100682, -0.070187, -0.022028, --0.138750, -0.255144, --0.364431, -0.463990, --0.534580, -0.534964, --0.426469, -0.214516, -0.030631, --0.206408, -0.253593, --0.217485, -0.231484, --0.415495, -0.759659, --1.093510, -1.185389, --0.910658, -0.361093, -0.197357, --0.495530, -0.435551, --0.141038, --0.146771, -0.239793, --0.113636, --0.109057, -0.266945, --0.267170, -0.121526, -0.089664, --0.276710, -0.376633, --0.357588, -0.212692, -0.038701, --0.345636, -0.633040, --0.827798, -0.889613, --0.824624, -0.672346, --0.477110, -0.266979, --0.054614, --0.142693, -0.283173, --0.301272, -0.136690, -0.220944, --0.700073, -1.155385, --1.422563, -1.395771, --1.084980, -0.617061, --0.176615, --0.082470, -0.106198, -0.045890, --0.246312, -0.376010, --0.387816, -0.323661, --0.279302, -0.339076, --0.519347, -0.753305, --0.925918, -0.937918, --0.760094, -0.445699, --0.096350, --0.192562, -0.370794, --0.437539, -0.420952, --0.357463, -0.284473, --0.238370, -0.244053, --0.297874, -0.364809, --0.405576, -0.419137, --0.460590, -0.605086, --0.874049, -1.182310, --1.361860, -1.263141, --0.868875, -0.334280, -0.088333, --0.199826, --0.019569, -0.395711, --0.670367, -0.662400, --0.373050, --0.030880, -0.337103, --0.423718, -0.321441, --0.170266, -0.114329, --0.213027, -0.422300, --0.642205, -0.783288, --0.805519, -0.717211, --0.553506, -0.358619, --0.177563, -0.048001, -0.013675, --0.023264, -0.023007, --0.056793, -0.141286, --0.253535, -0.344304, --0.369280, -0.318049, --0.221232, -0.128704, --0.071931, -0.039286, -0.011166, --0.105918, -0.215930, --0.265640, -0.194933, --0.023853, --0.144690, -0.200741, --0.123062, -0.007734, -0.005116, -0.149462, --0.398402, -0.581692, --0.576399, -0.389136, --0.141674, --0.032944, -0.091512, --0.096073, -0.139384, --0.252842, -0.377545, --0.418649, -0.330734, --0.160550, -0.015163, -0.014512, -0.085796, --0.248396, -0.366776, --0.351654, -0.168548, -0.151233, --0.519594, -0.814985, --0.920732, -0.773873, --0.405153, --0.057554, -0.436153, --0.582998, -0.452912, --0.124912, --0.239113, -0.474598, --0.488624, -0.291181, -0.027588, --0.355591, -0.618271, --0.805731, -0.952868, --1.086130, -1.176194, --1.136810, -0.880240, --0.394784, --0.213897, -0.755993, --1.050243, -1.016620, --0.709381, -0.273725, -0.138847, --0.438952, -0.614281, --0.695922, -0.713718, --0.677720, -0.594508, --0.494114, -0.433280, --0.463046, -0.583731, --0.727088, -0.787452, --0.685105, -0.418246, --0.068698, --0.239663, -0.400107, --0.366923, -0.168891, -0.103039, --0.325378, -0.385735, --0.234398, --0.077643, -0.404387, --0.568724, -0.459618, --0.105197, --0.328880, -0.622098, --0.615923, -0.297271, -0.197267, --0.653828, -0.887414, --0.824502, -0.523251, --0.127866, --0.210491, -0.399878, --0.428907, -0.343833, --0.207710, -0.068823, -0.052327, --0.163250, -0.290683, --0.459892, -0.664031, --0.843732, -0.904474, --0.776809, -0.481986, --0.145824, --0.066849, -0.060878, -0.116778, --0.302419, -0.327941, --0.141199, --0.154044, -0.368684, --0.358515, -0.121332, -0.204946, --0.437324, -0.466944, --0.321321, -0.132910, --0.040895, -0.096067, --0.231992, -0.319667, --0.264441, -0.074384, -0.151849, --0.309376, -0.376040, --0.428705, -0.566021, --0.798530, -1.004713, --1.004993, -0.706872, --0.206200, --0.245580, -0.396691, --0.164786, --0.301078, -0.711059, --0.815447, -0.554573, --0.084205, --0.330108, -0.471874, --0.283522, --0.129485, -0.580485, --0.900102, -0.993515, --0.847630, -0.517803, --0.115482, --0.215424, -0.355618, --0.287628, -0.133185, --0.093270, -0.303385, --0.703087, -1.035945, --1.011693, -0.530324, -0.201162, --0.767489, -0.810980, --0.282288, --0.509389, -1.093743, --1.152961, -0.732537, --0.200708, --0.015111, --0.269929, -0.868318, --1.350316, -1.339908, --0.769247, --0.082059, -0.781702, --1.029204, -0.831557, --0.459478, -0.234905, --0.310863, -0.593200, --0.836782, -0.826457, --0.509350, -0.002651, -0.500129, --0.839127, -0.942084, --0.814580, -0.509627, --0.115856, --0.241669, -0.425906, --0.354136, -0.066849, -0.269459, --0.452429, -0.372547, --0.079344, --0.272515, -0.553557, --0.753695, -0.958492, --1.231682, -1.513875, --1.634650, -1.436368, --0.909797, -0.230889, -0.332760, --0.576703, -0.467841, --0.141349, --0.195844, -0.383059, --0.375548, -0.239347, --0.090647, -0.021711, --0.052960, -0.131777, --0.173743, -0.119923, -0.024648, --0.193570, -0.299087, --0.283251, -0.151225, -0.028753, --0.156106, -0.147144, -0.014618, --0.251380, -0.412646, --0.354139, -0.041640, -0.388489, --0.674280, -0.576947, --0.049645, --0.693400, -1.274219, --1.369043, -0.908623, --0.124806, --0.591954, -0.930177, --0.833834, -0.507598, --0.260109, -0.297319, --0.597295, -0.933858, --1.021219, -0.689198, -0.007023, --0.799210, -1.335661, --1.364622, -0.873957, --0.102094, --0.595727, -0.950525, --0.922947, -0.692563, --0.505389, -0.495145, --0.608376, -0.678256, --0.573117, -0.293866, -0.050683, --0.350342, -0.575150, --0.759954, -0.920318, --0.995918, -0.889193, --0.568775, -0.135925, -0.220353, --0.351710, -0.254654, --0.062365, --0.064491, -0.050754, -0.065213, --0.191782, -0.259281, --0.241124, -0.123688, -0.114312, --0.468640, -0.849821, --1.072763, -0.942698, --0.397338, --0.401103, -1.111569, --1.391104, -1.097662, --0.385726, --0.373214, -0.800166, --0.719956, -0.245240, -0.313945, --0.651438, -0.645429, --0.403392, -0.151806, --0.057240, -0.111121, --0.159756, -0.049570, -0.230298, --0.521370, -0.607092, --0.375569, --0.089511, -0.555694, --0.788107, -0.689391, --0.341940, --0.061443, -0.337124, --0.398265, -0.268612, --0.039965, --0.178862, -0.290472, --0.222560, --0.048939, -0.465829, --0.877718, -1.093778, --0.986833, -0.581940, --0.054257, --0.376287, -0.580089, --0.579838, -0.495458, --0.426091, -0.373924, --0.272347, -0.085811, -0.115257, --0.178499, --0.018502, -0.456459, --0.954328, -1.265146, --1.225336, -0.855058, --0.341863, --0.078409, -0.258836, --0.204418, -0.026989, -0.160129, --0.320770, -0.489596, --0.698228, -0.907130, --1.008597, -0.902492, --0.583257, -0.166666, -0.166628, --0.271449, -0.115611, -0.208417, --0.534726, -0.702434, --0.622459, -0.308422, -0.135226, --0.561786, -0.846566, --0.935873, -0.852948, --0.660028, -0.407788, --0.114882, --0.206975, -0.511434, --0.710350, -0.722689, --0.545012, -0.278018, --0.073828, -0.037008, --0.157074, -0.326749, --0.428690, -0.417754, --0.335833, -0.258070, --0.225712, -0.223108, --0.211045, -0.178415, --0.163012, -0.221942, --0.375214, -0.569422, --0.695677, -0.657208, --0.442391, -0.148351, -0.069391, --0.092579, --0.084923, -0.356255, --0.574804, -0.647453, --0.584050, -0.476166, --0.428648, -0.492812, --0.639001, -0.777893, --0.813719, -0.700428, --0.471227, -0.223780, --0.067053, -0.059152, --0.172283, -0.304133, --0.325709, -0.137614, -0.288833, --0.894710, -1.540363, --2.037436, -2.206173, --1.946151, -1.290677, --0.410917, --0.441464, -1.030372, --1.222955, -1.028196, --0.575013, -0.048318, -0.383866, --0.623112, -0.657241, --0.540624, -0.351448, --0.149825, --0.041575, -0.227246, --0.412336, -0.583015, --0.707903, -0.755176, --0.709286, -0.576727, --0.382674, -0.165569, -0.030403, --0.169482, -0.242950, --0.275285, -0.301838, --0.325917, -0.292791, --0.119603, --0.222220, -0.632184, --0.890588, -0.779166, --0.247256, --0.498919, -1.073446, --1.131714, -0.600237, -0.245226, --0.924130, -1.040917, --0.537340, --0.260365, -0.838114, --0.813412, -0.173379, -0.719882, --1.355562, -1.380896, --0.791854, --0.102561, -0.898120, --1.336681, -1.414876, --1.309844, -1.202306, --1.137681, -1.021720, --0.738304, -0.285137, -0.184942, --0.451917, -0.379339, --0.012878, --0.445550, -0.764189, --0.811957, -0.604275, --0.250672, --0.134927, -0.488502, --0.789705, -1.026447, --1.174665, -1.208345, --1.120057, -0.928008, --0.666579, -0.373602, --0.084691, --0.168522, -0.363650, --0.493551, -0.563827, --0.579940, -0.535611, --0.416184, -0.215817, -0.047140, --0.331011, -0.584214, --0.757942, -0.812455, --0.726495, -0.516935, --0.254530, -0.048022, -0.011327, -0.089430, --0.272840, -0.428401, --0.497086, -0.509854, --0.544305, -0.639632, --0.750631, -0.785616, --0.691665, -0.505327, --0.320114, -0.203834, --0.147050, -0.091967, --0.010923, --0.047021, --0.006258, -0.205018, --0.467749, -0.631937, --0.568971, -0.290136, -0.046210, --0.243130, -0.214062, --0.059790, -0.006305, --0.236870, -0.734370, --1.252852, -1.454284, --1.129863, -0.358130, -0.514781, --1.072218, -1.078667, --0.621687, -0.048277, -0.263282, --0.143398, --0.277641, -0.683520, --0.804214, -0.599027, --0.263599, -0.067070, --0.149060, -0.429000, --0.686596, -0.738909, --0.571550, -0.329315, --0.189132, -0.226370, --0.376764, -0.507246, --0.522622, -0.420935, --0.268929, -0.137461, --0.057434, -0.022475, --0.018174, -0.042018, --0.098092, -0.178851, --0.254845, -0.281744, --0.219111, -0.049898, -0.207163, --0.496314, -0.736983, --0.848441, -0.780060, --0.535176, -0.176909, -0.189072, --0.450829, -0.533277, --0.430362, -0.209915, -0.015751, --0.142446, -0.123178, -0.013828, --0.189256, -0.323500, --0.381572, -0.382889, --0.370815, -0.365486, --0.337341, -0.224557, -0.014777, --0.354366, -0.693886, --0.905210, -0.903261, --0.696932, -0.388278, --0.119006, --0.007857, --0.011189, -0.074024, --0.034215, --0.199115, -0.586234, --0.967070, -1.163718, --1.107483, -0.891521, --0.697570, -0.646401, --0.691496, -0.651533, --0.366958, --0.140523, -0.639144, --0.825962, -0.538317, -0.117393, --0.814726, -1.197990, --1.080456, -0.523585, -0.232611, --0.915955, -1.342493, --1.456609, -1.306620, --1.002069, -0.678307, --0.459326, -0.407040, --0.475811, -0.516959, --0.360374, --0.059195, -0.617804, --1.038705, -1.050269, --0.569872, --0.217863, -0.956018, --1.328523, -1.247004, --0.883936, -0.536541, --0.425104, -0.566042, --0.794408, -0.900572, --0.776448, -0.477188, --0.171100, -0.020678, --0.070968, -0.212411, --0.243992, -0.007354, -0.485763, --1.020718, -1.283581, --1.055029, -0.374928, -0.440570, --0.960322, -0.888040, --0.243804, --0.641650, -1.320360, --1.487305, -1.144455, --0.569803, -0.118810, -0.005471, -0.138634, --0.308777, -0.276233, -0.005197, --0.379533, -0.621925, --0.613577, -0.423632, --0.244357, -0.241078, --0.433700, -0.686772, --0.797174, -0.608296, --0.085285, --0.668525, -1.441963, --1.980194, -2.077449, --1.675995, -0.918634, --0.100149, --0.481045, -0.688944, --0.618131, -0.506027, --0.546418, -0.742423, --0.911681, -0.840483, --0.465892, --0.058368, -0.465847, --0.569931, -0.394501, --0.142533, -0.033141, --0.141358, -0.366097, --0.541498, -0.587564, --0.569973, -0.620808, --0.790799, -0.960540, --0.892594, -0.400074, -0.481975, --1.447009, -2.043859, --1.925600, -1.077815, -0.123871, --1.089641, -1.342045, --0.798760, --0.175041, -0.990279, --1.194313, -0.732277, -0.056316, --0.685055, -0.827354, --0.477608, --0.112739, -0.639105, --0.925540, -0.975439, --0.899580, -0.811144, --0.769792, -0.788790, --0.862491, -0.971949, --1.068829, -1.075770, --0.930911, -0.655915, --0.385610, -0.309525, --0.542326, -1.011982, --1.464292, -1.607721, --1.311460, -0.712275, --0.138392, --0.107926, --0.044270, -0.393005, --0.616170, -0.502784, --0.089435, --0.392891, -0.707229, --0.778731, -0.713921, --0.670436, -0.699895, --0.703027, -0.535635, --0.171241, --0.225901, -0.392248, --0.159032, --0.401177, -0.992919, --1.273387, -1.059634, --0.424681, --0.371304, -1.048445, --1.449423, -1.571613, --1.498145, -1.305719, --1.024018, -0.661810, --0.256217, --0.109538, -0.337976, --0.371900, -0.229053, -0.005478, --0.220163, -0.324871, --0.283150, -0.120195, -0.091823, --0.263672, -0.323157, --0.240853, -0.038059, -0.223146, --0.459544, -0.587054, --0.539244, -0.286797, -0.143045, --0.658612, -1.123023, --1.403500, -1.429725, --1.226639, -0.898313, --0.572152, -0.341061, --0.238018, -0.248775, --0.338149, -0.464014, --0.576223, -0.619484, --0.554391, -0.385542, --0.169161, --0.014588, -0.106729, --0.095973, -0.005533, -0.142597, --0.345728, -0.596350, --0.835795, -0.938317, --0.763587, -0.259242, -0.458959, --1.123869, -1.443355, --1.266398, -0.680030, -0.031614, --0.542594, -0.655435, --0.383703, --0.089337, -0.529555, --0.766451, -0.745895, --0.517752, -0.189708, -0.122087, --0.331962, -0.408870, --0.377879, -0.294204, --0.201568, -0.104482, -0.021278, --0.187288, -0.358285, --0.462134, -0.444313, --0.324150, -0.201400, --0.196387, -0.361269, --0.629359, -0.847222, --0.874020, -0.678531, --0.360288, -0.076902, -0.066781, --0.080173, -0.051725, --0.053446, -0.073768, --0.040661, --0.090090, -0.272679, --0.405749, -0.439932, --0.453472, -0.605700, --0.985403, -1.480095, --1.796206, -1.644661, --0.962387, --0.006351, -0.844331, --1.218746, -1.071526, --0.608954, -0.118644, -0.227309, --0.432344, -0.578920, --0.689251, -0.681004, --0.454870, -0.024960, -0.437285, --0.697638, -0.620605, --0.266527, --0.155424, -0.441705, --0.534997, -0.545229, --0.641865, -0.907183, --1.263528, -1.525314, --1.530417, -1.251248, --0.807531, -0.378281, --0.081414, --0.093495, -0.255620, --0.513389, -0.878106, --1.239157, -1.427567, --1.324121, -0.939345, --0.413632, --0.060622, -0.342775, --0.407871, -0.334024, --0.227992, -0.144247, --0.056455, --0.096953, -0.326892, --0.537477, -0.555875, --0.244693, --0.375000, -1.085075, --1.563789, -1.567116, --1.083788, -0.356172, -0.256463, --0.489667, -0.325056, -0.016963, --0.236717, -0.160531, -0.145374, --0.428275, -0.432150, --0.083200, --0.453469, -0.887151, --1.003613, -0.808589, --0.509165, -0.351359, --0.440305, -0.678584, --0.861680, -0.846653, --0.659664, -0.465034, --0.431637, -0.606054, --0.884377, -1.089615, --1.085195, -0.844108, --0.442182, -0.003177, -0.355558, --0.550826, -0.542383, --0.341943, -0.023342, -0.287794, --0.461821, -0.435849, --0.259187, -0.069746, --0.005458, -0.110836, --0.311274, -0.476443, --0.520998, -0.459043, --0.371629, -0.323652, --0.308073, -0.264239, --0.145268, --0.032472, -0.201904, --0.304073, -0.337422, --0.354795, -0.412977, --0.518694, -0.615482, --0.623875, -0.506975, --0.313405, -0.162512, --0.175333, -0.393359, --0.738468, -1.041772, --1.125854, -0.893443, --0.376487, --0.275917, -0.860429, --1.203027, -1.225986, --0.970035, -0.564557, --0.163939, --0.116341, -0.235019, --0.222408, -0.150254, --0.092086, -0.089742, --0.137767, -0.192576, --0.204008, -0.152373, --0.065117, --0.003068, -0.015831, -0.009042, --0.006929, --0.081789, -0.254450, --0.434526, -0.524157, --0.484362, -0.375631, --0.318386, -0.399696, --0.602722, -0.819537, --0.936404, -0.916888, --0.811379, -0.690715, --0.570697, -0.399290, --0.116875, --0.268247, -0.658132, --0.915737, -0.945533, --0.744655, -0.397988, --0.032826, --0.234901, -0.342626, --0.305081, -0.213215, --0.198702, -0.366896, --0.728155, -1.172788, --1.515673, -1.592155, --1.349309, -0.876937, --0.360890, --0.011541, -0.137718, --0.031803, --0.207285, -0.463803, --0.663861, -0.792226, --0.867296, -0.903195, --0.891855, -0.816625, --0.679502, -0.514226, --0.370758, -0.283302, --0.247254, -0.222141, --0.157528, -0.023795, -0.169657, --0.376192, -0.531450, --0.583579, -0.523153, --0.396769, -0.290564, --0.284285, -0.401135, --0.588583, -0.748837, --0.800292, -0.726617, --0.581129, -0.450492, --0.409040, -0.489870, --0.674918, -0.894787, --1.040741, -1.002582, --0.730415, -0.284289, -0.177166, --0.482013, -0.555175, --0.471951, -0.406688, --0.506656, -0.782024, --1.094619, -1.256417, --1.167172, -0.891127, --0.616644, -0.527597, --0.677228, -0.951804, --1.147567, -1.107864, --0.829935, -0.471060, --0.248529, -0.294127, --0.556489, -0.820374, --0.839160, -0.498233, -0.101601, --0.701415, -1.043802, --1.024268, -0.735159, --0.386480, -0.172279, --0.173020, -0.339547, --0.543906, -0.653539, --0.592157, -0.368621, --0.064799, --0.214916, -0.407445, --0.524327, -0.623454, --0.736784, -0.817587, --0.764156, -0.513138, --0.125361, --0.219386, -0.332474, --0.153933, --0.191925, -0.472652, --0.503070, -0.265256, -0.093773, --0.379718, -0.492129, --0.483280, -0.495661, --0.631788, -0.860297, --1.032989, -0.999932, --0.731294, -0.346745, --0.025653, --0.131333, -0.175400, --0.252274, -0.457395, --0.725115, -0.853824, --0.660302, -0.144607, -0.472363, --0.880946, -0.891172, --0.559854, -0.140998, -0.098077, --0.053433, --0.171875, -0.371906, --0.395398, -0.237705, --0.015323, --0.137046, -0.160621, --0.096508, -0.038298, --0.058368, -0.158875, --0.273137, -0.309587, --0.209903, --0.011318, -0.268275, --0.448268, -0.475421, --0.354217, -0.161198, -0.013050, --0.130806, -0.229462, --0.377411, -0.596681, --0.819745, -0.925898, --0.836311, -0.590088, --0.330382, -0.201202, --0.235584, -0.330394, --0.334540, -0.177956, -0.069662, --0.261798, -0.301734, --0.217856, -0.120919, --0.089496, -0.097482, --0.055657, --0.074422, -0.211166, --0.206208, --0.019293, -0.380570, --0.672918, -0.727851, --0.554391, -0.344873, --0.334835, -0.624533, --1.098154, -1.497948, --1.594309, -1.329474, --0.842227, -0.370061, --0.102804, -0.080943, --0.192003, -0.255574, --0.140825, --0.151264, -0.486269, --0.676110, -0.595977, --0.268484, --0.141134, -0.422589, --0.452933, -0.276326, --0.073546, -0.038050, --0.242049, -0.584178, --0.852044, -0.853991, --0.531665, --0.011887, -0.572840, --0.947846, -1.018495, --0.787231, -0.363739, -0.081372, --0.376749, -0.408789, --0.162775, --0.267257, -0.707647, --0.968998, -0.925158, --0.574527, -0.049815, -0.439318, --0.709912, -0.700863, --0.499783, -0.279580, --0.182871, -0.232370, --0.330549, -0.347371, --0.228351, -0.038492, -0.092224, --0.076873, --0.056654, -0.192153, --0.230036, -0.182009, --0.169941, -0.320994, --0.641582, -0.980163, --1.122293, -0.953380, --0.561529, -0.191914, --0.078955, -0.279224, --0.629576, -0.859737, --0.774677, -0.378025, -0.140132, --0.529087, -0.626980, --0.444844, -0.148114, -0.043011, -0.021363, --0.332319, -0.716239, --0.921758, -0.761495, --0.231352, --0.467269, -1.024509, --1.187070, -0.894483, --0.308031, --0.279843, -0.597876, --0.523385, -0.123271, -0.398256, --0.803764, -0.922550, --0.707697, -0.240886, -0.305128, --0.731517, -0.889360, --0.742587, -0.386504, --0.003291, --0.229573, -0.226150, --0.019024, --0.288544, -0.604552, --0.898126, -1.178752, --1.428506, -1.556252, --1.430074, -0.979737, --0.293578, --0.376821, -0.730301, --0.584249, --0.013703, -0.805862, --1.461506, -1.740555, --1.588062, -1.121583, --0.542442, -0.035204, -0.293761, --0.423241, -0.386379, --0.232274, -0.005390, -0.250694, --0.480675, -0.620569, --0.627663, -0.519436, --0.385846, -0.349213, --0.485080, -0.753278, --0.994678, -1.013529, --0.707128, -0.160952, -0.365540, --0.574310, -0.311238, -0.324004, --1.023401, -1.449158, --1.427412, -1.029192, --0.495339, -0.074329, -0.108222, --0.073345, --0.078878, -0.253925, --0.400742, -0.495640, --0.511484, -0.413844, --0.190715, --0.115865, -0.415662, --0.622188, -0.714940, --0.755409, -0.830740, --0.962039, -1.059011, --0.978533, -0.658213, --0.217106, --0.081512, -0.008504, -0.434052, --0.961401, -1.171679, --0.832063, -0.076287, -0.650952, --0.886508, -0.476848, -0.300875, --0.922053, -0.974577, --0.434466, --0.339720, -0.879456, --0.936267, -0.628047, --0.308797, -0.277148, --0.548493, -0.854101, --0.855311, -0.407415, -0.319041, --0.942257, -1.121282, --0.780102, -0.151178, -0.386886, --0.563732, -0.388740, --0.124607, -0.085536, --0.402280, -0.918387, --1.289387, -1.217432, --0.661071, --0.122239, -0.730993, --0.869662, -0.528825, -0.020872, --0.411960, -0.413728, --0.062079, --0.390206, -0.653125, --0.578789, -0.226348, -0.209643, --0.537072, -0.670555, --0.644348, -0.547435, --0.440993, -0.317038, --0.120451, --0.186995, -0.568727, --0.906790, -1.062141, --0.970828, -0.709960, --0.473623, -0.454441, --0.702505, -1.066760, --1.277637, -1.126471, --0.615383, --0.034064, -0.521689, --0.653706, -0.439235, --0.041555, --0.357084, -0.663116, --0.878371, -1.026813, --1.084706, -0.983760, --0.683237, -0.244712, -0.161989, --0.338340, -0.172503, -0.286489, --0.843607, -1.251859, --1.329730, -1.042175, --0.512247, --0.035155, -0.372925, --0.377858, -0.098966, -0.252044, --0.399827, -0.155140, -0.464813, --1.223709, -1.779647, --1.865934, -1.434166, --0.677481, --0.074074, -0.519800, --0.521433, -0.139656, -0.427185, --0.951324, -1.268720, --1.319841, -1.138733, --0.814288, -0.448981, --0.128387, --0.096125, -0.212188, --0.238912, -0.208184, --0.141588, -0.033803, -0.145223, --0.424675, -0.792876, --1.167220, -1.403664, --1.358536, -0.979805, --0.371414, --0.225713, -0.546675, --0.452289, -0.019244, -0.498424, --0.821417, -0.813474, --0.551616, -0.249700, --0.090785, -0.090660, --0.093769, --0.092874, -0.525418, --1.041328, -1.341938, --1.192578, -0.602338, -0.150645, --0.679091, -0.730301, --0.348071, --0.160282, -0.429471, --0.272346, --0.213821, -0.735675, --1.013109, -0.956307, --0.690521, -0.426872, --0.290376, -0.239509, --0.131632, --0.129821, -0.493324, --0.787967, -0.858166, --0.691779, -0.434999, --0.280498, -0.318973, --0.472637, -0.561729, --0.449845, -0.154082, -0.162493, --0.307063, -0.193373, -0.098488, --0.375262, -0.453526, --0.268536, --0.095642, -0.461511, --0.656937, -0.600713, --0.338253, -0.019461, -0.168863, --0.092928, --0.250403, -0.711414, --1.050594, -1.070262, --0.742661, -0.243165, -0.150493, --0.237165, -0.026560, -0.270276, --0.391091, -0.205744, -0.195946, --0.566843, -0.662034, --0.384036, --0.171312, -0.778123, --1.200056, -1.298864, --1.086029, -0.703632, --0.345654, -0.155262, --0.151789, -0.235804, --0.276186, -0.221265, --0.145730, -0.185884, --0.406974, -0.712573, --0.885473, -0.744974, --0.302658, --0.214281, -0.506987, --0.419406, -0.063085, -0.249126, --0.223268, --0.195370, -0.763301, --1.093239, -0.922178, --0.306133, --0.401192, -0.778460, --0.616963, -0.053343, -0.536759, --0.799710, -0.626128, --0.181132, --0.257059, -0.506629, --0.577758, -0.599816, --0.665592, -0.733270, --0.664734, -0.359531, -0.132384, --0.614874, -0.867111, --0.791899, -0.480481, --0.147459, --0.015080, --0.041813, -0.209962, --0.315283, -0.238629, -0.018963, --0.356649, -0.644377, --0.785640, -0.742447, --0.531099, -0.210684, -0.130818, --0.400828, -0.537003, --0.533090, -0.433605, --0.298118, -0.163369, --0.035284, --0.085532, -0.174920, --0.188650, -0.102342, -0.048599, --0.174642, -0.191276, --0.086562, --0.065148, -0.163394, --0.168208, -0.135570, --0.164674, -0.298571, --0.466074, -0.521993, --0.359927, -0.006885, -0.380582, --0.621884, -0.640705, --0.517296, -0.423337, --0.488299, -0.699284, --0.909040, -0.943235, --0.722552, -0.309736, -0.143073, --0.492883, -0.670102, --0.672713, -0.521889, --0.238200, --0.138261, -0.517520, --0.771500, -0.799064, --0.597477, -0.276698, -0.002391, --0.121874, -0.065032, -0.093757, --0.245146, -0.299710, --0.214297, --0.003176, -0.293080, --0.548418, -0.642735, --0.488868, -0.101637, -0.383887, --0.765709, -0.875981, --0.666823, -0.228976, -0.259029, --0.609360, -0.688459, --0.454322, --0.023596, -0.567025, --0.940064, -0.957201, --0.598273, -0.041333, -0.437271, --0.641969, -0.583957, --0.450656, -0.438111, --0.580914, -0.718505, --0.627368, -0.216486, -0.365739, --0.797898, -0.786242, --0.267059, --0.523987, -1.167771, --1.300474, -0.833986, --0.022791, --0.671219, -0.841500, --0.371551, --0.500230, -1.323382, --1.695472, -1.479082, --0.849609, -0.159529, -0.282393, --0.375354, -0.242780, --0.109400, -0.133526, --0.306175, -0.475716, --0.469749, -0.224453, -0.167614, --0.519356, -0.670859, --0.583281, -0.344667, --0.097404, --0.049561, -0.062439, -0.034039, --0.197537, -0.393046, --0.591423, -0.759951, --0.862592, -0.869155, --0.761292, -0.533364, --0.198341, --0.197167, -0.565475, --0.801701, -0.839479, --0.701367, -0.496638, --0.354822, -0.338739, --0.406700, -0.457159, --0.419233, -0.309516, --0.203280, -0.146982, --0.097757, --0.043433, -0.324025, --0.654126, -0.832969, --0.685743, -0.208480, -0.400572, --0.859776, -0.990532, --0.833360, -0.609184, --0.559055, -0.781416, --1.178486, -1.536667, --1.670991, -1.530831, --1.204217, -0.834397, --0.516262, -0.244066, -0.060566, --0.466005, -0.952960, --1.396075, -1.619676, --1.494556, -1.017049, --0.323604, --0.365426, -0.839664, --0.981263, -0.800050, --0.412726, --0.015890, -0.339013, --0.472443, -0.405484, --0.185703, --0.103907, -0.364386, --0.502158, -0.462116, --0.264784, -0.016201, -0.138476, --0.106233, --0.078103, -0.258673, --0.260218, -0.016473, -0.374570, --0.717560, -0.859588, --0.792015, -0.634828, --0.522914, -0.493739, --0.469445, -0.341147, --0.076532, --0.241746, -0.473826, --0.520965, -0.382150, --0.132695, --0.139275, -0.373509, --0.526476, -0.540943, --0.352983, --0.047628, -0.554185, --0.952209, -1.026915, --0.707623, -0.141060, -0.374597, --0.562045, -0.329160, -0.186959, --0.722856, -1.061744, --1.154666, -1.111652, --1.082783, -1.128253, --1.177881, -1.104076, --0.839863, -0.440421, --0.040545, --0.246914, -0.399225, --0.464855, -0.490371, --0.473513, -0.388137, --0.246236, -0.121204, --0.095345, -0.176471, --0.267651, -0.231826, --0.006787, --0.325199, -0.575782, --0.573058, -0.277762, -0.190459, --0.629624, -0.873739, --0.872175, -0.689591, --0.447869, -0.261978, --0.205795, -0.305853, --0.539486, -0.827500, --1.038127, -1.028211, --0.721205, -0.179314, -0.391562, --0.734364, -0.692294, --0.322511, --0.119060, -0.334143, --0.185340, --0.199717, -0.514572, --0.504897, -0.178109, -0.177128, --0.197116, --0.266803, -0.996737, --1.527308, -1.464397, --0.774132, --0.175457, -0.857353, --0.939548, -0.495893, -0.071329, --0.329708, -0.112424, -0.397431, --0.836704, -0.941324, --0.721014, -0.411251, --0.261128, -0.334716, --0.477787, -0.461213, --0.175939, --0.273451, -0.639778, --0.704690, -0.422124, -0.059405, --0.494704, -0.682808, --0.562346, -0.218925, -0.178942, --0.465728, -0.542672, --0.402095, -0.118544, -0.179085, --0.347085, -0.276774, -0.053453, --0.547786, -1.015958, --1.259534, -1.185636, --0.874657, -0.541712, --0.401168, -0.520622, --0.771244, -0.915880, --0.774937, -0.352297, -0.164155, --0.519877, -0.543572, --0.234939, --0.251758, -0.703501, --0.959863, -0.978843, --0.826693, -0.605867, --0.372654, -0.105799, -0.245792, --0.671208, -1.043403, --1.167581, -0.917472, --0.359939, --0.243359, -0.584541, --0.513433, -0.144290, -0.224359, --0.324561, -0.107652, -0.237106, --0.445747, -0.393586, --0.190225, -0.081977, --0.241004, -0.609586, --0.924765, -0.909642, --0.489217, --0.133131, -0.601322, --0.648058, -0.279482, -0.230166, --0.528670, -0.422666, -0.005583, --0.473710, -0.697990, --0.567800, -0.185072, -0.231310, --0.485378, -0.490579, --0.269720, --0.094915, -0.505622, --0.863522, -1.071633, --1.054576, -0.796104, --0.364291, --0.107546, -0.482854, --0.687028, -0.728588, --0.664266, -0.542666, --0.377453, -0.170545, -0.044686, --0.191832, -0.194319, --0.040554, --0.188445, -0.362580, --0.389729, -0.278000, --0.122062, -0.024401, --0.017018, -0.047612, --0.037971, --0.040255, -0.140608, --0.190272, -0.168069, --0.142110, -0.230593, --0.512811, -0.956757, --1.415717, -1.696155, --1.654938, -1.271387, --0.660555, -0.024290, -0.437464, --0.615553, -0.537933, --0.345800, -0.207985, --0.222077, -0.364458, --0.521275, -0.575138, --0.482946, -0.290716, --0.085185, --0.068782, -0.153566, --0.177763, -0.143625, --0.042750, --0.116908, -0.286797, --0.390030, -0.368210, --0.225187, -0.031235, -0.115906, --0.141962, -0.024641, -0.211228, --0.516217, -0.833884, --1.104743, -1.264261, --1.248974, -1.018247, --0.585230, -0.038139, -0.472124, --0.787950, -0.824585, --0.625735, -0.348241, --0.171523, -0.183575, --0.323241, -0.425468, --0.344393, -0.070124, -0.243822, --0.365346, -0.129775, -0.444623, --1.144598, -1.665772, --1.776225, -1.445718, --0.861674, -0.318076, --0.042919, -0.072253, --0.249231, -0.343332, --0.204724, --0.147357, -0.549178, --0.799907, -0.776138, --0.488821, -0.062471, -0.339079, --0.594639, -0.672939, --0.625693, -0.538520, --0.476255, -0.457386, --0.466458, -0.481700, --0.489238, -0.477152, --0.428052, -0.329986, --0.199905, -0.092256, --0.072658, -0.169470, --0.343371, -0.507115, --0.588944, -0.593495, --0.608025, -0.738930, --1.017541, -1.344683, --1.525455, -1.384830, --0.894072, -0.220841, -0.341073, --0.529143, -0.265144, -0.289693, --0.813689, -0.995483, --0.701376, -0.046348, -0.669899, --1.125565, -1.147346, --0.794951, -0.315235, -0.003064, -0.011877, --0.330853, -0.753403, --1.024670, -0.970810, --0.583996, -0.021740, -0.473072, --0.691898, -0.564659, --0.196984, --0.183532, -0.350762, --0.209180, --0.147414, -0.489491, --0.592672, -0.381431, -0.018432, --0.359111, -0.436159, --0.230676, --0.072906, -0.213436, --0.041630, --0.362082, -0.729175, --0.781452, -0.423990, -0.181577, --0.713477, -0.886788, --0.617541, -0.053040, -0.533888, --0.901395, -0.944558, --0.703844, -0.302458, -0.124876, --0.468393, -0.646097, --0.604949, -0.341690, -0.069166, --0.477662, -0.714207, --0.678507, -0.403305, --0.040869, --0.227141, -0.297969, --0.200769, -0.063136, --0.022750, -0.147177, --0.405269, -0.689809, --0.865695, -0.822958, --0.526002, -0.047633, -0.437145, --0.717345, -0.654424, --0.271568, --0.242968, -0.634774, --0.728510, -0.524983, --0.187351, --0.069210, -0.104755, -0.083881, --0.392957, -0.691272, --0.883026, -0.920685, --0.787851, -0.494639, --0.100670, --0.264499, -0.428675, --0.261836, --0.228093, -0.860238, --1.347202, -1.436881, --1.050645, -0.337261, -0.391568, --0.811433, -0.743994, --0.241976, --0.443160, -0.992824, --1.179869, -0.967672, --0.500045, --0.000938, -0.357427, --0.504882, -0.480759, --0.364085, -0.222026, --0.096667, -0.021325, --0.031915, -0.152289, --0.365197, -0.600678, --0.761292, -0.772713, --0.624256, -0.370666, --0.095221, --0.136621, -0.300175, --0.400408, -0.444644, --0.427304, -0.338849, --0.186561, -0.003290, -0.167814, --0.303269, -0.419981, --0.567070, -0.787914, --1.073425, -1.339205, --1.451640, -1.299002, --0.868041, -0.273729, -0.285932, --0.626828, -0.667816, --0.459603, -0.144852, -0.116952, --0.217497, -0.136504, -0.056960, --0.237531, -0.286049, --0.160546, --0.065915, -0.237584, --0.213765, --0.026333, -0.347803, --0.530374, -0.407394, -0.015771, --0.545536, -0.901824, --0.876940, -0.454501, -0.181588, --0.748265, -1.009577, --0.884687, -0.466712, -0.042470, --0.435676, -0.588499, --0.496743, -0.256381, --0.003504, --0.153161, -0.174184, --0.088317, --0.043540, -0.171198, --0.277624, -0.371760, --0.464813, -0.550698, --0.604159, -0.596422, --0.518497, -0.399502, --0.308058, -0.329232, --0.520631, -0.868681, --1.274755, -1.589907, --1.685330, -1.517643, --1.148354, -0.708940, --0.339642, -0.140412, --0.150887, -0.348175, --0.647069, -0.907681, --0.972455, -0.738492, --0.233434, --0.363546, -0.792504, --0.850346, -0.514158, -0.034118, --0.506581, -0.674164, --0.493661, -0.118131, -0.211559, --0.319763, -0.195106, -0.022293, --0.147491, -0.074116, -0.166854, --0.443270, -0.615383, --0.613923, -0.453145, --0.189465, --0.120344, -0.419438, --0.622474, -0.613884, --0.310130, --0.244411, -0.833744, --1.145984, -0.947503, --0.244837, --0.686614, -1.443057, --1.718249, -1.469675, --0.921111, -0.409391, --0.181707, -0.270348, --0.510313, -0.671786, --0.614585, -0.369927, --0.104653, --0.003397, --0.103371, -0.313107, --0.415978, -0.253914, -0.154700, --0.611533, -0.869889, --0.812064, -0.539051, --0.297202, -0.289485, --0.513079, -0.750187, --0.723047, -0.298524, -0.408885, --1.105349, -1.498356, --1.456427, -1.048830, --0.467507, --0.087020, -0.474899, --0.623663, -0.512536, --0.174930, --0.284970, -0.701552, --0.909675, -0.833864, --0.540428, -0.202265, -0.011962, --0.051829, -0.019440, --0.092975, -0.387023, --0.846024, -1.249278, --1.333498, -0.958298, --0.208818, --0.631898, -1.225736, --1.351246, -1.004960, --0.381619, --0.241534, -0.641135, --0.730057, -0.555142, --0.232127, --0.131212, -0.477683, --0.792688, -1.064000, --1.247946, -1.274177, --1.091242, -0.720144, --0.271043, --0.099593, -0.271242, --0.228556, -0.069400, -0.057919, --0.051084, --0.077567, -0.206671, --0.186393, --0.054612, -0.445625, --0.799684, -0.917251, --0.704851, -0.235053, -0.287785, --0.632956, -0.657965, --0.371173, --0.083259, -0.502275, --0.719381, -0.672090, --0.413007, -0.065488, -0.247724, --0.462485, -0.587924, --0.674361, -0.760637, --0.839172, -0.863519, --0.791186, -0.625845, --0.421987, -0.246190, --0.127852, -0.043973, -0.047771, --0.160184, -0.262830, --0.320123, -0.343097, --0.393365, -0.519868, --0.679472, -0.724454, --0.492144, --0.059968, -0.784760, --1.412402, -1.716005, --1.653293, -1.376059, --1.104118, -0.967213, --0.938028, -0.897154, --0.761358, -0.561100, --0.406914, -0.383410, --0.468369, -0.546856, --0.505499, -0.325583, --0.097543, --0.051772, -0.057545, -0.037011, --0.118250, -0.087491, -0.072196, --0.289986, -0.454468, --0.473391, -0.312609, --0.004858, --0.364365, -0.687096, --0.875072, -0.899598, --0.804914, -0.678432, --0.591489, -0.552332, --0.509237, -0.403305, --0.227806, -0.042703, -0.070426, --0.076462, -0.018710, -0.014576, -0.037694, --0.160498, -0.278081, --0.318636, -0.269773, --0.177933, -0.097859, --0.043408, --0.014839, -0.107782, --0.226542, -0.323646, --0.355731, -0.327872, --0.298139, -0.336358, --0.467653, -0.642070, --0.751719, -0.686810, --0.399764, --0.057020, -0.542132, --0.882672, -0.951506, --0.724874, -0.291521, -0.189080, --0.555109, -0.704225, --0.624465, -0.387133, --0.108524, --0.102215, -0.186338, --0.150088, -0.045363, -0.068572, --0.156785, -0.216140, --0.260785, -0.301352, --0.332698, -0.335106, --0.286016, -0.176883, --0.027628, --0.112483, -0.185208, --0.158074, -0.050444, -0.072040, --0.134826, -0.097371, -0.029880, --0.203112, -0.376055, --0.516009, -0.598857, --0.601992, -0.515067, --0.362297, -0.206334, --0.112446, -0.090198, --0.063383, --0.091228, -0.447803, --0.944388, -1.379248, --1.510761, -1.203761, --0.524586, --0.283222, -0.929018, --1.226037, -1.167935, --0.891515, -0.564811, --0.284325, -0.048264, -0.188608, --0.432159, -0.608209, --0.598466, -0.328761, -0.153767, --0.671959, -0.990925, --0.934237, -0.482341, -0.199422, --0.822118, -1.101727, --0.897547, -0.289749, -0.452390, --1.003175, -1.143111, --0.858247, -0.322153, -0.216332, --0.559398, -0.625481, --0.436132, -0.065650, -0.392808, --0.829008, -1.114800, --1.138429, -0.872073, --0.421483, --0.001579, -0.192626, --0.088447, --0.177641, -0.354068, --0.241456, --0.160939, -0.641003, --0.908420, -0.788674, --0.342605, --0.169961, -0.456256, --0.373152, -0.005340, -0.406715, --0.633078, -0.597909, --0.404283, -0.231292, --0.185759, -0.222326, --0.192048, --0.019535, -0.374451, --0.681588, -0.721112, --0.405335, --0.144361, -0.665154, --0.919439, -0.842185, --0.564498, -0.300521, --0.184723, -0.180725, --0.126953, --0.120711, -0.561347, --1.033251, -1.318038, --1.281700, -0.947548, --0.457645, --0.031161, -0.426967, --0.703379, -0.844921, --0.811519, -0.572178, --0.181415, --0.185656, -0.303480, --0.045244, --0.498874, -1.041489, --1.264503, -1.022697, --0.436060, --0.198535, -0.609267, --0.713724, -0.630208, --0.543930, -0.547494, --0.584634, -0.532762, --0.343532, -0.114608, --0.027332, -0.197449, --0.559693, -0.883628, --0.918533, -0.567374, -0.033926, --0.590282, -0.827226, --0.658377, -0.231379, -0.175052, --0.331526, -0.195783, -0.081079, --0.277570, -0.263915, --0.088608, --0.069210, -0.042752, -0.191603, --0.493205, -0.660585, --0.580902, -0.313241, --0.045258, --0.042737, --0.094105, -0.332617, --0.460441, -0.307996, -0.148970, --0.767924, -1.300855, --1.502976, -1.242930, --0.571421, --0.283353, -1.002430, --1.317105, -1.138703, --0.603593, --0.000327, -0.388701, --0.425793, -0.172932, -0.180717, --0.447726, -0.542341, --0.495864, -0.400995, --0.342790, -0.363635, --0.466193, -0.626807, --0.798509, -0.910453, --0.885754, -0.684101, --0.345019, --0.006217, -0.209750, --0.159686, --0.121833, -0.476651, --0.684515, -0.583868, --0.170784, --0.385664, -0.826031, --0.936901, -0.663387, --0.134063, --0.413537, -0.760818, --0.815301, -0.640923, --0.404083, -0.276118, --0.350271, -0.610841, --0.954984, -1.242867, --1.351741, -1.222341, --0.889303, -0.479578, --0.162082, -0.057655, --0.158221, -0.318743, --0.347144, -0.142333, -0.219059, --0.521013, -0.554570, --0.268868, --0.186821, -0.562480, --0.675115, -0.523504, --0.273846, -0.137577, --0.234195, -0.527871, --0.864816, -1.072209, --1.054785, -0.841491, --0.567741, -0.406449, --0.478958, -0.787407, --1.204655, -1.531347, --1.592360, -1.320938, --0.788644, -0.172448, -0.317560, --0.518345, -0.376764, -0.022347, --0.479703, -0.761945, --0.715289, -0.355299, -0.128403, --0.470237, -0.478815, --0.147967, --0.341904, -0.730143, --0.819665, -0.572193, --0.110743, --0.355302, -0.632238, --0.624062, -0.368571, --0.016514, --0.242672, -0.282900, --0.117704, --0.104891, -0.198515, --0.066584, --0.232162, -0.533164, --0.691618, -0.681869, --0.591301, -0.522056, --0.493342, -0.434424, --0.273657, -0.040860, -0.117107, --0.036785, --0.316424, -0.776060, --1.047748, -0.893425, --0.304646, --0.459421, -1.006677, --1.040905, -0.541462, -0.218457, --0.825587, -0.958206, --0.559702, --0.141241, -0.767173, --1.002871, -0.762851, --0.226068, --0.276549, -0.455431, --0.224113, --0.264772, -0.727833, --0.931012, -0.823363, --0.540630, -0.287659, --0.192868, -0.240042, --0.315724, -0.320341, --0.249956, -0.190322, --0.240893, -0.436594, --0.724826, -1.002916, --1.176921, -1.201153, --1.084986, -0.878702, --0.651107, -0.461943, --0.334531, -0.246042, --0.152337, -0.037497, -0.053850, --0.041453, --0.115392, -0.352658, --0.512834, -0.442305, --0.109517, --0.347353, -0.688068, --0.714105, -0.394176, -0.109212, --0.527448, -0.633218, --0.362571, --0.152211, -0.651864, --0.882019, -0.720227, --0.235315, --0.349988, -0.774132, --0.868646, -0.635415, --0.226630, --0.157408, -0.387437, --0.465850, -0.495193, --0.583522, -0.756112, --0.931650, -0.971388, --0.762016, -0.281209, -0.382743, --1.056365, -1.536160, --1.659611, -1.373343, --0.769384, -0.059029, -0.517636, --0.803543, -0.789905, --0.593978, -0.369665, --0.218360, -0.158513, --0.158363, -0.186342, --0.230339, -0.277485, --0.288585, -0.204991, -0.008333, --0.319789, -0.629851, --0.821429, -0.828579, --0.673637, -0.446459, --0.243717, -0.114041, --0.046429, -0.001990, -0.044042, --0.085463, -0.102358, --0.090424, -0.073972, --0.093107, -0.180564, --0.346894, -0.577803, --0.833586, -1.046845, --1.131696, -1.019499, --0.709942, -0.297810, -0.061402, --0.239569, -0.220984, --0.117819, -0.095934, --0.258152, -0.567577, --0.868106, -0.991572, --0.876955, -0.615637, --0.385387, -0.317852, --0.397410, -0.471653, --0.371337, -0.049965, -0.367373, --0.669115, -0.714386, --0.541095, -0.340662, --0.317602, -0.540234, --0.893091, -1.161986, --1.184167, -0.952182, --0.602231, -0.305367, --0.147290, -0.082155, -0.014446, --0.238789, -0.576145, --0.896877, -1.030211, --0.865957, -0.421435, -0.163703, --0.696059, -1.018069, --1.069342, -0.893834, --0.599977, -0.304565, --0.091287, --0.002754, --0.020056, -0.129237, --0.272516, -0.381369, --0.386543, -0.246428, -0.024530, --0.349517, -0.616766, --0.729693, -0.651042, --0.414550, -0.100897, -0.201769, --0.425399, -0.526422, --0.478145, -0.271727, -0.066485, --0.457269, -0.777458, --0.907311, -0.795755, --0.500078, -0.166508, -0.043741, --0.038955, --0.159995, -0.441935, --0.672868, -0.762636, --0.692676, -0.499136, --0.236824, --0.043616, -0.292119, --0.445252, -0.432007, --0.212991, --0.168789, -0.570739, --0.799085, -0.707930, --0.291204, --0.294932, -0.799779, --0.999914, -0.806875, --0.304056, --0.301182, -0.778916, --0.976205, -0.867561, --0.541423, -0.143890, -0.180838, --0.327783, -0.248206, -0.036681, --0.422455, -0.732882, --0.782012, -0.475131, -0.111006, --0.737901, -1.121044, --1.089421, -0.685386, --0.137235, --0.276608, -0.381113, --0.180974, --0.174680, -0.497670, --0.659193, -0.626560, --0.437920, -0.156676, -0.153860, --0.427197, -0.587033, --0.563008, -0.327732, -0.074529, --0.535730, -0.927650, --1.151033, -1.160046, --0.956847, -0.576438, --0.081334, --0.435473, -0.858229, --1.079776, -1.046750, --0.790542, -0.418973, --0.066334, --0.173716, -0.292697, --0.359239, -0.459645, --0.626417, -0.808530, --0.911156, -0.877110, --0.742697, -0.615368, --0.584932, -0.641117, --0.671658, -0.550394, --0.247925, --0.125111, -0.380892, --0.378859, -0.121728, -0.244343, --0.521883, -0.581072, --0.427483, -0.180897, -0.012504, --0.071610, -0.016397, -0.067798, --0.103741, -0.074884, --0.019731, --0.021690, -0.059401, --0.154817, -0.364568, --0.668826, -0.945461, --1.023776, -0.794289, --0.303084, --0.242578, -0.577817, --0.538302, -0.169724, -0.291824, --0.565738, -0.505312, --0.187525, --0.147356, -0.261471, --0.072371, --0.309286, -0.671613, --0.846131, -0.802151, --0.638041, -0.495109, --0.463746, -0.539477, --0.640005, -0.657903, --0.516041, -0.204855, -0.208145, --0.600955, -0.847344, --0.874890, -0.699316, --0.412235, -0.128638, -0.071273, --0.168540, -0.189820, --0.172824, -0.145823, --0.133082, -0.166713, --0.277633, -0.463138, --0.661476, -0.768833, --0.700249, -0.453162, --0.121453, --0.156857, -0.283124, --0.253194, -0.146913, --0.063328, -0.049686, --0.073242, -0.054882, -0.058746, --0.235813, -0.361057, --0.308800, -0.042747, -0.333148, --0.623368, -0.666606, --0.449091, -0.115901, -0.132603, --0.179543, -0.057370, -0.103814, --0.190317, -0.179917, --0.122032, -0.058564, -0.029381, --0.196829, -0.460393, --0.748533, -0.926774, --0.879507, -0.583364, --0.121073, --0.364291, -0.731780, --0.882666, -0.772350, --0.417272, --0.089076, -0.569493, --0.803755, -0.629657, --0.058013, --0.684614, -1.243967, --1.326252, -0.871209, --0.088936, --0.670382, -1.126203, --1.213802, -1.076989, --0.931325, -0.908703, --0.989730, -1.051614, --0.975302, -0.728272, --0.376186, -0.035370, -0.188354, --0.237118, -0.107759, -0.157148, --0.480279, -0.763253, --0.912488, -0.876782, --0.676620, -0.398471, --0.146812, --0.017360, -0.103377, --0.157548, -0.196325, --0.169076, --0.004961, -0.346047, --0.745254, -0.986952, --0.863454, -0.309027, -0.538094, --1.388547, -1.937430, --2.004359, -1.605376, --0.928449, -0.233582, -0.269531, --0.505893, -0.541006, --0.509016, -0.510811, --0.550505, -0.553631, --0.448850, -0.244209, --0.032813, --0.077441, -0.049715, -0.054229, --0.128008, -0.109591, --0.030890, --0.009717, --0.074338, -0.291880, --0.566709, -0.785783, --0.862357, -0.772427, --0.552174, -0.272189, --0.012351, --0.152882, -0.166641, --0.009700, --0.275405, -0.577722, --0.750187, -0.678495, --0.352065, --0.112448, -0.522545, --0.715935, -0.657256, --0.459207, -0.307614, --0.336090, -0.534485, --0.754825, -0.811182, --0.604120, -0.183684, -0.288523, --0.645677, -0.812008, --0.825319, -0.781190, --0.752661, -0.749746, --0.742670, -0.716114, --0.698661, -0.738769, --0.849636, -0.974452, --1.005548, -0.846405, --0.473126, --0.043192, -0.561961, --0.928544, -1.034843, --0.865063, -0.511058, --0.144688, --0.053093, --0.018532, -0.319614, --0.679908, -0.885044, --0.793949, -0.418052, -0.086379, --0.507225, -0.691248, --0.616397, -0.385831, --0.157884, -0.060293, --0.135478, -0.337589, --0.571910, -0.751293, --0.841339, -0.872413, --0.911815, -1.010331, --1.157179, -1.277778, --1.281926, -1.131064, --0.874008, -0.620358, --0.468163, -0.438305, --0.464193, -0.442942, --0.309322, -0.079634, -0.161811, --0.318675, -0.339344, --0.237853, -0.073602, -0.087268, --0.198055, -0.233152, --0.178309, -0.030545, -0.186908, --0.412527, -0.560578, --0.563636, -0.416717, --0.187175, --0.023887, -0.145783, --0.185125, -0.221884, --0.353910, -0.622271, --0.964140, -1.228105, --1.252721, -0.968164, --0.457559, --0.070217, -0.390441, --0.389711, -0.125657, -0.221744, --0.469695, -0.533954, --0.443416, -0.274562, --0.076898, --0.142480, -0.374046, --0.561800, -0.618987, --0.497729, -0.244213, -0.021239, --0.189774, -0.239289, --0.229883, -0.224717, --0.213704, -0.117035, -0.128309, --0.476002, -0.761566, --0.801305, -0.532178, --0.086017, --0.267903, -0.286147, -0.082699, --0.641492, -1.044851, --1.003455, -0.466870, -0.334573, --1.022346, -1.294772, --1.097149, -0.626676, --0.178273, --0.049790, -0.050678, -0.049248, --0.132359, -0.187433, --0.285984, -0.472205, --0.676867, -0.741409, --0.539805, -0.098388, -0.389479, --0.675163, -0.615288, --0.264950, --0.162711, -0.440126, --0.469153, -0.327640, --0.194135, -0.212770, --0.395052, -0.620709, --0.725655, -0.609253, --0.292138, --0.101732, -0.415367, --0.535289, -0.436686, --0.184070, --0.104038, -0.306046, --0.341115, -0.189594, -0.111212, --0.484755, -0.833059, --1.052073, -1.053113, --0.796122, -0.322749, -0.238411, --0.713748, -0.961416, --0.939825, -0.722677, --0.449365, -0.244499, --0.158474, -0.162171, --0.186795, -0.174180, --0.106747, -0.010824, -0.055684, --0.022769, --0.163478, -0.503964, --0.917505, -1.248042, --1.324189, -1.050997, --0.481104, --0.186996, -0.694342, --0.846245, -0.603780, --0.089150, --0.491849, -0.956069, --1.212258, -1.261743, --1.149719, -0.916265, --0.585799, -0.194889, -0.176064, --0.407266, -0.392388, --0.112571, --0.319921, -0.690926, --0.787756, -0.526577, --0.024977, --0.439053, -0.575296, --0.255854, --0.392808, -1.047241, --1.366649, -1.188021, --0.617932, --0.032382, -0.425525, --0.380814, --0.044194, -0.613434, --1.066436, -1.266011, --1.248790, -1.155456, --1.100148, -1.078378, --0.981084, -0.701251, --0.249697, --0.211525, -0.450391, --0.310726, --0.173618, -0.774621, --1.184465, -1.182817, --0.757409, -0.107565, -0.468327, --0.729777, -0.602904, --0.187593, --0.321134, -0.733434, --0.928389, -0.864855, --0.564286, -0.095518, -0.431262, --0.878127, -1.116194, --1.079579, -0.807400, --0.441807, -0.170571, --0.135199, -0.352545, --0.698649, -0.972128, --1.005199, -0.756926, --0.331911, --0.084020, -0.326799, --0.332397, -0.151740, -0.092255, --0.271631, -0.308628, --0.200016, -0.007765, -0.176175, --0.275030, -0.261064, --0.160150, -0.026165, -0.096044, --0.191543, -0.266142, --0.318827, -0.325136, --0.252978, -0.103955, -0.055667, --0.112594, --0.020817, -0.320588, --0.620334, -0.680960, --0.338852, --0.357427, -1.125049, --1.579267, -1.455124, --0.780516, --0.120544, -0.809698, --0.992538, -0.688086, --0.199079, --0.096062, --0.008310, -0.419224, --0.818586, -0.879283, --0.476950, --0.237130, -0.936287, --1.312694, -1.237556, --0.799666, -0.224342, -0.255487, --0.495783, -0.469081, --0.238107, --0.089488, -0.400885, --0.607709, -0.668188, --0.598264, -0.462542, --0.342706, -0.295499, --0.323172, -0.375208, --0.383777, -0.313247, --0.192481, -0.105034, --0.138047, -0.320070, --0.589918, -0.822189, --0.897035, -0.770812, --0.500349, -0.204316, -0.012294, --0.118212, -0.157968, --0.195626, -0.245713, --0.250874, -0.132467, -0.121415, --0.405946, -0.542606, --0.397213, --0.013092, -0.511970, --0.869036, -0.942123, --0.750327, -0.431554, --0.133534, --0.065843, -0.154278, --0.129484, --0.029388, -0.323169, --0.669503, -0.899267, --0.849660, -0.495747, --0.008379, --0.329139, -0.302446, -0.082975, --0.596112, -0.929701, --0.899848, -0.556269, --0.131066, --0.128935, -0.122907, -0.059648, --0.229601, -0.246285, --0.110895, --0.058004, -0.137405, --0.106322, -0.059697, --0.118566, -0.311024, --0.525689, -0.584750, --0.386606, -0.005559, -0.338188, --0.425963, -0.198784, -0.194084, --0.494215, -0.506775, --0.220121, --0.207179, -0.565708, --0.720370, -0.653864, --0.423387, -0.096899, -0.265110, --0.582750, -0.743815, --0.653948, -0.325020, -0.083057, --0.332197, -0.258806, -0.102625, --0.528455, -0.749761, --0.626194, -0.223193, -0.253749, --0.604043, -0.744444, --0.721726, -0.642705, --0.591620, -0.590127, --0.605607, -0.579016, --0.449091, -0.173278, -0.246312, --0.739177, -1.170299, --1.388579, -1.302420, --0.936106, -0.425903, -0.044122, --0.324537, -0.350733, --0.140851, --0.237716, -0.697322, --1.137457, -1.445405, --1.515193, -1.291872, --0.815719, -0.228899, -0.273940, --0.530419, -0.484129, --0.204941, --0.153012, -0.429298, --0.528577, -0.452593, --0.284014, -0.134949, --0.086035, -0.144333, --0.241044, -0.273015, --0.167869, --0.066061, -0.340843, --0.545834, -0.623890, --0.610725, -0.603488, --0.679744, -0.830350, --0.963296, -0.978342, --0.851204, -0.656329, --0.508060, -0.469281, --0.503249, -0.505434, --0.387097, -0.145343, -0.127576, --0.294809, -0.250023, -0.022323, --0.425459, -0.777819, --0.888135, -0.655939, --0.147605, --0.409344, -0.735347, --0.662925, -0.253151, -0.224664, --0.452608, -0.265497, -0.241315, --0.772502, -1.019881, --0.848709, -0.363361, -0.178228, --0.531188, -0.599497, --0.464232, -0.303620, --0.268304, -0.391643, --0.584881, -0.710031, --0.675335, -0.487161, --0.227833, --0.014929, -0.207414, --0.374791, -0.557708, --0.763545, -0.949556, --1.041689, -0.969549, --0.701707, -0.277352, -0.176555, --0.469820, -0.433768, --0.036955, --0.547587, -0.997137, --1.011285, -0.501717, -0.330006, --1.090023, -1.410423, --1.154738, -0.487748, -0.224382, --0.617315, -0.515743, --0.004735, --0.642959, -1.129776, --1.286290, -1.129347, --0.805993, -0.477897, --0.231783, -0.070397, -0.029214, --0.053920, --0.050288, -0.318246, --0.691454, -0.999834, --1.033165, -0.667741, -0.035436, --0.836647, -1.435677, --1.630486, -1.413517, --0.947148, -0.448188, --0.071053, --0.134561, -0.188140, --0.123260, --0.028726, -0.213117, --0.333771, -0.286984, --0.036514, --0.333547, -0.646875, --0.738757, -0.563514, --0.222689, --0.110339, -0.312177, --0.385291, -0.433864, --0.564852, -0.794748, --1.032357, -1.145081, --1.053590, -0.784415, --0.447580, -0.165446, --0.009906, --0.010542, --0.079658, -0.255184, --0.489140, -0.727261, --0.878732, -0.854733, --0.636256, -0.312976, --0.047238, --0.024068, --0.118948, -0.363534, --0.539310, -0.531945, --0.357778, -0.151623, --0.078448, -0.226089, --0.543316, -0.858277, --0.967800, -0.750601, --0.244382, --0.357939, -0.799403, --0.896266, -0.646619, --0.238936, --0.058097, -0.066814, -0.177899, --0.447815, -0.480875, --0.177667, --0.304735, -0.636145, --0.525558, --0.077179, -0.925719, --1.606574, -1.774917, --1.352981, -0.573824, -0.151907, --0.465543, -0.253671, -0.299996, --0.824305, -0.962680, --0.555688, --0.284811, -1.234710, --1.909750, -2.037356, --1.576126, -0.735726, -0.113562, --0.609485, -0.571946, --0.092551, --0.518438, -0.907681, --0.874499, -0.463284, -0.103863, --0.595277, -0.906963, --1.069315, -1.138071, --1.083296, -0.788999, --0.173756, --0.671222, -1.457682, --1.836046, -1.610186, --0.880210, -0.004883, -0.601014, --0.705206, -0.377703, -0.082627, --0.358994, -0.318719, --0.070441, --0.153090, -0.189920, --0.069775, --0.029727, --0.048924, -0.292460, --0.512354, -0.494963, --0.184890, --0.252532, -0.545977, --0.521162, -0.230060, -0.093254, --0.208526, -0.035409, -0.310791, --0.619759, -0.728623, --0.602028, -0.318156, --0.003108, --0.227297, -0.296269, --0.177541, --0.096876, -0.439402, --0.732376, -0.871981, --0.808443, -0.563225, --0.219941, --0.103676, -0.296903, --0.304112, -0.161276, -0.008291, --0.053658, --0.112801, -0.451720, --0.809862, -1.010307, --0.962936, -0.721998, --0.453276, -0.333663, --0.449309, -0.753942, --1.106445, -1.354358, --1.406516, -1.254455, --0.944445, -0.536320, --0.085701, --0.344647, -0.671306, --0.806253, -0.706973, --0.427617, -0.124499, -0.007570, -0.156417, --0.582804, -1.074656, --1.370124, -1.293348, --0.862840, -0.280675, -0.195038, --0.407335, -0.376591, --0.245832, -0.145903, --0.089855, --0.023564, -0.306953, --0.769229, -1.278952, --1.632200, -1.673241, --1.383826, -0.887265, --0.375107, -0.009996, -0.139334, --0.106281, --0.010959, -0.105762, --0.113848, -0.041016, -0.046130, --0.068707, -0.000456, -0.098425, --0.117616, --0.008775, -0.221176, --0.348092, -0.228974, -0.137668, --0.548037, -0.712013, --0.467290, --0.074795, -0.580390, --0.721646, -0.416488, -0.107264, --0.479095, -0.459457, --0.110372, --0.264229, -0.355349, --0.075584, --0.393902, -0.757984, --0.830186, -0.648726, --0.408682, -0.283199, --0.288134, -0.296137, --0.175239, --0.075602, -0.311584, --0.356840, -0.146945, -0.220344, --0.561148, -0.734906, --0.718204, -0.574584, --0.367912, -0.109803, -0.211818, --0.559520, -0.810875, --0.811030, -0.484168, -0.082659, --0.655664, -0.969815, --0.870723, -0.394271, -0.257575, --0.817769, -1.068000, --0.913830, -0.406131, -0.280805, --0.903285, -1.229369, --1.132703, -0.661846, --0.037720, --0.441318, -0.549804, --0.256787, --0.260439, -0.725634, --0.928663, -0.839944, --0.604031, -0.426815, --0.441184, -0.640315, --0.908936, -1.113217, --1.178927, -1.113101, --0.972244, -0.814750, --0.672382, -0.551461, --0.448903, -0.363644, --0.294809, -0.233045, --0.156614, -0.037586, -0.145532, --0.394718, -0.683547, --0.955264, -1.132235, --1.139180, -0.934398, --0.533936, -0.014415, -0.506569, --0.901160, -1.060653, --0.921492, -0.490254, -0.138949, --0.793499, -1.273003, --1.430300, -1.241780, --0.821405, -0.363656, --0.046581, --0.046784, --0.055412, -0.259256, --0.469469, -0.624802, --0.688909, -0.623216, --0.383297, --0.045655, -0.601924, --1.136876, -1.467359, --1.467929, -1.145379, --0.644547, -0.178803, -0.074431, --0.055173, --0.159949, -0.402769, --0.496072, -0.336566, -0.053120, --0.523674, -0.855675, --0.857803, -0.466980, -0.201915, --0.893008, -1.323894, --1.320798, -0.900134, --0.251743, --0.362178, -0.730578, --0.772204, -0.539152, --0.163254, --0.210643, -0.470726, --0.557845, -0.470372, --0.261024, -0.017749, -0.177427, --0.295344, -0.375038, --0.482529, -0.634652, --0.752461, -0.700330, --0.399431, --0.070241, -0.476556, --0.571231, -0.267155, -0.279308, --0.755379, -0.892096, --0.631499, -0.139073, -0.336781, --0.639397, -0.777133, --0.853165, -0.929179, --0.946791, -0.772219, --0.323768, --0.324895, -0.951452, --1.303764, -1.252536, --0.876946, -0.427420, --0.185916, -0.306225, --0.725914, -1.200029, --1.436893, -1.260586, --0.710043, -0.019792, -0.507303, --0.663700, -0.444242, --0.035468, --0.303740, -0.395580, --0.237275, --0.018212, -0.176164, --0.133004, --0.056026, -0.216142, --0.173800, --0.117718, -0.531698, --0.837273, -0.846203, --0.541724, -0.099662, -0.218153, --0.229181, --0.056664, -0.450060, --0.708225, -0.686473, --0.417394, -0.073469, -0.153670, --0.174155, -0.042832, -0.098255, --0.131120, -0.042820, -0.083685, --0.156037, -0.159411, --0.166013, -0.258545, --0.438290, -0.606129, --0.640029, -0.502680, --0.281759, -0.123631, --0.116072, -0.221514, --0.317101, -0.303799, --0.187611, -0.063426, --0.018188, -0.040581, --0.018051, --0.171942, -0.549983, --0.994126, -1.308184, --1.352003, -1.138572, --0.825953, -0.608630, --0.585364, -0.698428, --0.787550, -0.718657, --0.491643, -0.244996, --0.151990, -0.284663, --0.549047, -0.742676, --0.694840, -0.388972, -0.019932, --0.304708, -0.313748, --0.068994, --0.247671, -0.408625, --0.283552, --0.074900, -0.454322, --0.604058, -0.388152, -0.118180, --0.652112, -0.905884, --0.714344, -0.173531, -0.394450, --0.625469, -0.338823, -0.341693, --1.057163, -1.431910, --1.294751, -0.756023, --0.099350, --0.418413, -0.707039, --0.832007, -0.890874, --0.901517, -0.802596, --0.555351, -0.238318, --0.030072, -0.076679, --0.351451, -0.636589, --0.663423, -0.316103, -0.259895, --0.739395, -0.840188, --0.523528, -0.019944, -0.341949, --0.374582, -0.156532, -0.047324, --0.000954, --0.324251, -0.740539, --0.995968, -0.953974, --0.661607, -0.273946, -0.077683, --0.356753, -0.589510, --0.787517, -0.914608, --0.930511, -0.858891, --0.799055, -0.853666, --1.029034, -1.200426, --1.188453, -0.900590, --0.430049, -0.025854, -0.059648, -0.255725, --0.814935, -1.313501, --1.493158, -1.303496, --0.919710, -0.608647, --0.543107, -0.695185, --0.874860, -0.873751, --0.607336, -0.163056, -0.263574, --0.489190, -0.439378, --0.171692, --0.172429, -0.445595, --0.555229, -0.481295, --0.256892, --0.062043, -0.413051, --0.726227, -0.923501, --0.937182, -0.743809, --0.387243, --0.032779, -0.401427, --0.628441, -0.663548, --0.494659, -0.153745, -0.265990, --0.613446, -0.737022, --0.580497, -0.245498, -0.050748, --0.117825, --0.060398, -0.291792, --0.298595, --0.079543, -0.748288, --1.392982, -1.670180, --1.427162, -0.798089, --0.113527, --0.308529, -0.343392, --0.097740, --0.199709, -0.359257, --0.331723, -0.202919, --0.112502, -0.162733, --0.364711, -0.635531, --0.838933, -0.853869, --0.642953, -0.282486, -0.073668, --0.283038, -0.299272, --0.190205, -0.073413, --0.018470, --0.007255, -0.105797, --0.356443, -0.739511, --1.137341, -1.409750, --1.481430, -1.372777, --1.156479, -0.885107, --0.554877, -0.135456, -0.365373, --0.863415, -1.224630, --1.339762, -1.190450, --0.857639, -0.468804, --0.125191, --0.140642, -0.355603, --0.563127, -0.782108, --0.991888, -1.143296, --1.181264, -1.068084, --0.805162, -0.450754, --0.122164, --0.033957, --0.095073, -0.516643, --1.098219, -1.604061, --1.797154, -1.556860, --0.946394, -0.189469, -0.433771, --0.716821, -0.616128, --0.256565, --0.144852, -0.393526, --0.408256, -0.243269, --0.036360, --0.079984, -0.049985, -0.088101, --0.238428, -0.307587, --0.253331, -0.102754, -0.061120, --0.136173, -0.050355, -0.193945, --0.506057, -0.744274, --0.796128, -0.656097, --0.441401, -0.321715, --0.403728, -0.653989, --0.921206, -1.042765, --0.952975, -0.711521, --0.439691, -0.226724, --0.085403, --0.016107, -0.089316, --0.094643, --0.025496, -0.281498, --0.600547, -0.854506, --0.933006, -0.807919, --0.546108, -0.268447, --0.087007, -0.056011, --0.152742, -0.287206, --0.336462, -0.199831, -0.139710, --0.583042, -0.946564, --1.058820, -0.868562, --0.486660, -0.121104, -0.056821, --0.019125, --0.119288, -0.204800, --0.167384, -0.062857, --0.006286, -0.059009, --0.167561, -0.204004, --0.069935, --0.223008, -0.556707, --0.781899, -0.801582, --0.607977, -0.267471, -0.115533, --0.429995, -0.584506, --0.538383, -0.328144, --0.062170, --0.130804, -0.174620, --0.089959, --0.023901, -0.056722, -0.042540, --0.236276, -0.419647, --0.475093, -0.332844, --0.013167, --0.369772, -0.654121, --0.714234, -0.538827, --0.249416, -0.035613, --0.040606, -0.270265, --0.587421, -0.794617, --0.750205, -0.444358, -0.004097, --0.415638, -0.633865, --0.581707, -0.277128, -0.178166, --0.623869, -0.882019, --0.821080, -0.429554, -0.146053, --0.646657, -0.830663, --0.619121, -0.153556, -0.290107, --0.483647, -0.397192, --0.206090, -0.148481, --0.343660, -0.709429, --1.034720, -1.141219, --1.005413, -0.755826, --0.563866, -0.521791, --0.594988, -0.666960, --0.628676, -0.445327, --0.164076, --0.128098, -0.359170, --0.502209, -0.567025, --0.567699, -0.496871, --0.329956, -0.055757, -0.294483, --0.646589, -0.913245, --1.030843, -0.978306, --0.774466, -0.468428, --0.134404, --0.135095, -0.251061, --0.164339, --0.103811, -0.460408, --0.773369, -0.921066, --0.835658, -0.526258, --0.077423, --0.377214, -0.702404, --0.814237, -0.711706, --0.467406, -0.183776, -0.053701, --0.197945, -0.235022, --0.175080, -0.056081, -0.051144, --0.063573, --0.060649, -0.270880, --0.427000, -0.377518, --0.071520, --0.376663, -0.728105, --0.752646, -0.372800, -0.274461, --0.898787, -1.201418, --1.018468, -0.388903, -0.472440, --1.265161, -1.709487, --1.635288, -1.039585, --0.100591, --0.868154, -1.527544, --1.655060, -1.251672, --0.546573, --0.117141, -0.458271, --0.394197, -0.057576, -0.310511, --0.516244, -0.514694, --0.398584, -0.297365, --0.270121, -0.272237, --0.213155, -0.051909, -0.149690, --0.260044, -0.172884, -0.107548, --0.455439, -0.695937, --0.711024, -0.508680, --0.214460, --0.002624, -0.020986, -0.174999, --0.493342, -0.784862, --0.921326, -0.864646, --0.687946, -0.528747, --0.495422, -0.588827, --0.701054, -0.699504, --0.534452, -0.282925, --0.091338, -0.062216, --0.176874, -0.313074, --0.337729, -0.198918, -0.046911, --0.277848, -0.374654, --0.268445, --0.043464, -0.496361, --0.960235, -1.259427, --1.231738, -0.818923, --0.135495, --0.549899, -0.939113, --0.873340, -0.435318, -0.094084, --0.405406, -0.344453, -0.013313, --0.441217, -0.725196, --0.790793, -0.710502, --0.604987, -0.528896, --0.432675, -0.223361, -0.133769, --0.561449, -0.912855, --1.078971, -1.073341, --1.021156, -1.055408, --1.201659, -1.346796, --1.320827, -1.027257, --0.516772, --0.051739, -0.523370, --0.833190, -0.996815, --1.028417, -0.878976, --0.470696, --0.190148, -0.927608, --1.441224, -1.481895, --1.035707, -0.360059, -0.179859, --0.363778, -0.261403, --0.150418, -0.271911, --0.624319, -0.965195, --1.014996, -0.688894, --0.166246, --0.251118, -0.367575, --0.225549, -0.048556, --0.056041, -0.298664, --0.629600, -0.816696, --0.705632, -0.324001, -0.132301, --0.413164, -0.358258, -0.008817, --0.486144, -0.796661, --0.736158, -0.287008, -0.367459, --0.941485, -1.206094, --1.115068, -0.817477, --0.544803, -0.446000, --0.484788, -0.475310, --0.232716, --0.271933, -0.869352, --1.294927, -1.359228, --1.061369, -0.571210, --0.108435, --0.184274, -0.289121, --0.270324, -0.194698, --0.081157, --0.093293, -0.351150, --0.673821, -0.990016, --1.196846, -1.202375, --0.972274, -0.559684, --0.096760, --0.260449, -0.413096, --0.377906, -0.276447, --0.252612, -0.371605, --0.574932, -0.727565, --0.720692, -0.549166, --0.304795, -0.096859, -0.030665, --0.118741, -0.238583, --0.412270, -0.574873, --0.609485, -0.431387, --0.062495, --0.356381, -0.627204, --0.596818, -0.241946, -0.308261, --0.823214, -1.070435, --0.919951, -0.408247, -0.268555, --0.837419, -1.074826, --0.913985, -0.472118, -0.019841, --0.341252, -0.385088, --0.188521, --0.108200, -0.335178, --0.361719, -0.145442, -0.243489, --0.636053, -0.829882, --0.693302, -0.255401, -0.283463, --0.646416, -0.635430, --0.253215, --0.289200, -0.688712, --0.718961, -0.348041, -0.261251, --0.855213, -1.221369, --1.270481, -1.041009, --0.654267, -0.264059, --0.017978, -0.017936, --0.272690, -0.668925, --1.003619, -1.086354, --0.856473, -0.427966, --0.017086, --0.202593, -0.211200, --0.136615, -0.140176, --0.285015, -0.486600, --0.577034, -0.430770, --0.061693, --0.371700, -0.654013, --0.639421, -0.342694, -0.060129, --0.328069, -0.298366, -0.007991, --0.389398, -0.583612, --0.434731, -0.000926, -0.471263, --0.693540, -0.512498, --0.005912, --0.559354, -0.879521, --0.783777, -0.323941, -0.263200, --0.693710, -0.792224, --0.577686, -0.235171, -0.003154, -0.005938, --0.242433, -0.548224, --0.730400, -0.678727, --0.429268, -0.138300, -0.017338, -0.045078, --0.255872, -0.431986, --0.395836, -0.100899, -0.320001, --0.623001, -0.600398, --0.213639, --0.374657, -0.891735, --1.110949, -0.974879, --0.610591, -0.234094, --0.010962, --0.033785, --0.000230, --0.007512, -0.088920, --0.158356, -0.089015, -0.166398, --0.511672, -0.759206, --0.762720, -0.526327, --0.203068, --0.016382, -0.038064, -0.076196, --0.160846, -0.064281, -0.249751, --0.675577, -1.021055, --1.109691, -0.876592, --0.410488, --0.082184, -0.378830, --0.356878, -0.059437, -0.330480, --0.594446, -0.600630, --0.370022, -0.048323, -0.195620, --0.277436, -0.238528, --0.194977, -0.233726, --0.336903, -0.394829, --0.298574, -0.038708, -0.270084, --0.458429, -0.411811, --0.139613, --0.238350, -0.564376, --0.717464, -0.649280, --0.382063, --0.008835, -0.412929, --0.708025, -0.796709, --0.648300, -0.322183, -0.047525, --0.305266, -0.341416, --0.141230, --0.208804, -0.561094, --0.776224, -0.789297, --0.641141, -0.456506, --0.376779, -0.478318, --0.719011, -0.946922, --0.975805, -0.693990, --0.144442, --0.479730, -0.934317, --1.062379, -0.881924, --0.559866, -0.288213, --0.152559, -0.089824, -0.035344, --0.299424, -0.639910, --0.888943, -0.893008, --0.624671, -0.203741, -0.181566, --0.390453, -0.402551, --0.310356, -0.251354, --0.328379, -0.558486, --0.865367, -1.113917, --1.175211, -0.997122, --0.642592, -0.264237, --0.020594, --0.015855, --0.105112, -0.258095, --0.338128, -0.336194, --0.342504, -0.480037, --0.816234, -1.307445, --1.803231, -2.104235, --2.047633, -1.588641, --0.844650, -0.072478, -0.429894, --0.464077, -0.043470, -0.597021, --1.114689, -1.239866, --0.918724, -0.332266, -0.216549, --0.475328, -0.370994, --0.026178, --0.334027, -0.519961, --0.476067, -0.287492, --0.102889, -0.033531, --0.096400, -0.228622, --0.344244, -0.381127, --0.311835, -0.136986, -0.108539, --0.338838, -0.427742, --0.274816, --0.104024, -0.539289, --0.780981, -0.653012, --0.183235, --0.393386, -0.771891, --0.764070, -0.406697, -0.079335, --0.443455, -0.561991, --0.492266, -0.397890, --0.410417, -0.531385, --0.640685, -0.595316, --0.337932, --0.063881, -0.466932, --0.742172, -0.835413, --0.764851, -0.577686, --0.315030, -0.013044, -0.276189, --0.483593, -0.560036, --0.523805, -0.466560, --0.492433, -0.624769, --0.758216, -0.711879, --0.363116, --0.231873, -0.830281, --1.131362, -0.963329, --0.400870, --0.271562, -0.729959, --0.803013, -0.562152, --0.256326, -0.140916, --0.315474, -0.672203, --0.979433, -1.036732, --0.797344, -0.383798, -0.002316, --0.207199, -0.204405, --0.085562, --0.015240, -0.002898, -0.141370, --0.373816, -0.623884, --0.820934, -0.904978, --0.836543, -0.615723, --0.298500, --0.013353, -0.215957, --0.256416, -0.157435, -0.004591, --0.148978, -0.229732, --0.241772, -0.203872, --0.143471, -0.095540, --0.104308, -0.209402, --0.415817, -0.670248, --0.870160, -0.911663, --0.752732, -0.451383, --0.146804, --0.016561, --0.016998, -0.164655, --0.244860, -0.096085, -0.298294, --0.770254, -1.053763, --0.949637, -0.458912, -0.207033, --0.746536, -0.937265, --0.746837, -0.324504, -0.104938, --0.366607, -0.404858, --0.271055, -0.061537, -0.139189, --0.277417, -0.320251, --0.248510, -0.070514, -0.158356, --0.340593, -0.377935, --0.226949, --0.070407, -0.403597, --0.648005, -0.724472, --0.631788, -0.438498, --0.241913, -0.118792, --0.095695, -0.154186, --0.261074, -0.394823, --0.543998, -0.682316, --0.751746, -0.682808, --0.446355, -0.095467, -0.245640, --0.448859, -0.460420, --0.330632, -0.171569, --0.076035, -0.061513, --0.080153, -0.079263, --0.055294, -0.053449, --0.115299, -0.224106, --0.301454, -0.264584, --0.100674, --0.104813, -0.216555, --0.145268, --0.078456, -0.311158, --0.386531, -0.227966, -0.095721, --0.411087, -0.546615, --0.429644, -0.113042, -0.270263, --0.578405, -0.709581, --0.619470, -0.327792, -0.073869, --0.432761, -0.590932, --0.476046, -0.166989, -0.132111, --0.213913, -0.010165, -0.351704, --0.627556, -0.619377, --0.307084, --0.141282, -0.480946, --0.540863, -0.315199, -0.050128, --0.350587, -0.431184, --0.253010, --0.104528, -0.494165, --0.773661, -0.865802, --0.780138, -0.591107, --0.390200, -0.242069, --0.167240, -0.152660, --0.174102, -0.211753, --0.252424, -0.283169, --0.285820, -0.238437, --0.125588, --0.046403, -0.238851, --0.388632, -0.441300, --0.394590, -0.318511, --0.322201, -0.476839, --0.747746, -0.996317, --1.064284, -0.883146, --0.524172, -0.147249, -0.110640, --0.219603, -0.252575, --0.306628, -0.419039, --0.540076, -0.571678, --0.434934, -0.120621, -0.299406, --0.697758, -0.941095, --0.947810, -0.731651, --0.405222, -0.129359, --0.027152, -0.113144, --0.288419, -0.410950, --0.393675, -0.257891, --0.102201, -0.014204, -0.001729, --0.023275, -0.141073, --0.381935, -0.684530, --0.938636, -1.049170, --0.978252, -0.749692, --0.432660, -0.122973, -0.079805, --0.111066, --0.012360, -0.175426, --0.214817, -0.024639, -0.351353, --0.722674, -0.869868, --0.701728, -0.329801, -0.008609, --0.129704, -0.046773, -0.038836, -0.101573, --0.533596, -1.086792, --1.456591, -1.406999, --0.928896, -0.248098, -0.311757, --0.510787, -0.303039, -0.177402, --0.723023, -1.172129, --1.471016, -1.655668, --1.779796, -1.843632, --1.774267, -1.476101, --0.922792, -0.225332, -0.383944, --0.660394, -0.489163, -0.033450, --0.640828, -1.040646, --1.072951, -0.782319, --0.363960, -0.028558, -0.120458, --0.121835, -0.096768, --0.150966, -0.309066, --0.514247, -0.675106, --0.719083, -0.625207, --0.431903, -0.223712, --0.095409, -0.097543, --0.190384, -0.248649, --0.135247, --0.194519, -0.637811, --0.993915, -1.094175, --0.917141, -0.598216, --0.325437, -0.203697, --0.193654, -0.168176, --0.034547, --0.179028, -0.342140, --0.331112, -0.142359, -0.081614, --0.141648, --0.072380, -0.487414, --0.881831, -1.032461, --0.867710, -0.510128, --0.174393, -0.002447, -0.031503, --0.073553, -0.248553, --0.548549, -0.841196, --0.979889, -0.913427, --0.707447, -0.476738, --0.301328, -0.194924, --0.130281, -0.073987, -0.006268, --0.148981, -0.381789, --0.673255, -0.900638, --0.892150, -0.543751, -0.068528, --0.682888, -0.986172, --0.812199, -0.263593, -0.339294, --0.658734, -0.555217, --0.170581, --0.177850, -0.216910, -0.100356, --0.571833, -0.891247, --0.856113, -0.496299, --0.041613, --0.238953, -0.209062, -0.068702, --0.405046, -0.627290, --0.684894, -0.651006, --0.639391, -0.711724, --0.840072, -0.935211, --0.907875, -0.723792, --0.430082, -0.143795, -0.000379, -0.070959, --0.306967, -0.540606, --0.586216, -0.373572, --0.018334, --0.240103, -0.203437, -0.136689, --0.583701, -0.872881, --0.858485, -0.608540, --0.338724, -0.242425, --0.349973, -0.518172, --0.545593, -0.320198, -0.104253, --0.543131, -0.791782, --0.739940, -0.429813, --0.033771, --0.235691, -0.242571, --0.011614, --0.273720, -0.373876, --0.145810, --0.351442, -0.878681, --1.163077, -1.071756, --0.687910, -0.234605, -0.091089, --0.243594, -0.322090, --0.451624, -0.660099, --0.851493, -0.888099, --0.706005, -0.371414, --0.042044, --0.130187, -0.086408, -0.111230, --0.318248, -0.386918, --0.246399, --0.054639, -0.367644, --0.522882, -0.429545, --0.138975, --0.172865, -0.300547, --0.127919, --0.301021, -0.801666, --1.145129, -1.172367, --0.863755, -0.334924, -0.225080, --0.632786, -0.772117, --0.624873, -0.270961, -0.138955, --0.435858, -0.498927, --0.310294, --0.032180, -0.358127, --0.506507, -0.404116, --0.098665, --0.270140, -0.543253, --0.617479, -0.484889, --0.221717, --0.060958, -0.275487, --0.397493, -0.470202, --0.570775, -0.751102, --0.983525, -1.150029, --1.097576, -0.739213, --0.137185, --0.499795, -0.920613, --0.976557, -0.707855, --0.308777, --0.004555, -0.128638, --0.115173, -0.099670, --0.178022, -0.327855, --0.431828, -0.380081, --0.169570, --0.078955, -0.201853, --0.111603, --0.137312, -0.387750, --0.496123, -0.435637, --0.306076, -0.243539, --0.304729, -0.421254, --0.461451, -0.345919, --0.118089, --0.091344, -0.175332, --0.140891, -0.100308, --0.170025, -0.364359, --0.575925, -0.660284, --0.553324, -0.323050, --0.113297, -0.027172, --0.045267, -0.043337, -0.105999, --0.426046, -0.802241, --1.043495, -0.995587, --0.633967, -0.083962, -0.436874, --0.718779, -0.651933, --0.270830, --0.265792, -0.747978, --1.006573, -0.980875, --0.729523, -0.383336, --0.070290, --0.143425, -0.266439, --0.349114, -0.430517, --0.499327, -0.493429, --0.342125, -0.030046, -0.356565, --0.642073, -0.643894, --0.289850, --0.303284, -0.857493, --1.074596, -0.816312, --0.205257, --0.435682, -0.782445, --0.720594, -0.417340, --0.195028, -0.291918, --0.687579, -1.127240, --1.326359, -1.192846, --0.888367, -0.680799, --0.711420, -0.869889, --0.880556, -0.529623, -0.148935, --0.872911, -1.290713, --1.200831, -0.660654, -0.067593, --0.668030, -0.912766, --0.730042, -0.202769, -0.470992, --1.038887, -1.277325, --1.084286, -0.538520, -0.123591, --0.620394, -0.770615, --0.583209, -0.231832, -0.070019, --0.208612, -0.229547, --0.279770, -0.478183, --0.810649, -1.125792, --1.233610, -1.035769, --0.596842, -0.109826, -0.217133, --0.276621, -0.109527, -0.136433, --0.300714, -0.293787, --0.125772, --0.123726, -0.363009, --0.534425, -0.628962, --0.671294, -0.691212, --0.698047, -0.673169, --0.588345, -0.443398, --0.295227, -0.242773, --0.358583, -0.607074, --0.822052, -0.787756, --0.387541, --0.285357, -0.950737, --1.299556, -1.181631, --0.688953, -0.078858, -0.397416, --0.631955, -0.674903, --0.641459, -0.601533, --0.536276, -0.377327, --0.080446, --0.327956, -0.757623, --1.099769, -1.277754, --1.277676, -1.148342, --0.971239, -0.812205, --0.679091, -0.514632, --0.237767, --0.188251, -0.709358, --1.194673, -1.505891, --1.571825, -1.415162, --1.120409, -0.779890, --0.464110, -0.226322, --0.111320, -0.139104, --0.272997, -0.414696, --0.452966, -0.339797, --0.131250, --0.048083, -0.093943, -0.005757, --0.172310, -0.303263, --0.344354, -0.308282, --0.236033, -0.148187, --0.036067, --0.103042, -0.230480, --0.277691, -0.204288, --0.050875, --0.071486, -0.060571, -0.087594, --0.255423, -0.274304, --0.041406, --0.401451, -0.881122, --1.185535, -1.172955, --0.836573, -0.299588, -0.245966, --0.623466, -0.743076, --0.630417, -0.399618, --0.185687, -0.075236, --0.075065, -0.130334, --0.169586, -0.142059, --0.029298, --0.160829, -0.401788, --0.651271, -0.856324, --0.967716, -0.959505, --0.840948, -0.650654, --0.435366, -0.227239, --0.035937, --0.137279, -0.274394, --0.326946, -0.233156, -0.037321, --0.439574, -0.845726, --1.088336, -1.036237, --0.662454, -0.067427, -0.554349, --0.990428, -1.098043, --0.865629, -0.417850, -0.045322, --0.348822, -0.426690, --0.337484, -0.202073, --0.111186, -0.072894, --0.035519, --0.042930, -0.145829, --0.212521, -0.197552, --0.114523, -0.023381, -0.022078, --0.012270, --0.029986, -0.091094, --0.187178, -0.336671, --0.514217, -0.641662, --0.640315, -0.505580, --0.333207, -0.259597, --0.353302, -0.543345, --0.651411, -0.515365, --0.116259, --0.388856, -0.760169, --0.830412, -0.610591, --0.270801, -0.015004, -0.055895, -0.002724, --0.036616, --0.090545, -0.402545, --0.791654, -1.076772, --1.100487, -0.816368, --0.324469, --0.165107, -0.428830, --0.339911, --0.069039, -0.627275, --1.115276, -1.364143, --1.308932, -0.983245, --0.484574, --0.053286, -0.476169, --0.639129, -0.466950, --0.019373, --0.499530, -0.828633, --0.802914, -0.473695, --0.096470, --0.028170, --0.236034, -0.748747, --1.166502, -1.160529, --0.632822, --0.214584, -0.996857, --1.364044, -1.178433, --0.557765, --0.211812, -0.819548, --1.052335, -0.857797, --0.346509, --0.256951, -0.704011, --0.828403, -0.622307, --0.234577, --0.117553, -0.273998, --0.214295, -0.044184, -0.098738, --0.147618, -0.143079, --0.182284, -0.325729, --0.536514, -0.699504, --0.706693, -0.543211, --0.306070, -0.136300, --0.111634, -0.181980, --0.203279, -0.053290, -0.254454, --0.549408, -0.604445, --0.297296, --0.279335, -0.844164, --1.085618, -0.856026, --0.273798, --0.339532, -0.654416, --0.537835, -0.133747, -0.234713, --0.275700, --0.088588, -0.685791, --1.217468, -1.448088, --1.329024, -0.988082, --0.617064, -0.353111, --0.231711, -0.218636, --0.268301, -0.353674, --0.455523, -0.541077, --0.565890, -0.503139, --0.373202, -0.243597, --0.191662, -0.251374, --0.380040, -0.471999, --0.420711, -0.196846, -0.110468, --0.330328, -0.316320, --0.056855, --0.295163, -0.509958, --0.433876, -0.097254, -0.307242, --0.561884, -0.571061, --0.405886, -0.220426, --0.119334, -0.090737, --0.053093, --0.039303, -0.137362, --0.142389, -0.013152, -0.168763, --0.246027, -0.116286, -0.162717, --0.390334, -0.361909, --0.026628, --0.460268, -0.835625, --0.904382, -0.662874, --0.283597, --0.016804, -0.121241, --0.066615, --0.015243, -0.010810, -0.096142, --0.230761, -0.302550, --0.286284, -0.246477, --0.287633, -0.469117, --0.751394, -1.016417, --1.146902, -1.101271, --0.926765, -0.707483, --0.498826, -0.304824, --0.108550, --0.084854, -0.240111, --0.325762, -0.354759, --0.388823, -0.496844, --0.696279, -0.921844, --1.048428, -0.961854, --0.639030, -0.185422, -0.204597, --0.353379, -0.210089, -0.111083, --0.398417, -0.474762, --0.302658, --0.011026, -0.309239, --0.502394, -0.619246, --0.754756, -0.958113, --1.151263, -1.149063, --0.779807, -0.028717, -0.900817, --1.666389, -1.969604, --1.727536, -1.117256, --0.462906, -0.044948, -0.038073, -0.126008, --0.369364, -0.562432, --0.657512, -0.650943, --0.529555, -0.269490, -0.108539, --0.490770, -0.696863, --0.586160, -0.169476, -0.368103, --0.767459, -0.856026, --0.653670, -0.346181, --0.146923, -0.149930, --0.279590, -0.366619, --0.287494, -0.062425, -0.157382, --0.200850, -0.005574, -0.327580, --0.593402, -0.616474, --0.371346, -0.008514, -0.231986, --0.165213, --0.226076, -0.778042, --1.236325, -1.393596, --1.193484, -0.745937, --0.253148, --0.104683, -0.257534, --0.262697, -0.248397, --0.322210, -0.498406, --0.685898, -0.743496, --0.571335, -0.183458, -0.285568, --0.650234, -0.782814, --0.695269, -0.538410, --0.509803, -0.719434, --1.098687, -1.421457, --1.439760, -1.054502, --0.402211, --0.215958, -0.526628, --0.464956, -0.209579, --0.041842, -0.134642, --0.430657, -0.699582, --0.724942, -0.473802, --0.122022, --0.078702, --0.013001, -0.326946, --0.634667, -0.711810, --0.488877, -0.086700, -0.278542, --0.443550, -0.392465, --0.240652, -0.135055, --0.154334, -0.279990, --0.445869, -0.610629, --0.785249, -0.994287, --1.213689, -1.353356, --1.312286, -1.064936, --0.700562, -0.372979, --0.197160, -0.177555, --0.226672, -0.252741, --0.235918, -0.228173, --0.283885, -0.391255, --0.470872, -0.444927, --0.314183, -0.170791, --0.127954, -0.220552, --0.360538, -0.392099, --0.212093, --0.135411, -0.468089, --0.579326, -0.379220, -0.037977, --0.447309, -0.629079, --0.494192, -0.120235, -0.314058, --0.640989, -0.786537, --0.778320, -0.689663, --0.569550, -0.409373, --0.166441, --0.175851, -0.555494, --0.829906, -0.838445, --0.501839, --0.102230, -0.745722, --1.153769, -1.153960, --0.778528, -0.246889, -0.168104, --0.304151, -0.192580, --0.004410, --0.096767, -0.082816, --0.072778, -0.221261, --0.573001, -0.999593, --1.270464, -1.206395, --0.803227, -0.238894, -0.234703, --0.435843, -0.339961, --0.067056, --0.205901, -0.345257, --0.317360, -0.180407, --0.027695, --0.077484, -0.135143, --0.192635, -0.295023, --0.440659, -0.574402, --0.621523, -0.536526, --0.333798, -0.084114, -0.118137, --0.200133, -0.150587, --0.035446, --0.026518, --0.071023, -0.345967, --0.692965, -0.929423, --0.908444, -0.629120, --0.262413, -0.060483, --0.197977, -0.646309, --1.167360, -1.439948, --1.247261, -0.611127, -0.212764, --0.879313, -1.149391, --1.011008, -0.650103, --0.298458, -0.074633, -0.064351, --0.231858, -0.465132, --0.653808, -0.612600, --0.246489, --0.326382, -0.804920, --0.885718, -0.473859, -0.228636, --0.828922, -0.982780, --0.611145, --0.050880, -0.605771, --0.744351, -0.429185, -0.104521, --0.517642, -0.581063, --0.295097, --0.144634, -0.485885, --0.560701, -0.350190, -0.039881, --0.454903, -0.768636, --0.926708, -0.944180, --0.867173, -0.727598, --0.525263, -0.252549, -0.059224, --0.316818, -0.397323, --0.224087, --0.164266, -0.605032, --0.879024, -0.822335, --0.421149, --0.166050, -0.677115, --0.875993, -0.675765, --0.184871, --0.353725, -0.695925, --0.721786, -0.477233, --0.116310, --0.204443, -0.401830, --0.469236, -0.429134, --0.294363, -0.078456, -0.162222, --0.311209, -0.241199, -0.090569, --0.574435, -0.975820, --1.060487, -0.741609, --0.147167, --0.444921, -0.766693, --0.713423, -0.393979, --0.051120, --0.092381, --0.036364, -0.331708, --0.591581, -0.651343, --0.482478, -0.196855, -0.037387, --0.104207, --0.002366, -0.201090, --0.394847, -0.526962, --0.584223, -0.563279, --0.449183, -0.234441, -0.042771, --0.289870, -0.403710, --0.337270, -0.132089, -0.114122, --0.318401, -0.462470, --0.581692, -0.707605, --0.818693, -0.845124, --0.725646, -0.467528, --0.156537, --0.095456, -0.223887, --0.244917, -0.220976, --0.190654, -0.128238, -0.026304, --0.289620, -0.579606, --0.739299, -0.633329, --0.249187, --0.273641, -0.712892, --0.888722, -0.764717, --0.462748, -0.186312, --0.102299, -0.250496, --0.527409, -0.745594, --0.731482, -0.412276, -0.145742, --0.760911, -1.210672, --1.324976, -1.056973, --0.497276, --0.173746, -0.767882, --1.159936, -1.313895, --1.263170, -1.069538, --0.790897, -0.472312, --0.155478, --0.108381, -0.256454, --0.229424, --0.000014, -0.399791, --0.871575, -1.277021, --1.490535, -1.451825, --1.187857, -0.791478, --0.372654, -0.013365, -0.250462, --0.420184, -0.515192, --0.557738, -0.565219, --0.547339, -0.508611, --0.458262, -0.421036, --0.432952, -0.513776, --0.631925, -0.697400, --0.604880, -0.308720, -0.123076, --0.522831, -0.705924, --0.572381, -0.163480, -0.361009, --0.808169, -1.048741, --1.070885, -0.964816, --0.852557, -0.808014, --0.817766, -0.806354, --0.705063, -0.511636, --0.294329, -0.137457, --0.072817, -0.053779, -0.005772, --0.159237, -0.381431, --0.585784, -0.688023, --0.662019, -0.543858, --0.389851, -0.235696, --0.098021, -0.009503, --0.036456, -0.237854, --0.587754, -0.937077, --1.076325, -0.877560, --0.411156, --0.069112, -0.285878, --0.137252, --0.214631, -0.443416, --0.285372, --0.267228, -0.948433, --1.393140, -1.378762, --0.959481, -0.399234, -0.036147, --0.260619, -0.383178, --0.556924, -0.802041, --0.962912, -0.841339, --0.391344, --0.197569, -0.610376, --0.628235, -0.286231, -0.156256, --0.403702, -0.322189, --0.001361, --0.348608, -0.567904, --0.650657, -0.713214, --0.870154, -1.125091, --1.359958, -1.422596, --1.238817, -0.865507, --0.454411, -0.162436, --0.072093, -0.164276, --0.344429, -0.497005, --0.540863, -0.465341, --0.331991, -0.236861, --0.249038, -0.362699, --0.498767, -0.559210, --0.496767, -0.348572, --0.209160, -0.164798, --0.237968, -0.380287, --0.513824, -0.587152, --0.606624, -0.624238, --0.694464, -0.829673, --0.980780, -1.053733, --0.954322, -0.642640, --0.172412, --0.308711, -0.610510, --0.592028, -0.252470, -0.234728, --0.582944, -0.535599, --0.021142, --0.775870, -1.488157, --1.760581, -1.458594, --0.759143, -0.055695, -0.273842, --0.095137, --0.402691, -0.826547, --0.823736, -0.301224, -0.511106, --1.187305, -1.345729, --0.865418, --0.041775, -0.941819, --1.410689, -1.260571, --0.636175, --0.072652, -0.454062, --0.308955, --0.237317, -0.813784, --1.030914, -0.721297, --0.044525, --0.613380, -0.883208, --0.639987, -0.066391, -0.481951, --0.706958, -0.535820, --0.126068, --0.269662, -0.467260, --0.434922, -0.264886, --0.081765, --0.036140, -0.077380, --0.066639, -0.022686, -0.058823, --0.189438, -0.358506, --0.518780, -0.602609, --0.560784, -0.397577, --0.175803, --0.015220, -0.110838, --0.107388, -0.058657, --0.033665, -0.065365, --0.127877, -0.158544, --0.108398, --0.017504, -0.159870, --0.244414, -0.231317, --0.139978, -0.033500, -0.024540, --0.011250, --0.042859, -0.076231, --0.038967, --0.071337, -0.202718, --0.275299, -0.226681, --0.052398, --0.180039, -0.353370, --0.355239, -0.144752, -0.203883, --0.516581, -0.603649, --0.376314, --0.078317, -0.526592, --0.718710, -0.541360, --0.088493, --0.400453, -0.691302, --0.689642, -0.471042, --0.200795, -0.014409, -0.052660, --0.046657, -0.020934, -0.025923, --0.149129, -0.398459, --0.750446, -1.088497, --1.252870, -1.132662, --0.739329, -0.209032, -0.273971, --0.583972, -0.715298, --0.752434, -0.772880, --0.764392, -0.631868, --0.295066, --0.203746, -0.681475, --0.915940, -0.798140, --0.416681, -0.003714, -0.222372, --0.202340, -0.063039, --0.009302, -0.164419, --0.479048, -0.774305, --0.882347, -0.774263, --0.576882, -0.466637, --0.525841, -0.675726, --0.740369, -0.592672, --0.267939, --0.045462, -0.136077, -0.074513, --0.465263, -0.790027, --0.841026, -0.584181, --0.170208, --0.181835, -0.336876, --0.317936, -0.253169, --0.248532, -0.293617, --0.274591, -0.079739, -0.289476, --0.689773, -0.914506, --0.827232, -0.460444, --0.011085, --0.271255, -0.237615, -0.062566, --0.406435, -0.535248, --0.317450, --0.168054, -0.679824, --0.956879, -0.863194, --0.450584, --0.083497, -0.505303, --0.656851, -0.518360, --0.200403, --0.122621, -0.302366, --0.284673, -0.123525, -0.062610, --0.161794, -0.124274, -0.025352, --0.215480, -0.367426, --0.422696, -0.352256, --0.159972, --0.111802, -0.383169, --0.561359, -0.589105, --0.487158, -0.350360, --0.286917, -0.338596, --0.443720, -0.476464, --0.335979, -0.019295, -0.374663, --0.707772, -0.882100, --0.881608, -0.757003, --0.577311, -0.389944, --0.214617, -0.065433, -0.027662, --0.023220, --0.100146, -0.310252, --0.516700, -0.607366, --0.507955, -0.228002, -0.135430, --0.440328, -0.565785, --0.468488, -0.203575, -0.100292, --0.302073, -0.320445, --0.180238, -0.002541, -0.065645, -0.053970, --0.313861, -0.566563, --0.663816, -0.562093, --0.356503, -0.215428, --0.261917, -0.488225, --0.763945, -0.926956, --0.887688, -0.672415, --0.382421, -0.109117, -0.125333, --0.358693, -0.624641, --0.893744, -1.075180, --1.084080, -0.921472, --0.696458, -0.563163, --0.614576, -0.815233, --1.026816, -1.105411, --0.992582, -0.732826, --0.417707, -0.118784, -0.131692, --0.311632, -0.382990, --0.311536, -0.116659, -0.107049, --0.234410, -0.192536, --0.012026, --0.199396, -0.338221, --0.373125, -0.348098, --0.329002, -0.346807, --0.383342, -0.400858, --0.379113, -0.323867, --0.243830, -0.125274, -0.062296, --0.323947, -0.593006, --0.728844, -0.582914, --0.104707, --0.584518, -1.216931, --1.507548, -1.315490, --0.731365, -0.029987, -0.481632, --0.621323, -0.399278, -0.028089, --0.466405, -0.775882, --0.902310, -0.853997, --0.663831, -0.371369, --0.031344, --0.271378, -0.429438, --0.356342, -0.047530, -0.385699, --0.747937, -0.853937, --0.630304, -0.154172, -0.398995, --0.859478, -1.142235, --1.252056, -1.231640, --1.113014, -0.917034, --0.689135, -0.518250, --0.498480, -0.649730, --0.862825, -0.930356, --0.665342, -0.036017, -0.782427, --1.491015, -1.840833, --1.780168, -1.468972, --1.149483, -0.971350, --0.902516, -0.787118, --0.494746, -0.039634, -0.417364, --0.672063, -0.599945, --0.217063, --0.339335, -0.873477, --1.195418, -1.173971, --0.781720, -0.121391, -0.595188, --1.127783, -1.314488, --1.138241, -0.709301, --0.183195, --0.318690, -0.730242, --1.008540, -1.101328, --0.960438, -0.594195, --0.106070, --0.328144, -0.543238, --0.476201, -0.204644, -0.095345, --0.249215, -0.183929, -0.030606, --0.225977, -0.244296, --0.048531, --0.239236, -0.407356, --0.296653, --0.078850, -0.524366, --0.787216, -0.729044, --0.420464, -0.083475, -0.076973, --0.021649, --0.110115, -0.129885, -0.036867, --0.287525, -0.426589, --0.323771, -0.017513, -0.312782, --0.474368, -0.385431, --0.108834, --0.212741, -0.457314, --0.584643, -0.627001, --0.633764, -0.619726, --0.552945, -0.384373, --0.095525, --0.267369, -0.594329, --0.752670, -0.653349, --0.310565, --0.143595, -0.512131, --0.635859, -0.487497, --0.190054, --0.063539, -0.141687, --0.062994, --0.024921, --0.037312, -0.298223, --0.662955, -0.973060, --1.128268, -1.147835, --1.124617, -1.120492, --1.102160, -0.977752, --0.701736, -0.351901, --0.104315, -0.118970, --0.423522, -0.882624, --1.271131, -1.394421, --1.176215, -0.672444, --0.026327, --0.592005, -1.030974, --1.187174, -1.030664, --0.623976, -0.114023, -0.319456, --0.543095, -0.529525, --0.353910, -0.130197, -0.060945, --0.194632, -0.264887, --0.237101, -0.048667, -0.332853, --0.847794, -1.344263, --1.653698, -1.687765, --1.482268, -1.158791, --0.841306, -0.593724, --0.415319, -0.278325, --0.164444, -0.072348, --0.003857, --0.046195, -0.084034, --0.106436, -0.103999, --0.079248, -0.059754, --0.085563, -0.174413, --0.293826, -0.369602, --0.332114, -0.168336, -0.060183, --0.248582, -0.307763, --0.212019, -0.008249, -0.213255, --0.364732, -0.400015, --0.330409, -0.212573, --0.113070, -0.067331, --0.057774, -0.029587, -0.063400, --0.215257, -0.362130, --0.421280, -0.346137, --0.155559, --0.082576, -0.297092, --0.452841, -0.558281, --0.642929, -0.725291, --0.793595, -0.810282, --0.737285, -0.568569, --0.348450, -0.157277, --0.063116, -0.065333, --0.073890, --0.046167, -0.379566, --0.875644, -1.341232, --1.533204, -1.301937, --0.694241, --0.055699, -0.646860, --0.871638, -0.720189, --0.370317, -0.072975, --0.003451, -0.164834, --0.399162, -0.497482, --0.339601, --0.026302, -0.417054, --0.637844, -0.611229, --0.422705, -0.253759, --0.251362, -0.425489, --0.643248, -0.720463, --0.547414, -0.165734, -0.252271, --0.508277, -0.500683, --0.288458, -0.054022, -0.014407, -0.152100, --0.453308, -0.682179, --0.661357, -0.362371, -0.074482, --0.431760, -0.551157, --0.419421, -0.153131, -0.091587, --0.209887, -0.180091, --0.034153, --0.187480, -0.450709, --0.705757, -0.864789, --0.820821, -0.513496, -0.001049, --0.538139, -0.859677, --0.804086, -0.392385, -0.161727, --0.554153, -0.552579, --0.129442, --0.508420, -1.014495, --1.077463, -0.589707, -0.279192, --1.148840, -1.607397, --1.416089, -0.633132, -0.408417, --1.258434, -1.563569, --1.228260, -0.442009, -0.437130, --1.074405, -1.314375, --1.214294, -0.949264, --0.668015, -0.405847, --0.108823, --0.266110, -0.666111, --0.943220, -0.939822, --0.595209, -0.000608, -0.629025, --1.048156, -1.090306, --0.744262, -0.162182, -0.407126, --0.732119, -0.703900, --0.376827, --0.075707, -0.458626, --0.644568, -0.608054, --0.401785, -0.108753, -0.193205, --0.442859, -0.596374, --0.632846, -0.564301, --0.436019, -0.307105, --0.219382, -0.176429, --0.149117, -0.102823, --0.023396, --0.079744, -0.192081, --0.311817, -0.444886, --0.580294, -0.673806, --0.665235, -0.522631, --0.274762, --0.002267, -0.238094, --0.413328, -0.552448, --0.668388, -0.713679, --0.595149, -0.254312, -0.249442, --0.730829, -0.971025, --0.854411, -0.452334, -0.010764, --0.290229, -0.264890, -0.001772, --0.316898, -0.485730, --0.426270, -0.204499, -0.020436, --0.097491, --0.030766, -0.301656, --0.569413, -0.679699, --0.543262, -0.179467, -0.285062, --0.663363, -0.787631, --0.592058, -0.157200, -0.318767, --0.619738, -0.631880, --0.410339, -0.145370, --0.044599, -0.204128, --0.549071, -0.879638, --0.992988, -0.806220, --0.405189, --0.010333, -0.250560, --0.247578, -0.080670, -0.097287, --0.172923, -0.137877, --0.064027, -0.022516, --0.023148, -0.022285, -0.020783, --0.100900, -0.177502, --0.220208, -0.236081, --0.247462, -0.246089, --0.179289, --0.003613, -0.279765, --0.528374, -0.595092, --0.408208, -0.052928, -0.268211, --0.371170, -0.221448, -0.043105, --0.217024, -0.177734, -0.032735, --0.250745, -0.317518, --0.191543, --0.027983, -0.172206, --0.112843, --0.157020, -0.513788, --0.767369, -0.764866, --0.480425, -0.038073, -0.353242, --0.521052, -0.431718, --0.203857, -0.021297, --0.007412, -0.150210, --0.327348, -0.403570, --0.323691, -0.137916, -0.045878, --0.137366, -0.114157, --0.025204, --0.040988, -0.000811, -0.183537, --0.475906, -0.764144, --0.898078, -0.763560, --0.357844, --0.185755, -0.653894, --0.865635, -0.771819, --0.474348, -0.153952, -0.040400, --0.064924, --0.021671, -0.115485, --0.126077, -0.003997, -0.254475, --0.600359, -0.923129, --1.071800, -0.927674, --0.497479, --0.049618, -0.457183, --0.538419, -0.305286, -0.035092, --0.223517, -0.127087, -0.179970, --0.485885, -0.596526, --0.455043, -0.150646, -0.164210, --0.369861, -0.424913, --0.355159, -0.219392, --0.082032, --0.003555, -0.011186, -0.042432, --0.096125, -0.070114, -0.085017, --0.341747, -0.584321, --0.652112, -0.425596, -0.089691, --0.736393, -1.262860, --1.440747, -1.177565, --0.561961, --0.177329, -0.769992, --1.011586, -0.841318, --0.368708, --0.163176, -0.477695, --0.397657, --0.055622, -0.666597, --1.148327, -1.313433, --1.178117, -0.924112, --0.747421, -0.707736, --0.690157, -0.503154, --0.035799, --0.640655, -1.295365, --1.665498, -1.605415, --1.166773, -0.565687, --0.059026, --0.195864, -0.212568, --0.134413, -0.110240, --0.177406, -0.239670, --0.157100, --0.123400, -0.501422, --0.773703, -0.762762, --0.426138, --0.127486, -0.712711, --1.166308, -1.403348, --1.413216, -1.227366, --0.898489, -0.498984, --0.115241, --0.182090, -0.377020, --0.513925, -0.645498, --0.753808, -0.717807, --0.380856, --0.310392, -1.200485, --1.957116, -2.249127, --1.960484, -1.283387, --0.608281, -0.274262, --0.350381, -0.604016, --0.681714, -0.374776, -0.220982, --0.766615, -0.918917, --0.575490, --0.047906, -0.559476, --0.649948, -0.288001, -0.275193, --0.684190, -0.710791, --0.382543, --0.069023, -0.391064, --0.487003, -0.463430, --0.519585, -0.768514, --1.127002, -1.356808, --1.226886, -0.680414, -0.106787, --0.811284, -1.133419, --0.954206, -0.395046, -0.247255, --0.656347, -0.665115, --0.346724, --0.030474, -0.169051, -0.065309, --0.549595, -0.977531, --1.060326, -0.720299, --0.142517, --0.353960, -0.535134, --0.406610, -0.194645, --0.167269, -0.423060, --0.799228, -0.970545, --0.681648, --0.040534, -0.844784, --1.233550, -0.867951, -0.187146, --1.445724, -2.246832, --2.131616, -1.122880, -0.272812, --1.350519, -1.606061, --1.002656, --0.051721, -0.981671, --1.381474, -1.198378, --0.674599, -0.133061, -0.219833, --0.349600, -0.314615, --0.160234, --0.111494, -0.486284, --0.873558, -1.117566, --1.092538, -0.806384, --0.419537, -0.151200, --0.136361, -0.338942, --0.583877, -0.680378, --0.544216, -0.235773, -0.099188, --0.327935, -0.393657, --0.311456, -0.125929, -0.118661, --0.372657, -0.564247, --0.611634, -0.472878, --0.194318, --0.094841, -0.254086, --0.222994, -0.063523, -0.079269, --0.067430, --0.153228, -0.532976, --0.948665, -1.250378, --1.301481, -1.016125, --0.402629, --0.404223, -1.161861, --1.612085, -1.613366, --1.230808, -0.710684, --0.339690, -0.275584, --0.463159, -0.692551, --0.753856, -0.575308, --0.251613, --0.042693, -0.176682, --0.129545, --0.034937, -0.243414, --0.464023, -0.694139, --0.911210, -1.047438, --1.024512, -0.824243, --0.530511, -0.295083, --0.240788, -0.370529, --0.551080, -0.588172, --0.344241, --0.176496, -0.825486, --1.384326, -1.669060, --1.609361, -1.270681, --0.818538, -0.445729, --0.293671, -0.398483, --0.683618, -1.002311, --1.209534, -1.226287, --1.063393, -0.796158, --0.511162, -0.262355, --0.062768, --0.089806, -0.180023, --0.165641, -0.002791, -0.311697, --0.713897, -1.085552, --1.302346, -1.289556, --1.053885, -0.678322, --0.288917, -0.011543, -0.067542, -0.069690, --0.362780, -0.689636, --0.912754, -0.939208, --0.765080, -0.478005, --0.212933, -0.083093, --0.123422, -0.278682, --0.442749, -0.525209, --0.502364, -0.420827, --0.355069, -0.353090, --0.408551, -0.471379, --0.479993, -0.391225, --0.200679, --0.043361, -0.238915, --0.262926, -0.045054, -0.353975, --0.729365, -0.829175, --0.521138, --0.086375, -0.677970, --0.922324, -0.697117, --0.182525, --0.254642, -0.309724, -0.054835, --0.593012, -0.953351, --0.921063, -0.554579, --0.128860, --0.066498, --0.070033, -0.388149, --0.602195, -0.503231, --0.114006, --0.325896, -0.534023, --0.389103, -0.013269, -0.326376, --0.417063, -0.247109, -0.006537, --0.128980, -0.032299, -0.190016, --0.348757, -0.306073, --0.069129, --0.230956, -0.442710, --0.493348, -0.414133, --0.289514, -0.184247, --0.107772, -0.032593, -0.064086, --0.179651, -0.301629, --0.433479, -0.592934, --0.774666, -0.914444, --0.904846, -0.672579, --0.263743, --0.142597, -0.327321, --0.177882, --0.219683, -0.620847, --0.773724, -0.575219, --0.123170, --0.362109, -0.679839, --0.753421, -0.640252, --0.463233, -0.325062, --0.259464, -0.236322, --0.203513, -0.132927, --0.041608, --0.022850, -0.020167, -0.050666, --0.150399, -0.228521, --0.257050, -0.241834, --0.206413, -0.166086, --0.115324, -0.037177, -0.072959, --0.186116, -0.239047, --0.164671, --0.055440, -0.350786, --0.576634, -0.595739, --0.381572, -0.062277, -0.145166, --0.077559, --0.257290, -0.680381, --0.961428, -0.967356, --0.728424, -0.382382, --0.057361, --0.203949, -0.425015, --0.619952, -0.748414, --0.750345, -0.624742, --0.465937, -0.406262, --0.502096, -0.660648, --0.679004, -0.378794, -0.258440, --1.051134, -1.701040, --1.945793, -1.690075, --1.047852, -0.281770, -0.324963, --0.602287, -0.569413, --0.412148, -0.367039, --0.572077, -0.975028, --1.364366, -1.512281, --1.337739, -0.975698, --0.695880, -0.718758, --1.052493, -1.467794, --1.637964, -1.357678, --0.693758, --0.038609, -0.466169, --0.390510, --0.092248, -0.664621, --1.000445, -0.968414, --0.689400, -0.418994, --0.352068, -0.494680, --0.688929, -0.755161, --0.630643, -0.397729, --0.192349, -0.082185, --0.021197, --0.087111, -0.282227, --0.495276, -0.599855, --0.518292, -0.289290, --0.039642, --0.111241, -0.128867, --0.059807, --0.039718, -0.168570, --0.374740, -0.685415, --1.042642, -1.310596, --1.356882, -1.143973, --0.758747, -0.359912, --0.086926, --0.004185, --0.057442, -0.202744, --0.372201, -0.534786, --0.674483, -0.767840, --0.778645, -0.677082, --0.467683, -0.201163, -0.043605, --0.199222, -0.246396, --0.224693, -0.209934, --0.271620, -0.434019, --0.662215, -0.879721, --1.006552, -0.996210, --0.852694, -0.620963, --0.359892, -0.114275, -0.098643, --0.282278, -0.439715, --0.555848, -0.600055, --0.552424, -0.433596, --0.307546, -0.243892, --0.264324, -0.320839, --0.335163, -0.274223, --0.196186, -0.215995, --0.405618, -0.707086, --0.937515, -0.898197, --0.515436, --0.089335, -0.655366, --0.930565, -0.815391, --0.412524, --0.042341, -0.319634, --0.319008, -0.108090, -0.137104, --0.247857, -0.163083, -0.041942, --0.209416, -0.196104, -0.046275, --0.449580, -0.868488, --1.149898, -1.194992, --0.990359, -0.604004, --0.154659, --0.231329, -0.460748, --0.499327, -0.376287, --0.166794, --0.041474, -0.185706, --0.252439, -0.273737, --0.296615, -0.347204, --0.416968, -0.478738, --0.510930, -0.501467, --0.428618, -0.249915, -0.070592, --0.506513, -0.938240, --1.194882, -1.157835, --0.853019, -0.452966, --0.174886, -0.142469, --0.310842, -0.508161, --0.562638, -0.424305, --0.198112, -0.068923, --0.170924, -0.488624, --0.854286, -1.045098, --0.920586, -0.515570, --0.030959, --0.273366, -0.222438, -0.174176, --0.721452, -1.139064, --1.212982, -0.918434, --0.441130, -0.072091, --0.028840, -0.314100, --0.713739, -0.943679, --0.844397, -0.480350, --0.074249, --0.164255, -0.177965, --0.068958, --0.013138, --0.001985, -0.062888, --0.057827, --0.080960, -0.313963, --0.516101, -0.564498, --0.430344, -0.210041, --0.069537, -0.133357, --0.392581, -0.698503, --0.851523, -0.726561, --0.350226, --0.118081, -0.479221, --0.595566, -0.442993, --0.101477, --0.292063, -0.600320, --0.737016, -0.703647, --0.593653, -0.545825, --0.655730, -0.894549, --1.099569, -1.062424, --0.670394, -0.006303, -0.669550, --1.054123, -0.970152, --0.461904, --0.237376, -0.835929, --1.125082, -1.053485, --0.713131, -0.271001, -0.104535, --0.295732, -0.265998, --0.072783, --0.145394, -0.219271, --0.027722, --0.431924, -1.026250, --1.538470, -1.766971, --1.619166, -1.155167, --0.564012, -0.085404, -0.092191, -0.081229, --0.481694, -0.854095, --0.930881, -0.580542, -0.095594, --0.791317, -1.156270, --1.006442, -0.449654, -0.168408, --0.475674, -0.306652, -0.198953, --0.695507, -0.855284, --0.565231, --0.022423, -0.598925, --0.883283, -0.770186, --0.369247, --0.071388, -0.308231, --0.235778, --0.061483, -0.368377, --0.476210, -0.312004, -0.023444, --0.330400, -0.441017, --0.313343, -0.030060, -0.282085, --0.541548, -0.743979, --0.923880, -1.088619, --1.185440, -1.131153, --0.883024, -0.493819, --0.102888, --0.139579, -0.166657, --0.039528, --0.094397, -0.106410, -0.018186, --0.165911, -0.178479, -0.022054, --0.358336, -0.634107, --0.663330, -0.403684, -0.002487, --0.312818, -0.340918, --0.079759, --0.287951, -0.498773, --0.368368, --0.093372, -0.678903, --1.094211, -1.124716, --0.763510, -0.224095, -0.179172, --0.220236, --0.095020, -0.528273, --0.759984, -0.596115, --0.089770, --0.504680, -0.904617, --0.967708, -0.737913, --0.357498, --0.057339, -0.463984, --0.837866, -1.095537, --1.101900, -0.782459, --0.243696, --0.229538, -0.339401, -0.004240, --0.586315, -1.012248, --0.982091, -0.510465, -0.079960, --0.391559, -0.235828, -0.245138, --0.702464, -0.843798, --0.632777, -0.287059, --0.098186, -0.220544, --0.576485, -0.921632, --1.002648, -0.698142, --0.070626, --0.675204, -1.286853, --1.561816, -1.414891, --0.899953, -0.185699, -0.504468, --0.968781, -1.094455, --0.892540, -0.485816, --0.052069, --0.255312, -0.372988, --0.345967, -0.287694, --0.305322, -0.435309, --0.626411, -0.775336, --0.787169, -0.623672, --0.318958, --0.034364, -0.316743, --0.422762, -0.307242, --0.020994, --0.290964, -0.447541, --0.328883, --0.043633, -0.505133, --0.836266, -0.888889, --0.662484, -0.280432, -0.107154, --0.412676, -0.627484, --0.770785, -0.834796, --0.784009, -0.605300, --0.351871, -0.129816, --0.031976, -0.074806, --0.190121, -0.275030, --0.256346, -0.123954, -0.078488, --0.284341, -0.431769, --0.482368, -0.437151, --0.347707, -0.306735, --0.404804, -0.666808, --1.009383, -1.260992, --1.250578, -0.918881, --0.377494, --0.137589, -0.404155, --0.359906, -0.151791, --0.040829, -0.216080, --0.646794, -1.085180, --1.226707, -0.918724, --0.269628, --0.414732, -0.816538, --0.782364, -0.382925, -0.157495, --0.591709, -0.755430, --0.608621, -0.224892, -0.243474, --0.613985, -0.737329, --0.563663, -0.176646, -0.239131, --0.493110, -0.492463, --0.286495, -0.022656, -0.151608, --0.170536, -0.066260, -0.075086, --0.171248, -0.175869, --0.081511, --0.083037, -0.248026, --0.306398, -0.153336, -0.239463, --0.762449, -1.184253, --1.267316, -0.924947, --0.309042, --0.253647, -0.453887, --0.195141, --0.347549, -0.847717, --1.035442, -0.842039, --0.390847, --0.128534, -0.583093, --0.923975, -1.128337, --1.144241, -0.912932, --0.455290, --0.067935, -0.404837, --0.363066, --0.041443, -0.559511, --0.847008, -0.682226, --0.112767, --0.571833, -1.020307, --1.024581, -0.613711, -0.007427, --0.605810, -1.037871, --1.266750, -1.300447, --1.130662, -0.736143, --0.143884, --0.517621, -1.038026, --1.223166, -1.008775, --0.508128, --0.043026, -0.408396, --0.462536, -0.231723, -0.142024, --0.477021, -0.628524, --0.544544, -0.291578, --0.035584, --0.033182, --0.189088, -0.637275, --1.093093, -1.310760, --1.176072, -0.781252, --0.350867, -0.070827, -0.045629, --0.145638, -0.387953, --0.781500, -1.147716, --1.243461, -0.950230, --0.381670, --0.176625, -0.453919, --0.373861, -0.100219, -0.082026, -0.033247, --0.428356, -0.868681, --1.054392, -0.814142, --0.215021, --0.475608, -0.941459, --0.982002, -0.598499, -0.029240, --0.642208, -1.017842, --1.051682, -0.780644, --0.347716, --0.070355, -0.338012, --0.405561, -0.310920, --0.150161, -0.037971, --0.069288, -0.283535, --0.637382, -1.004636, --1.220934, -1.164311, --0.829745, -0.347418, -0.076696, --0.270168, -0.191096, -0.046786, --0.240391, -0.219254, -0.050164, --0.444459, -0.762422, --0.851666, -0.698458, --0.422923, -0.190226, --0.103353, -0.147348, --0.211737, -0.166306, -0.058702, --0.428323, -0.812377, --1.043590, -0.999593, --0.671249, -0.179904, -0.271962, --0.496752, -0.415430, --0.097542, --0.275405, -0.504134, --0.470959, -0.190132, -0.214318, --0.581635, -0.788930, --0.787944, -0.600445, --0.297339, --0.017671, -0.225595, --0.229717, -0.011259, -0.334772, --0.628983, -0.705414, --0.519549, -0.183763, -0.107338, --0.213636, -0.143944, --0.031692, -0.009852, --0.089957, -0.150667, --0.050071, --0.233065, -0.555384, --0.709635, -0.592779, --0.301752, -0.072046, --0.101396, -0.394501, --0.748119, -0.887491, --0.653858, -0.111432, -0.493840, --0.887473, -0.926371, --0.665896, -0.302044, --0.036964, --0.041816, --0.005847, -0.039858, -0.045331, --0.237960, -0.412285, --0.413609, -0.167500, -0.257932, --0.677675, -0.889142, --0.785011, -0.410381, -0.070939, --0.478943, -0.720221, --0.821065, -0.869635, --0.914685, -0.905636, --0.731613, -0.336602, -0.183748, --0.597989, -0.678638, --0.370645, --0.145374, -0.558471, --0.634294, -0.371793, -0.007133, --0.224132, -0.139031, -0.169849, --0.485936, -0.619967, --0.531310, -0.323661, --0.136021, -0.025507, -0.064732, --0.233026, -0.506867, --0.787893, -0.906608, --0.750402, -0.364705, -0.057304, --0.295494, -0.244611, -0.029371, --0.353889, -0.575752, --0.646875, -0.614707, --0.547071, -0.468738, --0.360297, -0.204531, --0.024190, --0.127504, -0.210368, --0.228556, -0.216758, --0.193899, -0.130439, -0.031563, --0.311128, -0.626885, --0.804300, -0.671720, --0.194097, --0.453836, -0.948615, --0.997515, -0.527370, -0.248255, --0.938463, -1.195737, --0.908000, -0.246437, -0.448048, --0.858360, -0.849446, --0.512784, -0.090140, -0.170030, --0.144272, --0.112967, -0.418452, --0.579713, -0.513165, --0.289869, -0.083549, --0.056774, -0.258659, --0.596329, -0.892808, --0.990520, -0.836266, --0.501395, -0.134161, -0.119234, --0.176755, -0.038685, -0.231823, --0.540138, -0.785052, --0.878967, -0.772928, --0.481849, -0.088205, -0.291451, --0.562188, -0.689066, --0.691096, -0.605706, --0.466107, -0.314314, --0.223030, -0.278036, --0.509806, -0.829223, --1.043286, -0.969433, --0.574360, -0.023598, -0.412211, --0.534571, -0.347269, --0.043262, --0.137280, -0.069019, -0.191088, --0.466074, -0.591087, --0.515886, -0.313620, --0.105253, --0.036130, -0.131916, --0.267596, -0.511159, --0.840170, -1.130444, --1.217969, -0.997003, --0.491786, --0.144111, -0.699996, --1.007795, -1.013195, --0.786602, -0.479543, --0.254504, -0.217143, --0.370520, -0.606484, --0.747227, -0.633353, --0.222888, --0.358783, -0.864750, --1.056609, -0.844215, --0.343144, --0.192282, -0.519037, --0.541044, -0.345922, --0.127449, -0.053712, --0.169773, -0.391690, --0.583525, -0.655924, --0.618626, -0.558200, --0.564605, -0.662019, --0.790426, -0.848578, --0.768654, -0.571556, --0.361427, -0.255258, --0.290262, -0.377533, --0.348855, -0.077633, -0.409221, --0.918715, -1.201114, --1.108827, -0.688205, --0.136671, --0.337714, -0.642604, --0.819763, -0.955213, --1.069079, -1.082286, --0.886371, -0.454149, -0.101106, --0.565404, -0.735317, --0.528854, -0.034509, -0.520703, --0.866246, -0.808711, --0.332179, --0.370410, -0.966167, --1.137439, -0.751683, -0.052058, --0.923155, -1.484494, --1.538199, -1.165262, --0.652928, -0.295716, --0.204890, -0.260731, --0.241480, -0.029265, -0.270152, --0.393860, -0.127700, -0.508262, --1.241637, -1.713018, --1.701982, -1.252113, --0.619836, -0.103133, -0.120130, --0.047172, --0.205128, -0.495726, --0.722254, -0.830233, --0.797848, -0.630962, --0.373304, -0.107724, -0.070946, --0.102628, --0.004818, -0.182254, --0.341630, -0.423218, --0.416193, -0.346673, --0.252926, -0.171421, --0.136670, -0.177866, --0.299680, -0.460977, --0.583281, -0.600624, --0.518265, -0.422347, --0.415731, -0.523791, --0.653837, -0.656004, --0.444167, -0.076115, -0.279400, --0.464825, -0.444039, --0.311396, -0.198717, --0.165708, -0.166161, --0.111885, --0.027908, -0.180509, --0.217531, -0.059545, -0.244319, --0.525209, -0.591674, --0.352491, --0.115691, -0.603000, --0.885178, -0.855493, --0.588204, -0.293237, --0.187634, -0.361546, --0.720823, -1.042780, --1.113169, -0.860715, --0.404906, --0.015714, -0.192059, --0.074266, --0.205049, -0.432907, --0.473537, -0.366404, --0.288747, -0.407156, --0.732096, -1.091001, --1.245222, -1.061726, --0.609491, -0.112884, -0.192195, --0.188330, --0.089332, -0.510405, --0.930177, -1.234114, --1.340466, -1.198134, --0.806959, -0.247799, -0.317405, --0.699704, -0.770886, --0.532485, -0.119582, -0.264830, --0.446176, -0.351496, --0.026791, --0.396450, -0.757307, --0.917338, -0.799326, --0.413659, --0.133962, -0.668337, --1.011035, -1.065315, --0.872529, -0.597325, --0.440525, -0.525635, --0.826210, -1.176385, --1.358483, -1.218577, --0.750384, -0.107807, -0.457681, --0.705733, -0.515022, -0.055875, --0.783026, -1.366095, --1.557772, -1.276913, --0.648693, --0.055447, -0.552591, --0.687779, -0.498954, --0.169983, --0.095569, -0.197168, --0.177791, -0.163010, --0.250724, -0.435014, --0.617347, -0.689976, --0.622373, -0.481662, --0.371357, -0.338000, --0.321754, -0.195816, -0.128799, --0.608886, -1.059044, --1.242990, -1.013052, --0.409963, --0.339723, -0.927701, --1.110248, -0.819012, --0.184017, --0.535498, -1.073064, --1.269191, -1.124134, --0.769253, -0.381995, --0.099347, --0.022646, --0.004681, -0.137811, --0.320081, -0.478484, --0.526965, -0.402626, --0.122150, --0.191943, -0.356634, --0.231789, --0.186102, -0.748634, --1.232379, -1.454263, --1.349795, -0.975162, --0.453869, --0.082979, -0.529772, --0.816631, -0.916387, --0.851970, -0.688247, --0.497109, -0.314746, --0.129721, --0.079346, -0.285562, --0.394763, -0.299883, -0.024531, --0.467439, -0.825277, --0.924193, -0.730704, --0.365820, -0.014560, -0.194814, --0.250472, -0.223792, --0.189987, -0.177177, --0.177222, -0.187396, --0.226926, -0.307310, --0.390722, -0.389818, --0.224937, --0.102678, -0.486132, --0.764824, -0.819733, --0.643179, -0.335902, --0.039570, --0.143080, -0.188888, --0.139365, -0.053792, -0.032502, --0.119550, -0.222946, --0.341636, -0.438913, --0.454787, -0.347546, --0.136880, --0.089021, -0.220228, --0.199669, -0.068581, -0.060081, --0.085691, --0.004451, -0.130469, --0.189176, -0.138107, --0.025225, --0.054878, -0.036739, -0.069661, --0.193447, -0.261122, --0.254749, -0.230458, --0.283670, -0.478884, --0.786880, -1.075878, --1.176260, -0.986455, --0.549116, -0.037664, -0.344232, --0.480642, -0.396438, --0.215206, -0.066098, --0.013667, -0.052090, --0.145703, -0.265614, --0.391866, -0.492630, --0.514739, -0.406077, --0.156822, --0.173799, -0.470696, --0.613586, -0.536684, --0.262784, --0.106667, -0.437721, --0.619905, -0.605822, --0.421155, -0.147123, -0.115573, --0.289094, -0.352288, --0.349460, -0.364479, --0.468413, -0.667381, --0.882788, -0.981534, --0.847005, -0.455252, -0.088885, --0.585957, -0.838650, --0.759978, -0.425218, --0.028729, --0.230745, -0.260993, --0.110018, --0.093468, -0.240321, --0.304947, -0.333556, --0.381160, -0.458250, --0.528804, -0.549733, --0.508346, -0.425325, --0.329214, -0.233537, --0.137041, -0.039038, -0.051250, --0.118987, -0.151258, --0.137711, -0.070842, -0.042327, --0.163396, -0.227656, --0.186962, -0.065980, -0.023890, -0.053708, --0.354244, -0.785318, --1.143755, -1.242543, --1.038094, -0.662922, --0.339201, -0.236843, --0.374401, -0.621794, --0.787768, -0.724853, --0.391035, --0.148638, -0.758449, --1.279089, -1.574120, --1.576152, -1.322550, --0.953646, -0.652389, --0.541426, -0.597292, --0.649164, -0.481659, -0.014074, --0.741782, -1.429218, --1.775328, -1.623473, --1.047954, -0.300041, -0.346018, --0.742026, -0.915049, --0.995453, -1.086962, --1.175703, -1.140357, --0.849824, -0.275928, -0.454507, --1.099203, -1.407711, --1.240799, -0.646338, -0.145205, --0.811784, -1.084107, --0.875063, -0.320108, -0.300998, --0.717500, -0.801180, --0.601292, -0.275238, -0.020302, --0.199831, -0.250887, --0.196864, -0.069618, -0.088471, --0.214650, -0.239646, --0.128791, --0.080938, -0.285882, --0.369751, -0.272655, --0.025780, --0.272758, -0.520616, --0.664704, -0.708225, --0.675452, -0.571651, --0.375953, -0.071642, -0.316427, --0.712293, -1.016703, --1.149698, -1.078381, --0.819244, -0.427000, -0.015230, --0.404888, -0.641364, --0.662648, -0.477477, --0.164596, --0.169225, -0.445133, --0.639433, -0.762133, --0.810571, -0.745907, --0.521206, -0.140994, -0.301793, --0.654556, -0.791684, --0.701027, -0.503350, --0.380308, -0.452125, --0.688029, -0.916724, --0.937235, -0.655989, --0.153593, --0.366085, -0.704091, --0.776466, -0.633680, --0.395300, -0.168288, --0.012363, --0.043246, --0.023634, -0.219811, --0.505631, -0.782981, --0.927990, -0.850000, --0.534929, -0.048116, -0.491673, --0.942135, -1.163739, --1.056713, -0.615905, -0.023350, --0.598615, -0.821083, --0.528005, --0.204795, -1.076629, --1.712372, -1.863869, --1.534354, -0.948293, --0.396644, -0.070549, -0.009956, -0.051557, --0.129417, -0.145726, --0.074118, --0.090478, -0.345058, --0.660350, -0.963135, --1.156568, -1.176442, --1.038664, -0.831059, --0.646189, -0.504057, --0.330552, -0.020033, -0.456277, --0.980005, -1.322869, --1.285157, -0.844289, --0.198145, --0.345201, -0.563565, --0.461618, -0.251059, --0.185341, -0.374240, --0.714669, -0.979302, --0.984994, -0.713786, --0.309683, --0.027164, -0.161143, --0.078702, --0.134338, -0.357156, --0.489438, -0.476023, --0.310475, -0.034154, -0.268518, --0.493774, -0.566855, --0.493279, -0.371489, --0.340295, -0.482165, --0.747257, -0.962492, --0.934925, -0.585772, --0.019681, --0.526607, -0.826165, --0.797988, -0.545953, --0.280393, -0.181567, --0.296036, -0.524732, --0.697871, -0.683579, --0.465803, -0.150313, -0.102121, --0.177190, -0.081857, -0.058316, --0.084179, --0.081317, -0.366255, --0.583433, -0.548376, --0.206120, --0.316702, -0.769649, --0.913612, -0.655894, --0.110399, --0.451392, -0.736328, --0.583743, -0.054744, -0.597578, --1.066394, -1.160186, --0.900614, -0.490028, --0.174624, -0.099208, --0.249059, -0.504781, --0.751853, -0.952474, --1.128614, -1.283658, --1.342111, -1.170719, --0.675878, --0.093865, -0.924094, --1.522629, -1.674693, --1.369683, -0.815692, --0.325729, -0.141126, --0.298709, -0.622590, --0.842516, -0.762031, --0.372153, --0.153822, -0.570664, --0.702699, -0.532121, --0.192189, --0.118926, -0.246585, --0.149300, --0.101661, -0.380460, --0.577454, -0.639120, --0.563815, -0.376454, --0.113877, --0.171263, -0.409120, --0.535969, -0.534240, --0.453434, -0.382910, --0.388683, -0.462289, --0.525200, -0.488752, --0.324546, -0.090728, -0.106594, --0.187755, -0.153382, --0.076769, -0.041634, --0.075972, -0.136175, --0.154785, -0.109859, --0.055452, -0.085023, --0.258778, -0.556608, --0.894033, -1.182319, --1.378178, -1.483731, --1.507652, -1.434166, --1.235324, -0.916086, --0.545548, -0.235548, --0.073993, -0.061847, --0.105209, -0.073782, -0.112300, --0.423894, -0.728394, --0.854870, -0.682515, --0.208506, --0.435604, -1.027451, --1.341259, -1.242641, --0.747060, -0.013180, -0.725559, --1.256253, -1.463300, --1.357124, -1.052624, --0.715128, -0.496633, --0.481784, -0.660782, --0.940713, -1.193526, --1.317314, -1.276317, --1.098058, -0.837473, --0.542955, -0.252498, --0.014190, --0.104152, -0.044215, -0.186918, --0.484916, -0.684393, --0.655435, -0.395508, --0.042920, --0.207720, -0.230825, --0.042695, --0.230771, -0.459323, --0.596627, -0.681344, --0.761480, -0.820073, --0.774928, -0.553649, --0.175535, --0.233098, -0.505774, --0.534803, -0.335386, --0.040535, --0.162732, -0.121920, -0.203049, --0.703844, -1.154622, --1.312127, -1.045641, --0.424329, --0.302181, -0.832224, --0.976127, -0.751293, --0.346280, --0.017211, -0.224642, --0.314854, -0.410938, --0.600398, -0.859204, --1.069851, -1.108120, --0.928285, -0.590684, --0.223047, --0.051162, -0.173186, --0.168452, -0.119798, --0.111987, -0.180414, --0.293579, -0.378326, --0.369080, -0.248748, --0.058555, --0.124154, -0.224359, --0.204880, -0.083748, -0.074607, --0.193270, -0.225328, --0.179254, -0.107888, --0.067630, -0.079218, --0.122616, -0.169763, --0.223653, -0.322022, --0.493652, -0.702446, --0.837106, -0.774210, --0.478121, -0.056173, -0.291584, --0.406807, -0.292917, --0.119780, -0.097388, --0.310675, -0.646589, --0.875268, -0.825035, --0.514849, -0.141752, -0.064279, --0.003946, --0.231151, -0.438430, --0.454933, -0.264703, -0.007139, --0.194751, -0.205384, --0.069376, --0.093814, -0.155218, --0.045909, --0.215678, -0.535432, --0.778534, -0.819879, --0.606847, -0.212862, -0.163453, --0.287159, -0.035901, -0.488958, --0.990526, -1.156666, --0.878535, -0.342858, -0.086536, --0.121197, --0.251086, -0.766481, --1.081275, -1.011392, --0.640252, -0.231271, --0.030378, -0.111877, --0.365042, -0.601354, --0.680665, -0.567738, --0.306824, --0.033224, -0.388015, --0.692291, -0.872151, --0.862667, -0.644392, --0.267494, --0.158598, -0.503571, --0.660681, -0.581934, --0.300050, --0.070078, -0.364961, --0.445774, -0.279954, -0.027310, --0.291491, -0.370141, --0.260744, -0.094483, --0.025209, -0.101623, --0.228392, -0.247847, --0.072732, --0.240556, -0.533596, --0.660692, -0.581355, --0.366058, -0.128594, -0.049694, --0.150012, -0.196620, --0.221436, -0.243320, --0.266670, -0.285373, --0.282772, -0.230629, --0.095908, --0.142519, -0.473570, --0.840301, -1.142658, --1.263543, -1.116796, --0.700380, -0.123607, -0.420189, --0.736033, -0.726242, --0.445342, -0.069866, -0.204458, --0.273707, -0.170851, --0.015784, --0.088846, -0.134870, --0.199037, -0.357743, --0.598466, -0.803442, --0.822428, -0.580554, --0.141508, --0.318564, -0.607667, --0.624644, -0.415281, --0.149729, -0.031618, --0.180971, -0.550713, --0.931221, -1.057783, --0.771655, -0.137319, -0.571079, --1.020757, -1.019141, --0.628477, -0.117675, -0.214267, --0.219098, --0.037622, -0.361874, --0.586392, -0.674304, --0.702249, -0.756103, --0.838617, -0.868318, --0.763137, -0.528273, --0.267456, -0.107170, --0.099511, -0.184870, --0.241663, -0.180259, --0.008361, --0.175543, -0.250379, --0.154601, --0.067553, -0.283285, --0.346202, -0.190089, -0.116388, --0.397225, -0.471766, --0.268460, --0.129607, -0.539825, --0.793550, -0.826469, --0.690628, -0.497700, --0.347126, -0.285843, --0.307412, -0.370612, --0.419677, -0.404232, --0.301045, -0.129298, -0.056123, --0.196798, -0.268606, --0.294525, -0.318532, --0.358813, -0.380552, --0.316210, -0.123431, -0.164690, --0.442603, -0.595003, --0.575362, -0.437575, --0.290052, -0.204640, --0.154821, -0.040215, -0.213570, --0.558784, -0.820145, --0.803057, -0.444850, -0.107250, --0.564641, -0.678045, --0.406730, --0.047347, -0.369024, --0.333884, --0.053878, -0.577680, --0.955178, -1.006197, --0.734435, -0.289889, -0.136132, --0.401746, -0.444668, --0.264676, --0.097416, -0.559708, --0.994287, -1.252336, --1.227789, -0.923209, --0.462524, -0.028386, -0.238888, --0.310240, -0.258554, --0.187730, -0.162023, --0.186862, -0.238630, --0.298160, -0.351540, --0.368580, -0.301924, --0.129620, --0.090624, -0.218018, --0.104546, --0.293510, -0.855752, --1.345974, -1.542259, --1.359842, -0.886150, --0.315405, --0.161852, -0.442400, --0.527883, -0.486067, --0.392930, -0.291060, --0.180969, -0.042170, -0.134715, --0.327086, -0.485343, --0.560754, -0.538136, --0.451028, -0.367689, --0.353719, -0.432690, --0.569162, -0.687135, --0.714052, -0.620650, --0.428502, -0.182128, -0.086192, --0.365709, -0.643897, --0.879006, -1.003265, --0.960447, -0.745487, --0.410220, -0.032715, -0.318269, --0.593480, -0.749835, --0.742885, -0.545399, --0.180662, --0.262096, -0.651304, --0.865904, -0.848042, --0.629332, -0.319807, --0.062397, --0.034167, --0.042974, -0.192163, --0.248021, -0.085991, -0.281918, --0.693665, -0.930055, --0.859066, -0.529534, --0.140888, --0.094087, -0.094879, -0.039947, --0.118167, -0.006089, -0.266353, --0.522890, -0.565955, --0.319184, --0.110630, -0.491804, --0.606418, -0.380424, -0.073628, --0.523472, -0.748583, --0.656031, -0.317462, -0.082980, --0.347925, -0.356646, --0.109619, --0.276678, -0.615374, --0.724185, -0.512593, --0.044088, --0.471796, -0.774007, --0.688727, -0.227208, -0.423295, --1.008394, -1.338657, --1.360271, -1.135001, --0.769927, -0.360506, -0.021525, --0.313277, -0.456450, --0.419257, -0.224468, -0.049374, --0.305352, -0.482255, --0.586500, -0.677589, --0.815188, -1.003804, --1.173703, -1.215984, --1.055300, -0.715900, --0.332295, -0.084695, --0.089697, -0.317190, --0.597828, -0.726132, --0.592034, -0.246723, -0.143843, --0.419623, -0.528747, --0.538717, -0.557008, --0.628918, -0.691496, --0.617383, -0.316869, -0.174911, --0.690950, -1.018650, --1.026733, -0.745815, --0.343773, -0.013121, -0.144793, --0.152963, -0.092960, --0.007937, --0.134406, -0.385339, --0.719771, -0.997998, --1.034843, -0.734241, --0.184413, --0.369209, -0.664952, --0.583793, -0.214839, -0.216169, --0.500394, -0.571678, --0.521361, -0.503422, --0.607727, -0.794176, --0.927829, -0.879366, --0.613673, -0.208587, -0.196808, --0.476681, -0.566176, --0.466342, -0.226043, -0.074819, --0.337088, -0.464980, --0.406798, -0.193085, -0.063827, --0.226625, -0.217996, --0.073852, --0.081247, -0.125224, --0.028469, --0.129902, -0.235319, --0.240180, -0.205796, --0.241792, -0.390886, --0.561949, -0.581862, --0.337628, --0.102725, -0.497172, --0.574745, -0.218929, -0.444507, --1.118314, -1.508895, --1.482789, -1.110293, --0.593489, -0.149634, -0.076200, --0.044643, --0.180519, -0.453422, --0.590577, -0.445300, -0.011858, --0.657822, -1.262500, --1.596631, -1.537779, --1.115643, -0.485560, -0.137467, --0.547816, -0.607431, --0.292603, --0.283622, -0.901049, --1.323075, -1.411365, --1.194298, -0.838838, --0.542550, -0.420151, --0.459401, -0.564745, --0.641099, -0.648923, --0.597620, -0.500290, --0.343776, -0.106837, -0.189861, --0.454876, -0.558433, --0.414184, -0.049138, -0.398676, --0.759707, -0.930961, --0.918920, -0.803302, --0.665068, -0.544573, --0.453675, -0.406122, --0.415623, -0.456343, --0.436555, -0.238349, -0.184850, --0.729508, -1.164168, --1.260875, -0.950626, --0.385938, --0.143688, -0.387309, --0.274333, --0.073643, -0.455681, --0.732507, -0.890826, --0.998505, -1.107957, --1.195138, -1.178665, --0.992472, -0.648493, --0.244381, --0.082069, -0.217894, --0.124500, --0.145714, -0.467376, --0.688497, -0.691779, --0.448516, -0.038751, -0.378841, --0.638774, -0.648070, --0.429304, -0.102275, -0.185146, --0.334829, -0.338614, --0.261235, -0.184377, --0.151762, -0.148229, --0.118152, -0.005646, -0.207340, --0.481173, -0.721738, --0.806479, -0.628745, --0.150902, --0.553756, -1.296575, --1.825397, -1.925970, --1.531240, -0.776123, -0.047639, --0.626879, -0.781342, --0.544958, -0.124380, -0.233508, --0.375071, -0.292406, --0.080558, --0.146320, -0.310914, --0.374839, -0.316153, --0.126433, --0.162715, -0.457851, --0.627398, -0.572220, --0.294721, --0.092070, -0.432341, --0.626807, -0.688640, --0.712332, -0.780764, --0.886940, -0.936997, --0.834600, -0.578569, --0.289925, -0.137866, --0.216204, -0.466014, --0.710323, -0.781202, --0.644097, -0.420413, --0.286195, -0.326385, --0.465937, -0.539501, --0.442734, -0.232733, --0.082209, -0.120876, --0.303039, -0.427638, --0.306571, --0.056470, -0.434147, --0.531066, -0.211589, -0.379500, --0.900227, -1.038166, --0.712439, -0.109444, -0.458590, --0.754825, -0.732766, --0.502036, -0.200837, -0.108487, --0.442090, -0.811987, --1.146390, -1.294570, --1.124546, -0.640622, --0.026106, --0.434680, -0.514328, --0.180579, --0.375292, -0.840281, --0.950388, -0.630491, --0.027214, --0.575680, -0.905368, --0.831160, -0.415224, -0.134602, --0.576449, -0.749042, --0.633213, -0.338861, --0.038285, --0.113513, -0.038005, -0.240080, --0.599232, -0.864255, --0.884159, -0.619377, --0.185870, --0.190743, -0.302312, --0.089947, --0.315143, -0.679028, --0.820297, -0.717491, --0.491521, -0.287413, --0.160998, -0.064968, -0.062773, --0.198649, -0.222456, --0.017479, --0.399937, -0.839535, --1.038875, -0.846182, --0.349567, --0.152623, -0.333905, --0.055201, --0.534383, -1.083618, --1.256876, -0.939849, --0.301439, --0.320537, -0.626825, --0.523245, -0.152602, -0.210077, --0.323136, -0.110223, -0.304693, --0.668883, -0.742602, --0.440582, --0.105580, -0.612528, --0.812383, -0.620847, --0.188275, --0.208561, -0.356801, --0.236543, --0.004283, -0.193790, --0.269477, -0.293410, --0.354750, -0.462390, --0.527477, -0.444009, --0.187961, --0.152634, -0.435524, --0.555485, -0.498176, --0.328409, -0.138626, --0.001512, --0.049211, -0.016099, -0.070226, --0.158343, -0.188549, --0.115575, --0.066932, -0.316618, --0.556993, -0.709989, --0.728102, -0.610662, --0.401040, -0.171106, -0.000341, --0.052052, --0.034989, -0.221019, --0.412276, -0.495569, --0.395359, -0.125885, -0.196317, --0.399872, -0.351305, --0.043563, --0.377786, -0.677809, --0.656314, -0.261364, -0.375900, --1.005172, -1.378988, --1.363323, -0.983984, --0.399353, --0.174532, -0.550808, --0.640503, -0.481981, --0.216366, -0.011607, -0.032234, -0.057477, --0.145266, -0.080473, -0.193815, --0.590470, -0.923352, --1.018387, -0.815647, --0.396030, --0.078113, -0.459240, --0.678984, -0.745183, --0.693206, -0.545080, --0.311697, -0.025138, -0.244514, --0.416884, -0.454676, --0.391473, -0.300327, --0.224548, -0.132836, -0.052411, --0.366139, -0.723056, --0.927504, -0.786137, --0.255714, --0.482443, -1.090992, --1.261358, -0.901315, --0.199997, --0.479107, -0.813111, --0.706073, -0.329544, -0.002521, --0.036018, --0.275903, -0.766055, --1.173703, -1.301118, --1.109131, -0.711551, --0.296669, -0.032498, -0.001902, -0.156248, --0.370881, -0.470047, --0.340289, -0.007882, -0.353880, --0.520110, -0.368675, -0.009904, --0.340116, -0.331392, -0.114064, --0.803257, -1.348740, --1.410277, -0.923021, --0.153809, --0.459001, -0.577016, --0.164369, --0.506265, -1.034151, --1.127109, -0.744771, --0.080560, --0.574485, -0.983379, --1.048749, -0.815239, --0.421942, -0.043052, -0.168540, --0.135186, --0.103935, -0.393470, --0.527892, -0.365802, -0.071441, --0.588985, -0.917964, --0.872055, -0.462974, -0.100467, --0.530404, -0.620498, --0.350962, --0.120872, -0.569773, --0.836731, -0.902805, --0.860661, -0.812064, --0.770636, -0.644875, --0.317572, --0.237059, -0.891196, --1.412703, -1.600133, --1.409538, -0.980297, --0.538931, -0.249416, --0.116896, -0.010163, -0.220817, --0.622364, -1.095891, --1.457977, -1.549033, --1.314193, -0.814356, --0.181988, --0.433685, -0.900868, --1.121539, -1.049712, --0.716058, -0.236502, -0.222141, --0.515791, -0.592827, --0.507192, -0.360261, --0.214976, -0.051753, -0.194622, --0.544490, -0.904486, --1.085797, -0.912280, --0.352592, --0.416130, -1.070256, --1.306265, -1.018089, --0.372198, --0.278218, -0.598606, --0.472410, -0.064772, -0.294717, --0.335634, -0.027552, -0.404286, --0.640845, -0.499342, --0.071180, --0.333970, -0.406831, --0.069323, --0.451610, -0.770114, --0.609664, -0.000265, -0.740301, --1.225533, -1.256199, --0.928970, -0.533081, --0.328495, -0.374588, --0.522148, -0.552892, --0.351665, --0.008762, -0.316371, --0.356792, -0.047947, -0.504045, --1.050827, -1.320309, --1.148884, -0.566790, -0.205723, --0.857529, -1.140306, --0.997089, -0.586258, --0.178203, --0.013550, --0.046493, -0.224940, --0.345186, -0.327601, --0.236044, -0.201701, --0.294285, -0.448876, --0.507380, -0.341842, -0.035631, --0.460086, -0.710794, --0.653325, -0.330254, -0.061979, --0.296011, -0.255558, --0.002352, --0.274504, -0.388939, --0.276486, -0.023393, -0.205188, --0.278140, -0.171365, -0.042040, --0.262822, -0.435119, --0.562471, -0.667744, --0.740733, -0.726775, --0.572840, -0.293855, -0.003321, --0.173234, -0.133182, -0.064761, --0.255535, -0.270813, --0.057896, --0.282568, -0.568638, --0.662683, -0.557523, --0.367435, -0.243992, --0.284678, -0.489864, --0.775822, -1.015228, --1.079517, -0.879131, --0.404199, --0.248220, -0.890889, --1.320860, -1.421043, --1.224108, -0.888925, --0.600702, -0.464950, --0.468858, -0.527933, --0.567520, -0.569281, --0.554773, -0.540055, --0.515767, -0.471161, --0.427900, -0.437309, --0.535838, -0.701656, --0.860697, -0.942222, --0.932604, -0.873826, --0.805031, -0.703584, --0.488332, -0.094211, -0.439682, --0.947887, -1.215837, --1.112517, -0.686655, --0.154061, --0.222283, -0.284578, --0.069125, --0.220447, -0.335064, --0.123089, --0.384683, -0.989650, --1.428488, -1.510692, --1.218773, -0.715599, --0.250416, -0.015088, --0.037695, -0.181996, --0.253172, -0.138534, -0.111836, --0.316803, -0.284937, -0.055405, --0.597670, -1.104413, --1.331831, -1.161188, --0.664230, -0.066221, -0.373402, --0.495962, -0.317521, --0.002484, --0.241340, -0.277945, --0.101120, --0.187762, -0.452662, --0.593224, -0.575999, --0.424532, -0.191162, -0.067120, --0.299144, -0.459383, --0.506131, -0.407174, --0.157175, --0.200330, -0.567234, --0.820487, -0.873569, --0.733902, -0.510042, --0.352345, -0.361561, --0.528181, -0.745812, --0.885920, -0.878577, --0.744375, -0.562230, --0.402387, -0.273805, --0.122298, --0.117287, -0.446623, --0.760046, -0.874386, --0.632321, -0.024013, -0.757307, --1.380488, -1.540703, --1.129124, -0.301385, -0.601688, --1.234203, -1.416065, --1.194959, -0.773503, --0.362923, -0.065417, -0.142891, --0.334653, -0.533102, --0.675356, -0.664954, --0.466777, -0.162104, -0.088425, --0.153076, -0.029034, -0.143489, --0.170311, --0.063102, -0.505139, --0.958337, -1.192977, --1.080083, -0.662201, --0.125162, --0.304669, -0.474798, --0.372487, -0.114074, -0.129690, --0.230077, -0.168007, --0.037182, --0.019304, --0.096875, -0.370934, --0.676045, -0.847198, --0.783297, -0.513436, --0.184044, --0.026392, -0.012255, -0.197720, --0.456843, -0.580932, --0.445124, -0.046787, -0.491730, --0.975868, -1.221214, --1.131326, -0.739457, --0.194806, --0.302878, -0.589894, --0.602570, -0.387395, --0.060767, --0.249565, -0.446298, --0.477093, -0.335702, --0.064857, --0.243440, -0.470530, --0.524732, -0.401097, --0.200752, -0.079366, --0.145744, -0.377765, --0.623079, -0.695621, --0.506376, -0.134672, -0.215157, --0.343666, -0.180377, -0.183244, --0.566325, -0.814041, --0.871686, -0.778162, --0.606257, -0.408083, --0.201384, --0.012665, -0.229709, --0.435685, -0.604785, --0.692554, -0.636425, --0.383858, --0.054402, -0.566262, --0.962867, -1.070647, --0.835935, -0.364556, -0.138675, --0.490949, -0.627249, --0.606987, -0.538049, --0.485471, -0.435414, --0.333500, -0.155545, -0.052412, --0.196532, -0.200027, --0.059633, --0.147649, -0.311572, --0.358753, -0.301182, --0.230844, -0.259471, --0.437855, -0.707915, --0.925358, -0.944427, --0.711626, -0.306124, -0.098986, --0.328892, -0.296918, --0.044508, --0.284979, -0.522747, --0.564194, -0.426174, --0.236906, -0.155899, --0.266327, -0.508697, --0.707247, -0.682259, --0.379566, --0.072028, -0.425972, --0.475933, -0.205283, -0.182813, --0.395624, -0.264486, -0.113258, --0.427349, -0.385357, -0.044453, --0.574098, -0.787631, --0.454140, --0.273669, -0.933796, --1.058236, -0.491172, -0.501076, --1.397226, -1.742293, --1.406051, -0.624799, -0.171521, --0.611708, -0.555935, --0.109719, --0.487652, -1.004060, --1.303082, -1.356718, --1.209930, -0.937256, --0.614114, -0.303930, --0.052260, --0.116004, -0.194703, --0.188092, -0.101255, -0.060981, --0.281140, -0.512197, --0.678015, -0.704511, --0.568918, -0.329917, --0.106524, -0.009304, --0.068349, -0.211620, --0.313590, -0.283465, --0.131584, --0.034163, -0.082264, -0.046988, --0.290369, -0.492815, --0.502790, -0.268858, -0.127451, --0.523045, -0.770487, --0.814580, -0.701772, --0.527334, -0.367641, --0.248357, -0.165361, --0.130152, -0.189768, --0.391103, -0.709462, --1.006099, -1.073994, --0.768386, -0.137608, -0.555467, --0.967222, -0.888290, --0.391061, --0.203718, -0.525379, --0.380785, --0.141657, -0.748583, --1.127452, -1.109015, --0.715813, -0.102012, -0.541420, --1.048264, -1.296263, --1.220684, -0.848435, --0.326761, --0.109867, -0.254459, --0.063846, --0.289910, -0.514885, --0.392036, --0.068000, -0.618102, --0.922849, -0.757447, --0.130193, --0.732206, -1.504150, --1.905905, -1.807979, --1.268142, -0.504078, -0.187040, --0.543167, -0.449231, -0.006606, --0.573657, -0.969147, --1.029832, -0.790748, --0.437843, -0.169463, --0.069052, -0.081355, --0.097848, -0.067672, --0.034819, -0.075083, --0.198977, -0.316550, --0.301650, -0.101778, -0.202075, --0.440367, -0.473790, --0.296224, -0.043979, -0.096195, --0.014602, --0.248070, -0.530833, --0.661715, -0.567526, --0.309271, -0.025346, -0.168398, --0.247450, -0.272662, --0.325378, -0.437899, --0.566858, -0.619392, --0.508265, -0.204601, -0.234305, --0.673115, -0.946558, --0.936278, -0.641725, --0.197441, --0.188345, -0.346992, --0.243256, --0.014664, -0.255853, --0.358899, -0.317113, --0.216530, -0.152430, --0.151786, -0.159735, --0.098077, --0.050287, -0.198326, --0.193795, --0.078091, -0.596606, --1.183949, -1.583130, --1.591499, -1.170108, --0.468068, --0.245319, -0.699734, --0.737645, -0.377119, -0.199784, --0.730739, -0.995533, --0.917695, -0.587045, --0.187788, --0.120255, -0.286584, --0.367733, -0.453654, --0.590547, -0.760750, --0.921576, -1.053316, --1.166028, -1.261185, --1.293497, -1.181175, --0.870750, -0.408029, -0.047563, --0.292625, -0.197939, -0.201121, --0.706589, -1.058165, --1.072993, -0.739293, --0.208410, --0.304565, -0.643647, --0.780746, -0.794420, --0.785953, -0.798626, --0.795636, -0.702982, --0.476148, -0.139045, -0.226608, --0.523394, -0.677502, --0.655846, -0.466908, --0.159307, --0.181089, -0.446996, --0.545733, -0.441473, --0.177060, --0.142508, -0.397168, --0.502513, -0.438674, --0.249187, -0.017989, -0.162874, --0.225270, -0.150380, -0.020695, --0.199525, -0.287438, --0.224147, -0.023744, -0.224893, --0.399442, -0.409430, --0.251283, -0.019118, -0.140911, --0.113113, --0.113868, -0.428517, --0.651295, -0.637412, --0.369328, --0.018338, -0.301716, --0.288083, --0.071964, -0.645829, --1.179926, -1.430789, --1.292784, -0.847961, --0.308523, --0.110359, -0.305599, --0.318582, -0.273142, --0.271183, -0.321757, --0.348259, -0.260598, --0.035316, --0.254750, -0.482252, --0.549461, -0.455550, --0.297948, -0.204380, --0.242800, -0.374186, --0.482103, -0.455740, --0.264590, --0.026467, -0.304848, --0.479456, -0.522664, --0.464891, -0.357954, --0.240020, -0.125911, --0.023135, --0.046278, -0.042969, -0.062867, --0.250952, -0.432260, --0.481092, -0.310923, -0.052736, --0.459168, -0.701251, --0.630903, -0.249766, -0.284500, --0.742283, -0.945706, --0.857302, -0.582518, --0.288825, -0.096264, --0.011848, --0.048882, -0.170221, --0.344369, -0.453949, --0.350584, --0.024304, -0.569359, --1.063741, -1.294894, --1.183303, -0.818174, --0.389058, -0.074410, -0.033557, -0.065856, --0.318445, -0.645307, --0.948504, -1.114913, --1.047402, -0.719721, --0.214288, --0.297918, -0.636589, --0.704264, -0.531269, --0.245237, --0.009662, -0.145346, --0.148150, -0.043872, -0.147000, --0.417170, -0.736501, --1.012993, -1.103474, --0.888910, -0.369808, -0.292172, --0.832615, -1.019451, --0.783363, -0.259734, -0.286203, --0.604919, -0.590216, --0.316314, --0.028376, -0.261622, --0.306038, -0.211859, --0.101070, -0.077722, --0.164674, -0.303403, --0.408822, -0.435140, --0.404223, -0.376538, --0.387953, -0.404378, --0.337568, -0.120688, -0.210606, --0.504850, -0.581260, --0.368934, --0.006950, -0.275660, --0.193340, --0.279541, -0.931093, --1.425749, -1.519884, --1.212088, -0.726626, --0.354479, -0.273009, --0.464676, -0.768287, --1.002269, -1.065833, --0.964027, -0.768833, --0.566122, -0.425614, --0.393967, -0.489050, --0.683952, -0.896474, --1.010036, -0.930318, --0.646914, -0.253523, -0.096539, --0.275200, -0.249076, --0.086886, --0.095883, -0.210820, --0.236525, -0.205609, --0.163015, -0.136350, --0.135322, -0.162988, --0.212576, -0.250217, --0.213836, -0.051924, -0.217870, --0.486833, -0.609214, --0.504051, -0.222293, -0.084742, --0.275135, -0.311152, --0.257430, -0.192823, --0.129057, -0.020658, -0.145459, --0.281256, -0.239386, -0.052017, --0.481569, -0.788632, --0.736688, -0.297539, -0.303278, --0.723914, -0.726668, --0.322278, --0.255524, -0.708654, --0.843798, -0.645435, --0.234654, --0.226038, -0.608165, --0.842766, -0.913368, --0.844719, -0.694640, --0.536714, -0.428234, --0.380791, -0.359161, --0.314565, -0.226396, --0.116181, -0.020805, -0.049374, --0.125598, -0.249604, --0.421197, -0.575597, --0.621064, -0.515234, --0.317369, -0.163422, --0.169681, -0.334662, --0.520679, -0.541238, --0.297650, --0.135794, -0.545584, --0.713164, -0.557646, --0.188907, --0.162600, -0.290093, --0.135327, --0.179798, -0.426153, --0.396104, -0.016272, -0.610451, --1.248250, -1.633169, --1.591231, -1.117291, --0.378335, --0.362571, -0.865302, --1.014075, -0.849600, --0.521549, -0.199691, --0.001012, --0.031990, --0.090175, -0.332534, --0.644371, -0.952737, --1.166442, -1.206243, --1.047232, -0.739749, --0.385655, -0.080170, -0.141057, --0.310317, -0.483873, --0.679192, -0.845854, --0.899362, -0.795755, --0.585239, -0.392248, --0.327339, -0.397645, --0.491211, -0.454554, --0.205924, --0.202939, -0.620543, --0.891181, -0.935641, --0.765313, -0.441097, --0.028491, --0.414214, -0.824123, --1.132602, -1.290552, --1.297070, -1.197323, --1.045051, -0.865957, --0.660511, -0.444695, --0.281283, -0.255779, --0.403415, -0.649778, --0.829551, -0.787771, --0.494871, -0.085384, -0.218228, --0.251056, -0.022196, -0.279472, --0.397380, -0.167740, -0.372427, --0.996147, -1.407771, --1.401387, -0.965532, --0.282202, --0.369375, -0.746059, --0.743260, -0.423724, -0.031535, --0.419358, -0.608346, --0.585540, -0.437178, --0.280693, -0.191234, --0.164252, -0.131245, --0.013836, --0.217684, -0.514700, --0.767211, -0.860363, --0.740554, -0.450724, --0.108261, --0.166381, -0.326910, --0.430559, -0.594317, --0.902024, -1.323999, --1.708554, -1.860003, --1.659483, -1.151978, --0.539715, -0.080562, -0.049045, -0.155289, --0.534002, -0.860485, --0.965067, -0.812732, --0.495437, -0.154903, -0.105612, --0.261181, -0.336966, --0.347526, -0.264675, --0.049418, --0.278508, -0.603089, --0.758699, -0.641823, --0.303337, --0.060817, -0.227130, --0.089281, --0.275611, -0.663378, --0.872338, -0.809567, --0.511672, -0.092971, -0.319840, --0.623344, -0.746855, --0.663119, -0.408133, --0.086470, --0.163948, -0.239741, --0.129802, --0.079634, -0.257999, --0.305620, -0.203979, --0.015513, --0.158556, -0.232393, --0.173262, -0.009367, -0.187835, --0.335008, -0.370687, --0.284346, -0.131581, --0.021077, -0.063371, --0.294861, -0.621967, --0.838403, -0.730602, --0.219929, --0.553297, -1.275927, --1.626197, -1.459237, --0.893780, -0.240848, -0.182624, --0.236901, -0.022771, -0.213157, --0.263332, -0.104942, -0.097245, --0.132271, --0.078205, -0.402450, --0.587301, -0.450617, --0.032007, --0.413668, -0.578619, --0.304434, --0.314657, -0.989548, --1.404650, -1.383516, --0.958936, -0.327732, -0.261913, --0.620784, -0.678751, --0.485101, -0.168959, -0.113154, --0.225610, -0.093902, -0.263566, --0.723241, -1.084381, --1.147781, -0.820756, --0.188650, --0.505261, -0.977272, --1.054365, -0.762380, --0.294073, --0.117239, -0.329002, --0.341103, -0.249367, --0.153978, -0.097516, --0.069433, -0.054219, --0.069264, -0.155433, --0.330522, -0.550239, --0.716573, -0.735356, --0.583743, -0.337300, --0.132339, -0.083929, --0.211896, -0.424145, --0.571830, -0.544091, --0.342259, -0.082012, -0.082346, --0.063160, --0.098556, -0.260362, --0.276163, -0.094092, -0.214030, --0.505738, -0.656725, --0.622492, -0.442615, --0.204311, --0.000561, -0.106167, --0.092606, --0.003226, -0.097525, --0.101162, --0.020607, -0.210194, --0.337899, -0.277417, -0.010672, --0.444933, -0.861910, --1.101334, -1.085022, --0.848542, -0.517701, --0.248794, -0.158779, --0.270441, -0.494937, --0.666570, -0.624909, --0.308082, --0.196599, -0.683639, --0.934034, -0.837631, --0.460813, -0.016706, -0.248698, --0.190197, --0.160011, -0.617315, --0.954224, -1.024423, --0.823256, -0.453326, --0.034655, --0.361495, -0.703170, --0.935647, -0.948355, --0.632846, -0.004570, -0.721428, --1.201245, -1.167268, --0.627219, --0.107802, -0.614716, --0.643048, -0.280630, -0.127962, --0.249054, -0.008154, -0.367295, --0.534529, -0.301197, -0.230237, --0.736972, -0.901261, --0.616543, -0.036192, -0.548925, --0.899324, -0.950114, --0.804843, -0.633439, --0.560874, -0.612838, --0.728519, -0.809629, --0.772418, -0.587856, --0.304079, -0.040282, -0.059273, -0.098305, --0.487140, -0.953380, --1.283324, -1.315564, --1.027785, -0.541551, --0.043106, --0.323345, -0.516289, --0.576476, -0.555041, --0.459314, -0.265340, -0.017453, --0.297900, -0.431292, --0.318508, --0.000009, -0.340936, --0.485557, -0.329074, -0.036595, --0.372261, -0.444340, --0.178946, --0.287585, -0.696419, --0.835074, -0.675213, --0.386382, -0.214779, --0.308327, -0.609151, --0.890203, -0.911055, --0.582708, -0.025948, -0.513746, --0.827462, -0.865001, --0.738748, -0.619756, --0.608698, -0.671360, --0.674400, -0.487965, --0.083428, --0.434484, -0.877289, --1.072590, -0.956388, --0.606609, -0.199273, -0.087044, --0.162792, -0.060973, -0.104694, --0.223794, -0.253234, --0.216855, -0.148916, --0.038960, --0.164693, -0.487724, --0.857564, -1.102052, --1.044517, -0.637546, --0.032880, --0.480106, -0.639883, --0.374219, --0.153171, -0.642553, --0.834707, -0.647069, --0.189701, --0.329536, -0.730349, --0.932136, -0.945420, --0.819182, -0.601000, --0.335160, -0.077745, -0.107050, --0.176877, -0.138370, --0.036822, --0.089354, -0.246455, --0.471293, -0.767915, --1.052526, -1.171226, --0.999509, -0.556364, --0.036069, --0.288371, -0.237944, -0.144082, --0.608102, -0.859356, --0.757286, -0.414294, --0.121449, -0.149795, --0.562897, -1.169774, --1.649910, -1.762503, --1.493328, -1.038383, --0.642845, -0.421194, --0.294843, -0.089354, -0.294557, --0.777619, -1.148282, --1.216303, -0.949288, --0.489608, -0.051110, -0.214998, --0.286004, -0.233309, --0.136791, -0.025255, -0.116095, --0.293876, -0.469212, --0.574891, -0.573439, --0.501804, -0.455353, --0.515705, -0.678069, --0.841222, -0.875638, --0.720958, -0.436844, --0.164514, -0.026561, --0.042533, -0.126226, --0.164618, -0.110635, --0.010695, --0.056010, -0.071157, --0.116198, -0.312454, --0.703909, -1.179512, --1.509101, -1.482840, --1.063291, -0.441336, -0.053278, --0.141724, --0.228363, -0.834871, --1.300244, -1.311937, --0.808533, -0.011515, -0.719801, --1.112818, -1.133803, --0.967955, -0.851556, --0.885232, -0.964867, --0.874878, -0.467564, -0.205825, --0.905618, -1.344665, --1.360119, -1.002618, --0.492001, -0.077307, -0.105578, --0.093117, -0.042857, --0.113379, -0.353662, --0.668987, -0.879295, --0.829333, -0.481274, -0.064489, --0.626980, -1.038705, --1.216958, -1.175118, --0.980366, -0.696705, --0.354250, --0.039903, -0.465138, --0.857928, -1.116022, --1.141427, -0.900811, --0.465850, -0.001191, -0.304196, --0.329318, -0.084117, -0.295155, --0.615801, -0.723393, --0.570867, -0.231561, -0.143212, --0.397532, -0.440919, --0.283952, -0.022600, -0.219238, --0.354595, -0.366419, --0.292550, -0.183154, --0.069202, --0.036058, -0.115422, --0.138282, -0.080160, -0.045308, --0.176353, -0.233023, --0.169101, -0.006524, -0.175388, --0.290031, -0.300166, --0.245305, -0.223005, --0.331121, -0.598234, --0.940347, -1.178987, --1.129183, -0.719318, --0.066503, --0.559616, -0.883518, --0.794122, -0.419051, --0.041725, --0.086864, --0.089958, -0.410992, --0.621267, -0.548320, --0.209021, --0.213581, -0.490868, --0.480908, -0.196557, -0.213876, --0.547756, -0.643859, --0.451088, -0.046264, -0.402909, --0.714105, -0.773119, --0.583758, -0.257166, -0.055225, --0.245588, -0.297816, --0.270576, -0.232545, --0.202072, -0.137661, -0.016987, --0.273025, -0.571311, --0.810890, -0.908310, --0.843774, -0.665047, --0.453961, -0.285775, --0.209271, -0.250931, --0.421560, -0.703939, --1.027743, -1.266476, --1.285774, -1.028631, --0.575934, -0.121820, -0.135936, --0.116839, --0.100845, -0.348667, --0.490096, -0.501714, --0.461269, -0.469734, --0.577123, -0.759167, --0.938836, -1.019040, --0.910554, -0.566164, --0.026898, --0.549026, -0.922637, --0.888734, -0.411001, -0.320737, --0.971979, -1.248071, --1.065634, -0.596797, --0.156700, -0.009514, --0.216490, -0.615482, --0.933984, -0.957532, --0.650303, -0.162677, -0.266998, --0.448632, -0.333285, --0.017810, --0.326475, -0.547885, --0.577657, -0.437706, --0.204071, --0.042955, -0.252956, --0.410270, -0.515988, --0.565258, -0.538511, --0.412646, -0.183536, -0.117002, --0.421891, -0.648923, --0.731416, -0.646470, --0.426615, -0.146818, -0.109841, --0.289821, -0.386784, --0.428720, -0.446704, --0.451031, -0.431691, --0.376988, -0.290383, --0.192949, -0.116259, --0.095886, -0.164990, --0.337186, -0.579057, --0.796673, -0.867969, --0.722102, -0.415176, --0.131367, -0.080243, --0.344986, -0.792733, --1.130355, -1.087093, --0.604686, --0.101521, -0.661941, --0.776162, -0.390617, -0.286020, --0.930631, -1.306423, --1.378163, -1.276013, --1.155683, -1.072605, --0.963317, -0.734283, --0.372559, --0.017235, -0.278536, --0.315036, -0.159587, -0.050656, --0.169348, -0.133005, -0.012987, --0.164858, -0.243654, --0.249845, -0.253677, --0.332287, -0.499008, --0.674102, -0.718517, --0.514360, -0.046786, -0.561949, --1.093468, -1.335119, --1.189758, -0.727753, --0.145514, --0.344551, -0.620814, --0.686158, -0.616567, --0.477110, -0.277524, -0.003408, --0.358458, -0.720704, --0.993301, -1.115399, --1.106153, -1.046279, --1.008567, -0.990049, --0.900876, -0.627243, --0.131935, --0.476717, -0.967952, --1.109232, -0.818219, --0.242515, --0.303146, -0.518137, --0.301549, --0.184817, -0.621517, --0.731380, -0.439384, -0.104743, --0.636020, -0.928496, --0.898194, -0.613628, --0.234970, --0.070215, -0.195642, --0.130012, --0.051537, -0.236255, --0.343800, -0.378761, --0.426702, -0.585254, --0.871304, -1.173425, --1.296578, -1.081812, --0.523028, --0.203554, -0.824824, --1.117813, -1.023654, --0.660955, -0.241902, -0.045444, --0.117000, -0.001506, -0.206272, --0.407251, -0.540273, --0.593641, -0.593814, --0.585543, -0.611625, --0.693969, -0.817420, --0.925120, -0.937715, --0.796906, -0.511290, --0.169610, --0.097012, -0.183415, --0.062371, --0.213996, -0.553187, --0.860730, -1.049372, --1.033931, -0.749931, --0.207061, --0.465007, -1.040234, --1.303276, -1.176573, --0.770460, -0.309402, -0.014722, --0.152223, -0.189772, --0.246546, -0.365763, --0.489980, -0.531856, --0.470553, -0.386117, --0.398423, -0.559881, --0.792894, -0.932490, --0.850146, -0.563717, --0.239913, -0.076379, --0.149876, -0.352431, --0.472601, -0.363721, --0.067391, --0.206684, -0.233002, -0.059609, --0.526327, -0.898039, --0.957967, -0.677329, --0.218636, --0.185707, -0.384731, --0.382412, -0.292101, --0.222350, -0.190194, --0.125694, --0.046391, -0.321521, --0.596305, -0.727979, --0.625729, -0.309420, -0.098327, --0.433721, -0.566027, --0.447938, -0.126925, -0.278175, --0.624441, -0.801183, --0.775151, -0.601524, --0.389798, -0.240809, --0.194307, -0.221705, --0.265164, -0.287945, --0.294425, -0.308034, --0.334552, -0.349686, --0.324022, -0.259920, --0.200090, -0.194961, --0.256339, -0.343278, --0.398200, -0.402524, --0.397127, -0.440290, --0.536103, -0.602108, --0.520086, -0.242417, -0.131553, --0.384007, -0.311322, -0.124854, --0.738360, -1.204700, --1.245055, -0.789431, --0.011882, --0.781691, -1.330845, --1.541960, -1.483528, --1.285467, -1.038091, --0.767438, -0.483781, --0.235200, -0.105064, --0.155353, -0.372368, --0.667062, -0.929766, --1.092509, -1.150777, --1.135234, -1.064886, --0.924303, -0.685043, --0.353579, -0.003334, -0.244876, --0.291050, -0.126183, -0.153835, --0.410285, -0.557553, --0.617318, -0.685892, --0.839461, -1.053479, --1.201639, -1.137240, --0.798557, -0.264239, -0.277764, --0.627728, -0.677961, --0.462700, -0.127980, -0.156164, --0.285464, -0.260343, --0.158453, -0.070534, --0.047951, -0.090809, --0.168265, -0.242903, --0.281432, -0.258194, --0.165618, -0.030408, -0.083504, --0.100225, --0.025337, -0.277804, --0.587349, -0.865072, --1.040422, -1.079147, --0.983424, -0.788271, --0.558596, -0.374794, --0.297242, -0.324406, --0.380069, -0.354637, --0.182820, --0.098403, -0.362890, --0.479471, -0.408539, --0.237357, -0.124360, --0.192262, -0.447783, --0.783586, -1.054573, --1.168487, -1.127571, --1.001127, -0.859534, --0.722019, -0.552317, --0.297987, --0.058217, -0.469501, --0.835258, -1.043820, --1.026599, -0.797487, --0.455362, -0.143013, -0.022878, --0.013963, --0.094760, -0.172554, --0.117351, --0.076837, -0.315036, --0.462777, -0.432851, --0.241372, --0.000477, -0.151111, --0.120624, --0.075483, -0.319769, --0.455392, -0.378335, --0.109828, --0.200068, -0.351949, --0.219669, --0.163219, -0.617956, --0.934210, -1.006871, --0.898614, -0.783857, --0.816639, -1.018033, --1.258175, -1.338084, --1.112093, -0.577427, -0.111844, --0.705450, -0.962671, --0.761101, -0.165082, -0.583272, --1.161244, -1.316595, --0.998055, -0.386859, -0.199550, --0.483870, -0.382335, --0.040876, --0.267587, -0.317149, --0.061148, --0.359084, -0.723807, --0.877817, -0.806199, --0.601393, -0.363817, --0.123575, --0.157087, -0.512381, --0.899371, -1.186453, --1.217933, -0.912196, --0.329452, --0.335359, -0.834987, --0.986642, -0.760213, --0.288098, --0.209775, -0.540818, --0.623666, -0.495607, --0.254942, --0.005631, -0.225658, --0.362270, -0.374955, --0.244322, -0.012061, -0.208352, --0.285740, -0.165674, -0.070606, --0.246896, -0.221663, --0.015511, --0.170669, -0.082691, -0.389690, --1.087901, -1.640834, --1.690155, -1.143853, --0.276306, --0.418878, -0.547512, --0.093639, --0.546707, -0.822171, --0.408455, --0.551393, -1.525550, --1.940613, -1.553560, --0.592079, --0.417948, -0.996502, --0.981269, -0.564635, --0.114696, --0.064849, --0.120815, -0.563577, --1.054639, -1.393047, --1.449146, -1.187890, --0.677046, -0.081475, -0.380740, --0.531987, -0.341189, -0.034564, --0.325467, -0.312314, -0.031284, --0.524592, -0.908095, --1.016557, -0.864846, --0.591939, -0.328618, --0.111349, --0.090790, -0.281902, --0.386221, -0.300843, --0.009985, --0.352387, -0.568277, --0.493312, -0.180592, -0.139125, --0.218660, --0.020882, -0.422422, --0.694452, -0.606281, --0.136942, --0.519514, -1.079743, --1.328735, -1.207486, --0.798238, -0.250158, -0.288669, --0.702574, -0.918339, --0.920989, -0.773065, --0.605503, -0.557652, --0.690965, -0.939477, --1.146080, -1.169742, --0.987355, -0.711158, --0.505601, -0.466858, --0.557583, -0.645578, --0.612519, -0.446370, --0.246849, -0.144035, --0.195847, -0.341922, --0.443705, -0.375631, --0.101445, --0.308565, -0.716055, --0.974095, -0.978071, --0.701111, -0.215800, -0.309483, --0.662150, -0.684295, --0.372034, --0.098560, -0.458125, --0.501994, -0.216319, -0.216527, --0.537471, -0.570799, --0.317995, --0.066810, -0.388081, --0.525144, -0.482377, --0.355957, -0.254291, --0.232052, -0.278382, --0.354789, -0.440990, --0.545587, -0.675183, --0.796644, -0.836325, --0.726135, -0.460959, --0.117908, --0.182364, -0.345162, --0.351853, -0.258638, --0.150920, -0.088211, --0.073995, -0.063300, -0.001467, --0.147730, -0.344903, --0.507791, -0.535790, --0.373030, -0.055033, -0.294567, --0.526398, -0.553100, --0.403120, -0.200810, --0.086093, -0.132000, --0.315840, -0.554570, --0.767256, -0.915511, --0.999992, -1.028453, --0.987367, -0.841759, --0.564340, -0.174549, -0.242594, --0.560337, -0.672850, --0.560552, -0.310967, --0.072886, --0.029028, --0.039761, -0.222677, --0.430046, -0.605625, --0.749612, -0.886183, --1.010749, -1.066093, --0.970491, -0.678605, --0.231281, --0.239948, -0.558132, --0.573520, -0.232539, -0.381670, --1.056290, -1.514802, --1.533022, -1.060078, --0.271408, --0.500477, -0.938952, --0.920482, -0.577490, --0.200152, -0.044802, --0.180481, -0.470688, --0.684280, -0.646067, --0.330069, --0.143230, -0.579716, --0.803037, -0.724138, --0.370600, --0.127505, -0.588377, --0.846131, -0.808992, --0.486892, --0.015394, -0.531719, --0.886338, -0.957461, --0.734843, -0.338402, -0.030941, --0.196734, -0.107187, -0.143384, --0.393827, -0.536732, --0.582476, -0.613699, --0.674346, -0.697799, --0.548388, -0.148516, -0.416953, --0.916315, -1.106776, --0.890642, -0.374752, -0.207374, --0.645373, -0.860789, --0.906498, -0.880702, --0.841744, -0.790921, --0.718797, -0.651295, --0.641030, -0.710627, --0.809161, -0.833977, --0.709435, -0.456062, --0.186842, -0.027351, --0.021108, -0.094353, --0.107757, --0.043305, -0.350444, --0.687231, -0.878687, --0.801949, -0.460473, -0.008551, --0.398164, -0.535167, --0.369960, -0.003359, -0.367879, --0.560608, -0.508703, --0.296999, -0.101010, --0.067111, -0.211031, --0.404932, -0.465585, --0.284612, --0.088518, -0.466545, --0.631010, -0.452155, -0.050480, --0.730972, -1.393482, --1.870316, -2.066618, --1.965559, -1.608115, --1.064916, -0.413233, -0.272483, --0.915999, -1.429644, --1.717474, -1.702450, --1.368786, -0.790852, --0.120402, --0.470020, -0.857836, --1.013538, -0.993128, --0.891396, -0.788575, --0.719414, -0.672835, --0.613392, -0.511586, --0.371337, -0.242104, --0.201970, -0.308732, --0.541390, -0.776028, --0.832013, -0.579239, --0.042769, --0.574673, -0.987104, --0.988544, -0.579582, -0.031774, --0.558441, -0.803776, --0.755978, -0.550454, --0.342283, -0.193600, --0.058810, --0.134597, -0.389112, --0.610665, -0.674039, --0.522762, -0.218960, -0.096599, --0.298768, -0.349216, --0.291900, -0.186804, --0.047053, --0.160955, -0.453958, --0.764460, -0.941387, --0.837083, -0.422329, -0.163283, --0.676942, -0.914399, --0.824985, -0.515767, --0.148971, --0.178668, -0.479140, --0.813185, -1.188906, --1.510651, -1.623995, --1.424104, -0.946776, --0.375503, --0.044504, -0.135895, -0.112505, --0.536356, -0.885044, --0.964766, -0.754839, --0.423742, -0.225715, --0.334012, -0.716317, --1.140262, -1.314506, --1.077305, -0.505595, -0.131476, --0.543971, -0.600088, --0.392373, -0.153983, --0.093656, -0.268015, --0.569973, -0.821581, --0.891145, -0.756646, --0.493956, -0.222744, --0.053654, -0.053588, --0.224042, -0.490782, --0.719864, -0.772815, --0.585135, -0.222593, -0.130863, --0.260899, -0.045021, -0.460351, --1.024283, -1.345607, --1.208848, -0.607512, -0.238296, --0.988055, -1.356045, --1.257504, -0.842984, --0.404166, -0.209116, --0.360342, -0.750047, --1.128197, -1.238915, --0.948636, -0.301367, -0.519666, --1.290069, -1.839641, --2.094441, -2.061024, --1.788806, -1.351222, --0.852059, -0.427235, --0.208753, -0.255065, --0.495253, -0.741886, --0.785213, -0.519356, --0.017218, --0.503014, -0.804965, --0.772868, -0.469960, --0.081003, --0.212436, -0.331941, --0.313098, -0.238352, --0.160623, -0.080753, -0.015067, --0.105879, -0.128155, --0.019954, --0.220244, -0.511457, --0.725676, -0.757212, --0.578774, -0.249719, -0.121392, --0.428657, -0.602746, --0.617911, -0.486129, --0.255064, -0.008014, -0.151430, --0.139458, --0.058809, -0.365173, --0.634411, -0.724138, --0.572074, -0.236160, -0.128013, --0.344995, -0.312395, --0.056610, --0.283693, -0.538383, --0.600266, -0.472625, --0.243983, -0.016933, -0.153207, --0.269902, -0.360073, --0.428275, -0.437789, --0.331589, -0.078146, -0.288812, --0.665342, -0.917019, --0.945402, -0.741445, --0.389714, -0.018984, -0.266593, --0.429170, -0.488326, --0.478237, -0.409779, --0.265513, -0.026636, -0.291443, --0.621204, -0.856962, --0.898674, -0.708139, --0.347976, --0.025372, -0.224446, --0.126129, --0.250641, -0.733583, --1.068125, -1.040213, --0.588553, --0.154471, -0.917776, --1.416137, -1.479737, --1.122260, -0.516482, -0.101479, --0.542356, -0.732572, --0.716418, -0.603405, --0.495390, -0.431503, --0.377760, -0.266352, --0.060370, --0.200253, -0.408756, --0.456363, -0.306485, --0.022740, --0.268587, -0.448358, --0.453457, -0.280727, -0.032678, --0.416658, -0.758786, --0.911907, -0.750500, --0.260068, --0.406226, -0.967612, --1.153641, -0.862208, --0.230314, --0.439503, -0.857064, --0.910453, -0.709656, --0.483864, -0.411424, --0.505878, -0.633031, --0.633260, -0.449169, --0.163080, --0.075142, -0.167299, --0.139808, -0.116667, --0.215043, -0.444188, --0.687540, -0.787267, --0.669294, -0.408914, --0.177452, -0.105466, --0.174461, -0.232705, --0.129618, --0.143212, -0.430058, --0.536043, -0.398235, --0.155963, -0.052481, --0.240274, -0.644339, --0.993545, -1.001190, --0.563541, --0.162062, -0.846426, --1.177029, -1.023094, --0.486436, --0.170994, -0.663899, --0.807478, -0.577713, --0.097864, --0.429286, -0.810547, --0.937003, -0.813915, --0.534341, -0.214623, -0.066860, --0.289242, -0.462587, --0.587552, -0.642270, --0.608016, -0.505204, --0.399392, -0.364458, --0.430746, -0.560456, --0.668388, -0.668463, --0.510849, -0.191827, -0.252860, --0.750434, -1.186540, --1.415320, -1.306998, --0.825527, -0.089259, -0.643576, --1.084935, -1.073836, --0.680358, -0.174555, -0.136632, --0.101731, --0.189371, -0.490248, --0.588640, -0.454101, --0.229465, -0.084448, --0.065213, -0.072885, -0.013955, --0.187640, -0.274585, --0.059458, --0.520888, -1.270049, --1.808709, -1.799288, --1.173744, -0.209686, -0.606093, --0.851994, -0.418064, -0.428454, --1.200804, -1.476551, --1.133168, -0.396107, -0.318517, --0.658830, -0.531582, --0.127150, --0.222645, -0.253299, -0.087476, --0.636005, -1.132289, --1.372566, -1.299881, --0.996973, -0.615157, --0.301415, -0.159914, --0.240641, -0.532121, --0.954027, -1.369126, --1.630051, -1.644018, --1.414065, -1.026590, --0.595656, -0.208159, -0.091770, --0.280304, -0.330513, --0.222501, --0.018041, -0.297182, --0.485974, -0.500456, --0.367319, -0.212578, --0.169970, -0.277652, --0.448996, -0.545998, --0.496969, -0.360917, --0.284025, -0.382570, --0.645280, -0.930800, --1.059852, -0.931894, --0.583701, -0.155680, -0.200775, --0.405788, -0.471874, --0.464086, -0.443956, --0.443535, -0.478586, --0.569672, -0.734748, --0.952158, -1.133597, --1.150160, -0.911472, --0.444653, --0.093040, -0.489608, --0.596034, -0.407558, --0.057168, --0.266004, -0.413689, --0.334739, -0.075347, -0.255103, --0.526789, -0.631785, --0.526643, -0.262383, -0.026347, --0.189061, -0.157248, --0.005484, --0.082757, --0.059907, -0.448802, --0.903613, -1.145066, --0.979403, -0.446656, -0.176719, --0.534252, -0.407981, -0.145967, --0.836716, -1.326961, --1.441978, -1.257555, --1.012310, -0.914938, --0.989727, -1.070155, --0.939322, -0.509583, -0.088923, --0.572113, -0.674233, --0.318144, --0.320192, -0.890200, --1.046461, -0.634730, -0.215000, --1.141976, -1.732523, --1.731277, -1.172448, --0.359149, --0.297463, -0.490883, --0.169330, --0.454405, -1.033901, --1.285968, -1.143406, --0.777390, -0.478511, --0.470631, -0.774999, --1.210398, -1.523136, --1.551888, -1.312730, --0.953485, -0.626262, --0.383965, -0.177322, -0.057840, --0.306595, -0.459564, --0.393720, -0.087521, -0.322296, --0.595355, -0.528190, --0.092977, --0.519907, -0.994034, --1.068349, -0.700193, --0.104211, --0.366484, -0.428222, --0.033675, --0.607816, -1.164332, --1.377105, -1.192927, --0.762270, -0.324776, --0.067003, -0.035792, --0.142892, -0.241809, --0.226406, -0.096545, -0.045202, --0.066298, --0.094302, -0.362973, --0.557065, -0.494096, --0.116506, --0.454581, -0.978446, --1.230072, -1.122990, --0.743037, -0.281403, -0.079614, --0.253435, -0.264782, --0.202481, -0.152338, --0.154754, -0.204696, --0.280714, -0.372773, --0.485644, -0.617875, --0.738363, -0.786128, --0.699468, -0.456044, --0.093569, --0.305149, -0.653527, --0.900063, -1.038547, --1.084730, -1.040446, --0.878434, -0.566852, --0.120915, --0.361418, -0.721264, --0.820928, -0.636795, --0.293241, -0.002049, -0.060319, -0.143230, --0.493724, -0.793368, --0.880550, -0.708305, --0.348476, --0.063168, -0.395320, --0.565663, -0.553524, --0.392370, -0.152801, -0.083684, --0.259542, -0.369539, --0.457553, -0.572119, --0.707352, -0.780916, --0.681556, -0.361903, -0.095335, --0.501306, -0.670653, --0.540347, -0.206915, -0.146902, --0.378210, -0.464959, --0.485307, -0.523406, --0.586258, -0.599345, --0.477212, -0.204378, -0.140051, --0.427685, -0.554659, --0.489122, -0.269795, -0.026205, --0.313787, -0.513797, --0.559207, -0.408768, --0.069186, --0.389583, -0.843586, --1.152362, -1.210818, --0.992520, -0.564769, --0.067065, --0.340566, -0.540717, --0.506319, -0.308097, --0.074118, --0.080536, -0.114739, --0.075132, -0.052777, --0.111681, -0.239214, --0.354142, -0.366681, --0.246577, -0.048976, -0.120722, --0.178541, -0.119851, --0.024247, -0.004075, --0.130595, -0.385813, --0.672301, -0.876690, --0.945744, -0.920688, --0.898960, -0.944806, --1.014379, -0.963067, --0.646455, -0.049930, -0.655092, --1.188891, -1.337193, --1.101712, -0.712147, --0.479033, -0.584345, --0.955660, -1.313373, --1.357708, -0.968053, --0.284355, --0.375444, -0.702258, --0.570751, -0.103073, -0.407016, --0.660844, -0.517108, --0.059608, --0.465046, -0.798724, --0.817146, -0.580151, --0.263407, -0.028670, -0.073423, --0.106417, -0.169064, --0.304285, -0.465502, --0.559455, -0.525680, --0.389950, -0.253544, --0.228195, -0.361427, --0.599882, -0.811784, --0.855797, -0.659846, --0.268507, --0.168820, -0.467734, --0.502853, -0.273729, -0.096425, --0.428103, -0.575233, --0.483110, -0.189628, -0.211713, --0.608642, -0.887953, --0.949124, -0.738173, --0.296534, --0.217285, -0.577233, --0.603971, -0.274591, -0.256130, --0.749507, -1.028843, --1.069345, -0.968766, --0.834096, -0.688342, --0.477566, -0.163260, -0.195143, --0.452319, -0.478932, --0.263411, --0.075528, -0.372225, --0.516438, -0.492439, --0.343141, -0.117979, -0.137616, --0.356068, -0.440498, --0.314591, --0.000161, -0.353770, --0.530428, -0.374299, -0.108151, --0.742772, -1.285005, --1.554556, -1.521571, --1.295532, -1.034184, --0.839643, -0.709819, --0.570533, -0.355430, --0.071837, --0.193030, -0.324749, --0.252372, --0.008776, -0.362976, --0.677315, -0.834406, --0.772311, -0.501610, --0.099429, --0.316496, -0.626784, --0.750384, -0.668743, --0.424213, -0.095814, -0.231086, --0.485003, -0.614880, --0.592157, -0.417936, --0.131885, --0.190961, -0.464715, --0.629657, -0.677604, --0.645614, -0.580384, --0.498767, -0.374642, --0.163782, --0.149907, -0.521138, --0.851073, -1.036485, --1.029436, -0.865862, --0.640929, -0.447711, --0.324317, -0.248245, --0.179128, -0.111970, --0.094221, -0.189414, --0.412667, -0.687520, --0.862345, -0.786981, --0.408151, --0.176881, -0.752583, --1.096893, -1.107864, --0.859898, -0.544287, --0.331896, -0.259823, --0.230413, -0.123425, -0.074653, --0.239483, -0.212240, -0.045500, --0.382141, -0.545789, --0.371951, --0.083558, -0.582315, --0.885083, -0.925847, --0.831595, -0.776698, --0.807507, -0.798760, --0.582855, -0.136991, -0.342247, --0.551679, -0.299582, -0.340292, --1.055605, -1.481001, --1.409800, -0.895029, --0.195254, --0.375605, -0.593694, --0.399422, --0.104647, -0.703638, --1.144861, -1.228469, --0.895431, -0.270494, -0.383175, --0.793311, -0.821936, --0.529519, -0.116236, -0.214272, --0.368976, -0.383098, --0.349156, -0.330766, --0.330796, -0.322689, --0.296198, -0.266028, --0.240166, -0.190766, --0.069934, --0.135841, -0.364365, --0.499175, -0.450349, --0.233146, --0.025609, -0.171494, --0.140223, -0.018145, -0.009826, -0.203374, --0.641331, -1.103864, --1.315546, -1.095686, --0.479376, --0.288018, -0.876136, --1.036553, -0.717604, --0.075295, --0.611699, -1.073472, --1.167274, -0.932177, --0.553399, -0.247955, --0.131032, -0.147683, --0.124762, --0.084106, -0.465296, --0.832069, -0.952588, --0.726236, -0.269648, -0.158173, --0.334817, -0.219018, -0.045865, --0.260536, -0.319882, --0.268591, -0.232336, --0.294859, -0.424919, --0.505139, -0.429268, --0.187850, --0.118416, -0.337437, --0.348649, -0.119088, -0.287999, --0.740474, -1.081141, --1.177756, -0.974923, --0.532514, -0.021869, -0.340018, --0.399815, -0.158819, -0.221375, --0.514784, -0.568870, --0.385938, -0.088779, -0.196275, --0.436874, -0.687988, --0.989361, -1.266175, --1.336445, -1.038595, --0.385035, --0.386677, -0.920720, --0.943846, -0.426127, -0.402083, --1.178936, -1.595657, --1.528530, -1.060785, --0.409344, --0.187087, -0.563321, --0.674680, -0.587847, --0.425724, -0.293779, --0.227282, -0.190693, --0.128591, -0.028903, -0.053029, --0.032505, --0.130500, -0.378585, --0.569246, -0.549551, --0.246822, --0.280219, -0.859391, --1.281134, -1.393235, --1.168892, -0.716120, --0.224131, --0.126866, -0.245174, --0.153990, --0.044121, -0.233564, --0.336400, -0.323288, --0.198275, --0.014425, -0.271713, --0.516062, -0.697236, --0.797225, -0.827795, --0.793803, -0.659366, --0.367277, --0.085112, -0.579803, --0.903562, -0.878144, --0.505797, -0.002666, -0.330319, --0.313557, -0.011803, -0.326284, --0.462631, -0.338829, --0.087327, --0.108892, -0.175615, --0.189504, -0.280311, --0.493443, -0.737279, --0.854262, -0.747660, --0.459096, -0.145554, -0.014674, -0.082138, --0.417310, -0.859719, --1.219000, -1.322854, --1.095242, -0.601754, --0.029560, --0.399711, -0.539441, --0.382671, -0.042308, -0.331443, --0.631585, -0.817870, --0.884168, -0.818934, --0.607253, -0.273380, -0.086330, --0.330170, -0.353797, --0.167470, --0.099941, -0.282800, --0.288931, -0.157317, --0.024057, -0.025302, --0.205302, -0.483912, --0.695230, -0.672969, --0.343395, --0.214747, -0.778791, --1.074966, -0.926270, --0.376424, --0.300321, -0.738289, --0.701540, -0.246465, -0.296299, --0.527921, -0.248508, -0.397031, --1.002838, -1.167277, --0.760818, -0.011004, -0.655831, --0.904927, -0.709903, --0.344033, -0.158515, --0.316758, -0.684205, --0.951902, -0.890251, --0.529316, -0.124047, -0.061335, -0.029722, --0.204554, -0.183798, -0.168878, --0.735153, -1.229622, --1.407118, -1.225149, --0.847374, -0.506552, --0.345740, -0.353364, --0.417590, -0.432058, --0.361161, -0.226430, --0.051291, --0.168904, -0.441378, --0.727982, -0.934136, --0.958948, -0.769485, --0.436484, -0.101511, -0.097075, --0.085618, --0.125963, -0.458506, --0.788200, -0.976399, --0.915159, -0.583510, --0.080164, --0.406312, -0.688211, --0.676057, -0.415155, --0.036685, --0.334087, -0.639796, --0.881420, -1.059050, --1.125908, -1.003577, --0.650335, -0.126303, -0.403871, --0.745162, -0.780582, --0.543918, -0.206420, -0.019152, --0.000856, --0.237783, -0.536422, --0.698857, -0.613890, --0.323265, --0.002317, -0.161035, --0.032469, --0.356369, -0.842170, --1.202276, -1.258098, --0.957443, -0.399010, -0.214468, --0.673160, -0.858876, --0.792128, -0.602448, --0.443169, -0.404310, --0.474827, -0.569809, --0.597465, -0.520071, --0.371715, -0.225093, --0.133391, -0.089703, --0.036158, --0.080964, -0.251544, --0.387580, -0.373658, --0.149600, --0.235730, -0.641206, --0.912068, -0.967773, --0.842832, -0.658532, --0.547143, -0.574533, --0.704628, -0.823414, --0.808339, -0.603909, --0.259250, --0.096052, -0.323819, --0.352178, -0.208193, -0.006075, --0.170167, -0.194642, --0.042206, --0.270576, -0.671947, --1.034163, -1.196810, --1.032261, -0.531611, -0.149240, --0.736742, -0.973970, --0.766124, -0.241472, -0.317220, --0.628968, -0.559741, --0.172079, --0.335213, -0.742444, --0.905744, -0.794644, --0.479110, -0.094428, -0.200792, --0.276051, -0.086722, -0.289680, --0.674516, -0.872276, --0.774770, -0.419662, -0.033834, --0.392313, -0.522008, --0.400658, -0.114562, -0.184578, --0.343338, -0.273549, -0.000932, --0.347329, -0.589924, --0.610653, -0.421268, --0.154132, --0.025507, -0.023521, -0.136590, --0.352071, -0.525501, --0.626793, -0.689230, --0.754163, -0.818049, --0.827196, -0.720740, --0.481408, -0.151669, -0.192658, --0.482514, -0.676140, --0.754002, -0.710997, --0.563848, -0.363805, --0.186958, -0.093805, --0.087681, -0.113673, --0.106884, -0.051843, -0.000318, -0.026826, --0.168959, -0.383193, --0.564185, -0.598663, --0.422443, -0.054372, -0.400322, --0.777151, -0.908673, --0.699197, -0.186988, -0.447991, --0.952495, -1.120370, --0.899184, -0.417155, -0.089845, --0.407916, -0.452748, --0.292867, -0.082149, -0.047656, --0.064533, -0.039198, --0.081159, -0.256841, --0.544099, -0.846388, --1.047656, -1.066924, --0.882275, -0.524467, --0.060925, --0.413600, -0.785544, --0.946800, -0.839088, --0.494734, -0.037771, -0.370672, --0.616295, -0.689248, --0.672260, -0.666126, --0.708052, -0.745305, --0.683424, -0.470494, --0.152275, --0.142037, -0.272201, --0.168742, --0.124829, -0.469904, --0.698255, -0.692014, --0.439884, -0.041367, -0.344494, --0.578968, -0.607318, --0.472020, -0.275082, --0.118964, -0.061349, --0.099724, -0.180904, --0.224588, -0.155452, -0.059930, --0.383053, -0.699734, --0.856169, -0.726856, --0.284391, --0.365632, -1.008910, --1.403008, -1.383477, --0.948260, -0.276167, -0.338867, --0.616686, -0.426484, -0.139655, --0.800342, -1.218061, --1.167983, -0.652684, -0.101197, --0.762002, -1.058710, --0.901476, -0.399577, -0.215874, --0.709244, -0.935504, --0.878976, -0.634309, --0.348268, -0.148056, --0.085228, -0.121135, --0.164349, -0.140041, --0.046812, --0.041020, -0.032575, -0.098027, --0.268052, -0.319950, --0.120263, --0.337353, -0.896281, --1.303097, -1.345723, --0.981895, -0.374070, -0.197471, --0.492725, -0.442004, --0.167823, --0.107731, -0.202782, --0.073455, --0.180057, -0.387357, --0.409001, -0.210227, -0.124659, --0.440546, -0.598034, --0.552776, -0.379464, --0.220574, -0.190016, --0.296276, -0.439434, --0.483375, -0.351382, --0.080726, --0.195389, -0.322725, --0.213315, --0.098209, -0.455970, --0.647793, -0.514041, --0.051092, --0.556194, -1.014498, --1.088718, -0.756771, --0.239566, --0.133913, -0.147244, -0.151611, --0.484985, -0.552278, --0.261127, --0.191513, -0.458590, --0.307742, --0.182820, -0.649671, --0.684933, -0.127942, -0.798944, --1.610109, -1.854412, --1.392552, -0.474923, -0.420431, --0.873817, -0.750112, --0.236267, --0.309352, -0.582738, --0.493476, -0.175791, -0.130005, --0.234420, -0.096430, -0.183642, --0.451276, -0.598830, --0.617780, -0.579654, --0.567943, -0.609461, --0.649519, -0.587590, --0.353028, --0.025844, -0.407522, --0.596696, -0.451589, -0.021495, --0.646869, -1.153462, --1.309415, -1.043200, --0.480675, --0.125584, -0.534246, --0.638235, -0.498904, --0.275144, -0.102815, --0.013190, --0.052035, -0.150653, --0.258984, -0.277500, --0.125523, --0.155736, -0.389091, --0.365799, --0.001541, -0.594088, --1.140929, -1.379313, --1.210002, -0.743159, --0.212112, --0.174749, -0.339687, --0.337231, -0.270889, --0.200814, -0.112138, -0.042737, --0.274335, -0.521698, --0.682015, -0.677338, --0.503294, -0.222956, -0.082632, --0.362681, -0.605667, --0.810214, -0.953070, --0.988824, -0.884743, --0.661676, -0.405168, --0.232921, -0.236071, --0.428559, -0.733797, --1.016566, -1.144956, --1.051146, -0.760669, --0.375858, -0.024310, -0.198668, --0.263757, -0.205777, --0.094828, --0.000544, -0.042600, --0.037788, -0.029651, --0.070884, -0.185154, --0.341744, -0.466479, --0.489008, -0.395344, --0.243550, -0.124681, --0.095503, -0.135652, --0.164929, -0.109561, -0.033087, --0.181613, -0.220798, --0.080543, --0.210637, -0.533498, --0.741958, -0.743853, --0.551229, -0.272307, --0.051539, --0.006970, --0.110384, -0.329062, --0.534404, -0.630944, --0.576697, -0.379363, --0.073170, --0.295521, -0.663831, --0.946516, -1.053387, --0.932517, -0.611521, --0.201718, --0.146268, -0.311119, --0.252768, -0.020098, -0.282470, --0.543790, -0.683579, --0.667270, -0.503628, --0.235956, --0.068499, -0.334251, --0.502066, -0.556278, --0.538332, -0.532529, --0.625439, -0.857922, --1.194813, -1.528301, --1.717248, -1.651764, --1.320401, -0.844069, --0.441235, -0.319587, --0.545330, -0.979570, --1.345989, -1.404075, --1.112529, -0.659763, --0.330737, -0.305027, --0.535641, -0.795967, --0.853100, -0.632503, --0.254333, --0.074474, -0.219826, --0.209088, -0.188985, --0.294602, -0.532467, --0.762300, -0.786123, --0.481957, --0.103225, -0.755239, --1.189311, -1.194333, --0.754228, -0.078655, -0.488889, --0.652466, -0.338343, -0.249192, --0.740453, -0.822398, --0.429715, --0.220514, -0.771214, --0.945300, -0.697439, --0.208789, --0.251153, -0.488782, --0.469528, -0.285363, --0.056587, --0.146793, -0.310022, --0.420797, -0.424046, --0.241087, --0.152052, -0.655569, --1.061768, -1.168472, --0.917081, -0.446936, --0.012770, --0.182802, -0.118831, -0.049685, --0.125840, -0.026932, -0.156927, --0.241865, -0.099622, -0.238790, --0.599772, -0.784680, --0.698813, -0.403374, --0.064970, --0.152420, -0.178065, --0.055674, --0.105253, -0.207177, --0.220105, -0.184488, --0.167316, -0.206427, --0.283259, -0.341863, --0.336090, -0.265894, --0.173837, -0.108538, --0.089789, -0.106635, --0.146784, -0.224931, --0.377128, -0.620122, --0.909427, -1.137073, --1.182361, -0.987388, --0.606853, -0.193586, -0.078781, --0.113429, --0.049872, -0.252553, --0.306932, -0.107573, -0.302923, --0.757558, -1.065962, --1.128224, -0.984452, --0.766451, -0.588628, --0.461883, -0.297202, -0.005541, --0.455782, -0.939298, --1.280287, -1.351517, --1.152669, -0.806667, --0.483384, -0.304905, --0.288845, -0.356014, --0.390644, -0.315176, --0.135312, --0.070872, -0.212482, --0.252194, -0.231008, --0.232019, -0.311054, --0.449821, -0.569410, --0.593215, -0.506906, --0.364920, -0.238191, --0.148172, -0.047353, -0.130710, --0.389908, -0.632286, --0.708189, -0.531593, --0.172382, --0.158641, -0.240046, -0.000172, --0.414744, -0.717855, --0.667989, -0.227772, -0.407537, --0.927579, -1.085880, --0.824693, -0.279790, -0.315322, --0.749317, -0.906152, --0.770520, -0.394271, -0.133321, --0.693314, -1.138932, --1.320389, -1.140834, --0.615491, --0.109888, -0.805984, --1.253481, -1.333047, --1.066081, -0.592851, --0.107634, --0.217928, -0.296871, --0.156512, --0.076797, -0.237547, --0.203024, --0.044099, -0.408470, --0.735124, -0.890695, --0.826895, -0.593838, --0.302079, -0.057554, -0.095186, --0.190989, -0.311358, --0.518292, -0.795934, --1.043903, -1.134966, --1.004165, -0.706359, --0.394939, -0.227360, --0.258681, -0.398429, --0.466178, -0.312910, -0.072420, --0.543733, -0.880433, --0.918825, -0.649343, --0.220659, --0.148329, -0.293623, --0.194109, --0.026875, -0.185566, --0.156486, --0.046837, -0.281596, --0.372505, -0.232973, -0.072492, --0.370925, -0.499747, --0.416518, -0.218860, --0.062396, -0.041315, --0.123934, -0.190525, --0.139473, --0.024127, -0.187032, --0.212670, -0.045387, -0.244809, --0.507478, -0.610394, --0.519484, -0.306583, --0.086119, --0.070499, -0.181329, --0.330003, -0.589954, --0.952194, -1.311156, --1.522093, -1.492347, --1.242280, -0.893115, --0.591325, -0.421489, --0.363492, -0.315569, --0.163958, --0.142066, -0.549411, --0.917579, -1.090092, --0.987763, -0.667330, --0.298095, -0.060379, --0.032494, -0.151002, --0.275602, -0.302926, --0.232256, -0.132060, --0.050025, --0.038789, -0.192226, --0.410062, -0.588395, --0.578578, -0.313665, -0.102495, --0.427575, -0.427140, --0.039275, --0.557211, -1.024688, --1.057554, -0.570182, -0.232381, --0.950388, -1.204273, --0.847145, -0.049354, -0.798050, --1.305430, -1.298629, --0.897210, -0.415328, --0.156444, -0.236816, --0.545927, -0.854781, --0.982208, -0.898692, --0.704395, -0.519499, --0.387073, -0.266162, --0.105773, --0.079767, -0.206847, --0.189394, -0.007679, -0.285775, --0.620295, -0.956707, --1.277691, -1.533868, --1.618520, -1.423698, --0.947196, -0.352989, -0.090980, --0.174353, --0.109133, -0.545453, --0.833679, -0.775941, --0.392516, --0.108894, -0.473608, --0.547128, -0.338405, -0.020892, --0.372869, -0.615017, --0.723625, -0.724618, --0.650657, -0.521215, --0.352169, -0.171567, --0.015585, --0.094137, -0.164579, --0.214147, -0.237127, --0.191788, -0.038736, -0.195157, --0.391207, -0.395422, --0.131409, --0.315813, -0.722335, --0.855839, -0.629564, --0.169261, --0.260545, -0.425074, --0.267170, --0.067339, -0.341004, --0.388877, -0.217408, -0.025635, --0.174549, -0.160955, --0.038157, --0.088121, -0.152209, --0.166521, -0.184760, --0.234779, -0.285344, --0.273168, -0.161896, -0.019492, --0.190249, -0.270710, --0.233442, -0.117370, -0.001131, --0.058561, -0.043687, --0.002953, -0.009454, --0.113991, -0.308568, --0.527370, -0.686849, --0.739204, -0.701474, --0.638917, -0.615330, --0.648455, -0.702932, --0.721989, -0.668248, --0.543268, -0.380305, --0.229320, -0.150262, --0.204917, -0.426371, --0.769882, -1.091176, --1.202563, -0.999700, --0.570641, -0.179324, --0.098957, -0.401976, --0.874681, -1.146202, --0.952269, -0.336206, -0.371146, --0.779735, -0.700619, --0.243773, --0.304029, -0.703262, --0.902411, -0.999143, --1.085132, -1.130420, --1.012468, -0.656335, --0.148363, --0.290633, -0.461263, --0.341901, -0.111295, --0.013437, -0.170286, --0.490409, -0.742187, --0.730826, -0.442570, --0.052786, --0.198742, -0.168613, -0.105745, --0.446972, -0.665402, --0.682226, -0.567305, --0.473087, -0.515222, --0.686664, -0.866914, --0.920211, -0.808431, --0.630232, -0.550150, --0.666343, -0.917111, --1.103334, -1.020372, --0.610334, -0.025831, -0.445783, --0.552954, -0.234252, -0.344477, --0.893521, -1.173133, --1.124429, -0.879036, --0.654594, -0.616325, --0.793952, -1.090083, --1.349801, -1.433886, --1.261084, -0.824150, --0.197576, --0.465102, -0.967934, --1.152202, -0.983883, --0.584166, -0.164290, -0.101279, --0.171675, -0.131421, --0.086389, -0.054994, -0.048333, --0.320061, -0.744283, --1.149117, -1.291059, --1.014525, -0.373715, -0.371754, --0.890120, -0.957815, --0.577853, --0.030743, -0.558769, --0.768645, -0.600010, --0.171000, --0.307254, -0.642142, --0.737583, -0.612394, --0.367048, -0.123666, -0.034262, --0.098517, -0.131100, --0.215531, -0.388990, --0.598714, -0.717205, --0.614233, -0.242286, -0.319214, --0.889879, -1.269528, --1.329381, -1.068161, --0.611050, -0.155728, -0.111395, --0.094809, --0.167689, -0.521555, --0.765635, -0.744217, --0.417284, --0.121379, -0.682468, --1.057038, -1.100192, --0.791794, -0.248186, -0.325750, --0.727449, -0.846310, --0.703048, -0.418294, --0.135053, --0.052509, -0.122940, --0.102316, -0.022201, -0.102754, --0.265560, -0.442623, --0.582252, -0.621103, --0.520512, -0.296959, --0.022452, --0.209849, -0.335344, --0.351487, -0.314004, --0.299290, -0.357179, --0.482565, -0.619729, --0.694664, -0.656305, --0.504766, -0.290549, --0.084811, --0.061910, -0.145213, --0.198436, -0.256368, --0.318460, -0.339443, --0.255364, -0.027671, -0.322019, --0.705814, -0.995548, --1.071020, -0.873966, --0.446960, --0.065622, -0.468762, --0.609577, -0.468327, --0.187721, -0.003416, --0.100213, -0.479483, --0.933811, -1.163101, --0.966793, -0.384746, -0.312615, --0.782504, -0.811442, --0.430508, --0.120712, -0.543599, --0.641549, -0.400909, -0.034926, --0.460205, -0.706300, --0.700067, -0.471501, --0.126638, --0.194450, -0.363802, --0.310374, -0.052471, -0.300881, --0.592297, -0.690938, --0.562340, -0.288992, --0.023015, --0.105202, -0.067200, -0.046989, --0.090975, --0.032219, -0.288629, --0.515630, -0.517859, --0.202291, --0.337964, -0.855657, --1.086062, -0.902826, --0.391198, --0.207251, -0.637916, --0.770785, -0.651671, --0.448456, -0.337654, --0.402918, -0.599316, --0.792930, -0.845601, --0.694947, -0.389672, --0.064918, --0.127954, -0.102109, -0.114028, --0.386251, -0.546079, --0.489491, -0.244120, -0.043056, --0.195752, -0.118070, -0.152542, --0.485292, -0.753293, --0.908197, -0.975394, --0.985483, -0.916399, --0.710892, -0.359752, -0.029982, --0.263645, -0.185820, -0.186512, --0.639624, -0.885861, --0.755114, -0.317196, -0.156503, --0.365316, -0.166187, -0.346992, --0.910933, -1.247135, --1.199689, -0.784379, --0.147009, --0.518998, -1.042556, --1.312750, -1.296435, --1.049301, -0.711578, --0.465639, -0.451937, --0.681821, -1.011079, --1.211713, -1.111333, --0.709697, -0.184178, -0.229551, --0.401812, -0.397189, --0.416813, -0.634294, --1.048487, -1.465941, --1.626788, -1.379227, --0.775068, -0.027306, -0.623028, --1.027472, -1.164559, --1.093865, -0.889223, --0.603563, -0.272937, -0.066670, --0.373816, -0.609932, --0.750583, -0.792066, --0.752819, -0.668734, --0.578157, -0.497974, --0.406470, -0.254917, --0.012353, --0.285172, -0.526303, --0.580935, -0.391619, --0.031745, --0.322919, -0.498075, --0.425471, -0.169713, -0.138530, --0.403484, -0.616248, --0.823068, -1.048487, --1.247106, -1.326550, --1.219736, -0.943101, --0.591289, -0.272454, --0.036655, --0.144347, -0.328206, --0.523418, -0.650434, --0.586011, -0.268423, -0.217204, --0.652353, -0.807159, --0.593402, -0.135348, -0.301960, --0.482451, -0.345946, --0.028162, --0.253073, -0.350649, --0.263746, -0.094376, -0.054391, --0.138753, -0.150681, --0.062197, --0.176958, -0.565839, --0.977206, -1.182364, --0.994314, -0.427840, -0.265323, --0.737708, -0.769641, --0.407141, --0.087357, -0.425474, --0.474824, -0.304649, --0.085152, --0.059999, -0.131291, --0.217753, -0.396334, --0.653325, -0.883709, --0.959926, -0.816356, --0.493348, -0.117323, -0.167098, --0.271207, -0.201494, --0.044818, --0.088924, -0.131124, --0.087987, -0.024931, --0.013576, -0.076798, --0.168663, -0.204784, --0.125838, --0.047706, -0.210795, --0.231177, -0.039900, -0.302831, --0.616155, -0.688613, --0.403108, --0.178138, -0.825900, --1.255278, -1.277506, --0.905362, -0.347201, -0.111990, --0.275011, -0.142318, -0.103649, --0.229768, -0.110558, -0.195000, --0.497103, -0.610844, --0.469168, -0.136893, -0.262449, --0.628754, -0.909275, --1.068626, -1.065053, --0.877852, -0.563115, --0.267913, -0.161427, --0.319918, -0.656314, --0.959356, -1.023183, --0.778311, -0.337097, -0.070162, --0.222522, -0.024015, -0.448125, --0.979597, -1.320705, --1.308375, -0.951148, --0.430088, -0.007330, -0.111944, -0.112663, --0.540818, -0.932100, --1.071446, -0.868661, --0.387431, --0.196224, -0.674498, --0.889533, -0.787771, --0.432189, --0.028534, -0.420031, --0.605539, -0.527716, --0.220137, --0.205068, -0.585725, --0.757269, -0.622232, --0.220384, --0.251753, -0.516512, --0.371185, --0.165700, -0.828991, --1.243911, -1.149695, --0.560280, --0.249214, -0.917347, --1.205099, -1.097087, --0.746631, -0.335568, -0.030140, --0.322394, -0.524983, --0.590464, -0.475003, --0.216456, --0.034426, -0.087121, -0.148701, --0.564838, -0.889578, --0.851672, -0.368645, -0.371456, --0.999271, -1.176215, --0.798259, -0.063091, -0.641904, --0.960775, -0.763313, --0.199734, --0.404271, -0.736405, --0.657307, -0.251459, -0.239698, --0.552925, -0.534452, --0.205620, --0.265543, -0.668212, --0.866992, -0.861591, --0.752601, -0.644577, --0.563425, -0.449923, --0.226667, --0.122773, -0.526008, --0.860020, -1.017747, --0.955699, -0.704070, --0.352384, -0.026698, -0.143034, --0.073380, --0.216556, -0.584047, --0.815209, -0.743815, --0.367963, --0.124145, -0.456900, --0.442260, -0.106130, -0.328033, --0.590756, -0.545128, --0.267933, --0.014531, -0.079443, -0.158477, --0.609518, -1.072730, --1.348981, -1.337691, --1.074101, -0.698965, --0.382597, -0.243869, --0.301629, -0.476038, --0.631156, -0.636002, --0.422401, -0.022956, -0.428120, --0.745660, -0.787717, --0.548102, -0.180533, -0.083532, --0.086606, --0.136033, -0.367769, --0.362029, -0.032095, -0.464023, --0.817459, -0.780045, --0.339669, --0.269679, -0.727458, --0.835393, -0.626995, --0.311513, -0.109113, --0.103191, -0.208937, --0.265433, -0.172809, -0.027613, --0.185391, -0.158315, -0.072639, --0.376374, -0.554558, --0.475385, -0.162154, -0.224691, --0.493405, -0.534863, --0.368645, -0.104528, -0.135384, --0.274333, -0.292910, --0.214141, -0.091178, --0.002930, -0.035276, --0.232902, -0.545798, --0.823426, -0.889318, --0.662454, -0.237570, -0.150772, --0.271449, -0.050627, -0.376800, --0.756377, -0.876911, --0.690056, -0.312988, -0.067351, --0.305015, -0.347561, --0.219417, --0.021880, -0.310043, --0.568593, -0.710690, --0.665220, -0.419918, --0.043779, --0.340057, -0.621380, --0.765489, -0.826085, --0.897917, -1.039722, --1.218729, -1.315197, --1.190992, -0.786891, --0.190291, --0.377610, -0.663956, --0.526857, -0.032313, -0.564295, --0.953380, -0.946806, --0.585090, -0.107431, -0.197046, --0.161519, --0.170900, -0.595361, --0.889938, -0.956066, --0.860449, -0.756246, --0.747916, -0.804399, --0.786713, -0.567896, --0.150613, --0.311206, -0.606680, --0.608609, -0.357740, --0.032329, --0.171169, -0.161433, --0.000367, --0.147696, -0.126439, -0.112099, --0.476216, -0.790113, --0.903997, -0.791648, --0.569383, -0.416604, --0.445452, -0.610233, --0.727374, -0.599584, --0.159972, --0.465877, -1.025460, --1.288460, -1.180477, --0.818774, -0.434695, --0.237773, -0.305272, --0.557494, -0.823515, --0.949759, -0.884049, --0.690241, -0.494645, --0.406020, -0.458959, --0.608534, -0.769807, --0.872657, -0.898593, --0.880427, -0.867638, --0.881942, -0.895923, --0.854181, -0.725378, --0.546216, -0.417552, --0.444424, -0.654034, --0.949017, -1.137588, --1.036151, -0.591134, -0.056147, --0.615720, -0.799225, --0.497726, --0.124156, -0.695668, --0.850715, -0.461806, -0.258009, --0.869340, -0.978187, --0.491187, --0.318988, -0.983438, --1.125812, -0.675291, -0.125468, --0.896421, -1.340207, --1.364363, -1.061479, --0.607852, -0.172653, -0.117613, --0.179905, --0.017370, -0.428904, --0.920795, -1.307824, --1.437069, -1.269134, --0.899121, -0.498477, --0.215794, -0.104241, --0.120710, -0.186182, --0.252341, -0.322698, --0.420568, -0.540788, --0.631481, -0.620382, --0.463049, -0.177302, -0.156174, --0.422884, -0.518947, --0.395395, -0.086451, -0.295528, --0.606040, -0.737088, --0.668445, -0.466756, --0.235208, -0.052605, -0.053912, --0.092113, -0.071566, -0.009109, --0.144212, -0.296383, --0.398200, -0.389604, --0.264690, -0.087989, -0.039583, --0.044894, --0.070408, -0.236449, --0.370878, -0.440594, --0.480601, -0.555539, --0.694288, -0.848683, --0.910208, -0.775911, --0.422267, --0.060693, -0.498263, --0.710881, -0.604174, --0.222134, --0.266578, -0.644377, --0.745245, -0.529099, --0.093273, --0.380505, -0.712040, --0.796623, -0.634908, --0.314147, --0.040505, -0.317000, --0.448686, -0.421748, --0.264359, -0.029719, -0.219228, --0.423066, -0.539775, --0.558254, -0.502579, --0.420213, -0.358002, --0.340927, -0.366213, --0.411960, -0.448972, --0.449061, -0.393967, --0.289569, -0.176338, --0.116961, -0.155277, --0.272249, -0.380630, --0.376654, -0.217293, -0.038719, --0.265173, -0.356840, --0.303093, -0.188618, --0.121853, -0.149514, --0.223216, -0.239274, --0.115587, --0.152548, -0.491816, --0.794688, -0.970679, --0.975287, -0.811579, --0.519394, -0.165417, -0.164644, --0.380090, -0.411910, --0.246316, --0.051500, -0.344480, --0.472130, -0.327935, -0.072966, --0.581680, -0.980586, --1.097695, -0.903058, --0.523755, -0.165840, -0.005701, -0.049705, --0.250468, -0.467597, --0.610495, -0.663303, --0.654708, -0.598126, --0.460521, -0.192556, -0.202633, --0.623860, -0.900865, --0.891643, -0.582899, --0.116919, --0.280189, -0.421560, --0.250888, --0.151750, -0.636977, --1.066453, -1.352605, --1.451181, -1.341411, --1.029922, -0.577958, --0.115377, --0.195112, -0.238891, --0.024719, --0.305498, -0.550776, --0.564706, -0.333705, -0.029336, --0.363227, -0.549309, --0.558108, -0.437232, --0.266854, -0.118946, --0.036568, -0.028939, --0.073626, -0.125651, --0.136527, -0.078289, -0.042070, --0.188534, -0.317390, --0.396191, -0.405931, --0.330296, -0.151700, -0.130268, --0.466682, -0.745013, --0.823572, -0.610779, --0.142054, --0.407755, -0.802435, --0.873158, -0.614367, --0.181094, --0.209563, -0.402944, --0.376672, -0.222605, --0.071433, -0.019073, --0.092693, -0.254841, --0.423653, -0.498415, --0.396966, -0.106616, -0.276668, --0.564137, -0.564769, --0.211675, --0.361555, -0.867594, --1.028214, -0.755838, --0.225747, --0.224999, -0.316362, --0.016815, --0.427754, -0.655366, --0.435423, --0.165346, -0.813519, --1.118647, -0.883855, --0.232395, --0.470816, -0.848861, --0.743937, -0.303436, -0.129721, --0.247610, --0.022005, -0.475352, --0.778209, -0.698598, --0.268052, --0.239363, -0.493876, --0.330251, --0.152053, -0.671339, --0.958462, -0.919782, --0.659780, -0.366398, --0.160149, -0.022291, -0.154527, --0.445702, -0.805087, --1.078053, -1.108168, --0.857338, -0.448948, --0.099430, --0.015219, --0.136110, -0.435855, --0.710439, -0.845180, --0.836737, -0.754530, --0.657324, -0.541340, --0.360416, -0.091011, -0.221748, --0.477885, -0.580452, --0.486332, -0.214584, -0.177113, --0.611798, -0.989402, --1.181201, -1.059640, --0.570670, --0.194814, -0.994830, --1.525300, -1.566919, --1.104618, -0.344208, -0.388421, --0.810589, -0.819373, --0.529868, -0.198475, --0.074316, -0.259923, --0.657575, -1.033102, --1.160908, -0.963243, --0.555297, -0.165902, -0.014201, -0.046765, --0.214596, -0.299045, --0.198994, --0.024986, -0.204939, --0.204969, -0.036357, -0.144820, --0.160300, --0.042203, -0.335702, --0.504525, -0.413501, --0.124155, --0.137847, -0.146611, -0.147870, --0.563049, -0.794030, --0.618179, -0.054256, -0.634855, --1.101161, -1.129139, --0.768872, -0.296783, --0.029689, -0.115695, --0.441068, -0.715104, --0.674584, -0.267702, -0.307283, --0.731210, -0.767372, --0.399556, --0.178569, -0.696232, --0.956650, -0.911758, --0.637484, -0.256468, -0.128743, --0.460271, -0.714138, --0.877361, -0.932344, --0.857764, -0.646189, --0.327425, --0.023029, -0.306240, --0.446218, -0.431465, --0.321208, -0.211640, --0.185825, -0.277775, --0.464929, -0.682140, --0.844692, -0.874732, --0.729345, -0.422446, --0.025772, --0.358741, -0.643343, --0.787866, -0.799949, --0.705501, -0.517552, --0.233719, --0.132448, -0.515216, --0.796444, -0.858754, --0.664382, -0.301385, -0.046826, --0.198504, -0.075886, -0.256230, --0.638223, -0.911180, --0.993727, -0.897962, --0.692780, -0.454957, --0.242145, -0.091554, --0.025237, -0.045423, --0.121152, -0.182967, --0.141096, --0.071478, -0.448438, --0.881521, -1.182492, --1.163426, -0.747618, --0.050776, --0.629657, -0.938114, --0.648359, --0.187488, -1.226332, --1.985940, -2.091645, --1.482908, -0.456515, -0.488624, --0.922506, -0.713697, --0.079620, --0.570092, -0.890719, --0.788999, -0.424079, --0.047583, --0.178932, -0.250722, --0.244453, -0.197810, --0.067337, --0.200222, -0.564751, --0.872186, -0.951845, --0.751376, -0.388573, --0.070557, --0.053349, --0.015563, -0.154463, --0.231303, -0.199675, --0.105486, -0.018927, -0.036778, --0.099040, -0.219596, --0.402691, -0.577657, --0.625737, -0.446596, --0.028626, --0.517722, -0.991235, --1.191508, -1.026789, --0.572751, -0.038393, -0.346333, --0.453526, -0.313197, --0.070283, --0.122670, -0.201884, --0.215597, -0.266965, --0.425423, -0.672361, --0.914980, -1.048547, --1.014584, -0.816049, --0.493080, -0.093888, -0.330907, --0.715262, -0.974789, --1.034306, -0.873522, --0.555232, -0.206517, -0.043181, --0.129838, -0.083470, -0.001702, --0.032993, --0.026976, -0.155208, --0.305546, -0.446754, --0.564498, -0.633317, --0.602842, -0.431342, --0.146768, --0.128366, -0.234413, --0.088229, --0.234490, -0.524849, --0.569073, -0.290681, -0.197075, --0.663810, -0.903806, --0.848450, -0.582375, --0.269852, -0.052055, -0.020050, -0.012447, --0.067044, -0.085520, --0.076139, -0.108030, --0.258410, -0.541816, --0.868240, -1.068689, --0.987227, -0.588523, --0.006257, --0.514021, -0.754839, --0.662651, -0.384287, --0.170047, -0.202908, --0.470756, -0.773217, --0.861656, -0.616373, --0.139020, --0.300536, -0.424282, --0.108853, --0.544201, -1.260673, --1.728168, -1.738177, --1.270696, -0.489312, -0.342998, --0.982926, -1.301293, --1.309836, -1.118376, --0.861218, -0.639594, --0.501357, -0.447473, --0.445556, -0.446033, --0.406238, -0.318302, --0.218013, -0.157145, --0.153097, -0.160081, --0.095824, --0.088303, -0.349573, --0.561413, -0.588514, --0.376538, --0.008527, -0.417263, --0.699835, -0.777601, --0.665682, -0.449482, --0.243058, -0.150624, --0.231909, -0.468658, --0.748229, -0.895673, --0.764195, -0.341851, -0.205778, --0.611264, -0.669395, --0.379900, --0.040650, -0.296992, --0.208821, --0.177752, -0.636256, --0.921352, -0.925659, --0.726775, -0.506313, --0.409710, -0.444880, --0.482249, -0.350157, -0.037467, --0.602460, -1.125413, --1.362843, -1.189738, --0.677770, -0.055956, -0.422437, --0.619115, -0.565094, --0.401073, -0.256295, --0.159066, -0.040675, -0.179566, --0.501962, -0.820955, --0.985915, -0.901765, --0.597730, -0.219576, -0.045529, --0.064491, --0.175624, -0.558355, --0.888549, -0.985900, --0.785085, -0.390465, --0.039421, --0.027380, --0.276863, -0.803722, --1.234802, -1.268678, --0.813897, -0.057802, -0.638941, --0.955318, -0.792525, --0.313536, --0.175368, -0.416696, --0.345594, -0.104752, -0.065443, -0.015782, --0.362505, -0.824600, --1.187607, -1.298966, --1.138596, -0.796211, --0.386293, --0.027231, -0.440981, --0.860646, -1.243616, --1.491924, -1.504389, --1.245839, -0.779530, --0.241695, --0.218036, -0.490570, --0.531972, -0.363713, --0.063842, --0.247321, -0.436934, --0.410816, -0.167113, -0.185487, --0.473063, -0.550645, --0.388370, -0.087820, -0.187714, --0.321834, -0.314478, --0.263322, -0.276175, --0.384904, -0.526571, --0.601152, -0.555172, --0.423000, -0.295963, --0.248231, -0.281239, --0.329586, -0.319837, --0.232945, -0.122029, --0.075279, -0.154880, --0.354571, -0.600004, --0.787255, -0.837342, --0.741225, -0.573389, --0.460521, -0.509389, --0.727306, -0.987230, --1.077228, -0.823435, --0.217445, --0.540943, -1.131410, --1.290379, -0.966909, --0.349701, --0.256944, -0.621157, --0.699957, -0.606078, --0.469966, -0.326266, --0.124675, --0.155524, -0.410697, --0.448531, -0.143175, -0.421513, --0.957023, -1.142572, --0.841509, -0.197819, -0.459970, --0.834189, -0.836129, --0.607712, -0.386904, --0.323926, -0.379366, --0.368699, -0.114667, -0.403442, --1.009756, -1.430321, --1.461690, -1.091522, --0.491280, --0.102373, -0.520438, --0.713697, -0.707671, --0.527659, -0.175523, -0.323402, --0.861576, -1.255469, --1.335918, -1.063032, --0.575180, -0.125590, -0.058953, -0.091959, --0.453916, -0.779914, --0.835211, -0.516006, -0.107658, --0.835074, -1.429230, --1.710366, -1.611197, --1.185070, -0.578119, -0.020166, --0.438811, -0.587969, --0.498096, -0.307125, --0.187259, -0.243906, --0.449350, -0.659807, --0.709858, -0.521752, --0.154939, --0.234669, -0.492350, --0.549375, -0.441637, --0.260227, -0.077760, -0.093914, --0.286068, -0.512694, --0.718207, -0.782740, --0.595319, -0.150948, -0.400667, --0.804616, -0.833169, --0.423355, --0.271077, -0.954483, --1.351348, -1.357589, --1.086294, -0.777297, --0.626870, -0.648422, --0.660618, -0.417677, -0.200489, --1.068561, -1.854674, --2.200599, -1.929770, --1.152920, -0.211702, -0.495566, --0.699409, -0.361906, -0.334841, --1.085528, -1.589430, --1.661030, -1.291369, --0.641176, --0.034148, -0.500152, --0.645662, -0.518846, --0.278291, -0.092262, --0.049172, -0.130482, --0.250230, -0.323262, --0.313250, -0.236502, --0.131631, -0.023995, -0.091210, --0.240282, -0.444594, --0.691567, -0.921007, --1.040568, -0.972497, --0.710425, -0.348441, --0.050714, --0.034181, --0.134093, -0.453761, --0.738814, -0.835929, --0.717938, -0.483056, --0.261745, -0.109328, -0.024601, --0.226201, -0.513815, --0.798667, -0.948317, --0.896009, -0.696214, --0.478806, -0.346542, --0.308750, -0.303230, --0.273771, -0.225194, --0.207661, -0.253713, --0.332886, -0.367396, --0.294097, -0.119714, -0.073959, --0.175761, -0.107656, -0.133338, --0.471462, -0.782534, --0.944344, -0.890057, --0.644541, -0.322251, --0.077286, -0.023175, --0.166459, -0.398939, --0.560209, -0.532941, --0.309069, --0.015644, -0.309388, --0.482311, -0.521975, --0.472470, -0.386659, --0.293190, -0.196438, --0.095513, --0.001628, -0.078106, --0.113118, -0.084395, -0.026713, --0.217566, -0.442436, --0.614158, -0.649250, --0.535087, -0.362198, --0.275550, -0.363605, --0.568346, -0.701605, --0.576315, -0.163584, -0.350485, --0.667816, -0.579695, --0.121132, --0.440323, -0.779974, --0.730650, -0.381572, -0.005924, --0.195705, -0.136746, -0.027091, --0.089332, --0.057901, -0.355519, --0.638875, -0.765155, --0.705602, -0.546490, --0.417537, -0.409800, --0.532780, -0.720552, --0.869352, -0.885548, --0.730125, -0.444427, --0.139037, --0.061510, -0.095697, --0.014465, --0.040704, --0.069793, -0.377402, --0.762246, -1.013628, --0.961142, -0.588330, --0.048873, --0.426046, -0.663214, --0.632634, -0.432704, --0.201004, -0.024094, -0.094200, --0.201870, -0.345961, --0.540848, -0.768189, --0.990052, -1.157057, --1.213435, -1.113354, --0.849603, -0.475167, --0.091935, --0.195619, -0.334063, --0.343216, -0.291345, --0.244078, -0.228028, --0.236057, -0.263489, --0.335514, -0.491163, --0.729094, -0.963761, --1.045906, -0.854378, --0.399281, --0.150867, -0.557977, --0.666621, -0.506984, --0.267161, -0.154517, --0.254375, -0.491661, --0.712743, -0.809182, --0.782325, -0.709459, --0.656201, -0.614695, --0.513797, -0.284879, -0.071640, --0.465716, -0.755605, --0.821900, -0.636753, --0.289004, --0.054517, -0.235946, --0.193092, --0.009495, -0.227556, --0.330689, -0.277945, --0.125631, --0.029788, -0.123244, --0.151690, -0.147768, --0.128944, -0.072367, -0.059731, --0.266553, -0.477081, --0.576193, -0.478240, --0.196943, --0.142155, -0.362371, --0.334823, -0.054822, -0.351007, --0.691636, -0.814607, --0.687570, -0.412711, --0.165105, -0.089512, --0.216751, -0.451589, --0.640103, -0.671830, --0.546782, -0.361188, --0.225906, -0.180855, --0.172540, -0.111267, -0.039655, --0.216819, -0.293257, --0.173615, --0.124233, -0.463749, --0.667387, -0.625663, --0.365823, -0.036475, -0.181881, --0.185889, -0.010799, -0.195457, --0.272761, -0.159531, -0.063492, --0.233540, -0.232763, --0.087989, --0.040022, --0.017648, -0.286804, --0.595992, -0.679231, --0.374830, --0.226118, -0.805710, --1.019678, -0.737228, --0.144383, --0.371930, -0.483560, --0.141666, --0.397112, -0.754786, --0.692884, -0.266651, -0.228306, --0.468473, -0.317739, -0.100632, --0.509168, -0.667682, --0.513350, -0.167966, -0.166205, --0.332895, -0.290614, --0.103387, --0.114059, -0.254810, --0.260710, -0.144214, -0.011383, --0.082797, --0.029951, -0.333982, --0.714248, -0.978631, --0.964340, -0.644046, --0.158803, --0.253235, -0.394715, --0.228138, --0.103144, -0.369823, --0.408965, -0.233313, --0.020753, --0.014973, --0.212295, -0.577978, --0.809722, -0.663053, --0.096041, --0.676322, -1.290382, --1.440621, -1.056308, --0.339329, --0.356431, -0.725097, --0.665458, -0.307620, -0.090613, --0.300482, -0.235946, -0.028624, --0.324731, -0.486439, --0.425560, -0.160537, -0.200175, --0.507350, -0.635090, --0.536016, -0.262049, -0.062843, --0.305665, -0.389243, --0.324579, -0.196903, --0.118235, -0.172389, --0.376460, -0.672072, --0.950004, -1.100800, --1.071893, -0.901332, --0.701710, -0.592714, --0.616438, -0.693010, --0.659438, -0.381428, -0.130771, --0.690250, -1.024611, --0.944007, -0.475632, -0.131125, --0.540964, -0.524962, --0.087012, --0.552239, -1.095102, --1.335027, -1.247004, --0.952787, -0.599986, --0.251877, --0.129458, -0.598222, --1.114928, -1.513056, --1.587097, -1.246381, --0.617258, -0.004362, -0.277460, --0.092984, --0.428609, -0.971415, --1.222708, -1.053771, --0.579904, -0.068023, -0.242275, --0.285319, -0.189727, --0.166107, -0.345275, --0.682018, -0.989352, --1.073690, -0.871063, --0.488904, -0.129911, -0.042294, --0.000497, --0.147468, -0.248880, --0.217493, -0.090435, -0.004128, -0.055822, --0.289929, -0.585582, --0.757856, -0.664045, --0.299710, --0.189382, -0.589909, --0.744986, -0.637156, --0.377453, -0.115261, -0.060845, --0.158365, -0.233089, --0.305066, -0.314568, --0.160969, --0.201496, -0.687991, --1.095176, -1.205689, --0.919934, -0.326913, -0.333580, --0.793684, -0.888943, --0.623803, -0.142937, -0.361242, --0.743442, -0.949661, --0.998958, -0.932651, --0.777226, -0.547375, --0.277883, -0.047154, -0.039589, -0.093989, --0.434835, -0.860217, --1.181598, -1.238128, --0.989733, -0.551330, --0.138279, --0.052514, --0.045339, -0.335851, --0.630265, -0.768168, --0.704356, -0.506501, --0.280469, -0.091882, -0.056758, --0.191351, -0.321193, --0.430699, -0.508948, --0.578247, -0.683830, --0.848161, -1.030899, --1.136071, -1.070155, --0.811793, -0.441786, --0.107402, --0.061147, -0.031056, -0.108966, --0.202416, -0.128337, -0.111126, --0.381190, -0.496400, --0.343401, --0.038153, -0.472676, --0.751808, -0.755000, --0.511806, -0.176089, -0.062311, --0.072842, --0.159384, -0.533108, --0.877623, -1.026250, --0.890725, -0.506289, --0.021649, --0.370985, -0.535528, --0.463704, -0.272042, --0.123480, -0.125871, --0.273688, -0.463749, --0.562033, -0.471224, --0.166761, --0.297788, -0.800041, --1.171709, -1.247681, --0.940630, -0.306821, -0.446778, --1.039084, -1.244572, --1.005258, -0.458435, -0.139031, --0.548579, -0.671854, --0.584735, -0.463245, --0.450593, -0.558254, --0.673461, -0.666126, --0.507687, -0.301209, --0.195445, -0.255870, --0.405445, -0.488737, --0.405657, -0.200335, --0.029201, -0.035485, --0.235119, -0.505654, --0.681940, -0.676170, --0.526536, -0.344244, --0.212443, -0.124018, --0.003860, --0.211321, -0.506096, --0.783971, -0.925471, --0.859412, -0.599873, --0.234750, --0.116983, -0.353773, --0.429703, -0.374725, --0.287421, -0.291477, --0.462309, -0.759441, --1.016253, -1.018277, --0.641710, --0.033251, -0.725941, --1.098130, -0.957946, --0.388877, --0.291217, -0.718171, --0.689373, -0.255002, -0.352038, --0.875891, -1.167384, --1.211301, -1.070918, --0.821739, -0.526998, --0.248321, -0.049046, -0.032913, --0.020301, --0.004619, --0.046989, -0.201516, --0.397481, -0.530425, --0.534422, -0.432865, --0.317459, -0.275846, --0.329616, -0.428514, --0.494159, -0.469570, --0.339994, -0.127935, -0.113930, --0.304601, -0.352139, --0.205364, --0.081133, -0.329240, --0.315223, --0.079794, -0.746435, --1.361091, -1.563497, --1.197964, -0.448364, -0.249346, --0.480326, -0.130092, -0.529188, --1.014903, -0.953872, --0.322454, --0.556558, -1.244057, --1.466948, -1.255707, --0.864518, -0.563398, --0.467999, -0.516181, --0.572325, -0.551035, --0.462202, -0.364714, --0.291615, -0.217670, --0.087332, --0.132599, -0.420440, --0.703054, -0.883405, --0.878773, -0.664534, --0.310538, --0.021279, -0.143865, -0.043346, --0.472076, -0.925415, --1.163718, -1.071499, --0.717265, -0.286266, -0.052258, --0.236071, -0.299472, --0.293733, -0.224395, --0.061330, --0.199420, -0.493050, --0.713277, -0.790009, --0.747186, -0.684515, --0.694378, -0.784328, --0.871701, -0.855040, --0.700690, -0.471397, --0.276246, -0.188665, --0.203746, -0.266753, --0.339347, -0.437840, --0.606648, -0.853079, --1.108514, -1.259072, --1.224251, -1.015025, --0.718105, -0.419659, --0.138136, --0.170724, -0.539569, --0.913660, -1.147781, --1.090220, -0.695594, --0.082703, --0.507288, -0.827146, --0.743895, -0.296304, -0.333655, --0.910825, -1.248822, --1.277882, -1.055032, --0.719625, -0.420452, --0.250503, -0.220640, --0.280820, -0.368204, --0.445550, -0.503085, --0.529275, -0.485873, --0.320576, -0.017678, -0.354613, --0.649903, -0.716791, --0.497428, -0.080832, -0.335309, --0.555726, -0.499038, --0.235338, --0.071987, -0.275221, --0.325065, -0.275862, --0.220949, -0.215015, --0.243001, -0.253053, --0.218494, -0.170918, --0.172118, -0.246112, --0.332734, -0.313468, --0.103361, --0.258132, -0.596887, --0.698983, -0.451720, -0.071157, --0.646562, -1.037480, --1.130256, -0.979743, --0.741794, -0.554457, --0.456995, -0.395478, --0.293422, -0.124604, -0.064146, --0.186683, -0.173478, --0.009663, --0.262004, -0.562417, --0.803078, -0.909633, --0.844087, -0.623988, --0.324585, -0.049630, -0.122326, --0.181100, -0.179590, --0.175856, -0.167704, --0.081825, --0.159107, -0.538639, --0.906432, -1.050746, --0.847100, -0.372255, -0.117604, --0.346593, -0.207871, -0.158331, --0.459293, -0.449964, --0.095816, --0.412363, -0.791079, --0.843318, -0.565481, --0.126654, --0.247166, -0.401815, --0.323598, -0.120499, -0.062427, --0.140367, -0.141119, --0.178852, -0.363474, --0.705668, -1.088008, --1.329241, -1.299219, --1.000031, -0.553756, --0.111245, --0.242030, -0.510009, --0.731249, -0.904897, --0.968876, -0.849472, --0.533754, -0.095400, -0.350891, --0.724588, -1.015523, --1.250730, -1.427665, --1.481686, -1.324729, --0.927310, -0.374746, -0.153086, --0.471349, -0.490472, --0.261867, --0.059101, -0.307516, --0.401126, -0.373819, --0.330987, -0.358422, --0.449082, -0.503136, --0.405481, -0.125208, -0.241071, --0.521660, -0.584047, --0.426416, -0.177852, --0.008770, -0.020923, --0.194672, -0.421307, --0.583948, -0.624873, --0.559774, -0.443574, --0.321777, -0.202684, --0.066418, --0.099392, -0.266090, --0.363602, -0.321429, --0.125151, --0.157196, -0.407308, --0.529549, -0.510274, --0.417090, -0.340235, --0.326624, -0.359671, --0.395213, -0.413358, --0.436078, -0.496284, --0.592464, -0.675681, --0.684772, -0.598475, --0.457806, -0.337601, --0.291065, -0.312744, --0.348041, -0.339526, --0.272277, -0.184099, --0.133087, -0.145976, --0.185646, -0.166412, --0.014568, --0.262837, -0.552472, --0.682986, -0.528297, --0.102060, --0.424279, -0.803850, --0.854411, -0.569881, --0.129685, --0.206213, -0.253664, --0.012630, --0.344161, -0.594934, --0.617610, -0.456149, --0.256822, -0.127817, --0.040042, --0.141840, -0.516313, --1.008284, -1.366229, --1.319886, -0.792152, -0.000801, --0.655840, -0.838999, --0.514772, --0.020224, -0.333339, --0.150894, --0.453860, -1.113566, --1.424002, -1.223819, --0.699018, -0.240295, --0.159229, -0.468497, --0.880758, -1.020268, --0.690494, -0.010860, -0.661452, --0.956859, -0.709921, --0.038448, --0.740521, -1.286779, --1.400522, -1.097537, --0.575055, -0.097186, -0.140103, --0.096906, --0.114651, -0.319113, --0.392862, -0.331219, --0.229481, -0.200917, --0.294083, -0.461749, --0.591388, -0.569192, --0.340164, --0.060306, -0.511955, --0.850736, -0.933271, --0.700076, -0.207509, -0.390620, --0.904674, -1.184128, --1.170743, -0.909714, --0.520062, -0.142491, -0.110302, --0.180996, -0.067364, -0.193551, --0.538490, -0.880627, --1.114391, -1.141293, --0.917913, -0.498066, --0.031626, --0.293025, -0.336471, --0.077268, --0.372654, -0.810085, --1.020161, -0.866175, --0.360160, --0.319855, -0.892072, --1.103095, -0.867149, --0.323771, --0.235604, -0.534756, --0.466297, -0.132898, -0.240062, --0.448078, -0.409054, --0.174140, --0.129833, -0.370147, --0.453478, -0.346560, --0.084286, --0.237066, -0.494585, --0.598919, -0.545739, --0.415784, -0.313721, --0.286401, -0.284243, --0.200246, --0.039806, -0.403648, --0.753272, -0.923772, --0.828791, -0.522530, --0.177114, --0.012608, --0.060919, -0.359588, --0.727747, -0.987921, --1.041030, -0.906802, --0.684661, -0.473522, --0.316272, -0.205808, --0.131785, -0.110856, --0.164620, -0.267520, --0.325124, -0.221438, -0.089321, --0.520014, -0.876115, --0.962873, -0.703438, --0.188412, --0.373289, -0.764329, --0.859001, -0.660904, --0.274420, --0.156266, -0.501842, --0.679255, -0.662347, --0.479528, -0.199057, -0.098623, --0.352309, -0.538085, --0.661813, -0.732864, --0.741734, -0.661473, --0.473462, -0.197196, -0.101114, --0.332379, -0.428532, --0.379962, -0.242918, --0.113253, -0.080915, --0.188212, -0.408437, --0.652287, -0.801922, --0.765116, -0.528708, --0.180748, --0.122345, -0.236228, --0.112414, --0.169650, -0.447595, --0.571863, -0.490785, --0.270859, -0.042642, -0.088909, --0.109778, -0.095800, --0.147234, -0.303936, --0.501297, -0.603193, --0.496790, -0.186187, -0.187192, --0.424764, -0.404876, --0.173814, --0.083183, -0.179473, --0.070606, --0.113921, -0.181970, --0.042774, --0.217444, -0.416377, --0.441697, -0.350762, --0.309334, -0.421423, --0.607497, -0.652061, --0.391178, --0.120834, -0.619586, --0.823036, -0.657810, --0.330787, -0.175508, --0.384904, -0.837398, --1.159152, -0.987930, --0.250964, --0.745949, -1.488911, --1.573744, -0.957085, -0.026166, --0.884517, -1.275605, --1.190471, -0.903362, --0.740199, -0.840117, --1.077541, -1.185627, --0.974038, -0.473856, -0.089067, --0.455130, -0.494522, --0.258954, --0.089793, -0.391821, --0.549384, -0.515877, --0.266695, --0.191019, -0.774609, --1.310041, -1.592634, --1.499709, -1.070805, --0.486737, --0.039655, -0.377533, --0.516500, -0.519034, --0.445905, -0.321986, --0.159111, --0.004013, -0.094889, --0.046222, --0.151301, -0.427739, --0.663998, -0.755689, --0.670594, -0.464804, --0.248115, -0.120297, --0.117605, -0.203007, --0.304041, -0.367504, --0.387479, -0.386784, --0.373134, -0.315733, --0.168922, --0.075379, -0.355692, --0.564203, -0.612939, --0.492332, -0.276083, --0.068716, --0.064575, -0.135708, --0.216111, -0.380373, --0.651417, -0.980389, --1.267948, -1.407824, --1.326982, -1.009640, --0.507654, --0.058632, -0.517955, --0.698801, -0.509824, --0.010846, --0.582130, -0.985820, --0.995760, -0.603101, --0.004213, --0.507529, -0.701155, --0.522151, -0.100120, -0.340191, --0.599790, -0.588163, --0.335347, --0.050104, -0.436657, --0.708481, -0.785419, --0.639060, -0.311799, -0.077786, --0.368249, -0.431205, --0.253379, --0.034771, -0.221019, --0.140104, --0.212022, -0.662698, --0.967263, -0.966575, --0.685371, -0.300607, --0.007837, --0.108448, -0.102841, --0.085583, -0.110270, --0.132338, -0.070256, -0.091091, --0.250808, -0.246104, -0.026111, --0.512253, -1.006558, --1.263063, -1.145400, --0.715342, -0.197791, -0.158274, --0.231140, -0.087817, -0.083461, --0.114739, --0.033243, -0.270869, --0.473999, -0.586881, --0.650773, -0.743764, --0.890558, -1.018456, --0.992195, -0.699313, --0.127242, --0.611542, -1.313913, --1.758381, -1.786383, --1.365222, -0.609178, -0.255991, --0.977787, -1.372926, --1.383808, -1.068555, --0.545283, --0.058303, -0.616945, --0.998168, -1.078125, --0.803153, -0.257096, -0.336817, --0.712329, -0.705820, --0.351129, --0.147306, -0.545831, --0.705975, -0.657694, --0.551804, -0.547122, --0.710240, -0.984049, --1.231205, -1.317668, --1.186751, -0.885476, --0.533608, -0.257138, --0.127011, -0.136839, --0.224643, -0.315208, --0.353454, -0.316395, --0.212398, -0.078382, -0.027487, --0.047685, --0.039834, -0.196487, --0.334245, -0.366550, --0.268484, -0.102165, -0.016134, -0.010361, --0.193822, -0.450474, --0.652651, -0.708761, --0.616459, -0.454849, --0.326928, -0.296877, --0.363268, -0.474941, --0.567231, -0.592782, --0.539471, -0.438865, --0.362416, -0.394519, --0.583373, -0.895699, --1.212711, -1.381552, --1.293228, -0.937188, --0.400220, --0.179663, -0.666430, --0.958042, -0.998296, --0.786775, -0.391860, -0.051849, --0.384668, -0.494889, --0.379879, -0.145140, -0.067290, --0.171750, -0.180787, --0.163307, -0.157877, --0.121416, --0.035776, -0.354598, --0.754929, -1.056439, --1.088068, -0.808297, --0.347278, --0.061804, -0.217465, --0.063705, --0.285321, -0.620161, --0.761402, -0.659894, --0.412989, -0.189739, --0.115125, -0.191380, --0.308315, -0.330588, --0.194484, --0.054900, -0.303611, --0.445270, -0.437101, --0.309379, -0.141356, --0.026903, -0.037877, --0.184531, -0.388132, --0.499267, -0.378552, --0.003690, --0.477289, -0.808321, --0.782218, -0.387196, -0.171286, --0.602010, -0.723515, --0.579770, -0.389726, --0.371188, -0.575320, --0.855073, -0.983948, --0.825748, -0.425572, -0.035959, --0.373959, -0.507970, --0.475102, -0.361486, --0.226610, -0.082150, -0.074307, --0.221286, -0.314949, --0.325870, -0.267701, --0.182626, -0.094144, -0.025398, --0.234262, -0.557327, --0.931617, -1.213352, --1.253144, -0.991265, --0.506960, --0.013261, -0.367751, --0.433822, -0.212168, -0.191176, --0.618489, -0.913818, --0.959839, -0.705331, --0.190582, --0.441700, -0.976560, --1.208151, -1.040887, --0.547774, --0.061040, -0.548993, --0.773125, -0.733544, --0.524434, -0.234386, -0.116203, --0.546535, -1.022426, --1.391316, -1.426578, --0.976214, -0.113538, -0.838027, --1.455220, -1.458907, --0.887971, -0.076808, -0.555217, --0.759981, -0.589438, --0.317876, -0.224909, --0.397493, -0.683213, --0.813707, -0.601017, --0.070797, --0.549172, -0.966182, --0.989402, -0.623598, --0.045762, --0.502695, -0.831491, --0.863001, -0.627281, --0.221592, --0.229916, -0.604794, --0.808020, -0.800137, --0.614054, -0.341031, --0.085997, --0.081024, -0.144552, --0.125361, -0.046404, -0.084864, --0.265527, -0.473108, --0.655614, -0.748163, --0.704663, -0.522709, --0.248259, --0.037058, -0.236689, --0.264478, -0.075584, -0.303784, --0.768025, -1.164201, --1.358837, -1.303126, --1.054496, -0.741395, --0.497032, -0.403496, --0.467701, -0.624697, --0.757814, -0.738244, --0.488970, -0.051960, -0.391964, --0.591528, -0.364055, -0.276441, --1.092565, -1.726764, --1.876572, -1.440630, --0.560751, --0.448820, -1.238224, --1.560922, -1.362125, --0.786224, -0.101247, -0.427864, --0.655956, -0.602621, --0.403594, -0.206349, --0.083575, -0.019954, -0.031685, --0.081376, -0.081325, -0.030493, --0.262355, -0.536350, --0.722239, -0.716061, --0.508325, -0.194627, -0.078478, --0.198387, -0.149617, --0.018076, --0.065027, -0.002907, -0.214801, --0.519138, -0.815614, --1.038586, -1.165429, --1.190659, -1.099862, --0.879676, -0.558114, --0.229332, -0.022874, --0.026557, -0.219430, --0.471665, -0.619842, --0.570036, -0.358580, --0.128559, -0.034196, --0.133617, -0.342480, --0.486192, -0.423423, --0.157142, --0.152150, -0.291805, --0.152197, --0.182344, -0.479391, --0.512146, -0.210914, -0.295076, --0.768690, -1.015592, --0.987513, -0.778349, --0.535867, -0.362607, --0.268404, -0.187882, --0.035557, --0.236731, -0.602919, --0.959300, -1.162296, --1.100899, -0.768719, --0.284952, --0.162564, -0.421018, --0.450167, -0.319178, --0.136198, --0.021701, -0.122956, --0.150124, -0.080548, -0.083889, --0.269335, -0.334918, --0.160347, --0.241251, -0.689841, --0.938937, -0.850444, --0.506751, -0.159171, --0.040700, -0.188045, --0.418759, -0.486284, --0.288911, --0.040500, -0.240615, --0.140109, --0.189291, -0.470556, --0.422815, --0.028772, -0.692530, --1.238665, -1.414882, --1.193070, -0.754214, --0.343860, -0.115743, --0.072269, -0.123020, --0.191809, -0.277992, --0.428669, -0.656943, --0.885208, -0.969287, --0.793442, -0.368231, -0.144231, --0.506772, -0.543164, --0.246740, --0.213593, -0.596818, --0.733949, -0.614802, --0.363534, -0.132473, --0.000833, --0.049681, -0.079539, --0.115660, -0.120205, --0.022539, --0.218762, -0.572354, --0.935036, -1.171467, --1.170752, -0.898316, --0.424431, --0.087663, -0.441643, --0.498877, -0.255893, -0.142298, --0.473430, -0.560939, --0.375399, -0.045944, -0.229904, --0.319515, -0.239651, --0.132802, -0.155305, --0.361769, -0.669157, --0.919761, -0.988505, --0.855305, -0.601161, --0.346137, -0.179418, --0.121605, -0.128818, --0.127753, -0.064118, -0.055030, --0.148896, -0.099241, -0.171824, --0.625425, -1.089227, --1.330821, -1.190983, --0.695033, -0.061410, -0.411820, --0.518646, -0.265118, -0.142888, --0.436946, -0.455267, --0.230838, --0.053937, -0.203588, --0.135493, --0.086516, -0.318660, --0.441357, -0.425104, --0.324317, -0.221745, --0.172042, -0.179095, --0.209098, -0.218784, --0.178770, -0.084391, -0.042256, --0.154939, -0.191796, --0.095069, --0.156065, -0.511535, --0.839658, -0.964426, --0.750634, -0.198771, -0.513588, --1.089826, -1.257707, --0.918637, -0.205710, -0.591832, --1.188411, -1.438124, --1.363502, -1.081254, --0.706285, -0.315518, -0.018201, --0.186455, -0.070191, -0.367346, --0.995095, -1.527556, --1.662506, -1.269039, --0.496478, --0.286079, -0.698980, --0.580649, -0.082868, -0.434072, --0.635403, -0.413790, -0.073487, --0.540940, -0.771056, --0.727881, -0.523943, --0.293776, -0.087649, -0.133824, --0.414860, -0.713196, --0.887372, -0.780814, --0.341991, --0.311498, -0.937164, --1.293318, -1.262759, --0.898111, -0.374317, -0.103505, --0.374648, -0.353653, --0.037718, --0.483694, -1.026035, --1.353958, -1.290850, --0.843058, -0.239047, -0.181354, --0.179807, --0.210851, -0.694247, --0.904542, -0.653527, --0.055930, --0.550266, -0.824904, --0.634503, -0.119613, -0.406527, --0.651533, -0.509380, --0.106219, --0.291634, -0.446173, --0.290070, --0.042673, -0.313304, --0.338113, -0.108829, -0.201357, --0.348381, -0.174957, -0.280335, --0.789094, -1.054234, --0.880100, -0.293372, -0.459782, --1.045402, -1.228221, --1.000049, -0.570345, --0.227506, -0.162719, --0.369086, -0.671643, --0.854471, -0.794328, --0.521120, -0.183724, -0.043169, --0.052772, --0.145153, -0.436594, --0.664686, -0.708118, --0.538890, -0.233268, -0.065581, --0.211615, -0.117849, -0.205480, --0.646809, -1.027052, --1.167453, -0.972122, --0.487879, --0.098859, -0.541626, --0.658585, -0.434174, --0.031463, --0.303117, -0.390978, --0.230546, --0.014861, -0.148095, --0.094264, --0.039500, -0.053565, -0.170715, --0.552185, -0.847923, --0.826776, -0.446456, -0.105104, --0.539018, -0.666260, --0.516494, -0.288465, --0.181250, -0.246473, --0.375378, -0.415430, --0.304067, -0.104390, -0.075262, --0.190133, -0.291200, --0.454697, -0.681678, --0.866419, -0.867972, --0.627886, -0.237021, -0.105293, --0.214264, -0.041392, -0.287159, --0.542565, -0.533787, --0.231171, --0.204797, -0.514161, --0.496999, -0.141978, -0.363346, --0.751942, -0.846978, --0.664609, -0.381703, --0.201318, -0.220648, --0.393058, -0.592967, --0.715813, -0.734623, --0.687782, -0.630396, --0.595015, -0.580035, --0.555261, -0.472550, --0.284280, --0.025144, -0.408545, --0.755799, -0.940868, --0.895622, -0.660284, --0.371217, -0.190277, --0.220679, -0.460408, --0.814088, -1.147549, --1.351207, -1.383328, --1.278013, -1.116275, --0.972491, -0.864127, --0.740050, -0.524899, --0.197643, --0.153142, -0.350211, --0.228827, --0.241185, -0.898570, --1.450564, -1.625670, --1.328836, -0.701266, --0.043499, --0.353349, -0.364756, --0.084117, --0.255656, -0.430407, --0.343422, -0.046563, -0.329720, --0.670176, -0.923501, --1.087206, -1.165095, --1.146187, -1.020417, --0.804870, -0.544102, --0.280687, -0.026424, -0.230868, --0.485036, -0.673294, --0.686956, -0.438573, -0.057084, --0.651948, -1.117849, --1.260014, -1.022590, --0.520041, --0.023952, -0.390614, --0.465275, -0.270668, -0.070041, --0.404879, -0.613953, --0.635251, -0.461624, --0.130787, --0.277863, -0.647933, --0.851580, -0.802557, --0.511955, -0.103177, -0.239655, --0.367006, -0.240871, -0.060133, --0.406145, -0.695323, --0.885846, -0.968426, --0.924282, -0.721980, --0.361111, --0.083460, -0.471525, --0.668039, -0.623106, --0.397523, -0.115632, -0.111522, --0.229776, -0.228423, --0.103653, --0.148086, -0.492594, --0.820842, -0.972554, --0.829527, -0.415024, -0.091051, --0.454015, -0.539182, --0.401001, -0.230791, --0.198698, -0.314386, --0.420797, -0.329693, -0.009242, --0.444039, -0.716612, --0.646750, -0.261061, -0.229579, --0.580178, -0.669592, --0.551956, -0.380770, --0.282413, -0.279768, --0.308476, -0.289440, --0.189893, -0.034178, -0.123554, --0.230438, -0.250032, --0.166831, --0.007730, -0.227790, --0.416443, -0.489110, --0.392099, -0.138454, -0.181285, --0.428937, -0.485110, --0.320570, -0.023933, -0.245324, --0.357388, -0.295355, --0.153773, -0.050867, --0.028171, -0.026166, -0.043234, --0.195358, -0.339413, --0.348304, -0.171383, -0.110952, --0.341618, -0.406771, --0.321572, -0.212713, --0.213716, -0.358085, --0.552919, -0.649334, --0.552671, -0.290627, -0.005697, --0.187880, -0.180280, --0.015739, --0.199192, -0.358288, --0.417117, -0.403997, --0.381098, -0.390194, --0.425769, -0.453741, --0.455553, -0.456241, --0.508513, -0.642658, --0.822550, -0.946579, --0.899830, -0.626498, --0.175494, --0.312463, -0.672212, --0.797764, -0.692560, --0.456125, -0.218054, --0.065583, -0.013107, --0.027190, -0.076225, --0.156780, -0.274740, --0.404256, -0.469513, --0.374579, -0.063780, -0.431536, --0.992454, -1.457247, --1.683545, -1.599376, --1.229297, -0.692548, --0.170183, --0.159546, -0.200791, -0.005033, --0.292466, -0.461743, --0.398393, -0.144121, -0.134309, --0.262191, -0.179514, -0.016962, --0.141849, -0.052288, -0.247551, --0.597882, -0.776269, --0.633376, -0.186906, -0.383935, --0.837950, -1.001446, --0.848107, -0.487685, --0.085515, --0.225924, -0.392885, --0.435703, -0.417501, --0.409671, -0.460181, --0.567115, -0.671270, --0.685126, -0.551476, --0.292285, -0.005899, -0.191263, --0.233741, -0.132726, -0.056599, --0.287723, -0.541799, --0.795827, -0.978998, --0.977403, -0.709328, --0.222228, --0.279112, -0.528726, --0.376842, --0.079127, -0.526267, --0.631868, -0.270219, -0.388677, --0.997894, -1.268750, --1.145642, -0.800065, --0.471057, -0.290995, --0.226885, -0.157967, --0.002030, --0.220835, -0.428001, --0.565499, -0.660075, --0.784254, -0.967007, --1.131979, -1.125526, --0.825378, -0.255154, -0.381113, --0.781691, -0.708103, --0.132113, --0.723855, -1.487936, --1.833036, -1.652491, --1.107801, -0.515275, --0.145503, -0.070302, --0.158762, -0.211388, --0.119998, --0.069830, -0.227918, --0.263650, -0.191779, --0.091309, -0.010533, -0.083167, --0.259929, -0.533370, --0.808774, -0.929259, --0.789717, -0.428019, --0.018777, --0.229932, -0.202842, -0.061317, --0.410509, -0.683255, --0.796611, -0.761870, --0.634113, -0.451768, --0.219576, --0.058481, -0.338289, --0.535650, -0.577424, --0.465597, -0.298577, --0.223907, -0.347573, --0.659867, -1.028718, --1.267996, -1.240417, --0.934419, -0.471477, --0.041725, --0.193284, -0.176323, -0.029938, --0.287370, -0.452191, --0.427772, -0.183143, -0.248342, --0.768109, -1.212869, --1.387539, -1.150327, --0.518059, --0.288496, -0.923513, --1.098550, -0.757877, --0.122022, --0.440081, -0.628640, --0.376725, --0.138152, -0.623079, --0.840567, -0.716144, --0.340259, --0.107395, -0.451803, --0.590115, -0.516429, --0.306970, -0.076194, -0.079056, --0.121996, -0.082053, --0.022536, --0.006824, --0.001949, -0.022725, --0.025380, --0.000976, -0.047699, --0.100358, -0.145034, --0.160183, -0.109493, -0.043118, --0.296879, -0.584041, --0.780770, -0.766317, --0.498704, -0.054483, -0.400095, --0.692786, -0.731264, --0.536356, -0.207201, -0.147790, --0.459281, -0.695233, --0.826538, -0.806112, --0.591483, -0.196149, -0.277078, --0.659459, -0.792969, --0.615804, -0.201696, -0.274236, --0.624375, -0.739427, --0.627904, -0.386024, --0.125410, --0.088031, -0.246849, --0.369966, -0.462455, --0.502096, -0.457770, --0.317623, -0.103097, -0.136689, --0.339747, -0.446298, --0.415522, -0.247825, --0.004084, --0.200116, -0.240475, --0.056935, --0.291534, -0.638700, --0.799463, -0.686098, --0.371340, -0.045180, -0.111272, --0.045430, --0.142449, -0.286943, --0.286160, -0.170972, --0.064613, -0.071254, --0.184526, -0.286059, --0.231810, --0.040407, -0.458646, --0.852429, -1.047760, --0.959654, -0.628745, --0.189383, --0.202923, -0.439914, --0.492230, -0.398247, --0.228872, -0.054429, -0.070119, --0.104056, -0.019708, -0.185042, --0.466014, -0.728319, --0.860715, -0.800867, --0.586810, -0.344459, --0.204488, -0.204891, --0.260790, -0.236131, --0.064592, --0.184577, -0.360166, --0.362854, -0.241807, --0.161607, -0.258578, --0.507675, -0.719989, --0.682262, -0.327217, -0.205518, --0.668766, -0.885628, --0.862166, -0.749496, --0.696115, -0.717631, --0.690610, -0.470524, --0.034574, --0.465946, -0.784441, --0.731026, -0.292559, -0.354774, --0.940326, -1.238569, --1.174165, -0.842349, --0.443199, -0.170987, --0.118237, -0.242153, --0.405430, -0.462193, --0.337422, -0.058363, -0.270927, --0.527549, -0.624554, --0.539086, -0.310881, --0.021211, --0.237083, -0.392221, --0.422452, -0.368356, --0.313873, -0.334373, --0.435676, -0.527704, --0.465218, -0.144680, -0.402575, --0.992040, -1.369850, --1.354143, -0.943584, --0.321923, --0.243526, -0.543384, --0.522190, -0.280810, -0.002812, --0.179070, -0.198331, --0.115706, -0.036049, --0.037528, -0.121682, --0.219861, -0.250447, --0.186953, -0.087994, --0.064625, -0.204648, --0.506253, -0.869546, --1.154854, -1.268452, --1.215438, -1.083457, --0.971484, -0.916202, --0.867638, -0.726009, --0.408500, --0.099293, -0.732268, --1.366873, -1.853366, --2.050318, -1.868787, --1.325823, -0.577761, -0.113538, --0.498463, -0.489250, --0.236340, -0.051724, --0.203532, -0.716830, --1.332553, -1.672249, --1.499784, -0.888406, --0.165992, --0.321357, -0.448167, --0.372201, -0.379750, --0.641787, -1.073300, --1.403446, -1.395235, --1.038276, -0.561479, --0.257858, -0.261823, --0.455001, -0.572107, --0.418899, -0.029195, -0.358234, --0.476941, -0.221764, -0.289561, --0.812330, -1.138614, --1.204729, -1.082116, --0.887157, -0.693805, --0.506882, -0.293337, --0.029420, --0.272636, -0.565225, --0.780448, -0.848948, --0.722275, -0.399726, -0.050316, --0.493631, -0.769921, --0.760735, -0.454343, -0.031846, --0.495187, -0.746312, --0.710791, -0.468932, --0.199046, -0.055014, --0.063204, -0.118278, --0.085019, --0.073263, -0.246740, --0.257758, -0.008664, -0.418309, --0.793535, -0.887825, --0.631278, -0.167739, -0.237434, --0.376546, -0.243237, --0.037414, -0.020147, --0.314472, -0.795442, --1.158267, -1.125783, --0.648097, --0.054175, -0.635773, --0.851648, -0.695501, --0.362660, -0.086381, -0.016626, -0.014083, --0.058135, -0.021750, -0.107408, --0.277759, -0.424025, --0.501428, -0.489965, --0.388284, -0.217011, --0.027868, --0.102356, -0.104461, -0.039149, --0.271946, -0.485018, --0.574867, -0.501559, --0.309197, -0.095934, -0.045893, --0.080442, -0.039961, -0.005896, -0.000529, --0.068235, -0.154775, --0.195551, -0.145377, --0.005803, --0.178138, -0.349469, --0.477391, -0.575084, --0.682766, -0.826165, --0.981325, -1.075642, --1.030601, -0.818928, --0.494820, -0.171231, -0.043949, --0.111526, -0.082215, --0.061894, -0.142445, --0.338915, -0.567830, --0.679693, -0.534347, --0.085863, --0.567738, -1.206553, --1.585457, -1.558773, --1.158320, -0.571863, --0.032775, --0.305677, -0.430061, --0.431772, -0.418681, --0.445005, -0.502427, --0.558710, -0.598174, --0.630736, -0.673911, --0.734015, -0.803791, --0.870193, -0.916461, --0.915737, -0.829494, --0.623875, -0.297882, -0.098678, --0.474520, -0.730084, --0.795124, -0.653667, --0.350387, --0.020694, -0.345755, --0.536210, -0.572202, --0.515019, -0.468661, --0.506477, -0.612662, --0.687159, -0.618629, --0.375268, -0.043377, -0.221127, --0.298175, -0.190325, --0.025238, --0.031678, --0.105234, -0.377813, --0.620656, -0.675154, --0.500477, -0.200721, -0.054539, --0.159616, -0.154127, --0.189671, -0.402354, --0.788435, -1.182853, --1.361958, -1.193466, --0.721104, -0.127020, -0.387771, --0.709438, -0.835440, --0.823793, -0.727670, --0.568721, -0.354837, --0.110253, --0.113998, -0.256470, --0.273845, -0.162838, -0.035232, --0.250370, -0.415892, --0.502969, -0.535784, --0.570369, -0.643981, --0.730477, -0.742655, --0.591519, -0.263440, -0.146378, --0.477248, -0.594902, --0.462894, -0.143877, -0.257929, --0.655539, -0.993560, --1.226254, -1.304527, --1.200664, -0.948937, --0.652261, -0.431819, --0.352476, -0.383914, --0.430195, -0.403371, --0.283175, -0.121405, -0.004167, --0.045957, -0.013386, -0.042242, --0.068473, -0.049457, --0.018231, -0.037536, --0.159940, -0.388799, --0.660973, -0.862658, --0.875429, -0.635969, --0.183767, --0.331690, -0.700491, --0.746953, -0.423835, -0.151205, --0.746804, -1.130757, --1.178018, -0.911502, --0.463439, --0.004481, -0.369051, --0.573120, -0.619061, --0.549551, -0.428270, --0.321181, -0.275501, --0.300395, -0.357701, --0.369337, -0.244531, -0.075927, --0.571326, -1.116096, --1.510102, -1.571342, --1.250208, -0.687636, --0.156643, --0.097179, -0.017187, -0.219188, --0.318129, -0.078604, -0.451893, --0.989447, -1.193523, --0.897759, -0.238004, -0.411492, --0.660830, -0.351028, -0.332018, --0.958310, -1.118791, --0.692202, --0.064603, -0.675434, --0.758234, -0.283070, -0.406789, --0.829938, -0.694729, --0.090514, --0.586839, -0.911931, --0.707200, -0.132447, -0.454697, --0.745207, -0.651870, --0.308133, --0.068511, -0.323005, --0.417602, -0.390355, --0.288744, -0.145694, --0.001030, --0.081168, -0.039773, -0.126815, --0.331330, -0.437333, --0.350590, -0.094029, -0.196346, --0.359048, -0.315852, --0.119882, --0.093473, -0.213115, --0.230061, -0.224566, --0.276972, -0.382186, --0.445178, -0.364508, --0.132714, --0.135586, -0.277807, --0.204316, --0.028661, -0.250467, --0.286316, -0.064893, -0.347129, --0.793171, -1.111163, --1.199245, -1.039662, --0.692023, -0.274072, -0.068501, --0.210518, -0.106890, -0.169919, --0.452304, -0.564787, --0.430719, -0.126978, -0.159242, --0.250644, -0.098035, -0.187868, --0.416357, -0.453276, --0.314532, -0.146874, --0.108632, -0.239199, --0.416547, -0.439050, --0.175815, --0.322174, -0.833744, --1.100088, -0.990586, --0.587984, -0.132474, -0.137085, --0.132873, --0.046990, -0.219003, --0.268197, -0.235358, --0.273679, -0.516485, --0.964509, -1.475666, --1.852206, -1.948329, --1.725152, -1.240113, --0.610460, --0.013496, -0.470321, --0.631454, -0.466870, --0.086257, --0.296526, -0.474333, --0.362795, -0.036082, -0.343243, --0.640938, -0.821697, --0.927579, -0.999613, --1.020617, -0.927862, --0.677344, -0.298893, -0.105581, --0.417856, -0.569636, --0.571854, -0.490567, --0.392373, -0.301158, --0.196403, -0.049989, -0.130785, --0.290033, -0.350333, --0.258497, -0.017441, -0.313054, --0.639165, -0.861826, --0.903383, -0.735311, --0.404953, -0.041674, -0.183009, --0.142949, --0.151335, -0.526622, --0.727896, -0.573988, --0.088677, --0.491676, -0.852870, --0.794545, -0.348041, -0.257865, --0.750950, -0.975212, --0.951497, -0.816493, --0.704815, -0.663068, --0.642720, -0.555363, --0.340218, -0.003177, -0.383866, --0.714111, -0.892695, --0.882535, -0.727148, --0.531939, -0.406023, --0.399058, -0.478839, --0.569511, -0.620242, --0.646049, -0.704461, --0.827527, -0.971388, --1.031806, -0.919200, --0.634512, -0.284269, --0.019512, --0.059999, --0.030194, -0.169815, --0.211056, -0.072615, -0.208481, --0.496582, -0.633919, --0.526738, -0.192688, -0.252140, --0.653104, -0.888284, --0.916458, -0.783282, --0.588160, -0.430764, --0.363635, -0.374904, --0.409394, -0.414690, --0.381169, -0.347159, --0.364181, -0.448406, --0.557780, -0.616489, --0.570667, -0.431721, --0.272270, -0.178167, --0.195164, -0.310264, --0.474768, -0.641498, --0.783357, -0.885077, --0.927787, -0.888415, --0.756896, -0.553819, --0.330108, -0.145060, --0.035581, --0.004458, -0.020310, --0.065390, -0.157529, --0.251459, -0.254656, --0.087757, --0.246175, -0.637460, --0.919752, -0.968810, --0.781789, -0.477784, --0.218032, -0.105543, --0.137573, -0.238573, --0.334698, -0.401281, --0.446349, -0.457728, --0.377295, -0.141868, -0.237396, --0.631230, -0.840552, --0.719983, -0.292268, -0.235867, --0.581215, -0.552388, --0.170628, --0.337067, -0.671881, --0.642339, -0.277694, -0.194145, --0.488427, -0.433971, --0.064358, --0.421176, -0.790754, --0.911788, -0.799785, --0.569594, -0.342411, --0.179013, -0.073593, -0.009135, --0.095560, -0.192043, --0.297537, -0.417140, --0.558000, -0.708821, --0.823012, -0.827986, --0.667899, -0.360363, --0.025729, --0.148674, -0.010368, -0.443300, --1.020033, -1.411964, --1.372148, -0.879116, --0.168765, --0.403314, -0.583156, --0.369724, --0.009241, -0.271956, --0.275009, -0.086858, -0.094200, --0.099752, --0.092750, -0.357874, --0.514587, -0.436031, --0.108432, --0.378335, -0.879587, --1.246074, -1.359916, --1.165119, -0.700178, --0.115885, --0.355871, -0.497568, --0.227930, --0.327974, -0.883801, --1.142452, -0.964307, --0.445351, --0.144299, -0.520065, --0.538100, -0.255060, -0.130667, --0.404783, -0.445917, --0.259482, --0.061337, -0.399943, --0.657700, -0.763566, --0.676984, -0.406184, --0.028810, --0.320669, -0.511723, --0.493914, -0.330039, --0.153942, -0.079021, --0.121265, -0.188115, --0.137158, --0.134068, -0.617419, --1.177312, -1.598035, --1.680892, -1.352024, --0.724466, -0.066963, -0.322049, --0.273627, --0.156191, -0.720877, --1.131815, -1.223921, --1.029770, -0.719497, --0.461645, -0.313188, --0.215609, -0.085089, -0.088917, --0.222908, -0.211466, --0.027113, --0.239313, -0.432478, --0.435864, -0.243957, -0.045077, --0.296327, -0.406748, --0.335037, -0.097763, -0.241105, --0.578262, -0.794000, --0.801606, -0.598663, --0.273649, --0.050702, -0.296787, --0.464384, -0.584699, --0.642404, -0.549679, --0.214008, --0.348414, -0.956418, --1.332404, -1.266076, --0.761307, -0.055648, -0.512974, --0.709647, -0.539515, --0.223172, -0.026779, --0.069592, -0.250753, --0.349198, -0.216724, -0.090593, --0.349117, -0.344375, --0.047403, --0.349245, -0.565797, --0.438436, -0.040874, -0.363653, --0.503327, -0.282281, -0.160593, --0.556480, -0.697865, --0.578077, -0.380025, --0.326388, -0.506128, --0.809170, -1.016814, --0.975510, -0.718409, --0.440835, -0.350184, --0.504945, -0.763641, --0.879635, -0.671431, --0.148123, --0.492239, -0.982249, --1.137597, -0.946877, --0.555649, -0.172556, -0.034919, -0.000330, --0.245076, -0.602117, --0.950817, -1.175029, --1.180984, -0.916137, --0.392254, --0.297689, -0.987605, --1.484190, -1.642352, --1.437957, -0.995378, --0.542657, -0.305415, --0.389038, -0.714299, --1.050076, -1.135720, --0.831619, -0.210904, -0.470336, --0.916303, -0.964822, --0.678817, -0.294290, --0.061187, -0.089088, --0.301468, -0.517269, --0.586899, -0.482988, --0.296250, -0.160706, --0.170112, -0.332352, --0.572384, -0.771083, --0.822550, -0.688590, --0.422616, -0.141717, -0.043881, --0.098558, -0.075070, --0.062962, -0.114024, --0.205882, -0.269539, --0.249936, -0.144063, -0.010332, --0.173909, -0.329428, --0.472103, -0.587409, --0.649772, -0.648639, --0.612856, -0.598785, --0.640708, -0.702213, --0.677034, -0.452647, -0.002925, --0.597199, -1.150848, --1.494726, -1.555173, --1.367254, -1.017848, --0.581171, -0.109885, -0.319533, --0.575490, -0.520277, --0.124945, --0.450405, -0.909910, --1.003169, -0.706478, --0.252161, --0.034085, --0.028875, -0.349198, --0.642088, -0.650556, --0.332033, --0.124661, -0.446277, --0.460575, -0.187954, -0.201915, --0.510015, -0.614722, --0.513442, -0.301671, --0.117373, -0.074621, --0.204324, -0.424797, --0.568775, -0.471886, --0.084104, --0.467260, -0.921352, --1.026292, -0.697430, --0.083341, --0.513666, -0.813886, --0.714636, -0.321804, -0.149010, --0.517549, -0.725699, --0.821906, -0.880368, --0.928947, -0.934156, --0.840164, -0.623332, --0.323497, -0.032771, -0.151904, --0.185989, -0.107148, --0.012403, --0.008736, --0.061768, -0.160600, --0.199518, -0.143346, --0.042952, --0.007058, --0.049447, -0.179989, --0.289886, -0.303057, --0.226841, -0.144690, --0.143746, -0.240100, --0.365465, -0.423566, --0.364046, -0.209770, --0.019966, --0.167679, -0.356083, --0.551905, -0.716374, --0.763811, -0.622140, --0.304613, --0.077142, -0.380338, --0.528044, -0.556290, --0.572664, -0.662266, --0.818088, -0.949491, --0.956242, -0.805957, --0.555547, -0.306073, --0.131584, -0.036401, -0.032947, --0.138352, -0.304121, --0.503538, -0.677005, --0.760142, -0.704192, --0.488743, -0.134728, -0.284652, --0.652019, -0.846897, --0.807492, -0.575716, --0.287585, -0.105123, --0.126992, -0.332734, --0.594094, -0.744879, --0.667652, -0.351812, -0.100556, --0.517651, -0.729061, --0.638846, -0.274360, -0.212115, --0.599378, -0.695364, --0.432025, --0.096162, -0.676030, --1.078387, -1.160589, --0.915606, -0.454358, -0.052729, --0.439178, -0.592884, --0.491327, -0.216163, -0.070287, --0.197235, -0.083153, -0.200483, --0.456092, -0.479617, --0.202765, --0.244635, -0.609390, --0.688008, -0.478493, --0.196577, -0.132744, --0.443616, -1.023964, --1.553194, -1.688784, --1.278055, -0.450847, -0.458140, --1.095734, -1.262556, --0.976196, -0.413460, -0.204638, --0.705304, -0.994353, --1.040732, -0.856238, --0.494028, -0.052754, -0.341925, --0.586953, -0.653068, --0.594237, -0.498552, --0.414816, -0.315891, --0.135371, --0.148401, -0.453976, --0.624021, -0.530434, --0.180081, --0.265396, -0.579302, --0.607548, -0.354619, -0.040004, --0.406631, -0.646121, --0.756225, -0.782316, --0.751132, -0.648583, --0.454536, -0.194302, -0.045873, --0.159930, -0.092621, -0.111992, --0.322734, -0.392176, --0.245455, --0.065839, -0.378552, --0.496412, -0.293086, -0.211922, --0.844733, -1.345676, --1.488071, -1.191427, --0.568346, --0.125061, -0.613175, --0.733422, -0.506385, --0.110363, --0.218138, -0.302020, --0.101969, --0.276102, -0.642377, --0.821441, -0.738703, --0.449955, -0.098597, -0.171648, --0.293124, -0.294204, --0.258767, -0.261528, --0.323002, -0.404450, --0.432198, -0.331908, --0.060471, --0.367587, -0.866914, --1.295577, -1.503325, --1.397500, -0.991143, --0.401988, --0.200308, -0.668755, --0.932651, -1.002555, --0.932666, -0.775166, --0.562441, -0.325732, --0.121864, -0.029928, --0.106995, -0.335595, --0.611962, -0.794432, --0.781002, -0.561711, --0.214272, --0.144042, -0.411561, --0.536288, -0.524047, --0.427623, -0.323283, --0.281220, -0.342220, --0.511797, -0.768606, --1.070221, -1.345446, --1.488360, -1.384660, --0.978863, -0.344396, -0.308905, --0.723956, -0.741249, --0.401255, --0.077274, -0.437399, --0.545578, -0.458754, --0.352941, -0.374713, --0.531385, -0.697728, --0.722871, -0.549366, --0.257106, -0.009018, -0.055776, -0.091746, --0.353242, -0.556877, --0.545998, -0.256101, -0.254151, --0.826436, -1.265829, --1.414834, -1.210151, --0.704168, -0.046398, -0.567678, --0.963267, -1.044896, --0.824880, -0.411352, -0.036083, --0.361012, -0.453487, --0.273763, --0.138627, -0.667044, --1.138295, -1.374011, --1.266652, -0.843780, --0.271054, --0.225305, -0.476887, --0.454226, -0.254869, --0.014095, --0.185585, -0.335973, --0.452873, -0.515660, --0.461704, -0.242516, -0.112622, --0.488502, -0.745329, --0.804238, -0.693150, --0.522041, -0.410214, --0.418872, -0.530678, --0.678849, -0.793130, --0.827912, -0.764058, --0.604144, -0.380895, --0.170347, -0.077330, --0.175134, -0.429706, --0.676259, -0.694869, --0.355901, --0.263610, -0.889801, --1.200452, -1.020915, --0.435843, --0.258373, -0.727008, --0.782066, -0.467144, --0.005303, --0.340089, -0.400149, --0.160118, --0.268529, -0.724820, --1.070295, -1.224320, --1.164520, -0.915019, --0.539510, -0.136984, -0.175016, --0.296983, -0.190556, -0.099732, --0.465695, -0.789246, --0.999306, -1.096291, --1.129675, -1.145946, --1.145182, -1.080256, --0.901693, -0.616039, --0.308943, -0.105791, --0.089163, -0.231487, --0.397296, -0.422660, --0.222485, --0.146020, -0.507675, --0.668349, -0.529656, --0.152040, --0.271246, -0.516637, --0.452390, -0.108153, -0.351567, --0.732650, -0.922995, --0.933423, -0.846623, --0.726805, -0.571991, --0.347263, -0.059333, -0.207083, --0.334638, -0.264206, --0.048248, --0.185127, -0.327190, --0.357856, -0.328716, --0.281770, -0.187932, -0.028271, --0.394486, -0.815081, --1.095698, -1.063750, --0.693984, -0.136168, -0.381670, --0.699924, -0.812389, --0.831900, -0.878267, --0.986723, -1.105560, --1.167006, -1.153430, --1.095805, -1.013300, --0.864658, -0.572479, --0.111400, --0.419516, -0.820693, --0.917975, -0.702821, --0.370353, -0.205949, --0.388254, -0.851034, --1.312527, -1.460826, --1.166365, -0.570903, -0.008662, --0.291473, -0.211616, -0.052592, --0.210420, -0.058142, -0.383747, --0.877981, -1.112999, --0.891810, -0.255227, -0.529999, --1.108791, -1.220717, --0.827390, -0.120431, -0.583772, --0.998824, -0.992222, --0.623818, -0.091877, -0.378061, --0.641531, -0.685719, --0.599846, -0.490442, --0.401845, -0.295862, --0.099087, --0.224389, -0.632488, --1.022703, -1.286430, --1.356086, -1.219381, --0.907836, -0.481998, --0.023786, --0.373837, -0.632098, --0.720075, -0.670814, --0.558695, -0.446140, --0.338385, -0.184785, -0.069803, --0.423560, -0.797281, --1.073502, -1.164478, --1.057199, -0.808783, --0.507985, -0.238161, --0.058856, --0.003623, --0.031429, -0.094238, --0.091928, --0.029500, -0.228662, --0.374183, -0.329226, --0.062911, --0.301215, -0.552138, --0.536672, -0.276723, -0.035449, --0.168274, -0.014816, -0.329825, --0.631496, -0.670650, --0.376862, --0.141088, -0.673526, --1.030277, -1.124734, --0.985948, -0.714830, --0.426037, -0.206297, --0.095245, -0.080476, --0.102011, -0.072541, -0.079661, --0.356676, -0.661330, --0.829849, -0.727902, --0.355826, --0.118579, -0.441986, --0.429304, -0.083869, -0.403734, --0.776200, -0.860676, --0.648699, -0.266853, -0.120355, --0.400995, -0.551211, --0.614102, -0.649799, --0.688154, -0.706884, --0.646729, -0.457383, --0.146027, --0.207817, -0.487390, --0.601184, -0.526881, --0.306783, -0.007703, -0.314109, --0.615151, -0.847124, --0.955708, -0.913317, --0.759045, -0.598064, --0.539548, -0.609121, --0.707468, -0.663375, --0.359686, --0.155149, -0.662591, --0.900492, -0.745558, --0.321289, --0.060198, -0.098601, -0.285558, --0.885259, -1.338734, --1.370834, -0.974649, --0.407776, -0.012406, -0.008979, -0.291799, --0.669994, -0.866378, --0.773226, -0.481390, --0.192686, -0.068921, --0.122106, -0.215674, --0.173305, --0.077501, -0.427653, --0.638026, -0.498781, -0.008862, --0.669392, -1.154675, --1.234021, -0.922419, --0.455347, -0.109240, --0.005433, -0.048288, --0.039346, --0.131236, -0.375128, --0.468706, -0.239206, -0.274047, --0.812038, -1.051852, --0.814458, -0.180178, -0.560465, --1.078971, -1.189708, --0.933036, -0.523916, --0.209150, -0.122307, --0.220946, -0.338554, --0.313262, -0.105486, -0.176206, --0.357492, -0.327241, --0.117724, --0.121042, -0.229243, --0.145928, --0.058001, -0.236765, --0.267482, -0.119505, -0.142108, --0.406160, -0.578089, --0.621300, -0.565595, --0.486436, -0.463132, --0.528974, -0.638106, --0.678125, -0.537534, --0.196116, --0.223098, -0.490260, --0.389196, --0.141832, -0.935143, --1.639690, -1.876551, --1.429060, -0.369140, -0.950671, --2.042888, -2.500202, --2.176317, -1.242870, --0.102625, --0.796912, -1.153036, --0.912685, -0.253706, -0.529874, --1.167265, -1.505327, --1.527744, -1.315203, --0.984032, -0.634345, --0.323533, -0.069837, -0.118072, --0.206733, -0.133082, -0.149785, --0.599959, -1.052544, --1.277333, -1.112445, --0.583287, --0.090338, -0.619005, --0.818586, -0.712946, --0.495962, -0.386856, --0.482353, -0.699784, --0.837503, -0.707685, --0.261815, --0.359838, -0.884514, --1.046189, -0.737699, --0.088263, --0.588577, -0.956325, --0.834242, -0.286890, -0.425074, --0.993650, -1.217143, --1.075401, -0.703140, --0.297936, -0.022806, -0.050422, -0.057726, --0.274753, -0.528848, --0.783130, -1.035102, --1.286800, -1.510305, --1.635875, -1.575807, --1.273930, -0.753197, --0.131264, --0.412545, -0.711602, --0.693743, -0.424776, --0.080733, --0.144270, -0.143705, -0.048983, --0.297512, -0.463698, --0.498644, -0.456790, --0.426228, -0.437020, --0.429149, -0.313232, --0.075649, --0.164696, -0.210305, -0.075573, --0.643987, -1.250301, --1.581598, -1.441575, --0.867415, -0.097823, -0.581725, --1.003163, -1.175249, --1.210565, -1.197481, --1.130775, -0.953366, --0.655909, -0.327863, --0.101473, -0.035889, --0.052584, --0.008067, -0.249427, --0.618665, -0.934168, --1.019785, -0.833691, --0.486815, -0.143179, -0.106458, --0.290295, -0.489926, --0.728710, -0.916435, --0.901666, -0.593149, --0.054857, --0.503115, -0.839363, --0.827733, -0.536809, --0.185760, -0.001077, --0.066529, -0.267982, --0.375560, -0.212034, -0.207839, --0.668850, -0.890454, --0.715211, -0.219420, -0.332990, --0.662096, -0.651924, --0.417841, -0.219010, --0.276559, -0.617282, --1.044893, -1.259007, --1.049322, -0.443744, -0.285476, --0.766958, -0.742909, --0.220860, --0.526986, -1.116949, --1.267188, -0.945864, --0.369870, --0.137896, -0.341115, --0.214314, --0.071892, -0.283335, --0.277123, -0.075875, -0.177715, --0.338027, -0.352697, --0.273525, -0.190110, --0.151422, -0.138427, --0.099149, -0.003548, -0.133504, --0.276466, -0.409066, --0.545113, -0.698157, --0.842122, -0.908456, --0.832460, -0.610641, --0.315426, -0.049543, -0.121145, --0.196467, -0.210175, --0.176394, -0.075648, -0.098929, --0.282318, -0.337213, --0.137347, --0.321363, -0.878484, --1.287127, -1.368357, --1.129321, -0.753024, --0.464652, -0.376022, --0.426496, -0.460697, --0.373331, -0.198387, --0.068813, -0.082554, --0.192127, -0.219754, -0.002764, --0.476458, -0.992109, --1.251624, -1.077740, --0.559351, -0.017387, -0.198002, -0.055911, --0.609419, -1.083409, --1.133043, -0.667574, -0.098086, --0.785732, -1.086277, --0.928648, -0.489515, --0.060189, --0.128409, -0.014980, -0.296488, --0.627398, -0.831762, --0.856345, -0.732039, --0.522208, -0.277348, --0.029863, --0.180145, -0.290583, --0.246527, -0.055359, -0.189459, --0.357474, -0.377366, --0.298339, -0.253040, --0.341645, -0.532568, --0.668859, -0.581421, --0.220296, --0.298983, -0.764523, --0.993828, -0.925975, --0.631526, -0.258211, -0.038192, --0.144931, -0.023586, -0.274130, --0.617842, -0.854688, --0.897744, -0.790441, --0.683439, -0.718025, --0.894352, -1.038336, --0.917695, -0.435220, -0.252326, --0.799481, -0.891431, --0.460918, --0.258546, -0.882284, --1.116501, -0.922568, --0.502790, -0.140103, --0.015897, -0.122206, --0.301173, -0.359752, --0.177964, --0.240501, -0.778218, --1.251529, -1.476408, --1.342627, -0.877462, --0.262000, --0.234073, -0.388495, --0.162930, --0.255520, -0.555085, --0.493646, -0.061569, -0.502540, --0.863245, -0.808631, --0.389759, --0.115722, -0.388403, --0.271811, --0.138424, -0.570188, --0.754351, -0.588100, --0.186951, --0.193961, -0.314353, --0.090630, --0.351695, -0.744694, --0.830534, -0.515281, -0.068946, --0.636792, -0.915037, --0.796167, -0.384117, -0.088691, --0.408598, -0.495849, --0.426335, -0.364693, --0.459246, -0.755409, --1.164439, -1.500791, --1.575521, -1.304059, --0.766314, -0.171589, -0.261879, --0.437887, -0.431658, --0.419719, -0.542290, --0.802095, -1.074277, --1.214094, -1.173452, --1.033638, -0.930183, --0.932061, -0.973490, --0.896766, -0.577543, --0.037110, --0.547202, -0.946946, --1.027886, -0.830904, --0.534911, -0.337911, --0.345329, -0.533802, --0.790495, -0.978902, --0.988279, -0.762177, --0.322499, --0.213450, -0.652705, --0.803871, -0.583489, --0.080109, --0.480729, -0.858679, --0.927549, -0.723148, --0.385068, -0.045917, -0.244635, --0.510188, -0.774341, --0.995983, -1.075368, --0.932902, -0.598275, --0.230466, -0.035032, --0.124928, -0.425140, --0.702777, -0.716740, --0.386483, --0.146959, -0.619538, --0.832299, -0.784892, --0.650526, -0.615088, --0.713098, -0.795451, --0.656368, -0.218338, -0.373843, --0.829301, -0.907559, --0.594070, -0.125057, -0.162433, --0.055264, --0.392033, -0.896909, --1.144294, -0.997867, --0.575418, -0.139492, -0.105957, --0.153307, -0.161363, --0.292260, -0.553506, --0.774213, -0.732403, --0.331148, --0.310735, -0.915323, --1.200712, -1.026393, --0.446555, --0.335440, -1.060963, --1.503813, -1.529860, --1.132015, -0.441235, -0.301767, --0.827286, -0.951032, --0.666889, -0.155711, -0.309984, --0.517621, -0.430559, --0.193013, -0.020019, --0.047746, -0.247144, --0.458745, -0.518771, --0.382287, -0.153958, --0.008019, -0.060955, --0.291208, -0.560462, --0.712603, -0.674465, --0.489834, -0.274456, --0.134282, -0.104840, --0.144002, -0.172134, --0.129356, -0.017155, -0.098280, --0.125284, -0.011404, -0.204857, --0.395860, -0.413773, --0.192043, --0.189368, -0.531984, --0.636947, -0.441783, --0.079501, --0.191572, -0.152250, -0.224092, --0.734814, -1.061574, --0.967481, -0.451759, -0.241308, --0.767301, -0.885116, --0.585078, -0.063326, -0.424884, --0.719902, -0.816577, --0.809847, -0.795171, --0.807174, -0.825217, --0.812938, -0.745931, --0.615959, -0.430731, --0.221296, -0.042957, -0.048953, --0.039004, --0.029645, -0.083346, --0.075943, -0.028544, --0.016232, -0.111571, --0.327747, -0.599652, --0.810383, -0.843479, --0.634491, -0.202056, -0.351302, --0.870643, -1.203635, --1.259302, -1.046139, --0.671985, -0.303170, --0.096681, -0.131367, --0.368988, -0.667348, --0.845213, -0.769930, --0.423423, --0.087949, -0.582983, --0.887998, -0.912956, --0.689764, -0.358050, --0.101226, -0.055315, --0.232077, -0.503979, --0.672969, -0.593462, --0.273157, --0.122658, -0.376871, --0.368344, -0.155863, -0.066700, --0.114416, --0.051196, -0.294281, --0.408533, -0.275647, -0.040360, --0.334859, -0.411045, --0.226131, --0.072496, -0.248463, --0.142967, --0.210989, -0.604135, --0.781804, -0.600156, --0.108727, --0.483360, -0.925498, --1.051736, -0.847180, --0.431941, --0.012157, -0.324451, --0.419087, -0.297924, --0.033081, --0.264524, -0.481492, --0.538541, -0.419125, --0.175880, --0.093776, -0.294897, --0.380832, -0.371673, --0.335499, -0.343028, --0.421063, -0.531105, --0.587877, -0.511162, --0.281560, --0.037017, -0.328242, --0.491283, -0.500152, --0.411612, -0.316231, --0.269963, -0.258697, --0.222241, -0.117006, -0.035480, --0.157805, -0.179300, --0.100124, --0.003019, -0.040913, -0.008801, --0.082664, -0.096971, --0.038859, --0.009340, --0.053351, -0.235242, --0.415617, -0.430412, --0.212777, --0.136069, -0.414270, --0.473531, -0.333795, --0.164978, -0.151085, --0.343568, -0.614093, --0.739457, -0.555246, --0.070242, --0.534696, -1.017821, --1.219205, -1.139877, --0.909964, -0.677759, --0.504400, -0.339916, --0.092811, --0.265840, -0.649063, --0.897830, -0.892433, --0.646285, -0.307209, --0.061480, -0.012941, --0.127884, -0.282109, --0.363990, -0.347606, --0.285678, -0.245362, --0.252706, -0.289429, --0.327160, -0.352378, --0.357716, -0.320803, --0.207675, -0.006880, -0.241171, --0.459958, -0.594463, --0.661241, -0.739162, --0.899899, -1.135669, --1.351023, -1.432702, --1.340105, -1.135907, --0.927650, -0.772147, --0.632074, -0.426499, --0.128060, --0.186325, -0.382263, --0.372991, -0.192338, -0.021573, --0.110411, --0.021017, -0.371170, --0.855913, -1.341244, --1.678806, -1.748769, --1.508013, -1.020107, --0.437351, --0.066894, -0.377581, --0.479623, -0.438755, --0.342620, -0.246964, --0.159967, -0.064252, -0.051217, --0.177490, -0.295528, --0.392033, -0.460190, --0.484067, -0.427140, --0.247586, --0.060306, -0.428901, --0.722314, -0.796876, --0.587534, -0.163356, -0.292624, --0.575740, -0.569973, --0.306023, --0.069053, -0.386933, --0.552165, -0.575916, --0.536568, -0.504936, --0.491572, -0.451785, --0.340346, -0.171973, --0.038413, -0.061402, --0.307286, -0.721732, --1.136450, -1.353401, --1.255677, -0.872729, --0.357528, --0.105038, -0.393842, --0.490466, -0.447088, --0.320514, -0.129572, -0.132389, --0.445991, -0.726689, --0.843711, -0.697641, --0.304637, --0.181337, -0.538374, --0.600478, -0.352166, -0.071264, --0.473498, -0.709337, --0.743126, -0.627880, --0.441536, -0.237776, --0.040787, --0.132617, -0.258191, --0.313319, -0.295327, --0.224537, -0.125764, --0.006515, --0.145509, -0.342340, --0.572682, -0.796775, --0.962656, -1.027740, --0.970357, -0.791362, --0.516927, -0.206488, -0.046430, --0.137243, --0.002694, -0.358226, --0.813695, -1.184730, --1.290561, -1.036813, --0.472521, --0.210399, -0.747871, --0.925635, -0.695990, --0.217881, --0.221275, -0.370198, --0.166082, --0.230184, -0.545161, --0.575970, -0.315793, -0.062787, --0.344593, -0.419277, --0.332066, -0.212951, --0.154298, -0.138377, --0.068078, --0.132331, -0.433062, --0.701462, -0.791016, --0.648323, -0.356607, --0.083609, --0.028234, --0.048061, -0.213107, --0.312952, -0.244221, --0.024610, --0.217029, -0.327109, --0.236984, -0.020374, -0.149730, --0.125507, --0.094702, -0.344393, --0.397025, -0.136252, -0.336701, --0.747287, -0.823647, --0.484100, --0.097992, -0.600713, --0.760380, -0.537992, --0.136245, --0.137954, -0.069073, -0.340802, --0.887229, -1.296382, --1.381104, -1.123470, --0.647683, -0.121289, -0.338084, --0.692148, -0.945068, --1.087806, -1.078456, --0.877325, -0.504698, --0.066178, --0.285588, -0.433092, --0.361087, -0.159091, -0.042676, --0.154771, -0.168289, --0.130475, -0.086487, --0.039967, --0.036567, -0.157566, --0.291826, -0.375020, --0.359504, -0.259263, --0.151115, -0.129249, --0.247486, -0.490883, --0.789952, -1.057992, --1.221572, -1.233717, --1.080873, -0.794518, --0.457451, -0.181925, --0.055366, -0.084600, --0.186354, -0.242226, --0.181999, -0.030419, -0.119902, --0.183397, -0.138254, --0.020314, --0.128816, -0.300753, --0.506507, -0.728850, --0.897878, -0.926055, --0.779422, -0.521379, --0.284397, -0.185455, --0.249646, -0.400271, --0.520327, -0.534452, --0.448981, -0.326898, --0.229474, -0.179417, --0.172888, -0.217058, --0.343824, -0.574041, --0.859904, -1.065440, --1.023731, -0.647474, --0.017611, --0.623657, -0.988100, --0.900149, -0.397240, -0.294546, --0.891980, -1.201978, --1.188906, -0.932714, --0.533379, -0.049476, -0.485024, --0.999244, -1.355952, --1.401494, -1.069905, --0.459651, --0.188179, -0.613073, --0.684661, -0.476240, --0.206904, -0.088063, --0.181251, -0.367072, --0.443351, -0.275583, -0.109572, --0.545766, -0.832537, --0.843890, -0.577296, --0.137889, --0.310520, -0.600499, --0.617082, -0.351305, -0.072870, --0.433849, -0.516694, --0.238390, --0.286848, -0.797147, --1.027040, -0.857129, --0.374004, --0.192995, -0.607065, --0.738009, -0.590279, --0.251552, --0.178193, -0.619961, --1.003577, -1.247991, --1.275137, -1.059330, --0.671574, -0.270958, --0.031428, -0.043730, --0.259083, -0.518461, --0.653802, -0.593668, --0.399004, -0.205048, --0.115195, -0.128628, --0.153847, -0.090069, -0.092381, --0.333348, -0.529573, --0.600767, -0.524092, --0.324913, -0.050693, -0.239814, --0.467239, -0.527486, --0.320329, --0.189504, -0.915120, --1.641901, -2.097329, --2.071891, -1.529034, --0.641155, --0.272876, -0.880362, --0.974288, -0.556361, -0.170440, --0.893723, -1.326338, --1.325054, -0.939843, --0.372737, --0.130165, -0.395770, --0.390951, -0.211665, --0.010535, --0.092501, -0.070076, -0.007907, --0.022871, --0.117290, -0.416440, --0.776940, -1.043411, --1.079314, -0.832940, --0.358869, --0.207160, -0.696711, --0.956361, -0.886996, --0.478556, --0.166498, -0.844790, --1.318768, -1.422983, --1.153516, -0.677255, --0.243333, -0.045636, --0.122518, -0.355647, --0.562736, -0.619106, --0.530297, -0.415546, --0.418508, -0.603199, --0.899616, -1.134360, --1.131970, -0.827921, --0.321450, --0.171204, -0.439768, --0.403380, -0.154406, -0.106360, --0.199174, -0.072050, -0.184865, --0.419435, -0.527501, --0.510969, -0.448501, --0.414315, -0.417585, --0.409987, -0.345803, --0.235215, -0.142417, --0.132614, -0.215584, --0.332853, -0.397058, --0.351254, -0.206001, --0.032392, --0.078824, -0.064864, -0.078691, --0.294161, -0.482028, --0.537703, -0.394703, --0.059104, --0.383965, -0.801937, --1.071443, -1.125681, --0.963800, -0.626053, --0.169591, --0.325759, -0.734718, --0.896221, -0.687186, --0.125847, --0.582613, -1.124471, --1.251207, -0.932621, --0.372600, --0.129884, -0.374848, --0.370586, -0.288048, --0.307948, -0.482088, --0.707420, -0.820013, --0.729228, -0.489405, --0.256635, -0.164778, --0.215166, -0.268385, --0.152474, --0.189879, -0.631785, --0.935453, -0.922384, --0.609679, -0.198850, -0.083050, --0.166096, -0.192011, --0.386203, -0.842614, --1.397062, -1.705239, --1.484434, -0.744935, -0.167496, --0.765870, -0.729434, --0.116057, --0.667464, -1.118835, --0.948555, -0.242675, -0.614135, --1.186331, -1.234108, --0.810640, -0.178680, -0.367644, --0.652812, -0.667714, --0.520297, -0.344825, --0.227111, -0.175049, --0.134602, -0.033393, -0.171785, --0.464783, -0.769798, --0.979626, -0.999062, --0.784886, -0.366592, -0.158580, --0.653784, -0.985179, --1.066900, -0.893977, --0.547298, -0.160637, -0.141362, --0.302273, -0.351245, --0.362991, -0.389184, --0.416020, -0.385148, --0.260465, -0.081415, -0.048507, --0.034088, --0.135555, -0.369161, --0.529012, -0.517168, --0.330167, -0.048722, -0.220477, --0.404545, -0.487781, --0.493545, -0.448668, --0.360655, -0.223397, --0.044009, --0.132524, -0.225575, --0.156851, --0.092930, -0.446465, --0.747043, -0.835187, --0.645209, -0.257922, -0.134449, --0.337416, -0.268769, --0.002248, --0.287837, -0.440033, --0.399523, -0.235204, --0.079893, -0.040196, --0.132187, -0.274162, --0.334355, -0.206319, -0.126054, --0.568331, -0.954134, --1.123604, -0.998287, --0.611020, -0.079892, -0.450355, --0.863448, -1.101554, --1.168481, -1.113190, --0.999691, -0.870541, --0.721923, -0.510986, --0.200164, --0.188539, -0.552868, --0.749880, -0.678843, --0.355293, --0.073750, -0.387121, --0.390963, -0.015388, -0.637555, --1.319582, -1.735581, --1.685458, -1.182719, --0.473898, --0.076849, -0.189733, -0.162692, --0.738486, -1.181261, --1.244891, -0.932213, --0.455422, -0.060853, -0.140161, --0.208890, -0.274477, --0.392638, -0.494004, --0.460405, -0.250590, -0.044557, --0.269458, -0.332474, --0.278106, -0.237794, --0.304038, -0.441977, --0.517350, -0.416416, --0.152904, --0.131684, -0.275911, --0.225532, -0.074552, -0.013742, -0.058676, --0.244173, -0.389878, --0.366997, -0.182947, -0.018536, --0.072821, --0.068132, -0.291115, --0.410107, -0.317205, --0.072135, --0.143861, -0.173251, --0.009366, --0.196190, -0.251626, --0.076931, --0.226966, -0.445321, --0.405359, -0.107416, -0.264927, --0.466777, -0.360833, --0.012102, --0.361105, -0.543608, --0.470819, -0.258432, --0.097760, -0.104812, --0.243770, -0.379354, --0.403988, -0.325867, --0.242299, -0.227256, --0.239853, -0.145151, -0.160594, --0.625049, -1.031335, --1.131341, -0.827277, --0.259545, --0.274462, -0.515094, --0.405660, -0.108331, -0.132029, --0.166637, -0.033123, -0.095279, --0.047948, --0.222002, -0.607586, --0.911588, -0.954474, --0.669652, -0.147755, -0.386877, --0.666033, -0.505270, -0.089348, --0.900847, -1.593815, --1.877585, -1.648312, --1.029344, -0.294454, -0.271972, --0.498236, -0.377959, --0.044643, --0.306619, -0.512354, --0.512414, -0.370589, --0.233006, -0.242494, --0.453285, -0.793314, --1.096032, -1.185905, --0.972944, -0.507353, -0.037143, --0.447935, -0.585591, --0.461135, -0.228851, --0.092423, -0.178404, --0.456575, -0.759429, --0.889807, -0.747505, --0.394176, -0.016797, -0.185689, --0.121709, --0.139491, -0.409975, --0.494597, -0.306923, -0.076542, --0.455588, -0.616695, --0.449604, -0.000227, -0.569389, --1.079541, -1.417699, --1.555116, -1.502898, --1.265379, -0.843190, --0.281676, --0.292194, -0.697546, --0.787422, -0.533999, --0.045813, --0.494248, -0.920121, --1.139821, -1.136167, --0.938728, -0.606159, --0.225916, --0.093940, -0.261265, --0.247093, -0.102163, -0.078857, --0.218940, -0.294981, --0.323172, -0.317420, --0.268476, -0.164177, --0.025021, --0.088733, -0.114549, --0.040119, --0.076088, -0.138811, --0.082388, --0.077673, -0.245252, --0.298303, -0.165407, -0.121548, --0.432830, -0.607861, --0.549950, -0.292242, -0.012118, --0.178419, -0.105785, -0.157085, --0.442531, -0.571019, --0.459952, -0.160452, -0.195095, --0.485530, -0.662031, --0.741395, -0.753922, --0.700771, -0.558307, --0.319661, -0.031132, -0.213715, --0.322686, -0.262361, --0.083588, --0.103517, -0.189866, --0.127134, --0.047745, -0.236890, --0.341481, -0.323414, --0.231569, -0.172100, --0.234195, -0.415614, --0.602147, -0.628941, --0.396241, --0.037624, -0.462771, --0.639784, -0.464595, --0.058570, --0.295465, -0.342363, --0.041813, --0.385249, -0.596535, --0.366195, --0.245855, -0.917716, --1.271581, -1.120421, --0.583457, --0.006032, -0.328668, --0.279559, -0.009429, -0.204774, --0.154189, --0.176654, -0.622390, --0.957535, -1.034902, --0.857055, -0.550472, --0.272165, -0.113301, --0.059374, -0.027197, -0.052072, --0.166242, -0.222333, --0.115071, --0.185858, -0.593584, --0.939035, -1.061938, --0.901282, -0.531978, --0.127562, --0.129951, -0.144916, -0.042709, --0.282931, -0.405746, --0.327384, -0.107607, -0.084616, --0.084918, --0.142634, -0.460146, --0.634640, -0.500835, --0.097513, --0.330194, -0.481367, --0.206900, --0.374353, -0.940123, --1.168365, -0.937721, --0.390429, --0.171458, -0.471507, --0.401913, -0.050734, -0.374624, --0.663241, -0.692512, --0.465060, -0.090705, -0.269368, --0.471307, -0.442328, --0.198783, --0.173930, -0.561491, --0.856739, -0.981048, --0.897917, -0.629308, --0.268140, --0.037641, -0.145297, --0.001927, --0.302431, -0.564012, --0.574920, -0.248142, -0.326665, --0.934773, -1.357046, --1.476596, -1.308229, --0.951702, -0.521737, --0.107706, --0.225948, -0.427676, --0.466980, -0.362756, --0.200699, -0.109007, --0.193618, -0.470091, --0.838051, -1.120960, --1.155191, -0.882359, --0.393657, --0.103397, -0.385387, --0.331073, --0.008594, -0.432594, --0.697331, -0.651006, --0.317962, --0.116897, -0.416050, --0.428204, -0.176926, -0.154474, --0.334480, -0.224124, -0.140504, --0.574920, -0.861665, --0.876767, -0.647829, --0.316600, -0.043567, -0.078176, --0.053151, --0.042141, -0.107666, --0.058692, --0.153071, -0.524679, --0.984607, -1.386273, --1.540262, -1.298864, --0.662481, --0.162689, -0.820818, --0.977621, -0.520008, -0.345651, --1.180352, -1.551584, --1.283563, -0.559565, -0.191146, --0.549983, -0.346295, -0.266906, --0.929498, -1.291753, --1.192584, -0.705551, --0.056002, --0.512647, -0.838948, --0.873778, -0.659691, --0.298056, --0.076487, -0.322388, --0.332933, -0.087266, -0.318827, --0.693466, -0.825110, --0.584607, -0.003382, -0.714293, --1.260571, -1.355893, --0.892221, -0.016508, -0.905884, --1.452797, -1.358682, --0.656535, --0.343916, -1.230069, --1.698018, -1.668538, --1.257296, -0.660019, --0.056693, --0.413272, -0.638944, --0.551890, -0.179779, -0.317480, --0.693525, -0.740378, --0.409922, --0.160779, -0.739910, --1.135782, -1.276770, --1.194292, -0.952230, --0.602156, -0.199698, -0.157287, --0.337902, -0.256984, -0.034839, --0.342280, -0.435485, --0.214728, --0.194769, -0.503491, --0.443199, --0.051466, -0.795064, --1.467413, -1.805705, --1.738391, -1.383420, --0.938925, -0.562438, --0.318484, -0.201633, --0.182555, -0.225507, --0.275199, -0.252867, --0.093085, --0.195442, -0.501124, --0.655608, -0.539298, --0.174496, --0.268018, -0.566620, --0.591027, -0.391058, --0.164459, -0.118832, --0.319473, -0.631165, --0.800354, -0.626423, --0.105960, --0.549432, -1.033588, --1.123130, -0.796867, --0.229104, --0.323980, -0.663244, --0.727965, -0.589441, --0.383819, -0.236519, --0.213744, -0.307188, --0.442945, -0.510378, --0.412565, -0.125903, -0.264752, --0.592264, -0.696148, --0.526103, -0.187592, -0.112097, --0.192435, -0.021508, -0.253287, --0.395377, -0.239489, -0.181662, --0.637475, -0.840269, --0.641236, -0.144391, -0.351996, --0.555920, -0.382287, --0.003206, --0.292500, -0.322847, --0.145073, --0.003942, --0.094445, -0.465075, --0.919066, -1.190659, --1.112645, -0.702708, --0.123827, --0.419546, -0.765057, --0.824252, -0.588258, --0.137555, --0.353844, -0.658606, --0.595614, -0.146112, -0.495840, --0.996934, -1.061342, --0.609151, --0.163003, -0.890186, --1.252739, -1.154771, --0.749618, -0.305418, --0.017457, --0.095993, -0.152053, --0.267702, -0.445544, --0.567511, -0.492871, --0.179544, --0.264720, -0.639245, --0.775470, -0.644821, --0.377846, -0.184441, --0.227357, -0.526598, --0.946844, -1.269161, --1.304533, -0.991590, --0.432228, --0.152744, -0.530911, --0.578899, -0.351910, --0.055367, --0.075116, --0.079570, -0.440653, --0.773798, -0.834856, --0.527030, --0.033801, -0.586926, --0.878457, -0.794304, --0.396924, --0.136212, -0.611455, --0.889992, -0.911356, --0.691609, -0.319128, -0.059035, --0.283130, -0.259886, --0.031822, --0.222248, -0.280090, --0.018595, --0.484812, -0.970095, --1.137755, -0.838009, --0.185517, --0.484037, -0.802643, --0.593808, --0.010580, -0.642073, --0.918485, -0.679836, --0.085652, --0.490704, -0.702783, --0.450522, --0.063751, -0.475349, --0.496835, -0.097988, -0.487825, --0.925239, -0.990049, --0.691069, -0.229101, -0.161520, --0.367134, -0.438320, --0.506990, -0.655280, --0.842584, -0.941876, --0.847112, -0.561470, --0.198197, --0.099750, -0.253195, --0.281949, -0.263336, --0.258453, -0.270263, --0.264613, -0.227998, --0.205108, -0.275814, --0.482216, -0.761960, --0.948746, -0.859564, --0.423182, --0.237126, -0.837977, --1.084894, -0.850271, --0.262806, --0.355796, -0.669923, --0.513803, --0.028023, -0.678364, --1.117989, -1.144864, --0.767056, -0.190151, -0.295549, --0.476014, -0.334525, --0.052335, --0.123546, -0.060749, -0.161985, --0.322245, -0.239488, -0.066768, --0.377229, -0.440260, --0.179938, --0.220134, -0.430696, --0.211657, --0.401880, -1.099161, --1.481356, -1.306700, --0.626185, --0.272497, -1.056764, --1.532891, -1.703019, --1.685604, -1.590008, --1.450225, -1.251576, --0.999074, -0.751659, --0.592872, -0.570670, --0.661521, -0.784340, --0.847276, -0.793702, --0.624754, -0.395422, --0.188732, -0.076041, --0.078235, -0.148634, --0.193878, -0.128063, -0.069634, --0.330927, -0.528988, --0.552281, -0.380358, --0.111646, --0.084649, -0.073827, -0.145644, --0.421543, -0.533912, --0.341913, --0.106166, -0.584181, --0.825283, -0.697853, --0.295444, --0.129188, -0.343264, --0.293646, -0.123127, --0.028084, -0.071764, --0.110349, --0.096953, -0.672567, --1.471732, -2.127217, --2.268649, -1.764575, --0.818317, --0.146948, -0.734480, --0.791550, -0.466879, --0.085512, --0.066848, --0.091375, -0.422702, --0.699927, -0.777369, --0.678951, -0.545515, --0.492973, -0.500632, --0.423203, -0.119831, -0.402918, --0.952409, -1.255764, --1.138491, -0.646300, --0.021306, --0.449774, -0.606087, --0.485459, -0.260585, --0.098753, -0.051870, --0.049265, --0.017332, -0.191496, --0.411054, -0.552332, --0.518491, -0.303105, -0.012320, --0.313390, -0.509738, --0.554552, -0.430904, --0.142198, --0.268818, -0.693257, --0.970715, -0.966003, --0.663893, -0.200561, -0.211550, --0.419122, -0.419036, --0.333169, -0.293256, --0.336486, -0.395306, --0.376415, -0.249613, --0.071278, --0.064601, -0.094845, --0.018014, --0.123064, -0.276681, --0.401278, -0.462149, --0.425256, -0.268336, --0.007373, --0.284155, -0.487870, --0.488907, -0.237188, -0.214939, --0.724245, -1.114072, --1.247463, -1.079687, --0.668445, -0.143902, -0.343141, --0.672438, -0.788999, --0.712642, -0.521862, --0.318731, -0.188246, --0.167373, -0.234239, --0.320251, -0.340674, --0.234493, -0.000586, -0.286991, --0.498886, -0.507261, --0.258596, --0.176049, -0.608975, --0.811260, -0.625010, --0.055711, --0.709685, -1.376965, --1.678069, -1.495850, --0.914390, -0.172271, -0.449362, --0.740694, -0.628071, --0.177959, --0.439184, -1.001828, --1.299571, -1.203483, --0.726349, -0.035259, -0.611795, --0.987861, -1.012528, --0.787499, -0.525478, --0.414851, -0.504844, --0.682653, -0.753728, --0.572968, -0.143710, -0.376624, --0.767018, -0.871242, --0.681961, -0.327780, -0.021597, --0.261741, -0.395121, --0.485515, -0.571934, --0.618799, -0.545330, --0.306383, --0.047153, -0.383372, --0.568384, -0.546251, --0.360416, -0.110297, -0.112070, --0.255925, -0.304517, --0.252906, -0.101855, -0.127757, --0.380907, -0.575692, --0.632521, -0.507711, --0.213208, --0.183834, -0.577442, --0.850551, -0.912473, --0.738560, -0.394364, --0.021159, --0.223691, -0.246767, --0.071119, --0.176609, -0.341156, --0.329085, -0.157134, -0.068778, --0.224248, -0.238042, --0.122263, --0.050680, -0.204231, --0.309948, -0.403654, --0.553858, -0.799248, --1.094297, -1.304351, --1.266836, -0.893518, --0.254099, --0.420645, -0.838802, --0.808506, -0.366288, -0.219126, --0.590944, -0.519612, --0.050719, --0.521752, -0.847377, --0.747815, -0.322376, -0.139777, --0.369560, -0.293540, --0.054262, --0.122766, -0.103568, -0.067303, --0.218329, -0.188166, -0.056528, --0.400030, -0.655727, --0.682480, -0.463856, --0.110610, --0.202107, -0.318719, --0.166943, --0.217783, -0.704735, --1.109047, -1.254619, --1.045900, -0.522327, -0.137393, --0.677320, -0.873614, --0.639781, -0.072609, -0.588547, --1.070537, -1.188143, --0.917463, -0.387968, -0.193690, --0.639311, -0.845318, --0.809060, -0.607426, --0.359307, -0.182657, --0.147618, -0.237733, --0.346101, -0.326832, --0.086225, --0.339711, -0.778433, --0.999804, -0.840087, --0.299564, --0.442382, -1.104624, --1.435528, -1.333474, --0.896036, -0.369760, --0.020723, --0.009058, --0.220658, -0.486261, --0.537915, -0.257858, -0.257768, --0.747129, -0.934097, --0.692285, -0.123992, -0.489497, --0.834579, -0.726984, --0.205863, --0.482520, -1.000323, --1.079973, -0.659661, -0.073279, --0.760514, -1.046461, --0.766124, -0.044485, -0.758809, --1.241774, -1.185571, --0.677842, -0.053293, -0.315402, --0.243660, --0.169201, -0.633981, --0.883715, -0.851505, --0.691320, -0.636893, --0.810383, -1.122898, --1.334710, -1.226537, --0.759385, -0.117249, -0.390206, --0.501240, -0.150885, -0.483963, --1.065073, -1.260714, --0.920106, -0.162359, -0.679541, --1.242665, -1.344430, --1.082819, -0.750446, --0.615163, -0.724805, --0.884859, -0.828427, --0.447219, --0.098370, -0.478255, --0.427405, --0.058280, -0.705942, --1.136921, -1.103063, --0.631415, --0.008694, -0.482627, --0.590586, -0.365262, --0.015654, --0.231635, -0.279568, --0.200218, -0.153274, --0.255003, -0.495613, --0.755644, -0.895643, --0.846346, -0.639531, --0.371766, -0.139807, -0.004697, --0.060293, -0.053500, --0.016936, --0.017053, -0.014144, -0.055975, --0.200691, -0.387583, --0.550209, -0.619669, --0.562084, -0.394456, --0.170195, --0.051038, -0.225441, --0.329533, -0.355329, --0.308160, -0.208690, --0.092140, -0.000154, -0.031525, -0.014566, --0.125239, -0.246548, --0.289504, -0.167160, -0.143655, --0.557157, -0.899577, --1.003199, -0.815155, --0.437753, -0.063697, -0.144923, --0.140956, --0.015433, -0.229434, --0.434025, -0.594764, --0.676748, -0.629764, --0.420124, -0.080616, -0.275004, --0.498144, -0.484594, --0.232370, --0.159259, -0.544421, --0.801722, -0.881948, --0.812515, -0.666111, --0.517514, -0.412393, --0.358187, -0.331538, --0.290909, -0.189589, -0.006351, --0.290910, -0.592946, --0.778379, -0.700780, --0.290861, --0.363292, -1.009342, --1.330902, -1.120311, --0.425864, --0.433602, -1.023895, --1.046469, -0.530795, -0.166783, --0.574634, -0.402748, -0.267660, --1.029427, -1.403938, --1.139064, -0.356998, -0.538016, --1.120820, -1.196542, --0.881462, -0.478702, --0.252774, -0.263793, --0.362967, -0.330513, --0.044195, --0.437509, -0.920241, --1.198110, -1.166317, --0.856357, -0.393663, -0.072350, --0.414890, -0.543819, --0.414294, -0.052387, -0.420747, --0.811823, -0.945417, --0.775232, -0.430189, --0.142588, -0.095451, --0.297693, -0.580998, --0.720782, -0.590511, --0.239198, --0.153828, -0.402083, --0.421552, -0.260396, --0.047075, --0.095004, -0.111466, --0.031608, --0.062013, -0.087593, --0.014583, --0.115061, -0.211490, --0.200023, -0.085780, -0.028388, -0.005181, --0.280769, -0.759307, --1.265218, -1.571100, --1.524876, -1.144887, --0.624867, -0.238952, --0.192214, -0.495694, --0.940165, -1.196515, --1.000967, -0.326516, -0.565133, --1.239869, -1.326115, --0.737893, --0.252895, -1.153075, --1.524233, -1.234668, --0.530935, --0.118319, -0.308997, -0.061167, --0.749466, -1.336347, --1.488065, -1.146434, --0.536195, -0.002199, -0.209674, --0.089952, --0.155286, -0.258453, --0.073425, --0.330048, -0.716797, --0.842543, -0.609744, --0.122405, --0.386701, -0.697454, --0.717205, -0.506593, --0.220179, -0.013723, -0.026222, -0.097743, --0.318821, -0.550308, --0.719828, -0.776928, --0.683287, -0.413147, -0.016764, --0.505899, -0.868157, --0.907025, -0.541229, -0.108756, --0.758532, -1.121923, --1.092184, -0.805481, --0.529668, -0.457129, --0.560060, -0.621613, --0.417945, --0.092855, -0.721598, --1.172075, -1.237717, --0.923960, -0.419397, -0.041772, --0.313089, -0.378803, --0.304404, -0.159872, -0.018150, --0.209435, -0.373950, --0.442051, -0.345424, --0.064064, --0.349514, -0.787935, --1.134512, -1.304763, --1.261722, -1.008453, --0.578962, -0.042535, -0.485608, --0.852876, -0.916548, --0.617663, -0.037834, -0.609542, --1.066757, -1.156526, --0.871716, -0.375047, -0.090053, --0.323783, -0.262448, -0.002903, --0.283038, -0.392140, --0.247284, --0.084566, -0.423170, --0.582542, -0.486398, --0.212631, --0.067713, -0.212780, --0.200224, -0.118494, --0.075480, -0.108136, --0.167980, -0.184879, --0.141555, -0.089255, --0.095138, -0.176433, --0.283004, -0.340557, --0.311116, -0.217983, --0.120814, -0.070547, --0.083027, -0.144304, --0.230075, -0.315489, --0.369828, -0.350894, --0.217147, --0.039697, -0.360950, --0.616677, -0.652901, --0.380308, --0.143521, -0.701951, --1.011127, -0.879366, --0.336152, --0.365975, -0.894892, --1.039647, -0.831071, --0.497491, -0.290621, --0.312013, -0.464265, --0.552808, -0.449332, --0.189072, --0.066315, -0.161863, --0.069644, --0.094878, -0.166570, --0.057720, --0.178558, -0.390170, --0.434260, -0.269649, -0.024645, --0.301767, -0.422782, --0.311215, --0.024949, -0.493089, --0.933948, -1.168478, --1.073771, -0.654729, --0.058074, --0.496558, -0.832195, --0.899386, -0.774719, --0.585495, -0.427155, --0.331717, -0.290699, --0.289262, -0.313700, --0.336742, -0.314541, --0.214869, -0.055339, -0.089756, --0.131340, -0.028736, -0.175177, --0.374043, -0.456888, --0.363862, -0.107998, -0.237373, --0.567988, -0.781437, --0.809898, -0.648744, --0.365951, -0.076746, -0.111093, --0.150401, -0.071348, -0.048417, --0.136956, -0.168190, --0.167627, -0.187452, --0.269591, -0.415015, --0.572649, -0.656800, --0.592449, -0.367858, --0.056628, --0.219562, -0.374073, --0.424523, -0.483647, --0.662031, -0.951267, --1.187738, -1.145949, --0.707060, --0.021892, -0.738611, --1.118799, -1.017323, --0.558042, -0.050665, -0.207296, --0.110218, --0.208534, -0.482419, --0.490985, -0.193021, -0.265465, --0.659757, -0.828198, --0.751770, -0.529921, --0.288043, -0.095331, -0.049537, --0.171033, -0.264996, --0.295743, -0.242881, --0.147241, -0.102677, --0.188551, -0.395228, --0.607977, -0.673207, --0.505434, -0.156655, -0.207359, --0.414857, -0.406903, --0.280915, -0.221525, --0.360944, -0.665560, --0.933694, -0.914789, --0.475009, --0.301188, -1.143704, --1.743696, -1.919729, --1.697022, -1.255433, --0.791684, -0.396224, --0.028370, --0.403082, -0.924023, --1.436568, -1.762262, --1.752116, -1.382127, --0.769539, -0.109146, -0.416184, --0.692521, -0.681636, --0.403719, --0.069913, -0.610194, --1.038413, -1.177160, --0.934672, -0.372272, -0.299618, --0.809755, -0.954501, --0.694294, -0.166242, -0.387199, --0.729359, -0.725816, --0.391222, --0.122174, -0.585862, --0.789118, -0.635952, --0.201816, --0.290666, -0.582059, --0.521519, -0.158832, -0.283714, --0.548624, -0.498290, --0.180637, --0.233800, -0.581582, --0.792784, -0.872410, --0.816175, -0.563148, --0.050137, --0.671750, -1.374246, --1.731444, -1.515503, --0.775253, --0.143006, -0.770269, --0.784024, -0.200328, -0.634393, --1.244495, -1.291014, --0.742560, --0.137049, -0.955234, --1.398797, -1.367084, --0.976953, -0.464038, --0.051968, --0.139854, -0.114415, -0.048749, --0.259817, -0.457275, --0.600147, -0.638351, --0.508447, -0.177356, -0.296685, --0.750849, -0.989727, --0.905955, -0.557917, --0.134456, --0.175090, -0.305421, --0.335070, -0.389300, --0.512536, -0.621383, --0.576810, -0.310276, -0.106098, --0.503643, -0.734051, --0.758187, -0.636825, --0.444293, -0.195023, -0.142676, --0.557118, -0.919588, --1.016978, -0.692810, -0.005332, --0.799552, -1.321468, --1.332928, -0.872607, --0.223852, --0.270063, -0.411060, --0.237730, --0.037507, -0.180055, --0.066810, --0.268708, -0.680128, --0.992633, -1.075392, --0.876067, -0.421707, -0.194238, --0.825173, -1.291410, --1.425138, -1.144786, --0.525013, --0.197191, -0.716654, --0.820991, -0.518870, --0.040529, --0.301015, -0.298092, -0.039308, --0.512632, -0.869096, --0.943017, -0.724072, --0.336689, --0.034190, -0.226228, --0.164384, --0.108909, -0.451285, --0.688062, -0.703823, --0.506727, -0.221306, --0.010412, --0.023538, --0.106671, -0.294035, --0.412551, -0.392519, --0.250317, -0.062651, -0.089793, --0.171599, -0.206826, --0.252339, -0.347853, --0.475000, -0.555562, --0.497109, -0.261316, -0.091436, --0.418464, -0.570205, --0.479280, -0.203704, -0.106423, --0.297355, -0.296502, --0.140198, --0.066536, -0.222750, --0.284262, -0.266560, --0.208160, -0.130910, --0.029190, --0.108141, -0.266489, --0.395359, -0.432225, --0.345126, -0.161557, -0.041271, --0.180425, -0.213776, --0.154461, -0.045902, -0.077072, --0.206259, -0.344429, --0.475245, -0.549679, --0.503964, -0.298473, -0.046476, --0.437727, -0.729449, --0.776037, -0.503860, -0.030531, --0.636214, -1.058141, --1.096240, -0.709501, --0.042567, --0.642518, -1.091638, --1.175592, -0.943685, --0.591170, -0.353507, --0.372645, -0.604275, --0.830600, -0.792981, --0.377008, --0.273712, -0.812017, --0.897243, -0.430508, -0.347904, --0.978336, -1.052350, --0.464393, --0.516390, -1.402293, --1.776473, -1.535874, --0.934302, -0.397842, --0.234679, -0.437145, --0.713140, -0.721646, --0.335774, --0.263213, -0.726099, --0.794027, -0.472783, -0.000669, --0.352455, -0.459401, --0.389422, -0.290640, --0.247560, -0.229935, --0.159012, -0.008998, -0.157968, --0.251371, -0.242207, --0.195686, -0.215380, --0.349701, -0.542585, --0.671091, -0.639492, --0.456423, -0.236215, --0.124546, -0.201450, --0.426720, -0.659667, --0.735884, -0.553899, --0.128356, --0.407934, -0.848390, --0.990583, -0.728358, --0.124195, --0.583564, -1.068778, --1.076381, -0.568805, -0.235872, --0.971496, -1.319531, --1.174683, -0.683392, --0.143907, --0.159125, -0.085633, -0.322409, --0.891530, -1.407684, --1.700113, -1.693252, --1.421341, -1.007470, --0.611422, -0.361358, --0.296261, -0.348134, --0.377196, -0.247821, -0.089417, --0.552403, -0.950626, --1.077478, -0.830031, --0.286963, --0.312773, -0.689058, --0.670164, -0.280420, -0.285034, --0.773169, -0.997181, --0.901848, -0.551828, --0.072241, --0.413889, -0.821241, --1.103411, -1.230528, --1.166144, -0.870339, --0.340769, --0.331741, -0.946424, --1.257779, -1.106082, --0.531042, --0.223893, -0.839693, --1.104365, -1.024095, --0.786099, -0.607029, --0.582264, -0.642494, --0.634908, -0.454289, --0.122126, --0.236734, -0.488195, --0.573582, -0.522142, --0.394647, -0.219946, -0.011214, --0.288711, -0.524190, --0.567779, -0.314380, -0.177759, --0.667705, -0.858077, --0.591891, --0.026109, -0.683392, --1.056460, -1.008331, --0.648872, -0.230081, -0.029983, --0.064162, --0.051035, -0.191065, --0.278460, -0.311459, --0.326075, -0.338751, --0.319330, -0.211403, -0.019029, --0.343532, -0.669786, --0.883304, -0.907869, --0.744900, -0.466697, --0.171185, --0.065417, -0.206620, --0.243755, -0.180319, --0.034295, --0.149582, -0.303504, --0.367125, -0.322308, --0.197078, -0.032130, -0.156553, --0.375691, -0.610898, --0.788698, -0.799451, --0.582142, -0.202686, -0.155837, --0.308028, -0.206951, -0.005203, --0.091429, --0.103328, -0.528279, --0.955598, -1.142560, --1.003133, -0.658523, --0.333863, -0.187624, --0.208013, -0.252117, --0.187759, -0.018055, -0.113998, --0.045032, --0.262332, -0.666480, --0.934329, -0.905803, --0.610367, -0.247816, --0.048797, -0.119207, --0.378877, -0.629591, --0.692878, -0.516026, --0.181633, --0.166989, -0.416798, --0.529781, -0.528714, --0.457740, -0.356929, --0.260136, -0.196844, --0.180871, -0.194477, --0.191312, -0.126430, -0.009433, --0.184518, -0.356953, --0.511800, -0.665309, --0.829253, -0.970730, --1.011592, -0.876565, --0.553291, -0.115411, -0.309924, --0.604981, -0.712347, --0.647102, -0.474246, --0.271478, -0.097522, -0.023374, --0.097491, -0.143039, --0.169847, -0.172973, --0.145486, -0.097919, --0.062854, -0.075792, --0.146914, -0.251119, --0.349260, -0.424043, --0.496633, -0.604412, --0.755972, -0.904367, --0.968012, -0.887676, --0.674468, -0.409257, --0.195313, -0.104016, --0.152529, -0.316240, --0.547950, -0.781804, --0.932419, -0.916908, --0.703367, -0.349776, -0.011644, --0.248781, -0.311200, --0.254292, -0.186843, --0.186805, -0.253003, --0.324004, -0.335932, --0.265300, -0.128297, -0.045655, --0.229161, -0.386284, --0.459123, -0.384212, --0.141487, --0.202133, -0.502668, --0.612990, -0.476541, --0.171169, --0.134955, -0.288928, --0.246111, -0.084785, -0.065127, --0.123461, -0.115921, --0.144747, -0.297793, --0.565374, -0.827897, --0.926115, -0.766141, --0.386817, --0.055102, -0.369641, --0.431164, -0.232878, -0.121765, --0.471573, -0.662335, --0.602359, -0.300264, -0.126161, --0.484892, -0.591247, --0.366276, --0.103927, -0.594905, --0.854295, -0.737141, --0.285895, --0.293933, -0.747177, --0.903440, -0.755140, --0.440406, -0.147989, --0.004925, -0.012593, --0.066267, -0.042819, -0.102181, --0.295021, -0.395312, --0.307608, -0.072871, -0.137436, --0.135194, --0.137263, -0.539331, --0.807871, -0.735022, --0.323116, --0.198750, -0.514366, --0.419763, --0.054875, -0.677455, --1.164570, -1.337372, --1.182510, -0.800611, --0.309319, --0.212939, -0.708618, --1.090297, -1.231303, --1.031481, -0.515216, -0.127095, --0.610889, -0.712606, --0.405117, --0.123941, -0.586592, --0.763751, -0.617103, --0.279366, --0.053211, -0.242394, --0.265928, -0.191045, --0.104078, -0.055788, --0.054787, -0.093017, --0.164515, -0.255553, --0.324940, -0.311739, --0.181772, --0.023650, -0.192314, --0.214894, -0.075893, -0.119957, --0.221667, -0.154152, -0.013099, --0.113398, -0.012146, -0.285660, --0.633919, -0.844721, --0.806518, -0.536902, --0.151393, --0.205333, -0.410783, --0.385917, -0.111678, -0.343246, --0.809412, -1.064018, --0.945935, -0.474813, -0.123033, --0.530264, -0.538291, --0.194067, --0.223202, -0.395890, --0.202800, --0.177666, -0.383503, --0.133862, --0.544028, -1.298402, --1.675196, -1.430798, --0.710305, --0.048000, -0.421948, --0.304216, --0.034835, -0.169492, -0.143535, --0.772204, -1.306676, --1.365743, -0.874580, --0.109973, --0.502307, -0.671526, --0.403240, --0.052302, -0.392620, --0.444009, -0.220309, -0.142083, --0.491017, -0.721807, --0.774233, -0.604865, --0.190757, --0.423951, -1.084718, --1.549912, -1.598965, --1.169861, -0.428004, -0.300208, --0.705453, -0.676930, --0.364335, -0.072382, --0.054233, -0.343892, --0.742083, -0.962280, --0.830692, -0.399979, -0.095297, --0.397827, -0.382487, --0.105316, --0.267654, -0.580470, --0.764177, -0.829020, --0.803144, -0.686140, --0.460298, -0.143475, -0.175111, --0.363608, -0.333356, --0.118810, --0.119059, -0.186723, -0.004847, --0.358199, -0.634426, --0.611884, -0.255330, -0.230192, --0.516468, -0.372302, -0.165539, --0.798098, -1.150500, --1.010886, -0.457347, -0.206975, --0.651983, -0.709930, --0.440203, -0.054681, -0.221769, --0.262717, -0.075949, -0.227598, --0.496650, -0.605119, --0.502570, -0.234922, -0.077401, --0.301042, -0.360804, --0.275997, -0.136245, --0.033460, -0.000831, --0.003559, --0.017187, -0.089401, --0.192263, -0.285856, --0.352279, -0.402214, --0.439264, -0.422619, --0.280038, --0.024054, -0.420938, --0.741883, -0.812252, --0.573240, -0.135162, -0.285994, --0.504781, -0.473617, --0.285903, -0.084937, -0.040187, --0.092760, -0.127845, --0.186453, -0.267027, --0.347967, -0.421438, --0.493616, -0.550347, --0.532607, -0.363113, --0.015525, --0.431247, -0.810291, --0.958519, -0.823030, --0.503893, -0.195714, --0.062607, -0.131418, --0.279988, -0.333118, --0.198591, --0.059496, -0.271368, --0.300950, -0.163668, --0.021855, -0.054722, --0.306711, -0.641430, --0.843777, -0.788677, --0.537238, -0.281844, --0.188420, -0.270020, --0.397368, -0.433551, --0.370869, -0.343839, --0.499077, -0.832847, --1.145689, -1.171023, --0.784036, -0.118457, -0.513120, --0.838775, -0.811480, --0.611190, -0.468458, --0.460336, -0.447324, --0.202005, --0.377819, -1.144089, --1.763934, -1.930178, --1.563941, -0.864810, --0.177358, --0.227781, -0.307608, --0.238726, -0.267444, --0.529251, -0.957359, --1.329995, -1.414191, --1.110710, -0.515052, -0.133771, --0.582050, -0.694053, --0.516679, -0.241617, --0.087722, -0.172828, --0.451845, -0.756380, --0.904304, -0.803701, --0.484991, -0.053737, -0.385762, --0.773405, -1.079159, --1.263176, -1.262932, --1.031341, -0.597945, --0.094381, --0.294062, -0.431760, --0.320463, -0.101529, -0.039359, --0.000894, --0.167741, -0.316001, --0.318627, -0.177891, --0.017777, --0.024491, --0.081895, -0.231452, --0.267745, -0.113506, -0.160862, --0.384051, -0.406080, --0.200913, --0.122441, -0.396465, --0.494883, -0.390412, --0.150039, --0.108513, -0.267614, --0.253566, -0.069419, -0.195367, --0.396703, -0.408205, --0.196616, --0.151561, -0.474893, --0.623231, -0.528056, --0.220650, --0.194234, -0.578348, --0.796041, -0.750074, --0.419859, --0.116599, -0.704458, --1.179225, -1.441742, --1.490619, -1.392925, --1.222916, -1.019192, --0.787225, -0.531602, --0.278705, -0.066886, -0.083316, --0.185218, -0.266576, --0.329011, -0.326817, --0.196453, --0.075845, -0.404953, --0.632494, -0.628411, --0.398605, -0.105763, -0.031249, -0.105905, --0.443369, -0.766428, --0.877152, -0.733288, --0.459177, -0.228565, --0.124671, -0.095184, --0.030109, --0.118045, -0.283304, --0.349186, -0.266211, --0.117270, -0.067907, --0.236165, -0.585132, --0.928830, -1.056353, --0.887083, -0.538389, --0.247220, -0.195892, --0.370863, -0.565985, --0.535325, -0.183629, -0.350387, --0.781321, -0.867895, --0.564128, -0.028345, -0.496841, --0.827044, -0.898897, --0.736742, -0.389792, -0.086299, --0.595757, -0.978103, --1.054272, -0.736772, --0.122169, --0.522238, -0.893255, --0.828386, -0.404923, -0.109214, --0.422398, -0.394933, --0.112581, --0.182362, -0.251198, --0.006791, --0.437408, -0.838832, --0.968423, -0.740050, --0.256251, --0.250476, -0.545318, --0.515609, -0.223771, -0.138273, --0.362070, -0.333166, --0.077014, --0.276110, -0.571997, --0.706240, -0.657295, --0.479146, -0.270549, --0.134994, -0.136881, --0.265669, -0.429256, --0.494376, -0.363572, --0.045838, --0.330391, -0.580872, --0.571645, -0.299931, -0.104742, --0.459082, -0.630345, --0.598156, -0.441226, --0.270043, -0.158399, --0.115992, -0.107415, --0.091169, -0.048199, -0.013640, --0.070978, -0.097820, --0.071769, --0.022715, -0.186954, --0.397422, -0.603020, --0.741916, -0.774359, --0.709110, -0.598714, --0.500018, -0.426255, --0.329825, -0.134705, -0.199713, --0.628038, -1.020664, --1.224087, -1.147430, --0.823429, -0.403073, --0.080864, --0.008198, --0.143317, -0.425733, --0.691844, -0.847595, --0.890341, -0.876028, --0.852870, -0.820821, --0.744500, -0.596818, --0.388567, -0.159996, -0.049405, --0.220061, -0.344763, --0.408315, -0.380236, --0.232482, --0.028735, -0.341016, --0.593909, -0.672257, --0.519233, -0.185282, -0.174960, --0.371453, -0.282805, -0.069618, --0.532058, -0.910942, --1.084286, -1.054526, --0.914506, -0.764809, --0.651372, -0.561109, --0.458575, -0.319426, --0.136333, --0.088964, -0.341910, --0.577373, -0.714806, --0.670334, -0.415176, --0.017145, --0.373700, -0.595021, --0.556245, -0.284923, -0.091559, --0.416991, -0.589286, --0.609455, -0.568390, --0.577490, -0.684584, --0.832072, -0.892019, --0.761358, -0.450420, --0.094108, --0.133310, -0.143626, --0.003302, --0.116445, -0.079036, -0.095009, --0.225556, -0.104186, -0.335932, --0.944323, -1.435829, --1.573616, -1.315969, --0.820282, -0.309811, -0.085951, --0.390856, -0.700756, --1.038497, -1.279020, --1.223602, -0.776356, --0.077042, --0.538654, -0.749460, --0.481107, --0.024851, -0.377229, --0.321897, --0.070618, -0.468130, --0.546084, -0.251563, -0.150573, --0.291994, -0.009871, -0.493366, --0.772108, -0.458333, -0.452390, --1.558377, -2.286034, --2.242105, -1.451461, --0.332909, --0.561327, -0.871421, --0.618608, -0.148615, -0.122483, -0.011787, --0.427691, -0.784689, --0.785130, -0.390435, -0.159070, --0.524258, -0.503643, --0.151680, --0.292703, -0.591033, --0.654633, -0.558361, --0.436341, -0.362374, --0.310168, -0.207364, --0.019803, --0.212294, -0.411832, --0.533364, -0.595674, --0.648788, -0.709802, --0.732894, -0.649209, --0.445604, -0.208743, --0.083914, -0.169954, --0.431366, -0.701140, --0.779345, -0.558456, --0.090103, --0.444036, -0.826889, --0.904912, -0.646011, --0.145802, --0.409561, -0.813030, --0.921874, -0.724448, --0.347159, --0.013315, -0.197428, --0.162849, --0.012244, -0.196020, --0.285638, -0.249923, --0.116715, --0.066561, -0.260077, --0.431327, -0.543843, --0.560152, -0.466241, --0.297666, -0.139039, --0.087418, -0.199606, --0.458566, -0.780674, --1.055533, -1.190873, --1.138643, -0.899702, --0.517651, -0.069137, -0.352983, --0.668430, -0.840969, --0.891044, -0.873888, --0.833384, -0.764466, --0.617771, -0.350673, -0.008216, --0.333684, -0.451213, --0.242668, --0.253461, -0.822755, --1.170260, -1.086586, --0.581859, --0.107892, -0.657161, --0.844397, -0.672537, --0.335994, -0.065152, -0.033190, --0.023674, -0.054422, --0.213868, -0.448960, --0.605795, -0.553738, --0.291917, --0.042652, -0.266962, --0.271807, -0.083372, -0.169482, --0.348932, -0.393049, --0.337300, -0.269410, --0.258501, -0.309325, --0.366943, -0.359284, --0.242448, -0.018824, -0.277168, --0.605867, -0.934520, --1.222740, -1.397285, --1.349994, -0.984619, --0.298953, --0.553041, -1.284180, --1.599424, -1.361538, --0.684813, --0.122807, -0.742828, --1.030059, -1.065610, --1.048001, -1.117333, --1.253913, -1.321489, --1.202583, -0.904557, --0.554021, -0.298279, --0.204028, -0.231439, --0.289297, -0.313292, --0.304583, -0.309149, --0.366714, -0.472482, --0.575323, -0.607393, --0.524661, -0.337756, --0.117629, --0.032663, -0.034861, -0.107965, --0.298270, -0.398408, --0.326630, -0.124176, -0.067980, --0.115786, -0.001689, -0.154811, --0.187645, -0.014490, -0.299248, --0.593316, -0.735720, --0.714117, -0.625842, --0.582500, -0.611804, --0.634932, -0.532455, --0.243910, --0.174408, -0.571874, --0.785833, -0.727246, --0.420783, --0.014042, -0.420020, --0.666531, -0.697042, --0.548207, -0.333932, --0.195274, -0.230831, --0.440543, -0.718096, --0.903344, -0.867993, --0.584258, -0.136356, -0.326960, --0.665807, -0.805651, --0.752553, -0.569454, --0.333479, -0.098050, -0.122222, --0.338051, -0.552731, --0.733279, -0.809087, --0.705709, -0.395848, -0.064281, --0.538124, -0.853243, --0.867823, -0.532091, -0.078738, --0.774275, -1.305520, --1.454832, -1.127094, --0.399946, --0.496123, -1.264434, --1.658866, -1.580587, --1.114984, -0.494031, -0.003444, --0.177831, -0.006851, -0.338796, --0.585674, -0.516700, --0.108424, --0.446182, -0.854816, --0.910670, -0.619696, --0.181978, --0.154048, -0.252819, --0.151385, --0.013002, -0.132071, --0.200316, -0.279673, --0.402068, -0.510167, --0.498701, -0.322689, --0.071810, --0.068184, --0.048088, -0.396644, --0.772666, -0.918786, --0.702929, -0.212494, -0.304723, --0.603891, -0.587191, --0.332134, -0.006101, -0.248639, --0.373539, -0.376222, --0.280517, -0.098733, -0.157873, --0.454390, -0.723312, --0.880386, -0.854444, --0.617914, -0.209848, -0.258217, --0.628286, -0.759963, --0.609479, -0.272079, -0.057558, --0.199261, -0.104271, -0.114767, --0.273015, -0.259308, --0.121754, -0.018088, --0.067536, -0.229556, --0.319429, -0.157687, -0.265173, --0.747171, -0.999292, --0.846981, -0.358899, -0.190773, --0.495506, -0.400271, -0.026059, --0.562862, -0.984085, --1.168999, -1.112985, --0.863329, -0.461871, -0.046926, --0.563392, -0.915502, --0.934007, -0.582288, --0.029095, --0.423471, -0.528747, --0.265204, --0.146446, -0.394742, --0.282135, --0.166060, -0.749549, --1.234421, -1.470784, --1.418727, -1.105879, --0.586276, --0.059178, -0.702309, --1.176424, -1.334272, --1.122167, -0.615711, -0.009702, --0.553062, -0.860962, --0.868053, -0.602842, --0.171430, --0.274204, -0.583257, --0.660537, -0.504173, --0.202790, --0.108356, -0.306011, --0.319944, -0.144191, -0.171541, --0.536443, -0.838027, --0.974563, -0.898298, --0.648025, -0.342966, --0.130404, -0.112350, --0.294504, -0.588717, --0.863370, -1.006823, --0.966715, -0.754142, --0.427843, -0.077394, -0.193694, --0.298384, -0.211000, -0.000981, --0.195765, -0.232756, --0.060441, --0.249283, -0.549122, --0.710097, -0.688953, --0.525284, -0.288314, --0.030597, --0.213777, -0.400992, --0.464756, -0.345410, --0.042501, --0.355737, -0.699266, --0.850647, -0.761131, --0.497515, -0.199489, -0.005545, --0.072498, -0.046354, --0.007764, -0.004523, --0.024126, -0.022645, -0.025595, --0.106906, -0.190313, --0.263126, -0.338984, --0.429959, -0.512578, --0.524384, -0.399192, --0.115153, --0.277113, -0.661914, --0.896212, -0.865319, --0.541688, -0.023717, -0.478949, --0.733478, -0.617592, --0.216988, --0.198811, -0.336704, --0.082884, --0.398510, -0.760219, --0.708416, -0.214388, -0.457052, --0.927966, -0.966351, --0.636089, -0.235866, --0.082832, -0.303713, --0.774224, -1.226463, --1.426572, -1.296638, --0.920801, -0.465081, --0.082990, --0.141925, -0.207727, --0.173516, -0.120185, --0.103710, -0.121723, --0.117640, -0.027134, -0.162961, --0.389729, -0.546812, --0.553071, -0.407168, --0.189672, -0.013745, -0.040862, -0.029325, --0.150972, -0.211406, --0.115353, --0.161093, -0.543211, --0.877927, -1.005944, --0.857022, -0.510280, --0.167011, -0.035551, --0.195990, -0.539685, --0.834463, -0.876386, --0.623633, -0.219677, -0.106625, --0.190804, -0.030223, -0.228482, --0.392537, -0.343147, --0.098699, --0.207312, -0.407725, --0.389580, -0.143648, -0.237903, --0.603715, -0.803362, --0.746655, -0.445073, --0.016599, --0.358184, -0.518855, --0.408122, -0.104569, -0.221073, --0.404828, -0.382209, --0.215494, -0.040728, -0.025753, -0.043580, --0.184040, -0.292584, --0.293940, -0.176879, -0.010221, --0.186771, -0.269245, --0.195552, --0.052146, -0.429819, --0.832838, -1.127571, --1.205635, -1.033749, --0.670242, -0.235918, -0.147949, --0.422514, -0.618832, --0.827253, -1.119515, --1.470849, -1.742629, --1.754814, -1.411842, --0.794915, -0.143489, -0.276717, --0.335425, -0.117022, -0.139795, --0.199261, --0.027505, -0.447383, --0.871224, -1.147093, --1.241413, -1.218448, --1.152309, -1.054770, --0.882165, -0.609175, --0.294322, -0.064346, --0.017876, -0.130201, --0.253702, -0.232350, --0.042647, --0.164360, -0.172812, -0.113497, --0.563529, -0.887986, --0.844724, -0.425793, -0.122053, --0.465725, -0.420416, --0.076630, --0.273854, -0.355138, --0.103835, --0.299641, -0.582616, --0.592446, -0.404250, --0.242791, -0.283353, --0.491667, -0.633961, --0.457827, --0.089451, -0.774242, --1.200366, -1.069291, --0.396519, --0.474252, -1.079964, --1.132748, -0.698956, --0.140765, --0.136648, --0.044143, -0.526854, --0.943745, -0.973093, --0.554454, --0.077018, -0.550433, --0.600308, -0.232284, -0.286622, --0.596833, -0.461314, -0.104823, --0.857695, -1.469806, --1.699305, -1.487746, --0.950701, -0.291698, -0.298118, --0.706925, -0.922109, --1.011777, -1.079269, --1.201099, -1.369797, --1.478920, -1.379242, --0.988878, -0.384349, -0.210164, --0.553631, -0.556364, --0.352247, -0.201138, --0.282301, -0.541253, --0.724430, -0.587614, --0.115064, --0.435169, -0.710562, --0.535417, -0.061283, -0.327318, --0.285667, --0.242059, -0.979743, --1.507151, -1.536557, --1.082441, -0.419775, -0.116233, --0.332790, -0.249621, --0.017873, --0.217449, -0.395034, --0.513225, -0.560853, --0.490993, -0.268958, -0.059664, --0.363543, -0.508548, --0.466443, -0.350530, --0.333953, -0.505845, --0.780087, -0.938424, --0.786355, -0.308738, -0.295395, --0.732972, -0.810723, --0.563586, -0.224435, --0.056700, -0.170977, --0.455335, -0.663509, --0.590571, -0.207668, -0.333061, --0.811623, -1.076653, --1.107238, -0.974321, --0.756997, -0.493130, --0.195368, --0.103808, -0.336996, --0.436278, -0.379974, --0.202292, --0.042192, -0.315942, --0.593644, -0.821831, --0.899547, -0.728218, --0.309623, --0.192168, -0.502260, --0.392552, --0.155287, -0.904304, --1.481552, -1.592739, --1.192411, -0.499992, -0.143355, --0.478651, -0.464241, --0.266654, -0.127413, --0.199400, -0.453812, --0.707188, -0.743111, --0.450799, --0.101697, -0.700067, --1.100160, -1.159006, --0.904343, -0.505410, --0.169078, -0.027391, --0.080740, -0.218669, --0.291601, -0.188109, -0.113998, --0.531385, -0.895044, --1.010906, -0.755871, --0.171463, --0.510834, -0.958766, --0.916888, -0.368753, -0.431989, --1.099102, -1.339032, --1.116841, -0.654243, --0.268389, -0.167992, --0.343642, -0.612609, --0.767119, -0.711080, --0.494627, -0.241329, --0.040825, --0.106317, -0.258524, --0.458256, -0.684336, --0.872875, -0.983230, --1.042392, -1.119494, --1.246316, -1.355562, --1.304897, -0.985495, --0.434445, --0.148697, -0.513830, --0.527293, -0.266139, -0.038220, --0.167270, -0.064875, -0.142671, --0.261429, -0.181436, -0.050384, --0.276101, -0.338116, --0.167137, --0.200865, -0.661169, --1.082232, -1.328657, --1.281357, -0.880392, --0.182764, --0.613944, -1.230117, --1.437793, -1.193433, --0.673756, -0.176308, -0.057516, -0.020609, --0.259516, -0.429167, --0.377432, -0.116089, -0.210618, --0.435148, -0.468524, --0.330519, -0.107392, -0.112610, --0.273500, -0.344930, --0.307358, -0.163577, -0.027164, --0.138512, -0.030259, -0.349090, --0.884383, -1.317382, --1.380911, -0.966149, --0.209595, --0.563696, -1.009017, --0.940651, -0.420112, -0.283957, --0.829208, -0.952540, --0.574634, --0.179266, -1.040204, --1.708160, -1.970176, --1.778017, -1.254962, --0.630995, -0.137554, -0.087612, --0.041015, --0.175636, -0.428720, --0.621434, -0.718168, --0.722537, -0.641281, --0.472154, -0.224625, -0.052257, --0.270635, -0.344056, --0.241634, -0.014677, -0.227588, --0.379649, -0.398349, --0.320728, -0.232112, --0.207326, -0.262819, --0.347052, -0.371942, --0.266061, -0.020672, -0.295046, --0.558433, -0.647552, --0.499944, -0.147025, -0.293560, --0.664445, -0.832528, --0.742971, -0.441139, --0.052874, --0.270326, -0.417588, --0.362118, -0.156908, -0.111821, --0.377011, -0.608278, --0.786283, -0.867862, --0.787285, -0.505306, --0.067124, --0.388895, -0.697278, --0.769274, -0.658958, --0.533149, -0.553902, --0.750419, -0.976771, --0.999593, -0.667488, --0.044633, --0.596055, -0.929614, --0.782215, -0.236367, -0.436260, --0.958593, -1.206252, --1.226940, -1.128903, --0.953172, -0.648651, --0.167721, --0.414604, -0.882150, --0.998403, -0.681445, --0.091351, --0.451130, -0.666445, --0.495586, -0.127042, -0.147081, --0.139684, --0.107713, -0.371077, --0.417754, -0.175854, -0.221861, --0.539912, -0.599190, --0.373351, --0.032495, -0.475859, --0.852983, -1.104836, --1.180814, -1.027919, --0.636548, -0.102792, -0.368457, --0.554877, -0.355975, -0.118584, --0.586738, -0.748539, --0.465072, --0.151256, -0.793988, --1.134033, -1.002272, --0.478073, --0.160768, -0.588804, --0.596279, -0.183212, -0.450957, --1.004832, -1.210884, --0.952549, -0.315357, -0.452516, --1.055611, -1.286752, --1.109673, -0.644315, --0.073289, --0.460909, -0.899154, --1.234251, -1.451494, --1.505015, -1.354489, --1.027007, -0.641242, --0.358974, -0.289830, --0.416684, -0.599050, --0.656365, -0.476845, --0.081566, --0.392227, -0.769807, --0.927447, -0.843082, --0.593098, -0.307194, --0.104090, -0.031768, --0.038486, --0.001568, -0.206778, --0.590434, -1.016191, --1.254420, -1.117834, --0.586926, --0.165898, -0.871927, --1.308885, -1.389873, --1.153656, -0.696553, --0.122324, --0.456530, -0.901079, --1.069672, -0.892469, --0.439068, --0.093400, -0.484761, --0.620796, -0.550239, --0.427319, -0.387139, --0.451449, -0.531462, --0.513785, -0.354098, --0.107672, --0.117388, -0.239288, --0.254736, -0.233182, --0.265527, -0.404301, --0.631380, -0.868160, --1.018358, -1.015997, --0.851964, -0.568739, --0.234570, --0.083537, -0.337794, --0.510295, -0.618948, --0.710997, -0.835121, --1.000886, -1.154660, --1.200789, -1.063750, --0.750670, -0.365876, --0.061895, --0.042746, --0.073418, -0.326543, --0.572736, -0.677005, --0.572283, -0.286318, -0.071119, --0.356366, -0.458000, --0.349645, -0.098170, -0.181081, --0.393473, -0.510122, --0.558388, -0.573365, --0.558897, -0.494376, --0.376475, -0.247515, --0.173721, -0.187214, --0.247000, -0.263266, --0.171503, --0.006367, -0.170048, --0.214417, -0.106123, -0.100686, --0.316249, -0.481072, --0.586011, -0.639257, --0.628334, -0.527385, --0.345863, -0.162978, --0.097848, -0.226083, --0.511270, -0.815069, --0.984350, -0.947452, --0.743955, -0.470276, --0.194319, --0.085298, -0.403669, --0.756231, -1.061628, --1.203621, -1.124626, --0.892135, -0.674569, --0.634271, -0.814002, --1.102428, -1.304873, --1.268234, -0.971838, --0.527433, -0.097975, -0.203117, --0.365283, -0.458420, --0.556844, -0.666117, --0.706475, -0.568483, --0.204833, --0.308014, -0.787842, --1.038276, -0.954796, --0.577457, -0.062516, -0.399258, --0.665291, -0.685693, --0.502874, -0.219781, -0.046511, --0.211755, -0.255284, --0.219382, -0.175098, --0.175696, -0.228768, --0.302661, -0.354470, --0.351597, -0.273580, --0.107139, --0.144423, -0.437247, --0.677261, -0.754473, --0.613532, -0.309695, -0.005367, --0.175068, -0.145865, --0.006121, --0.083194, -0.017699, -0.163357, --0.304994, -0.258277, -0.004108, --0.372743, -0.693835, --0.884058, -0.968864, --1.019162, -1.056323, --1.020721, -0.835565, --0.503661, -0.140130, -0.099707, --0.140655, -0.050701, -0.014124, -0.056816, --0.228202, -0.338993, --0.233181, --0.102821, -0.509085, --0.756190, -0.706726, --0.411171, -0.069657, -0.105718, --0.023699, --0.247204, -0.544862, --0.723801, -0.732936, --0.623836, -0.502790, --0.465376, -0.546341, --0.700258, -0.817036, --0.769804, -0.481376, -0.019475, --0.587307, -1.015380, --1.140530, -0.942529, --0.571469, -0.269903, --0.224272, -0.439682, --0.733148, -0.866395, --0.732516, -0.454638, --0.305573, -0.493545, --0.974786, -1.448928, --1.558067, -1.146631, --0.382510, --0.356953, -0.748351, --0.733958, -0.525814, --0.411141, -0.519144, --0.729336, -0.782480, --0.497491, --0.076453, -0.684381, --1.039367, -1.010933, --0.693352, -0.319998, --0.102576, -0.115163, --0.288114, -0.486380, --0.596505, -0.567562, --0.405359, -0.150924, -0.136397, --0.395267, -0.583686, --0.693597, -0.739350, --0.724451, -0.620841, --0.392981, -0.055168, -0.293252, --0.504787, -0.481349, --0.257207, --0.010159, -0.147925, --0.093710, --0.064355, -0.170781, --0.142563, -0.048015, --0.053908, -0.278683, --0.669881, -1.009300, --1.052436, -0.704791, --0.106579, --0.440126, -0.657488, --0.468115, -0.043332, -0.308744, --0.340733, -0.019216, -0.462420, --0.811516, -0.814658, --0.454757, --0.094761, -0.580852, --0.813886, -0.762183, --0.550773, -0.368905, --0.341901, -0.449109, --0.546958, -0.485354, --0.231652, --0.098220, -0.331437, --0.379363, -0.307894, --0.274088, -0.381569, --0.580017, -0.699453, --0.595495, -0.286511, -0.035471, --0.139331, --0.062941, -0.427566, --0.661372, -0.526288, --0.022227, --0.587367, -0.934565, --0.786230, -0.200288, -0.507613, --0.962757, -0.961499, --0.585176, -0.134217, -0.063417, -0.154300, --0.698965, -1.291765, --1.621897, -1.511846, --1.004433, -0.332048, -0.212129, --0.431801, -0.328764, --0.090199, --0.033166, --0.112021, -0.479632, --0.847762, -0.958781, --0.690750, -0.148758, -0.389041, --0.642440, -0.506197, --0.111678, --0.272172, -0.429265, --0.339717, -0.170842, --0.126636, -0.275953, --0.493926, -0.559586, --0.329369, --0.147710, -0.654970, --0.944409, -0.880153, --0.496150, --0.050109, -0.573222, --0.935337, -1.069887, --0.971514, -0.685821, --0.309388, --0.022542, -0.184365, --0.132262, --0.052560, -0.200655, --0.165116, --0.067951, -0.359346, --0.514253, -0.428046, --0.165469, --0.092571, -0.192655, --0.125201, -0.018909, --0.020692, -0.164118, --0.337154, -0.375503, --0.202418, --0.100837, -0.351007, --0.398232, -0.232243, -0.020661, --0.199686, -0.224063, --0.131532, -0.021301, -0.039653, --0.062635, -0.099408, --0.161725, -0.180579, --0.055187, --0.241912, -0.597903, --0.807850, -0.721446, --0.378338, -0.013102, -0.094985, -0.174493, --0.680966, -1.106046, --1.164263, -0.786692, --0.149296, --0.458372, -0.812261, --0.852500, -0.658526, --0.359167, -0.066176, -0.134304, --0.169289, --0.002930, -0.344962, --0.718546, -0.938123, --0.880928, -0.573093, --0.178710, --0.104579, -0.165255, --0.026586, --0.199876, -0.405725, --0.548591, -0.649000, --0.741558, -0.828517, --0.870237, -0.812184, --0.622882, -0.316857, -0.047396, --0.387962, -0.625517, --0.706246, -0.619359, --0.406596, -0.155238, -0.033450, --0.094740, -0.041181, -0.040704, --0.047001, --0.067560, -0.251116, --0.387377, -0.377828, --0.210914, --0.033668, -0.244066, --0.348628, -0.347433, --0.289609, -0.227168, --0.186371, -0.169712, --0.170468, -0.176063, --0.160413, -0.085685, -0.072978, --0.295699, -0.513177, --0.645105, -0.656019, --0.580479, -0.490806, --0.432865, -0.386784, --0.290554, -0.106499, -0.131249, --0.336403, -0.444445, --0.473483, -0.510393, --0.625815, -0.790799, --0.876478, -0.751346, --0.402468, --0.022817, -0.301135, --0.287827, -0.027068, -0.267904, --0.354112, -0.122393, -0.324636, --0.729684, -0.835342, --0.539757, --0.040231, -0.635665, --0.980372, -0.958733, --0.656213, -0.287452, --0.059092, -0.063495, --0.265514, -0.567264, --0.881000, -1.153212, --1.343396, -1.405699, --1.307666, -1.067532, --0.760732, -0.473450, --0.240541, -0.030201, -0.201867, --0.437342, -0.578157, --0.519150, -0.256585, -0.066240, --0.232584, -0.102126, -0.275678, --0.677148, -0.844087, --0.648970, -0.172096, -0.354053, --0.683752, -0.686271, --0.395610, --0.026021, -0.375029, --0.499369, -0.363498, --0.060344, --0.241729, -0.397997, --0.376770, -0.275954, --0.249158, -0.392394, --0.676578, -0.973618, --1.148106, -1.139326, --0.979662, -0.755197, --0.553628, -0.433676, --0.413600, -0.462819, --0.498412, -0.409189, --0.117805, --0.348572, -0.835929, --1.126102, -1.061074, --0.651522, -0.090286, -0.351060, --0.483176, -0.312675, --0.028887, --0.131021, -0.046029, -0.211927, --0.442817, -0.474622, --0.292958, -0.048197, -0.059658, -0.072695, --0.382504, -0.691463, --0.828651, -0.734110, --0.477251, -0.192725, -0.009905, --0.099526, -0.113510, --0.105994, -0.101340, --0.088677, -0.054761, --0.017493, -0.020132, --0.083275, -0.157588, --0.131163, --0.095904, -0.519555, --0.998806, -1.319951, --1.321027, -0.991524, --0.479197, -0.004008, -0.260756, --0.268300, -0.102595, -0.080286, --0.133983, --0.013116, -0.331649, --0.707256, -0.988031, --1.045972, -0.832102, --0.405648, --0.078514, -0.430049, --0.513818, -0.327819, --0.014990, --0.216660, -0.229010, --0.055896, --0.109550, -0.048260, -0.318514, --0.852748, -1.276809, --1.355407, -1.053625, --0.558078, -0.147179, --0.003194, -0.097309, --0.224584, -0.161108, -0.167591, --0.624265, -0.947330, --0.929107, -0.562915, --0.058957, --0.281303, -0.247638, -0.156767, --0.723497, -1.160985, --1.251102, -0.954766, --0.421921, --0.087952, -0.331529, --0.196000, --0.250547, -0.797332, --1.198730, -1.293157, --1.068102, -0.642681, --0.192333, --0.131057, -0.243066, --0.133855, --0.137700, -0.448829, --0.630912, -0.526321, --0.080811, --0.580813, -1.169602, --1.369353, -1.035474, --0.322749, --0.372928, -0.654424, --0.396838, --0.144588, -0.491756, --0.275070, --0.490511, -1.388124, --1.862942, -1.589231, --0.688917, --0.343177, -0.949258, --0.842796, -0.155163, -0.679189, --1.202211, -1.189028, --0.734435, -0.145895, -0.261884, --0.336143, -0.132858, -0.157712, --0.340566, -0.322606, --0.148947, --0.036756, -0.080372, -0.090905, --0.420291, -0.745928, --0.890406, -0.765423, --0.425814, -0.035837, -0.231095, --0.291412, -0.185297, --0.031853, --0.053040, -0.017061, -0.120611, --0.301305, -0.465984, --0.578476, -0.629734, --0.630453, -0.595542, --0.524881, -0.392280, --0.158552, --0.190749, -0.608367, --0.984982, -1.198673, --1.185058, -0.976056, --0.675371, -0.387512, --0.154070, --0.056369, -0.301087, --0.598195, -0.892489, --1.075902, -1.049021, --0.785804, -0.363936, -0.058776, --0.314311, -0.307170, --0.065707, --0.268696, -0.511317, --0.522643, -0.267020, -0.184272, --0.694428, -1.115885, --1.335053, -1.301279, --1.040574, -0.646926, --0.243453, --0.076622, -0.294914, --0.463984, -0.652532, --0.878827, -1.083746, --1.165441, -1.050526, --0.751504, -0.371590, --0.054137, --0.093267, -0.058005, -0.068298, --0.138227, -0.030819, -0.279483, --0.710168, -1.121744, --1.395691, -1.484542, --1.405595, -1.197868, --0.888862, -0.501318, --0.086564, --0.256635, -0.408080, --0.288366, --0.083436, -0.579931, --1.016388, -1.237190, --1.188313, -0.932613, --0.601035, -0.313656, --0.123942, -0.019343, -0.034059, --0.047706, -0.007193, -0.091327, --0.203018, -0.236019, --0.100892, --0.223551, -0.654720, --1.028301, -1.170847, --0.987244, -0.520041, -0.052174, --0.485879, -0.589233, --0.327431, --0.148823, -0.584291, --0.771262, -0.674733, --0.437935, -0.259268, --0.234245, -0.289902, --0.265658, -0.069964, -0.224202, --0.428037, -0.387726, --0.108341, --0.249550, -0.489172, --0.508328, -0.340495, --0.091217, --0.158118, -0.392793, --0.628193, -0.844683, --0.967824, -0.920968, --0.703939, -0.419188, --0.207685, -0.138614, --0.146523, -0.078980, -0.174160, --0.573144, -0.934967, --1.057366, -0.867144, --0.478455, -0.116425, -0.035266, -0.050688, --0.246672, -0.374591, --0.326349, -0.113299, -0.173726, --0.439512, -0.624194, --0.688351, -0.584890, --0.272022, --0.228560, -0.783389, --1.172972, -1.199037, --0.808354, -0.142546, -0.530303, --0.963055, -1.060344, --0.907773, -0.685791, --0.533969, -0.463821, --0.379992, -0.188710, -0.092691, --0.313542, -0.280784, -0.094230, --0.695579, -1.228078, --1.367952, -0.955005, --0.107634, --0.817045, -1.402218, --1.386624, -0.790608, -0.114877, --0.966489, -1.492169, --1.616576, -1.445706, --1.164857, -0.926172, --0.789326, -0.731660, --0.697936, -0.646419, --0.565034, -0.460909, --0.342059, -0.206496, --0.043254, --0.156659, -0.382194, --0.585841, -0.686330, --0.605145, -0.328099, -0.050322, --0.348631, -0.396551, --0.154766, --0.233633, -0.516026, --0.493059, -0.159616, -0.284068, --0.567761, -0.538681, --0.263237, --0.030295, -0.121197, -0.050894, --0.358133, -0.589722, --0.600913, -0.397305, --0.108141, --0.112428, -0.176885, --0.094176, --0.062204, -0.210154, --0.301549, -0.336408, --0.352354, -0.398837, --0.505947, -0.661107, --0.808229, -0.873882, --0.806509, -0.603697, --0.310601, --0.005416, -0.283292, --0.482705, -0.583087, --0.578563, -0.478711, --0.314284, -0.138742, --0.017460, -0.005318, --0.122364, -0.340781, --0.591519, -0.788420, --0.859001, -0.770275, --0.542135, -0.245233, -0.019120, --0.156511, -0.122749, -0.050764, --0.270821, -0.433223, --0.479888, -0.423793, --0.326674, -0.249073, --0.209594, -0.177886, --0.101966, --0.048688, -0.247637, --0.406566, -0.414097, --0.208874, --0.155757, -0.510858, --0.659193, -0.506462, --0.141427, --0.208283, -0.328960, --0.175054, --0.093539, -0.225925, --0.065670, --0.328111, -0.710228, --0.806002, -0.485980, -0.151979, --0.834341, -1.254491, --1.221873, -0.745689, --0.023963, --0.647772, -1.005422, --0.928887, -0.489509, -0.091065, --0.553318, -0.728197, --0.613446, -0.356089, --0.152122, -0.124264, --0.252626, -0.401517, --0.424353, -0.276269, --0.054866, --0.064867, --0.037505, -0.321110, --0.585278, -0.591808, --0.231611, --0.381077, -0.962298, --1.232969, -1.098857, --0.710523, -0.359287, --0.280882, -0.502370, --0.835378, -1.014814, --0.882559, -0.491235, --0.063240, --0.160298, -0.076209, -0.220457, --0.506912, -0.582735, --0.398790, -0.082514, -0.152618, --0.149786, --0.089862, -0.408494, --0.589000, -0.485193, --0.109368, --0.368982, -0.710028, --0.730191, -0.401833, -0.129838, --0.625648, -0.883056, --0.838367, -0.576983, --0.252266, --0.020827, -0.218070, --0.375208, -0.516754, --0.615816, -0.619940, --0.512703, -0.347988, --0.222060, -0.208719, --0.315152, -0.493348, --0.687636, -0.868208, --1.021574, -1.117914, --1.101513, -0.926982, --0.612692, -0.257611, -0.004387, --0.082617, --0.022175, -0.236524, --0.478201, -0.706061, --0.914315, -1.085615, --1.158070, -1.048842, --0.722284, -0.244822, -0.227719, --0.531781, -0.591680, --0.460506, -0.278055, --0.180389, -0.227436, --0.394870, -0.620739, --0.856715, -1.079329, --1.261358, -1.343879, --1.249579, -0.936737, --0.450724, --0.075430, -0.480502, --0.655560, -0.588172, --0.344301, -0.010494, -0.352771, --0.712740, -1.031224, --1.239362, -1.256333, --1.046696, -0.672367, --0.288601, -0.071951, --0.120945, -0.397472, --0.752920, -1.022852, --1.121682, -1.069613, --0.939927, -0.780576, --0.584065, -0.331491, --0.062942, --0.106689, -0.061681, -0.202262, --0.530640, -0.689204, --0.526166, -0.093924, -0.372651, --0.613172, -0.516551, --0.181289, --0.177023, -0.388251, --0.429348, -0.395726, --0.385255, -0.404426, --0.375342, -0.227122, -0.017712, --0.242168, -0.319008, --0.204600, --0.037834, -0.297985, --0.496963, -0.609855, --0.621243, -0.477578, --0.108471, --0.482922, -1.143844, --1.603352, -1.620183, --1.149841, -0.401964, -0.264926, --0.544374, -0.344578, -0.184988, --0.760577, -1.120898, --1.140289, -0.855141, --0.417531, -0.015373, -0.206185, --0.199177, -0.025546, -0.180480, --0.288311, -0.245443, --0.103886, --0.021340, -0.035527, -0.066913, --0.194223, -0.214556, --0.041109, --0.306076, -0.696649, --0.948010, -0.919308, --0.596732, -0.121859, -0.265678, --0.354691, -0.090043, -0.384677, --0.810282, -0.973356, --0.832391, -0.514840, --0.191481, --0.063268, -0.303909, --0.612540, -0.959645, --1.164463, -1.009547, --0.426362, --0.404712, -1.135720, --1.464310, -1.319620, --0.883193, -0.437452, --0.166310, -0.056821, -0.040645, --0.260812, -0.603548, --0.924622, -1.027236, --0.783079, -0.212387, -0.509598, --1.115595, -1.353067, --1.097203, -0.422654, -0.407981, --1.050055, -1.237973, --0.920551, -0.289789, -0.325771, --0.650592, -0.620012, --0.400566, -0.253230, --0.333729, -0.577218, --0.757829, -0.678677, --0.342232, --0.037935, -0.198131, --0.033552, --0.308783, -0.526440, --0.373936, --0.167282, -0.879608, --1.452579, -1.662732, --1.466993, -0.973069, --0.347719, --0.251658, -0.691662, --0.861168, -0.699596, --0.248322, --0.331997, -0.821831, --1.055691, -1.006060, --0.774442, -0.500999, --0.269132, -0.077361, -0.113642, --0.312943, -0.473343, --0.525901, -0.441610, --0.269205, -0.120709, --0.113152, -0.299182, --0.623866, -0.934010, --1.047074, -0.855299, --0.410175, --0.076327, -0.338465, --0.221777, --0.200735, -0.652839, --0.818985, -0.542797, -0.075136, --0.743883, -1.159298, --1.168871, -0.826904, --0.330555, --0.099155, -0.314833, --0.280036, -0.052266, -0.261640, --0.553506, -0.750059, --0.829393, -0.813465, --0.740518, -0.630390, --0.464265, -0.198269, -0.188477, --0.640163, -1.013270, --1.138667, -0.931924, --0.472550, --0.023647, -0.339830, --0.407832, -0.351144, --0.377292, -0.600266, --0.938332, -1.174409, --1.131133, -0.816794, --0.423993, -0.186690, --0.214250, -0.430991, --0.656076, -0.747066, --0.691549, -0.586896, --0.541825, -0.587972, --0.667700, -0.695895, --0.636998, -0.534902, --0.477239, -0.527066, --0.674751, -0.841625, --0.928565, -0.874085, --0.686965, -0.438981, --0.227851, -0.133083, --0.185166, -0.357647, --0.580655, -0.768886, --0.854161, -0.810658, --0.660672, -0.456384, --0.248106, -0.061800, -0.097083, --0.220493, -0.282744, --0.254719, -0.137626, -0.019454, --0.142958, -0.183217, --0.143137, -0.057664, -0.054884, --0.216578, -0.455517, --0.739949, -0.947569, --0.917621, -0.565064, -0.024864, --0.604454, -0.891142, --0.745141, -0.277427, -0.199625, --0.367250, -0.121284, -0.337803, --0.627728, -0.453937, -0.159184, --0.851702, -1.156863, --0.824958, -0.011947, -0.806455, --1.138310, -0.785640, -0.047611, --0.907600, -1.379871, --1.316396, -0.869149, --0.344679, -0.005143, -0.053181, -0.107591, --0.359191, -0.598889, --0.781884, -0.895801, --0.923442, -0.837601, --0.632533, -0.357144, --0.108576, --0.021463, -0.010652, -0.073218, --0.118327, -0.052389, -0.099079, --0.226767, -0.216458, --0.034607, --0.243235, -0.483206, --0.586133, -0.554519, --0.484147, -0.486088, --0.596174, -0.739848, --0.781488, -0.625696, --0.297511, --0.058504, -0.262374, --0.208058, --0.077069, -0.458825, --0.783073, -0.958656, --0.983716, -0.910006, --0.782543, -0.604293, --0.350721, -0.019765, -0.324958, --0.558594, -0.556322, --0.277456, --0.184722, -0.628784, --0.839464, -0.697519, --0.241253, --0.353212, -0.857138, --1.092232, -1.001458, --0.660642, -0.233190, -0.106422, --0.244407, -0.164418, -0.062108, --0.320323, -0.504447, --0.553461, -0.459481, --0.254165, --0.012885, -0.292053, --0.543608, -0.741815, --0.875486, -0.943959, --0.947202, -0.874526, --0.704216, -0.423006, --0.056021, --0.319891, -0.602889, --0.724626, -0.697385, --0.605220, -0.538070, --0.519341, -0.491342, --0.376046, -0.161745, -0.061662, --0.157590, -0.051302, -0.192221, --0.386623, -0.334295, -0.042700, --0.638232, -1.207856, --1.499137, -1.388830, --0.945932, -0.384632, -0.062535, --0.273110, -0.286939, --0.252323, -0.305409, --0.465165, -0.616304, --0.594282, -0.317283, -0.124466, --0.488681, -0.508843, --0.058512, --0.748893, -1.593156, --2.104837, -2.060753, --1.501861, -0.700810, -0.001138, --0.382859, -0.438460, --0.327977, -0.236061, --0.250865, -0.344065, --0.441184, -0.501166, --0.533486, -0.554191, --0.543700, -0.461019, --0.302661, -0.141373, --0.092712, -0.225247, --0.487375, -0.717828, --0.741654, -0.485059, --0.025939, --0.455109, -0.785506, --0.893658, -0.823566, --0.674540, -0.523442, --0.390501, -0.262672, --0.137155, -0.037372, -0.010560, --0.010588, -0.001033, --0.024939, -0.095242, --0.187600, -0.264265, --0.302863, -0.303498, --0.273237, -0.210916, --0.112368, --0.009194, -0.113745, --0.154114, -0.112992, --0.023607, --0.049180, -0.055578, -0.002972, --0.077576, -0.110225, --0.072967, --0.021509, -0.138668, --0.248438, -0.337473, --0.404089, -0.447073, --0.459761, -0.432719, --0.361590, -0.255361, --0.140794, -0.058026, --0.044754, -0.113315, --0.234625, -0.344542, --0.377786, -0.312359, --0.191308, -0.096811, --0.085243, -0.131142, --0.133603, --0.003788, -0.272386, --0.522020, -0.536708, --0.186649, --0.447598, -1.075735, --1.341333, -1.029171, --0.209857, --0.771357, -1.464304, --1.551316, -1.020817, --0.179021, --0.508602, -0.659655, --0.170380, --0.735985, -1.625399, --2.066949, -1.838207, --1.029683, -0.005287, -0.764919, --0.930613, -0.442039, -0.412953, --1.154100, -1.372887, --0.969108, -0.210661, -0.429489, --0.561338, -0.106179, -0.677961, --1.376148, -1.666833, --1.476968, -0.964983, --0.383920, --0.057717, -0.256319, --0.199886, --0.062606, -0.432415, --0.767879, -0.921516, --0.809808, -0.472130, --0.068100, --0.196629, -0.174219, -0.153039, --0.668048, -1.175947, --1.487609, -1.490604, --1.183949, -0.670477, --0.113646, --0.326099, -0.554406, --0.578741, -0.495422, --0.427906, -0.448933, --0.537349, -0.602251, --0.558132, -0.393005, --0.175134, --0.004528, -0.103603, --0.153280, -0.219335, --0.336039, -0.467978, --0.527296, -0.429295, --0.145797, --0.273652, -0.716994, --1.047074, -1.145349, --0.950528, -0.483375, -0.151654, --0.792530, -1.268633, --1.455229, -1.313725, --0.902295, -0.353576, -0.173203, --0.548469, -0.715599, --0.702517, -0.597751, --0.504274, -0.494451, --0.584258, -0.730945, --0.849991, -0.848435, --0.671830, -0.349540, --0.008032, --0.174709, -0.064544, -0.338084, --0.878690, -1.325358, --1.497566, -1.363439, --1.043993, -0.729011, --0.565377, -0.586294, --0.712386, -0.809170, --0.760964, -0.525621, --0.151532, --0.243852, -0.525370, --0.602436, -0.477465, --0.252981, -0.083667, --0.089112, -0.274495, --0.516578, -0.639433, --0.542174, -0.291136, --0.099752, -0.191214, --0.629436, -1.237750, --1.674642, -1.630701, --1.026092, -0.081940, -0.784972, --1.186173, -0.972959, --0.311271, --0.421945, -0.854652, --0.816014, -0.400343, -0.123352, --0.481057, -0.531173, --0.300872, --0.068831, -0.410479, --0.597974, -0.581513, --0.399040, -0.165719, --0.029225, -0.091912, --0.337261, -0.618713, --0.738214, -0.575403, --0.179622, --0.245599, -0.461010, --0.334131, --0.087133, -0.609753, --1.004659, -1.116296, --0.917490, -0.500552, --0.028417, --0.327467, -0.448140, --0.313977, -0.017168, -0.279330, --0.427202, -0.377205, --0.205756, -0.060317, --0.057797, -0.205147, --0.395982, -0.481826, --0.367957, -0.073051, -0.278951, --0.524500, -0.544827, --0.325494, --0.037618, -0.387649, --0.584664, -0.569359, --0.378973, -0.113275, -0.120127, --0.244560, -0.222398, --0.047216, --0.256542, -0.621499, --0.932380, -1.052603, --0.882782, -0.421543, -0.211514, --0.810369, -1.161775, --1.132873, -0.729613, --0.101637, --0.512080, -0.881730, --0.890919, -0.594851, --0.192492, --0.083369, -0.100571, -0.094903, --0.309692, -0.325345, --0.035271, --0.489318, -1.043468, --1.410647, -1.483028, --1.305192, -1.019475, --0.758452, -0.564954, --0.396441, -0.202961, --0.007278, --0.087351, --0.024589, -0.348295, --0.748974, -1.014641, --0.978872, -0.615050, --0.039704, --0.564641, -1.041355, --1.305183, -1.332770, --1.136253, -0.758404, --0.287868, --0.142426, -0.401946, --0.434680, -0.297871, --0.122332, -0.013795, -0.027175, --0.094675, -0.279423, --0.565711, -0.817659, --0.874347, -0.677097, --0.320737, --0.015578, -0.199918, --0.232959, -0.222062, --0.275101, -0.407594, --0.537179, -0.560960, --0.443923, -0.244800, --0.063501, --0.040209, -0.086859, --0.144563, -0.253582, --0.375074, -0.411087, --0.284699, -0.017934, -0.257759, --0.374064, -0.232636, -0.128747, --0.556346, -0.868079, --0.944955, -0.768964, --0.399276, --0.074630, -0.559032, --0.953094, -1.147612, --1.056183, -0.672495, --0.106647, --0.443342, -0.781747, --0.811212, -0.569529, --0.187927, --0.190331, -0.469269, --0.607625, -0.594678, --0.436141, -0.167636, -0.127558, --0.334051, -0.362327, --0.213557, --0.002850, -0.125257, --0.040610, --0.237726, -0.572787, --0.791031, -0.796116, --0.631046, -0.446000, --0.394960, -0.532991, --0.782167, -0.984422, --1.002224, -0.801731, --0.470154, -0.162504, --0.013299, -0.065153, --0.251745, -0.439947, --0.503136, -0.384150, --0.116742, --0.199797, -0.453529, --0.569332, -0.530187, --0.364470, -0.114564, -0.185326, --0.502751, -0.780731, --0.925236, -0.837610, --0.485581, --0.036510, -0.516986, --0.721342, -0.522914, -0.014861, --0.662156, -1.141114, --1.266091, -1.024149, --0.557297, -0.069617, -0.279653, --0.438850, -0.459007, --0.436871, -0.446072, --0.496218, -0.538946, --0.511270, -0.384624, --0.187446, --0.010810, -0.137926, --0.150725, -0.043705, -0.157602, --0.399237, -0.593373, --0.624730, -0.392620, -0.118019, --0.782826, -1.356060, --1.574504, -1.297794, --0.599289, --0.255872, -0.938541, --1.215060, -1.046285, --0.577275, -0.039700, -0.362330, --0.519472, -0.421006, --0.124736, --0.271007, -0.644222, --0.872744, -0.876908, --0.664364, -0.339922, --0.058218, --0.060319, --0.002650, -0.158853, --0.277606, -0.276788, --0.178894, -0.092791, --0.130787, -0.315447, --0.541128, -0.623612, --0.415188, --0.084547, -0.697197, --1.146691, -1.215203, --0.879924, -0.336799, -0.117206, --0.274378, -0.150468, -0.037326, --0.040193, --0.225879, -0.605649, --0.813036, -0.642354, --0.121196, --0.511186, -0.977245, --1.144917, -1.079973, --0.941119, -0.824755, --0.700559, -0.488937, --0.197869, --0.019446, --0.044246, -0.475176, --1.125145, -1.663525, --1.770378, -1.336597, --0.532389, --0.298279, -0.839008, --0.963234, -0.762142, --0.440379, -0.167345, -0.011263, --0.152318, -0.319402, --0.498674, -0.595441, --0.510375, -0.229039, -0.149582, --0.467612, -0.601688, --0.526592, -0.311322, --0.062794, --0.137129, -0.265532, --0.353865, -0.455687, --0.603217, -0.772305, --0.879429, -0.825092, --0.567615, -0.177315, -0.181018, --0.341803, -0.248317, -0.005682, --0.240456, -0.315775, --0.222633, -0.073414, --0.003243, -0.061919, --0.176515, -0.207236, --0.052080, --0.273052, -0.630870, --0.836847, -0.765808, --0.426350, --0.042055, -0.448459, --0.656869, -0.652192, --0.525767, -0.396855, --0.329869, -0.305239, --0.256196, -0.133442, -0.055891, --0.259505, -0.421814, --0.516921, -0.549587, --0.535182, -0.484916, --0.409266, -0.328063, --0.267156, -0.238264, --0.222048, -0.177807, --0.080713, --0.041237, -0.106280, --0.026020, --0.225298, -0.568802, --0.843520, -0.889482, --0.643215, -0.183811, -0.304574, --0.633740, -0.712839, --0.585263, -0.380257, --0.215856, -0.120156, --0.023559, --0.175927, -0.518789, --0.925123, -1.214291, --1.201978, -0.824374, --0.212735, --0.342647, -0.538291, --0.237198, --0.431637, -1.128945, --1.493382, -1.347866, --0.793755, -0.136507, -0.302434, --0.363832, -0.112539, -0.239313, --0.480019, -0.514390, --0.381557, -0.184688, --0.001477, --0.154345, -0.304035, --0.449634, -0.552594, --0.563085, -0.466035, --0.294380, -0.096671, -0.106689, --0.332278, -0.596586, --0.867972, -1.055524, --1.051906, -0.803326, --0.357784, --0.142352, -0.522101, --0.656082, -0.526831, --0.229555, --0.076676, -0.243212, --0.195459, --0.039478, -0.347344, --0.577972, -0.618742, --0.463096, -0.231687, --0.112441, -0.233748, --0.548221, -0.824919, --0.785488, -0.307453, -0.454623, --1.136784, -1.391983, --1.117104, -0.514682, -0.054507, --0.313146, -0.223337, -0.044400, --0.277497, -0.373673, --0.364330, -0.320669, --0.254875, -0.116316, -0.121882, --0.384624, -0.517824, --0.407588, -0.093955, -0.227966, --0.335368, -0.140511, -0.237124, --0.546853, -0.576664, --0.295788, --0.125989, -0.428392, --0.420282, -0.086612, -0.414595, --0.850080, -1.037155, --0.927093, -0.609410, --0.247281, --0.013855, -0.113703, --0.088172, -0.024422, -0.007074, -0.003495, --0.015854, --0.004240, -0.028951, -0.036989, --0.294424, -0.756887, --1.293962, -1.663930, --1.633714, -1.123425, --0.285869, --0.539027, -0.984431, --0.848703, -0.209875, -0.607798, --1.200780, -1.293672, --0.871096, -0.164275, -0.493050, --0.851711, -0.869942, --0.706276, -0.594294, --0.681386, -0.934359, --1.171023, -1.193409, --0.929462, -0.485769, --0.078443, --0.103398, -0.003666, -0.291637, --0.631540, -0.891801, --1.014382, -0.985543, --0.799731, -0.460512, --0.020299, --0.391663, -0.605587, --0.509729, -0.144379, -0.289204, --0.529790, -0.410208, -0.037920, --0.600308, -1.007953, --1.092950, -0.873227, --0.518163, -0.226322, --0.102042, -0.111467, --0.139485, -0.096287, -0.010657, --0.092743, -0.066889, -0.062030, --0.194615, -0.214510, --0.087053, --0.105443, -0.226208, --0.197223, -0.069989, -0.009273, -0.080731, --0.324555, -0.558689, --0.578986, -0.292791, -0.197479, --0.644851, -0.810765, --0.614141, -0.175171, -0.268387, --0.505768, -0.458965, --0.192987, --0.151698, -0.441682, --0.597924, -0.601769, --0.482645, -0.303269, --0.137337, -0.033239, -0.019360, --0.085015, -0.226204, --0.429474, -0.581549, --0.535173, -0.230051, -0.226371, --0.598293, -0.670623, --0.402164, --0.038109, -0.387512, --0.474005, -0.327270, --0.133306, -0.074097, --0.183158, -0.329488, --0.335514, -0.129364, -0.189265, --0.417334, -0.395136, --0.122554, --0.235975, -0.457034, --0.401684, -0.103675, -0.252151, --0.446865, -0.367268, --0.079419, --0.214556, -0.312177, --0.149557, --0.154648, -0.386936, --0.398936, -0.221145, --0.040043, -0.049278, --0.285930, -0.581862, --0.676423, -0.410965, -0.142380, --0.720019, -1.048547, --1.032387, -0.807078, --0.621079, -0.640875, --0.828159, -0.977576, --0.878276, -0.472625, -0.102571, --0.611404, -0.869763, --0.842203, -0.630375, --0.383464, -0.205908, --0.119194, -0.081639, --0.035096, --0.052459, -0.161947, --0.222009, -0.138901, -0.143595, --0.583576, -1.028163, --1.277948, -1.201036, --0.821358, -0.312928, -0.102466, --0.284408, -0.239825, --0.084978, --0.058794, -0.150403, --0.229700, -0.340101, --0.447139, -0.435238, --0.201005, --0.228063, -0.659491, --0.840412, -0.640994, --0.175695, --0.247225, -0.330158, --0.001312, --0.521192, -0.870550, --0.780516, -0.266173, -0.389038, --0.824520, -0.833440, --0.476052, -0.010982, -0.288707, --0.296914, -0.072263, -0.223663, --0.439482, -0.491810, --0.354568, -0.033705, -0.422082, --0.887646, -1.168847, --1.092682, -0.638044, --0.001433, --0.481310, -0.528714, --0.094376, --0.599405, -1.205552, --1.473040, -1.387825, --1.140137, -0.954760, --0.918649, -0.932806, --0.814383, -0.462888, -0.037904, --0.456256, -0.556868, --0.249897, --0.354196, -1.010552, --1.473243, -1.609137, --1.434383, -1.072712, --0.677776, -0.365775, --0.182747, -0.106368, --0.071772, -0.011409, -0.104328, --0.245316, -0.337699, --0.315900, -0.178095, -0.000640, --0.116934, -0.118180, --0.047495, -0.011268, --0.089395, -0.261043, --0.410986, -0.417513, --0.253099, -0.014922, -0.144226, --0.133660, --0.001134, -0.110445, --0.057457, --0.169724, -0.441932, --0.584392, -0.509762, --0.283276, -0.069401, --0.005892, -0.104875, --0.253812, -0.306675, --0.191131, --0.043497, -0.262403, --0.334069, -0.214487, -0.021024, --0.216107, -0.223241, -0.003086, --0.366621, -0.674575, --0.747841, -0.530482, --0.127701, --0.255111, -0.435348, --0.361146, -0.137852, -0.042218, --0.023001, --0.213688, -0.530965, --0.718120, -0.625740, --0.272726, --0.147909, -0.380257, --0.272220, --0.110779, -0.510584, --0.636285, -0.357913, -0.200639, --0.738590, -0.974080, --0.821834, -0.431962, --0.073197, --0.047583, --0.094804, -0.351093, --0.505887, -0.406631, --0.041095, --0.461704, -0.892352, --1.052493, -0.845100, --0.329834, --0.287788, -0.744011, --0.849600, -0.595665, --0.161564, --0.192333, -0.285729, --0.126723, --0.108253, -0.209192, --0.083663, --0.186277, -0.419662, --0.481849, -0.384755, --0.265184, -0.261715, --0.390200, -0.518941, --0.466813, -0.150261, -0.334158, --0.757906, -0.906092, --0.715110, -0.307137, -0.093282, --0.291443, -0.213720, -0.083920, --0.466393, -0.779205, --0.890153, -0.718636, --0.263694, --0.378728, -1.032503, --1.499581, -1.636328, --1.408751, -0.902265, --0.289490, --0.225040, -0.467481, --0.355314, --0.059713, -0.593018, --0.992988, -1.056451, --0.736709, -0.175578, -0.370356, --0.670433, -0.642053, --0.380603, -0.086019, -0.060374, -0.008351, --0.226274, -0.452450, --0.563866, -0.528687, --0.419105, -0.356387, --0.421358, -0.589990, --0.743567, -0.752342, --0.574581, -0.295280, --0.072199, -0.027447, --0.164716, -0.370276, --0.491101, -0.430788, --0.200731, --0.097160, -0.334271, --0.423617, -0.358074, --0.205201, -0.066693, --0.025877, -0.110808, --0.290009, -0.495920, --0.654612, -0.703429, --0.597584, -0.321736, -0.087043, --0.522741, -0.829581, --0.866732, -0.588890, --0.090736, --0.421778, -0.724391, --0.682870, -0.318779, -0.200691, --0.642795, -0.819364, --0.673720, -0.300321, -0.113429, --0.391440, -0.458173, --0.360559, -0.214695, --0.120248, -0.103171, --0.119564, -0.105231, --0.026486, --0.101503, -0.230828, --0.308595, -0.295352, --0.170267, --0.067806, -0.395177, --0.756073, -1.064170, --1.221944, -1.156738, --0.858068, -0.394569, -0.103811, --0.493879, -0.674415, --0.620817, -0.383235, --0.053344, --0.278686, -0.552305, --0.735547, -0.802286, --0.713480, -0.428681, -0.049523, --0.629800, -1.131806, --1.353288, -1.175795, --0.643522, --0.040015, -0.600919, --0.819328, -0.622432, --0.104732, --0.523829, -1.029976, --1.248295, -1.137016, --0.779756, -0.335535, -0.037902, --0.249359, -0.296497, --0.238393, -0.140551, --0.030240, --0.107768, -0.293801, --0.504629, -0.658314, --0.657739, -0.471310, --0.189594, --0.000508, --0.073034, -0.438189, --0.927087, -1.252280, --1.172791, -0.644547, -0.144318, --0.876991, -1.283962, --1.281664, -0.992806, --0.645307, -0.421277, --0.354107, -0.334897, --0.216791, --0.058343, -0.399562, --0.615640, -0.540615, --0.150636, --0.408527, -0.902847, --1.145835, -1.097769, --0.864574, -0.603810, --0.410184, -0.264581, --0.080617, --0.193348, -0.501452, --0.699430, -0.655286, --0.355770, --0.065120, -0.402286, --0.509639, -0.394146, --0.207728, -0.141354, --0.291564, -0.589590, --0.842689, -0.863555, --0.602210, -0.189977, -0.136739, --0.182163, --0.092020, -0.553077, --0.985954, -1.216770, --1.192244, -0.980267, --0.711974, -0.510182, --0.438326, -0.481477, --0.558746, -0.564238, --0.426147, -0.157996, -0.133159, --0.299725, -0.245304, -0.002189, --0.291422, -0.432818, --0.319283, -0.003225, -0.326090, --0.456918, -0.291142, -0.086746, --0.456325, -0.597104, --0.425304, -0.039976, -0.351674, --0.574238, -0.587996, --0.485280, -0.393431, --0.369492, -0.370603, --0.314538, -0.167893, -0.018803, --0.156797, -0.200741, --0.191360, -0.221178, --0.352104, -0.554048, --0.717196, -0.731482, --0.574178, -0.337920, --0.174636, -0.193659, --0.387634, -0.640136, --0.806837, -0.807463, --0.662460, -0.456957, --0.271338, -0.134319, --0.023949, --0.099978, -0.262864, --0.457275, -0.639522, --0.740655, -0.697555, --0.497470, -0.205804, -0.055989, --0.179628, -0.136546, -0.014704, --0.187196, -0.334781, --0.466241, -0.595721, --0.687472, -0.662454, --0.469835, -0.155577, -0.146152, --0.303707, -0.286896, --0.188307, -0.149068, --0.252046, -0.467528, --0.683502, -0.780784, --0.690125, -0.404169, -0.033649, --0.532809, -0.955046, --1.141758, -0.985915, --0.513579, --0.091935, -0.562707, --0.683886, -0.409087, -0.122965, --0.676671, -1.048428, --1.152812, -1.025341, --0.763304, -0.459246, --0.169576, --0.076580, -0.252099, --0.318955, -0.241134, --0.016246, --0.297337, -0.583322, --0.711751, -0.607923, --0.304321, --0.064253, -0.329178, --0.381166, -0.228718, -0.015779, --0.210718, -0.270260, --0.207630, -0.116511, --0.108515, -0.244551, --0.494442, -0.742858, --0.840179, -0.679639, --0.265711, --0.265833, -0.699459, --0.847237, -0.654204, --0.233772, --0.198442, -0.456319, --0.494901, -0.424556, --0.417227, -0.572098, --0.838498, -1.051804, --1.054424, -0.812443, --0.443816, -0.140735, --0.043455, -0.153088, --0.339198, -0.432207, --0.337425, -0.096787, -0.140092, --0.215909, -0.071581, -0.213035, --0.472103, -0.563794, --0.459538, -0.250272, --0.071508, -0.010354, --0.065322, -0.180036, --0.308329, -0.447500, --0.612996, -0.785985, --0.891360, -0.836430, --0.585021, -0.207713, -0.136397, --0.280110, -0.140555, -0.233298, --0.683171, -1.017136, --1.095862, -0.887044, --0.466640, --0.026535, -0.453425, --0.721008, -0.795442, --0.691657, -0.461320, --0.188306, --0.021756, -0.074402, -0.065754, --0.346563, -0.648309, --0.843911, -0.857490, --0.684596, -0.375727, --0.012211, --0.306824, -0.478687, --0.433661, -0.184652, -0.153842, --0.414527, -0.475844, --0.340441, -0.130112, -0.002045, -0.025839, --0.182857, -0.364860, --0.470834, -0.454203, --0.323816, -0.116225, -0.125203, --0.351332, -0.503306, --0.522276, -0.373459, --0.068924, --0.326621, -0.709483, --0.963791, -0.995474, --0.769354, -0.339270, -0.148905, --0.500465, -0.557062, --0.285269, --0.187809, -0.626846, --0.810348, -0.653682, --0.256299, --0.159776, -0.383789, --0.338179, -0.111944, -0.111920, --0.179374, -0.051154, -0.203504, --0.486153, -0.745877, --0.987853, -1.216669, --1.381790, -1.392177, --1.199364, -0.875268, --0.602156, -0.561643, --0.797722, -1.161119, --1.387718, -1.264932, --0.772970, -0.103878, -0.451544, --0.669437, -0.502501, --0.075327, --0.408899, -0.772901, --0.919728, -0.831300, --0.547566, -0.155293, -0.220832, --0.452769, -0.473516, --0.332376, -0.186325, --0.210825, -0.478622, --0.892695, -1.231011, --1.281837, -0.979945, --0.448328, --0.083191, -0.422768, --0.520932, -0.464682, --0.377238, -0.309999, --0.213646, -0.007251, -0.318663, --0.657074, -0.841064, --0.761158, -0.451022, --0.073486, --0.184425, -0.230973, --0.120925, -0.009320, --0.046094, -0.281616, --0.636285, -0.943336, --1.035600, -0.831548, --0.381011, --0.150819, -0.556874, --0.687245, -0.524327, --0.191487, --0.114002, -0.229678, --0.117608, --0.116909, -0.290184, --0.253247, --0.012049, -0.373062, --0.621151, -0.603128, --0.330376, --0.008418, -0.150287, -0.079471, --0.646371, -1.308307, --1.745214, -1.740349, --1.303517, -0.661262, --0.120245, --0.114099, -0.052693, -0.101233, --0.103584, --0.148246, -0.526834, --0.749445, -0.574020, -0.018236, --0.787687, -1.379617, --1.546267, -1.288677, --0.822133, -0.404110, --0.161649, -0.042239, -0.093839, --0.330799, -0.620093, --0.819042, -0.801675, --0.552352, -0.179821, -0.146182, --0.285680, -0.192352, -0.075416, --0.391493, -0.624450, --0.698279, -0.625788, --0.497089, -0.425218, --0.476076, -0.624387, --0.766043, -0.783625, --0.626396, -0.355126, --0.121180, -0.087564, --0.333038, -0.791908, --1.266955, -1.516895, --1.379495, -0.865671, --0.166856, --0.438376, -0.733505, --0.683270, -0.447497, --0.275288, -0.341761, --0.631034, -0.943762, --1.028175, -0.751486, --0.199847, --0.359895, -0.633075, --0.467850, --0.061461, -0.702762, --1.166976, -1.271536, --1.009258, -0.521993, --0.013088, --0.346539, -0.477999, --0.406232, -0.229767, --0.064581, --0.013902, -0.003080, -0.039504, --0.047040, --0.002440, -0.069327, --0.088082, -0.027093, -0.076551, --0.138789, -0.092259, -0.057920, --0.229804, -0.316243, --0.255085, -0.070535, -0.139502, --0.260098, -0.226092, --0.061199, --0.132465, -0.231286, --0.162386, --0.052044, -0.308631, --0.487274, -0.522515, --0.431628, -0.283459, --0.138787, -0.014277, -0.102157, --0.205940, -0.250787, --0.175854, --0.034592, -0.315044, --0.546979, -0.636187, --0.577397, -0.451806, --0.358819, -0.338528, --0.347117, -0.301158, --0.152076, --0.067292, -0.254771, --0.297998, -0.142045, -0.171729, --0.514748, -0.726656, --0.695415, -0.424192, --0.044445, --0.243067, -0.274532, --0.015594, --0.418291, -0.826514, --1.030408, -0.956993, --0.658320, -0.272017, -0.042628, --0.163689, -0.050178, -0.235778, --0.541858, -0.686968, --0.556504, -0.180099, -0.266447, --0.551527, -0.521916, --0.196031, --0.244504, -0.558680, --0.576759, -0.279369, -0.212614, --0.715545, -1.071079, --1.196238, -1.083499, --0.773581, -0.332027, -0.157571, --0.594943, -0.878982, --0.942883, -0.789935, --0.500197, -0.192793, -0.040138, --0.186693, -0.316967, --0.525621, -0.849842, --1.220129, -1.486080, --1.509315, -1.262926, --0.861689, -0.490332, --0.275102, -0.196035, --0.115212, --0.094761, -0.424928, --0.715375, -0.771190, --0.517722, -0.068286, -0.350050, --0.549902, -0.494361, --0.288112, -0.075020, -0.063100, --0.130075, -0.162149, --0.162902, -0.090540, -0.094467, --0.370207, -0.641430, --0.791148, -0.755892, --0.564668, -0.313107, --0.098876, --0.026572, -0.056439, -0.005606, --0.165676, -0.419039, --0.710606, -0.926622, --0.945208, -0.719265, --0.329032, --0.043939, -0.213381, --0.096521, --0.235254, -0.595817, --0.790110, -0.723381, --0.449163, -0.127813, -0.079045, --0.112680, -0.052584, --0.056820, -0.243103, --0.589724, -0.929113, --1.048568, -0.839023, --0.390596, --0.039742, -0.180348, -0.078435, --0.604967, -1.104657, --1.305815, -1.124903, --0.699808, -0.279385, --0.060673, -0.089956, --0.279935, -0.502003, --0.669589, -0.759081, --0.778284, -0.730090, --0.606209, -0.408822, --0.171080, --0.047247, -0.188942, --0.230808, -0.192116, --0.112281, -0.015932, -0.102729, --0.259107, -0.437256, --0.570006, -0.568396, --0.384936, -0.059366, -0.296047, --0.564084, -0.689806, --0.694840, -0.634136, --0.539700, -0.402372, --0.202375, --0.046946, -0.288494, --0.456536, -0.527495, --0.539957, -0.563428, --0.637725, -0.730668, --0.749645, -0.603092, --0.270614, --0.168920, -0.573925, --0.819778, -0.868374, --0.779097, -0.653560, --0.554752, -0.462429, --0.301507, -0.024423, -0.316475, --0.569818, -0.570244, --0.253863, --0.278699, -0.801982, --1.087561, -1.030005, --0.696142, -0.270781, -0.059939, --0.209179, -0.214262, --0.180682, -0.191951, --0.247754, -0.267069, --0.148532, --0.152296, -0.575585, --0.966974, -1.144116, --0.990940, -0.533236, -0.052138, --0.514450, -0.663476, --0.484666, -0.155730, -0.060414, -0.013904, --0.349642, -0.726439, --0.880743, -0.687704, --0.252078, --0.154858, -0.269028, --0.001527, --0.506376, -0.969567, --1.124826, -0.872338, --0.314976, --0.314279, -0.781959, --0.961097, -0.859561, --0.569413, -0.188628, -0.221672, --0.618048, -0.927370, --1.036142, -0.850694, --0.391479, --0.164123, -0.550972, --0.570456, -0.224531, -0.275071, --0.638899, -0.682584, --0.429623, -0.065075, -0.214604, --0.335067, -0.363358, --0.414494, -0.536425, --0.671255, -0.713894, --0.603914, -0.366729, --0.079227, --0.191906, -0.414199, --0.562355, -0.588431, --0.442972, -0.141736, -0.189685, --0.358884, -0.229717, -0.164204, --0.615380, -0.867519, --0.782969, -0.423835, -0.015304, --0.364359, -0.592171, --0.786978, -1.030122, --1.283700, -1.397232, --1.230692, -0.789452, --0.255021, --0.117850, -0.162762, -0.093382, --0.450435, -0.660105, --0.571693, -0.210093, -0.252799, --0.606630, -0.720642, --0.602040, -0.366449, --0.148011, -0.010566, -0.083539, --0.232112, -0.510366, --0.904033, -1.302474, --1.556478, -1.564058, --1.329352, -0.958382, --0.595524, -0.341618, --0.204663, -0.111379, -0.031363, --0.267125, -0.557902, --0.808053, -0.924643, --0.870830, -0.679171, --0.424452, -0.184729, --0.018014, --0.042657, --0.007936, -0.137918, --0.277466, -0.346679, --0.307274, -0.199528, --0.125227, -0.177868, --0.370085, -0.616671, --0.789955, -0.806810, --0.683103, -0.518187, --0.425140, -0.457946, --0.583567, -0.710633, --0.747776, -0.649590, --0.424726, -0.113528, -0.235425, --0.570190, -0.830281, --0.957288, -0.929629, --0.793595, -0.648475, --0.578253, -0.578050, --0.544442, -0.353642, -0.026734, --0.484782, -0.822586, --0.888388, -0.684375, --0.370523, -0.163787, --0.205068, -0.480949, --0.840847, -1.087946, --1.085445, -0.822225, --0.410980, -0.026556, -0.182125, --0.161485, --0.031013, -0.272144, --0.450182, -0.525266, --0.534687, -0.543626, --0.580741, -0.608963, --0.555130, -0.377104, --0.115812, --0.112508, -0.187794, --0.075890, --0.129155, -0.250651, --0.143744, --0.194798, -0.601822, --0.835470, -0.723401, --0.272442, --0.334549, -0.850241, --1.103203, -1.075335, --0.877808, -0.659044, --0.515132, -0.452671, --0.408873, -0.301373, --0.078695, --0.245512, -0.585287, --0.812458, -0.822538, --0.606585, -0.278713, --0.025844, --0.001149, --0.214459, -0.537674, --0.761119, -0.730212, --0.434499, -0.011413, -0.333601, --0.440126, -0.275857, -0.051911, --0.358327, -0.480133, --0.356339, -0.046981, -0.315098, --0.603247, -0.753922, --0.769956, -0.680328, --0.498579, -0.218043, -0.152838, --0.549968, -0.851964, --0.932526, -0.737612, --0.334391, --0.106106, -0.387428, --0.385315, -0.112644, -0.281556, --0.580718, -0.608108, --0.322987, --0.145204, -0.551306, --0.656773, -0.356372, -0.262060, --0.958951, -1.461461, --1.591719, -1.337402, --0.833074, -0.271650, -0.198331, --0.529385, -0.756851, --0.926962, -1.031224, --1.001780, -0.774689, --0.369930, --0.080871, -0.390352, --0.420967, -0.167242, -0.240229, --0.607712, -0.776278, --0.686918, -0.386540, -0.011566, --0.380966, -0.625258, --0.702929, -0.633570, --0.485241, -0.344027, --0.277129, -0.308142, --0.417343, -0.561485, --0.693430, -0.767590, --0.736569, -0.557881, --0.219227, --0.231795, -0.681836, --0.985462, -1.026619, --0.775002, -0.307128, -0.217994, --0.617115, -0.751358, --0.579654, -0.176015, -0.299534, --0.667512, -0.803689, --0.685246, -0.386698, --0.035197, --0.244916, -0.371453, --0.323017, -0.144802, -0.058994, --0.160287, -0.073652, -0.177265, --0.449973, -0.561160, --0.414500, -0.085339, -0.214451, --0.280487, -0.067222, -0.269543, --0.476723, -0.381437, --0.012596, --0.418923, -0.661944, --0.582926, -0.234113, -0.200116, --0.523537, -0.627648, --0.518912, -0.284478, --0.040356, --0.106018, -0.079365, -0.140644, --0.499747, -0.874210, --1.115843, -1.120695, --0.878809, -0.469442, --0.006586, --0.423003, -0.784376, --1.071726, -1.268857, --1.333709, -1.219939, --0.913809, -0.452876, -0.085438, --0.609118, -1.028151, --1.260244, -1.244411, --0.975063, -0.539229, --0.114956, --0.096812, --0.015746, -0.390149, --0.800390, -0.974056, --0.749293, -0.172559, -0.524437, --1.048952, -1.192652, --0.918387, -0.359319, -0.248116, --0.657691, -0.704192, --0.370338, --0.195617, -0.735371, --1.001321, -0.884827, --0.471197, --0.021548, -0.382916, --0.531400, -0.532631, --0.509833, -0.525683, --0.532863, -0.429256, --0.165007, --0.193790, -0.500632, --0.634026, -0.583606, --0.445687, -0.334865, --0.290578, -0.259897, --0.169877, -0.022505, -0.076601, -0.010593, --0.335428, -0.792113, --1.158124, -1.223172, --0.918616, -0.360416, -0.216717, --0.584369, -0.625618, --0.369656, --0.044189, -0.436826, --0.656603, -0.624897, --0.356288, --0.047541, -0.434454, --0.665861, -0.685082, --0.550135, -0.399103, --0.355469, -0.431256, --0.503044, -0.395559, --0.026571, --0.492370, -0.888266, --0.889548, -0.416449, -0.334757, --0.980679, -1.163992, --0.759066, --0.054943, -0.894558, --1.382031, -1.343107, --0.883792, -0.309853, -0.060620, --0.083063, --0.137628, -0.327875, --0.234340, --0.200746, -0.798325, --1.267257, -1.407312, --1.239833, -0.968047, --0.800485, -0.779777, --0.753203, -0.507088, -0.041805, --0.746119, -1.294474, --1.398472, -0.974259, --0.203825, --0.557485, -0.969052, --0.880660, -0.400554, -0.176494, --0.535587, -0.507121, --0.140747, --0.344584, -0.694437, --0.753987, -0.533563, --0.182097, --0.103203, -0.179536, --0.026417, --0.248391, -0.466497, --0.473382, -0.222823, -0.195323, --0.599897, -0.809093, --0.724138, -0.365656, -0.144268, --0.632277, -0.931239, --0.931975, -0.621639, --0.096995, --0.462309, -0.861499, --0.974187, -0.799260, --0.457213, -0.124509, -0.058976, --0.057482, --0.056604, -0.162932, --0.178771, -0.113820, --0.057151, -0.104807, --0.278858, -0.497491, --0.621723, -0.549229, --0.289533, --0.033755, -0.256617, --0.272952, -0.090777, -0.187307, --0.437065, -0.584649, --0.631996, -0.629219, --0.621678, -0.608731, --0.537700, -0.336322, -0.030702, --0.510364, -0.951622, --1.161873, -1.013413, --0.538469, --0.062116, -0.523341, --0.676724, -0.555446, --0.361450, -0.312496, --0.480922, -0.744485, --0.882922, -0.742953, --0.347678, --0.123219, -0.457600, --0.545396, -0.434731, --0.283531, -0.249461, --0.391610, -0.640598, --0.845419, -0.860491, --0.618945, -0.156798, -0.411087, --0.939322, -1.300033, --1.420596, -1.306491, --1.039126, -0.739791, --0.509949, -0.382633, --0.320433, -0.261671, --0.176801, -0.088904, --0.044896, -0.067010, --0.128402, -0.170403, --0.142862, -0.033431, -0.132332, --0.312451, -0.470741, --0.584798, -0.639832, --0.619172, -0.503899, --0.287570, --0.000945, -0.286237, --0.465859, -0.460840, --0.267612, --0.029607, -0.302303, --0.448072, -0.433995, --0.283577, -0.030803, -0.304389, --0.692700, -1.054585, --1.260655, -1.197031, --0.852718, -0.354336, -0.089641, --0.300494, -0.220128, -0.073620, --0.422183, -0.665458, --0.701725, -0.514632, --0.172151, --0.199561, -0.467874, --0.556653, -0.484821, --0.347669, -0.246647, --0.218332, -0.219814, --0.182082, -0.082730, -0.029252, --0.081111, -0.053049, --0.010264, -0.052675, --0.219541, -0.433295, --0.541790, -0.436648, --0.153419, --0.136880, -0.251036, --0.138922, --0.069481, -0.161628, --0.012372, --0.308020, -0.573910, --0.560954, -0.200640, -0.375128, --0.916163, -1.191186, --1.089391, -0.643444, -0.008490, --0.679657, -1.184790, --1.381772, -1.209072, --0.711304, -0.035884, -0.608919, --1.025693, -1.102478, --0.858068, -0.433217, --0.025427, --0.205890, -0.214019, --0.074740, --0.075981, -0.134536, --0.089279, -0.010723, -0.010799, -0.072236, --0.243834, -0.447154, --0.621076, -0.723366, --0.736322, -0.666454, --0.543339, -0.409391, --0.294179, -0.185848, --0.028050, --0.239688, -0.617288, --1.006185, -1.242832, --1.197534, -0.874145, --0.430967, -0.092982, --0.008491, -0.152087, --0.348307, -0.402149, --0.242233, --0.028948, -0.213651, --0.167535, --0.092225, -0.397019, --0.544421, -0.434609, --0.129319, --0.200413, -0.389500, --0.372353, -0.199442, -0.015730, --0.169662, -0.214964, --0.165057, -0.071015, -0.008565, --0.032417, --0.008512, -0.087750, --0.152870, -0.146260, --0.031682, --0.182457, -0.433876, --0.620310, -0.638208, --0.433333, -0.037843, -0.431354, --0.818314, -0.995918, --0.917996, -0.628614, --0.229955, --0.163805, -0.459019, --0.594753, -0.548421, --0.347719, -0.081385, -0.114512, --0.108282, --0.155278, -0.605986, --1.060993, -1.302852, --1.186414, -0.717879, --0.062224, --0.529746, -0.841359, --0.796626, -0.495986, --0.158296, --0.001692, --0.107319, -0.405290, --0.690974, -0.760327, --0.523114, -0.053303, -0.451323, --0.772248, -0.777956, --0.482636, -0.032722, -0.366896, --0.550743, -0.470017, --0.211885, --0.050841, -0.153959, --0.025720, --0.288109, -0.663962, --0.966184, -1.092294, --0.986163, -0.643796, --0.130866, --0.407016, -0.780948, --0.848811, -0.604970, --0.195042, --0.168730, -0.335255, --0.293853, -0.154231, --0.054788, -0.072683, --0.192372, -0.336614, --0.424127, -0.414610, --0.322236, -0.200211, --0.108567, -0.080418, --0.102030, -0.118652, --0.066550, --0.083956, -0.300291, --0.494558, -0.565490, --0.453279, -0.176173, -0.171218, --0.456962, -0.570435, --0.475593, -0.235156, -0.011331, --0.115559, -0.005521, -0.265168, --0.546073, -0.689189, --0.650642, -0.514956, --0.417552, -0.426711, --0.484511, -0.458333, --0.259220, --0.075358, -0.404539, --0.589876, -0.590684, --0.470094, -0.316210, --0.157942, --0.044228, -0.324242, --0.624691, -0.787139, --0.644517, -0.153176, -0.538848, --1.149337, -1.414635, --1.236728, -0.728859, --0.136680, --0.305731, -0.492305, --0.471415, -0.383068, --0.357600, -0.438263, --0.568307, -0.641799, --0.581513, -0.391210, --0.148688, --0.051018, -0.156268, --0.177498, -0.157389, --0.128200, -0.095866, --0.055797, -0.009689, -0.043018, --0.126893, -0.286681, --0.540940, -0.829342, --1.015127, -0.965177, --0.654854, -0.207284, -0.179179, --0.366616, -0.369209, --0.326585, -0.383697, --0.578119, -0.823667, --0.993280, -1.022307, --0.944832, -0.840340, --0.746074, -0.616307, --0.367259, --0.027441, -0.471698, --0.775187, -0.768264, --0.425358, --0.098230, -0.552591, --0.747356, -0.662627, --0.436999, -0.247989, --0.182893, -0.199443, --0.197660, -0.133416, --0.076028, -0.163061, --0.488397, -1.007258, --1.526659, -1.790868, --1.615286, -0.997813, --0.146839, --0.597316, -0.921105, --0.701641, -0.082369, -0.598743, --1.001750, -0.986523, --0.690443, -0.423513, --0.446927, -0.787514, --1.218600, -1.420742, --1.207638, -0.657852, --0.061112, --0.281041, -0.260352, --0.030971, --0.103735, --0.091923, -0.614319, --1.211796, -1.545150, --1.409416, -0.867686, --0.208740, --0.240703, -0.321029, --0.125649, --0.084183, -0.069705, -0.223557, --0.639826, -0.930735, --0.926938, -0.645996, --0.273449, -0.043379, --0.103932, -0.447300, --0.929778, -1.351243, --1.541555, -1.416635, --0.996350, -0.393741, -0.216075, --0.647093, -0.769420, --0.571001, -0.177762, -0.194410, --0.344882, -0.195375, -0.170382, --0.566268, -0.826782, --0.907186, -0.888376, --0.887530, -0.952230, --1.029120, -1.031209, --0.938424, -0.834108, --0.839896, -1.007121, --1.264467, -1.469341, --1.514674, -1.395953, --1.187651, -0.964441, --0.747230, -0.517979, --0.275230, -0.067184, -0.031198, -0.026660, --0.222537, -0.483602, --0.724930, -0.888937, --0.958656, -0.946090, --0.870798, -0.742640, --0.556799, -0.305501, --0.003824, --0.287808, -0.471471, --0.463192, -0.262978, -0.014704, --0.194764, -0.160566, -0.049362, --0.257494, -0.284366, --0.107256, --0.095655, -0.070240, -0.304228, --0.885903, -1.332532, --1.320243, -0.763912, -0.114675, --0.911129, -1.264610, --1.041116, -0.377441, -0.415710, --1.017273, -1.235756, --1.066468, -0.657056, --0.214565, --0.093398, -0.197016, --0.125021, --0.036496, -0.193560, --0.276414, -0.250761, --0.120136, --0.072753, -0.253299, --0.342948, -0.304309, --0.175609, -0.060419, --0.066184, -0.228317, --0.478923, -0.692226, --0.777607, -0.745713, --0.689555, -0.694008, --0.752583, -0.769414, --0.649373, -0.397532, --0.135154, -0.010351, --0.076834, -0.245805, --0.355549, -0.301924, --0.120623, --0.046324, -0.069021, -0.068008, --0.263695, -0.395589, --0.428004, -0.439783, --0.548153, -0.791756, --1.070334, -1.193418, --1.005038, -0.494102, -0.187856, --0.809761, -1.183622, --1.245514, -1.053631, --0.723968, -0.360184, --0.022587, --0.259629, -0.461281, --0.550862, -0.505672, --0.337058, -0.101846, -0.113915, --0.232965, -0.225645, --0.125741, -0.012432, -0.032033, -0.035240, --0.198805, -0.396799, --0.552752, -0.608910, --0.547998, -0.400015, --0.234842, -0.140921, --0.191221, -0.406754, --0.736900, -1.074286, --1.303019, -1.354480, --1.235309, -1.009133, --0.747740, -0.490463, --0.241462, -0.000863, -0.204364, --0.322058, -0.309990, --0.173281, --0.030150, -0.223876, --0.360985, -0.449151, --0.534273, -0.654884, --0.800152, -0.901157, --0.864065, -0.627079, --0.207390, --0.290501, -0.711864, --0.914086, -0.823363, --0.463007, --0.051008, -0.541787, --0.826436, -0.788191, --0.443559, --0.037197, -0.392093, --0.402325, -0.029823, -0.535599, --0.967940, -0.992723, --0.555348, --0.140639, -0.753606, --1.005780, -0.838114, --0.424782, -0.049409, -0.068285, -0.113414, --0.461028, -0.764103, --0.858092, -0.702675, --0.385974, -0.066686, -0.109985, --0.082530, --0.101460, -0.315945, --0.428425, -0.373971, --0.188104, --0.023180, -0.156602, --0.178033, -0.134427, --0.102424, -0.114671, --0.125954, -0.052641, -0.140817, --0.379804, -0.501956, --0.360532, --0.060840, -0.608582, --1.032050, -1.128671, --0.869883, -0.425599, --0.066855, -0.001525, --0.241764, -0.587629, --0.744795, -0.509776, -0.091154, --0.800962, -1.273745, --1.271340, -0.790492, --0.045807, --0.666919, -1.125660, --1.257451, -1.109834, --0.774522, -0.339264, -0.105864, --0.448155, -0.573752, --0.436680, -0.117167, -0.198148, --0.321372, -0.183817, -0.119344, --0.394739, -0.477277, --0.326621, -0.035606, -0.238543, --0.362902, -0.284021, --0.033417, --0.302643, -0.625901, --0.863457, -0.986064, --1.001047, -0.927313, --0.775491, -0.552296, --0.283571, -0.024712, -0.166027, --0.276288, -0.360738, --0.498451, -0.708395, --0.897050, -0.899577, --0.600132, -0.040500, -0.577716, --1.010778, -1.124546, --0.963532, -0.689198, --0.447792, -0.281049, --0.145302, -0.003141, -0.110036, --0.108828, --0.057192, -0.344819, --0.646991, -0.886579, --1.085025, -1.335110, --1.692829, -2.081169, --2.298433, -2.142695, --1.565917, -0.738590, -0.032672, --0.482094, -0.532389, --0.314264, -0.058053, -0.053008, -0.034654, --0.260998, -0.524023, --0.738071, -0.848328, --0.822299, -0.652150, --0.372156, -0.063086, -0.179547, --0.299013, -0.308297, --0.267821, -0.227328, --0.184785, -0.101238, -0.043862, --0.213636, -0.334102, --0.357629, -0.306708, --0.250651, -0.233066, --0.220305, -0.126150, -0.102134, --0.411218, -0.650010, --0.660475, -0.386623, -0.074043, --0.508855, -0.694464, --0.511574, -0.014698, -0.578086, --0.979409, -0.974250, --0.538529, --0.137791, -0.746563, --1.025484, -0.892984, --0.474413, -0.013183, -0.269713, --0.282443, -0.084562, -0.170842, --0.330918, -0.321065, --0.171566, --0.013898, -0.126424, --0.117035, -0.020746, -0.073284, --0.085352, -0.000137, -0.123323, --0.193322, -0.151536, --0.019249, --0.108723, -0.121283, -0.036299, --0.323458, -0.626825, --0.830239, -0.884707, --0.831470, -0.765742, --0.769852, -0.860688, --0.980148, -1.027150, --0.909758, -0.594171, --0.133533, --0.337654, -0.651918, --0.690288, -0.458101, --0.102363, --0.158922, -0.167513, -0.064334, --0.344796, -0.415430, --0.121375, --0.472613, -1.100675, --1.441304, -1.298155, --0.705459, --0.097759, -0.795669, --1.142587, -1.051635, --0.598422, --0.037667, -0.651185, --1.074909, -1.216964, --1.070716, -0.701400, --0.217748, --0.259649, -0.621768, --0.784403, -0.700884, --0.383664, --0.072239, -0.491327, --0.671872, -0.485626, -0.030544, --0.662198, -1.116543, --1.186167, -0.873671, --0.389181, -0.019354, -0.043383, -0.201195, --0.589248, -0.910009, --1.024480, -0.916977, --0.669729, -0.397890, --0.191235, -0.087590, --0.077653, -0.125675, --0.189033, -0.228119, --0.209529, -0.113013, -0.053414, --0.241493, -0.373807, --0.384758, -0.269545, --0.101720, --0.004620, --0.030824, -0.195840, --0.389613, -0.490689, --0.441416, -0.286724, --0.138607, -0.092537, --0.156922, -0.246536, --0.243713, -0.084047, -0.192335, --0.457365, -0.567398, --0.444614, -0.118206, -0.295520, --0.656708, -0.868848, --0.913433, -0.841532, --0.736262, -0.669878, --0.673523, -0.727681, --0.775017, -0.750452, --0.615336, -0.376803, --0.080417, --0.216159, -0.465770, --0.633865, -0.687034, --0.592359, -0.342411, -0.009346, --0.339651, -0.498567, --0.390456, -0.043087, -0.387553, --0.690917, -0.714907, --0.448990, -0.024608, -0.365486, --0.573141, -0.558292, --0.379989, -0.138455, -0.081609, --0.235133, -0.313551, --0.336867, -0.348676, --0.402280, -0.528887, --0.704142, -0.846137, --0.861099, -0.711554, --0.454724, -0.213870, --0.096708, -0.120197, --0.202246, -0.232292, --0.168334, -0.080007, --0.093602, -0.274409, --0.542404, -0.704040, --0.594499, -0.226649, -0.180402, --0.337633, -0.099317, -0.408503, --0.854363, -0.927042, --0.559866, --0.012185, -0.405701, --0.343600, --0.164851, -0.832937, --1.273858, -1.223837, --0.678951, --0.115349, -0.797833, --1.071452, -0.845514, --0.277573, --0.307286, -0.586869, --0.416002, --0.097030, -0.663205, --0.992273, -0.962039, --0.665831, -0.314973, --0.077516, --0.024751, -0.093941, --0.242689, -0.490487, --0.749203, -0.895395, --0.858575, -0.655518, --0.359597, -0.050166, -0.212259, --0.381065, -0.419561, --0.318678, -0.119436, -0.094716, --0.245985, -0.318538, --0.374886, -0.512158, --0.784895, -1.147555, --1.457580, -1.540899, --1.285291, -0.711748, -0.014562, --0.643227, -0.943420, --0.807662, -0.304962, -0.344977, --0.868580, -1.061837, --0.879334, -0.443884, -0.026149, --0.329085, -0.370076, --0.186901, --0.089838, -0.308306, --0.359597, -0.211479, -0.090072, --0.443684, -0.731794, --0.866705, -0.827631, --0.669896, -0.495574, --0.396885, -0.403544, --0.467224, -0.494087, --0.403961, -0.177396, -0.136784, --0.451115, -0.681308, --0.777205, -0.736525, --0.605366, -0.464861, --0.398104, -0.444668, --0.571359, -0.690163, --0.720081, -0.647280, --0.530121, -0.442057, --0.404947, -0.377673, --0.311894, -0.217694, --0.166553, -0.218774, --0.342036, -0.408864, --0.294111, --0.001866, -0.316153, --0.421927, -0.198254, -0.260842, --0.690783, -0.828302, --0.583257, -0.083700, -0.431402, --0.778653, -0.924294, --0.945426, -0.913394, --0.813486, -0.571266, --0.152192, --0.363853, -0.805230, --1.011455, -0.932082, --0.648449, -0.313334, --0.062644, --0.042099, -0.018712, -0.067313, --0.144904, -0.170915, --0.142936, -0.085617, --0.017944, --0.073078, -0.225202, --0.457681, -0.725327, --0.915493, -0.905934, --0.650532, -0.230673, -0.172828, --0.378412, -0.309042, --0.031648, --0.297229, -0.539128, --0.654231, -0.697415, --0.742378, -0.804181, --0.827611, -0.746852, --0.557190, -0.328704, --0.145258, -0.022431, -0.117545, --0.380084, -0.787040, --1.213316, -1.438243, --1.290024, -0.780272, --0.120359, --0.404262, -0.615279, --0.545071, -0.388152, --0.344474, -0.478231, --0.694878, -0.838978, --0.823691, -0.688980, --0.553455, -0.511320, --0.560254, -0.611911, --0.567526, -0.396832, --0.164134, --0.010138, -0.021932, -0.156301, --0.460441, -0.770433, --0.975859, -1.033993, --0.983832, -0.904933, --0.849544, -0.802199, --0.704550, -0.528273, --0.329249, -0.223020, --0.289128, -0.483974, --0.648896, -0.624766, --0.387112, -0.086496, -0.050241, -0.112180, --0.509058, -0.908462, --1.055950, -0.823745, --0.268546, --0.418121, -1.011118, --1.336555, -1.312289, --0.956748, -0.385431, -0.207513, --0.598615, -0.617043, --0.227817, --0.434290, -1.112815, --1.545373, -1.587997, --1.278845, -0.806026, --0.399278, -0.207903, --0.232214, -0.342927, --0.373566, -0.229976, -0.048219, --0.312237, -0.399967, --0.240935, --0.099425, -0.464995, --0.708139, -0.770669, --0.693284, -0.558707, --0.422979, -0.288739, --0.131479, --0.055902, -0.243763, --0.384793, -0.448406, --0.437101, -0.373468, --0.276172, -0.151532, --0.007824, --0.126614, -0.205712, --0.192323, -0.086244, -0.073368, --0.235881, -0.372866, --0.486290, -0.583173, --0.640291, -0.594425, --0.373930, --0.045787, -0.601324, --1.145943, -1.502812, --1.541442, -1.240569, --0.707483, -0.142246, -0.242577, --0.315763, -0.091255, -0.276354, --0.573499, -0.649864, --0.509803, -0.308660, --0.244536, -0.410798, --0.712734, -0.917135, --0.811212, -0.362195, -0.239735, --0.691481, -0.764755, --0.440919, --0.093814, -0.574098, --0.803204, -0.726799, --0.409218, --0.037538, -0.505797, --0.900859, -1.133177, --1.132614, -0.890054, --0.489715, -0.089663, -0.152890, --0.165060, --0.011019, -0.263305, --0.492660, -0.664946, --0.793225, -0.875298, --0.853705, -0.645590, --0.225070, --0.312776, -0.769807, --0.945935, -0.758419, --0.296432, --0.227637, -0.598383, --0.711751, -0.614933, --0.455624, -0.380907, --0.452414, -0.625931, --0.797296, -0.873933, --0.818580, -0.639519, --0.348026, --0.065768, -0.603011, --1.191061, -1.649785, --1.748325, -1.341429, --0.497422, --0.485009, -1.204476, --1.359052, -0.898975, --0.042321, --0.842927, -1.411273, --1.476083, -1.059503, --0.357069, --0.354023, -0.826219, --0.936562, -0.729371, --0.383631, -0.112656, --0.045731, -0.161675, --0.320070, -0.372624, --0.276474, -0.124593, --0.067419, -0.185290, --0.412729, -0.577412, --0.524998, -0.232362, -0.177707, --0.526530, -0.698580, --0.697349, -0.605157, --0.495288, -0.378046, --0.223969, -0.032370, -0.128035, --0.154513, --0.001761, -0.271537, --0.490317, -0.501681, --0.266151, --0.108625, -0.441509, --0.599953, -0.579186, --0.481933, -0.420851, --0.424049, -0.417698, --0.296218, -0.021388, -0.328686, --0.598684, -0.654049, --0.466607, -0.130162, -0.199872, --0.397484, -0.427778, --0.344918, -0.236390, --0.156711, -0.095458, -0.001557, --0.177053, -0.415591, --0.641710, -0.765277, --0.740032, -0.590872, --0.391327, -0.213588, --0.094361, -0.041441, --0.064799, -0.191498, --0.439408, -0.769041, --1.061726, -1.159471, --0.953097, -0.461570, -0.156142, --0.672337, -0.905261, --0.807606, -0.476815, --0.086035, --0.214950, -0.363569, --0.378540, -0.303847, --0.158472, --0.063264, -0.347409, --0.623729, -0.784170, --0.751588, -0.539626, --0.245112, --0.027874, -0.246531, --0.456957, -0.708812, --0.965129, -1.087451, --0.926020, -0.451332, -0.182769, --0.707823, -0.902504, --0.732552, -0.366392, --0.055328, --0.035048, --0.075809, -0.216737, --0.199447, --0.042547, -0.402757, --0.666728, -0.647772, --0.307981, --0.207787, -0.645429, --0.781246, -0.547375, --0.068379, --0.414464, -0.686217, --0.679782, -0.500498, --0.342507, -0.356211, --0.554761, -0.815847, --0.968843, -0.905124, --0.641781, -0.305427, --0.053217, --0.017740, --0.079954, -0.240496, --0.333795, -0.283559, --0.107517, --0.102568, -0.245386, --0.276344, -0.234301, --0.215070, -0.311274, --0.554954, -0.892439, --1.201788, -1.344889, --1.234075, -0.886546, --0.436087, -0.083275, -0.003526, -0.214542, --0.615970, -0.985459, --1.141844, -1.041373, --0.783470, -0.518470, --0.333029, -0.203888, --0.051113, --0.161321, -0.367590, --0.436335, -0.274121, -0.085616, --0.478550, -0.697150, --0.611741, -0.246341, -0.235369, --0.618829, -0.743487, --0.564230, -0.146234, -0.386179, --0.905425, -1.313132, --1.548455, -1.588158, --1.448108, -1.179839, --0.851693, -0.517150, --0.191348, --0.143609, -0.504164, --0.866935, -1.158028, --1.281995, -1.173709, --0.840588, -0.370496, -0.098373, --0.429131, -0.536928, --0.419871, -0.159917, -0.107255, --0.244585, -0.170768, -0.099477, --0.450712, -0.705516, --0.698547, -0.359626, -0.233837, --0.870175, -1.289858, --1.308691, -0.911022, --0.256962, --0.401597, -0.843210, --0.964381, -0.791383, --0.431721, -0.015038, -0.340626, --0.539277, -0.520992, --0.291773, --0.054718, -0.362336, --0.493840, -0.421707, --0.254248, -0.158295, --0.223979, -0.378019, --0.429313, -0.226749, -0.191872, --0.589578, -0.685857, --0.369814, --0.192206, -0.644175, --0.668874, -0.199909, -0.526708, --1.111917, -1.229297, --0.807966, -0.058564, -0.657661, --1.026509, -0.929826, --0.476941, --0.076304, -0.461046, --0.514629, -0.240303, -0.206787, --0.598204, -0.743916, --0.585963, -0.221757, -0.161548, --0.403928, -0.463162, --0.416285, -0.374108, --0.378379, -0.365021, --0.223961, --0.093135, -0.507165, --0.845914, -0.956677, --0.811969, -0.527471, --0.278990, -0.181599, --0.218859, -0.267787, --0.192942, --0.062303, -0.446355, --0.838355, -1.115521, --1.202303, -1.084700, --0.803147, -0.440981, --0.106250, --0.105484, -0.161125, --0.118020, -0.094011, --0.186586, -0.399639, --0.641439, -0.801624, --0.843237, -0.827929, --0.849687, -0.934055, --0.992922, -0.878517, --0.497810, --0.099071, -0.721530, --1.130376, -1.161027, --0.808136, -0.229964, -0.324558, --0.628715, -0.576786, --0.222695, --0.259285, -0.670143, --0.886880, -0.915376, --0.868458, -0.882430, --1.019061, -1.211629, --1.295026, -1.113551, --0.644395, -0.048968, -0.401141, --0.490904, -0.210422, -0.227311, --0.522408, -0.484669, --0.148220, --0.274599, -0.555515, --0.599253, -0.471802, --0.304321, -0.164957, --0.005717, --0.278924, -0.735443, --1.272189, -1.682156, --1.757311, -1.421552, --0.794241, -0.136974, -0.292812, --0.394632, -0.284038, --0.210001, -0.375429, --0.778794, -1.190712, --1.292743, -0.890981, --0.059671, --0.886543, -1.573920, --1.779095, -1.524283, --1.005238, -0.427217, -0.111357, --0.601223, -1.011857, --1.219188, -1.067634, --0.529716, --0.185393, -0.702198, --0.711521, -0.200048, -0.507601, --0.945977, -0.815224, --0.180416, --0.578080, -1.026837, --0.967269, -0.547548, --0.128809, -0.015052, --0.251456, -0.632947, --0.894984, -0.917964, --0.781151, -0.642136, --0.569389, -0.484687, --0.261352, --0.121783, -0.517746, --0.700640, -0.532342, --0.070314, --0.464175, -0.823766, --0.873382, -0.641665, --0.273917, --0.061389, -0.248924, --0.255007, -0.114714, -0.098222, --0.298774, -0.409203, --0.374025, -0.178363, -0.132853, --0.452086, -0.643236, --0.612194, -0.378177, --0.089275, --0.049033, --0.096933, -0.487423, --0.916500, -1.138709, --1.034494, -0.694428, --0.354440, -0.224586, --0.339383, -0.544457, --0.627952, -0.487998, --0.200648, --0.061737, -0.183495, --0.195386, -0.227889, --0.377715, -0.610844, --0.785941, -0.773649, --0.566507, -0.290346, --0.115524, -0.144612, --0.359084, -0.650070, --0.894501, -1.017973, --1.012242, -0.914312, --0.772916, -0.623434, --0.478046, -0.329607, --0.164685, --0.020114, -0.207196, --0.359373, -0.434618, --0.407648, -0.288430, --0.128115, -0.007416, --0.006991, -0.168306, --0.462196, -0.785726, --0.997444, -0.980765, --0.703829, -0.241164, -0.259253, --0.647191, -0.838638, --0.842638, -0.735162, --0.604347, -0.506426, --0.455788, -0.441768, --0.446739, -0.449946, --0.425256, -0.350810, --0.232482, -0.119275, --0.085102, -0.177718, --0.369858, -0.555211, --0.603259, -0.442623, --0.118363, --0.217414, -0.381735, --0.262934, --0.108437, -0.562206, --0.868059, -0.851812, --0.484684, --0.104588, -0.699686, --1.104463, -1.226302, --1.094470, -0.816413, --0.505797, -0.222725, -0.047174, --0.366174, -0.782379, --1.266368, -1.690620, --1.878891, -1.705913, --1.185118, -0.480949, -0.167389, --0.561055, -0.621750, --0.396075, -0.001848, -0.433357, --0.804312, -1.032562, --1.067628, -0.900167, --0.576247, -0.190477, -0.150039, --0.374159, -0.477322, --0.514289, -0.557237, --0.642628, -0.739714, --0.764258, -0.636926, --0.352735, -0.008849, -0.242720, --0.296097, -0.173027, --0.014545, --0.020978, --0.123077, -0.362041, --0.542693, -0.565964, --0.457097, -0.330471, --0.290537, -0.360675, --0.495205, -0.645686, --0.803111, -0.970375, --1.100291, -1.081377, --0.814041, -0.325449, -0.187785, --0.457669, -0.334483, -0.076139, --0.451645, -0.460676, -0.003188, --0.736408, -1.356241, --1.553948, -1.286478, --0.774615, -0.323849, --0.111388, -0.094993, --0.093263, --0.045148, -0.322218, --0.604642, -0.743171, --0.692241, -0.538326, --0.426487, -0.451162, --0.594943, -0.752249, --0.809954, -0.723595, --0.541614, -0.371337, --0.314580, -0.409269, --0.602412, -0.764973, --0.747543, -0.461108, -0.052294, --0.606040, -0.940892, --0.860730, -0.357156, -0.361582, --0.969758, -1.200718, --0.994570, -0.525403, --0.092769, --0.053425, --0.151776, -0.569115, --0.953023, -1.098821, --0.948868, -0.601259, --0.230317, --0.019641, -0.099597, --0.050537, --0.050619, -0.146053, --0.217217, -0.269275, --0.304362, -0.309385, --0.266015, -0.172790, --0.060844, --0.009912, --0.023216, -0.188031, --0.448686, -0.708329, --0.851094, -0.805910, --0.594297, -0.325843, --0.136370, -0.103722, --0.197075, -0.297486, --0.279719, -0.101281, -0.161744, --0.356548, -0.345290, --0.088879, --0.324683, -0.716767, --0.895646, -0.739365, --0.254360, --0.411367, -1.013756, --1.312974, -1.192617, --0.734000, -0.188789, -0.151854, --0.121947, --0.224360, -0.651966, --0.894457, -0.815814, --0.480514, -0.093593, -0.140858, --0.146296, -0.007737, -0.099790, --0.034289, --0.219679, -0.543393, --0.762952, -0.760997, --0.550698, -0.266842, --0.081528, -0.098090, --0.289724, -0.519913, --0.629275, -0.531775, --0.260581, --0.058373, -0.278382, --0.300881, -0.108749, -0.237282, --0.623049, -0.916500, --1.012713, -0.879328, --0.578119, -0.240461, --0.002576, --0.062039, --0.029724, -0.196971, --0.351475, -0.445029, --0.481361, -0.494820, --0.518265, -0.563172, --0.621219, -0.678408, --0.725407, -0.755501, --0.757292, -0.717596, --0.638184, -0.549899, --0.501249, -0.518920, --0.570837, -0.571949, --0.442173, -0.176353, -0.135562, --0.366183, -0.445458, --0.411937, -0.370293, --0.387500, -0.421802, --0.357060, -0.120092, -0.224669, --0.499458, -0.548621, --0.370478, -0.123846, -0.006274, -0.028807, --0.094960, --0.009250, -0.370589, --0.867406, -1.243312, --1.286698, -0.971612, --0.458050, --0.030206, -0.341365, --0.447336, -0.399821, --0.254857, -0.034436, -0.259970, --0.615300, -0.991605, --1.328648, -1.558442, --1.617897, -1.471159, --1.144655, -0.748399, --0.445368, -0.362643, --0.496817, -0.693284, --0.737365, -0.508092, --0.083484, --0.290549, -0.357966, --0.029622, --0.547157, -1.076638, --1.296319, -1.124611, --0.679338, -0.171060, -0.238647, --0.512173, -0.706118, --0.878913, -1.014328, --1.014575, -0.762198, --0.208904, --0.559309, -1.317740, --1.772935, -1.690134, --1.024262, --0.021719, -1.065720, --1.726067, -1.815824, --1.431066, -0.874085, --0.461147, -0.342879, --0.451526, -0.595659, --0.619198, -0.505419, --0.358941, -0.295358, --0.333842, -0.376213, --0.282638, --0.019616, -0.476637, --0.936216, -1.236802, --1.293091, -1.127225, --0.837694, -0.538639, --0.311590, -0.193055, --0.190426, -0.300202, --0.506718, -0.762973, --0.977776, -1.035117, --0.848715, -0.423352, -0.119790, --0.579680, -0.763355, --0.581045, -0.097577, -0.489530, --0.937861, -1.072489, --0.867406, -0.452593, --0.040649, --0.187375, -0.170471, -0.021709, --0.255652, -0.423990, --0.491810, -0.475003, --0.386659, -0.211643, -0.064034, --0.402250, -0.699874, --0.840370, -0.774037, --0.558746, -0.322591, --0.175265, -0.138655, --0.150546, -0.132874, --0.062893, --0.013353, -0.033216, -0.014386, --0.066585, -0.031538, -0.134495, --0.379315, -0.573713, --0.586151, -0.364350, -0.027565, --0.439720, -0.716055, --0.773247, -0.628468, --0.360839, -0.041641, -0.306011, --0.683690, -1.056117, --1.317802, -1.333667, --1.031958, -0.476622, -0.142330, --0.599480, -0.745937, --0.576137, -0.218973, -0.131487, --0.307540, -0.240940, -0.014370, --0.322284, -0.548728, --0.640088, -0.643316, --0.652589, -0.722051, --0.811513, -0.807340, --0.603584, -0.185020, -0.344897, --0.807725, -1.036664, --0.955702, -0.610439, --0.138171, --0.303942, -0.613470, --0.779056, -0.858444, --0.914861, -0.959583, --0.945777, -0.819796, --0.584532, -0.313048, --0.090760, --0.068342, -0.251321, --0.579120, -1.082873, --1.623169, -1.931266, --1.762646, -1.065848, --0.049682, --0.903803, -1.434321, --1.390574, -0.898748, --0.274276, --0.164735, -0.265647, --0.091649, --0.163715, -0.324189, --0.335258, -0.264185, --0.218969, -0.261753, --0.378165, -0.505422, --0.578634, -0.557947, --0.433575, -0.227906, --0.001961, --0.150749, -0.142787, -0.046494, --0.332492, -0.552340, --0.555810, -0.303751, -0.098763, --0.465463, -0.648112, --0.627433, -0.510638, --0.440075, -0.484624, --0.596180, -0.661643, --0.603873, -0.447079, --0.292992, -0.229795, --0.254401, -0.276644, --0.202119, -0.019772, -0.184847, --0.302664, -0.294939, --0.224948, -0.202119, --0.291127, -0.465180, --0.638020, -0.738480, --0.758908, -0.739597, --0.711214, -0.652440, --0.502984, -0.222334, -0.155003, --0.515103, -0.719840, --0.685874, -0.433935, --0.075376, --0.254453, -0.470777, --0.571931, -0.608701, --0.616006, -0.564340, --0.378827, -0.021074, -0.429974, --0.778537, -0.819748, --0.490311, --0.055333, -0.519841, --0.652788, -0.422422, --0.038918, --0.193323, -0.088092, -0.299829, --0.726182, -0.935998, --0.832898, -0.518861, --0.188967, --0.025397, -0.140807, --0.274219, -0.511216, --0.802879, -0.978568, --0.868261, -0.440773, -0.149004, --0.642678, -0.833926, --0.689946, -0.359400, --0.068346, --0.021792, --0.098951, -0.307841, --0.452140, -0.460369, --0.385047, -0.350786, --0.449604, -0.661801, --0.858128, -0.878141, --0.628387, -0.140047, -0.438588, --0.901097, -1.064996, --0.850122, -0.326576, -0.297667, --0.763027, -0.887470, --0.664856, -0.262712, -0.086215, --0.226214, -0.156007, -0.005259, --0.124168, -0.143529, --0.095807, -0.049006, --0.043504, -0.069830, --0.090147, -0.070104, -0.006667, --0.139474, -0.308377, --0.463803, -0.526759, --0.420049, -0.124005, -0.281600, --0.631526, -0.753737, --0.573964, -0.179260, -0.212808, --0.376576, -0.224267, -0.124096, --0.409290, -0.407844, --0.093263, --0.342647, -0.636387, --0.660618, -0.526708, --0.490487, -0.729508, --1.172883, -1.531258, --1.513673, -1.061777, --0.410113, --0.082001, -0.196705, --0.010497, --0.185875, -0.130520, -0.203980, --0.606695, -0.818878, --0.751188, -0.545253, --0.436451, -0.545259, --0.778334, -0.918047, --0.814291, -0.510116, --0.198636, -0.058204, --0.113049, -0.234707, --0.271364, -0.183434, --0.066587, -0.049359, --0.164132, -0.309155, --0.334274, -0.172526, -0.097969, --0.312544, -0.345523, --0.197159, --0.022090, -0.183485, --0.224481, -0.161665, --0.039205, --0.126026, -0.347973, --0.625296, -0.897765, --1.057527, -1.017401, --0.782418, -0.461034, --0.199863, -0.090886, --0.124657, -0.222451, --0.311903, -0.376383, --0.439238, -0.509544, --0.551059, -0.508835, --0.368434, -0.188997, --0.074981, -0.106213, --0.279594, -0.503833, --0.647918, -0.610787, --0.374111, -0.014511, -0.328817, --0.517105, -0.476985, --0.235214, --0.095776, -0.373450, --0.491110, -0.421191, --0.219766, --0.004424, -0.141673, --0.133563, -0.001735, -0.167753, --0.284207, -0.321524, --0.343860, -0.456846, --0.711313, -1.033522, --1.248736, -1.196897, --0.862729, -0.417561, --0.126231, -0.171834, --0.519534, -0.921337, --1.067720, -0.786421, --0.154418, --0.549297, -1.012775, --1.068808, -0.774534, --0.358631, -0.082527, --0.098918, -0.378373, --0.732587, -0.917391, --0.764460, -0.276038, -0.366878, --0.890317, -1.062793, --0.808741, -0.242062, -0.393344, --0.842054, -0.955967, --0.758887, -0.426884, --0.191402, -0.209716, --0.469749, -0.786674, --0.902671, -0.639561, --0.016189, --0.743174, -1.320640, --1.474623, -1.167840, --0.577186, --0.018371, -0.400581, --0.522151, -0.498167, --0.492570, -0.585290, --0.716359, -0.744140, --0.569508, -0.227669, -0.125309, --0.322931, -0.310949, --0.186364, -0.120661, --0.226098, -0.469060, --0.697856, -0.759462, --0.609557, -0.328266, --0.035996, --0.212303, -0.461043, --0.787717, -1.196071, --1.564078, -1.697893, --1.459321, -0.876267, --0.157359, --0.404336, -0.581793, --0.330740, --0.193025, -0.723691, --1.030640, -1.037334, --0.848152, -0.669321, --0.671172, -0.875203, --1.137567, -1.243088, --1.053393, -0.611652, --0.129073, --0.145591, -0.089639, -0.209565, --0.510718, -0.577454, --0.329005, --0.119410, -0.546108, --0.768427, -0.739234, --0.538499, -0.287672, --0.063885, --0.125640, -0.308076, --0.494132, -0.656961, --0.749212, -0.733413, --0.597700, -0.353323, --0.030567, --0.314165, -0.590842, --0.693641, -0.554582, --0.205146, --0.207005, -0.479864, --0.472690, -0.198239, -0.180692, --0.455022, -0.499860, --0.336328, -0.086663, -0.129586, --0.270065, -0.364380, --0.453463, -0.538899, --0.584717, -0.557017, --0.456748, -0.317712, --0.180351, -0.068315, -0.017956, --0.097261, -0.200822, --0.358029, -0.568191, --0.771161, -0.849493, --0.684748, -0.247559, -0.341177, --0.838549, -1.001914, --0.736587, -0.169018, -0.413895, --0.729497, -0.663706, --0.327124, --0.031616, -0.192363, --0.095044, --0.148501, -0.358834, --0.425459, -0.376380, --0.337455, -0.421122, --0.631812, -0.857064, --0.947506, -0.824588, --0.538592, -0.237251, --0.069733, -0.093739, --0.247926, -0.402959, --0.449482, -0.359087, --0.179513, --0.021634, -0.212169, --0.402700, -0.605557, --0.789806, -0.881691, --0.816938, -0.599089, --0.308139, -0.048014, -0.119507, --0.193383, -0.192417, --0.108321, --0.083595, -0.354381, --0.567732, -0.525752, --0.112141, --0.575093, -1.229801, --1.511884, -1.275432, --0.675926, -0.065989, -0.247591, --0.202264, --0.013254, -0.138028, --0.053917, --0.135487, -0.218211, --0.077971, --0.184765, -0.318091, --0.117490, --0.404169, -1.011640, --1.404829, -1.408993, --1.056308, -0.524622, --0.013741, --0.337207, -0.460941, --0.348336, -0.056774, -0.275399, --0.463335, -0.374284, --0.025668, --0.408485, -0.708854, --0.761641, -0.630903, --0.496790, -0.513052, --0.696142, -0.921829, --1.015607, -0.861355, --0.460608, --0.072894, -0.557515, --0.800944, -0.663497, --0.124022, --0.677437, -1.462906, --1.924098, -1.873421, --1.348486, -0.594666, -0.072929, --0.441899, -0.499196, --0.398349, -0.335341, --0.424276, -0.645209, --0.874005, -0.956227, --0.782808, -0.344918, -0.243450, --0.770558, -1.008230, --0.824934, -0.268860, -0.437700, --1.000975, -1.197543, --0.973761, -0.452763, -0.142011, --0.595837, -0.787905, --0.718153, -0.473498, --0.160997, --0.147951, -0.426860, --0.658505, -0.795240, --0.763674, -0.524142, --0.139417, --0.215839, -0.336209, --0.115118, --0.367963, -0.876153, --1.153650, -1.086434, --0.774528, -0.461999, --0.370633, -0.552814, --0.867331, -1.092848, --1.091928, -0.901970, --0.687472, -0.599176, --0.658177, -0.757641, --0.770842, -0.664159, --0.515874, -0.433196, --0.452414, -0.516289, --0.543211, -0.515085, --0.496501, -0.566754, --0.727699, -0.873459, --0.855049, -0.595837, --0.170486, --0.217804, -0.358738, --0.180687, --0.181468, -0.458047, --0.424195, -0.068469, -0.378987, --0.597092, -0.407037, -0.084337, --0.547870, -0.666492, --0.370171, --0.106404, -0.389413, --0.233539, --0.305680, -0.917201, --1.255916, -1.171530, --0.780427, -0.342334, --0.052118, --0.087774, -0.223386, --0.484454, -0.842832, --1.110016, -1.072149, --0.652988, --0.017116, -0.667163, --1.029576, -0.967299, --0.522157, --0.118252, -0.702604, --1.011699, -0.940347, --0.538991, --0.007210, -0.462405, --0.651900, -0.543813, --0.254672, --0.023605, -0.131803, --0.025387, --0.212887, -0.430976, --0.499190, -0.381920, --0.150356, --0.068767, -0.174770, --0.153945, -0.081072, --0.061100, -0.149967, --0.308684, -0.424604, --0.389580, -0.184716, -0.088943, --0.262504, -0.207867, -0.069099, --0.421233, -0.652112, --0.645158, -0.432892, --0.152763, --0.071646, -0.221456, --0.367238, -0.566232, --0.772239, -0.849821, --0.690446, -0.331819, -0.028366, --0.149422, --0.086788, -0.583659, --1.079368, -1.302971, --1.132772, -0.657980, --0.115279, --0.249821, -0.309656, --0.100976, --0.221341, -0.482550, --0.575073, -0.488782, --0.281004, -0.020350, -0.251320, --0.517433, -0.760407, --0.945169, -1.032813, --1.010915, -0.906656, --0.764100, -0.605846, --0.420517, -0.194064, -0.045084, --0.219336, -0.252854, --0.138191, --0.048393, -0.206249, --0.293273, -0.350697, --0.439425, -0.545703, --0.553562, -0.327163, -0.156435, --0.740044, -1.156702, --1.197290, -0.850936, --0.311006, --0.156236, -0.377467, --0.350715, -0.193856, --0.028099, --0.096588, -0.181536, --0.208127, -0.105022, -0.200381, --0.689794, -1.211790, --1.541504, -1.505950, --1.083889, -0.412133, -0.294903, --0.847642, -1.144008, --1.176150, -1.005223, --0.731893, -0.470169, --0.317986, -0.323834, --0.462855, -0.639957, --0.727109, -0.625156, --0.324332, --0.070525, -0.377345, --0.433590, -0.203670, -0.178161, --0.477096, -0.511219, --0.286975, -0.011689, -0.041612, -0.269301, --0.837625, -1.357735, --1.514820, -1.186513, --0.523230, --0.139920, -0.474419, --0.331172, --0.198945, -0.851565, --1.327337, -1.426539, --1.123383, -0.559070, -0.035815, --0.452256, -0.594112, --0.501994, -0.298974, --0.097796, --0.063406, -0.212920, --0.379977, -0.535447, --0.596872, -0.499020, --0.269847, -0.040796, -0.029709, -0.132561, --0.455860, -0.760786, --0.873671, -0.735851, --0.434466, -0.138678, -0.010056, -0.020497, --0.148550, -0.244358, --0.216984, -0.064415, -0.138752, --0.297529, -0.352712, --0.303135, -0.192654, --0.084015, -0.039331, --0.106609, -0.301346, --0.583924, -0.853383, --0.980133, -0.873155, --0.543566, -0.116093, -0.230660, --0.364893, -0.279042, --0.090020, --0.041731, -0.022200, -0.113411, --0.231181, -0.203390, --0.013322, --0.218638, -0.312049, --0.154213, --0.214168, -0.619532, --0.868193, -0.869039, --0.678200, -0.440024, --0.275698, -0.204761, --0.151718, -0.022326, -0.212914, --0.486907, -0.670999, --0.647984, -0.378210, -0.073128, --0.554758, -0.883664, --0.915368, -0.607285, --0.049706, --0.556233, -0.976026, --1.048088, -0.766040, --0.285453, --0.159916, -0.389681, --0.375062, -0.237832, --0.150932, -0.211855, --0.378517, -0.507037, --0.454125, -0.166253, -0.298121, --0.808154, -1.218886, --1.413154, -1.324777, --0.957693, -0.401827, -0.175027, --0.578780, -0.671559, --0.439348, --0.003115, -0.478955, --0.844233, -1.047384, --1.117884, -1.106830, --1.037155, -0.903690, --0.709936, -0.493724, --0.310007, -0.188184, --0.111522, -0.044144, -0.018483, --0.027429, --0.085237, -0.338915, --0.659447, -0.897968, --0.907112, -0.626757, --0.124347, --0.434683, -0.867021, --1.054213, -0.982872, --0.728531, -0.403678, --0.106628, --0.101990, -0.192715, --0.148657, --0.041615, -0.368365, --0.773080, -1.137928, --1.318896, -1.219992, --0.865716, -0.413081, --0.077235, -0.008391, --0.201446, -0.503815, --0.717989, -0.728430, --0.567896, -0.384123, --0.334441, -0.478219, --0.732462, -0.916151, --0.857967, -0.505336, -0.032581, --0.541074, -0.826392, --0.831995, -0.663199, --0.499553, -0.459401, --0.521370, -0.565225, --0.496954, -0.348527, --0.261135, -0.359138, --0.621842, -0.869763, --0.889551, -0.601187, --0.128874, --0.287357, -0.470473, --0.429804, -0.329151, --0.329753, -0.441869, --0.510313, -0.345562, -0.108625, --0.708046, -1.194485, --1.364840, -1.191392, --0.809725, -0.400495, --0.068626, --0.191534, -0.439589, --0.709134, -0.975191, --1.182596, -1.293193, --1.305359, -1.238063, --1.108362, -0.929644, --0.728734, -0.556948, --0.474500, -0.512611, --0.638506, -0.751644, --0.722829, -0.463260, -0.011610, --0.563413, -0.978625, --1.068048, -0.770186, --0.201500, --0.381369, -0.698404, --0.589018, -0.106035, -0.497962, --0.896725, -0.866601, --0.411212, --0.244642, -0.791949, --1.018682, -0.916035, --0.642741, -0.382504, --0.206759, -0.046756, -0.210962, --0.590708, -0.970789, --1.153179, -1.005914, --0.566572, -0.028911, -0.374171, --0.504859, -0.383470, --0.151125, --0.029064, -0.064339, -0.030596, --0.158861, -0.202313, --0.082620, --0.202470, -0.576449, --0.912360, -1.082560, --1.012504, -0.713611, --0.273607, --0.194606, -0.613214, --0.963296, -1.251564, --1.449140, -1.465014, --1.196479, -0.633436, -0.067070, --0.617759, -0.755522, --0.420580, --0.173920, -0.654565, --0.723923, -0.358044, -0.182706, --0.543652, -0.526965, --0.216315, --0.112162, -0.211830, --0.042220, --0.228037, -0.374928, --0.294272, -0.064513, -0.134537, --0.168136, -0.043269, -0.106520, --0.125058, --0.053620, -0.358753, --0.627436, -0.705110, --0.534550, -0.179335, -0.225362, --0.553601, -0.744509, --0.803403, -0.763128, --0.646294, -0.458024, --0.206383, --0.076196, -0.332316, --0.500725, -0.541611, --0.449955, -0.252913, -0.000539, --0.249001, -0.425951, --0.472154, -0.359340, --0.119037, --0.144027, -0.277893, --0.152050, --0.262224, -0.851565, --1.397524, -1.679765, --1.587225, -1.169032, --0.596025, -0.062996, -0.302914, --0.475862, -0.502990, --0.452507, -0.380513, --0.328624, -0.333112, --0.423212, -0.606856, --0.860885, -1.137269, --1.377149, -1.517777, --1.493668, -1.250712, --0.783500, -0.173352, -0.416050, --0.806884, -0.904912, --0.755659, -0.507776, --0.303227, -0.175024, --0.033402, --0.245405, -0.693719, --1.187788, -1.499229, --1.434214, -0.967716, --0.280247, --0.332588, -0.624977, --0.537921, -0.222229, -0.067557, --0.140887, --0.008087, -0.205468, --0.224639, --0.050796, -0.538064, --0.998788, -1.183824, --0.983161, -0.488815, -0.059095, --0.401097, -0.385330, --0.032032, --0.484401, -0.918032, --1.061744, -0.841562, --0.354926, --0.170090, -0.483179, --0.437738, -0.066939, -0.435145, --0.817379, -0.900564, --0.658839, -0.214518, -0.239116, --0.535760, -0.601533, --0.462622, -0.204181, -0.087355, --0.363027, -0.611103, --0.824392, -0.967758, --0.981090, -0.826037, --0.542323, -0.258265, --0.127087, -0.222188, --0.469111, -0.677183, --0.661271, -0.371620, -0.063249, --0.415048, -0.501941, --0.301358, --0.044313, -0.324972, --0.390605, -0.226015, -0.063753, --0.330197, -0.459827, --0.409320, -0.194600, -0.135931, --0.514927, -0.853103, --1.042258, -0.986568, --0.657792, -0.138195, -0.391628, --0.731434, -0.766988, --0.533075, -0.185870, -0.099408, --0.232317, -0.237208, --0.193253, -0.141616, --0.043698, --0.170903, -0.506885, --0.845020, -0.986911, --0.785413, -0.268939, -0.340310, --0.744265, -0.752607, --0.405597, --0.056450, -0.361397, --0.391407, -0.247941, --0.145242, -0.217328, --0.397800, -0.478017, --0.302503, --0.061250, -0.333702, --0.227494, --0.305161, -0.982553, --1.351145, -1.092384, --0.260125, --0.728289, -1.349944, --1.308187, -0.711337, -0.018892, --0.436585, -0.353436, -0.074052, --0.491238, -0.600997, --0.343749, --0.105270, -0.486269, --0.624480, -0.507043, --0.246557, --0.009508, -0.152463, --0.141687, -0.004222, -0.176483, --0.284838, -0.221097, -0.037495, --0.401243, -0.695799, --0.751448, -0.504492, --0.045145, --0.421328, -0.678671, --0.608388, -0.245091, -0.245109, --0.645018, -0.783783, --0.608528, -0.203617, -0.249187, --0.553479, -0.589549, --0.371199, -0.037174, -0.222313, --0.267778, -0.086478, -0.199847, --0.400059, -0.357924, --0.041460, --0.428118, -0.825798, --0.931903, -0.651381, --0.081789, --0.514891, -0.835762, --0.698613, -0.151748, -0.539268, --1.030011, -1.083686, --0.693439, -0.068099, -0.502510, --0.809629, -0.814881, --0.627073, -0.406613, --0.274006, -0.274036, --0.393952, -0.597113, --0.838769, -1.060305, --1.182999, -1.124105, --0.837899, -0.360202, -0.178445, --0.594446, -0.737210, --0.572161, -0.203111, -0.188906, --0.454328, -0.556018, --0.564611, -0.575540, --0.617252, -0.627076, --0.515797, -0.267365, -0.012317, --0.146073, -0.005605, -0.386081, --0.847875, -1.138581, --1.094324, -0.715211, --0.151298, --0.391717, -0.758345, --0.896978, -0.843657, --0.667911, -0.429739, --0.173264, --0.056604, -0.209280, --0.253535, -0.213042, --0.170773, -0.219298, --0.382963, -0.573442, --0.626679, -0.410706, -0.066620, --0.631988, -1.033621, --1.090774, -0.806214, --0.362663, -0.005190, -0.108061, -0.016744, --0.249084, -0.448096, --0.556012, -0.603652, --0.638700, -0.649367, --0.554218, -0.268296, -0.208120, --0.749293, -1.146667, --1.210562, -0.870824, --0.221170, --0.511815, -1.056967, --1.204428, -0.888326, --0.215131, --0.576861, -1.216305, --1.515339, -1.445691, --1.131893, -0.766630, --0.503973, -0.396918, --0.408059, -0.467290, --0.523883, -0.560286, --0.573880, -0.555130, --0.482660, -0.334018, --0.100204, --0.204754, -0.541167, --0.847618, -1.051939, --1.088032, -0.915207, --0.536624, -0.012394, -0.540505, --0.973600, -1.161697, --1.068471, -0.782558, --0.487599, -0.367566, --0.496370, -0.783553, --1.019171, -0.998576, --0.652735, -0.101288, -0.407886, --0.638315, -0.499857, --0.098016, --0.330114, -0.553017, --0.473337, -0.174022, -0.140906, --0.272427, -0.144601, -0.152866, --0.419996, -0.465806, --0.221640, --0.217744, -0.649161, --0.879170, -0.832794, --0.586017, -0.305054, --0.138320, -0.137903, --0.260111, -0.429489, --0.601101, -0.766228, --0.907478, -0.962620, --0.849338, -0.540419, --0.120586, --0.238203, -0.376618, --0.248208, --0.057829, -0.384030, --0.602663, -0.669795, --0.609369, -0.462536, --0.255501, -0.007253, -0.244957, --0.437363, -0.502501, --0.407397, -0.179533, -0.097421, --0.317295, -0.398459, --0.320922, -0.134715, -0.065286, --0.183460, -0.162227, -0.002755, --0.269907, -0.568420, --0.813698, -0.923990, --0.846009, -0.586041, --0.226069, --0.097730, -0.255180, --0.190100, --0.048625, -0.337049, --0.549160, -0.623720, --0.583123, -0.499783, --0.443890, -0.450885, --0.521642, -0.637025, --0.763587, -0.848098, --0.822159, -0.635803, --0.309146, --0.040030, -0.233057, --0.130157, --0.263798, -0.766186, --1.097865, -1.041614, --0.578536, --0.092048, -0.667038, --0.912894, -0.782573, --0.406736, --0.016760, -0.343875, --0.534017, -0.616271, --0.625028, -0.566823, --0.434406, -0.236645, --0.005774, --0.223583, -0.435545, --0.628053, -0.787404, --0.873030, -0.837154, --0.668346, -0.421090, --0.197887, -0.088291, --0.106103, -0.173712, --0.171628, -0.023649, -0.241081, --0.496799, -0.601524, --0.498331, -0.265904, --0.076203, -0.081212, --0.305260, -0.622092, --0.836928, -0.815561, --0.565571, -0.212830, -0.099904, --0.305477, -0.424821, --0.503586, -0.543032, --0.493327, -0.312422, --0.029170, --0.253909, -0.425778, --0.445169, -0.366043, --0.292519, -0.303570, --0.405475, -0.537772, --0.612579, -0.552543, --0.313581, --0.096280, -0.593590, --1.013139, -1.155152, --0.891634, -0.276594, -0.429551, --0.871546, -0.799195, --0.228864, --0.550361, -1.139949, --1.259209, -0.887587, --0.238252, --0.399177, -0.825784, --1.002046, -0.998967, --0.900781, -0.748390, --0.558594, -0.377995, --0.299552, -0.407412, --0.688315, -0.991253, --1.091284, -0.833896, --0.263363, --0.366571, -0.725941, --0.608409, -0.065389, -0.617634, --1.087141, -1.119160, --0.724039, -0.107304, -0.467260, --0.814345, -0.887578, --0.751683, -0.507428, --0.224360, --0.084999, -0.445261, --0.871444, -1.324693, --1.701386, -1.871728, --1.754521, -1.382559, --0.907535, -0.527817, --0.379569, -0.463892, --0.658961, -0.802697, --0.783389, -0.582100, --0.259626, --0.079740, -0.318371, --0.350616, -0.119522, -0.339386, --0.882210, -1.302969, --1.433400, -1.238325, --0.838445, -0.437974, --0.202763, -0.172215, --0.262163, -0.346810, --0.349925, -0.276365, --0.172302, -0.064094, -0.062326, --0.226116, -0.402581, --0.516867, -0.494689, --0.328015, -0.096431, -0.078831, --0.115122, -0.021974, -0.110855, --0.179466, -0.135363, --0.007931, --0.133332, -0.244121, --0.343466, -0.489375, --0.706863, -0.927695, --1.002025, -0.792784, --0.294138, --0.317384, -0.753752, --0.776719, -0.346032, -0.347380, --0.987888, -1.309025, --1.220606, -0.816607, --0.279922, --0.232638, -0.644437, --0.933376, -1.074226, --1.016620, -0.726674, --0.256154, --0.231392, -0.523263, --0.485024, -0.166769, -0.199127, --0.327950, -0.065199, -0.500921, --1.079818, -1.349988, --1.147206, -0.546535, -0.203763, --0.833229, -1.175205, --1.199370, -0.966331, --0.570334, -0.115702, -0.282600, --0.515079, -0.526071, --0.361456, -0.163722, --0.096205, -0.237464, --0.519201, -0.757790, --0.767539, -0.485426, --0.024340, --0.385392, -0.533090, --0.356360, --0.023228, -0.378606, --0.514989, -0.375423, --0.053727, --0.277902, -0.467659, --0.448930, -0.247423, -0.054352, --0.364383, -0.616230, --0.781834, -0.863710, --0.876252, -0.829378, --0.725026, -0.566939, --0.374433, -0.187353, --0.054783, -0.010525, --0.047083, -0.106242, --0.099479, --0.044675, -0.331917, --0.687329, -0.991533, --1.146211, -1.121410, --0.951079, -0.688795, --0.370660, -0.022739, -0.298732, --0.484979, -0.412029, --0.025717, --0.586383, -1.197955, --1.534476, -1.405234, --0.804205, --0.073676, -0.909734, --1.396385, -1.368902, --0.873769, -0.139436, -0.536165, --0.923105, -0.948463, --0.694917, -0.324662, -0.012461, --0.231358, -0.311393, --0.271439, -0.154261, --0.026182, --0.030140, --0.050867, -0.271247, --0.549780, -0.758550, --0.801487, -0.679937, --0.492114, -0.360786, --0.340614, -0.376234, --0.345365, -0.156089, -0.175395, --0.526085, -0.746014, --0.757486, -0.601745, --0.402670, -0.277968, --0.263484, -0.301701, --0.296523, -0.190240, --0.006580, --0.168554, -0.250464, --0.213416, -0.100467, -0.017041, --0.091929, -0.121262, --0.123355, -0.104211, --0.052375, --0.032531, -0.114615, --0.137854, -0.078481, -0.016933, --0.054313, --0.031775, -0.211912, --0.367188, -0.369185, --0.172546, --0.152892, -0.471352, --0.666609, -0.696771, --0.588592, -0.396596, --0.172540, --0.035990, -0.179554, --0.221855, -0.171626, --0.094813, -0.076978, --0.155044, -0.278200, --0.344632, -0.294038, --0.175766, -0.119606, --0.217521, -0.413761, --0.513660, -0.331336, -0.129416, --0.618277, -0.782015, --0.422994, --0.322400, -1.038285, --1.296730, -0.949491, --0.228698, --0.418348, -0.637454, --0.393484, --0.041260, -0.309253, --0.222620, --0.135242, -0.514244, --0.701555, -0.656365, --0.485700, -0.312466, --0.168700, -0.004979, -0.209960, --0.408169, -0.445145, --0.213165, --0.250790, -0.754434, --1.051095, -0.983295, --0.574670, -0.015771, -0.442001, --0.618745, -0.489891, --0.179054, --0.128819, -0.296989, --0.301626, -0.217189, --0.142695, -0.128041, --0.153050, -0.166353, --0.144201, -0.116841, --0.142278, -0.251743, --0.413927, -0.546707, --0.567079, -0.443831, --0.220583, --0.000706, -0.105394, --0.021903, --0.234577, -0.553744, --0.772347, -0.755972, --0.477638, -0.039879, -0.380779, --0.634035, -0.671830, --0.550528, -0.365629, --0.176403, --0.020247, -0.252096, --0.509404, -0.718373, --0.781434, -0.659488, --0.430532, -0.265871, --0.322588, -0.620090, --0.995775, -1.190036, --1.016975, -0.504048, -0.106694, --0.507255, -0.522086, --0.216658, --0.156947, -0.331464, --0.188804, --0.187048, -0.583901, --0.794828, -0.725351, --0.426833, -0.058477, -0.192541, --0.198105, --0.050633, -0.438004, --0.781029, -0.922029, --0.805808, -0.499226, --0.149047, --0.090841, -0.123968, -0.055487, --0.365400, -0.671622, --0.848092, -0.837759, --0.678712, -0.471889, --0.306228, -0.197047, --0.090308, --0.066901, -0.250688, --0.353361, -0.263812, -0.025505, --0.378171, -0.585594, --0.506033, -0.167082, -0.247160, --0.515946, -0.521689, --0.312297, -0.051165, -0.099531, --0.078436, --0.051824, -0.158045, --0.121512, --0.095350, -0.427551, --0.732957, -0.853043, --0.689150, -0.263397, -0.271702, --0.692497, -0.808860, --0.557249, -0.029186, -0.576679, --1.044952, -1.228019, --1.094106, -0.731395, --0.310475, -0.011268, -0.065293, -0.042387, --0.170757, -0.127965, -0.177557, --0.662591, -1.106919, --1.285846, -1.110478, --0.680212, -0.212000, -0.102916, --0.214188, -0.221061, --0.274558, -0.450945, --0.693186, -0.862077, --0.851290, -0.669878, --0.425137, -0.225285, --0.091809, --0.037833, -0.219857, --0.412205, -0.474962, --0.276953, --0.174090, -0.689308, --0.990186, -0.875057, --0.345815, --0.388707, -1.027502, --1.332329, -1.232334, --0.831607, -0.333052, -0.069228, --0.271143, -0.278247, --0.165416, -0.011324, -0.145187, --0.299349, -0.438609, --0.510352, -0.440212, --0.197495, --0.144480, -0.416184, --0.445130, -0.180778, -0.241781, --0.560143, -0.541116, --0.135455, --0.474887, -0.973356, --1.091197, -0.763155, --0.163495, --0.397687, -0.656365, --0.548394, -0.242078, --0.025026, -0.111718, --0.495762, -0.948853, --1.171646, -0.993155, --0.480320, --0.113760, -0.515979, --0.590216, -0.382785, --0.046437, --0.280262, -0.545029, --0.766532, -0.966822, --1.120063, -1.161694, --1.046103, -0.800992, --0.530795, -0.361757, --0.364684, -0.506671, --0.664540, -0.694428, --0.517722, -0.171879, -0.207417, --0.465537, -0.522288, --0.418011, -0.280359, --0.233782, -0.316061, --0.460348, -0.551238, --0.508665, -0.337422, --0.114024, --0.066028, -0.134666, --0.065546, --0.131349, -0.408753, --0.671929, -0.787032, --0.635287, -0.197026, -0.393917, --0.883906, -1.022471, --0.706082, -0.050314, -0.658868, --1.107068, -1.104076, --0.665577, --0.010745, -0.652088, --1.040380, -1.100806, --0.908796, -0.619049, --0.363739, -0.185224, --0.044644, --0.107066, -0.256437, --0.315322, -0.182701, -0.166220, --0.634127, -1.038309, --1.208476, -1.081842, --0.735675, -0.341004, --0.069890, -0.010849, --0.135742, -0.329360, --0.461555, -0.464303, --0.373545, -0.308389, --0.389681, -0.639015, --0.927620, -1.028852, --0.762437, -0.140865, -0.595668, --1.102082, -1.137463, --0.713578, -0.075560, -0.466917, --0.727333, -0.715235, --0.562867, -0.390334, --0.226460, -0.035972, -0.194783, --0.402655, -0.472631, --0.317953, --0.053429, -0.536771, --0.989984, -1.308605, --1.465195, -1.493426, --1.437045, -1.306417, --1.076551, -0.726301, --0.284940, --0.155753, -0.478857, --0.604460, -0.532163, --0.335660, -0.117785, -0.040739, --0.110267, -0.110840, --0.090077, -0.091785, --0.125733, -0.152605, --0.101117, --0.078731, -0.353445, --0.585233, -0.589927, --0.255666, --0.353782, -0.995089, --1.364783, -1.274377, --0.764466, -0.078945, -0.481337, --0.721813, -0.628807, --0.325038, --0.036555, -0.352446, --0.576232, -0.678605, --0.619276, -0.366824, -0.050721, --0.516688, -0.856849, --0.923454, -0.682429, --0.245460, --0.180164, -0.401880, --0.350417, -0.119879, -0.091458, --0.109616, --0.096415, -0.385127, --0.527954, -0.359194, -0.106369, --0.665914, -1.038711, --1.026619, -0.626968, --0.030573, --0.491414, -0.740429, --0.688801, -0.465642, --0.248019, -0.138356, --0.114879, -0.083543, -0.017930, --0.150186, -0.191641, --0.031940, --0.330459, -0.756610, --1.027135, -0.963869, --0.546883, --0.043041, -0.494588, --0.528515, -0.069555, -0.681460, --1.340385, -1.559492, --1.241243, -0.600678, --0.026314, --0.171698, --0.045051, -0.438755, --0.675857, -0.560477, --0.158125, --0.267671, -0.450039, --0.303105, --0.028923, -0.282348, --0.259264, --0.043642, -0.447318, --0.725044, -0.755489, --0.584404, -0.361352, --0.215522, -0.174869, --0.186012, -0.200685, --0.240027, -0.375959, --0.649498, -1.004344, --1.299937, -1.397777, --1.253481, -0.943941, --0.613243, -0.381354, --0.282532, -0.271814, --0.284753, -0.298187, --0.341159, -0.445935, --0.581260, -0.631898, --0.459696, -0.013380, -0.596070, --1.126748, -1.338117, --1.137514, -0.636452, --0.078601, --0.305611, -0.416595, --0.309337, -0.131063, --0.029408, -0.083680, --0.278377, -0.516110, --0.664376, -0.625243, --0.396885, -0.081473, -0.181428, --0.317712, -0.376827, --0.486964, -0.733213, --1.056967, -1.268556, --1.175688, -0.733800, --0.102251, --0.438952, -0.653706, --0.482705, -0.063342, -0.362261, --0.580896, -0.502811, --0.178006, --0.251630, -0.623198, --0.813441, -0.776987, --0.560939, -0.290481, --0.119356, -0.154954, --0.394015, -0.712669, --0.928371, -0.903005, --0.624209, -0.212627, -0.149178, --0.319500, -0.267431, --0.071258, --0.144320, -0.282986, --0.314827, -0.263113, --0.166857, -0.059806, -0.019281, --0.009655, --0.155811, -0.492874, --0.905952, -1.189767, --1.122790, -0.612847, -0.199963, --0.968933, -1.305603, --1.000162, -0.164308, -0.802742, --1.422321, -1.405494, --0.822746, -0.063748, -0.397058, --0.288966, --0.293601, -0.960757, --1.281947, -1.057905, --0.431050, --0.232579, -0.600329, --0.587510, -0.384817, --0.291110, -0.482508, --0.887297, -1.251278, --1.333730, -1.082295, --0.661241, -0.325574, --0.244929, -0.404092, --0.634759, -0.734286, --0.581510, -0.186106, -0.331831, --0.798199, -1.046797, --0.976503, -0.597208, --0.043921, --0.466756, -0.736772, --0.695415, -0.444632, --0.198848, -0.147814, --0.329878, -0.601837, --0.728960, -0.539042, --0.043263, --0.552838, -0.957195, --0.955285, -0.533260, -0.114106, --0.695439, -0.984374, --0.929441, -0.648782, --0.327744, -0.100394, -0.005630, --0.042175, -0.076575, --0.147838, -0.262023, --0.402518, -0.527775, --0.564316, -0.427667, --0.084241, --0.384248, -0.780847, --0.890412, -0.626259, --0.119612, --0.332999, -0.449705, --0.152282, --0.377005, -0.820243, --0.941834, -0.735153, --0.390814, -0.125330, --0.020586, -0.004649, -0.028387, --0.085482, -0.059532, -0.152938, --0.512811, -0.813745, --0.808625, -0.392647, -0.302723, --0.980375, -1.358298, --1.324401, -0.960489, --0.441992, --0.084528, -0.545983, --0.897401, -1.065184, --0.961723, -0.572330, --0.027082, --0.433777, -0.602445, --0.451928, -0.166703, --0.017243, -0.164351, --0.538830, -0.888290, --0.957699, -0.670445, --0.178891, --0.248039, -0.412336, --0.311545, -0.115666, --0.023476, -0.111456, --0.284454, -0.355543, --0.186621, --0.214705, -0.703873, --1.094166, -1.262136, --1.195499, -0.969085, --0.685541, -0.428815, --0.250320, -0.175224, --0.206311, -0.318457, --0.455630, -0.545164, --0.528667, -0.392107, --0.173898, --0.056079, -0.233312, --0.326323, -0.337401, --0.279884, -0.155229, -0.045656, --0.313021, -0.584598, --0.742950, -0.663184, --0.293989, --0.276952, -0.826719, --1.091048, -0.912000, --0.354846, --0.292566, -0.663005, --0.524354, --0.069745, -0.802104, --1.281968, -1.277894, --0.835703, -0.211501, -0.312893, --0.588482, -0.630691, --0.537709, -0.391914, --0.226475, -0.058352, -0.073609, --0.116903, -0.051146, -0.080806, --0.193188, -0.213904, --0.128364, --0.023534, -0.187271, --0.330087, -0.444382, --0.523370, -0.540475, --0.457883, -0.260138, -0.015608, --0.282095, -0.442093, --0.442972, -0.309095, --0.127599, --0.006144, -0.047809, --0.025171, -0.002414, --0.013570, -0.021131, -0.057004, --0.263833, -0.530577, --0.688479, -0.577335, --0.179643, --0.327148, -0.657590, --0.596591, -0.145447, -0.471686, --0.948591, -1.085776, --0.897738, -0.574506, --0.339970, -0.313113, --0.460575, -0.651948, --0.760037, -0.733332, --0.604397, -0.448227, --0.331294, -0.283394, --0.298065, -0.346789, --0.392045, -0.397279, --0.341368, -0.237772, --0.141927, -0.126857, --0.229518, -0.403988, --0.526810, -0.467346, --0.181622, --0.238368, -0.601471, --0.720546, -0.516664, --0.061502, --0.461415, -0.848614, --0.970166, -0.820764, --0.507824, -0.186349, -0.025000, --0.101114, -0.108799, --0.148647, -0.279314, --0.475686, -0.649203, --0.714001, -0.648556, --0.506680, -0.370472, --0.285240, -0.230275, --0.149073, -0.010710, -0.154180, --0.275508, -0.303674, --0.252200, -0.186092, --0.170317, -0.226710, --0.333130, -0.454730, --0.570062, -0.669550, --0.739314, -0.758631, --0.720284, -0.651939, --0.607598, -0.623499, --0.669503, -0.642246, --0.423256, --0.024070, -0.583716, --1.005694, -1.025350, --0.523534, --0.371885, -1.319048, --1.924214, -1.943498, --1.405109, -0.580157, -0.174926, --0.604880, -0.662043, --0.484502, -0.280724, --0.203025, -0.281003, --0.435524, -0.547309, --0.534935, -0.402354, --0.233263, -0.134936, --0.163442, -0.281179, --0.382779, -0.375313, --0.249866, -0.083364, -0.033225, --0.076262, -0.103880, --0.186038, -0.313027, --0.373083, -0.235039, -0.122384, --0.545628, -0.778999, --0.641445, -0.180155, -0.327649, --0.549771, -0.338620, -0.142473, --0.514289, -0.445744, -0.100062, --0.822764, -1.284665, --1.212830, -0.684104, --0.061837, --0.262818, -0.132566, -0.293950, --0.679276, -0.745388, --0.440376, --0.063877, -0.510092, --0.715506, -0.652058, --0.421963, -0.172986, --0.018814, -0.003981, --0.113456, -0.301653, --0.514486, -0.695856, --0.790659, -0.760422, --0.610886, -0.405323, --0.236839, -0.164533, --0.160187, -0.118017, -0.064935, --0.393961, -0.747052, --0.946120, -0.885447, --0.622605, -0.358282, --0.309858, -0.561181, --0.992419, -1.342496, --1.368530, -1.000198, --0.388865, --0.180889, -0.460482, --0.379297, -0.071935, -0.222022, --0.316648, -0.192397, -0.009292, --0.101840, --0.003914, -0.232568, --0.399025, -0.340539, --0.025601, --0.436457, -0.877152, --1.166335, -1.254292, --1.151540, -0.894600, --0.540171, -0.178069, -0.079814, --0.153311, -0.053906, -0.108739, --0.193842, -0.124869, -0.059360, --0.235273, -0.280655, --0.152898, --0.089711, -0.328895, --0.457380, -0.435962, --0.305480, -0.149058, --0.031021, --0.042863, -0.111895, --0.203920, -0.287317, --0.281285, -0.123859, -0.159893, --0.455159, -0.631010, --0.633281, -0.519806, --0.410130, -0.392641, --0.463937, -0.542675, --0.539015, -0.423420, --0.247251, -0.107963, --0.087103, -0.199606, --0.381005, -0.516974, --0.500117, -0.286645, -0.074414, --0.455687, -0.705972, --0.722749, -0.508876, --0.182164, --0.075408, -0.110743, -0.113452, --0.491476, -0.830615, --0.960489, -0.828457, --0.521776, -0.207541, --0.035158, -0.063184, --0.245840, -0.471197, --0.618459, -0.606034, --0.420574, -0.125851, -0.152831, --0.274490, -0.150140, -0.199653, --0.638300, -0.974965, --1.065804, -0.892227, --0.563526, -0.242204, --0.045090, --0.011599, --0.008797, -0.034734, --0.047889, -0.087953, --0.202053, -0.382844, --0.547765, -0.581367, --0.416583, -0.098603, -0.219609, --0.360109, -0.236408, -0.073498, --0.356103, -0.387875, --0.082170, --0.440138, -0.908808, --1.058531, -0.783401, --0.197604, --0.429351, -0.817978, --0.819581, -0.479262, -0.003748, --0.391058, -0.533558, --0.446987, -0.292895, --0.271786, -0.486129, --0.857385, -1.156815, --1.141999, -0.717545, --0.013953, --0.672468, -1.043590, --0.962417, -0.514646, -0.058010, --0.498018, -0.656237, --0.539432, -0.275151, --0.028305, --0.085950, -0.054874, -0.036358, --0.066392, --0.036175, -0.236978, --0.412059, -0.428842, --0.235151, --0.106892, -0.462941, --0.709134, -0.797508, --0.768147, -0.712043, --0.713718, -0.803156, --0.937369, -1.021889, --0.967988, -0.758726, --0.479930, -0.283736, --0.295795, -0.523984, --0.835589, -1.027746, --0.950698, -0.602967, --0.134684, --0.244980, -0.396045, --0.329428, -0.191450, --0.164037, -0.346104, --0.689019, -1.021374, --1.143093, -0.933289, --0.416270, --0.243019, -0.810297, --1.089188, -1.017204, --0.700169, -0.356315, --0.189636, -0.262999, --0.455988, -0.545283, --0.361582, --0.082445, -0.583877, --0.869671, -0.765793, --0.304556, --0.296448, -0.766073, --0.937214, -0.832415, --0.625499, -0.503818, --0.522747, -0.555613, --0.385312, --0.115872, -0.845803, --1.486157, -1.683488, --1.286531, -0.473796, -0.329449, --0.701733, -0.480174, -0.150950, --0.792608, -1.086420, --0.917749, -0.442501, -0.053054, --0.340685, -0.359820, --0.201339, -0.012627, -0.094908, --0.085944, --0.007437, -0.114045, --0.153954, -0.071962, -0.126264, --0.355349, -0.477614, --0.380335, -0.061070, -0.343314, --0.620048, -0.604448, --0.282812, --0.198677, -0.625454, --0.844072, -0.845085, --0.750694, -0.720403, --0.835014, -1.030363, --1.125309, -0.937265, --0.420654, --0.263770, -0.811716, --0.948585, -0.605756, -0.025066, --0.608248, -0.877984, --0.801442, -0.576417, --0.468115, -0.605697, --0.887208, -1.060078, --0.915964, -0.454825, -0.103319, --0.467472, -0.473811, --0.186551, --0.166199, -0.360872, --0.315205, -0.098603, -0.164588, --0.394089, -0.568167, --0.663330, -0.606019, --0.308318, --0.231665, -0.861406, --1.320449, -1.390040, --1.040631, -0.463043, -0.046250, --0.265486, -0.167476, -0.096893, --0.324490, -0.395523, --0.327261, -0.226863, --0.196666, -0.265880, --0.385467, -0.471361, --0.455130, -0.313456, --0.073163, --0.198257, -0.412130, --0.490704, -0.406908, --0.210714, -0.017004, -0.049593, -0.075272, --0.354622, -0.665336, --0.859001, -0.830022, --0.554591, -0.089876, -0.452694, --0.940561, -1.250384, --1.297049, -1.061193, --0.604967, -0.060104, -0.417522, --0.711191, -0.791568, --0.720332, -0.606257, --0.541954, -0.562331, --0.645838, -0.745278, --0.815215, -0.815072, --0.698968, -0.421030, -0.029912, --0.588046, -1.103864, --1.399014, -1.363091, --1.031850, -0.586556, --0.259716, -0.198125, --0.372055, -0.596967, --0.660353, -0.469308, --0.115772, --0.185930, -0.242222, --0.001010, --0.429021, -0.860664, --1.142110, -1.225065, --1.156246, -1.017896, --0.866136, -0.702559, --0.487390, -0.181175, -0.208530, --0.603619, -0.876252, --0.911985, -0.680951, --0.268082, --0.165113, -0.466372, --0.568584, -0.505088, --0.360884, -0.203179, --0.044559, --0.140390, -0.367766, --0.607741, -0.785929, --0.819075, -0.660454, --0.328957, --0.092541, -0.488448, --0.756196, -0.844093, --0.760988, -0.554591, --0.275625, --0.045363, -0.394185, --0.750500, -1.069789, --1.285664, -1.331933, --1.171652, -0.820982, --0.358899, --0.086308, -0.378946, --0.435843, -0.273159, --0.004289, --0.220580, -0.301063, --0.243212, -0.146555, --0.127919, -0.233223, --0.398200, -0.488973, --0.399556, -0.139954, -0.154097, --0.308324, -0.238790, --0.024757, --0.140592, -0.094249, -0.166409, --0.473585, -0.613607, --0.491008, -0.203382, -0.032409, --0.046025, --0.153215, -0.372770, --0.364598, --0.003947, -0.647465, --1.292504, -1.623083, --1.458886, -0.865734, --0.133832, --0.370705, -0.404828, -0.012439, --0.606105, -1.002543, --0.951026, -0.476380, -0.135005, --0.509669, -0.413203, -0.112244, --0.778707, -1.224064, --1.216043, -0.772505, --0.138335, --0.358679, -0.489771, --0.244647, --0.176875, -0.494469, --0.518694, -0.256481, -0.114882, --0.383995, -0.453478, --0.396307, -0.382031, --0.529352, -0.795562, --0.988946, -0.902140, --0.473850, --0.141757, -0.656287, --0.827760, -0.613953, --0.190685, --0.172036, -0.281374, --0.122051, --0.167451, -0.403040, --0.461225, -0.322457, --0.048768, --0.268247, -0.553080, --0.770257, -0.925674, --1.047524, -1.153564, --1.222514, -1.193621, --1.003965, -0.643063, --0.183230, --0.243842, -0.512951, --0.566480, -0.425808, --0.150456, --0.211712, -0.632861, --1.065306, -1.400993, --1.490765, -1.235345, --0.687391, -0.074358, -0.301808, --0.238519, --0.233915, -0.854816, --1.276648, -1.259728, --0.796834, -0.098025, -0.542469, --0.905276, -0.935477, --0.723291, -0.410136, --0.095226, --0.197488, -0.484842, --0.764717, -0.984410, --1.062293, -0.946809, --0.670445, -0.357847, --0.172421, -0.221787, --0.475966, -0.758562, --0.836320, -0.566316, --0.006559, --0.595337, -0.942985, --0.874282, -0.462628, -0.033033, --0.332406, -0.297578, -0.008638, --0.392745, -0.662350, --0.724337, -0.596562, --0.353427, -0.066268, -0.217991, --0.464935, -0.643793, --0.742438, -0.787693, --0.834534, -0.915555, --0.989510, -0.944666, --0.674251, -0.176081, -0.403526, --0.828788, -0.908027, --0.614489, -0.112613, -0.329026, --0.482872, -0.277351, -0.181176, --0.681827, -1.026286, --1.121082, -1.001205, --0.784722, -0.594607, --0.494698, -0.471501, --0.464488, -0.419900, --0.331559, -0.243049, --0.213375, -0.273134, --0.402939, -0.544964, --0.632903, -0.616942, --0.475266, -0.220893, -0.089935, --0.359796, -0.482332, --0.402372, -0.165216, -0.093014, --0.224984, -0.172483, --0.010249, --0.108139, -0.067816, -0.114387, --0.294899, -0.304911, --0.073886, --0.314717, -0.671908, --0.817361, -0.680778, --0.331705, --0.067664, -0.349034, --0.415364, -0.277016, --0.037676, --0.160395, -0.206898, --0.076250, --0.164655, -0.398176, --0.522029, -0.501732, --0.382355, -0.259300, --0.228692, -0.342381, --0.583823, -0.870041, --1.079192, -1.098380, --0.877232, -0.462727, -0.009714, --0.375813, -0.526393, --0.465323, -0.300404, --0.168825, -0.147562, --0.211849, -0.268724, --0.234056, -0.090274, -0.116126, --0.322999, -0.495104, --0.621991, -0.682232, --0.621648, -0.381235, -0.040551, --0.546457, -0.965535, --1.136676, -0.992973, --0.588681, -0.056242, -0.466124, --0.883187, -1.146542, --1.235389, -1.149409, --0.922840, -0.634202, --0.381145, -0.224906, --0.148744, -0.076816, -0.049396, --0.198795, -0.254269, --0.106215, --0.233135, -0.594931, --0.745171, -0.547557, --0.078278, --0.399764, -0.594454, --0.369107, --0.171189, -0.747308, --1.078661, -1.044943, --0.736298, -0.371810, --0.152440, -0.146906, --0.274119, -0.375146, --0.316269, -0.061308, -0.315247, --0.667607, -0.846563, --0.770630, -0.473915, --0.103007, --0.151833, -0.168484, -0.015732, --0.203701, -0.150710, -0.269646, --0.957303, -1.620499, --1.943125, -1.776544, --1.224591, -0.564972, --0.067972, --0.157955, -0.192819, --0.204404, -0.310121, --0.503839, -0.686521, --0.758523, -0.695418, --0.555866, -0.427238, --0.357939, -0.325813, --0.260158, -0.095952, -0.178699, --0.510259, -0.803466, --0.961148, -0.919880, --0.674415, -0.292548, -0.085374, --0.280346, -0.152262, -0.304187, --0.908301, -1.348752, --1.345908, -0.835354, --0.044684, --0.613470, -0.784597, --0.396471, --0.293202, -0.864798, --1.005533, -0.692446, --0.172538, --0.225054, -0.296113, --0.049262, --0.353883, -0.726874, --0.952796, -1.002534, --0.905997, -0.723965, --0.535376, -0.421048, --0.428049, -0.532017, --0.633323, -0.606040, --0.376871, --0.017690, -0.438451, --0.717163, -0.754282, --0.579013, -0.329410, --0.159272, -0.130172, --0.165379, -0.107890, -0.148204, --0.545637, -0.865841, --0.864697, -0.458733, -0.175827, --0.682056, -0.745442, --0.312574, --0.353671, -0.833908, --0.823635, -0.330147, -0.338811, --0.780200, -0.747463, --0.281997, --0.344050, -0.808953, --0.915081, -0.658755, --0.189381, --0.282460, -0.565580, --0.535695, -0.161002, -0.483501, --1.222201, -1.823028, --2.079750, -1.900943, --1.358343, -0.660549, --0.057716, --0.275598, -0.315429, --0.179274, -0.041615, --0.028520, -0.155551, --0.340504, -0.471051, --0.477143, -0.363990, --0.196255, -0.054821, -0.003205, -0.035754, --0.141350, -0.250295, --0.285382, -0.184393, -0.065609, --0.406324, -0.720907, --0.885372, -0.832195, --0.584389, -0.236499, -0.101152, --0.353123, -0.493709, --0.530443, -0.483259, --0.378421, -0.250735, --0.135600, -0.046689, -0.042131, --0.186813, -0.430913, --0.756285, -1.065827, --1.221369, -1.122298, --0.776645, -0.312180, -0.088497, --0.291800, -0.287801, --0.185363, -0.133512, --0.224829, -0.443667, --0.684748, -0.818383, --0.755620, -0.479632, --0.042563, --0.452429, -0.869605, --1.065923, -0.938535, --0.490332, --0.127549, -0.649560, --0.820028, -0.546698, -0.024509, --0.586887, -0.868276, --0.810711, -0.598249, --0.506549, -0.685478, --1.042437, -1.315287, --1.274890, -0.897681, --0.377610, --0.022308, -0.156207, --0.078401, --0.026404, --0.004783, -0.201602, --0.464357, -0.661280, --0.729723, -0.703757, --0.659459, -0.635481, --0.598174, -0.476729, --0.234029, --0.088197, -0.387124, --0.565279, -0.593176, --0.520747, -0.432487, --0.385398, -0.378618, --0.373396, -0.339821, --0.287882, -0.260127, --0.298220, -0.413904, --0.583868, -0.764389, --0.910643, -0.991080, --0.995939, -0.938353, --0.843634, -0.729294, --0.591084, -0.412533, --0.195662, --0.014152, -0.138803, --0.115798, --0.048575, -0.264345, --0.398977, -0.351877, --0.117320, --0.201575, -0.437160, --0.440159, -0.162852, -0.299990, --0.742429, -0.946981, --0.804908, -0.383837, -0.108899, --0.452075, -0.543816, --0.449583, -0.333070, --0.325667, -0.434299, --0.552522, -0.556087, --0.401776, -0.154498, -0.069576, --0.190462, -0.213988, --0.213587, -0.268513, --0.408479, -0.597074, --0.752038, -0.781038, --0.617294, -0.252076, -0.241923, --0.714675, -0.988219, --0.939974, -0.572736, --0.018680, --0.533081, -0.937110, --1.148392, -1.199075, --1.127318, -0.929391, --0.583060, -0.121293, -0.318019, --0.530571, -0.367861, -0.137201, --0.743451, -1.117875, --1.038082, -0.547244, -0.057973, --0.417629, -0.354232, -0.004316, --0.323780, -0.318177, -0.031494, --0.463090, -0.634098, --0.381059, --0.159818, -0.653626, --0.801865, -0.535048, --0.037088, --0.392450, -0.525585, --0.321357, --0.081535, -0.461308, --0.626363, -0.486934, --0.068853, --0.514176, -1.104118, --1.541472, -1.703856, --1.539490, -1.088357, --0.476818, --0.122784, -0.556454, --0.746336, -0.710451, --0.535718, -0.324859, --0.150885, -0.039814, -0.021298, --0.066393, -0.133916, --0.251743, -0.421510, --0.607351, -0.740110, --0.743496, -0.575239, --0.262614, --0.091724, -0.346462, --0.391067, -0.212338, -0.086457, --0.336963, -0.405162, --0.275543, -0.059075, -0.085246, --0.060438, --0.107749, -0.302908, --0.413325, -0.412524, --0.362404, -0.342319, --0.368592, -0.375125, --0.273640, -0.042828, -0.231917, --0.410598, -0.407958, --0.271491, -0.154977, --0.196953, -0.398659, --0.607706, -0.632351, --0.398727, -0.018429, -0.296919, --0.407138, -0.356831, --0.331804, -0.493193, --0.829247, -1.150139, --1.232230, -0.993381, --0.557500, -0.158486, -0.037395, --0.048223, -0.042492, --0.184272, -0.481492, --0.757891, -0.771843, --0.392555, --0.299069, -1.057095, --1.622776, -1.863580, --1.802245, -1.538050, --1.150068, -0.673553, --0.156897, --0.279139, -0.464956, --0.291925, --0.179661, -0.717864, --1.044177, -1.002430, --0.646875, -0.186877, -0.164603, --0.321143, -0.340402, --0.330817, -0.334635, --0.284771, -0.066534, -0.369432, --0.934207, -1.425114, --1.633702, -1.466718, --1.005118, -0.466411, --0.091678, -0.019239, --0.213840, -0.491351, --0.626715, -0.483173, --0.086203, --0.399821, -0.772043, --0.898453, -0.769259, --0.470574, -0.113197, -0.227308, --0.522816, -0.761870, --0.911967, -0.912760, --0.711685, -0.318037, -0.167396, --0.578130, -0.758145, --0.647155, -0.323494, -0.025112, --0.192640, -0.062103, -0.328859, --0.804065, -1.143105, --1.201954, -0.986923, --0.635242, -0.320186, --0.150946, -0.135843, --0.220193, -0.348882, --0.492087, -0.620364, --0.671288, -0.560808, --0.245815, --0.212894, -0.651012, --0.881992, -0.809683, --0.491616, -0.103814, -0.171274, --0.256332, -0.212720, --0.174804, -0.234793, --0.363382, -0.426842, --0.292419, --0.051086, -0.447893, --0.649614, -0.472887, -0.060445, --0.702654, -1.109894, --1.051974, -0.566507, -0.053256, --0.440588, -0.390456, -0.013577, --0.470646, -0.679335, --0.540165, -0.196371, -0.107381, --0.226698, -0.214153, --0.237412, -0.397398, --0.609735, -0.658359, --0.380785, --0.171465, -0.737365, --1.019204, -0.886403, --0.449169, --0.048010, -0.414029, --0.622641, -0.767003, --0.917323, -1.020369, --0.932991, -0.557348, -0.043830, --0.652925, -1.021454, --1.015139, -0.677923, --0.185416, --0.258960, -0.509270, --0.507428, -0.274368, -0.106328, --0.504876, -0.778421, --0.829086, -0.661357, --0.393446, -0.200094, --0.216229, -0.463531, --0.845833, -1.207853, --1.411359, -1.385119, --1.137091, -0.743853, --0.330227, -0.036046, -0.034665, -0.132813, --0.442835, -0.727145, --0.830761, -0.697099, --0.397189, -0.081834, -0.112478, --0.141151, -0.061429, -0.027112, --0.063556, -0.065831, --0.102370, -0.223025, --0.408753, -0.580718, --0.657643, -0.611860, --0.480371, -0.329479, --0.208921, -0.131882, --0.087791, -0.064628, --0.055946, -0.050292, --0.022191, --0.055383, -0.179105, --0.290191, -0.287665, --0.089220, --0.290603, -0.703894, --0.920521, -0.756935, --0.206994, --0.520813, -1.102300, --1.280248, -1.012590, --0.486496, --0.009887, -0.269167, --0.278967, -0.199733, --0.231527, -0.466035, --0.822469, -1.103918, --1.128724, -0.843842, --0.347108, --0.186584, -0.611273, --0.870073, -0.977498, --0.960191, -0.821232, --0.561616, -0.229428, -0.064171, --0.193743, -0.101650, -0.154460, --0.430964, -0.582947, --0.539876, -0.322505, --0.005738, --0.327697, -0.605253, --0.758735, -0.728522, --0.498275, -0.137692, -0.197715, --0.339267, -0.218505, -0.061693, --0.269902, -0.195884, -0.190498, --0.695486, -1.022316, --0.979868, -0.622778, --0.209391, -0.004113, --0.077119, -0.262287, --0.308088, -0.098827, -0.235889, --0.415915, -0.236264, -0.256507, --0.779220, -1.009887, --0.817659, -0.351740, -0.073435, --0.205255, -0.020164, -0.287477, --0.473480, -0.431515, --0.258171, -0.157371, --0.270910, -0.569326, --0.877963, -1.004543, --0.866005, -0.528303, --0.146631, --0.139298, -0.282846, --0.338927, -0.409856, --0.568131, -0.803400, --1.022807, -1.102714, --0.960617, -0.605449, --0.138266, --0.295860, -0.576420, --0.658624, -0.581421, --0.432117, -0.292577, --0.200162, -0.144054, --0.090686, -0.013143, -0.097424, --0.239772, -0.411543, --0.603581, -0.784364, --0.896072, -0.877775, --0.705429, -0.416813, --0.095837, --0.177734, -0.375119, --0.522831, -0.658785, --0.778311, -0.820991, --0.717855, -0.462154, --0.138722, --0.124513, -0.250909, --0.275487, -0.312592, --0.450391, -0.661169, --0.809331, -0.757406, --0.482600, -0.102787, -0.213546, --0.379953, -0.455645, --0.585334, -0.863224, --1.231658, -1.499131, --1.468996, -1.085010, --0.486830, --0.065876, -0.346879, --0.288861, -0.001055, -0.320290, --0.516056, -0.537992, --0.436451, -0.292831, --0.158075, -0.037818, -0.081308, --0.200094, -0.300020, --0.362744, -0.393094, --0.421835, -0.483662, --0.587209, -0.700574, --0.764118, -0.721762, --0.549461, -0.263368, -0.092797, --0.467296, -0.811430, --1.078939, -1.223870, --1.209573, -1.029084, --0.722010, -0.368556, --0.056662, --0.158596, -0.272910, --0.313411, -0.299862, --0.222752, -0.059740, -0.185796, --0.463108, -0.691868, --0.803069, -0.765492, --0.580935, -0.268328, -0.132869, --0.540004, -0.823122, --0.854050, -0.594708, --0.158815, --0.216647, -0.294208, -0.018086, --0.594896, -1.150848, --1.397095, -1.201898, --0.656433, -0.007942, -0.491897, --0.721935, -0.725553, --0.634432, -0.550379, --0.477060, -0.345108, --0.098769, --0.232398, -0.532887, --0.669580, -0.576593, --0.297935, --0.037633, -0.290205, --0.383500, -0.336713, --0.238491, -0.185872, --0.229673, -0.357319, --0.511791, -0.622811, --0.630512, -0.502531, --0.251735, --0.053325, -0.309504, --0.439118, -0.453949, --0.462342, -0.590648, --0.865904, -1.157119, --1.243410, -0.977328, --0.423641, --0.143585, -0.402605, --0.199191, --0.336373, -0.857314, --1.011917, -0.660681, -0.038585, --0.726036, -1.051012, --0.870529, -0.322591, -0.260892, --0.545882, -0.383142, -0.112243, --0.629079, -0.835571, --0.563467, --0.098955, -0.852745, --1.343840, -1.341631, --0.845440, -0.068515, -0.683183, --1.164505, -1.294322, --1.161310, -0.943071, --0.794009, -0.766678, --0.803710, -0.794268, --0.653426, -0.375164, --0.031299, --0.274443, -0.460885, --0.498260, -0.403794, --0.222824, -0.016762, -0.141391, --0.181168, -0.068044, -0.161670, --0.399559, -0.516530, --0.443783, -0.229206, --0.023084, --0.007891, --0.210841, -0.600141, --0.957237, -1.067619, --0.835515, -0.351153, -0.154181, --0.445807, -0.432141, --0.221629, -0.046556, --0.100284, -0.399439, --0.769664, -0.967114, --0.849150, -0.470702, --0.039311, --0.230609, -0.250980, --0.087021, --0.122127, -0.265674, --0.301874, -0.228088, --0.043791, --0.235586, -0.530240, --0.689329, -0.573031, --0.174941, --0.328704, -0.671255, --0.674567, -0.371778, -0.029872, --0.315462, -0.417024, --0.431095, -0.498486, --0.661938, -0.824517, --0.831977, -0.596165, --0.157388, --0.347275, -0.762279, --0.973475, -0.928795, --0.642047, -0.198050, -0.257211, --0.567395, -0.646648, --0.532303, -0.355630, --0.241062, -0.213054, --0.191920, -0.085138, -0.106525, --0.266095, -0.246420, -0.007390, --0.405219, -0.774314, --0.981939, -1.014471, --0.953470, -0.881730, --0.808002, -0.672453, --0.417102, -0.052516, -0.334438, --0.628149, -0.740518, --0.636947, -0.333598, -0.107611, --0.574476, -0.911043, --0.964194, -0.666060, --0.102183, --0.495601, -0.849490, --0.779402, -0.302401, -0.375032, --0.965648, -1.241794, --1.128528, -0.710478, --0.169993, --0.296237, -0.543936, --0.519210, -0.270821, -0.065814, --0.320007, -0.365802, --0.193907, --0.073745, -0.248858, --0.188374, --0.117842, -0.539897, --0.882088, -0.987867, --0.814342, -0.445061, --0.046400, --0.207228, -0.209744, -0.027324, --0.377235, -0.657784, --0.722972, -0.536797, --0.186879, --0.167581, -0.379053, --0.378186, -0.193157, -0.078004, --0.319989, -0.451440, --0.455586, -0.381136, --0.314699, -0.336027, --0.475623, -0.694801, --0.899967, -0.986791, --0.893819, -0.638309, --0.312419, -0.038103, -0.097805, --0.090534, -0.016148, -0.020557, -0.043164, --0.185629, -0.316320, --0.339484, -0.222810, --0.024885, --0.135984, -0.151563, -0.010785, --0.284654, -0.536380, --0.634455, -0.520438, --0.244238, --0.054460, -0.210736, --0.113600, --0.238112, -0.730361, --1.181175, -1.418503, --1.351973, -1.006418, --0.504251, -0.006869, -0.356157, --0.537215, -0.576280, --0.560492, -0.562447, --0.596162, -0.619830, --0.580354, -0.461698, --0.296757, -0.135403, --0.002412, --0.111488, -0.215154, --0.274065, -0.208496, -0.049800, --0.478443, -0.927760, --1.171876, -1.033227, --0.507583, --0.198389, -0.759760, --0.912926, -0.612495, --0.059127, --0.425107, -0.592353, --0.406783, -0.041391, -0.248212, --0.278752, -0.028247, -0.376025, --0.740641, -0.903285, --0.798152, -0.471325, --0.051529, --0.303573, -0.462450, --0.361102, -0.026764, -0.416503, --0.771119, -0.833020, --0.495715, --0.157843, -0.850483, --1.233547, -1.089096, --0.485086, --0.238945, -0.670328, --0.583340, -0.080428, -0.488394, --0.768568, -0.628801, --0.216074, --0.180978, -0.337458, --0.213484, --0.071802, -0.355877, --0.531725, -0.569946, --0.484806, -0.301600, --0.055627, --0.194978, -0.377822, --0.444021, -0.405678, --0.335142, -0.316722, --0.383306, -0.486666, --0.529051, -0.439169, --0.239428, -0.052209, --0.029788, -0.245934, --0.620903, -0.939080, --0.962894, -0.579585, -0.113600, --0.847860, -1.327388, --1.389843, -1.080298, --0.595846, -0.147382, -0.161324, --0.356363, -0.515210, --0.660815, -0.719679, --0.582026, -0.215947, -0.262122, --0.630837, -0.702705, --0.459448, -0.079835, -0.168219, --0.100243, --0.265058, -0.716058, --0.975931, -0.861990, --0.382093, --0.279208, -0.865957, --1.183470, -1.188608, --0.994672, -0.793383, --0.739729, -0.864378, --1.063315, -1.169858, --1.065735, -0.763057, --0.405353, -0.183377, --0.215188, -0.464774, --0.754601, -0.871274, --0.703540, -0.326084, -0.030302, --0.113015, --0.191419, -0.772242, --1.347246, -1.628936, --1.500761, -1.084450, --0.647832, -0.413972, --0.407493, -0.451985, --0.321244, --0.070658, -0.586407, --0.953816, -0.958605, --0.597238, -0.080273, -0.309984, --0.399740, -0.216314, -0.060672, --0.240184, -0.244783, --0.133792, -0.020811, -0.039337, --0.100023, -0.268558, --0.592297, -0.979346, --1.224469, -1.132617, --0.657909, --0.039300, -0.663342, --0.944955, -0.796843, --0.366273, --0.051540, -0.190541, -0.025768, --0.440039, -0.760812, --0.742417, -0.334090, -0.289145, --0.823548, -0.998907, --0.716511, -0.096754, -0.581391, --1.018003, -1.041531, --0.693278, -0.197147, -0.172945, --0.249184, -0.051388, -0.252980, --0.470124, -0.490892, --0.322522, -0.045889, -0.244576, --0.470691, -0.572703, --0.517093, -0.322967, --0.077981, --0.094198, -0.111167, -0.003005, --0.125438, -0.119076, -0.068746, --0.370824, -0.651074, --0.794253, -0.763420, --0.593456, -0.346202, --0.075085, --0.179300, -0.379026, --0.490627, -0.503023, --0.441777, -0.359349, --0.304058, -0.290961, --0.297284, -0.284415, --0.227258, -0.127132, --0.000658, --0.140968, -0.298071, --0.463803, -0.597441, --0.622170, -0.465415, --0.122749, --0.304112, -0.636828, --0.714275, -0.495616, --0.101662, --0.242158, -0.333428, --0.114350, --0.289345, -0.638169, --0.716838, -0.458989, -0.014799, --0.466637, -0.678450, --0.576518, -0.270203, -0.020071, --0.103128, --0.063472, -0.355573, --0.580935, -0.624557, --0.531587, -0.461555, --0.547515, -0.771930, --0.962173, -0.913138, --0.542216, --0.043624, -0.616710, --0.974136, -1.047572, --0.905759, -0.669878, --0.424481, -0.192031, -0.029907, --0.224623, -0.355472, --0.404634, -0.402855, --0.410920, -0.465856, --0.545259, -0.591018, --0.574035, -0.537072, --0.566063, -0.706633, --0.899410, -0.999944, --0.878243, -0.520601, --0.048595, --0.363093, -0.604955, --0.693236, -0.730564, --0.807567, -0.931632, --1.037221, -1.058263, --0.990893, -0.889136, --0.799022, -0.694375, --0.478380, -0.061269, -0.542174, --1.174582, -1.598527, --1.627384, -1.240179, --0.604397, --0.007738, -0.355218, --0.335017, -0.007599, -0.455827, --0.861203, -1.069324, --1.039221, -0.833426, --0.587215, -0.447884, --0.502421, -0.728120, --1.000147, -1.160302, --1.109637, -0.865773, --0.547208, -0.296385, --0.193676, -0.217387, --0.269765, -0.246517, --0.103983, --0.114660, -0.306371, --0.371656, -0.278163, --0.087811, --0.071175, -0.074901, -0.121610, --0.449002, -0.750270, --0.858217, -0.685237, --0.280168, --0.181764, -0.480145, --0.468560, -0.167434, -0.233210, --0.478267, -0.404152, --0.045823, --0.383184, -0.628938, --0.558856, -0.236681, -0.134798, --0.353066, -0.336659, --0.151177, --0.061654, -0.189555, --0.214759, -0.202294, --0.233882, -0.343225, --0.498719, -0.635576, --0.702437, -0.684378, --0.594383, -0.454530, --0.288124, -0.121397, -0.021941, --0.137108, -0.246899, --0.383199, -0.550844, --0.709584, -0.799880, --0.794363, -0.725616, --0.657623, -0.622340, --0.581403, -0.455147, --0.200093, --0.131452, -0.405815, --0.492180, -0.354843, --0.084344, --0.156349, -0.233659, --0.127109, --0.056943, -0.149715, --0.026422, --0.305939, -0.695588, --0.926839, -0.856122, --0.517225, -0.115124, -0.103480, --0.021940, --0.257338, -0.481602, --0.433444, -0.098932, -0.310416, --0.504209, -0.323128, -0.141624, --0.606445, -0.785514, --0.573624, -0.095700, -0.397350, --0.696294, -0.744467, --0.633522, -0.516181, --0.511940, -0.658737, --0.913216, -1.177670, --1.338555, -1.313189, --1.092398, -0.753066, --0.422830, -0.213414, --0.167784, -0.257111, --0.421414, -0.613267, --0.808640, -0.985766, --1.104106, -1.112314, --0.982085, -0.737240, --0.449136, -0.196742, --0.019099, --0.104307, -0.227933, --0.384403, -0.539492, --0.598419, -0.471942, --0.161399, --0.206758, -0.441080, --0.411957, -0.150913, -0.165774, --0.349841, -0.347317, --0.272405, -0.291860, --0.454793, -0.619404, --0.552370, -0.129293, -0.527930, --1.097018, -1.260619, --0.922124, -0.275737, -0.316869, --0.554308, -0.374773, -0.023308, --0.319470, -0.271964, -0.143645, --0.733809, -1.210744, --1.356718, -1.130444, --0.664314, -0.170815, -0.174286, --0.305698, -0.270543, --0.173378, -0.104018, --0.086683, -0.074067, -0.012175, --0.217469, -0.505613, --0.760416, -0.843204, --0.672599, -0.274898, -0.228063, --0.681627, -0.965803, --1.027365, -0.871990, --0.543971, -0.117783, -0.303135, --0.605113, -0.709271, --0.616963, -0.414059, --0.219829, -0.112825, --0.086457, -0.064101, -0.041474, --0.264354, -0.552370, --0.779103, -0.799263, --0.530273, -0.022539, -0.531760, --0.880287, -0.850343, --0.459827, --0.085154, -0.514849, --0.659536, -0.536961, --0.306222, -0.132309, --0.070344, -0.054754, -0.009130, --0.136507, -0.233631, --0.176925, --0.062624, -0.356518, --0.482216, -0.278412, -0.221391, --0.784877, -1.122304, --1.078217, -0.734626, --0.348855, -0.170218, --0.269915, -0.507061, --0.648842, -0.548436, --0.247057, --0.066754, -0.196705, --0.065859, --0.254765, -0.617905, --0.902671, -1.072119, --1.158356, -1.203397, --1.207114, -1.117834, --0.869963, -0.444212, -0.087977, --0.570471, -0.829023, --0.770189, -0.454676, --0.090286, --0.068130, --0.135592, -0.651957, --1.229414, -1.539236, --1.357440, -0.698437, -0.182164, --0.919659, -1.227819, --1.030947, -0.471817, -0.188553, --0.701996, -0.919239, --0.808181, -0.431357, -0.081491, --0.559422, -0.831900, --0.794390, -0.470279, --0.020803, --0.322934, -0.377843, --0.107510, --0.360082, -0.804891, --1.029296, -0.948129, --0.612597, -0.170159, -0.207514, --0.393103, -0.344986, --0.113026, --0.188711, -0.430207, --0.517341, -0.429530, --0.229469, -0.038575, -0.017603, -0.125986, --0.432141, -0.772666, --0.993766, -0.999244, --0.798158, -0.486970, --0.182498, --0.044631, -0.194062, --0.311045, -0.441044, --0.596422, -0.749403, --0.845338, -0.825050, --0.650723, -0.332856, -0.052913, --0.377774, -0.509869, --0.384823, -0.053916, -0.328957, --0.583045, -0.596511, --0.382320, -0.061157, -0.214837, --0.347916, -0.340375, --0.276723, -0.256956, --0.322549, -0.423191, --0.450319, -0.319935, --0.047868, --0.242736, -0.396310, --0.333109, -0.110122, -0.113780, --0.184727, -0.054970, -0.191732, --0.400247, -0.438862, --0.263600, --0.076575, -0.475462, --0.809355, -0.964381, --0.861865, -0.494144, -0.042854, --0.557208, -0.831911, --0.734772, -0.301352, -0.269281, --0.711676, -0.828007, --0.580583, -0.095551, -0.413364, --0.751066, -0.823474, --0.665026, -0.409385, --0.221707, -0.220885, --0.423095, -0.733273, --0.992201, -1.058350, --0.880267, -0.517341, --0.097557, --0.256994, -0.487247, --0.604445, -0.654943, --0.678522, -0.691946, --0.702386, -0.728841, --0.806071, -0.961532, --1.179261, -1.377555, --1.425967, -1.206538, --0.693501, -0.002141, -0.638154, --0.989587, -0.936126, --0.553986, -0.067888, -0.285685, --0.399356, -0.344945, --0.302640, -0.423638, --0.723545, -1.073320, --1.282982, -1.215685, --0.863013, -0.347672, -0.137167, --0.418580, -0.425840, --0.228016, -0.004045, -0.051832, -0.154658, --0.551297, -0.933164, --1.085710, -0.919758, --0.526986, -0.118047, -0.109863, --0.082584, --0.133186, -0.399979, --0.604335, -0.708004, --0.733377, -0.712126, --0.646192, -0.509559, --0.282917, --0.010492, -0.296434, --0.475927, -0.470628, --0.263016, --0.088755, -0.469626, --0.753674, -0.858077, --0.776916, -0.573123, --0.331690, -0.106733, -0.096634, --0.292049, -0.464497, --0.556480, -0.510796, --0.336614, -0.135537, --0.051367, -0.173717, --0.470226, -0.804187, --1.025538, -1.064251, --0.955526, -0.784629, --0.605706, -0.405239, --0.138207, --0.199131, -0.527263, --0.714192, -0.660692, --0.376770, --0.010312, -0.326603, --0.452358, -0.382400, --0.204830, -0.019918, -0.132516, --0.277348, -0.439878, --0.577627, -0.582384, --0.367697, --0.026016, -0.408020, --0.538767, -0.295587, -0.222939, --0.742852, -0.987897, --0.856715, -0.477298, --0.106145, --0.045783, --0.067890, -0.338453, --0.610436, -0.792137, --0.886833, -0.940159, --0.967386, -0.930720, --0.783255, -0.533960, --0.271518, -0.122133, --0.171698, -0.407958, --0.719762, -0.949840, --0.969403, -0.738450, --0.327372, --0.109823, -0.404208, --0.455353, -0.286793, --0.037162, --0.115186, -0.051961, -0.222024, --0.590896, -0.901377, --1.045161, -0.999488, --0.814353, -0.574119, --0.366237, -0.263904, --0.304988, -0.459833, --0.614281, -0.607852, --0.332310, --0.166685, -0.670969, --0.896006, -0.671208, --0.075026, --0.578846, -0.914351, --0.725363, -0.118505, -0.535975, --0.828788, -0.576920, -0.044268, --0.600049, -0.672880, --0.137464, --0.750196, -1.509417, --1.729062, -1.303314, --0.465376, --0.379581, -0.892269, --0.955270, -0.673517, --0.257859, --0.108071, -0.335938, --0.420687, -0.391604, --0.277624, -0.104855, -0.093074, --0.277681, -0.423030, --0.525826, -0.591304, --0.608069, -0.545065, --0.385977, -0.173826, --0.014294, -0.013449, --0.186147, -0.411755, --0.488845, -0.266072, -0.240406, --0.831694, -1.233515, --1.258890, -0.920416, --0.420890, -0.031793, -0.060752, -0.149961, --0.506990, -0.795970, --0.872434, -0.736045, --0.513180, -0.364395, --0.376064, -0.503368, --0.600624, -0.519418, --0.210573, --0.238363, -0.654517, --0.883339, -0.872711, --0.684569, -0.437986, --0.235450, -0.124967, --0.110663, -0.180502, --0.314231, -0.467436, --0.563174, -0.522411, --0.324329, -0.046358, -0.164494, --0.185846, -0.013776, -0.223015, --0.351880, -0.286350, --0.094799, --0.051719, -0.013728, -0.207270, --0.471841, -0.611410, --0.550776, -0.347359, --0.126712, --0.019203, -0.082835, --0.108622, -0.121893, --0.092198, --0.034980, -0.270855, --0.545253, -0.736253, --0.746768, -0.568065, --0.280904, --0.003411, -0.213314, --0.344128, -0.426463, --0.470527, -0.440481, --0.284142, --0.007681, -0.366505, --0.671306, -0.817861, --0.779014, -0.611369, --0.408852, -0.244497, --0.143067, -0.093060, --0.071923, -0.055807, --0.012917, --0.095706, -0.290063, --0.534598, -0.730486, --0.761775, -0.573672, --0.224953, --0.133897, -0.349520, --0.359820, -0.225224, --0.077571, -0.030427, --0.119136, -0.306249, --0.530392, -0.745248, --0.916622, -0.993998, --0.901818, -0.577671, --0.036010, --0.596967, -1.117211, --1.335474, -1.174761, --0.713259, -0.148734, -0.292503, --0.452328, -0.298476, -0.075899, --0.500626, -0.799198, --0.855040, -0.654034, --0.291754, --0.061058, -0.229938, --0.121200, --0.223032, -0.638264, --0.922568, -0.946585, --0.717548, -0.354685, -0.001709, --0.276029, -0.474869, --0.634107, -0.753930, --0.785985, -0.684503, --0.470342, -0.242507, --0.119070, -0.153364, --0.294584, -0.422788, --0.428785, -0.278475, --0.024142, --0.232284, -0.392164, --0.402846, -0.278682, --0.096669, --0.037137, -0.042700, -0.084808, --0.268104, -0.397156, --0.405791, -0.318508, --0.227432, -0.211942, --0.262662, -0.274624, --0.125691, --0.212104, -0.614447, --0.856834, -0.755322, --0.302211, --0.304875, -0.772606, --0.891434, -0.660788, --0.272003, --0.034080, -0.125620, --0.038562, --0.096615, -0.186027, --0.246453, -0.363689, --0.580419, -0.821924, --0.934693, -0.812735, --0.503759, -0.195531, --0.079372, -0.193803, --0.377023, -0.376678, --0.040823, --0.553846, -1.136056, --1.414718, -1.269006, --0.821840, -0.353266, --0.122101, -0.217579, --0.528965, -0.835646, --0.946150, -0.797275, --0.462497, -0.081338, -0.232803, --0.443348, -0.572354, --0.638288, -0.608394, --0.414059, -0.026838, -0.464110, --0.848745, -0.896418, --0.509100, --0.177959, -0.833837, --1.104058, -0.816493, --0.088857, --0.733481, -1.270613, --1.311695, -0.908816, --0.317387, --0.165839, -0.362872, --0.282917, -0.074857, -0.090131, --0.124225, -0.053132, -0.035237, --0.073397, -0.061662, --0.047791, -0.064555, --0.083222, -0.023812, -0.187060, --0.558316, -1.018560, --1.446228, -1.718440, --1.749797, -1.514537, --1.059083, -0.503052, --0.012228, --0.266114, -0.281743, --0.121086, --0.034375, -0.019070, -0.204630, --0.512548, -0.691081, --0.569699, -0.127057, -0.493190, --1.057756, -1.357201, --1.294200, -0.911213, --0.359191, --0.169335, -0.513979, --0.602520, -0.470860, --0.240400, -0.061872, --0.048877, -0.228325, --0.527442, -0.804065, --0.910962, -0.770201, --0.422467, -0.020261, -0.242714, --0.235331, --0.032546, -0.409639, --0.689621, -0.734960, --0.558999, -0.310335, --0.167877, -0.218071, --0.399812, -0.555592, --0.551616, -0.379026, --0.161476, -0.062113, --0.157855, -0.373962, --0.529608, -0.463993, --0.153628, --0.262149, -0.564939, --0.592484, -0.336867, -0.052342, --0.355355, -0.404295, --0.172772, --0.211596, -0.535990, --0.617869, -0.408098, --0.022763, --0.321277, -0.437074, --0.286517, -0.006134, -0.186821, --0.152396, --0.059664, -0.231694, --0.131379, --0.305862, -0.900087, --1.323114, -1.311621, --0.850375, -0.192772, -0.301030, --0.397764, -0.133836, -0.230369, --0.405025, -0.269711, -0.065347, --0.369060, -0.475236, --0.399284, -0.304723, --0.359582, -0.603175, --0.923221, -1.147516, --1.168338, -1.004954, --0.769885, -0.579814, --0.483769, -0.454557, --0.436093, -0.401073, --0.373164, -0.399469, --0.497002, -0.617875, --0.667285, -0.569913, --0.339523, -0.093297, -0.014440, -0.096692, --0.356759, -0.568989, --0.528726, -0.160367, -0.423453, --0.981292, -1.277828, --1.203233, -0.808321, --0.253475, --0.277709, -0.646198, --0.788191, -0.721524, --0.539465, -0.384850, --0.391428, -0.605113, --0.932475, -1.168672, --1.111393, -0.700041, --0.082781, --0.450900, -0.644172, --0.441807, -0.032719, -0.274328, --0.263013, --0.039120, -0.382117, --0.476604, -0.206615, -0.285079, --0.701593, -0.806637, --0.586947, -0.244550, --0.034747, -0.082175, --0.314290, -0.549247, --0.651721, -0.626018, --0.579665, -0.601924, --0.667497, -0.647778, --0.418893, --0.021107, -0.521892, --0.865257, -0.906688, --0.672394, -0.340638, --0.117304, -0.091296, --0.171472, -0.151901, -0.136080, --0.687794, -1.299130, --1.672886, -1.594214, --1.066135, -0.320076, -0.308863, --0.569258, -0.430827, --0.087395, --0.177442, -0.177007, -0.060870, --0.322436, -0.361951, --0.074704, --0.428138, -0.889870, --1.070119, -0.888201, --0.459120, -0.011546, -0.249261, --0.247059, -0.055165, -0.164647, --0.258975, -0.160546, -0.087039, --0.362103, -0.534091, --0.534958, -0.396629, --0.232114, -0.166019, --0.253509, -0.441923, --0.606159, -0.636929, --0.516935, -0.326028, --0.173325, -0.115168, --0.127749, -0.151269, --0.156929, -0.170556, --0.232575, -0.338042, --0.420735, -0.403365, --0.273220, -0.115590, --0.070295, -0.237548, --0.600630, -1.021675, --1.316410, -1.360638, --1.160723, -0.844257, --0.578461, -0.468622, --0.499512, -0.553869, --0.493002, -0.248782, -0.126808, --0.481226, -0.637633, --0.487211, -0.051414, -0.516849, --0.995500, -1.192077, --1.034205, -0.608463, --0.126133, --0.171629, -0.127356, -0.254487, --0.805010, -1.269203, --1.428095, -1.202515, --0.684956, -0.085395, -0.374433, --0.559482, -0.465999, --0.201628, --0.076263, -0.230176, --0.193478, --0.009607, -0.277964, --0.476535, -0.494028, --0.292372, --0.074260, -0.481632, --0.788459, -0.895297, --0.781065, -0.501899, --0.157334, --0.154966, -0.371977, --0.474249, -0.474994, --0.402247, -0.283695, --0.136077, --0.040876, -0.261584, --0.538347, -0.856006, --1.155960, -1.349360, --1.362259, -1.188650, --0.913874, -0.684810, --0.636592, -0.814753, --1.136593, -1.415371, --1.440243, -1.079168, --0.361212, --0.503318, -1.187317, --1.383429, -0.958325, --0.045153, --0.988839, -1.700161, --1.778994, -1.199645, --0.228076, --0.717247, -1.274919, --1.310068, -0.960346, --0.541182, -0.363230, --0.558787, -1.010743, --1.426783, -1.519216, --1.183139, -0.560483, -0.051692, --0.385559, -0.354309, --0.074321, --0.242180, -0.434460, --0.475719, -0.447401, --0.444656, -0.492230, --0.527993, -0.456024, --0.224394, --0.126842, -0.479483, --0.704240, -0.736840, --0.610996, -0.424952, --0.268720, -0.170714, --0.105400, -0.048077, --0.018858, -0.070568, --0.231755, -0.462661, --0.668454, -0.757805, --0.693352, -0.495804, --0.213557, --0.101006, -0.388313, --0.574381, -0.592490, --0.432740, -0.176146, -0.030863, --0.059016, --0.117511, -0.394313, --0.593286, -0.569887, --0.305498, --0.072551, -0.359585, --0.394277, -0.159442, -0.202971, --0.476669, -0.501371, --0.260376, --0.130167, -0.509541, --0.762848, -0.850131, --0.777458, -0.564057, --0.248520, --0.082010, -0.295058, --0.279548, -0.037822, -0.278143, --0.437566, -0.275170, -0.190044, --0.751549, -1.135433, --1.163354, -0.848122, --0.364204, --0.075658, -0.345362, --0.451019, -0.483289, --0.530103, -0.620134, --0.726704, -0.805832, --0.821450, -0.739293, --0.516441, -0.123440, -0.400605, --0.910825, -1.193842, --1.081922, -0.573061, -0.136821, --0.747606, -1.017612, --0.885616, -0.474556, -0.009946, --0.401582, -0.633367, --0.716573, -0.684009, --0.556138, -0.350840, --0.110806, --0.090953, -0.181807, --0.134387, --0.011995, -0.172791, --0.269585, -0.275066, --0.220620, -0.164293, --0.146024, -0.164637, --0.190667, -0.198371, --0.185297, -0.161506, --0.122420, -0.038092, -0.120354, --0.334155, -0.515705, --0.548636, -0.374436, --0.061135, --0.213438, -0.272182, --0.071474, --0.247817, -0.443845, --0.342253, --0.031966, -0.460521, --0.676683, -0.546302, --0.155751, --0.252551, -0.447762, --0.362738, -0.131338, -0.006749, -0.135880, --0.574587, -1.139436, --1.567202, -1.640119, --1.294817, -0.650589, -0.049230, --0.547986, -0.684685, --0.454241, --0.002761, -0.470404, --0.753993, -0.761304, --0.535167, -0.223348, -0.003466, --0.047611, --0.058976, -0.179743, --0.174767, -0.014780, -0.180357, --0.222372, -0.006393, -0.383190, --0.707703, -0.738030, --0.424916, --0.060191, -0.449121, --0.565520, -0.426210, --0.182282, --0.033422, -0.209830, --0.423668, -0.711164, --0.976765, -1.034759, --0.758038, -0.208763, -0.363343, --0.664734, -0.543161, --0.084991, --0.438811, -0.736921, --0.663423, -0.282894, -0.195403, --0.559181, -0.711423, --0.691981, -0.605011, --0.522771, -0.445261, --0.338095, -0.199799, --0.085751, -0.060408, --0.120051, -0.162726, --0.046902, --0.295722, -0.781798, --1.204306, -1.360173, --1.188930, -0.815751, --0.458384, -0.262619, --0.191860, -0.061649, -0.300416, --0.888737, -1.478596, --1.751800, -1.508028, --0.816622, -0.001258, -0.537551, --0.551592, -0.084000, -0.563353, --1.007655, -0.996135, --0.527030, --0.178223, -0.816479, --1.162296, -1.155781, --0.888943, -0.524354, --0.207349, -0.014824, -0.050930, --0.038092, -0.007476, -0.006272, --0.019628, -0.092356, --0.279191, -0.562993, --0.819814, -0.860116, --0.541268, --0.115792, -0.894376, --1.475606, -1.608923, --1.248873, -0.565523, -0.174100, --0.762979, -1.138530, --1.347807, -1.443298, --1.408036, -1.174028, --0.713819, -0.119701, -0.406479, --0.658880, -0.555631, --0.193871, --0.211060, -0.459129, --0.475957, -0.326329, --0.135827, --0.006525, -0.088063, --0.137328, -0.163276, --0.132800, -0.006462, -0.207202, --0.436034, -0.586649, --0.607816, -0.517725, --0.372401, -0.209370, --0.024418, --0.194663, -0.414306, --0.545214, -0.503088, --0.295733, -0.054326, -0.036209, -0.131501, --0.493348, -0.835342, --0.923442, -0.653149, --0.117179, --0.449362, -0.803451, --0.821495, -0.550645, --0.169055, --0.110228, -0.139887, -0.098454, --0.489906, -0.840087, --0.966533, -0.789732, --0.379113, --0.074942, -0.356673, --0.342441, -0.074889, -0.253503, --0.406014, -0.239083, -0.211062, --0.749191, -1.138739, --1.239479, -1.074218, --0.782808, -0.504573, --0.281329, -0.054328, -0.247877, --0.606874, -0.886064, --0.907735, -0.582989, -0.002060, --0.613076, -0.996099, --1.024563, -0.766913, --0.430609, -0.220867, --0.207805, -0.289270, --0.272854, -0.022086, -0.430508, --0.880246, -1.062513, --0.810556, -0.160450, -0.658758, --1.337894, -1.631839, --1.456817, -0.903139, --0.177538, --0.484290, -0.898892, --0.989048, -0.799675, --0.469251, -0.162889, -0.004033, --0.010667, --0.083085, -0.196564, --0.289304, -0.379581, --0.514161, -0.720728, --0.982702, -1.248176, --1.454025, -1.541665, --1.463404, -1.196259, --0.769217, -0.281825, -0.118416, --0.302828, -0.232583, -0.021147, --0.326403, -0.572861, --0.725533, -0.815847, --0.888114, -0.950430, --0.965839, -0.881983, --0.670656, -0.349889, -0.020121, --0.358682, -0.592216, --0.679699, -0.630295, --0.506191, -0.403162, --0.409895, -0.561204, --0.811495, -1.049754, --1.153224, -1.050314, --0.753173, -0.340706, -0.092366, --0.482139, -0.807722, --1.070125, -1.262074, --1.353440, -1.297467, --1.050103, -0.595274, -0.025789, --0.690497, -1.202005, --1.351729, -1.027740, --0.310186, --0.522551, -1.109006, --1.188754, -0.742384, -0.007842, --0.739612, -1.218511, --1.405345, -1.418399, --1.394341, -1.362262, --1.227587, -0.873072, --0.292317, --0.353880, -0.810464, --0.885819, -0.583513, --0.110145, --0.253439, -0.331404, --0.155675, --0.082083, -0.192394, --0.138906, -0.060861, --0.149643, -0.477918, --0.918330, -1.219635, --1.186718, -0.832168, --0.387297, -0.161359, --0.341136, -0.862491, --1.437394, -1.722127, --1.524245, -0.920449, --0.210516, --0.265790, -0.332775, --0.072106, --0.253683, -0.389932, --0.255404, --0.030183, -0.265878, --0.334513, -0.281118, --0.248227, -0.329890, --0.472613, -0.511204, --0.312869, --0.090069, -0.493122, --0.652100, -0.454611, -0.002412, --0.486120, -0.788882, --0.849964, -0.752288, --0.616453, -0.492984, --0.341729, -0.103660, -0.208786, --0.486869, -0.589698, --0.447029, -0.119904, -0.228504, --0.433116, -0.428615, --0.282732, -0.139710, --0.116046, -0.222065, --0.362461, -0.409728, --0.293808, -0.044462, -0.236058, --0.441804, -0.520819, --0.487629, -0.394528, --0.293993, -0.220359, --0.194509, -0.230923, --0.328400, -0.449479, --0.517603, -0.455529, --0.249632, --0.012698, -0.181121, --0.145496, --0.071212, -0.313438, --0.400486, -0.261360, -0.013016, --0.244350, -0.305203, --0.206817, -0.071348, --0.024809, -0.107174, --0.265796, -0.417066, --0.508867, -0.533945, --0.501339, -0.408443, --0.242193, -0.000517, -0.293344, --0.597351, -0.867635, --1.068203, -1.168985, --1.142894, -0.973183, --0.669503, -0.279022, -0.121299, --0.452161, -0.663813, --0.751272, -0.742283, --0.668796, -0.546660, --0.380826, -0.188836, --0.016438, --0.075036, -0.042698, -0.111006, --0.342507, -0.597846, --0.843035, -1.068334, --1.267176, -1.413639, --1.462054, -1.371379, --1.133335, -0.781199, --0.375029, --0.020475, -0.346393, --0.547551, -0.575880, --0.414541, -0.113401, -0.198066, --0.350819, -0.222599, -0.177620, --0.688187, -1.063175, --1.099006, -0.744822, --0.129924, --0.506608, -0.937846, --1.049408, -0.869340, --0.527284, -0.180725, -0.051311, --0.125564, -0.078925, --0.001140, --0.017400, --0.059678, -0.192859, --0.300175, -0.326898, --0.295682, -0.288180, --0.365414, -0.492514, --0.539918, -0.374567, -0.023665, --0.514462, -0.867519, --0.910903, -0.652657, --0.283473, -0.050631, --0.087368, -0.318234, --0.511201, -0.442990, --0.061723, --0.468509, -0.871766, --0.936824, -0.643131, --0.158061, --0.275308, -0.470536, --0.367987, -0.024325, -0.439697, --0.888788, -1.207579, --1.330392, -1.264279, --1.082309, -0.873397, --0.676504, -0.457448, --0.160803, --0.198142, -0.485888, --0.507607, -0.144621, -0.526515, --1.232570, -1.638590, --1.539555, -0.983272, --0.242331, --0.348029, -0.581627, --0.482001, -0.254357, --0.131437, -0.222251, --0.463207, -0.693102, --0.785517, -0.735767, --0.640273, -0.592526, --0.586190, -0.510694, --0.250664, --0.187812, -0.632256, --0.833580, -0.640440, --0.133133, --0.391496, -0.592425, --0.306678, --0.330844, -0.960227, --1.221703, -0.985674, --0.430764, --0.085072, -0.272275, --0.102942, --0.186783, -0.286063, --0.051796, --0.374457, -0.663604, --0.541262, --0.000909, -0.678748, --1.092899, -0.982848, --0.381610, --0.425125, -1.090098, --1.403705, -1.373856, --1.159319, -0.932735, --0.780519, -0.696074, --0.640840, -0.603062, --0.601620, -0.640607, --0.666111, -0.575156, --0.281821, --0.206249, -0.762532, --1.195052, -1.347240, --1.178218, -0.770496, --0.268104, --0.200983, -0.562331, --0.780519, -0.830016, --0.695656, -0.407406, --0.067979, --0.173303, -0.200989, --0.013982, --0.260797, -0.442787, --0.413358, -0.190459, -0.092037, --0.284434, -0.326793, --0.282187, -0.274619, --0.380990, -0.561079, --0.680653, -0.610323, --0.324958, --0.071982, -0.416011, --0.589432, -0.590750, --0.520899, -0.503350, --0.597825, -0.763379, --0.887449, -0.856465, --0.626128, -0.255922, -0.107411, --0.291966, -0.183498, -0.207783, --0.733937, -1.165375, --1.295434, -1.042058, --0.491810, --0.137596, -0.595524, --0.707313, -0.444778, -0.067550, --0.607956, -0.950945, --0.961332, -0.649575, --0.160809, --0.298744, -0.561321, --0.571374, -0.398191, --0.188537, -0.089872, --0.180977, -0.434916, --0.724516, -0.871897, --0.732748, -0.286049, -0.320836, --0.816371, -0.938344, --0.591325, --0.073129, -0.722141, --1.028226, -0.863224, --0.369450, --0.142621, -0.400474, --0.337675, -0.112289, -0.026762, -0.077915, --0.389377, -0.715304, --0.848200, -0.703921, --0.369441, -0.040424, -0.100541, -0.013565, --0.307158, -0.616403, --0.785929, -0.749543, --0.551715, -0.305590, --0.121672, -0.055055, --0.098749, -0.212088, --0.349895, -0.468255, --0.514110, -0.427399, --0.173370, --0.212417, -0.608913, --0.853672, -0.831393, --0.549002, -0.139387, -0.215718, --0.391541, -0.378263, --0.254257, -0.107813, -0.020123, --0.126881, -0.196111, --0.168523, --0.024249, -0.389655, --0.836606, -1.212297, --1.388141, -1.326067, --1.077299, -0.726176, --0.333368, --0.076923, -0.486013, --0.843893, -1.064573, --1.063291, -0.811704, --0.372746, --0.112492, -0.483238, --0.629871, -0.534777, --0.262873, --0.081944, -0.396769, --0.592958, -0.593465, --0.343356, --0.154022, -0.799824, --1.403184, -1.745020, --1.677330, -1.201099, --0.474589, --0.255854, -0.763858, --0.931483, -0.776963, --0.420952, -0.024787, -0.262071, --0.332507, -0.142201, -0.268437, --0.763015, -1.138921, --1.211200, -0.918318, --0.381575, --0.137575, -0.376335, --0.229263, --0.175640, -0.543092, --0.590482, -0.234854, -0.334119, --0.752118, -0.700291, --0.116195, --0.739812, -1.416030, --1.529323, -0.998317, --0.102621, --0.675574, -0.934419, --0.585176, --0.108965, -0.706559, --0.857853, -0.499255, -0.141065, --0.712737, -0.964873, --0.876019, -0.620909, --0.416422, -0.365650, --0.408443, -0.401025, --0.250406, --0.004869, -0.224422, --0.272567, -0.112806, -0.176320, --0.461281, -0.632303, --0.645730, -0.516769, --0.288746, -0.010020, -0.270915, --0.502915, -0.636792, --0.641522, -0.521737, --0.320850, -0.101378, -0.088831, --0.239488, -0.368496, --0.483477, -0.547482, --0.487122, -0.249073, -0.135360, --0.536759, -0.791568, --0.806682, -0.627773, --0.414762, -0.336161, --0.456545, -0.696801, --0.892096, -0.902382, --0.698565, -0.373694, --0.084669, --0.030528, --0.085246, -0.386489, --0.740581, -0.974786, --0.949050, -0.635212, --0.158472, --0.244271, -0.352229, --0.106475, --0.331392, -0.669380, --0.677464, -0.347409, -0.104579, --0.401359, -0.411624, --0.238504, -0.121498, --0.232974, -0.534523, --0.805949, -0.818738, --0.513201, -0.042603, -0.339800, --0.455952, -0.308374, --0.049205, --0.146779, -0.202394, --0.167349, -0.149521, --0.213687, -0.329148, --0.401377, -0.355138, --0.199622, -0.026528, -0.052756, -0.020053, --0.218310, -0.455559, --0.643078, -0.739791, --0.764359, -0.765322, --0.771038, -0.756109, --0.653679, -0.412953, --0.062460, --0.273521, -0.429959, --0.297324, --0.107312, -0.645125, --1.130849, -1.422974, --1.470471, -1.300057, --0.975984, -0.573842, --0.181263, --0.099090, -0.173981, --0.011239, --0.317789, -0.647510, --0.789535, -0.632160, --0.210836, --0.294354, -0.638583, --0.633105, -0.247287, -0.362875, --0.921898, -1.169816, --0.995944, -0.495890, -0.082716, --0.475263, -0.535665, --0.295032, --0.082305, -0.406452, --0.561225, -0.541572, --0.424684, -0.312285, --0.284682, -0.380677, --0.589465, -0.841535, --1.009237, -0.942883, --0.549694, --0.121854, -0.857332, --1.353380, -1.370825, --0.875203, -0.071535, -0.697638, --1.133174, -1.129931, --0.808711, -0.419194, --0.183363, -0.179342, --0.328752, -0.479179, --0.515034, -0.423888, --0.286432, -0.212005, --0.269677, -0.454364, --0.696583, -0.900522, --0.988592, -0.936240, --0.784325, -0.620972, --0.536210, -0.571475, --0.695039, -0.821241, --0.860899, -0.768654, --0.558441, -0.285346, --0.013731, --0.205881, -0.344641, --0.393011, -0.354867, --0.240583, -0.063058, -0.157051, --0.375158, -0.510563, --0.463666, -0.173134, -0.314344, --0.820687, -1.103948, --0.997062, -0.528568, -0.073731, --0.519776, -0.648797, --0.532932, -0.406873, --0.470759, -0.718275, --0.929912, -0.844817, --0.381542, --0.267309, -0.749546, --0.800232, -0.437387, -0.043923, --0.282240, -0.113574, -0.306166, --0.613017, -0.501318, -0.050332, --0.759456, -1.239547, --1.270303, -0.939134, --0.554591, -0.405746, --0.554093, -0.809290, --0.891333, -0.641296, --0.122497, --0.442132, -0.821936, --0.898725, -0.690381, --0.301969, --0.133869, -0.493396, --0.684888, -0.674504, --0.505189, -0.281362, --0.113426, -0.053627, --0.069193, -0.072625, -0.012871, --0.196515, -0.404855, --0.513925, -0.412083, --0.066773, --0.434901, -0.898757, --1.099826, -0.898874, --0.338918, --0.345848, -0.835747, --0.899160, -0.529999, -0.045979, --0.510274, -0.649465, --0.478201, -0.204596, --0.068328, -0.174172, --0.442308, -0.700944, --0.835926, -0.871951, --0.922941, -1.060776, --1.218302, -1.214353, --0.889038, -0.248449, -0.493712, --1.019258, -1.093319, --0.716603, -0.138681, -0.286682, --0.322326, -0.006006, -0.364678, --0.426967, -0.009463, -0.723422, --1.351511, -1.464441, --0.936916, -0.021167, -0.811296, --1.168907, -0.973648, --0.476341, -0.060477, -0.016489, -0.231010, --0.564844, -0.709381, --0.538770, -0.145131, -0.241641, --0.414625, -0.319357, --0.071833, --0.136320, -0.173474, --0.051678, --0.093276, -0.105129, -0.079782, --0.384951, -0.641296, --0.697898, -0.523710, --0.233939, -0.021541, --0.035794, -0.287159, --0.641126, -0.903180, --0.934079, -0.718263, --0.350759, --0.030267, -0.307671, --0.411355, -0.316776, --0.046833, --0.312902, -0.610957, --0.671956, -0.384436, -0.211569, --0.903315, -1.386690, --1.422703, -0.983227, --0.288972, --0.301209, -0.497044, --0.252696, --0.207998, -0.542186, --0.517418, -0.163448, -0.256916, --0.432967, -0.214162, -0.299302, --0.832212, -1.110240, --1.015064, -0.630757, --0.174694, --0.128670, -0.157515, -0.062355, --0.387291, -0.639668, --0.703853, -0.585278, --0.396903, -0.278278, --0.296553, -0.398182, --0.448212, -0.332230, --0.048168, --0.278570, -0.468029, --0.396474, -0.071666, -0.371614, --0.746810, -0.911564, --0.829661, -0.569267, --0.247080, --0.042531, -0.268873, --0.453797, -0.623779, --0.768085, -0.839252, --0.794566, -0.639293, --0.430532, -0.236564, --0.087411, --0.039104, -0.184278, --0.357352, -0.509747, --0.556722, -0.433205, --0.148037, --0.198276, -0.447631, --0.457812, -0.178649, -0.314368, --0.854122, -1.266237, --1.450046, -1.404895, --1.192906, -0.880717, --0.513571, -0.137881, -0.164652, --0.282952, -0.136431, -0.254766, --0.752902, -1.165936, --1.352704, -1.297073, --1.099805, -0.896850, --0.764037, -0.673014, --0.526342, -0.246628, -0.141300, --0.495109, -0.628193, --0.434344, --0.015967, -0.482785, --0.681791, -0.459377, -0.096192, --0.689594, -0.987170, --0.815394, -0.262988, -0.375605, --0.773181, -0.747394, --0.340206, --0.231262, -0.703271, --0.889995, -0.743138, --0.338537, --0.177870, -0.644923, --0.923796, -0.924997, --0.636071, -0.144707, -0.366768, --0.676972, -0.621648, --0.185087, --0.469397, -1.058794, --1.308605, -1.088575, --0.485864, --0.228709, -0.734972, --0.836567, -0.577496, --0.221494, -0.089475, --0.346718, -0.882097, --1.371540, -1.491233, --1.133991, -0.476404, -0.144330, --0.446087, -0.353949, -0.002874, --0.416994, -0.738360, --0.925847, -1.006799, --1.010120, -0.940728, --0.807567, -0.660359, --0.583012, -0.635045, --0.786054, -0.903598, --0.817987, -0.430016, -0.208314, --0.896048, -1.373910, --1.455515, -1.126337, --0.553151, --0.005729, -0.341168, --0.401645, -0.300965, --0.220702, -0.276907, --0.446942, -0.605664, --0.635648, -0.520920, --0.353162, -0.253008, --0.274013, -0.365563, --0.420967, -0.371822, --0.255775, -0.203722, --0.350348, -0.729872, --1.233714, -1.664631, --1.849876, -1.731918, --1.375793, -0.901327, --0.406005, --0.058192, -0.448221, --0.685436, -0.661643, --0.306911, --0.327619, -1.040914, --1.545048, -1.597960, --1.134256, -0.315256, -0.539730, --1.110901, -1.238012, --0.991012, -0.611306, --0.362333, -0.382096, --0.622909, -0.903440, --1.029081, -0.903705, --0.571895, -0.178393, -0.122671, --0.253257, -0.244388, --0.200586, -0.220556, --0.327142, -0.455553, --0.510328, -0.450733, --0.338972, -0.308246, --0.467168, -0.808905, --1.195856, -1.438201, --1.414119, -1.145800, --0.774838, -0.454647, --0.239138, -0.051722, -0.240715, --0.702496, -1.246802, --1.660547, -1.724866, --1.351401, -0.645710, -0.139318, --0.726081, -0.937441, --0.761960, -0.340471, -0.104855, --0.362222, -0.310842, -0.031400, --0.509574, -0.891396, --0.973460, -0.691516, --0.170328, --0.332954, -0.575591, --0.477978, -0.167222, -0.125806, --0.244407, -0.218743, --0.217586, -0.375864, --0.645140, -0.804402, --0.636202, -0.129406, -0.464271, --0.782075, -0.607121, --0.038290, --0.558784, -0.791159, --0.500391, --0.135689, -0.726907, --0.927179, -0.643909, --0.066884, --0.482872, -0.761808, --0.725488, -0.499926, --0.252959, -0.074934, -0.051746, --0.194488, -0.388006, --0.594451, -0.728829, --0.721333, -0.568968, --0.344417, -0.160701, --0.113792, -0.232906, --0.462390, -0.686178, --0.787312, -0.714269, --0.514617, -0.307370, --0.202129, -0.214652, --0.240895, -0.118168, -0.259321, --0.845675, -1.434935, --1.749595, -1.578647, --0.892969, --0.117569, -1.104189, --1.697451, -1.672624, --1.067851, -0.183690, -0.560513, --0.852563, -0.664764, --0.258786, --0.001943, --0.086325, -0.419039, --0.664531, -0.524148, -0.019826, --0.659420, -0.962829, --0.682125, --0.054314, -0.804896, --1.094282, -0.723771, -0.090579, --0.840295, -1.030113, --0.476902, --0.580634, -1.625589, --2.165296, -2.001871, --1.308256, -0.481086, -0.113067, --0.326415, -0.250686, --0.095359, -0.036296, --0.136690, -0.360386, --0.625353, -0.838617, --0.901628, -0.720332, --0.249688, --0.444942, -1.166657, --1.650604, -1.694987, --1.280016, -0.590181, -0.083646, --0.500868, -0.584577, --0.425247, -0.189781, --0.013956, --0.049257, -0.011551, -0.095500, --0.242892, -0.394256, --0.494478, -0.487810, --0.359933, -0.165818, --0.010750, --0.009517, --0.132000, -0.377262, --0.619464, -0.765262, --0.781401, -0.698640, --0.574065, -0.439044, --0.269758, -0.006417, -0.385276, --0.851401, -1.239982, --1.369567, -1.145340, --0.646869, -0.117898, -0.152075, -0.008898, --0.545128, -1.185776, --1.577917, -1.469109, --0.841890, --0.071078, -0.900289, --1.322860, -1.220058, --0.724480, -0.132088, -0.267287, --0.338933, -0.145080, -0.134404, --0.335875, -0.404116, --0.387595, -0.359573, --0.340873, -0.289085, --0.157266, --0.034606, -0.182933, --0.160795, --0.085792, -0.479429, --0.841866, -1.001438, --0.907308, -0.668820, --0.485298, -0.507979, --0.727073, -0.966474, --0.996865, -0.694446, --0.136749, --0.432952, -0.751042, --0.691475, -0.332257, -0.107344, --0.406241, -0.458739, --0.298095, -0.032066, -0.241929, --0.473468, -0.635397, --0.686014, -0.572557, --0.283374, --0.100477, -0.416261, --0.504695, -0.313951, -0.058352, --0.422589, -0.614716, --0.588437, -0.419283, --0.228339, -0.092660, --0.010100, --0.066063, -0.163912, --0.257199, -0.282197, --0.187613, --0.022117, -0.276815, --0.466583, -0.490159, --0.307966, --0.022965, -0.356852, --0.522819, -0.422687, --0.104004, --0.251545, -0.433920, --0.342316, -0.058317, -0.203127, --0.236130, --0.018054, -0.431631, --0.772770, -0.850146, --0.624149, -0.220296, -0.152334, --0.320904, -0.237553, -0.005085, --0.233637, -0.295610, --0.150766, --0.099131, -0.266404, --0.194458, --0.135156, -0.581644, --0.932180, -1.039343, --0.907174, -0.660913, --0.427909, -0.230295, -0.019651, --0.415859, -0.932908, --1.386443, -1.524382, --1.193341, -0.464554, -0.373900, --0.963100, -1.068653, --0.703391, -0.103938, -0.416214, --0.638011, -0.528056, --0.210116, --0.140618, -0.396906, --0.513535, -0.497425, --0.361844, -0.111335, -0.234118, --0.607729, -0.897357, --0.992287, -0.847544, --0.517785, -0.131681, -0.179452, --0.349546, -0.395547, --0.377798, -0.340328, --0.279968, -0.163437, -0.030908, --0.286280, -0.554713, --0.783026, -0.929507, --0.962063, -0.854602, --0.602725, -0.254731, -0.074761, --0.241217, -0.152908, -0.151261, --0.495628, -0.659545, --0.520277, -0.148145, -0.224834, --0.353913, -0.148086, -0.267879, --0.644264, -0.784441, --0.677976, -0.491464, --0.428329, -0.566984, --0.800253, -0.920482, --0.784492, -0.433757, --0.078953, --0.042051, --0.169225, -0.599912, --0.999649, -1.146333, --0.987742, -0.663521, --0.399895, -0.356097, --0.527826, -0.763566, --0.869143, -0.722638, --0.330662, --0.190663, -0.677115, --0.977245, -0.994684, --0.716409, -0.229206, -0.293756, --0.655524, -0.733255, --0.554767, -0.290966, --0.152200, -0.249781, --0.517985, -0.754676, --0.753960, -0.439908, -0.087335, --0.616984, -0.953315, --1.017136, -0.865790, --0.634035, -0.446263, --0.357266, -0.348688, --0.368025, -0.374806, --0.363778, -0.357635, --0.382794, -0.449264, --0.546144, -0.650252, --0.736414, -0.781777, --0.767387, -0.685830, --0.555890, -0.430508, --0.379813, -0.447672, --0.606740, -0.751069, --0.746283, -0.516107, --0.109921, --0.302023, -0.517216, --0.427337, -0.101821, -0.236942, --0.347934, -0.138408, -0.252035, --0.525853, -0.430392, -0.043257, --0.616191, -0.886952, --0.607658, --0.122143, -0.894156, --1.250664, -0.989224, --0.297948, --0.374317, -0.617353, --0.314487, --0.317706, -0.908676, --1.178987, -1.071893, --0.705164, -0.226836, -0.283029, --0.793335, -1.237860, --1.478828, -1.377439, --0.919525, -0.280943, -0.242541, --0.407704, -0.180070, -0.240321, --0.547306, -0.527620, --0.195594, --0.228795, -0.483194, --0.451183, -0.238036, --0.077338, -0.139000, --0.387041, -0.598961, --0.533897, -0.121519, -0.470825, --0.940460, -1.043000, --0.739797, -0.205964, -0.289766, --0.539596, -0.487015, --0.215825, --0.127128, -0.410995, --0.561607, -0.565824, --0.461523, -0.323962, --0.241357, -0.275312, --0.423280, -0.611041, --0.726254, -0.673032, --0.414732, --0.012339, -0.508307, --0.930401, -1.125956, --0.984270, -0.497133, -0.206341, --0.886189, -1.283223, --1.236325, -0.765253, --0.073343, --0.536955, -0.802020, --0.625687, -0.132154, -0.394510, --0.661676, -0.529418, --0.084764, --0.417456, -0.707539, --0.648961, -0.293392, -0.175300, --0.554382, -0.715798, --0.635257, -0.364374, -0.013748, --0.411314, -0.740539, --0.917531, -0.885414, --0.651215, -0.304520, -0.012339, --0.177133, -0.157620, --0.024360, --0.107951, -0.170163, --0.191507, -0.274305, --0.506543, -0.873063, --1.228621, -1.358158, --1.095456, -0.433768, -0.441205, --1.226746, -1.653591, --1.625944, -1.263367, --0.815349, -0.502775, --0.390733, -0.375682, --0.288387, -0.034198, -0.330808, --0.638628, -0.728757, --0.558686, -0.228408, -0.090427, --0.260471, -0.241977, --0.078380, --0.166110, -0.454676, --0.773086, -1.086020, --1.304188, -1.302527, --0.986544, -0.364708, -0.422630, --1.143314, -1.568579, --1.578361, -1.220040, --0.682101, -0.188725, -0.125776, --0.279642, -0.394596, --0.566867, -0.759212, --0.810273, -0.568405, --0.050648, --0.507332, -0.769220, --0.513544, --0.205071, -1.065938, --1.660953, -1.723364, --1.261653, -0.525033, -0.161167, --0.576509, -0.693779, --0.636172, -0.551932, --0.500638, -0.426198, --0.223960, --0.156134, -0.647882, --1.090688, -1.315820, --1.238838, -0.903860, --0.462116, -0.105226, -0.011269, -0.173985, --0.603068, -1.112347, --1.486068, -1.539072, --1.198825, -0.545745, -0.215719, --0.845157, -1.166529, --1.128057, -0.798167, --0.315143, --0.172504, -0.548341, --0.748265, -0.764720, --0.636870, -0.426761, --0.190484, --0.037512, -0.234986, --0.370124, -0.397219, --0.287765, -0.077223, -0.119461, --0.157396, --0.042052, -0.415936, --0.773089, -0.904897, --0.724689, -0.334105, -0.039755, --0.195930, -0.089005, -0.159656, --0.370124, -0.435500, --0.366654, -0.223348, --0.012421, --0.333887, -0.864735, --1.487957, -1.950547, --1.976322, -1.471282, --0.628626, --0.169135, -0.591957, --0.567606, -0.296283, --0.071980, -0.058633, --0.193682, -0.278517, --0.165178, --0.116372, -0.383944, --0.448602, -0.259684, -0.057726, --0.291611, -0.284644, --0.027779, --0.350590, -0.678903, --0.847392, -0.856259, --0.787771, -0.734829, --0.739916, -0.779533, --0.792444, -0.722332, --0.544660, -0.267744, -0.079096, --0.451097, -0.783139, --0.989873, -0.989471, --0.748798, -0.320695, -0.161092, --0.537143, -0.696389, --0.622170, -0.384379, --0.091728, --0.159694, -0.314869, --0.364791, -0.341314, --0.307084, -0.334787, --0.474008, -0.722159, --1.023570, -1.301016, --1.494088, -1.570024, --1.501927, -1.248542, --0.775986, -0.119511, -0.569296, --1.052436, -1.119387, --0.718466, -0.011394, -0.695773, --1.107551, -1.085788, --0.704130, -0.186916, -0.224220, --0.398068, -0.367173, --0.281709, -0.295597, --0.457985, -0.681550, --0.808458, -0.725187, --0.440728, -0.070886, -0.253547, --0.477495, -0.637942, --0.797746, -0.958322, --1.029481, -0.886636, --0.474419, --0.122918, -0.700810, --1.037480, -1.016790, --0.693096, -0.257830, -0.070375, --0.162585, -0.033241, -0.195821, --0.387524, -0.473313, --0.478806, -0.487307, --0.576348, -0.768675, --1.018453, -1.230510, --1.299824, -1.158589, --0.814479, -0.359752, -0.063053, --0.329795, -0.400271, --0.336227, -0.254492, --0.243530, -0.302148, --0.346238, -0.280030, --0.077242, --0.192523, -0.415421, --0.522986, -0.546853, --0.590812, -0.739776, --0.977466, -1.179816, --1.193311, -0.943148, --0.495342, -0.031340, -0.246632, --0.220093, --0.090066, -0.541611, --0.943888, -1.142282, --1.073073, -0.770934, --0.338224, --0.101827, -0.447821, --0.649054, -0.715462, --0.705584, -0.693364, --0.725345, -0.789803, --0.817245, -0.715080, --0.420544, --0.054222, -0.606621, --1.067479, -1.259645, --1.072575, -0.521955, -0.238143, --0.967916, -1.443095, --1.556231, -1.360727, --1.028628, -0.745216, --0.605175, -0.575287, --0.543336, -0.412834, --0.173280, --0.101639, -0.317158, --0.424165, -0.435727, --0.387562, -0.288334, --0.112683, --0.152166, -0.450510, --0.652580, -0.620700, --0.306389, --0.194497, -0.677148, --0.938550, -0.894275, --0.625830, -0.327485, --0.187168, -0.276889, --0.519901, -0.749963, --0.818654, -0.680003, --0.404396, -0.125023, -0.039891, --0.042127, --0.084661, -0.248817, --0.342825, -0.288593, --0.073497, --0.238386, -0.530210, --0.684632, -0.636846, --0.398620, -0.044630, -0.322406, --0.603751, -0.724826, --0.650642, -0.402769, --0.068403, --0.218588, -0.332108, --0.223233, --0.038211, -0.285938, --0.344733, -0.139464, -0.242417, --0.585948, -0.674230, --0.432508, --0.006085, -0.368335, --0.407001, -0.057141, -0.524622, --1.063494, -1.337712, --1.298110, -1.062421, --0.804735, -0.630697, --0.523841, -0.385735, --0.125826, --0.265873, -0.703623, --1.046168, -1.161927, --0.985805, -0.546916, -0.039363, --0.610078, -1.010653, --1.148601, -1.025976, --0.737380, -0.431414, --0.247757, -0.252842, --0.404667, -0.570012, --0.594648, -0.395484, --0.021865, --0.358336, -0.549882, --0.448471, -0.109559, -0.281779, --0.522813, -0.510826, --0.286968, --0.017200, -0.279847, --0.455901, -0.567779, --0.644133, -0.671014, --0.599086, -0.395562, --0.090156, --0.225499, -0.443267, --0.491843, -0.362985, --0.102792, --0.213848, -0.505392, --0.697012, -0.733684, --0.598854, -0.331547, --0.025167, --0.203470, -0.267503, --0.158757, --0.040823, -0.199745, --0.212564, -0.065479, -0.153013, --0.308616, -0.310013, --0.169735, --0.005227, -0.084704, -0.002494, --0.229635, -0.492970, --0.668999, -0.671055, --0.482994, -0.167109, -0.153090, --0.336659, -0.289229, --0.018966, --0.354536, -0.655897, --0.747481, -0.602171, --0.308028, -0.005743, -0.194534, --0.260992, -0.230062, --0.161116, -0.097972, --0.062441, -0.068637, --0.129809, -0.243180, --0.370287, -0.442778, --0.403544, -0.255122, --0.073134, --0.034430, --0.002910, -0.169424, --0.371050, -0.494236, --0.475763, -0.338134, --0.170082, -0.067034, --0.072259, -0.158862, --0.264813, -0.352765, --0.443604, -0.590321, --0.808586, -1.023573, --1.088211, -0.874899, --0.379509, --0.240411, -0.729953, --0.867170, -0.578247, -0.031580, --0.741719, -1.325480, --1.636230, -1.630990, --1.341560, -0.835774, --0.202940, --0.438361, -0.941399, --1.168239, -1.054093, --0.655924, -0.141969, -0.283984, --0.481835, -0.435992, --0.241464, -0.031178, -0.100254, --0.125235, -0.057373, -0.089561, --0.311423, -0.584148, --0.835342, -0.964360, --0.911493, -0.718320, --0.513168, -0.416675, --0.441077, -0.475719, --0.381762, -0.119946, -0.201802, --0.408712, -0.402685, --0.244995, -0.103547, --0.105936, -0.222009, --0.278364, -0.098440, -0.341031, --0.861570, -1.182987, --1.098699, -0.601634, -0.119662, --0.795833, -1.213826, --1.293380, -1.081764, --0.701099, -0.292625, -0.024204, --0.181163, -0.179325, --0.083856, --0.013939, -0.052351, --0.037978, -0.038037, --0.127771, -0.326558, --0.566620, -0.720257, --0.675112, -0.413415, --0.041268, --0.260835, -0.344712, --0.191350, --0.071372, -0.250306, --0.215701, --0.013818, -0.291569, --0.450009, -0.411582, --0.221949, --0.006290, -0.178856, --0.260763, -0.255840, --0.171791, -0.024165, -0.124274, --0.148655, --0.078306, -0.577624, --1.196557, -1.659620, --1.723200, -1.330657, --0.656338, -0.005557, -0.360965, --0.363817, -0.123631, -0.135265, --0.225835, -0.097280, -0.158144, --0.382427, -0.458763, --0.382633, -0.257240, --0.218707, -0.338143, --0.562259, -0.733076, --0.681255, -0.340173, -0.189626, --0.672599, -0.858372, --0.625666, -0.064103, -0.561795, --0.953655, -0.944627, --0.587063, -0.106895, -0.242709, --0.328322, -0.188292, -0.030626, --0.188135, -0.227054, --0.169109, -0.059991, -0.073360, --0.219740, -0.355337, --0.435384, -0.424183, --0.336578, -0.244328, --0.229504, -0.316272, --0.437986, -0.472673, --0.326332, -0.003511, -0.386379, --0.690047, -0.793109, --0.670343, -0.380829, --0.027933, --0.279757, -0.448334, --0.409755, -0.143301, -0.293295, --0.751972, -1.034485, --0.985373, -0.590389, --0.008949, --0.499986, -0.727351, --0.643444, -0.413093, --0.277897, -0.385762, --0.691812, -1.001414, --1.116248, -0.966933, --0.635692, -0.270103, -0.023850, --0.219615, -0.326904, --0.334027, -0.206374, -0.057286, --0.377879, -0.621672, --0.689523, -0.590413, --0.427220, -0.302395, --0.230514, -0.141443, -0.025463, --0.226092, -0.312916, --0.146841, --0.269330, -0.752160, --1.036819, -0.945426, --0.501559, --0.088739, -0.566510, --0.763036, -0.665661, --0.384117, -0.064277, -0.184782, --0.315635, -0.327783, --0.241991, -0.084518, -0.115536, --0.322904, -0.494114, --0.581686, -0.546809, --0.377920, -0.106362, -0.193370, --0.426985, -0.523168, --0.477376, -0.369116, --0.329637, -0.461478, --0.749394, -1.029490, --1.064322, -0.701581, --0.014646, --0.692867, -1.054290, --0.882275, -0.312398, -0.271766, --0.494397, -0.245393, -0.248906, --0.596851, -0.531081, --0.106181, --0.338393, -0.422517, --0.002016, --0.718084, -1.312393, --1.415869, -0.963270, --0.226974, --0.366085, -0.508861, --0.196584, --0.294056, -0.600383, --0.505154, -0.055250, -0.496361, --0.872160, -0.948999, --0.819244, -0.701367, --0.767268, -1.007339, --1.228290, -1.187240, --0.770618, -0.092098, -0.562090, --0.906927, -0.835291, --0.479715, -0.121483, --0.013280, -0.234445, --0.666585, -1.090294, --1.325811, -1.324574, --1.165849, -0.979468, --0.855001, -0.792206, --0.712308, -0.515481, --0.150524, --0.339186, -0.817751, --1.111092, -1.091141, --0.749081, -0.216171, -0.284848, --0.538660, -0.438320, --0.036507, --0.480481, -0.882982, --1.005983, -0.820285, --0.434233, -0.032108, -0.214330, --0.218448, -0.008325, -0.291783, --0.518369, -0.544898, --0.348855, -0.035256, -0.207203, --0.206638, --0.087634, -0.564644, --1.009398, -1.227136, --1.153570, -0.879381, --0.579364, -0.403865, --0.407773, -0.552418, --0.754723, -0.932359, --1.017052, -0.951655, --0.702160, -0.291311, -0.175727, --0.531635, -0.618593, --0.374049, --0.125228, -0.692387, --1.117631, -1.261120, --1.099116, -0.705388, --0.194091, --0.328987, -0.777452, --1.069598, -1.126444, --0.905779, -0.451586, -0.090510, --0.524375, -0.698240, --0.579537, -0.255944, -0.134154, --0.485405, -0.761137, --0.964578, -1.085126, --1.078349, -0.903449, --0.585582, -0.239089, --0.014491, --0.002999, --0.135423, -0.267906, --0.237219, -0.011602, -0.285227, --0.462584, -0.402131, --0.139432, --0.171856, -0.378195, --0.431369, -0.404777, --0.419304, -0.541781, --0.729464, -0.854038, --0.786394, -0.489688, --0.064627, --0.286620, -0.368848, --0.118605, --0.333410, -0.715465, --0.766669, -0.398062, -0.244565, --0.864208, -1.190003, --1.128313, -0.787651, --0.372815, -0.040430, -0.173166, --0.311030, -0.400378, --0.402596, -0.257585, -0.022236, --0.305167, -0.400387, --0.191349, --0.259503, -0.723241, --0.936135, -0.763915, --0.286870, --0.249697, -0.583084, --0.579677, -0.289495, -0.113606, --0.452683, -0.642953, --0.704380, -0.700160, --0.661634, -0.563172, --0.363921, -0.075403, -0.209259, --0.358482, -0.290047, --0.034860, --0.276845, -0.499008, --0.558471, -0.482168, --0.349123, -0.216090, --0.081213, --0.090232, -0.311271, --0.543688, -0.717393, --0.776066, -0.707703, --0.540305, -0.318162, --0.086681, --0.104539, -0.196023, --0.131688, --0.107060, -0.469698, --0.836701, -1.062609, --1.043528, -0.771286, --0.342143, --0.086906, -0.370976, --0.440945, -0.325554, --0.122913, --0.059696, -0.162898, --0.197569, -0.221625, --0.288668, -0.402450, --0.505717, -0.508805, --0.339335, --0.013246, -0.477328, --0.910903, -1.146691, --1.062355, -0.648937, --0.035080, --0.564036, -0.956105, --1.072385, -0.987239, --0.842117, -0.735598, --0.667837, -0.577391, --0.427557, -0.259762, --0.168466, -0.224391, --0.414729, -0.646973, --0.806861, -0.822311, --0.692661, -0.476428, --0.257631, -0.113075, --0.089749, -0.191334, --0.373566, -0.553881, --0.640381, -0.575737, --0.376090, -0.137181, -0.008823, -0.028702, --0.231801, -0.469212, --0.569925, -0.434326, --0.107215, --0.243291, -0.432001, --0.375256, -0.138999, -0.114815, --0.239885, -0.192697, --0.037533, --0.120379, -0.211376, --0.228454, -0.197613, --0.134267, -0.032590, -0.106179, --0.243932, -0.313337, --0.262654, -0.098407, -0.112944, --0.286188, -0.366934, --0.353555, -0.282943, --0.199542, -0.130478, --0.076275, -0.014229, -0.088926, --0.255980, -0.475343, --0.687067, -0.794030, --0.701921, -0.374746, -0.121838, --0.619774, -0.908346, --0.840769, -0.436057, -0.094764, --0.439893, -0.363158, -0.139530, --0.815516, -1.295908, --1.318223, -0.884022, --0.246034, --0.260925, -0.423203, --0.247689, --0.095496, -0.423873, --0.663870, -0.857195, --1.066906, -1.276937, --1.377144, -1.246310, --0.859514, -0.327172, -0.166197, --0.470151, -0.536776, --0.407156, -0.148209, -0.192335, --0.575827, -0.932675, --1.147093, -1.096735, --0.726790, -0.106303, -0.575031, --1.076039, -1.209766, --0.936583, -0.395851, -0.149508, --0.438078, -0.341818, -0.072427, --0.590842, -0.979519, --1.107602, -0.991292, --0.744187, -0.484588, --0.269969, -0.094994, -0.064232, --0.207530, -0.305063, --0.327735, -0.283255, --0.224713, -0.222751, --0.320704, -0.505288, --0.712958, -0.865579, --0.909025, -0.830281, --0.649894, -0.405368, --0.142421, --0.086061, -0.226385, --0.244651, -0.150993, --0.005016, --0.109602, -0.128641, --0.039337, --0.119631, -0.285726, --0.405004, -0.450054, --0.421638, -0.342915, --0.252050, -0.188976, --0.175079, -0.196787, --0.210074, -0.169728, --0.063553, --0.077359, -0.203102, --0.284441, -0.334373, --0.395610, -0.506110, --0.669074, -0.844248, --0.961529, -0.949148, --0.768910, -0.445804, --0.071083, --0.236063, -0.394489, --0.409966, -0.365236, --0.353513, -0.407612, --0.483334, -0.508176, --0.448507, -0.335413, --0.231870, -0.178268, --0.167291, -0.163549, --0.139234, -0.087869, --0.009118, --0.107704, -0.272948, --0.463978, -0.607402, --0.608460, -0.418842, --0.092300, --0.224138, -0.371179, --0.280929, -0.029317, -0.205631, --0.257517, -0.082929, -0.205540, --0.408464, -0.366174, --0.059724, --0.378132, -0.744530, --0.883304, -0.762145, --0.470437, -0.153961, -0.061898, --0.116789, -0.019709, -0.168436, --0.356205, -0.448119, --0.384248, -0.182132, -0.052735, --0.177287, -0.105867, -0.115507, --0.323244, -0.346399, --0.139289, --0.166973, -0.342843, --0.217576, --0.198644, -0.715256, --1.078834, -1.118734, --0.823486, -0.314562, -0.239920, --0.701525, -0.988756, --1.066909, -0.934979, --0.626614, -0.214349, -0.201991, --0.523266, -0.677693, --0.629767, -0.375459, -0.058091, --0.600144, -1.125726, --1.474769, -1.512704, --1.207564, -0.672134, --0.127866, --0.205457, -0.235222, --0.054819, --0.113972, -0.068826, -0.228134, --0.609783, -0.805507, --0.623586, -0.090968, -0.549491, --0.986312, -1.030220, --0.716648, -0.255909, -0.120616, --0.299531, -0.316418, --0.278713, -0.262092, --0.265257, -0.244012, --0.175209, -0.085860, --0.027011, -0.024799, --0.055826, -0.065042, --0.005651, --0.130152, -0.304225, --0.444298, -0.468706, --0.324943, -0.034947, -0.283782, --0.460155, -0.376076, --0.073083, --0.236149, -0.292688, -0.017550, --0.552680, -0.987411, --1.034035, -0.650729, --0.074869, --0.349290, -0.419584, --0.213776, -0.016201, --0.093896, -0.493092, --1.004397, -1.316214, --1.239958, -0.845225, --0.413841, -0.250613, --0.482487, -0.977370, --1.428336, -1.542807, --1.216091, -0.587528, -0.045847, --0.399019, -0.349269, -0.014917, --0.463594, -0.762818, --0.797183, -0.613896, --0.375009, -0.252864, --0.328200, -0.543632, --0.736283, -0.733404, --0.459964, --0.005764, -0.467564, --0.723145, -0.685415, --0.432806, -0.152104, --0.009540, -0.038577, --0.122507, -0.084292, -0.179680, --0.614170, -1.025442, --1.191693, -0.991969, --0.476801, --0.155463, -0.656657, --0.845875, -0.688148, --0.302670, --0.097374, -0.301907, --0.194866, --0.198081, -0.722460, --1.161757, -1.330991, --1.158031, -0.715798, --0.187487, --0.219777, -0.369551, --0.249793, --0.038171, -0.342501, --0.537408, -0.576086, --0.500969, -0.412264, --0.409794, -0.531626, --0.721133, -0.847827, --0.781798, -0.483855, --0.049863, --0.333821, -0.508212, --0.454927, -0.315626, --0.288795, -0.471397, --0.768922, -0.956426, --0.855904, -0.493661, --0.105594, --0.026210, --0.214525, -0.681520, --1.060764, -1.085710, --0.713298, -0.139155, -0.344417, --0.533090, -0.409406, --0.107337, --0.205617, -0.431530, --0.566218, -0.650922, --0.707888, -0.713694, --0.624620, -0.425829, --0.161329, --0.082336, -0.230931, --0.278269, -0.299033, --0.400742, -0.640691, --0.966211, -1.228424, --1.271215, -1.039576, --0.630137, -0.241641, --0.052383, -0.106062, --0.286006, -0.398250, --0.308070, -0.035087, -0.259520, --0.384171, -0.247966, -0.079131, --0.413865, -0.575794, --0.489476, -0.210280, -0.128198, --0.394611, -0.511115, --0.455279, -0.236661, -0.114175, --0.532160, -0.903619, --1.087358, -0.978685, --0.580610, -0.026786, -0.473161, --0.741162, -0.726117, --0.526524, -0.326004, --0.280949, -0.427489, --0.661682, -0.803651, --0.709292, -0.364449, -0.094702, --0.450641, -0.525215, --0.282024, --0.150345, -0.548165, --0.713855, -0.578089, --0.225111, --0.168813, -0.442480, --0.534398, -0.494630, --0.423364, -0.385044, --0.361200, -0.272003, --0.044993, --0.321843, -0.744080, --1.085865, -1.220845, --1.086485, -0.711146, --0.201578, --0.308443, -0.727538, --1.050457, -1.336284, --1.626352, -1.865970, --1.908701, -1.622025, --1.019544, -0.303030, -0.241245, --0.425489, -0.280966, --0.017109, --0.147859, -0.146771, --0.086305, -0.123569, --0.307838, -0.522581, --0.574208, -0.353767, -0.057950, --0.424073, -0.502072, --0.205730, --0.330948, -0.828621, --1.025862, -0.826654, --0.343416, --0.183655, -0.532845, --0.620093, -0.523057, --0.407439, -0.411588, --0.564215, -0.780391, --0.928511, -0.917817, --0.750053, -0.506280, --0.284428, -0.134044, --0.033893, --0.072780, -0.212806, --0.339153, -0.348688, --0.158153, --0.212568, -0.617005, --0.850668, -0.776719, --0.422595, --0.027863, -0.349365, --0.417850, -0.277104, --0.083869, --0.018533, --0.005570, -0.091702, --0.164631, -0.221170, --0.330200, -0.551828, --0.852107, -1.094682, --1.125538, -0.885941, --0.463564, -0.039521, -0.228828, --0.301975, -0.262795, --0.235625, -0.285698, --0.374046, -0.396861, --0.275829, -0.030879, -0.219247, --0.331398, -0.236369, -0.010294, --0.264500, -0.394668, --0.372991, -0.285882, --0.251300, -0.305146, --0.349376, -0.212819, -0.209450, --0.838692, -1.411753, --1.614675, -1.272446, --0.470890, --0.474291, -1.186617, --1.429564, -1.213528, --0.750306, -0.299954, --0.020156, --0.087947, -0.122135, --0.172295, -0.247865, --0.282500, -0.196853, -0.034198, --0.354902, -0.652535, --0.811456, -0.765900, --0.526974, -0.175557, -0.170837, --0.398673, -0.429638, --0.238003, --0.140428, -0.605479, --1.006010, -1.183645, --1.041757, -0.604773, --0.023037, --0.492528, -0.771938, --0.760741, -0.524118, --0.188873, --0.126338, -0.345383, --0.427536, -0.352262, --0.129833, --0.166286, -0.389351, --0.373754, -0.042693, -0.505130, --1.013842, -1.209969, --0.978315, -0.443333, -0.115480, --0.456152, -0.527787, --0.468133, -0.457797, --0.560289, -0.680599, --0.666001, -0.451487, --0.123072, --0.146117, -0.221724, --0.090293, --0.155351, -0.392510, --0.532252, -0.530732, --0.371161, -0.063213, -0.329589, --0.674686, -0.814726, --0.665127, -0.294573, -0.089720, --0.262164, -0.123995, -0.236574, --0.614930, -0.831783, --0.833172, -0.682113, --0.475805, -0.278803, --0.125899, -0.061818, --0.143232, -0.377175, --0.656070, -0.777944, --0.571195, -0.037910, -0.607318, --1.053703, -1.091153, --0.745391, -0.253927, -0.095065, --0.143342, --0.057331, -0.305102, --0.392552, -0.237685, -0.071518, --0.332519, -0.344220, --0.021170, --0.550153, -1.143129, --1.499325, -1.459446, --1.043286, -0.428797, -0.156361, --0.558349, -0.753299, --0.806789, -0.782501, --0.682715, -0.470002, --0.145025, --0.196715, -0.391523, --0.310142, --0.039455, -0.493324, --0.821915, -0.872607, --0.665208, -0.372085, --0.196538, -0.235341, --0.421292, -0.582634, --0.572876, -0.376910, --0.120649, --0.017601, --0.071657, -0.359418, --0.702666, -0.940004, --0.990294, -0.890361, --0.752536, -0.676027, --0.673193, -0.659351, --0.512486, -0.163733, -0.341365, --0.853368, -1.196527, --1.262547, -1.059011, --0.685359, -0.263351, -0.121658, --0.431092, -0.644959, --0.736182, -0.677729, --0.474270, -0.183753, -0.096780, --0.275384, -0.310243, --0.227938, -0.106220, --0.031862, -0.055044, --0.163290, -0.290442, --0.357129, -0.319226, --0.191686, -0.032542, -0.098477, --0.174098, -0.203562, --0.211289, -0.213781, --0.212428, -0.200076, --0.167539, -0.103934, -0.002303, --0.153102, -0.325926, --0.471275, -0.533277, --0.483283, -0.341684, --0.168699, -0.029723, -0.040103, --0.047916, -0.026917, --0.007946, --0.000057, -0.009200, --0.035580, -0.079536, --0.117109, -0.110113, --0.031106, --0.111060, -0.263861, --0.353424, -0.328337, --0.197872, -0.034891, -0.063828, --0.036049, --0.108899, -0.298357, --0.439822, -0.466616, --0.359772, -0.147026, -0.105707, --0.304544, -0.351937, --0.192591, --0.139694, -0.517317, --0.779822, -0.829977, --0.695141, -0.500892, --0.374126, -0.352092, --0.370991, -0.338802, --0.224085, -0.080666, -0.011123, --0.027712, -0.027881, --0.093511, -0.241443, --0.394823, -0.449094, --0.376102, -0.267431, --0.268212, -0.453347, --0.753770, -0.999959, --1.047721, -0.883232, --0.626340, -0.438424, --0.412083, -0.520896, --0.650183, -0.673705, --0.523472, -0.219634, -0.145839, --0.458506, -0.639156, --0.680259, -0.638959, --0.589751, -0.568721, --0.548511, -0.460524, --0.246897, --0.092448, -0.482887, --0.794068, -0.886749, --0.675237, -0.183853, -0.434937, --0.949491, -1.158165, --1.003342, -0.613723, --0.234807, -0.083900, --0.222720, -0.531128, --0.794214, -0.838266, --0.625720, -0.258204, -0.098798, --0.313641, -0.353534, --0.290249, -0.251216, --0.341708, -0.576229, --0.858277, -1.027117, --0.950236, -0.605452, --0.098087, --0.396307, -0.720162, --0.795124, -0.631096, --0.303713, --0.068868, -0.346575, --0.408092, -0.217372, -0.124183, --0.401359, -0.402029, --0.063770, --0.458381, -0.869686, --0.918902, -0.563988, --0.002192, --0.456965, -0.587152, --0.374892, -0.001960, -0.294743, --0.378001, -0.271788, --0.100613, --0.028690, -0.101963, --0.176548, -0.298613, --0.443270, -0.532321, --0.506277, -0.376982, --0.210535, -0.062136, -0.068731, --0.217645, -0.394015, --0.547145, -0.601572, --0.532550, -0.407880, --0.348393, -0.434189, --0.636285, -0.835515, --0.914736, -0.846808, --0.704231, -0.585528, --0.526121, -0.472819, --0.343055, -0.113032, -0.145939, --0.318362, -0.341386, --0.265997, -0.228530, --0.349305, -0.631377, --0.933301, -1.040476, --0.794521, -0.201997, -0.546177, --1.161408, -1.403133, --1.199970, -0.677493, --0.080786, --0.358246, -0.531969, --0.490147, -0.386570, --0.374892, -0.511115, --0.714910, -0.813564, --0.648401, -0.183763, -0.451908, --1.026044, -1.330875, --1.299517, -1.033162, --0.725595, -0.541337, --0.531832, -0.637212, --0.754407, -0.808908, --0.779112, -0.674027, --0.504999, -0.286986, --0.063846, --0.081061, -0.058324, -0.165302, --0.525841, -0.883608, --1.100022, -1.117405, --0.983698, -0.805475, --0.664633, -0.559541, --0.410861, -0.126626, -0.317429, --0.834490, -1.249418, --1.380756, -1.143123, --0.614295, -0.020772, -0.366204, --0.376615, -0.044265, -0.405087, --0.682012, -0.600901, --0.181283, --0.375748, -0.808440, --0.929367, -0.699230, --0.219420, --0.329100, -0.762356, --0.960599, -0.910709, --0.704476, -0.482234, --0.343726, -0.283810, --0.207234, -0.018869, -0.280201, --0.573713, -0.710559, --0.622694, -0.385697, --0.173270, -0.140148, --0.319813, -0.606192, --0.825068, -0.841759, --0.635040, -0.297003, -0.031070, --0.239659, -0.298092, --0.248155, -0.162504, --0.103268, -0.102774, --0.162573, -0.257096, --0.339061, -0.355844, --0.279072, -0.129461, -0.029377, --0.133087, -0.164638, --0.166180, -0.199428, --0.284411, -0.369447, --0.362619, -0.205772, -0.063841, --0.312931, -0.379920, --0.171763, --0.270160, -0.778314, --1.141919, -1.219203, --1.012996, -0.662332, --0.355418, -0.220805, --0.267513, -0.407442, --0.532449, -0.581969, --0.555109, -0.473298, --0.341010, -0.145515, -0.107672, --0.365307, -0.541077, --0.570557, -0.461457, --0.293689, -0.165561, --0.129568, -0.170485, --0.240683, -0.316734, --0.425021, -0.613810, --0.898522, -1.227932, --1.497414, -1.596896, --1.460799, -1.097221, --0.593271, -0.098660, -0.214798, --0.217887, --0.107858, -0.639206, --1.150395, -1.415943, --1.323739, -0.931081, --0.427495, -0.027266, -0.141530, --0.085571, --0.088637, -0.257534, --0.348825, -0.354270, --0.295535, -0.186789, --0.030546, --0.156325, -0.323646, --0.407096, -0.377876, --0.279275, -0.209847, --0.255148, -0.417662, --0.603166, -0.681052, --0.576619, -0.323333, --0.033039, --0.190142, -0.319646, --0.402483, -0.490472, --0.573794, -0.580017, --0.439703, -0.157745, -0.174356, --0.435986, -0.555500, --0.547530, -0.488555, --0.459448, -0.500090, --0.598654, -0.708720, --0.776239, -0.765462, --0.677845, -0.553065, --0.443425, -0.372201, --0.310988, -0.206687, --0.046504, --0.097634, -0.101720, -0.109587, --0.475507, -0.811376, --0.926637, -0.757441, --0.403660, -0.042431, -0.201810, --0.321038, -0.383518, --0.450310, -0.534607, --0.625851, -0.724823, --0.831253, -0.895622, --0.806354, -0.461529, -0.116250, --0.730501, -1.100464, --1.047432, -0.637889, --0.157701, --0.082670, --0.025427, -0.303832, --0.415552, -0.116670, -0.551935, --1.272213, -1.648924, --1.460093, -0.790191, -0.031909, --0.635668, -0.817248, --0.630620, -0.321008, --0.156355, -0.265073, --0.575779, -0.886594, --1.009372, -0.889497, --0.622793, -0.366142, --0.213140, -0.127724, -0.018317, --0.335854, -0.820118, --1.333807, -1.680922, --1.718261, -1.433474, --0.949622, -0.465341, --0.169889, -0.171253, --0.457714, -0.899744, --1.294155, -1.444144, --1.250170, -0.767116, --0.187666, --0.253910, -0.411171, --0.310860, -0.134705, --0.100636, -0.316702, --0.705119, -1.051003, --1.144873, -0.922896, --0.512152, -0.154580, --0.063007, -0.298738, --0.739544, -1.149433, --1.308745, -1.133830, --0.720633, -0.284602, --0.028012, -0.014635, --0.134500, -0.184960, --0.014004, --0.373176, -0.817158, --1.109956, -1.125890, --0.886570, -0.521978, --0.163981, --0.145530, -0.463347, --0.865773, -1.343661, --1.758685, -1.907756, --1.662336, -1.086819, --0.442188, -0.054148, --0.118694, -0.568346, --1.090527, -1.297553, --0.951840, -0.112957, -0.883080, --1.602413, -1.745544, --1.296376, -0.504775, -0.277032, --0.793404, -0.993748, --0.993763, -0.936666, --0.867012, -0.711068, --0.370973, --0.148999, -0.691844, --1.023439, -0.986327, --0.616963, -0.132332, -0.213457, --0.299847, -0.209051, --0.140932, -0.241699, --0.484827, -0.699859, --0.722433, -0.537978, --0.298583, -0.200973, --0.329452, -0.593128, --0.802408, -0.814288, --0.626942, -0.357644, --0.139451, -0.030331, --0.001500, --0.006914, -0.029438, --0.069854, -0.136533, --0.262743, -0.473275, --0.723086, -0.879632, --0.795919, -0.437062, -0.045291, --0.376442, -0.338963, -0.058713, --0.563711, -0.838987, --0.689946, -0.188668, -0.392885, --0.780561, -0.872330, --0.766502, -0.645531, --0.623988, -0.679621, --0.702234, -0.598749, --0.361024, -0.053617, -0.245349, --0.485524, -0.636464, --0.658707, -0.503869, --0.157716, --0.314788, -0.777616, --1.093424, -1.201624, --1.137567, -0.979686, --0.779881, -0.547214, --0.296086, -0.097832, --0.062889, -0.249619, --0.578399, -0.842954, --0.833157, -0.484046, -0.065329, --0.551509, -0.747254, --0.589713, -0.197528, -0.217004, --0.470154, -0.489912, --0.328233, -0.117195, --0.002768, -0.086088, --0.387136, -0.834966, --1.284430, -1.558246, --1.510564, -1.096655, --0.418815, --0.286951, -0.738873, --0.743183, -0.304434, -0.359257, --0.919129, -1.106523, --0.854029, -0.323271, -0.196308, --0.454319, -0.369834, --0.050292, --0.302750, -0.529868, --0.598186, -0.583528, --0.577281, -0.599572, --0.589823, -0.478470, --0.273705, -0.082831, --0.041546, -0.202684, --0.474219, -0.662177, --0.594320, -0.237420, -0.275472, --0.724734, -0.931751, --0.847174, -0.550591, --0.180525, --0.143716, -0.358598, --0.447052, -0.414088, --0.276205, -0.066941, -0.160993, --0.351335, -0.471731, --0.531021, -0.568715, --0.618757, -0.671681, --0.666054, -0.523838, --0.212248, --0.210994, -0.607890, --0.829408, -0.803159, --0.583084, -0.327321, --0.214524, -0.343785, --0.672027, -1.025845, --1.191979, -1.047113, --0.652812, -0.243870, --0.095270, -0.341445, --0.871173, -1.382410, --1.567372, -1.299648, --0.693665, -0.006421, -0.531573, --0.829909, -0.931545, --0.921120, -0.838248, --0.661560, -0.360178, -0.041443, --0.441813, -0.702640, --0.725732, -0.516617, --0.191387, --0.084238, -0.190523, --0.122788, --0.015638, -0.094544, --0.053456, --0.060898, -0.146165, --0.142346, -0.093144, --0.115580, -0.298595, --0.611667, -0.899681, --0.974047, -0.737395, --0.255394, --0.273415, -0.629958, --0.699367, -0.532723, --0.307924, -0.211528, --0.313116, -0.515934, --0.625150, -0.496218, --0.159620, --0.176846, -0.263423, -0.010203, --0.521877, -0.986008, --1.136861, -0.895515, --0.407365, --0.062635, -0.293221, --0.220294, --0.055918, -0.350223, --0.496230, -0.417590, --0.144409, --0.216191, -0.531164, --0.691060, -0.644476, --0.412625, -0.083440, -0.215384, --0.363182, -0.301889, --0.075862, --0.173127, -0.268397, --0.097021, --0.308005, -0.758950, --1.000335, -0.854497, --0.341863, --0.306982, -0.770707, --0.826335, -0.491327, --0.021636, --0.242610, -0.090858, -0.421701, --1.005372, -1.314825, --1.158255, -0.603089, -0.080029, --0.583653, -0.723837, --0.502927, -0.065512, -0.393255, --0.703149, -0.758568, --0.539796, -0.127616, -0.307385, --0.567630, -0.534055, --0.254370, --0.058447, -0.141264, -0.149332, --0.722928, -1.285011, --1.507676, -1.238030, --0.604794, --0.055159, -0.407212, --0.326436, --0.037283, -0.374561, --0.424401, -0.129081, -0.359924, --0.807841, -1.050278, --1.068349, -0.951053, --0.794349, -0.621535, --0.380779, -0.013726, -0.462306, --0.924404, -1.195591, --1.148854, -0.793803, --0.283885, --0.164661, -0.388084, --0.350074, -0.136131, -0.112984, --0.274535, -0.281872, --0.125093, --0.162588, -0.513928, --0.833792, -1.015407, --0.972375, -0.675255, --0.172786, --0.417456, -0.948114, --1.294376, -1.396192, --1.273495, -1.011204, --0.722370, -0.503234, --0.394930, -0.369691, --0.354774, -0.289851, --0.182846, -0.116028, --0.181268, -0.383762, --0.595912, -0.619422, --0.330281, --0.198331, -0.700303, --0.866595, -0.547852, -0.129812, --0.820049, -1.152371, --0.946969, -0.317500, -0.394960, --0.811790, -0.717473, --0.160849, --0.589456, -1.197305, --1.427630, -1.240760, --0.774239, -0.239870, -0.192432, --0.456271, -0.572232, --0.584917, -0.513606, --0.355573, -0.129728, -0.091435, --0.203857, -0.139397, -0.076055, --0.325920, -0.470583, --0.431819, -0.237007, -0.000185, --0.143646, -0.104662, -0.115381, --0.425787, -0.690795, --0.799225, -0.723491, --0.530783, -0.333675, --0.209620, -0.144862, --0.045605, --0.186507, -0.564092, --0.972134, -1.212020, --1.116057, -0.667968, --0.048037, --0.444343, -0.561562, --0.268318, --0.224340, -0.593069, --0.622077, -0.350545, --0.031071, --0.075400, --0.089331, -0.333494, --0.375104, -0.084683, -0.384355, --0.688610, -0.547065, -0.038405, --0.764836, -1.229977, --1.207185, -0.792644, --0.321882, -0.123439, --0.292734, -0.646678, --0.881319, -0.807123, --0.486970, -0.180084, --0.139876, -0.417039, --0.810667, -1.000350, --0.763930, -0.130216, -0.633049, --1.180027, -1.285479, --0.957744, -0.407981, -0.087703, --0.340858, -0.331577, --0.186924, -0.087402, --0.163875, -0.437920, --0.823319, -1.171896, --1.333331, -1.206914, --0.776966, -0.128749, -0.563958, --1.089928, -1.284236, --1.109772, -0.685305, --0.229406, --0.055383, -0.084546, -0.090634, --0.357507, -0.640723, --0.936663, -1.254664, --1.527213, -1.590152, --1.277924, -0.572652, -0.318687, --1.042088, -1.295488, --1.014871, -0.416756, -0.132650, --0.330731, -0.095345, -0.420756, --0.943375, -1.230504, --1.176969, -0.832868, --0.354190, --0.071698, -0.291427, --0.227933, --0.100096, -0.581129, --1.039546, -1.292981, --1.227390, -0.857672, --0.333356, --0.128529, -0.354786, --0.304875, -0.078973, -0.158108, --0.280556, -0.261054, --0.154693, -0.035915, -0.054210, --0.114554, -0.154318, --0.166496, -0.133236, --0.056391, --0.022778, -0.044527, -0.015148, --0.104673, -0.120080, -0.007901, --0.225623, -0.350676, --0.178418, --0.361251, -1.115020, --1.764724, -2.006464, --1.730415, -1.078700, --0.346715, --0.197302, -0.450554, --0.488147, -0.459630, --0.457609, -0.456435, --0.361105, -0.121470, -0.184114, --0.370344, -0.267307, -0.141435, --0.670597, -1.021484, --0.958268, -0.460125, -0.249581, --0.817400, -0.950120, --0.571076, --0.144804, -0.873599, --1.320172, -1.366941, --1.107021, -0.748697, --0.461594, -0.273238, --0.086290, --0.205262, -0.597185, --0.950331, -1.081949, --0.902927, -0.494907, --0.066245, --0.184307, -0.201368, --0.111502, -0.138105, --0.445762, -1.012432, --1.614091, -1.940238, --1.779131, -1.160556, --0.360166, --0.251389, -0.428314, --0.195980, --0.179450, -0.381539, --0.261107, --0.076128, -0.372445, --0.427107, -0.246919, --0.024736, --0.028145, --0.144943, -0.405812, --0.538997, -0.425614, --0.133404, --0.141469, -0.225508, --0.089581, --0.146842, -0.320371, --0.348697, -0.282743, --0.255288, -0.373378, --0.635350, -0.928166, --1.099102, -1.047212, --0.774198, -0.371039, -0.038149, --0.351940, -0.518238, --0.531471, -0.417221, --0.217793, --0.019542, -0.253748, --0.457207, -0.613619, --0.709703, -0.732656, --0.680954, -0.578408, --0.470062, -0.391735, --0.335014, -0.245054, --0.066249, --0.195931, -0.454825, --0.593417, -0.551375, --0.372597, -0.166049, --0.010667, --0.110527, -0.284057, --0.568119, -0.912047, --1.169733, -1.202703, --0.989602, -0.652019, --0.375986, -0.292013, --0.406134, -0.626816, --0.851305, -1.029794, --1.154610, -1.198056, --1.076325, -0.696318, --0.060016, --0.668069, -1.211268, --1.336859, -1.009583, --0.422523, --0.125712, -0.418807, --0.437044, -0.320457, --0.223387, -0.185664, --0.123479, --0.059928, -0.343329, --0.552928, -0.464652, -0.026287, --0.794200, -1.519392, --1.858051, -1.638227, --0.956829, -0.119668, -0.532464, --0.802244, -0.716239, --0.471516, -0.293313, --0.294204, -0.417358, --0.492421, -0.363832, --0.006820, --0.446906, -0.791568, --0.881038, -0.718883, --0.441398, -0.210647, --0.101053, -0.064487, -0.006713, --0.176207, -0.404083, --0.574992, -0.585948, --0.421692, -0.161752, -0.079979, --0.231314, -0.295775, --0.325279, -0.362088, --0.401770, -0.407066, --0.355934, -0.275893, --0.226755, -0.240605, --0.271765, -0.209846, -0.039073, --0.460298, -0.903750, --1.156762, -1.074525, --0.678942, -0.155629, -0.250645, --0.372758, -0.204069, -0.118688, --0.411677, -0.552466, --0.532786, -0.430502, --0.329541, -0.249347, --0.134603, --0.089081, -0.435411, --0.812953, -1.052895, --0.999378, -0.612665, --0.022978, --0.506578, -0.702347, --0.431262, --0.205443, -0.903461, --1.312554, -1.237529, --0.757719, -0.177418, -0.172247, --0.151919, --0.101860, -0.293585, --0.204763, --0.130545, -0.452793, --0.493110, -0.209555, -0.153095, --0.242435, --0.113810, -0.738757, --1.199636, -1.105363, --0.390117, --0.626068, -1.440148, --1.679610, -1.305511, --0.584783, --0.112821, -0.527796, --0.599918, -0.420783, --0.134199, --0.130303, -0.275121, --0.242414, -0.038330, -0.248977, --0.480013, -0.544436, --0.435685, -0.253945, --0.128354, -0.118868, --0.176432, -0.188947, --0.070396, --0.177731, -0.472971, --0.710162, -0.824344, --0.819531, -0.755477, --0.708186, -0.726254, --0.801147, -0.864816, --0.820335, -0.597822, --0.208774, --0.235664, -0.564468, --0.632491, -0.406178, -0.005956, --0.405233, -0.611917, --0.565258, -0.349669, --0.130001, -0.041537, --0.110974, -0.260066, --0.380901, -0.420184, --0.408098, -0.415170, --0.478064, -0.556713, --0.556462, -0.397168, --0.077089, --0.312037, -0.625815, --0.736358, -0.592359, --0.245568, --0.163864, -0.459028, --0.501643, -0.263223, -0.147953, --0.532103, -0.702830, --0.590869, -0.276626, -0.073798, --0.321822, -0.434394, --0.472047, -0.507133, --0.546991, -0.526965, --0.374615, -0.086824, -0.246503, --0.491381, -0.552394, --0.427155, -0.198758, -0.017984, --0.131975, -0.100061, -0.075971, --0.354682, -0.650300, --0.836734, -0.788036, --0.453899, --0.077028, -0.587030, --0.832132, -0.685564, --0.226446, --0.294662, -0.599509, --0.543229, -0.188024, -0.254467, --0.566089, -0.652252, --0.577946, -0.496090, --0.523519, -0.648169, --0.727190, -0.579034, --0.114173, --0.577341, -1.242715, --1.587144, -1.433307, --0.826320, -0.020927, -0.643686, --0.911564, -0.728424, --0.248841, --0.265264, -0.591340, --0.650422, -0.512274, --0.311760, -0.145275, --0.022621, --0.101573, -0.256550, --0.410044, -0.484162, --0.413945, -0.198390, -0.091928, --0.350366, -0.484630, --0.454039, -0.281752, --0.043651, --0.160602, -0.247576, --0.189026, -0.031234, -0.121918, --0.160957, -0.033306, -0.220755, --0.484267, -0.626924, --0.580369, -0.379867, --0.143963, -0.001853, --0.012014, -0.124643, --0.213517, -0.156830, -0.087664, --0.461010, -0.841965, --1.111846, -1.201999, --1.106392, -0.871131, --0.577978, -0.322543, --0.179228, -0.159486, --0.193982, -0.168202, --0.002706, --0.275154, -0.529176, --0.596204, -0.399720, --0.012351, --0.379643, -0.583421, --0.502468, -0.173073, -0.269266, --0.651647, -0.815087, --0.651939, -0.146515, -0.585969, --1.301756, -1.710530, --1.621321, -1.070444, --0.335467, --0.197865, -0.248138, -0.200763, --0.895208, -1.468546, --1.656685, -1.433379, --0.984046, -0.549914, --0.261890, -0.082302, -0.114978, --0.402643, -0.716105, --0.894111, -0.804011, --0.443994, --0.060199, -0.551273, --0.937918, -1.210833, --1.377856, -1.397482, --1.189210, -0.721008, --0.093434, --0.467400, -0.723169, --0.568840, -0.107172, -0.401210, --0.680277, -0.585373, --0.171671, --0.346274, -0.715473, --0.780305, -0.563914, --0.251622, -0.080348, --0.190749, -0.528136, --0.860747, -0.916420, --0.560152, --0.101873, -0.768001, --1.116889, -1.002728, --0.540606, -0.024456, -0.264831, --0.227902, --0.019195, -0.254432, --0.309829, -0.165590, -0.073030, --0.274699, -0.370624, --0.375277, -0.344465, --0.319548, -0.301731, --0.267739, -0.204799, --0.133848, -0.100682, --0.139376, -0.233551, --0.307316, -0.261345, --0.038250, --0.324269, -0.692798, --0.899079, -0.829485, --0.488168, --0.006553, -0.488204, --0.825044, -0.966497, --0.932240, -0.768505, --0.514977, -0.206209, -0.108126, --0.357567, -0.476753, --0.443741, -0.295385, --0.103523, --0.068001, -0.187888, --0.244348, -0.214863, --0.060907, --0.232150, -0.598460, --0.879933, -0.897461, --0.575257, -0.027946, -0.471916, --0.646944, -0.393344, -0.142319, --0.648005, -0.836868, --0.613199, -0.108153, -0.420547, --0.739970, -0.744438, --0.468264, -0.036653, -0.393684, --0.679299, -0.725076, --0.515874, -0.128204, -0.299591, --0.633734, -0.806050, --0.825417, -0.735791, --0.564152, -0.309063, -0.022513, --0.371992, -0.629940, --0.690405, -0.518244, --0.177053, --0.201355, -0.481492, --0.581916, -0.500746, --0.307575, -0.110659, --0.009833, -0.049651, --0.196147, -0.355218, --0.427024, -0.363283, --0.191326, --0.006235, -0.136308, --0.135759, --0.006783, -0.245616, --0.486448, -0.614015, --0.539921, -0.252288, -0.167200, --0.580417, -0.867227, --0.986619, -0.977901, --0.899950, -0.758616, --0.489542, -0.025487, -0.593888, --1.163041, -1.378646, --1.024107, -0.157319, -0.846021, --1.464543, -1.338758, --0.517770, --0.535399, -1.206056, --1.096714, -0.259094, -0.862285, --1.727185, -2.026507, --1.821755, -1.424443, --1.128829, -1.000749, --0.865674, -0.484529, -0.224767, --1.082986, -1.734356, --1.860668, -1.383748, --0.527486, --0.297695, -0.717548, --0.591963, -0.074411, -0.495458, --0.794638, -0.689651, --0.281890, --0.184008, -0.471653, --0.463973, -0.182596, -0.262884, --0.737404, -1.115777, --1.296382, -1.218612, --0.891267, -0.408437, -0.075222, --0.409242, -0.515728, --0.416732, -0.205662, -0.011587, --0.162215, -0.215066, --0.165594, -0.027317, -0.157987, --0.312851, -0.349153, --0.225664, --0.004432, -0.206237, --0.244998, -0.085047, -0.170890, --0.341586, -0.292040, --0.036896, --0.254084, -0.357659, --0.141082, --0.346110, -0.890966, --1.232895, -1.204393, --0.817161, -0.254007, -0.220630, --0.384466, -0.161691, -0.335908, --0.853675, -1.114934, --0.965952, -0.465704, -0.141280, --0.564396, -0.635564, --0.397395, -0.052718, -0.183098, --0.216561, -0.104524, -0.027496, --0.094821, -0.097947, --0.076742, -0.032878, -0.096939, --0.387270, -0.837160, --1.330270, -1.680931, --1.734055, -1.445852, --0.895664, -0.236220, -0.371417, --0.802596, -0.992645, --0.953756, -0.780343, --0.616963, -0.579481, --0.672537, -0.775607, --0.730471, -0.474827, --0.113104, --0.142861, -0.121538, -0.190152, --0.648571, -1.060138, --1.295666, -1.327256, --1.186638, -0.911454, --0.535370, -0.112888, -0.273400, --0.550668, -0.704902, --0.781717, -0.824818, --0.810509, -0.655164, --0.306848, --0.159010, -0.543012, --0.645394, -0.416067, --0.000561, --0.363412, -0.513457, --0.455451, -0.315676, --0.213297, -0.174481, --0.152540, -0.109288, --0.061208, -0.044211, --0.044246, --0.019322, -0.223260, --0.540466, -0.808920, --0.818109, -0.461919, -0.156809, --0.757045, -1.035081, --0.841374, -0.259239, -0.462530, --1.067345, -1.425797, --1.562907, -1.580468, --1.551918, -1.474942, --1.306676, -1.034127, --0.708249, -0.408971, --0.175059, --0.035027, -0.310979, --0.708532, -1.181520, --1.582301, -1.733444, --1.524370, -0.975615, --0.239826, --0.454575, -0.888859, --0.937691, -0.623416, --0.116785, --0.328117, -0.488761, --0.287689, --0.161743, -0.614579, --0.832081, -0.714725, --0.345073, --0.085067, -0.405967, --0.563437, -0.613020, --0.635165, -0.652532, --0.619890, -0.487804, --0.273749, -0.070915, -0.017567, -0.038300, --0.168100, -0.255381, --0.229167, -0.118074, --0.024960, -0.046302, --0.202016, -0.428407, --0.631195, -0.748583, --0.772713, -0.720448, --0.591525, -0.362091, --0.024843, --0.362148, -0.672078, --0.771438, -0.608928, --0.262960, --0.093550, -0.289234, --0.243699, --0.007063, -0.352315, --0.670448, -0.867862, --0.884964, -0.696360, --0.327822, --0.123536, -0.503926, --0.670200, -0.574837, --0.302288, -0.017522, -0.141910, --0.147807, -0.073994, --0.013877, -0.001322, --0.004996, --0.009954, -0.026152, -0.010246, --0.115177, -0.214633, --0.183674, --0.042166, -0.380183, --0.627803, -0.600550, --0.280470, --0.143763, -0.385485, --0.248332, --0.235391, -0.813230, --1.165643, -1.104487, --0.687269, -0.173081, -0.148283, --0.138511, --0.118008, -0.396519, --0.503708, -0.413436, --0.271968, -0.274566, --0.507163, -0.868744, --1.128811, -1.078542, --0.671577, -0.061310, -0.486147, --0.742509, -0.635135, --0.264476, --0.175826, -0.513007, --0.668057, -0.654422, --0.525451, -0.324576, --0.074659, --0.198231, -0.441261, --0.581969, -0.566599, --0.403204, -0.176694, --0.019834, -0.048714, --0.293368, -0.662522, --0.971657, -1.032181, --0.759754, -0.236682, -0.318684, --0.666266, -0.675872, --0.393258, -0.001146, -0.293707, --0.371095, -0.240403, --0.005233, --0.210815, -0.325300, --0.319000, -0.224362, --0.099995, -0.003516, -0.032292, --0.014679, --0.013223, -0.001238, -0.066866, --0.146865, -0.145610, -0.029287, --0.408458, -0.924839, --1.427114, -1.740498, --1.747219, -1.445775, --0.954084, -0.448638, --0.069172, --0.153140, -0.294384, --0.459299, -0.679893, --0.869564, -0.876460, --0.605584, -0.121939, -0.348366, --0.532747, -0.274837, -0.359146, --1.100565, -1.615709, --1.680785, -1.296033, --0.678212, -0.139470, -0.078868, -0.073101, --0.443106, -0.777577, --0.870455, -0.668105, --0.270481, --0.158876, -0.498936, --0.716728, -0.834460, --0.869436, -0.813680, --0.670290, -0.496934, --0.392775, -0.420935, --0.532726, -0.575555, --0.400483, --0.006920, -0.482425, --0.774335, -0.711033, --0.321774, --0.179431, -0.534639, --0.604973, -0.442543, --0.229181, -0.136609, --0.211356, -0.360631, --0.435995, -0.343353, --0.098563, --0.200525, -0.448733, --0.590234, -0.621538, --0.558143, -0.409195, --0.184612, --0.083349, -0.339937, --0.539593, -0.680059, --0.799403, -0.930490, --1.053634, -1.096979, --0.993047, -0.745376, --0.444653, -0.215319, --0.134077, -0.186983, --0.298142, -0.400745, --0.485056, -0.580506, --0.690521, -0.746229, --0.635272, -0.297169, -0.190066, --0.615452, -0.750363, --0.500152, --0.020325, -0.548251, --0.829309, -0.756920, --0.402429, --0.066435, -0.501163, --0.835196, -1.066117, --1.198020, -1.206440, --1.055748, -0.747356, --0.351585, --0.009124, -0.217764, --0.223522, -0.065681, -0.152729, --0.323521, -0.388340, --0.361337, -0.311063, --0.313882, -0.403874, --0.546397, -0.654740, --0.647850, -0.517007, --0.352092, -0.295012, --0.439282, -0.744414, --1.036899, -1.111652, --0.870431, -0.398232, -0.080968, --0.341255, -0.291388, --0.021371, --0.264450, -0.376338, --0.246418, --0.043998, -0.321476, --0.420640, -0.271925, -0.063934, --0.426109, -0.631764, --0.563905, -0.226765, -0.257089, --0.703584, -0.945902, --0.896707, -0.571514, --0.074102, --0.441619, -0.819542, --0.949294, -0.803156, --0.446814, -0.013441, -0.353510, --0.564107, -0.620245, --0.605750, -0.630837, --0.759003, -0.959988, --1.122486, -1.126191, --0.928955, -0.606910, --0.311066, -0.165709, --0.182336, -0.256508, --0.251878, -0.105457, -0.129072, --0.331825, -0.415591, --0.390373, -0.342951, --0.352977, -0.417892, --0.449091, -0.344524, --0.084223, --0.223595, -0.387222, --0.249470, --0.191158, -0.740277, --1.093033, -1.011172, --0.485948, --0.228237, -0.751486, --0.811597, -0.420291, -0.134449, --0.483632, -0.430293, --0.083213, --0.226027, -0.186309, -0.262136, --0.876663, -1.279000, --1.219244, -0.744008, --0.148546, --0.245280, -0.313825, --0.191454, -0.130375, --0.280944, -0.568238, --0.757510, -0.649063, --0.244747, --0.244051, -0.550004, --0.544353, -0.324123, --0.128677, -0.152991, --0.401004, -0.689779, --0.797576, -0.638121, --0.323840, -0.069487, --0.015664, -0.115259, --0.173864, -0.010077, -0.395052, --0.877912, -1.213757, --1.279736, -1.132638, --0.947932, -0.876115, --0.931194, -0.993164, --0.914417, -0.641436, --0.256756, --0.087100, -0.283605, --0.342611, -0.362175, --0.433000, -0.561404, --0.673812, -0.689946, --0.593900, -0.444295, --0.325995, -0.294232, --0.354241, -0.474991, --0.607604, -0.692014, --0.665706, -0.491631, --0.194405, --0.132894, -0.375682, --0.475239, -0.474526, --0.484028, -0.581606, --0.722370, -0.740569, --0.461630, --0.146759, -0.899690, --1.468107, -1.565953, --1.129136, -0.361787, -0.383580, --0.808807, -0.820469, --0.539477, -0.187641, -0.052701, --0.112359, -0.018670, -0.165486, --0.385306, -0.597915, --0.758881, -0.824064, --0.771059, -0.616155, --0.404417, -0.179743, -0.035119, --0.228192, -0.370824, --0.409966, -0.302449, --0.069583, --0.181194, -0.304571, --0.215291, --0.036423, -0.278766, --0.324528, -0.097911, -0.310845, --0.703960, -0.905019, --0.865910, -0.680203, --0.502599, -0.439726, --0.490061, -0.567723, --0.581451, -0.502975, --0.373283, -0.248463, --0.136624, --0.015087, -0.267204, --0.611434, -0.941873, --1.111304, -1.040833, --0.797928, -0.570915, --0.543104, -0.752473, --1.045668, -1.173360, --0.967630, -0.473734, -0.066213, --0.373730, -0.324919, --0.031691, --0.247970, -0.303301, --0.121344, --0.118774, -0.199139, --0.039914, --0.241879, -0.436671, --0.422246, -0.270990, --0.196646, -0.382862, --0.829041, -1.332323, --1.616767, -1.512543, --1.061145, -0.484627, --0.051708, --0.068607, --0.117445, -0.454015, --0.735580, -0.819703, --0.691066, -0.444740, --0.205116, -0.036617, -0.089911, --0.251240, -0.483030, --0.723255, -0.842200, --0.743666, -0.458372, --0.146618, --0.005274, --0.076549, -0.287380, --0.409597, -0.269584, -0.127662, --0.588550, -0.858098, --0.794840, -0.467469, --0.104028, --0.067218, --0.032096, -0.294971, --0.523683, -0.573475, --0.437434, -0.222476, --0.055473, -0.001443, --0.047650, -0.142321, --0.238497, -0.306643, --0.320302, -0.244613, --0.049413, --0.258300, -0.608811, --0.878425, -0.942213, --0.751811, -0.392036, --0.065691, --0.008689, --0.261624, -0.756911, --1.188936, -1.265841, --0.874455, -0.153300, -0.596374, --1.096583, -1.242230, --1.117449, -0.888561, --0.671246, -0.473024, --0.236842, --0.070071, -0.402921, --0.661277, -0.761471, --0.700306, -0.563496, --0.474485, -0.518795, --0.690405, -0.891434, --0.983459, -0.860744, --0.505842, -0.001439, -0.502710, --0.848051, -0.924619, --0.708365, -0.268152, -0.258955, --0.717348, -0.989525, --1.035701, -0.896841, --0.660111, -0.408005, --0.181530, --0.022892, -0.227326, --0.440874, -0.647143, --0.816276, -0.925352, --0.966727, -0.939301, --0.839673, -0.672778, --0.479614, -0.351710, --0.400602, -0.685654, --1.148047, -1.610034, --1.857965, -1.762601, --1.356638, -0.815543, --0.355329, -0.117126, --0.110735, -0.242131, --0.391365, -0.480767, --0.492874, -0.441771, --0.335818, -0.168065, -0.061005, --0.316845, -0.534496, --0.657611, -0.681654, --0.660236, -0.661810, --0.708052, -0.744476, --0.672048, -0.420544, --0.011319, --0.437318, -0.768514, --0.871421, -0.737752, --0.457314, -0.161120, -0.046650, --0.127072, -0.101825, --0.022713, --0.058883, -0.110805, --0.130405, -0.147075, --0.206727, -0.332954, --0.486615, -0.567085, --0.476994, -0.214114, -0.089358, --0.233273, -0.088688, -0.296904, --0.720349, -0.962790, --0.941563, -0.754264, --0.584741, -0.554194, --0.640461, -0.724472, --0.712126, -0.620745, --0.557306, -0.614203, --0.778090, -0.930547, --0.936732, -0.744301, --0.413656, -0.065651, -0.199211, --0.343624, -0.378585, --0.324746, -0.196423, --0.019139, --0.149136, -0.229253, --0.165955, --0.029778, -0.282195, --0.499831, -0.632146, --0.684348, -0.679186, --0.606615, -0.418458, --0.084862, --0.335702, -0.687892, --0.804837, -0.635540, --0.310911, -0.077829, --0.130298, -0.455231, --0.813811, -0.887685, --0.498740, --0.248934, -1.008287, --1.389796, -1.192313, --0.514566, --0.318183, -0.952042, --1.190915, -1.059768, --0.731061, -0.393613, --0.162610, -0.073560, --0.125353, -0.308350, --0.588258, -0.877435, --1.048344, -1.005193, --0.764243, -0.465648, --0.286417, -0.309557, --0.454453, -0.533799, --0.399478, -0.060673, -0.325002, --0.580002, -0.644807, --0.606913, -0.600180, --0.669845, -0.728677, --0.644097, -0.373483, --0.019117, --0.250317, -0.338164, --0.287081, -0.212169, --0.167897, -0.085066, -0.151311, --0.550609, -0.941172, --1.062051, -0.762529, --0.145081, --0.476586, -0.782212, --0.656842, -0.249517, -0.155616, --0.344691, -0.295568, --0.136616, -0.000079, -0.095419, --0.237689, -0.508492, --0.874389, -1.182450, --1.268380, -1.088002, --0.763361, -0.504400, --0.464840, -0.639135, --0.872172, -0.968250, --0.817665, -0.454015, --0.011875, --0.371629, -0.632730, --0.782680, -0.849326, --0.823194, -0.663598, --0.361084, --0.004888, -0.275107, --0.293523, -0.007560, -0.486317, --0.982744, -1.266756, --1.215098, -0.851422, --0.334400, --0.116360, -0.327640, --0.262197, -0.035446, -0.162042, --0.192680, -0.060609, -0.107752, --0.177073, -0.116724, --0.019191, -0.009279, --0.124799, -0.273726, --0.305850, -0.139373, -0.161277, --0.417713, -0.453463, --0.206922, --0.234423, -0.691418, --0.993444, -1.055885, --0.899505, -0.619860, --0.337872, -0.157089, --0.135402, -0.270454, --0.501646, -0.733377, --0.875048, -0.878693, --0.752202, -0.541268, --0.294908, -0.040890, -0.211533, --0.445449, -0.609929, --0.621526, -0.406885, -0.030291, --0.563446, -0.966766, --1.019219, -0.639194, -0.039313, --0.716642, -1.089901, --1.031475, -0.663998, --0.276973, -0.137029, --0.317900, -0.661435, --0.890305, -0.791851, --0.351454, --0.243595, -0.719950, --0.871760, -0.659634, --0.208807, --0.274301, -0.607825, --0.704613, -0.581421, --0.321089, -0.022406, -0.232352, --0.385074, -0.397928, --0.255364, --0.024572, -0.382910, --0.731046, -0.980607, --1.074587, -1.001360, --0.788969, -0.492767, --0.189597, --0.025795, -0.058859, -0.144786, --0.555738, -1.049137, --1.447578, -1.603358, --1.472846, -1.135970, --0.749275, -0.463096, --0.353451, -0.403475, --0.534747, -0.659363, --0.719375, -0.697656, --0.606883, -0.473984, --0.330319, -0.204267, --0.108569, -0.026102, -0.089507, --0.283461, -0.550317, --0.803257, -0.902125, --0.741490, -0.345269, -0.109967, --0.383455, -0.327542, --0.005404, --0.329413, -0.396349, --0.089013, --0.432478, -0.834355, --0.830031, -0.374195, -0.306219, --0.861493, -1.037835, --0.814166, -0.377581, -0.022306, --0.226964, -0.233856, --0.153895, -0.113070, --0.169285, -0.287214, --0.371736, -0.332003, --0.139319, --0.151842, -0.431038, --0.593131, -0.597557, --0.488296, -0.361632, --0.302771, -0.331357, --0.389380, -0.378075, --0.223436, --0.066241, -0.386614, --0.584550, -0.549056, --0.291769, --0.043468, -0.262464, --0.245317, -0.023169, -0.253411, --0.429438, -0.449645, --0.370153, -0.281378, --0.223802, -0.174976, --0.107736, -0.045356, --0.045464, -0.123527, --0.197990, -0.128607, -0.166854, --0.613011, -0.989542, --1.065118, -0.761551, --0.225937, --0.249028, -0.406768, --0.186314, --0.250725, -0.642160, --0.805600, -0.745269, --0.609780, -0.541405, --0.543831, -0.480371, --0.207855, --0.264839, -0.731648, --0.909195, -0.639424, --0.022377, --0.625672, -0.963907, --0.834862, -0.346521, -0.218888, --0.595083, -0.685207, --0.580539, -0.449935, --0.396456, -0.392793, --0.337452, -0.175059, -0.026325, --0.110581, --0.044698, -0.419936, --0.849121, -1.124263, --1.127079, -0.889107, --0.544827, -0.226651, -0.013295, --0.203850, -0.394250, --0.591331, -0.744691, --0.786263, -0.687624, --0.487769, -0.267096, --0.084754, --0.071941, -0.279399, --0.604350, -1.012364, --1.333787, -1.334639, --0.867412, -0.007856, -0.926348, --1.512889, -1.453679, --0.759909, --0.227922, -1.010835, --1.200345, -0.727413, -0.133779, --0.938308, -1.328308, --1.215128, -0.781881, --0.325932, -0.062912, --0.023474, -0.091642, --0.128436, -0.076900, -0.018543, --0.067613, -0.004164, -0.179010, --0.435637, -0.686691, --0.839968, -0.814434, --0.578476, -0.186503, -0.222032, --0.481274, -0.490636, --0.278246, --0.013988, -0.219472, --0.250847, -0.146733, --0.030022, -0.009373, --0.095946, -0.195514, --0.182480, -0.002016, -0.274729, --0.485313, -0.479224, --0.218704, --0.190811, -0.560105, --0.724859, -0.635567, --0.377068, -0.111464, -0.018104, -0.033567, --0.196127, -0.335061, --0.339568, -0.192495, -0.020247, --0.166046, -0.151671, -0.015045, --0.227620, -0.349555, --0.309540, -0.162419, --0.067427, -0.183904, --0.544290, -0.994287, --1.258214, -1.105414, --0.512781, --0.292026, -0.947387, --1.163802, -0.883366, --0.290193, --0.323676, -0.733622, --0.878723, -0.831643, --0.692697, -0.505702, --0.256139, --0.067059, -0.415126, --0.681764, -0.758482, --0.593933, -0.215360, -0.289564, --0.804384, -1.209608, --1.407082, -1.352009, --1.080977, -0.707086, --0.367256, -0.148420, --0.045573, --0.013275, -0.093590, --0.191989, -0.236783, --0.151495, --0.069763, -0.336194, --0.506355, -0.475406, --0.242769, --0.086033, -0.364085, --0.489995, -0.459174, --0.346941, -0.240092, --0.169583, -0.097919, -0.027815, --0.201106, -0.327834, --0.282027, -0.013024, -0.382400, --0.695537, -0.740313, --0.490549, -0.107082, -0.179196, --0.244655, -0.168422, --0.161486, -0.376698, --0.750169, -1.009428, --0.859519, -0.218120, -0.675154, --1.366834, -1.455390, --0.844802, --0.178929, -1.100174, --1.463997, -1.129672, --0.337219, --0.449160, -0.821012, --0.655778, -0.157689, -0.305069, --0.447720, -0.230893, -0.162324, --0.494502, -0.646172, --0.664284, -0.670772, --0.728930, -0.788644, --0.749820, -0.575722, --0.347326, -0.209037, --0.255769, -0.461245, --0.705551, -0.868586, --0.902337, -0.824559, --0.658582, -0.396271, --0.032286, --0.363307, -0.620879, --0.550466, -0.086116, -0.616069, --1.220141, -1.387083, --0.975910, -0.133783, -0.785017, --1.414489, -1.557650, --1.247034, -0.670975, --0.040498, --0.507270, -0.921540, --1.190074, -1.291157, --1.188042, -0.863710, --0.360717, --0.207620, -0.684295, --0.919734, -0.824049, --0.402092, --0.238186, -0.908062, --1.389655, -1.507044, --1.194849, -0.535104, -0.261317, --0.930148, -1.259382, --1.178954, -0.789833, --0.314428, --0.011166, -0.050171, -0.175765, --0.513204, -0.772225, --0.833676, -0.706675, --0.507887, -0.381589, --0.409835, -0.561449, --0.705188, -0.681696, --0.401421, --0.082686, -0.576789, --0.837324, -0.710067, --0.233516, --0.368341, -0.809871, --0.909490, -0.690235, --0.351120, -0.133937, --0.177437, -0.451589, --0.803329, -1.068877, --1.170853, -1.137696, --1.044785, -0.932344, --0.769590, -0.494463, --0.094502, --0.343630, -0.666773, --0.753167, -0.600818, --0.335124, -0.128621, --0.095423, -0.237342, --0.469463, -0.689204, --0.831643, -0.883745, --0.870956, -0.840602, --0.846808, -0.927018, --1.072855, -1.219903, --1.277897, -1.188638, --0.965568, -0.678078, --0.392015, -0.122417, -0.151870, --0.419507, -0.579636, --0.467194, --0.031593, -0.848152, --1.695624, -2.187110, --2.057549, -1.348272, --0.415814, --0.264992, -0.389833, --0.015146, --0.484332, -0.669473, --0.332027, --0.369769, -1.026026, --1.256339, -0.959556, --0.362717, --0.154227, -0.325276, --0.168101, --0.054618, -0.044605, -0.303716, --0.814368, -1.139555, --0.993307, -0.351394, -0.517767, --1.213331, -1.444746, --1.191508, -0.675860, --0.182964, --0.127229, -0.277431, --0.377500, -0.479820, --0.521686, -0.402366, --0.117559, --0.180628, -0.266415, --0.010229, --0.500450, -0.993316, --1.183419, -0.961815, --0.463365, --0.031085, -0.279003, --0.210950, --0.069059, -0.391392, --0.636121, -0.771116, --0.809081, -0.749206, --0.567484, -0.261937, -0.099722, --0.386936, -0.476413, --0.336286, -0.057593, -0.196155, --0.287966, -0.184497, -0.041628, --0.277885, -0.448742, --0.545330, -0.595751, --0.616263, -0.593280, --0.509675, -0.382996, --0.272158, -0.240902, --0.308958, -0.434269, --0.543253, -0.585373, --0.569275, -0.554030, --0.604475, -0.744250, --0.938293, -1.111965, --1.189407, -1.125696, --0.919519, -0.610492, --0.272209, -0.002632, -0.098273, -0.028965, --0.356342, -0.753257, --1.032238, -1.044180, --0.766305, -0.320216, -0.097587, --0.326162, -0.314898, --0.117923, --0.171154, -0.481790, --0.779941, -1.040026, --1.221360, -1.283151, --1.224412, -1.102565, --1.001008, -0.966256, --0.969505, -0.930157, --0.784441, -0.541167, --0.278471, -0.088025, --0.015863, -0.044279, --0.117144, -0.177575, --0.189493, -0.142643, --0.055567, --0.021480, -0.019122, -0.113477, --0.365930, -0.655560, --0.866139, -0.912062, --0.779297, -0.515970, --0.189766, --0.144137, -0.438582, --0.630578, -0.638855, --0.404566, --0.049005, -0.590246, --1.021726, -1.174153, --0.992085, -0.553753, --0.015347, --0.476902, -0.846340, --1.085275, -1.211051, --1.224058, -1.104234, --0.846879, -0.506093, --0.204618, -0.088955, --0.246220, -0.631359, --1.059688, -1.286871, --1.141934, -0.636640, -0.022161, --0.533975, -0.664743, --0.371694, --0.179002, -0.706461, --0.960641, -0.837169, --0.408417, --0.129407, -0.553151, --0.706279, -0.556191, --0.200242, --0.181405, -0.412464, --0.410113, -0.226056, --0.004905, --0.121139, -0.129506, --0.120357, -0.228260, --0.496409, -0.814935, --0.980887, -0.845154, --0.439691, --0.014921, -0.238550, --0.073756, --0.405177, -0.934806, --1.227905, -1.145427, --0.757620, -0.263865, -0.154446, --0.432394, -0.608382, --0.732045, -0.785249, --0.685955, -0.368836, -0.127535, --0.642053, -0.963621, --0.950820, -0.619988, --0.141106, --0.259774, -0.431092, --0.375327, -0.227319, --0.150504, -0.227000, --0.416205, -0.602159, --0.684280, -0.641358, --0.529075, -0.425140, --0.369763, -0.342283, --0.283140, -0.141029, -0.083571, --0.321971, -0.458608, --0.386135, -0.071950, -0.400551, --0.849407, -1.073958, --0.958939, -0.540657, -0.010166, --0.482752, -0.739708, --0.778510, -0.705399, --0.645102, -0.651989, --0.684751, -0.660031, --0.542469, -0.398286, --0.363567, -0.542237, --0.909472, -1.301592, --1.512373, -1.430282, --1.113029, -0.740626, --0.482469, -0.382311, --0.348903, -0.255528, --0.066630, --0.110694, -0.095619, -0.221139, --0.758705, -1.246790, --1.364718, -0.944984, --0.112956, --0.742175, -1.172308, --0.941983, -0.195625, -0.602958, --0.943506, -0.591939, -0.249761, --1.063995, -1.348015, --0.935515, -0.091753, -0.675347, --0.947476, -0.640902, --0.013962, --0.534505, -0.713950, --0.477733, --0.005841, -0.484684, --0.757391, -0.748989, --0.520414, -0.227066, --0.042952, -0.072088, --0.286913, -0.536759, --0.634256, -0.470854, --0.083193, --0.376934, -0.745219, --0.941688, -0.992431, --0.968810, -0.903750, --0.758753, -0.469817, --0.031890, --0.454152, -0.819227, --0.926455, -0.759096, --0.429205, -0.104477, -0.085948, --0.097911, --0.046344, -0.301251, --0.615571, -0.918080, --1.109855, -1.099537, --0.868276, -0.508623, --0.190724, -0.067247, --0.180891, -0.440653, --0.682578, -0.772529, --0.683824, -0.504984, --0.378356, -0.409624, --0.601366, -0.849079, --1.002809, -0.959201, --0.727488, -0.427384, --0.218573, -0.205987, --0.378639, -0.615956, --0.753525, -0.669840, --0.351212, --0.092963, -0.470941, --0.590684, -0.351296, -0.197342, --0.859314, -1.367400, --1.498803, -1.178901, --0.521519, --0.217375, -0.752205, --0.892227, -0.615601, --0.058798, --0.566301, -1.077088, --1.389363, -1.519789, --1.533418, -1.479216, --1.359508, -1.150741, --0.852784, -0.519502, --0.237259, -0.062584, -0.028870, --0.131956, -0.338513, --0.655715, -0.984118, --1.177628, -1.138831, --0.872905, -0.461222, -0.012002, --0.505756, -0.998153, --1.424154, -1.652670, --1.548512, -1.080539, --0.382850, --0.294111, -0.715080, --0.778713, -0.544222, --0.165111, --0.204948, -0.469266, --0.594970, -0.596726, --0.522035, -0.435169, --0.387595, -0.383914, --0.373867, -0.289402, --0.106203, --0.120503, -0.280578, --0.280081, -0.105703, -0.165614, --0.414553, -0.544591, --0.518163, -0.351120, --0.090199, --0.195994, -0.411188, --0.440016, -0.197879, -0.292668, --0.857448, -1.217045, --1.127830, -0.544609, -0.306559, --1.017252, -1.218085, --0.804551, -0.016142, -0.698628, --0.957434, -0.681463, --0.132834, --0.275750, -0.267230, -0.116471, --0.556781, -0.687719, --0.347016, --0.319119, -0.955100, --1.219369, -0.982905, --0.386972, --0.258202, -0.656117, --0.674620, -0.384358, -0.017924, --0.336668, -0.471963, --0.434919, -0.298375, --0.134468, --0.017895, -0.150417, --0.268541, -0.379834, --0.487828, -0.584696, --0.645996, -0.640303, --0.556975, -0.431989, --0.342569, -0.360580, --0.491253, -0.644830, --0.672915, -0.458256, --0.004891, --0.532464, -0.909511, --0.918381, -0.508095, -0.174444, --0.852971, -1.262977, --1.283098, -0.981105, --0.555103, -0.214436, --0.076333, -0.133017, --0.293571, -0.459123, --0.578089, -0.652571, --0.706192, -0.748578, --0.767012, -0.745213, --0.681711, -0.582050, --0.431146, -0.183677, -0.196343, --0.664901, -1.062480, --1.173181, -0.865185, --0.217261, --0.479900, -0.878112, --0.790915, -0.323402, -0.189893, --0.403618, -0.185474, -0.312708, --0.781616, -0.978777, --0.882949, -0.671595, --0.554448, -0.602594, --0.705554, -0.679627, --0.430639, -0.039356, -0.292221, --0.383965, -0.199260, -0.138043, --0.429855, -0.522440, --0.379190, -0.075996, -0.257599, --0.504003, -0.596547, --0.527501, -0.338700, --0.105386, --0.087240, -0.176908, --0.156807, -0.084569, --0.052066, -0.127173, --0.306717, -0.517767, --0.669264, -0.714374, --0.673416, -0.600186, --0.523129, -0.415021, --0.220157, --0.081489, -0.427256, --0.685573, -0.728611, --0.516712, -0.135937, -0.239949, --0.441226, -0.390543, --0.134354, --0.196638, -0.466107, --0.597411, -0.590696, --0.494481, -0.362705, --0.228291, -0.103231, -0.006882, --0.091209, -0.133030, --0.117004, -0.037794, -0.093914, --0.248816, -0.383068, --0.452328, -0.433986, --0.345821, -0.245902, --0.206767, -0.274816, --0.438039, -0.623019, --0.726975, -0.671974, --0.455633, -0.170340, -0.027633, -0.005590, --0.313641, -0.792480, --1.222448, -1.374395, --1.134694, -0.574730, -0.081104, --0.574611, -0.753638, --0.652267, -0.462885, --0.413284, -0.619064, --1.004308, -1.348361, --1.435006, -1.202971, --0.785351, -0.404459, --0.202938, -0.150220, --0.103319, --0.031795, -0.185307, --0.166074, --0.165676, -0.743386, --1.298459, -1.534629, --1.340040, -0.869760, --0.433163, -0.271194, --0.389714, -0.566987, --0.523013, -0.125250, -0.512131, --1.097710, -1.347696, --1.160165, -0.666990, --0.135977, --0.205654, -0.308088, --0.308717, -0.415242, --0.746378, -1.238170, --1.675673, -1.824798, --1.577789, -1.022524, --0.395544, --0.051676, -0.195515, --0.108728, -0.011249, --0.126561, -0.526768, --1.064987, -1.447003, --1.407959, -0.886752, --0.083960, --0.641763, -0.979358, --0.844802, -0.419599, --0.024861, --0.085804, --0.120933, -0.455371, --0.645176, -0.517666, --0.102240, --0.404721, -0.771930, --0.861522, -0.672903, --0.297177, --0.156068, -0.594395, --0.930982, -1.072554, --0.953386, -0.603035, --0.179388, --0.092401, -0.056950, -0.255301, --0.630932, -0.806306, --0.636816, -0.179102, -0.366723, --0.797466, -1.017779, --1.050460, -0.967356, --0.820502, -0.631013, --0.424967, -0.259557, --0.201311, -0.275473, --0.438430, -0.603536, --0.697820, -0.699874, --0.631016, -0.520163, --0.384457, -0.243632, --0.142331, -0.141261, --0.269827, -0.480797, --0.658466, -0.689624, --0.547587, -0.318433, --0.141698, -0.108603, --0.197935, -0.299799, --0.306285, -0.196430, --0.051603, --0.005523, --0.102212, -0.357111, --0.664072, -0.913615, --1.041572, -1.046905, --0.965332, -0.828645, --0.644908, -0.412300, --0.148760, --0.093780, -0.247661, --0.269971, -0.175756, --0.038300, --0.046347, -0.011751, -0.139493, --0.331583, -0.451699, --0.409019, -0.186042, -0.147044, --0.464101, -0.644315, --0.628962, -0.445148, --0.187609, --0.028076, -0.117112, --0.059935, --0.093498, -0.251884, --0.332596, -0.310738, --0.238502, -0.217012, --0.329658, -0.575171, --0.847383, -0.983215, --0.854891, -0.448561, -0.121661, --0.671055, -1.032291, --1.118218, -0.931563, --0.534997, -0.016319, -0.528208, --0.997560, -1.294585, --1.348901, -1.143957, --0.731160, -0.222488, -0.234115, --0.490326, -0.443336, --0.087539, --0.450617, -0.933474, --1.109870, -0.856816, --0.278703, --0.320377, -0.600219, --0.392581, --0.184795, -0.792775, --1.078590, -0.891658, --0.367557, --0.170034, -0.419394, --0.285533, --0.074787, -0.368568, --0.361877, -0.027602, -0.447756, --0.797460, -0.854092, --0.652135, -0.386385, --0.263234, -0.356589, --0.571508, -0.732772, --0.721256, -0.551333, --0.337750, -0.191116, --0.133482, -0.100760, --0.020266, --0.110220, -0.212712, --0.196796, -0.045362, -0.156907, --0.279767, -0.245301, --0.089101, --0.066183, -0.106616, --0.018100, --0.099877, -0.111920, -0.042397, --0.292237, -0.480326, --0.476043, -0.267466, -0.038760, --0.303746, -0.453076, --0.506319, -0.527063, --0.550350, -0.554454, --0.491745, -0.336695, --0.102712, --0.177327, -0.471471, --0.741389, -0.922324, --0.932410, -0.727225, --0.359755, --0.019123, -0.242438, --0.236658, -0.068406, -0.116297, --0.211929, -0.230169, --0.269737, -0.411203, --0.632897, -0.818556, --0.842745, -0.658198, --0.321148, --0.048441, -0.329080, --0.443449, -0.378552, --0.186632, --0.034900, -0.189858, --0.241721, -0.243057, --0.300854, -0.489682, --0.775479, -1.016128, --1.049015, -0.804122, --0.356813, --0.119902, -0.464739, --0.615523, -0.614713, --0.542809, -0.443619, --0.302211, -0.084996, -0.200063, --0.477742, -0.636300, --0.592952, -0.348453, -0.006047, --0.335112, -0.530783, --0.567323, -0.505148, --0.441857, -0.442728, --0.497977, -0.536392, --0.483381, -0.318797, --0.090035, --0.127046, -0.284581, --0.387944, -0.469767, --0.538374, -0.550338, --0.436701, -0.164894, -0.215338, --0.582548, -0.805996, --0.813474, -0.617976, --0.294293, --0.063946, -0.369873, --0.544877, -0.521180, --0.269659, --0.156295, -0.605494, --0.879584, -0.838066, --0.491470, -0.007104, -0.392474, --0.577084, -0.597030, --0.640121, -0.879739, --1.321149, -1.763558, --1.917622, -1.605307, --0.902033, -0.112808, -0.412062, --0.499753, -0.260543, -0.000308, --0.002730, --0.313787, -0.758592, --1.037474, -0.964641, --0.583793, -0.119072, -0.193622, --0.261680, -0.166991, --0.066193, -0.052666, --0.093591, -0.085478, -0.028234, --0.183966, -0.235883, --0.076959, --0.256931, -0.589113, --0.715029, -0.542159, --0.151910, --0.260258, -0.517093, --0.565195, -0.481930, --0.389860, -0.350917, --0.321095, -0.196385, -0.086565, --0.470610, -0.781732, --0.822329, -0.498922, -0.100423, --0.736432, -1.144497, --1.177553, -0.874759, --0.416890, -0.008950, -0.224910, --0.271494, -0.186376, --0.033402, --0.142627, -0.303418, --0.397961, -0.371256, --0.199713, --0.080380, -0.384612, --0.630324, -0.785291, --0.872267, -0.924094, --0.930613, -0.831938, --0.574432, -0.186338, -0.197824, --0.400846, -0.318612, --0.002565, --0.359623, -0.558760, --0.495273, -0.232978, -0.061189, --0.244282, -0.294561, --0.306064, -0.388200, --0.554701, -0.698708, --0.682351, -0.470628, --0.190903, -0.051240, --0.168513, -0.446486, --0.619252, -0.447666, -0.076257, --0.682754, -0.986687, --0.746822, -0.032943, -0.819861, --1.430199, -1.601105, --1.406376, -1.093451, --0.894457, -0.884043, --0.966489, -0.973433, --0.786561, -0.404715, -0.070410, --0.500904, -0.780784, --0.869650, -0.785988, --0.578607, -0.302014, --0.011123, --0.231001, -0.353704, --0.304735, -0.093983, -0.178901, --0.349406, -0.271373, -0.082535, --0.571591, -0.939897, --0.961386, -0.596174, --0.049579, --0.328790, -0.264182, -0.244481, --0.893598, -1.256184, --1.066328, -0.408357, -0.333678, --0.739943, -0.644503, --0.239399, --0.081504, -0.017250, -0.429444, --0.975293, -1.279170, --1.182942, -0.790900, --0.349263, -0.042600, -0.127054, --0.297638, -0.596982, --1.016283, -1.403607, --1.570078, -1.418879, --1.003080, -0.484550, --0.039302, --0.220412, -0.268987, --0.147325, --0.065253, -0.269418, --0.365012, -0.286745, --0.047054, --0.248088, -0.439217, --0.398620, -0.109492, -0.317009, --0.704642, -0.917838, --0.942138, -0.884728, --0.892227, -1.039486, --1.266476, -1.412328, --1.328201, -0.990279, --0.526580, -0.131144, -0.075091, --0.131132, -0.200092, --0.434227, -0.842984, --1.267725, -1.486807, --1.375466, -1.001643, --0.584658, -0.343675, --0.344882, -0.458390, --0.457222, -0.186782, -0.318442, --0.854283, -1.184754, --1.195496, -0.954817, --0.649206, -0.452203, --0.423712, -0.500173, --0.563464, -0.527689, --0.386045, -0.199671, --0.047235, --0.029588, -0.055340, --0.108244, -0.267085, --0.541176, -0.827947, --0.941077, -0.715631, --0.137602, --0.592800, -1.131192, --1.174501, -0.654070, -0.196114, --0.955824, -1.255439, --0.984026, -0.338441, -0.309441, --0.632625, -0.518479, --0.097479, --0.363495, -0.624071, --0.593194, -0.351466, --0.072777, --0.099448, -0.140831, --0.140958, -0.210442, --0.373363, -0.534693, --0.553950, -0.366431, --0.047867, --0.235360, -0.349883, --0.287930, -0.154288, --0.067433, -0.066396, --0.100643, -0.099684, --0.049625, -0.005946, --0.036481, -0.152300, --0.290223, -0.360407, --0.314305, -0.174789, --0.008670, --0.126361, -0.210641, --0.247277, -0.229306, --0.132349, --0.051772, -0.272765, --0.420103, -0.381625, --0.126843, --0.250682, -0.574596, --0.690730, -0.564468, --0.299704, -0.063945, -0.027382, -0.015773, --0.078001, -0.033452, -0.155994, --0.410697, -0.588580, --0.581740, -0.384892, --0.093447, --0.157950, -0.269934, --0.221670, -0.067310, -0.101174, --0.200713, -0.192863, --0.095752, --0.032531, -0.130935, --0.171451, -0.170920, --0.172133, -0.211454, --0.299382, -0.424887, --0.570083, -0.714338, --0.823432, -0.840847, --0.701415, -0.368562, -0.127648, --0.679308, -1.130396, --1.337393, -1.232716, --0.858160, -0.347636, -0.136230, --0.477847, -0.652308, --0.711247, -0.725318, --0.729276, -0.709936, --0.639349, -0.516015, --0.372669, -0.242367, --0.116681, --0.059282, -0.341511, --0.723887, -1.112189, --1.365362, -1.382046, --1.170773, -0.850665, --0.579469, -0.460023, --0.490636, -0.589295, --0.663962, -0.671532, --0.625278, -0.558579, --0.485813, -0.393851, --0.262195, -0.084371, -0.128959, --0.358249, -0.574983, --0.730152, -0.753200, --0.583117, -0.220894, -0.238128, --0.629773, -0.798572, --0.678981, -0.329568, -0.094666, --0.407475, -0.460399, --0.197181, --0.313873, -0.884317, --1.264595, -1.251707, --0.796271, -0.040467, -0.747436, --1.306888, -1.504764, --1.372095, -1.050466, --0.697221, -0.411153, --0.210804, -0.058669, -0.095863, --0.280922, -0.486308, --0.668308, -0.767736, --0.732954, -0.542389, --0.224265, --0.132728, -0.391526, --0.414068, -0.134996, -0.377008, --0.920700, -1.247958, --1.197514, -0.796021, --0.254103, --0.150464, -0.234040, --0.009538, --0.335571, -0.568644, --0.559178, -0.345278, --0.082191, --0.079176, -0.088590, --0.000591, --0.101137, -0.182407, --0.268828, -0.385890, --0.497759, -0.516998, --0.386957, -0.159729, -0.016202, --0.005015, --0.200274, -0.462733, --0.610737, -0.579797, --0.460691, -0.411156, --0.513520, -0.709808, --0.870029, -0.922348, --0.916211, -0.956948, --1.075711, -1.162487, --1.034655, -0.590207, -0.080894, --0.721112, -1.051775, --0.939286, -0.473218, -0.083611, --0.433718, -0.392823, -0.024744, --0.619350, -1.111110, --1.289300, -1.129395, --0.806238, -0.582416, --0.630068, -0.898781, --1.126289, -0.999208, --0.367387, --0.628527, -1.605617, --2.139401, -1.996750, --1.263662, -0.298598, -0.454790, --0.688092, -0.367209, -0.272162, --0.859981, -1.084494, --0.845896, -0.296341, -0.252938, --0.508119, -0.356127, -0.079175, --0.521746, -0.717289, --0.585942, -0.257143, -0.031460, --0.097498, --0.071109, -0.321014, --0.444796, -0.317029, -0.033511, --0.454206, -0.770412, --0.887238, -0.827870, --0.693835, -0.586267, --0.548457, -0.564912, --0.601539, -0.640339, --0.675237, -0.681466, --0.602296, -0.382424, --0.029613, --0.350551, -0.589170, --0.547959, -0.213230, -0.276604, --0.694714, -0.845893, --0.671044, -0.274075, -0.142313, --0.390337, -0.391499, --0.201118, --0.040947, -0.195181, --0.192922, -0.062268, -0.093901, --0.151419, -0.028397, -0.265111, --0.616233, -0.852375, --0.828803, -0.518321, --0.046238, --0.363885, -0.514360, --0.356118, -0.029158, -0.213892, --0.158454, --0.241917, -0.839875, --1.386529, -1.675712, --1.645910, -1.383364, --1.041906, -0.745090, --0.533003, -0.374406, --0.220202, -0.056074, -0.079228, --0.118485, -0.016993, -0.204222, --0.456256, -0.630372, --0.668203, -0.603083, --0.536246, -0.559854, --0.682772, -0.817790, --0.843184, -0.693853, --0.413686, -0.130638, -0.027249, --0.014985, --0.102604, -0.195808, --0.154525, --0.042193, -0.313235, --0.525537, -0.574774, --0.447899, -0.229956, --0.053000, -0.019497, --0.146202, -0.358878, --0.535754, -0.571925, --0.430484, -0.157833, -0.141846, --0.361504, -0.449195, --0.436025, -0.410583, --0.449008, -0.546761, --0.607339, -0.506665, --0.190934, --0.268058, -0.708183, --0.979820, -1.037242, --0.948868, -0.823617, --0.719664, -0.613577, --0.453189, -0.243409, --0.082397, -0.104140, --0.364374, -0.762621, --1.075112, -1.090184, --0.751385, -0.198962, -0.326129, --0.644562, -0.743272, --0.745451, -0.778987, --0.857579, -0.873957, --0.707063, -0.348092, -0.064266, --0.331643, -0.335839, --0.118388, --0.159010, -0.334057, --0.344509, -0.238423, --0.105104, --0.000139, -0.073667, --0.123613, -0.127430, --0.037670, --0.164981, -0.422228, --0.604359, -0.579752, --0.303480, --0.136613, -0.550844, --0.739749, -0.594469, --0.150651, --0.429435, -0.932541, --1.188074, -1.138065, --0.856760, -0.513395, --0.291600, -0.296761, --0.494898, -0.722755, --0.778978, -0.556862, --0.139401, --0.218504, -0.233280, -0.214264, --0.964992, -1.640781, --1.857863, -1.460081, --0.612814, --0.307140, -0.944782, --1.157259, -1.038857, --0.790173, -0.551750, --0.329318, -0.047578, -0.334325, --0.747972, -1.037555, --1.055065, -0.756935, --0.238081, --0.312085, -0.699024, --0.804461, -0.620069, --0.227833, --0.247692, -0.682453, --0.974944, -1.055697, --0.901550, -0.555229, --0.127789, --0.239880, -0.449830, --0.507389, -0.516557, --0.600550, -0.799818, --1.027877, -1.127842, --0.994031, -0.667679, --0.329002, -0.183187, --0.316889, -0.626423, --0.870309, -0.816455, --0.392754, --0.251674, -0.813412, --0.994219, -0.664943, -0.058310, --0.869546, -1.430908, --1.543600, -1.234454, --0.711468, -0.223828, -0.079570, --0.204294, -0.254835, --0.326349, -0.432442, --0.519755, -0.542803, --0.523013, -0.534926, --0.632652, -0.786894, --0.893795, -0.851401, --0.639942, -0.341836, --0.090868, --0.006272, --0.074786, -0.265922, --0.434904, -0.440552, --0.203348, --0.233902, -0.698676, --0.964757, -0.885095, --0.498159, -0.023808, -0.263771, --0.208369, --0.126142, -0.492230, --0.609911, -0.337297, -0.240781, --0.854232, -1.193079, --1.075493, -0.546916, -0.144598, --0.683314, -0.853317, --0.640801, -0.214307, -0.194649, --0.426627, -0.460295, --0.382039, -0.300777, --0.276325, -0.303614, --0.345064, -0.372889, --0.388450, -0.411513, --0.455174, -0.507350, --0.531653, -0.487423, --0.357281, -0.164841, -0.031137, --0.166289, -0.207269, --0.170575, -0.108812, --0.073227, -0.080714, --0.111126, -0.135690, --0.150214, -0.181676, --0.260201, -0.380314, --0.485962, -0.495044, --0.348131, -0.049684, -0.323306, --0.648648, -0.809093, --0.743639, -0.478169, --0.119730, --0.187021, -0.322484, --0.242859, --0.007397, -0.325619, --0.604141, -0.777607, --0.841810, -0.838546, --0.817456, -0.797615, --0.751928, -0.626021, --0.381750, -0.037902, -0.320692, --0.575070, -0.628339, --0.454626, -0.114798, -0.267323, --0.555997, -0.659560, --0.569141, -0.363781, --0.176682, -0.132858, --0.283326, -0.568650, --0.835875, -0.909025, --0.683568, -0.195386, -0.380546, --0.812363, -0.934285, --0.737562, -0.367939, --0.027865, --0.150371, -0.170267, --0.130245, -0.114510, --0.109964, -0.021591, -0.225078, --0.583448, -0.879760, --0.917621, -0.615586, --0.070870, --0.499637, -0.892624, --1.023964, -0.937423, --0.731520, -0.480839, --0.216133, --0.037950, -0.222935, --0.255791, -0.085888, -0.251259, --0.633418, -0.909860, --0.976560, -0.818335, --0.498936, -0.119370, -0.221914, --0.449744, -0.519886, --0.426371, -0.209149, -0.049930, --0.252211, -0.320225, --0.227686, -0.005400, -0.275529, --0.529254, -0.678706, --0.677472, -0.531128, --0.307718, -0.118432, --0.063847, -0.172314, --0.375330, -0.546147, --0.580449, -0.462220, --0.267175, -0.103564, --0.035840, -0.044634, --0.046052, --0.047637, -0.265731, --0.551196, -0.782445, --0.835595, -0.656857, --0.303838, --0.073462, -0.308997, --0.312407, -0.118511, -0.139630, --0.316982, -0.342924, --0.248159, -0.117080, --0.008131, --0.090506, -0.232289, --0.435551, -0.628396, --0.672003, -0.455696, -0.006084, --0.554153, -0.967716, --1.097051, -0.954152, --0.697603, -0.522232, --0.529701, -0.667643, --0.776227, -0.706216, --0.425355, -0.040846, -0.270332, --0.366619, -0.208192, -0.147153, --0.590115, -0.997366, --1.243461, -1.216857, --0.870687, -0.288131, -0.306380, --0.639853, -0.551914, --0.112794, --0.402488, -0.681055, --0.566757, -0.144952, -0.335952, --0.637701, -0.671041, --0.513955, -0.321762, --0.214422, -0.220521, --0.296023, -0.377575, --0.421692, -0.411746, --0.348244, -0.243389, --0.124209, -0.033544, --0.019568, -0.115058, --0.316436, -0.574101, --0.802086, -0.908983, --0.840132, -0.609396, --0.298232, -0.018068, -0.142071, --0.150074, -0.029760, -0.165555, --0.379917, -0.566331, --0.687132, -0.716606, --0.650911, -0.516882, --0.367873, -0.264311, --0.248535, -0.326752, --0.466381, -0.608808, --0.692154, -0.674820, --0.550481, -0.347511, --0.113927, --0.103560, -0.275590, --0.395282, -0.473057, --0.524354, -0.553172, --0.537018, -0.425155, --0.163046, --0.259030, -0.761647, --1.179476, -1.333161, --1.138974, -0.681183, --0.183242, --0.118400, -0.116834, -0.107203, --0.353329, -0.444880, --0.343687, -0.159539, --0.057649, -0.137452, --0.366759, -0.608072, --0.710526, -0.604663, --0.344775, -0.080877, -0.019002, -0.144641, --0.546675, -1.037451, --1.404012, -1.471127, --1.195478, -0.698002, --0.206430, --0.065662, -0.032185, -0.229213, --0.535098, -0.704106, --0.646425, -0.390909, --0.050467, --0.243816, -0.404742, --0.420386, -0.340957, --0.227560, -0.096254, -0.096738, --0.406518, -0.820454, --1.220350, -1.436267, --1.365937, -1.065628, --0.726501, -0.541861, --0.566992, -0.688989, --0.735401, -0.632408, --0.477465, -0.461499, --0.700276, -1.110424, --1.432276, -1.388648, --0.869403, -0.014048, -0.862434, --1.450600, -1.616216, --1.452546, -1.189332, --1.028876, -1.025791, --1.089695, -1.093555, --0.990279, -0.839470, --0.729127, -0.672301, --0.581552, -0.352223, -0.017972, --0.387828, -0.559881, --0.432555, -0.090784, -0.244417, --0.369685, -0.234436, -0.044443, --0.287027, -0.379873, --0.330111, -0.219072, --0.113922, -0.017323, -0.113027, --0.305826, -0.535143, --0.727395, -0.805284, --0.733058, -0.534872, --0.277296, -0.027632, -0.188655, --0.403848, -0.678984, --1.039957, -1.421427, --1.671444, -1.634510, --1.267754, -0.702714, --0.189614, --0.055417, --0.002393, -0.186632, --0.230580, --0.030640, -0.534529, --1.026074, -1.231405, --1.047358, -0.614039, --0.223272, -0.131204, --0.404459, -0.894468, --1.341512, -1.528298, --1.387611, -1.014453, --0.595170, -0.303376, --0.215460, -0.280859, --0.359221, -0.307483, --0.071212, --0.276581, -0.579311, --0.697689, -0.597977, --0.365975, -0.143438, --0.042910, -0.105091, --0.315271, -0.639773, --1.034023, -1.416736, --1.653901, -1.598419, --1.180930, -0.488725, -0.239690, --0.724767, -0.802950, --0.529638, -0.154500, -0.025297, -0.152211, --0.609738, -1.075493, --1.254724, -1.022357, --0.509961, -0.022679, -0.165122, -0.002425, --0.327202, -0.505762, --0.356694, --0.043532, -0.421903, --0.520429, -0.291301, -0.077693, --0.322049, -0.307307, --0.112292, --0.071774, -0.125677, --0.100430, -0.142820, --0.324594, -0.544016, --0.603461, -0.399729, --0.049123, --0.182087, -0.097178, -0.248947, --0.571615, -0.577373, --0.207165, --0.298524, -0.568933, --0.374967, --0.204482, -0.841166, --1.184376, -1.080637, --0.634959, -0.095995, -0.323911, --0.557059, -0.661923, --0.727872, -0.795273, --0.842871, -0.826040, --0.718302, -0.527507, --0.290193, -0.058699, -0.115425, --0.203594, -0.219537, --0.217870, -0.263906, --0.390638, -0.572012, --0.730993, -0.775896, --0.643662, -0.329837, -0.104444, --0.550534, -0.890352, --1.041957, -0.992702, --0.802855, -0.576521, --0.413117, -0.361853, --0.399058, -0.440078, --0.384513, -0.178662, -0.137904, --0.436093, -0.562534, --0.433980, -0.098361, -0.286572, --0.549414, -0.610054, --0.518414, -0.403177, --0.376943, -0.473719, --0.657581, -0.876964, --1.105673, -1.336597, --1.547170, -1.681360, --1.670842, -1.476417, --1.115154, -0.657933, --0.209290, --0.117419, -0.233243, --0.120655, --0.127425, -0.323795, --0.282915, --0.048757, -0.527790, --0.886555, -0.910360, --0.589894, -0.127526, -0.209692, --0.273495, -0.113123, -0.097228, --0.204798, -0.175696, --0.081559, -0.013918, --0.012168, -0.057040, --0.111802, -0.157049, --0.184987, -0.168835, --0.050747, --0.224367, -0.647802, --1.111846, -1.445241, --1.512484, -1.312294, --0.995712, -0.774576, --0.774576, -0.937295, --1.048806, -0.883187, --0.365283, --0.357716, -0.984789, --1.227870, -0.976983, --0.368294, --0.283112, -0.650112, --0.569186, -0.126251, -0.399308, --0.702544, -0.633597, --0.280262, --0.096718, -0.231313, --0.014654, --0.446176, -0.899875, --1.098797, -0.931531, --0.469647, --0.083875, -0.504933, --0.655393, -0.536443, --0.268999, -0.017788, -0.098817, --0.065266, --0.036700, -0.088016, --0.007403, --0.203520, -0.467644, --0.681353, -0.771676, --0.728284, -0.595030, --0.429629, -0.259264, --0.065897, --0.183628, -0.482004, --0.749496, -0.865215, --0.750372, -0.439545, --0.072454, --0.199031, -0.320031, --0.368848, -0.489420, --0.773900, -1.186042, --1.576903, -1.770854, --1.657674, -1.239756, --0.625121, --0.016098, -0.511305, --0.745067, -0.699304, --0.452745, -0.135618, -0.134946, --0.297336, -0.343422, --0.287571, -0.144757, -0.061235, --0.275421, -0.412053, --0.395067, -0.213829, -0.054220, --0.280990, -0.362717, --0.276385, -0.076515, -0.156723, --0.366908, -0.527659, --0.613956, -0.585606, --0.416017, -0.146361, -0.094049, --0.142553, --0.089627, -0.534854, --0.982741, -1.195627, --1.055119, -0.638917, --0.171278, --0.122927, -0.160367, --0.038110, --0.054832, --0.017120, -0.245519, --0.505690, -0.667780, --0.691126, -0.625475, --0.532786, -0.415468, --0.225160, --0.058255, -0.362041, --0.545307, -0.503789, --0.263781, --0.023322, -0.188465, --0.165943, -0.028079, -0.089971, --0.105661, -0.048592, --0.023624, -0.120098, --0.344286, -0.618832, --0.833962, -0.904522, --0.801576, -0.557607, --0.256141, -0.006345, -0.101411, --0.046310, --0.100771, -0.213123, --0.189105, -0.021132, -0.203849, --0.374514, -0.437262, --0.421039, -0.388263, --0.361602, -0.295241, --0.114432, --0.213976, -0.639731, --1.045596, -1.304044, --1.334299, -1.132662, --0.772618, -0.382147, --0.103820, -0.043295, --0.220509, -0.547175, --0.850092, -0.941736, --0.713447, -0.206881, -0.381309, --0.780010, -0.780516, --0.357012, --0.305537, -0.902724, --1.171598, -1.024748, --0.579731, -0.076852, -0.254265, --0.300720, -0.099172, -0.202155, --0.421933, -0.430138, --0.208329, --0.139771, -0.440010, --0.543947, -0.416681, --0.157433, --0.066270, -0.127663, --0.014575, --0.183159, -0.355549, --0.452191, -0.498269, --0.545128, -0.609670, --0.658111, -0.641331, --0.541378, -0.385020, --0.218475, -0.074925, -0.033438, --0.098296, -0.101429, --0.028166, --0.100052, -0.209697, --0.206007, -0.042020, -0.224138, --0.439160, -0.443854, --0.188898, --0.210058, -0.531602, --0.593456, -0.382227, --0.070690, --0.096585, --0.028289, -0.390966, --0.763683, -0.887599, --0.636121, -0.099934, -0.453705, --0.722728, -0.535513, -0.048561, --0.760520, -1.259585, --1.315779, -0.933882, --0.341910, --0.151277, -0.339377, --0.223829, --0.024048, -0.207055, --0.240687, -0.186435, --0.167086, -0.243384, --0.355624, -0.372466, --0.200636, --0.135332, -0.501878, --0.740503, -0.761844, --0.589337, -0.336104, --0.140904, -0.101539, --0.233195, -0.462682, --0.659324, -0.693999, --0.505267, -0.139813, -0.260177, --0.524032, -0.540824, --0.317748, --0.026415, -0.327840, --0.462646, -0.401880, --0.212667, -0.015245, -0.074611, -0.006984, --0.247659, -0.560969, --0.816356, -0.892326, --0.734927, -0.391619, -0.004169, --0.297295, -0.391789, --0.300962, -0.134360, --0.028216, -0.062496, --0.217330, -0.395174, --0.490409, -0.456864, --0.327521, -0.176723, --0.057331, --0.038054, -0.162636, --0.359218, -0.605807, --0.806557, -0.839977, --0.634548, -0.221538, -0.271379, --0.683395, -0.901145, --0.907487, -0.771602, --0.592055, -0.433661, --0.299185, -0.150165, -0.044288, --0.269373, -0.464524, --0.558450, -0.511472, --0.336140, -0.087031, -0.169066, --0.381905, -0.531412, --0.621019, -0.655676, --0.619404, -0.473427, --0.187967, --0.205553, -0.584616, --0.770481, -0.628047, --0.171833, --0.406113, -0.827059, --0.890010, -0.600228, --0.168913, --0.120550, -0.088454, -0.241413, --0.675830, -0.980598, --1.007804, -0.746616, --0.292002, --0.219485, -0.656070, --0.907797, -0.896740, --0.600722, -0.081773, -0.512259, --0.994138, -1.217730, --1.146697, -0.868008, --0.540204, -0.307900, --0.231947, -0.270547, --0.314329, -0.252040, --0.034348, --0.292838, -0.603831, --0.757051, -0.679520, --0.421137, -0.134729, -0.016475, -0.035403, --0.222123, -0.396987, --0.445702, -0.360968, --0.224004, -0.119024, --0.064002, -0.019852, -0.039233, --0.073452, -0.005324, -0.190575, --0.422067, -0.512814, --0.324478, --0.126471, -0.658585, --1.041671, -1.155456, --1.066871, -0.961460, --0.979489, -1.086900, --1.090440, -0.795684, --0.189312, --0.503020, -0.944868, --0.920598, -0.498209, -0.007272, --0.252429, -0.105932, -0.270892, --0.563529, -0.552346, --0.273774, --0.028555, -0.116223, -0.043900, --0.253577, -0.249248, -0.074605, --0.562030, -0.891661, --0.798578, -0.258114, -0.495378, --1.117008, -1.355720, --1.179661, -0.759140, --0.344062, -0.127849, --0.170680, -0.398554, --0.651781, -0.754965, --0.594040, -0.182700, -0.319980, --0.677034, -0.710496, --0.422204, --0.002264, -0.327419, --0.441637, -0.424541, --0.445023, -0.579341, --0.719497, -0.666555, --0.332918, --0.133014, -0.427730, --0.326624, --0.123113, -0.619347, --0.827241, -0.629910, --0.208288, --0.107783, -0.090542, -0.233688, --0.640503, -0.906602, --0.978470, -0.978288, --1.061718, -1.265996, --1.482101, -1.565241, --1.473520, -1.304885, --1.200482, -1.205185, --1.213799, -1.053697, --0.634354, -0.037883, -0.524041, --0.850340, -0.876708, --0.695770, -0.469290, --0.313706, -0.249139, --0.236359, -0.246680, --0.288525, -0.368207, --0.438442, -0.408312, --0.226764, --0.034406, -0.193474, --0.085309, --0.290974, -0.733622, --0.957583, -0.788081, --0.278800, --0.334271, -0.798268, --0.993703, -0.962447, --0.817522, -0.632116, --0.405773, -0.122327, -0.172236, --0.357895, -0.317319, --0.041198, --0.328212, -0.561312, --0.476237, -0.053680, -0.547557, --1.083683, -1.364578, --1.347118, -1.129428, --0.862428, -0.649262, --0.502608, -0.378910, --0.248291, -0.135653, --0.098563, -0.164891, --0.288808, -0.368916, --0.318597, -0.131077, -0.116784, --0.327717, -0.460921, --0.555419, -0.677213, --0.835676, -0.945482, --0.874905, -0.549142, --0.028840, --0.499324, -0.818356, --0.799350, -0.466399, -0.028380, --0.496263, -0.808330, --0.939018, -0.940395, --0.878875, -0.788224, --0.671473, -0.536699, --0.419069, -0.356184, --0.334489, -0.264074, --0.024095, --0.440975, -1.048106, --1.593150, -1.859231, --1.743845, -1.315218, --0.761191, -0.272920, -0.053093, --0.233589, -0.341162, --0.426890, -0.483304, --0.468053, -0.359024, --0.190154, -0.036595, -0.038943, --0.034178, -0.007452, --0.027085, -0.109639, --0.199945, -0.212378, --0.100733, --0.101669, -0.304064, --0.420228, -0.416458, --0.311238, -0.141028, -0.065558, --0.281777, -0.461812, --0.540180, -0.463549, --0.231805, --0.087217, -0.382248, --0.545316, -0.511490, --0.276672, --0.105287, -0.537933, --0.906507, -1.109792, --1.092792, -0.865662, --0.497482, -0.085556, -0.284444, --0.566441, -0.757054, --0.876502, -0.941825, --0.948820, -0.871531, --0.679231, -0.363936, -0.034040, --0.419689, -0.671911, --0.704964, -0.531099, --0.275428, -0.114800, --0.168253, -0.415054, --0.708425, -0.883062, --0.876434, -0.766800, --0.696041, -0.741046, --0.841571, -0.846957, --0.646672, -0.279433, -0.070237, --0.193319, -0.009838, -0.359680, --0.662567, -0.679836, --0.375691, --0.073140, -0.388450, --0.364726, --0.009489, -0.556158, --1.022104, -1.219751, --1.107271, -0.775378, --0.371155, -0.019761, -0.211905, --0.306204, -0.269216, --0.118573, --0.109494, -0.352503, --0.533480, -0.592335, --0.513439, -0.326323, --0.078696, --0.193374, -0.470819, --0.727968, -0.904608, --0.907490, -0.654749, --0.142537, --0.512644, -1.096672, --1.389518, -1.280702, --0.835753, -0.263363, -0.204089, --0.440993, -0.481709, --0.462536, -0.499559, --0.596201, -0.648553, --0.539852, -0.246524, -0.128942, --0.424118, -0.529015, --0.454241, -0.300243, --0.155831, -0.016846, -0.197908, --0.541453, -0.937810, --1.187136, -1.093409, --0.623064, --0.034501, -0.562736, --0.708124, -0.429095, -0.098163, --0.611649, -0.931981, --1.050386, -1.087895, --1.171235, -1.323277, --1.445542, -1.399649, --1.124176, -0.699236, --0.307701, -0.113617, --0.140039, -0.235917, --0.167384, --0.217795, -0.862059, --1.500884, -1.807121, --1.589761, -0.918980, --0.096824, --0.507306, -0.654183, --0.350303, --0.176186, -0.614784, --0.743704, -0.540249, --0.173538, --0.112935, -0.159110, -0.011894, --0.218817, -0.257893, --0.053950, --0.283478, -0.540964, --0.555065, -0.319223, -0.034843, --0.354002, -0.573219, --0.727711, -0.870339, --0.982553, -0.967815, --0.736229, -0.302530, -0.194175, --0.571055, -0.716797, --0.648475, -0.470118, --0.277540, -0.094214, -0.112520, --0.359328, -0.592404, --0.705358, -0.619425, --0.359412, -0.058975, -0.116921, --0.078936, --0.127938, -0.356887, --0.459162, -0.379968, --0.184788, -0.002120, -0.070746, --0.030215, --0.045479, -0.067553, --0.009740, --0.072730, -0.089127, -0.015822, --0.221799, -0.448391, --0.604320, -0.627672, --0.496311, -0.222820, -0.143953, --0.513529, -0.771873, --0.836168, -0.715950, --0.523752, -0.407856, --0.445988, -0.580437, --0.650621, -0.505535, --0.117186, --0.384424, -0.779118, --0.883488, -0.659056, --0.237047, --0.153784, -0.312472, --0.170301, --0.185587, -0.576786, --0.838513, -0.898707, --0.791738, -0.614871, --0.465841, -0.398885, --0.414550, -0.477292, --0.543497, -0.581114, --0.569681, -0.485897, --0.296316, --0.022267, -0.439908, --0.844876, -1.071553, --0.989480, -0.602055, --0.078091, --0.324347, -0.406029, --0.151168, --0.258167, -0.551580, --0.533194, -0.193823, -0.293129, --0.679925, -0.784391, --0.580506, -0.197937, -0.156852, --0.308642, -0.195122, -0.112502, --0.451702, -0.648464, --0.597247, -0.309069, -0.090769, --0.417203, -0.514599, --0.342721, -0.009963, -0.276881, --0.329115, -0.091279, -0.321563, --0.692145, -0.829166, --0.669801, -0.296175, -0.129787, --0.458393, -0.616742, --0.626155, -0.582786, --0.613959, -0.814157, --1.172657, -1.531821, --1.627670, -1.227277, --0.301257, --0.887405, -1.870897, --2.220026, -1.800018, --0.861099, --0.112366, -0.700690, --0.791383, -0.601369, --0.476473, -0.626760, --0.990800, -1.311815, --1.347309, -1.046684, --0.574751, -0.183179, --0.037147, -0.118769, --0.260685, -0.272240, --0.069551, --0.268283, -0.543614, --0.555273, -0.221254, -0.355576, --0.917463, -1.170099, --0.935983, -0.262319, -0.580944, --1.221012, -1.360304, --0.918893, -0.069141, -0.847610, --1.473523, -1.583371, --1.170311, -0.439101, -0.288182, --0.715646, -0.703820, --0.323274, --0.196012, -0.590935, --0.695758, -0.507267, --0.158287, --0.172640, -0.355540, --0.354878, -0.211243, -0.013418, --0.277623, -0.557085, --0.808118, -0.946057, --0.878130, -0.578917, --0.146655, --0.220206, -0.327428, --0.104054, --0.347952, -0.808449, --1.058382, -0.984082, --0.609479, -0.058049, -0.509106, --0.936502, -1.095704, --0.913502, -0.422082, -0.201207, --0.667387, -0.710621, --0.263321, --0.455571, -1.035126, --1.117521, -0.632867, -0.150632, --0.806551, -1.031019, --0.818455, -0.414297, --0.102945, -0.008983, --0.056771, -0.089069, --0.019309, --0.113983, -0.217791, --0.255188, -0.286005, --0.402933, -0.626995, --0.861782, -0.953655, --0.811340, -0.486332, --0.144919, --0.048147, -0.041884, -0.083257, --0.202329, -0.257419, --0.292462, -0.379765, --0.510390, -0.561195, --0.387687, --0.028018, -0.510429, --0.785625, -0.681058, --0.271609, --0.157960, -0.318105, --0.130196, --0.219811, -0.433587, --0.334605, --0.004690, -0.339747, --0.460473, -0.350524, --0.172243, -0.104460, --0.181969, -0.272314, --0.198216, --0.108156, -0.548505, --0.934830, -1.123622, --1.099039, -0.952126, --0.791189, -0.661101, --0.527305, -0.323765, --0.021756, --0.329848, -0.617470, --0.720794, -0.582059, --0.246050, --0.154919, -0.464873, --0.579475, -0.485748, --0.243311, --0.072448, -0.415975, --0.766311, -1.079204, --1.250098, -1.144181, --0.696813, -0.017003, -0.603315, --0.820359, -0.451541, -0.372532, --1.243583, -1.704625, --1.531255, -0.869251, --0.124495, --0.320284, -0.356580, --0.188065, -0.136267, --0.369924, -0.766723, --1.008948, -0.834513, --0.249024, --0.461719, -0.927534, --0.950728, -0.634813, --0.293613, -0.212864, --0.442772, -0.770302, --0.883739, -0.602475, --0.005494, --0.626658, -1.005103, --1.019210, -0.788379, --0.551950, -0.483825, --0.568173, -0.624304, --0.459278, -0.031740, -0.497521, --0.869167, -0.906483, --0.638983, -0.277763, --0.066116, -0.121226, --0.381256, -0.681520, --0.883193, -0.949771, --0.926652, -0.867838, --0.789031, -0.684491, --0.572566, -0.507171, --0.534037, -0.636083, --0.731467, -0.737994, --0.647131, -0.531927, --0.470163, -0.448370, --0.342691, -0.014691, -0.542496, --1.130957, -1.429007, --1.192116, -0.438731, -0.517332, --1.226123, -1.358262, --0.896331, -0.140865, -0.470023, --0.613148, -0.253723, -0.355814, --0.840403, -0.926637, --0.594875, -0.073878, -0.312377, --0.348485, -0.055062, -0.336602, --0.540264, -0.395568, -0.041262, --0.543819, -0.853344, --0.812762, -0.424335, -0.176138, --0.785246, -1.195120, --1.244107, -0.868893, --0.155246, --0.649769, -1.208526, --1.242858, -0.689290, -0.244410, --1.173369, -1.731083, --1.745306, -1.290772, --0.605724, --0.052815, -0.519046, --0.745964, -0.767870, --0.645483, -0.430818, --0.161104, --0.127059, -0.380597, --0.527620, -0.502152, --0.289377, --0.039187, -0.337914, --0.456471, -0.330242, --0.027189, --0.290929, -0.473653, --0.479653, -0.393568, --0.348447, -0.414711, --0.545381, -0.622697, --0.567896, -0.420449, --0.314350, -0.363096, --0.544696, -0.686849, --0.578047, -0.129176, -0.536529, --1.140491, -1.418834, --1.286731, -0.882010, --0.463821, -0.244994, --0.275972, -0.447836, --0.591036, -0.587364, --0.422788, -0.165198, -0.097214, --0.308148, -0.459049, --0.571055, -0.662981, --0.727848, -0.732754, --0.643570, -0.459043, --0.228849, -0.036626, -0.046792, --0.010565, --0.082454, -0.127794, --0.038358, --0.204346, -0.534729, --0.829444, -0.962831, --0.867647, -0.574423, --0.207115, --0.069787, -0.130045, -0.052198, --0.393189, -0.745952, --0.972223, -0.999944, --0.844257, -0.592818, --0.366365, -0.266425, --0.326245, -0.489369, --0.635665, -0.647894, --0.479557, -0.178348, -0.148727, --0.398176, -0.513335, --0.485176, -0.327771, --0.061757, --0.278905, -0.633779, --0.921945, -1.072894, --1.060743, -0.914116, --0.694059, -0.457597, --0.233314, -0.022595, -0.178319, --0.352211, -0.448710, --0.398232, -0.153124, -0.262419, --0.728057, -1.059735, --1.096395, -0.793857, --0.262133, --0.284287, -0.633111, --0.669559, -0.408730, -0.035367, --0.506927, -0.858414, --0.987024, -0.864309, --0.551732, -0.182300, -0.097889, --0.201232, -0.137938, -0.002279, --0.110462, -0.118194, --0.023187, --0.123967, -0.253261, --0.307602, -0.263479, --0.139076, --0.008854, -0.101321, --0.068647, --0.109004, -0.372639, --0.595232, -0.644610, --0.471686, -0.162581, -0.098761, --0.149194, --0.033140, -0.303418, --0.451022, -0.356789, --0.085310, --0.160291, -0.185205, -0.062208, --0.464062, -0.820413, --0.973511, -0.881584, --0.610764, -0.275749, -0.021457, --0.227232, -0.344375, --0.417161, -0.495202, --0.587912, -0.639433, --0.555100, -0.276615, -0.143326, --0.531277, -0.673729, --0.445252, --0.100045, -0.739210, --1.191064, -1.260005, --0.928353, -0.348637, -0.250975, --0.687648, -0.901270, --0.949685, -0.933834, --0.909579, -0.851657, --0.697626, -0.437545, --0.170975, -0.068988, --0.251196, -0.665536, --1.075466, -1.188262, --0.849961, -0.169127, -0.527993, --0.889455, -0.748530, --0.213571, --0.413668, -0.822740, --0.856372, -0.561795, --0.130217, --0.213025, -0.302866, --0.085286, --0.372803, -0.907520, --1.315853, -1.439379, --1.242903, -0.841592, --0.447371, -0.252242, --0.313554, -0.516181, --0.644911, -0.528422, --0.163684, --0.264492, -0.487682, --0.318782, --0.225725, -0.922100, --1.455363, -1.585401, --1.267924, -0.665229, --0.045562, --0.367626, -0.508748, --0.482162, -0.473105, --0.619920, -0.930330, --1.288793, -1.538551, --1.576051, -1.398451, --1.086715, -0.750336, --0.475283, -0.300100, --0.217965, -0.190153, --0.162971, -0.091201, -0.032036, --0.155600, -0.187214, --0.053977, --0.226235, -0.520181, --0.636640, -0.440001, -0.055834, --0.680229, -1.190468, --1.389554, -1.206768, --0.710970, -0.073905, -0.485989, --0.767909, -0.661288, --0.209154, --0.381136, -0.815581, --0.861341, -0.483399, -0.123430, --0.641757, -0.818774, --0.614421, -0.214816, -0.096311, --0.120493, --0.137275, -0.485903, --0.679419, -0.570360, --0.189817, --0.282898, -0.627058, --0.693650, -0.469197, --0.072251, --0.304491, -0.482109, --0.383703, -0.084720, -0.211873, --0.281854, -0.018323, -0.486043, --0.979674, -1.202077, --1.046812, -0.625323, --0.187865, --0.040879, --0.002952, -0.202690, --0.358503, -0.326272, --0.105805, --0.169961, -0.326123, --0.254237, --0.026582, -0.385392, --0.656150, -0.727959, --0.597697, -0.357871, --0.130399, --0.011024, -0.080330, --0.154221, -0.299209, --0.502161, -0.658362, --0.635913, -0.378764, -0.025061, --0.370243, -0.453586, --0.212643, --0.214342, -0.558635, --0.582852, -0.228550, -0.349624, --0.884624, -1.163539, --1.149835, -0.986309, --0.883521, -0.969281, --1.195463, -1.361892, --1.246334, -0.764112, --0.055391, --0.565404, -0.779843, --0.455869, --0.263084, -1.030363, --1.484619, -1.435325, --0.937468, -0.229544, -0.404798, --0.761292, -0.770731, --0.487491, -0.044140, -0.399866, --0.705703, -0.795892, --0.678304, -0.438296, --0.196430, -0.049091, --0.024415, -0.077131, --0.123667, -0.094169, -0.029409, --0.209111, -0.377917, --0.477057, -0.478526, --0.381023, -0.188175, -0.106154, --0.503926, -0.963091, --1.364590, -1.529627, --1.303895, -0.671458, -0.180658, --0.914068, -1.202941, --0.920753, -0.227744, -0.509192, --0.922536, -0.846951, --0.391184, --0.158734, -0.529293, --0.611905, -0.486514, --0.322055, -0.241644, --0.251004, -0.268479, --0.217274, -0.100400, --0.001002, -0.012350, --0.153948, -0.338891, --0.419489, -0.282426, -0.070242, --0.509383, -0.846531, --0.939375, -0.769587, --0.445807, -0.134364, -0.035481, --0.031243, --0.089888, -0.239107, --0.356249, -0.428729, --0.464241, -0.452480, --0.358759, -0.160440, -0.107230, --0.345094, -0.442898, --0.357316, -0.153065, -0.030364, --0.066149, --0.081000, -0.338572, --0.577305, -0.686924, --0.626825, -0.431411, --0.181456, --0.036446, -0.168298, --0.219357, -0.253686, --0.354050, -0.554191, --0.789219, -0.913815, --0.794331, -0.418181, -0.063995, --0.407394, -0.417096, --0.072653, --0.451854, -0.887783, --1.029272, -0.849285, --0.504727, -0.230367, --0.191427, -0.388722, --0.674394, -0.861904, --0.851463, -0.685743, --0.504167, -0.437116, --0.518306, -0.672435, --0.775965, -0.740089, --0.558438, -0.295834, --0.037611, --0.158481, -0.277468, --0.329989, -0.328957, --0.285260, -0.223102, --0.189490, -0.232528, --0.354589, -0.482311, --0.495828, -0.314270, -0.023850, --0.360634, -0.518521, --0.433655, -0.215646, --0.075375, -0.167570, --0.469227, -0.791291, --0.916151, -0.754124, --0.398846, -0.045539, -0.155969, --0.195087, -0.173997, --0.195248, -0.265187, --0.294556, -0.190864, -0.040969, --0.278410, -0.359948, --0.199387, --0.151140, -0.530258, --0.757346, -0.719047, --0.409212, --0.077331, -0.577028, --0.905952, -0.926824, --0.622280, -0.131628, -0.295665, --0.429813, -0.203910, -0.229554, --0.580920, -0.598085, --0.218375, --0.401866, -0.989510, --1.309299, -1.270204, --0.935173, -0.456945, -0.002355, --0.325965, -0.463704, --0.430609, -0.290419, --0.126366, -0.006522, -0.039298, --0.017169, --0.053602, -0.160581, --0.295321, -0.430123, --0.500182, -0.417856, --0.120792, --0.373101, -0.943655, --1.402293, -1.572662, --1.378583, -0.890215, --0.296440, --0.188431, -0.432833, --0.443369, -0.329753, --0.205747, -0.103494, -0.028538, --0.244132, -0.509940, --0.696574, -0.669750, --0.408807, -0.047678, -0.204486, --0.204151, --0.033954, -0.358971, --0.592338, -0.634068, --0.497241, -0.269619, --0.050669, --0.092563, -0.142127, --0.128093, -0.112497, --0.152213, -0.251781, --0.343129, -0.325178, --0.147563, --0.126994, -0.344828, --0.363963, -0.158853, -0.160668, --0.435256, -0.577558, --0.629871, -0.713482, --0.913141, -1.190346, --1.393655, -1.359633, --1.031874, -0.513842, --0.016819, --0.263072, -0.256614, --0.047203, --0.202463, -0.364157, --0.412819, -0.404855, --0.396122, -0.377929, --0.288544, -0.088214, -0.172897, --0.359993, -0.337258, --0.067939, --0.345794, -0.715408, --0.874431, -0.768311, --0.469382, -0.116580, -0.170363, --0.343326, -0.420225, --0.442859, -0.440537, --0.423408, -0.394879, --0.357936, -0.308395, --0.233829, -0.133378, --0.041670, -0.017559, --0.086059, -0.181358, --0.164247, --0.066746, -0.448683, --0.735559, -0.642929, --0.070567, --0.769623, -1.443212, --1.560892, -1.040860, --0.174584, --0.556573, -0.787169, --0.483703, --0.070042, -0.490892, --0.550940, -0.293865, -0.045680, --0.233733, -0.190788, --0.011675, --0.133790, -0.128250, -0.024133, --0.213799, -0.297240, --0.176097, --0.151448, -0.584461, --0.962635, -1.146777, --1.098634, -0.908375, --0.738960, -0.712395, --0.815012, -0.898391, --0.788146, -0.426413, -0.061450, --0.436406, -0.509520, --0.282784, --0.037288, -0.166295, -0.078322, --0.663518, -1.360015, --1.869860, -1.976438, --1.635079, -0.974527, --0.230375, --0.349302, -0.593614, --0.471266, -0.104407, -0.282763, --0.470816, -0.359781, --0.025011, --0.326144, -0.476482, --0.328624, --0.035533, -0.400068, --0.538612, -0.346634, -0.091991, --0.545640, -0.767393, --0.647683, -0.292950, -0.028837, --0.052656, --0.310267, -0.906733, --1.430884, -1.609149, --1.356250, -0.804545, --0.203457, --0.227116, -0.391160, --0.318633, -0.107345, -0.136444, --0.327491, -0.411412, --0.375459, -0.259018, --0.142119, -0.101485, --0.157588, -0.254094, --0.291458, -0.193728, -0.038301, --0.322394, -0.537370, --0.582911, -0.423945, --0.103308, --0.275738, -0.585620, --0.717381, -0.620242, --0.328728, --0.034011, -0.290151, --0.282528, --0.031659, -0.524267, --0.934484, -1.008626, --0.667998, -0.085750, -0.401275, --0.504009, -0.173853, -0.363349, --0.760249, -0.780173, --0.444647, --0.001927, -0.274155, --0.238265, --0.016688, -0.264381, --0.306997, -0.098155, -0.253099, --0.578810, -0.763218, --0.789315, -0.705474, --0.561595, -0.375718, --0.151210, --0.087214, -0.285969, --0.398223, -0.429226, --0.440299, -0.494197, --0.583489, -0.611905, --0.463680, -0.117642, -0.289616, --0.521224, -0.393759, -0.082545, --0.686772, -1.111742, --1.141540, -0.758300, --0.118716, --0.558209, -1.096961, --1.401595, -1.432762, --1.182599, -0.684763, --0.043792, --0.563794, -0.943467, --0.968727, -0.645039, --0.109222, --0.435047, -0.808086, --0.924619, -0.814485, --0.592025, -0.393583, --0.312413, -0.358747, --0.460405, -0.501023, --0.376991, -0.047098, -0.444385, --0.978387, -1.400272, --1.574877, -1.439623, --1.034831, -0.493768, -0.009360, --0.332123, -0.419787, --0.314466, -0.116934, -0.070132, --0.182699, -0.204466, --0.153666, -0.064870, -0.025649, --0.091961, -0.127847, --0.147236, -0.172217, --0.215409, -0.269918, --0.313501, -0.321742, --0.281239, -0.199589, --0.111662, -0.076564, --0.154961, -0.368720, --0.667622, -0.935876, --1.048594, -0.946981, --0.679100, -0.373685, --0.162579, -0.104298, --0.157232, -0.214000, --0.168993, --0.024124, -0.334513, --0.678510, -0.965278, --1.135132, -1.170877, --1.082560, -0.885464, --0.593441, -0.232527, -0.143563, --0.461377, -0.664090, --0.749364, -0.771852, --0.799907, -0.858527, --0.907231, -0.874318, --0.719032, -0.469531, --0.206978, -0.013523, -0.072839, --0.067091, -0.014114, -0.042529, --0.081310, -0.108155, --0.147270, -0.219686, --0.318755, -0.400754, --0.405359, -0.297958, --0.103232, --0.098477, -0.212762, --0.182765, -0.018886, -0.205460, --0.382963, -0.412962, --0.243480, --0.095656, -0.487101, --0.764028, -0.784227, --0.503115, -0.000139, -0.558370, --0.994925, -1.188495, --1.103647, -0.784480, --0.334608, --0.106292, -0.396015, --0.438811, -0.232599, -0.119139, --0.450209, -0.611074, --0.539131, -0.281319, -0.035451, --0.261537, -0.281087, --0.053319, --0.365781, -0.829774, --1.147632, -1.165384, --0.850340, -0.325509, -0.180877, --0.455690, -0.423903, --0.194841, --0.005026, --0.023078, -0.319217, --0.734414, -1.023699, --1.003068, -0.666823, --0.189613, --0.184363, -0.286858, --0.108992, --0.225451, -0.563362, --0.817745, -0.985161, --1.085132, -1.089725, --0.920303, -0.525755, -0.025374, --0.533206, -0.769369, --0.626417, -0.194569, -0.301123, --0.655614, -0.805972, --0.828695, -0.830314, --0.839100, -0.792393, --0.619347, -0.332933, --0.044431, --0.109877, -0.064667, -0.131462, --0.348554, -0.449005, --0.352110, -0.063684, -0.328048, --0.683264, -0.864160, --0.799609, -0.529549, --0.194113, --0.039781, -0.075635, -0.054175, --0.211116, -0.243477, --0.091083, --0.167631, -0.361954, --0.345502, -0.107517, -0.202887, --0.369992, -0.266627, -0.041626, --0.329124, -0.366309, --0.085947, --0.367048, -0.739764, --0.847458, -0.688202, --0.418044, -0.220856, --0.181769, -0.254405, --0.327500, -0.320841, --0.234024, -0.125238, --0.056767, -0.056989, --0.116958, -0.204939, --0.278406, -0.294633, --0.231028, -0.110428, --0.004224, --0.007703, --0.098023, -0.250010, --0.313438, -0.181952, -0.131803, --0.477131, -0.642655, --0.488842, -0.050910, -0.461293, --0.779214, -0.742161, --0.406667, -0.016910, -0.155676, --0.000178, --0.350303, -0.603855, --0.507660, -0.020792, -0.657262, --1.215566, -1.422095, --1.245541, -0.839524, --0.420347, -0.133754, -0.004133, --0.071098, -0.152303, --0.269983, -0.372317, --0.379601, -0.250200, --0.020538, --0.208383, -0.331193, --0.306812, -0.187243, --0.081438, -0.075825, --0.169702, -0.277518, --0.298384, -0.196537, --0.024885, --0.127061, -0.211512, --0.253686, -0.307236, --0.379005, -0.400813, --0.285034, -0.019624, -0.288044, --0.473889, -0.450483, --0.303138, -0.254798, --0.503505, -1.044711, --1.622341, -1.869976, --1.560600, -0.787610, -0.066129, --0.566301, -0.510209, --0.052574, --0.415889, -0.544916, --0.253675, --0.244619, -0.620194, --0.659613, -0.387881, --0.015852, --0.219260, -0.196559, -0.045557, --0.363719, -0.604126, --0.679082, -0.597101, --0.443893, -0.326007, --0.302684, -0.344480, --0.351624, -0.230046, -0.024023, --0.297229, -0.420336, --0.280791, --0.094207, -0.547628, --0.888940, -1.005118, --0.905961, -0.679592, --0.408306, -0.122334, -0.173889, --0.442615, -0.595504, --0.552177, -0.327986, --0.062181, --0.058812, --0.066762, -0.376946, --0.691662, -0.850825, --0.833262, -0.759495, --0.778767, -0.935325, --1.122269, -1.157447, --0.917236, -0.425560, -0.162110, --0.654618, -0.922115, --0.931575, -0.720308, --0.357156, --0.066906, -0.426547, --0.575606, -0.416473, -0.008327, --0.484362, -0.713995, --0.495005, --0.128507, -0.863773, --1.337098, -1.323233, --0.874961, -0.262816, -0.220628, --0.440242, -0.455326, --0.411910, -0.399979, --0.395410, -0.316207, --0.121493, --0.142173, -0.379813, --0.522804, -0.565857, --0.539635, -0.458691, --0.304178, -0.060408, -0.232462, --0.468279, -0.529400, --0.371450, -0.071703, -0.202461, --0.291424, -0.143756, -0.149546, --0.411668, -0.489381, --0.341413, -0.048555, -0.252989, --0.459293, -0.542925, --0.533099, -0.466080, --0.359275, -0.228647, --0.119022, -0.099798, --0.213356, -0.416279, --0.572876, -0.524762, --0.197860, --0.329151, -0.850966, --1.149361, -1.123869, --0.853517, -0.545542, --0.402721, -0.496695, --0.731458, -0.919081, --0.911815, -0.697337, --0.393714, -0.153241, --0.049087, -0.028989, -0.029885, --0.206349, -0.450370, --0.600636, -0.500772, --0.130724, --0.351457, -0.700634, --0.749230, -0.525862, --0.238705, -0.134691, --0.336501, -0.770263, --1.225584, -1.494648, --1.489987, -1.269200, --0.968685, -0.707903, --0.531269, -0.413469, --0.305239, -0.178207, --0.043445, --0.055462, -0.064447, -0.051362, --0.276475, -0.529254, --0.684748, -0.639686, --0.385357, -0.031896, -0.247605, --0.324284, -0.197277, -0.008385, --0.127287, -0.058035, -0.185825, --0.501732, -0.764630, --0.879599, -0.797529, --0.510951, -0.056948, -0.473245, --0.943959, -1.220872, --1.233044, -1.006179, --0.640977, -0.255097, -0.065322, --0.276978, -0.366729, --0.345451, -0.255558, --0.167835, -0.146827, --0.203967, -0.286835, --0.328084, -0.315214, --0.309572, -0.383792, --0.529942, -0.631728, --0.543161, -0.215363, -0.240436, --0.615962, -0.746941, --0.616745, -0.343717, --0.076939, --0.100842, -0.186424, --0.197044, -0.117551, -0.083575, --0.387035, -0.683603, --0.823512, -0.729279, --0.475274, -0.251541, --0.224634, -0.403710, --0.627511, -0.692539, --0.523421, -0.244548, --0.088265, -0.207503, --0.540404, -0.836024, --0.826675, -0.422145, -0.214091, --0.758464, -0.924801, --0.633561, -0.048290, -0.532321, --0.846754, -0.797117, --0.464905, -0.030631, -0.330859, --0.512900, -0.481161, --0.251377, --0.121481, -0.537534, --0.857213, -0.941622, --0.718344, -0.231827, -0.360395, --0.851001, -1.074212, --0.978235, -0.644604, --0.246828, --0.031258, -0.079424, -0.092535, --0.369215, -0.597942, --0.675338, -0.603548, --0.482821, -0.442844, --0.553717, -0.774999, --0.980303, -1.045024, --0.934878, -0.727199, --0.545187, -0.457180, --0.425539, -0.349943, --0.165946, --0.091533, -0.319807, --0.445523, -0.493592, --0.558963, -0.703835, --0.877212, -0.937149, --0.763539, -0.365999, -0.107190, --0.468279, -0.616224, --0.588801, -0.505023, --0.453854, -0.425659, --0.340963, -0.144320, -0.125612, --0.356950, -0.459290, --0.443372, -0.405844, --0.427101, -0.478255, --0.435473, -0.204060, -0.156009, --0.429438, -0.394620, --0.010655, --0.517439, -0.864592, --0.815444, -0.421104, -0.040263, --0.268743, -0.156501, -0.149311, --0.372907, -0.321232, --0.020189, --0.317673, -0.457579, --0.310103, --0.016849, -0.306878, --0.388084, -0.238694, -0.018315, --0.210795, -0.226866, --0.069226, --0.163699, -0.340203, --0.358589, -0.186123, -0.129617, --0.473528, -0.699871, --0.690092, -0.413227, -0.042550, --0.493288, -0.734680, --0.635323, -0.199527, -0.431909, --1.042356, -1.430196, --1.487296, -1.231697, --0.784486, -0.306929, -0.068809, --0.283316, -0.352607, --0.338566, -0.309170, --0.308327, -0.344274, --0.395469, -0.429667, --0.427566, -0.397928, --0.370034, -0.363567, --0.357284, -0.287183, --0.086920, --0.251955, -0.645945, --0.945545, -1.012590, --0.802089, -0.394972, -0.039599, --0.328987, -0.378830, --0.207807, --0.077498, -0.346909, --0.511675, -0.556498, --0.525418, -0.473930, --0.419295, -0.323822, --0.127332, --0.189216, -0.556340, --0.829086, -0.866065, --0.627252, -0.218635, -0.156573, --0.315033, -0.201338, -0.085303, --0.360443, -0.468920, --0.369897, -0.145084, -0.062669, --0.136232, -0.047301, -0.132462, --0.273587, -0.262715, --0.071417, --0.220450, -0.466825, --0.544254, -0.431822, --0.226026, -0.076885, --0.089266, -0.259597, --0.489459, -0.658085, --0.694816, -0.602833, --0.430559, -0.227526, --0.022080, --0.170533, -0.329443, --0.421707, -0.413507, --0.288104, -0.059042, -0.225660, --0.488752, -0.641248, --0.614364, -0.396018, --0.049701, --0.303746, -0.537754, --0.576292, -0.420681, --0.133556, --0.203660, -0.529412, --0.815850, -1.057783, --1.251207, -1.378625, --1.410152, -1.319838, --1.107381, -0.811024, --0.499494, -0.243966, --0.085868, -0.021536, --0.013634, -0.019295, --0.013619, --0.006284, -0.034355, --0.070265, -0.122524, --0.199922, -0.301504, --0.414843, -0.522664, --0.609557, -0.661390, --0.659482, -0.581036, --0.414953, -0.187352, -0.026246, --0.125462, -0.045406, -0.183619, --0.428043, -0.519075, --0.364166, -0.025680, -0.297319, --0.383750, -0.129991, -0.379002, --0.914208, -1.232439, --1.209635, -0.900081, --0.494263, -0.206403, --0.156185, -0.307710, --0.497542, -0.536022, --0.323920, --0.085792, -0.519818, --0.788894, -0.794560, --0.569630, -0.234052, -0.090039, --0.338602, -0.506137, --0.604275, -0.625860, --0.545339, -0.347871, --0.055644, --0.270452, -0.550186, --0.706729, -0.683728, --0.460831, -0.070608, -0.394775, --0.804500, -1.038243, --1.036181, -0.815677, --0.446701, -0.014009, -0.398366, --0.697272, -0.780683, --0.581710, -0.140021, -0.365259, --0.679183, -0.614981, --0.184991, --0.384638, -0.780361, --0.789154, -0.422002, -0.105789, --0.514643, -0.622474, --0.428439, -0.083502, -0.214575, --0.329801, -0.243965, --0.045717, --0.127253, -0.159529, --0.011944, --0.263800, -0.556987, --0.760684, -0.828234, --0.785398, -0.690214, --0.574804, -0.421474, --0.196139, --0.091012, -0.357075, --0.484821, -0.403082, --0.145127, --0.163470, -0.379688, --0.424720, -0.315846, --0.132826, --0.049114, -0.207846, --0.371793, -0.572810, --0.793025, -0.949717, --0.934714, -0.685424, --0.238333, --0.275543, -0.694112, --0.906891, -0.904355, --0.765754, -0.598991, --0.475772, -0.403055, --0.343311, -0.260728, --0.154715, -0.055467, -0.009991, --0.046706, -0.086337, --0.151632, -0.226382, --0.262625, -0.220795, --0.103136, --0.053266, -0.216150, --0.387190, -0.587239, --0.812097, -1.008039, --1.100732, -1.056031, --0.913430, -0.753075, --0.621446, -0.485375, --0.265824, --0.069828, -0.438624, --0.668895, -0.619246, --0.302831, --0.086213, -0.279175, --0.105011, --0.393088, -0.979519, --1.369916, -1.395819, --1.084083, -0.614027, --0.199517, --0.021200, -0.031001, -0.086841, --0.203516, -0.202667, --0.028367, --0.283707, -0.606841, --0.771256, -0.651006, --0.243614, --0.315933, -0.828275, --1.145180, -1.242888, --1.198002, -1.092145, --0.933897, -0.671324, --0.283531, --0.139723, -0.419692, --0.413877, -0.148505, -0.159790, --0.232522, --0.073002, -0.643131, --1.164588, -1.330693, --1.053628, -0.526187, --0.082336, --0.043508, --0.121032, -0.323321, --0.290015, --0.063074, -0.574673, --0.967097, -1.047083, --0.823146, -0.468387, --0.184968, -0.085494, --0.162772, -0.334325, --0.502033, -0.587149, --0.542746, -0.360607, --0.072941, --0.261702, -0.586935, --0.868819, -1.088956, --1.220672, -1.220240, --1.052740, -0.733994, --0.347278, -0.010938, -0.185067, --0.227024, -0.174992, --0.114511, -0.100716, --0.134524, -0.181463, --0.210437, -0.216942, --0.213489, -0.200834, --0.151833, -0.028536, -0.178057, --0.419856, -0.604278, --0.645564, -0.520789, --0.291205, -0.073026, -0.024481, -0.043026, --0.230822, -0.423638, --0.486928, -0.331404, -0.034114, --0.489375, -0.848522, --0.956695, -0.786450, --0.465922, -0.203736, --0.150470, -0.294424, --0.473391, -0.496653, --0.283098, --0.090682, -0.460769, --0.694583, -0.756270, --0.677133, -0.481787, --0.157521, --0.296450, -0.791267, --1.134521, -1.123109, --0.689174, --0.014637, -0.670361, --0.967380, -0.779059, --0.225254, --0.413254, -0.858581, --0.963839, -0.737022, --0.280149, --0.281668, -0.826108, --1.223408, -1.341679, --1.097289, -0.520125, -0.230803, --0.932499, -1.403998, --1.575410, -1.475505, --1.168582, -0.712234, --0.173115, --0.333556, -0.650183, --0.654651, -0.356872, -0.075763, --0.404900, -0.465961, --0.263857, --0.050779, -0.299889, --0.395240, -0.373009, --0.341621, -0.404932, --0.620075, -0.994484, --1.483847, -1.970358, --2.254605, -2.115260, --1.441212, -0.356464, -0.774025, --1.503301, -1.547304, --0.955216, -0.081510, -0.628736, --0.897285, -0.741389, --0.400340, -0.133900, --0.049873, -0.077770, --0.080892, --0.004840, -0.121050, --0.152303, -0.035162, -0.185896, --0.393479, -0.480654, --0.410580, -0.216472, -0.037467, --0.291325, -0.500862, --0.637317, -0.692768, --0.687892, -0.662353, --0.641987, -0.605077, --0.482782, -0.206391, -0.225152, --0.707408, -1.058421, --1.107754, -0.799755, --0.246509, --0.312443, -0.633695, --0.609136, -0.331088, --0.032875, --0.061399, --0.122660, -0.475111, --0.791419, -0.915004, --0.830180, -0.649575, --0.519448, -0.516119, --0.598374, -0.637466, --0.501932, -0.148726, -0.331324, --0.747350, -0.913171, --0.765462, -0.415111, --0.085737, --0.029844, --0.100291, -0.323756, --0.406745, -0.192101, -0.295271, --0.863144, -1.269757, --1.361743, -1.145534, --0.757081, -0.362982, --0.064526, --0.134703, -0.287444, --0.430466, -0.543006, --0.567761, -0.473015, --0.298762, -0.143205, --0.095893, -0.169213, --0.283389, -0.319935, --0.206729, --0.026709, -0.265453, --0.388257, -0.354297, --0.233079, -0.151548, --0.194940, -0.336444, --0.453386, -0.421101, --0.214554, --0.061663, -0.241093, --0.214774, -0.017200, -0.184095, --0.195232, --0.066587, -0.495428, --0.837998, -0.839899, --0.409537, --0.307996, -1.002496, --1.375009, -1.305657, --0.904501, -0.417975, --0.061745, --0.103241, -0.172810, --0.291097, -0.520593, --0.788101, -0.940713, --0.862214, -0.560158, --0.164278, --0.153537, -0.275633, --0.191993, --0.008699, -0.192184, --0.244464, -0.123627, -0.122782, --0.386719, -0.564873, --0.622083, -0.607625, --0.609858, -0.683967, --0.811239, -0.920101, --0.944782, -0.866932, --0.708809, -0.496290, --0.238456, --0.052727, -0.327071, --0.494651, -0.479850, --0.295185, -0.065672, -0.036139, -0.088239, --0.376168, -0.629547, --0.648860, -0.382102, -0.026640, --0.332918, -0.365906, --0.151349, --0.108120, -0.180010, -0.032278, --0.422675, -0.756130, --0.826228, -0.589426, --0.192129, --0.121510, -0.162012, -0.086544, --0.454733, -0.694640, --0.640887, -0.320380, -0.066340, --0.282663, -0.216032, -0.053277, --0.320636, -0.407111, --0.279976, -0.062616, -0.062086, -0.021157, --0.288631, -0.599688, --0.786415, -0.748250, --0.497607, -0.140535, -0.183777, --0.365951, -0.363945, --0.209950, --0.006947, -0.176246, --0.214575, -0.110841, -0.061710, --0.189249, -0.201494, --0.138376, -0.136683, --0.326686, -0.705724, --1.091290, -1.210678, --0.882082, -0.161972, -0.655474, --1.199224, -1.238239, --0.808413, -0.171037, -0.355308, --0.567529, -0.450152, --0.129540, --0.227183, -0.492019, --0.603673, -0.561142, --0.412112, -0.240303, --0.137205, -0.154640, --0.263347, -0.353442, --0.289898, --0.005070, -0.493262, --1.025242, -1.408713, --1.502749, -1.283998, --0.847571, -0.344843, -0.099724, --0.437068, -0.677291, --0.830314, -0.860759, --0.703936, -0.336581, -0.157535, --0.592076, -0.766639, --0.586079, -0.127020, -0.399290, --0.767611, -0.865460, --0.744199, -0.565094, --0.481426, -0.538830, --0.659295, -0.712612, --0.617494, -0.398328, --0.161764, -0.018854, --0.013955, -0.107229, --0.211504, -0.246738, --0.173925, --0.001797, -0.242544, --0.485179, -0.645698, --0.637257, -0.411194, --0.003215, --0.453806, -0.778084, --0.833935, -0.616987, --0.266505, --0.014670, -0.086201, -0.042047, --0.223849, -0.284065, --0.143128, --0.130813, -0.376642, --0.455603, -0.337714, --0.099213, --0.154444, -0.367635, --0.551536, -0.734790, --0.901541, -0.975677, --0.865695, -0.533817, --0.037620, --0.483724, -0.869289, --1.008862, -0.891217, --0.604108, -0.285753, --0.054518, --0.041275, -0.024807, -0.049241, --0.137226, -0.216155, --0.260909, -0.223657, --0.048396, --0.282960, -0.711551, --1.108454, -1.331265, --1.296143, -1.020226, --0.611157, -0.212662, -0.063829, --0.188817, -0.224181, --0.285679, -0.472366, --0.795639, -1.150994, --1.359794, -1.269176, --0.854497, -0.255133, -0.290216, --0.576563, -0.549774, --0.328257, -0.113577, --0.053268, -0.152942, --0.295232, -0.340295, --0.223509, --0.021339, -0.313113, --0.584249, -0.789726, --0.867957, -0.719506, --0.260437, --0.471158, -1.253233, --1.750957, -1.709049, --1.139415, -0.353943, -0.207743, --0.252768, --0.176176, -0.731535, --0.989206, -0.715941, -0.000174, --0.824842, -1.385221, --1.465985, -1.085701, --0.442001, --0.209243, -0.662198, --0.814461, -0.668752, --0.307456, --0.138853, -0.522917, --0.716684, -0.652633, --0.357698, --0.044336, -0.379369, --0.507499, -0.401663, --0.169281, --0.005420, --0.031733, -0.312344, --0.723458, -1.066844, --1.162717, -0.940502, --0.473585, --0.052524, -0.420413, --0.474166, -0.186762, -0.328892, --0.872628, -1.248205, --1.345258, -1.170487, --0.820997, -0.428371, --0.111984, --0.042639, --0.008661, -0.258769, --0.639027, -1.029108, --1.300265, -1.376607, --1.274350, -1.086604, --0.918133, -0.814330, --0.737442, -0.609837, --0.390784, -0.123472, -0.089304, --0.163196, -0.098791, -0.020503, --0.097237, -0.095526, --0.059989, -0.066869, --0.155102, -0.296218, --0.420547, -0.466691, --0.409224, -0.250631, --0.001233, --0.322287, -0.675777, --0.971821, -1.099841, --0.984112, -0.644425, --0.210030, --0.137397, -0.267102, --0.184600, -0.036451, --0.020695, -0.254307, --0.685120, -1.111438, --1.302244, -1.141528, --0.702416, -0.203506, -0.121411, --0.153660, --0.061286, -0.368201, --0.611512, -0.721318, --0.724555, -0.690175, --0.662883, -0.637203, --0.581823, -0.480857, --0.350944, -0.223177, --0.114049, -0.016644, -0.081411, --0.176578, -0.250509, --0.293817, -0.325387, --0.381059, -0.474956, --0.567881, -0.577680, --0.434371, -0.142621, -0.198032, --0.439348, -0.472380, --0.298524, -0.031048, -0.177083, --0.228643, -0.131413, -0.031257, --0.177321, -0.282488, --0.372758, -0.472559, --0.566954, -0.616468, --0.604934, -0.565231, --0.552036, -0.585999, --0.625293, -0.595113, --0.451580, -0.225899, --0.013306, --0.082414, -0.007923, -0.211695, --0.482550, -0.675675, --0.671032, -0.404095, -0.095060, --0.690697, -1.179437, --1.375257, -1.203469, --0.747925, -0.216811, -0.157175, --0.223976, --0.029100, -0.495810, --1.015821, -1.440267, --1.670642, -1.672353, --1.476572, -1.171211, --0.869927, -0.657560, --0.539873, -0.440135, --0.259895, --0.031386, -0.349514, --0.540171, -0.493384, --0.242362, --0.038892, -0.150304, --0.013545, --0.263168, -0.461180, --0.417108, -0.150400, -0.150751, --0.278061, -0.169430, -0.041005, --0.130525, --0.031596, -0.372937, --0.662347, -0.675976, --0.361650, --0.115493, -0.475072, --0.498167, -0.160803, -0.358533, --0.793940, -0.950424, --0.807615, -0.515162, --0.296022, -0.320850, --0.619499, -1.066808, --1.444228, -1.549739, --1.304715, -0.799782, --0.245048, --0.153724, -0.316106, --0.321917, -0.335067, --0.474318, -0.728400, --0.976181, -1.088855, --1.028682, -0.867325, --0.714839, -0.621213, --0.533215, -0.342775, -0.008289, --0.448453, -0.787103, --0.818055, -0.452411, -0.205992, --0.895729, -1.328520, --1.340958, -0.978199, --0.460152, -0.052085, -0.081105, -0.050513, --0.296826, -0.478434, --0.493551, -0.353922, --0.140701, --0.070227, -0.250086, --0.399395, -0.499646, --0.489703, -0.298819, -0.085951, --0.576929, -1.013103, --1.246775, -1.227181, --1.017890, -0.737705, --0.478383, -0.267459, --0.098846, --0.013091, -0.021328, -0.102767, --0.304595, -0.442573, --0.371954, -0.060294, -0.361427, --0.664829, -0.667691, --0.351767, --0.128306, -0.545935, --0.736924, -0.678686, --0.476827, -0.287394, --0.232410, -0.350727, --0.593164, -0.849034, --0.989480, -0.915573, --0.598910, -0.098301, -0.457442, --0.917206, -1.166216, --1.169515, -0.979626, --0.703316, -0.443717, --0.249836, -0.104834, -0.039744, --0.211673, -0.391151, --0.532833, -0.613944, --0.658853, -0.710106, --0.770395, -0.775619, --0.637177, -0.326203, -0.074452, --0.404712, -0.528723, --0.422863, -0.179826, -0.070378, --0.250659, -0.364473, --0.448623, -0.508942, --0.507100, -0.410428, --0.250480, -0.122918, --0.117295, -0.236464, --0.383035, -0.434597, --0.348274, -0.204588, --0.148875, -0.273478, --0.534008, -0.764446, --0.779539, -0.490022, -0.045317, --0.657047, -1.158705, --1.435677, -1.481040, --1.367132, -1.178665, --0.952302, -0.660868, --0.251950, --0.285888, -0.877590, --1.374524, -1.624859, --1.559304, -1.236832, --0.820267, -0.496230, --0.386182, -0.494803, --0.716129, -0.888439, --0.871257, -0.613062, --0.179661, --0.274142, -0.581218, --0.647271, -0.491202, --0.213042, --0.085809, -0.368115, --0.660874, -0.994108, --1.334973, -1.578424, --1.607906, -1.379689, --0.963124, -0.502456, --0.128013, --0.115254, -0.268144, --0.390528, -0.488478, --0.501935, -0.367021, --0.097732, --0.193348, -0.367379, --0.373041, -0.303582, --0.335896, -0.586601, --0.995307, -1.333888, --1.348039, -0.934788, --0.230513, --0.453097, -0.801886, --0.670298, -0.151542, -0.481542, --0.919907, -0.967138, --0.625243, -0.083390, -0.382758, --0.554394, -0.383562, --0.014251, --0.305912, -0.373384, --0.145236, --0.247714, -0.595244, --0.741708, -0.668027, --0.471632, -0.270841, --0.113662, --0.038620, -0.248572, --0.520616, -0.772695, --0.882040, -0.762449, --0.411010, --0.099032, -0.653575, --1.125166, -1.388943, --1.350206, -0.992764, --0.416136, --0.185014, -0.607768, --0.743451, -0.625234, --0.389887, -0.187598, --0.104454, -0.138393, --0.223124, -0.269864, --0.204867, --0.000403, -0.308449, --0.616844, -0.795270, --0.750500, -0.483274, --0.096993, --0.252861, -0.438814, --0.421116, -0.253654, --0.039257, --0.133276, -0.232987, --0.290421, -0.364115, --0.491411, -0.653086, --0.773908, -0.761844, --0.564629, -0.210063, -0.195731, --0.513115, -0.633996, --0.534434, -0.289227, --0.040145, --0.070839, --0.025900, -0.286271, --0.569988, -0.713733, --0.622155, -0.323044, -0.047311, --0.318746, -0.375685, --0.209980, --0.082995, -0.351060, --0.446140, -0.277998, -0.148400, --0.719959, -1.241243, --1.505175, -1.386598, --0.907052, -0.224241, -0.453788, --0.973078, -1.284823, --1.415264, -1.394669, --1.216809, -0.865966, --0.380192, --0.120116, -0.481846, --0.618665, -0.579057, --0.516289, -0.570867, --0.753102, -0.924231, --0.901905, -0.613267, --0.171126, --0.197687, -0.323068, --0.225573, -0.099633, --0.153643, -0.434990, --0.785717, -0.967791, --0.854822, -0.532878, --0.231058, -0.146676, --0.311408, -0.597438, --0.835694, -0.929975, --0.876708, -0.702863, --0.410369, --0.006358, -0.492469, --0.898686, -1.039599, --0.814556, -0.295968, -0.292473, --0.701018, -0.796316, --0.622960, -0.348089, --0.137222, -0.053397, --0.046321, -0.025411, -0.050455, --0.139380, -0.161350, --0.079133, --0.053127, -0.113791, -0.005911, --0.321104, -0.726135, --1.039400, -1.094950, --0.830382, -0.323041, -0.244693, --0.669792, -0.814458, --0.648914, -0.239925, -0.289417, --0.794417, -1.127356, --1.158595, -0.820252, --0.161538, --0.628092, -1.268926, --1.509086, -1.251460, --0.611485, --0.135917, -0.693937, --0.888049, -0.737893, --0.424180, -0.179773, --0.169360, -0.416968, --0.807340, -1.150527, --1.275730, -1.111816, --0.716558, -0.237696, -0.175028, --0.454197, -0.638419, --0.818702, -1.048594, --1.288534, -1.428032, --1.366351, -1.087603, --0.675589, -0.265058, -0.027721, --0.146744, -0.094722, -0.091339, --0.357099, -0.628670, --0.806157, -0.779834, --0.480267, --0.059203, -0.675404, --1.125365, -1.207301, --0.887062, -0.339580, -0.140410, --0.314138, -0.145895, -0.181862, --0.397174, -0.318976, -0.037248, --0.494028, -0.847222, --0.995280, -0.973850, --0.888844, -0.816386, --0.752297, -0.643266, --0.463719, -0.268658, --0.176233, -0.288590, --0.604913, -0.986744, --1.205483, -1.055831, --0.480007, --0.366207, -1.155441, --1.535961, -1.316637, --0.584190, --0.326832, -1.005905, --1.182191, -0.853883, --0.257862, --0.289643, -0.572289, --0.566259, -0.409135, --0.287800, -0.324779, --0.523326, -0.786218, --0.983555, -1.028429, --0.921904, -0.746071, --0.609524, -0.576858, --0.625982, -0.663032, --0.588258, -0.370854, --0.080808, --0.147076, -0.196416, --0.045165, --0.217214, -0.442242, --0.506456, -0.370329, --0.081256, --0.263153, -0.551858, --0.677243, -0.549578, --0.135233, --0.489423, -1.118561, --1.479114, -1.363189, --0.754625, --0.139358, -0.980825, --1.463839, -1.449271, --1.000844, -0.322430, -0.347365, --0.820607, -0.998707, --0.876702, -0.534273, --0.116853, --0.206093, -0.307829, --0.168090, --0.110538, -0.356124, --0.424615, -0.279666, --0.005281, --0.249932, -0.352321, --0.237603, --0.076956, -0.505815, --0.912995, -1.136575, --1.035793, -0.560629, -0.191504, --0.982267, -1.521768, --1.603245, -1.205737, --0.501512, --0.236376, -0.768779, --0.989510, -0.940883, --0.754351, -0.565553, --0.455177, -0.436815, --0.478973, -0.534729, --0.561744, -0.532419, --0.439947, -0.301245, --0.151359, -0.027797, -0.046660, --0.068910, -0.043315, -0.035294, --0.182276, -0.398545, --0.638634, -0.806712, --0.801651, -0.589200, --0.244693, --0.079552, -0.250261, --0.242553, -0.150166, --0.105794, -0.174980, --0.306801, -0.374508, --0.267277, --0.036005, -0.453463, --0.841446, -1.057581, --1.016692, -0.723589, --0.273156, --0.185922, -0.511785, --0.625687, -0.534568, --0.312198, -0.056351, -0.150989, --0.264261, -0.275208, --0.201805, -0.074342, -0.074390, --0.211758, -0.304148, --0.321506, -0.251861, --0.118507, --0.017994, -0.083637, --0.030960, --0.130627, -0.336033, --0.497616, -0.548773, --0.471278, -0.293005, --0.063032, --0.176250, -0.401946, --0.602210, -0.756726, --0.824022, -0.750953, --0.503356, -0.100286, -0.372958, --0.787416, -1.021553, --1.015669, -0.800906, --0.486511, -0.209699, --0.071095, -0.087421, --0.187837, -0.258510, --0.212937, -0.045982, -0.162479, --0.297053, -0.275582, --0.092902, --0.183760, -0.454355, --0.627564, -0.642807, --0.476961, -0.152022, -0.255122, --0.620745, -0.818243, --0.783571, -0.556984, --0.261402, -0.025906, -0.089450, --0.110053, -0.097334, --0.084506, -0.057797, -0.003877, --0.078430, -0.099680, --0.019292, --0.120845, -0.179562, -0.001951, --0.477835, -1.126844, --1.694769, -1.930164, --1.725718, -1.173795, --0.506313, --0.035754, -0.320275, --0.365376, -0.294679, --0.245478, -0.286887, --0.390286, -0.460280, --0.401860, -0.184830, -0.127682, --0.398721, -0.476371, --0.269585, --0.189083, -0.727988, --1.092616, -1.065920, --0.596362, --0.149058, -0.858891, --1.247019, -1.210342, --0.865740, -0.443246, --0.121919, --0.065669, -0.197931, --0.347573, -0.496689, --0.557914, -0.473197, --0.291537, -0.146896, --0.150706, -0.290949, --0.427474, -0.391914, --0.114180, --0.322663, -0.737952, --0.970974, -0.971129, --0.802318, -0.576122, --0.377402, -0.236506, --0.150114, -0.110843, --0.110492, -0.121541, --0.093204, --0.014206, -0.177882, --0.297507, -0.249907, -0.014006, --0.407242, -0.742196, --0.851422, -0.704532, --0.424347, -0.182256, --0.054949, --0.034708, -0.234166, --0.598100, -0.987432, --1.132784, -0.833572, --0.142534, --0.619684, -1.052639, --0.940278, -0.397943, -0.209113, --0.515383, -0.388182, -0.022550, --0.436889, -0.664677, --0.715590, -0.726111, --0.786883, -0.833712, --0.701617, -0.293475, -0.290702, --0.786489, -0.943599, --0.707650, -0.258947, -0.119498, --0.235991, -0.098766, -0.126864, --0.255840, -0.200710, -0.004293, --0.257700, -0.457314, --0.530732, -0.435354, --0.162516, --0.240082, -0.654302, --0.923153, -0.930777, --0.681597, -0.313823, --0.023105, --0.059105, --0.051035, -0.204616, --0.222994, -0.018178, -0.349952, --0.713593, -0.903547, --0.850963, -0.620474, --0.357686, -0.190546, --0.154832, -0.195513, --0.238054, -0.267470, --0.345359, -0.546427, --0.867850, -1.193234, --1.351807, -1.234215, --0.877477, -0.453848, --0.168727, -0.136072, --0.308914, -0.504593, --0.508775, -0.203323, -0.349636, --0.919695, -1.224511, --1.097045, -0.603587, --0.023902, --0.314094, -0.245786, -0.120784, --0.484550, -0.569174, --0.319074, --0.073208, -0.324719, --0.275991, --0.006122, -0.305862, --0.437196, -0.371539, --0.220120, -0.106497, --0.051336, --0.032179, -0.237874, --0.555890, -0.849231, --0.937912, -0.722776, --0.253503, --0.303868, -0.765682, --1.017413, -1.035653, --0.856095, -0.539665, --0.171198, --0.128172, -0.223263, --0.038392, --0.364422, -0.779732, --0.957723, -0.755000, --0.232446, --0.371387, -0.774123, --0.801919, -0.471391, -0.032585, --0.455770, -0.597527, --0.407522, -0.017489, -0.315474, --0.343544, --0.019956, -0.624054, --1.144452, -1.268607, --0.892779, -0.201203, -0.433247, --0.669825, -0.403314, -0.177934, --0.711417, -0.874911, --0.558900, --0.100353, -0.825223, --1.352069, -1.537838, --1.375537, -0.947685, --0.375432, --0.204713, -0.650431, --0.839458, -0.719515, --0.352348, --0.089718, -0.391461, --0.399952, -0.110247, -0.320380, --0.645289, -0.656013, --0.298408, --0.287642, -0.832421, --1.074510, -0.898540, --0.395139, --0.191310, -0.597134, --0.677556, -0.469442, --0.145314, --0.105964, -0.191790, --0.149308, -0.086605, --0.086807, -0.154435, --0.241595, -0.319140, --0.417841, -0.596028, --0.862837, -1.133410, --1.267349, -1.167017, --0.856661, -0.476356, --0.193488, -0.098051, --0.156454, -0.249235, --0.257800, -0.136282, -0.075693, --0.297008, -0.464643, --0.562829, -0.604257, --0.589218, -0.488144, --0.272788, --0.027348, -0.301924, --0.409847, -0.279995, -0.016183, --0.290000, -0.354604, --0.152359, --0.207601, -0.530360, --0.669193, -0.609658, --0.450146, -0.311706, --0.258389, -0.282487, --0.342858, -0.403329, --0.435414, -0.399165, --0.243485, --0.056004, -0.451449, --0.820899, -1.029704, --1.017022, -0.839869, --0.637260, -0.539834, --0.591173, -0.731699, --0.845127, -0.827038, --0.634315, -0.299376, -0.086096, --0.407421, -0.573600, --0.558015, -0.412220, --0.241118, -0.150108, --0.192503, -0.344536, --0.518932, -0.611100, --0.558659, -0.385562, --0.200354, -0.137315, --0.267860, -0.542076, --0.810035, -0.916446, --0.802533, -0.539787, --0.273551, -0.124130, --0.119470, -0.197914, --0.260697, -0.226160, --0.056512, --0.235820, -0.584461, --0.869906, -0.947518, --0.714830, -0.189995, -0.457129, --0.965398, -1.117768, --0.872198, -0.395267, -0.037321, --0.216321, -0.132150, -0.030994, --0.039382, --0.212103, -0.621368, --0.958966, -1.043271, --0.873251, -0.615219, --0.457487, -0.451753, --0.471871, -0.327321, -0.055587, --0.530094, -0.795967, --0.603637, --0.044914, -0.846674, --1.348096, -1.207284, --0.402483, --0.743496, -1.734290, --2.159797, -1.894699, --1.135714, -0.276554, -0.296296, --0.376436, -0.001322, -0.605432, --1.164451, -1.466832, --1.437304, -1.122886, --0.639480, -0.121173, -0.307954, --0.550656, -0.561383, --0.375202, -0.111477, -0.072314, --0.063794, --0.135431, -0.407135, --0.588804, -0.574962, --0.378880, -0.113697, -0.089893, --0.167886, -0.149250, --0.111722, -0.109259, --0.133997, -0.141575, --0.110755, -0.076575, --0.102664, -0.217578, --0.377005, -0.491652, --0.499130, -0.416091, --0.323044, -0.294919, --0.337222, -0.382147, --0.345955, -0.198624, -0.010871, --0.191025, -0.273342, --0.254369, -0.184797, --0.121132, -0.083395, --0.053045, -0.008197, -0.038597, --0.036793, --0.064430, -0.265668, --0.496212, -0.646055, --0.634324, -0.466405, --0.234238, -0.052702, -0.025467, --0.050964, -0.138771, --0.371846, -0.718037, --1.025371, -1.105787, --0.854101, -0.323685, -0.290598, --0.751931, -0.902507, --0.735651, -0.381595, --0.022949, --0.204772, -0.269594, --0.232265, -0.187426, --0.199587, -0.270670, --0.348673, -0.363730, --0.268886, -0.067650, -0.181580, --0.385655, -0.456149, --0.354631, -0.122991, -0.120956, --0.231949, -0.114187, -0.214070, --0.614933, -0.902879, --0.958620, -0.808282, --0.604901, -0.516375, --0.599506, -0.756452, --0.810556, -0.646338, --0.307638, --0.021852, -0.145134, -0.001552, --0.284101, -0.438898, --0.240367, --0.332474, -1.041003, --1.495298, -1.376801, --0.643784, --0.416118, -1.332824, --1.717909, -1.482291, --0.870774, -0.296465, --0.086973, -0.304348, --0.743532, -1.091340, --1.128781, -0.847991, --0.427441, -0.105460, --0.043896, -0.255870, --0.617026, -0.934738, --1.036655, -0.846256, --0.419692, --0.074714, -0.433146, --0.516345, -0.319685, -0.027791, --0.333741, -0.440290, --0.296858, --0.023056, -0.360151, --0.541197, -0.456411, --0.113781, --0.354947, -0.748056, --0.890677, -0.726936, --0.351505, --0.045270, -0.290084, --0.325637, -0.230379, --0.146871, -0.172381, --0.291823, -0.399025, --0.383881, -0.215029, -0.042423, --0.278593, -0.410706, --0.418717, -0.327703, --0.167478, --0.046897, -0.298154, --0.538124, -0.686119, --0.669598, -0.482362, --0.212861, -0.011158, --0.006225, -0.225253, --0.569407, -0.865117, --0.959332, -0.800020, --0.456188, -0.073534, -0.201631, --0.287577, -0.194686, --0.011302, --0.141713, -0.170601, --0.060676, --0.104865, -0.178544, --0.029647, --0.364306, -0.872172, --1.251350, -1.270663, --0.851556, -0.140281, -0.546910, --0.888475, -0.741040, --0.227370, --0.333804, -0.618716, --0.491411, -0.074742, -0.342885, --0.496415, -0.297816, -0.141232, --0.612358, -0.945309, --1.074849, -1.013070, --0.785315, -0.409257, -0.061084, --0.484013, -0.652222, --0.409475, --0.211520, -0.947065, --1.419380, -1.357589, --0.777843, --0.008714, -0.577582, --0.646160, -0.234652, -0.368285, --0.800915, -0.846376, --0.534583, -0.081558, -0.267502, --0.376010, -0.255563, --0.011230, --0.243071, -0.436031, --0.540326, -0.551732, --0.479188, -0.350461, --0.212066, -0.106220, --0.038588, --0.028904, -0.141124, --0.293576, -0.409811, --0.386540, -0.181485, -0.127083, --0.369381, -0.395002, --0.187838, --0.104843, -0.261749, --0.139704, --0.215769, -0.581412, --0.687520, -0.388284, -0.236104, --0.911883, -1.320836, --1.277247, -0.826520, --0.207713, --0.292180, -0.497506, --0.417820, -0.199048, --0.000405, --0.107665, -0.154749, --0.198893, -0.247124, --0.243669, -0.137577, -0.034397, --0.133926, -0.004863, -0.402277, --0.964250, -1.437587, --1.600273, -1.385012, --0.914569, -0.422174, --0.118648, -0.091573, --0.286959, -0.564411, --0.780012, -0.850513, --0.773423, -0.602353, --0.396629, -0.177866, -0.074962, --0.384427, -0.717074, --0.960376, -0.966578, --0.645388, -0.044480, -0.643534, --1.161816, -1.314652, --1.064516, -0.546186, -0.007258, --0.381834, -0.478774, --0.343398, -0.122677, -0.014895, -0.047023, --0.333243, -0.775360, --1.237753, -1.562329, --1.624230, -1.384228, --0.912536, -0.362008, -0.105448, --0.401117, -0.546761, --0.639039, -0.764061, --0.925757, -1.042696, --1.014885, -0.805823, --0.474905, -0.138919, -0.100619, --0.206507, -0.201761, --0.130232, -0.021304, -0.117495, --0.287722, -0.487137, --0.705921, -0.925018, --1.108550, -1.196900, --1.117473, -0.821796, --0.332224, --0.237082, -0.713199, --0.945452, -0.889583, --0.638199, -0.368750, --0.235037, -0.270654, --0.370818, -0.369098, --0.160834, --0.209118, -0.554752, --0.652112, -0.375080, -0.218530, --0.901744, -1.384854, --1.453247, -1.062153, --0.343734, --0.466980, -1.139496, --1.531842, -1.618541, --1.465735, -1.181187, --0.867972, -0.597843, --0.404396, -0.288492, --0.228224, -0.189606, --0.138427, -0.053584, -0.060708, --0.170929, -0.224940, --0.175066, -0.003665, -0.261843, --0.551414, -0.770827, --0.832084, -0.689388, --0.370287, --0.017391, -0.319730, --0.408130, -0.252380, -0.054860, --0.347809, -0.485089, --0.429095, -0.249874, --0.054205, --0.099584, -0.229039, --0.375539, -0.523153, --0.570027, -0.393547, -0.032123, --0.564167, -0.941238, --0.940901, -0.539113, -0.049972, --0.495762, -0.557529, --0.231064, --0.266261, -0.655190, --0.776633, -0.666561, --0.486159, -0.382248, --0.394498, -0.469859, --0.547029, -0.621434, --0.732882, -0.897166, --1.054976, -1.093006, --0.923099, -0.551363, --0.077626, --0.371933, -0.717071, --0.938126, -1.028932, --0.948090, -0.634169, --0.087155, --0.558573, -1.057077, --1.184507, -0.896072, --0.379700, --0.051629, -0.161600, -0.060892, --0.417093, -0.661005, --0.677931, -0.539688, --0.402640, -0.346283, --0.296738, -0.102443, -0.305698, --0.815161, -1.189744, --1.246083, -1.004433, --0.684661, -0.543584, --0.680778, -0.965815, --1.142178, -1.023421, --0.629520, -0.165952, -0.127252, --0.136979, --0.062502, -0.274172, --0.302980, -0.053644, -0.441407, --1.049435, -1.584367, --1.858641, -1.745705, --1.248861, -0.539569, -0.084687, --0.333970, -0.091607, -0.493190, --1.064436, -1.254521, --0.902337, -0.153496, -0.626527, --1.071720, -1.023925, --0.598484, -0.078223, -0.276615, --0.369989, -0.281707, --0.167477, -0.136485, --0.190721, -0.250222, --0.226536, -0.086626, -0.127080, --0.320219, -0.394295, --0.298214, -0.066691, -0.175356, --0.260565, -0.073934, -0.351880, --0.812237, -1.021109, --0.782394, -0.132979, -0.653131, --1.221572, -1.355401, --1.099096, -0.698386, --0.405299, -0.302187, --0.278978, -0.170066, -0.073594, --0.326105, -0.390900, --0.176719, --0.205801, -0.511827, --0.541998, -0.290522, -0.054563, --0.254767, -0.191713, -0.064832, --0.331813, -0.457690, --0.419516, -0.307322, --0.226764, -0.208759, --0.195078, -0.098644, -0.118417, --0.410121, -0.674707, --0.818064, -0.807099, --0.681422, -0.522142, --0.401067, -0.341368, --0.310875, -0.249640, --0.113588, --0.092912, -0.316651, --0.489017, -0.571350, --0.579469, -0.565943, --0.571055, -0.582217, --0.541724, -0.404053, --0.195089, -0.014691, -0.032389, -0.076552, --0.257347, -0.388018, --0.416261, -0.406640, --0.475731, -0.665837, --0.871638, -0.897443, --0.611804, -0.077653, -0.453168, --0.689061, -0.488687, -0.042799, --0.617130, -0.939107, --0.876922, -0.520640, --0.103830, --0.150357, -0.159429, --0.015199, --0.088904, --0.013600, -0.353767, --0.799445, -1.123574, --1.131973, -0.779118, --0.203706, --0.341317, -0.626679, --0.570840, -0.274529, -0.052838, --0.222602, -0.166292, -0.052750, --0.305197, -0.477903, --0.514775, -0.407603, --0.173182, --0.148276, -0.477787, --0.701936, -0.721497, --0.520765, -0.199913, -0.070737, --0.154928, -0.042143, -0.142836, --0.223945, -0.093055, -0.220830, --0.579731, -0.836942, --0.931084, -0.905052, --0.843002, -0.784075, --0.686849, -0.473689, --0.117446, --0.301015, -0.613845, --0.657235, -0.375342, -0.128990, --0.631418, -0.895512, --0.797651, -0.397401, -0.090145, --0.409594, -0.403031, --0.088152, --0.367444, -0.751457, --0.917308, -0.831914, --0.548579, -0.149417, -0.287278, --0.679168, -0.924932, --0.927054, -0.657980, --0.220998, --0.160265, -0.247800, -0.061225, --0.641916, -1.185100, --1.368733, -1.057160, --0.398170, --0.252821, -0.540875, --0.323047, --0.248844, -0.824347, --1.066668, -0.848924, --0.317721, --0.206737, -0.425986, --0.233724, --0.235008, -0.695203, --0.880895, -0.690053, --0.226371, --0.276190, -0.592684, --0.626310, -0.442701, --0.209632, -0.087979, --0.142324, -0.319915, --0.500835, -0.580986, --0.535522, -0.426314, --0.352133, -0.373557, --0.462065, -0.511031, --0.408613, -0.127603, -0.233044, --0.494680, -0.511574, --0.275226, --0.066624, -0.297144, --0.269270, -0.003081, -0.325446, --0.499297, -0.405147, --0.113471, --0.161006, -0.198016, -0.076740, --0.528413, -0.886123, --0.910447, -0.546105, -0.042721, --0.574643, -0.816094, --0.697591, -0.317778, -0.142386, --0.519564, -0.721762, --0.729258, -0.574551, --0.327431, -0.082574, -0.067071, --0.072858, --0.034388, -0.146805, --0.130483, --0.096748, -0.503964, --0.943166, -1.216469, --1.186781, -0.870094, --0.444117, -0.151487, --0.146471, -0.385276, --0.643933, -0.662734, --0.320523, --0.285341, -0.909222, --1.319191, -1.427174, --1.299770, -1.065586, --0.814103, -0.568837, --0.335175, -0.150308, --0.070088, -0.101801, --0.159360, -0.106891, -0.126569, --0.459043, -0.686611, --0.629332, -0.280335, -0.171519, --0.476583, -0.512337, --0.368723, -0.259493, --0.337046, -0.569800, --0.782427, -0.815066, --0.658490, -0.454030, --0.371483, -0.479495, --0.714424, -0.956075, --1.127589, -1.230895, --1.300641, -1.335766, --1.280809, -1.075556, --0.725828, -0.327908, --0.019684, --0.105763, -0.055588, -0.083466, --0.226112, -0.363736, --0.567934, -0.909702, --1.352924, -1.714625, --1.747965, -1.312652, --0.514259, --0.308452, -0.770901, --0.690700, -0.216371, -0.270659, --0.421182, -0.157607, -0.289672, --0.569711, -0.471543, --0.060055, --0.400986, -0.657679, --0.635904, -0.454405, --0.298071, -0.269395, --0.330364, -0.359060, --0.257738, -0.028121, -0.228274, --0.369873, -0.291595, -0.019828, --0.471999, -0.900078, --1.138149, -1.100207, --0.828955, -0.479125, --0.238518, -0.229857, --0.449628, -0.775712, --1.033457, -1.079866, --0.865036, -0.449133, -0.024579, --0.387923, -0.517543, --0.391127, -0.103155, -0.175446, --0.282445, -0.151562, -0.150343, --0.464163, -0.635683, --0.607121, -0.442382, --0.272479, -0.204521, --0.260867, -0.384248, --0.490332, -0.517001, --0.437223, -0.244510, -0.055592, --0.431792, -0.810038, --1.084768, -1.165730, --1.030533, -0.742375, --0.417146, -0.163486, --0.037590, -0.039427, --0.142104, -0.321867, --0.559032, -0.810798, --0.988547, -0.976878, --0.699620, -0.191512, -0.384093, --0.800596, -0.883986, --0.605983, -0.094953, -0.437175, --0.800268, -0.901029, --0.757409, -0.465001, --0.148219, --0.079208, -0.139954, --0.010678, --0.267831, -0.596797, --0.850068, -0.923650, --0.781530, -0.472506, --0.108836, --0.179641, -0.291169, --0.180480, --0.130871, -0.556814, --0.962951, -1.205218, --1.188712, -0.920604, --0.517520, -0.147449, -0.067159, --0.122300, -0.127024, --0.218388, -0.454423, --0.760243, -0.966500, --0.916038, -0.569535, --0.041673, --0.456933, -0.737893, --0.740342, -0.555348, --0.353725, -0.268539, --0.317029, -0.416935, --0.475832, -0.473936, --0.468920, -0.523510, --0.626957, -0.686646, --0.601667, -0.354244, --0.037251, --0.207446, -0.286942, --0.208431, -0.045483, -0.139866, --0.340307, -0.569365, --0.787568, -0.873304, --0.689141, -0.206161, -0.416720, --0.882484, -0.923576, --0.480589, --0.234412, -0.842441, --1.009211, -0.632032, -0.111692, --0.876636, -1.345109, --1.385173, -1.085776, --0.667172, -0.339848, --0.202956, -0.232454, --0.342358, -0.460149, --0.563079, -0.663840, --0.774379, -0.885679, --0.977662, -1.042446, --1.092977, -1.145057, --1.187610, -1.169056, --1.018113, -0.690849, --0.213375, --0.312845, -0.754217, --1.014146, -1.081120, --1.017988, -0.896194, --0.726895, -0.452325, --0.017399, --0.530529, -1.004794, --1.160395, -0.854053, --0.169795, --0.593373, -1.077875, --1.067276, -0.596597, -0.090475, --0.691430, -0.992577, --0.932550, -0.578420, --0.068368, --0.431363, -0.755442, --0.781518, -0.490782, --0.005445, --0.449043, -0.661527, --0.563711, -0.274294, --0.018184, --0.023167, --0.181346, -0.522482, --0.852313, -1.080965, --1.191389, -1.182930, --1.022784, -0.668865, --0.146027, --0.405919, -0.776427, --0.802154, -0.472014, -0.060196, --0.561905, -0.843142, --0.835846, -0.597036, --0.254872, --0.060350, -0.268023, --0.358640, -0.383109, --0.414902, -0.502129, --0.637013, -0.764279, --0.822755, -0.785985, --0.667580, -0.489551, --0.250138, --0.068086, -0.448716, --0.797553, -0.961067, --0.815578, -0.368770, -0.209922, --0.666808, -0.803704, --0.585337, -0.146532, -0.292735, --0.537364, -0.488630, --0.161399, --0.330331, -0.801460, --1.045075, -0.914283, --0.412729, --0.267978, -0.816726, --0.963138, -0.638729, --0.028368, --0.534902, -0.770517, --0.615151, -0.242792, -0.068285, --0.123723, --0.072591, -0.345821, --0.482752, -0.368007, --0.037478, --0.365930, -0.682980, --0.810878, -0.727118, --0.475492, -0.139877, -0.180327, --0.394638, -0.448531, --0.343752, -0.136886, -0.089703, --0.270212, -0.384480, --0.453800, -0.506274, --0.539617, -0.513582, --0.383682, -0.152603, -0.106022, --0.281815, -0.303716, --0.199074, -0.079479, --0.052053, -0.122001, --0.172669, -0.054348, -0.278540, --0.694503, -0.950129, --0.858831, -0.438609, -0.080246, --0.401863, -0.360154, --0.019447, --0.386874, -0.622730, --0.593405, -0.374555, --0.130282, --0.000609, --0.028043, -0.171727, --0.338847, -0.438001, --0.411153, -0.252337, --0.011685, --0.221064, -0.354130, --0.337198, -0.185413, -0.033515, --0.242742, -0.402590, --0.527233, -0.658541, --0.814741, -0.954275, --0.988490, -0.842942, --0.526017, -0.151116, -0.113160, --0.138169, --0.086288, -0.442734, --0.751567, -0.868357, --0.754568, -0.485578, --0.198930, -0.015884, -0.022981, -0.024653, --0.042851, --0.063629, -0.296839, --0.549801, -0.666346, --0.542949, -0.203002, -0.210918, --0.523036, -0.627165, --0.535611, -0.348298, --0.175144, -0.071967, --0.028501, -0.003529, -0.027712, --0.047715, -0.004992, -0.151435, --0.430210, -0.770913, --1.050734, -1.131380, --0.930067, -0.478601, -0.068395, --0.492540, -0.616552, --0.402092, --0.017308, -0.397341, --0.514989, -0.298780, -0.126142, --0.515994, -0.664931, --0.535525, -0.271420, --0.084694, -0.103685, --0.293614, -0.501216, --0.577576, -0.481089, --0.290421, -0.134852, --0.107695, -0.223358, --0.430380, -0.647310, --0.788209, -0.775369, --0.560412, -0.161231, -0.313316, --0.692211, -0.830633, --0.705155, -0.438254, --0.219214, -0.171789, --0.269827, -0.369253, --0.331181, -0.136326, -0.100402, --0.222384, -0.151959, -0.056762, --0.267171, -0.363754, --0.325455, -0.218794, --0.128540, -0.088922, --0.069055, -0.016119, -0.086162, --0.194541, -0.235962, --0.162221, --0.016260, -0.241685, --0.449163, -0.597653, --0.669446, -0.650604, --0.524130, -0.290181, -0.007758, --0.286232, -0.466118, --0.525805, -0.514179, --0.502889, -0.513341, --0.483799, -0.316639, -0.022590, --0.436898, -0.731306, --0.742566, -0.473507, --0.120597, --0.045354, --0.129867, -0.562942, --0.979919, -1.105337, --0.857186, -0.404947, --0.049390, -0.012995, --0.289538, -0.653101, --0.812985, -0.606260, --0.104314, --0.428749, -0.693561, --0.531433, -0.015933, -0.587963, --0.968408, -0.930037, --0.488222, --0.150460, -0.702604, --0.952042, -0.849556, --0.520783, -0.184165, --0.027091, -0.110070, --0.350923, -0.591933, --0.701719, -0.645730, --0.486261, -0.324695, --0.234646, -0.230525, --0.280786, -0.342146, --0.384322, -0.393660, --0.365423, -0.298792, --0.199050, -0.080988, -0.032458, --0.115029, -0.141483, --0.091005, --0.044938, -0.248876, --0.466038, -0.611378, --0.603855, -0.415960, --0.106725, --0.192687, -0.344059, --0.282598, -0.059448, -0.185491, --0.303108, -0.212332, -0.072920, --0.470860, -0.876392, --1.185544, -1.299469, --1.140152, -0.699444, --0.094637, --0.432329, -0.612808, --0.310130, --0.366452, -1.092893, --1.511750, -1.452186, --1.032935, -0.567699, --0.337857, -0.400402, --0.573287, -0.602609, --0.374448, -0.002277, -0.275020, --0.295226, -0.108390, -0.062766, --0.002089, --0.326731, -0.748467, --1.005959, -0.946844, --0.626390, -0.257371, --0.053845, -0.087353, --0.254214, -0.365519, --0.286115, -0.022751, -0.292468, --0.500051, -0.515877, --0.369367, -0.162824, -0.004993, --0.091423, -0.110178, --0.095992, -0.070228, --0.029188, --0.048836, -0.190586, --0.412634, -0.700428, --0.989504, -1.172639, --1.149522, -0.899881, --0.525790, -0.215278, --0.133197, -0.308839, --0.605387, -0.804640, --0.755361, -0.481900, --0.173275, -0.055776, --0.235595, -0.619499, --0.968867, -1.051843, --0.794244, -0.332424, -0.065346, --0.160688, --0.108066, -0.583707, --0.980056, -1.052585, --0.746724, -0.231831, -0.201811, --0.318043, -0.070890, -0.380958, --0.782182, -0.934782, --0.800822, -0.500728, --0.222563, -0.107346, --0.178549, -0.350184, --0.499309, -0.552609, --0.530193, -0.518461, --0.591841, -0.742119, --0.872261, -0.865600, --0.682432, -0.409168, --0.216527, -0.250686, --0.533713, -0.944326, --1.291199, -1.426205, --1.322279, -1.072045, --0.818875, -0.669914, --0.641716, -0.664451, --0.638202, -0.508420, --0.315641, -0.183352, --0.241893, -0.531680, --0.952489, -1.303642, --1.398287, -1.178603, --0.752634, -0.325959, --0.076504, -0.059198, --0.201674, -0.381446, --0.516527, -0.598332, --0.650547, -0.662156, --0.565279, -0.287900, -0.157752, --0.631028, -0.917281, --0.858327, -0.468449, -0.057157, --0.460825, -0.589963, --0.491202, -0.358491, --0.372806, -0.556710, --0.756819, -0.766422, --0.490311, -0.021847, -0.424913, --0.671115, -0.693844, --0.622382, -0.619750, --0.745400, -0.902218, --0.903571, -0.608436, --0.028808, --0.661828, -1.221065, --1.468611, -1.373474, --1.048702, -0.667825, --0.365540, -0.186463, --0.102620, -0.066904, --0.052229, -0.051601, --0.057923, -0.057159, --0.045661, -0.047524, --0.102753, -0.226830, --0.378704, -0.474893, --0.449145, -0.311677, --0.153770, -0.083799, --0.140348, -0.254832, --0.303048, -0.213469, --0.045766, --0.033587, --0.125691, -0.524902, --0.981784, -1.233509, --1.110445, -0.654857, --0.096928, --0.293092, -0.368833, --0.176689, --0.102831, -0.281116, --0.261950, -0.063635, -0.221946, --0.483253, -0.622846, --0.575558, -0.330442, -0.044388, --0.402977, -0.576062, --0.467045, -0.132530, -0.218383, --0.327208, -0.042401, -0.568006, --1.228022, -1.596756, --1.463646, -0.876502, --0.118398, --0.456879, -0.630014, --0.431739, -0.095257, -0.120019, --0.110215, --0.014470, -0.035527, -0.182664, --0.561625, -0.842081, --0.763891, -0.262800, -0.462858, --1.068164, -1.279286, --1.058397, -0.602755, --0.186304, --0.034960, -0.111814, --0.224524, -0.503380, --0.888049, -1.139466, --1.006078, -0.427793, -0.375023, --1.004776, -1.122158, --0.656523, --0.152106, -0.905308, --1.285068, -1.218338, --0.869701, -0.490299, --0.245541, -0.141004, --0.078125, --0.027838, -0.170316, --0.269323, -0.255459, --0.140513, -0.013770, -0.029482, -0.035042, --0.141610, -0.186770, --0.109004, --0.065257, -0.238964, --0.304780, -0.201551, -0.064667, --0.431053, -0.797016, --1.041271, -1.049861, --0.767229, -0.251672, -0.314791, --0.697856, -0.738679, --0.453782, -0.025234, -0.323789, --0.479930, -0.500608, --0.536699, -0.680933, --0.868580, -0.915180, --0.663798, -0.125148, -0.498927, --0.925483, -0.951223, --0.555658, --0.105534, -0.787347, --1.254518, -1.347831, --1.017359, -0.339377, -0.486418, --1.184376, -1.505006, --1.343139, -0.799010, --0.130575, --0.381262, -0.567615, --0.421698, -0.049053, -0.419152, --0.872333, -1.207403, --1.307889, -1.076817, --0.520095, --0.194512, -0.783535, --0.999157, -0.789321, --0.342861, --0.027780, -0.092778, -0.144480, --0.458787, -0.565216, --0.313554, --0.218795, -0.787195, --1.135386, -1.133714, --0.821492, -0.353895, -0.089729, --0.380516, -0.477435, --0.432818, -0.369676, --0.426699, -0.679121, --1.074784, -1.436684, --1.552940, -1.311627, --0.792036, -0.238710, -0.079503, --0.038088, --0.261800, -0.559801, --0.607867, -0.330337, -0.134760, --0.534258, -0.663169, --0.480756, -0.112534, -0.244983, --0.439324, -0.423069, --0.240204, --0.027214, -0.300598, --0.511797, -0.595036, --0.499035, -0.228502, -0.117475, --0.359459, -0.321554, -0.055601, --0.650162, -1.199132, --1.432243, -1.222916, --0.664045, -0.022298, -0.401645, --0.425769, -0.070311, -0.465984, --0.915293, -1.074349, --0.895819, -0.497366, --0.090904, --0.128423, -0.076458, -0.187154, --0.498719, -0.677496, --0.615824, -0.331819, -0.036889, --0.297004, -0.297666, --0.019172, --0.398465, -0.716886, --0.729646, -0.389514, -0.151022, --0.621997, -0.796712, --0.630447, -0.285488, --0.021791, -0.020842, --0.258192, -0.515180, --0.532803, -0.210734, -0.290507, --0.633451, -0.536148, -0.003504, --0.662519, -0.983757, --0.685874, --0.125600, -1.008114, --1.470212, -1.298492, --0.689445, -0.093622, -0.108845, -0.138921, --0.567711, -0.813796, --0.696059, -0.330340, --0.012531, --0.018172, --0.252821, -0.631150, --0.875700, -0.867427, --0.662126, -0.410670, --0.230855, -0.136097, --0.064279, --0.034662, -0.135791, --0.156779, -0.041397, -0.163266, --0.308785, -0.239828, -0.081433, --0.518244, -0.826144, --0.810339, -0.465135, -0.009480, --0.334865, -0.338066, --0.062217, --0.275940, -0.447249, --0.369641, -0.151303, -0.006666, -0.031582, --0.237363, -0.445932, --0.484138, -0.297950, -0.013887, --0.279731, -0.382141, --0.332796, -0.239781, --0.198995, -0.203523, --0.149454, --0.064617, -0.427691, --0.791568, -0.957967, --0.814011, -0.413701, -0.053741, --0.382194, -0.467832, --0.351192, -0.165424, --0.037013, -0.009651, --0.036034, -0.033268, -0.042803, --0.156071, -0.208243, --0.103757, --0.180497, -0.565276, --0.899106, -1.033421, --0.901410, -0.557109, --0.153159, --0.131010, -0.172594, -0.041147, --0.413618, -0.788152, --1.017142, -1.018271, --0.797559, -0.438802, --0.069657, --0.184226, -0.247702, --0.132397, --0.061316, -0.191099, --0.152845, --0.053301, -0.320204, --0.502209, -0.507002, --0.344804, -0.105043, -0.109494, --0.233845, -0.248017, --0.159538, --0.001445, -0.167667, --0.234580, -0.108951, -0.209458, --0.580986, -0.777667, --0.625431, -0.143225, -0.434469, --0.791249, -0.738590, --0.353648, --0.060340, -0.170211, -0.168984, --0.823131, -1.470557, --1.804927, -1.711573, --1.312068, -0.867564, --0.617091, -0.650952, --0.882222, -1.115399, --1.161411, -0.933733, --0.481197, --0.047267, -0.475385, --0.668969, -0.577117, --0.244409, --0.197621, -0.561625, --0.667589, -0.431697, -0.062078, --0.568688, -0.795186, --0.572649, --0.022181, -0.691227, --1.087561, -1.027850, --0.599253, -0.086982, -0.220420, --0.206132, --0.036419, -0.305671, --0.438275, -0.391726, --0.229754, -0.056551, -0.036278, -0.010030, --0.211031, -0.521370, --0.828153, -0.987963, --0.904474, -0.594347, --0.182528, --0.179782, -0.415015, --0.559219, -0.711837, --0.937375, -1.197549, --1.365564, -1.309025, --0.978640, -0.441667, -0.155031, --0.656699, -0.958173, --1.022495, -0.871403, --0.570262, -0.215289, -0.085956, --0.245995, -0.227037, --0.047938, --0.235652, -0.558588, --0.858697, -1.074137, --1.145540, -1.036899, --0.762514, -0.390465, --0.009499, --0.319333, -0.586136, --0.808470, -0.979665, --1.037337, -0.890272, --0.497738, --0.053951, -0.547664, --0.735395, -0.497226, -0.047680, --0.575272, -0.742131, --0.410443, --0.247649, -0.853407, --1.068319, -0.809379, --0.280613, --0.190681, -0.379697, --0.285821, -0.079962, -0.056043, --0.064138, -0.026838, --0.075331, -0.272887, --0.559976, -0.791300, --0.831208, -0.642407, --0.314338, -0.016870, -0.093114, -0.040579, --0.340477, -0.636923, --0.761680, -0.641120, --0.334754, --0.003454, -0.216697, --0.233177, -0.097449, -0.069475, --0.150165, -0.097716, -0.049309, --0.204970, -0.295159, --0.297290, -0.239082, --0.163863, -0.091807, --0.006322, --0.125506, -0.315495, --0.530333, -0.700815, --0.758014, -0.669380, --0.449762, -0.145070, -0.190910, --0.503956, -0.729094, --0.784239, -0.593924, --0.144339, --0.465111, -1.024620, --1.296483, -1.143874, --0.623171, --0.035351, -0.561428, --0.806688, -0.815659, --0.751188, -0.733902, --0.729336, -0.579349, --0.154055, --0.502781, -1.159978, --1.535150, -1.478706, --1.068805, -0.553795, --0.195870, -0.132962, --0.342721, -0.702660, --1.074235, -1.345974, --1.431930, -1.269996, --0.853991, -0.278116, -0.264855, --0.564152, -0.511165, --0.171099, --0.255115, -0.554072, --0.615672, -0.459499, --0.171958, --0.171789, -0.527725, --0.842474, -1.019106, --0.949902, -0.604478, --0.093460, --0.365271, -0.570700, --0.466321, -0.175227, -0.083748, --0.136940, --0.044844, -0.349475, --0.614427, -0.734891, --0.716511, -0.647715, --0.622083, -0.670802, --0.748926, -0.775756, --0.692062, -0.492364, --0.217275, --0.076377, -0.340095, --0.540529, -0.657509, --0.686435, -0.644568, --0.566533, -0.479671, --0.372609, -0.188554, -0.133878, --0.587862, -1.048103, --1.300551, -1.161042, --0.616853, --0.114527, -0.677574, --0.784644, -0.402617, -0.218125, --0.705480, -0.809179, --0.551598, -0.179957, -0.033441, -0.016648, --0.226411, -0.404703, --0.442147, -0.386266, --0.373274, -0.489763, --0.686763, -0.812875, --0.730742, -0.420967, --0.001055, --0.342390, -0.453687, --0.281579, --0.101616, -0.532225, --0.823217, -0.846957, --0.600547, -0.215788, -0.106017, --0.207819, -0.070894, -0.176236, --0.343201, -0.298327, --0.040810, --0.317930, -0.635028, --0.809761, -0.801472, --0.602132, -0.212153, -0.345427, --0.986228, -1.550565, --1.849497, -1.756322, --1.284513, -0.594398, -0.081678, --0.548868, -0.724656, --0.639251, -0.379566, --0.032525, --0.329065, -0.625296, --0.758726, -0.649832, --0.301698, --0.164896, -0.550725, --0.677583, -0.481033, --0.035315, --0.496847, -0.943756, --1.182659, -1.160833, --0.898564, -0.489491, --0.087710, --0.140539, -0.096234, -0.186660, --0.545780, -0.780868, --0.780275, -0.595963, --0.407573, -0.395002, --0.609512, -0.939047, --1.194065, -1.247741, --1.120984, -0.947244, --0.849297, -0.832820, --0.786176, -0.585695, --0.215537, --0.201736, -0.490704, --0.553160, -0.434397, --0.275199, -0.197218, --0.221442, -0.282284, --0.311536, -0.308201, --0.331264, -0.426717, --0.559577, -0.615541, --0.476932, -0.115992, -0.366046, --0.786334, -0.985423, --0.920428, -0.684110, --0.437339, -0.303850, --0.301510, -0.356354, --0.379968, -0.342784, --0.283314, -0.253208, --0.256016, -0.241604, --0.163186, -0.041024, -0.035139, -0.022220, --0.212267, -0.426031, --0.519689, -0.423715, --0.195265, --0.031355, -0.150661, --0.154529, -0.107495, --0.061562, --0.002184, -0.147921, --0.401943, -0.695278, --0.890570, -0.872362, --0.622057, -0.216010, -0.242488, --0.688530, -1.101358, --1.458194, -1.697508, --1.741938, -1.566207, --1.242438, -0.907112, --0.663843, -0.500531, --0.294856, --0.087244, -0.673115, --1.335593, -1.852883, --2.032602, -1.815627, --1.298176, -0.672552, --0.136180, --0.178428, -0.231582, --0.072734, --0.179704, -0.375268, --0.391213, -0.200311, -0.096092, --0.311566, -0.288198, --0.011835, --0.358965, -0.585158, --0.504698, -0.142615, -0.307903, --0.618942, -0.675198, --0.528354, -0.328755, --0.199933, -0.157392, --0.126275, -0.027743, -0.145872, --0.325846, -0.425045, --0.402629, -0.283502, --0.126813, --0.019311, -0.136775, --0.222851, -0.268016, --0.255906, -0.186769, --0.097040, -0.046838, --0.077961, -0.176466, --0.274939, -0.297273, --0.211393, -0.048354, -0.124890, --0.254248, -0.330266, --0.383297, -0.453213, --0.560638, -0.697910, --0.838132, -0.948850, --1.000838, -0.973472, --0.861406, -0.682191, --0.476529, -0.295267, --0.178546, -0.140586, --0.169289, -0.236236, --0.305641, -0.337708, --0.293406, -0.149085, -0.083365, --0.347922, -0.560614, --0.646547, -0.576929, --0.384755, -0.150518, -0.035476, --0.116532, -0.097020, --0.035968, -0.006376, --0.043305, -0.117093, --0.153854, -0.090111, -0.078252, --0.287735, -0.442841, --0.468941, -0.350947, --0.141593, --0.060194, -0.152406, --0.080818, --0.124363, -0.351305, --0.458348, -0.353358, --0.054081, --0.310866, -0.567398, --0.593301, -0.392301, --0.099708, --0.090041, -0.038700, -0.243846, --0.592237, -0.778355, --0.652806, -0.243824, -0.255624, --0.606955, -0.669690, --0.472255, -0.169715, -0.068753, --0.155414, -0.103937, -0.017470, --0.143313, -0.232864, --0.258283, -0.194487, --0.035128, --0.179260, -0.358410, --0.403871, -0.272732, --0.015348, --0.244758, -0.378406, --0.321441, -0.105194, -0.166513, --0.373679, -0.436370, --0.345797, -0.161030, -0.025247, --0.138910, -0.171050, --0.189648, -0.298500, --0.559526, -0.928318, --1.256309, -1.371308, --1.188757, -0.775348, --0.314726, --0.006255, -0.113186, --0.080574, -0.063127, --0.172147, -0.387857, --0.574453, -0.588577, --0.399335, -0.125397, -0.044838, -0.006747, --0.233267, -0.447437, --0.449645, -0.169160, -0.280343, --0.666603, -0.779905, --0.557303, -0.112629, -0.341970, --0.628411, -0.701343, --0.649697, -0.605539, --0.631818, -0.676292, --0.628411, -0.434430, --0.174909, -0.032653, --0.161903, -0.551011, --0.987882, -1.170728, --0.901195, -0.229860, -0.552811, --1.083335, -1.142086, --0.776168, -0.249435, -0.139954, --0.246828, -0.148288, --0.059998, -0.168090, --0.494859, -0.884174, --1.108362, -1.020045, --0.648875, -0.182968, -0.150013, --0.225244, -0.097156, -0.036884, -0.037999, --0.416443, -1.004582, --1.558875, -1.808116, --1.592482, -0.950534, --0.114262, --0.586738, -0.871811, --0.641343, -0.027508, -0.669926, --1.135416, -1.194742, --0.886338, -0.409299, -0.009707, --0.239173, -0.281241, --0.220286, -0.137318, --0.057922, --0.039715, -0.181663, --0.365566, -0.561288, --0.731869, -0.845726, --0.870273, -0.765837, --0.504733, -0.113199, -0.301206, --0.578542, -0.594010, --0.351683, -0.011452, -0.186283, --0.059839, --0.399943, -1.018659, --1.537841, -1.758444, --1.636221, -1.277521, --0.853383, -0.500558, --0.273913, -0.166383, --0.160188, -0.255551, --0.452891, -0.713292, --0.947521, -1.059256, --1.014090, -0.872961, --0.751552, -0.731568, --0.795270, -0.838591, --0.751984, -0.503529, --0.162103, --0.146782, -0.310666, --0.277175, -0.063795, -0.255049, --0.568852, -0.761507, --0.754881, -0.548558, --0.223878, --0.102877, -0.349597, --0.504999, -0.601840, --0.654165, -0.623651, --0.455422, -0.154702, -0.172356, --0.366952, -0.329264, --0.105092, --0.128622, -0.176249, -0.047065, --0.460858, -0.871918, --1.089203, -1.023117, --0.716472, -0.305629, -0.052965, --0.251802, -0.271810, --0.182270, -0.102831, --0.141030, -0.331413, --0.607655, -0.827020, --0.841494, -0.582846, --0.115576, --0.377610, -0.681574, --0.666612, -0.371840, -0.003969, --0.211887, -0.104883, -0.263397, --0.664272, -0.836320, --0.653697, -0.205457, -0.271337, --0.556975, -0.591465, --0.489625, -0.423063, --0.468226, -0.544675, --0.492362, -0.221154, -0.192627, --0.542326, -0.630861, --0.405138, --0.011536, -0.401025, --0.575961, -0.465254, --0.124230, --0.310180, -0.681016, --0.869000, -0.839616, --0.663548, -0.485459, --0.437628, -0.544457, --0.692461, -0.705850, --0.486231, -0.112310, -0.188375, --0.190809, --0.155849, -0.664391, --1.011494, -0.944379, --0.452203, --0.219075, -0.722486, --0.830129, -0.566200, --0.164204, --0.114323, -0.166148, --0.106938, -0.169885, --0.521385, -1.126567, --1.756107, -2.124573, --2.061489, -1.601400, --0.943315, -0.322850, -0.106016, --0.305909, -0.308854, --0.150424, --0.149731, -0.551211, --0.948814, -1.181306, --1.108529, -0.709974, --0.129066, --0.382624, -0.597659, --0.439804, -0.021277, -0.434368, --0.729199, -0.792784, --0.686092, -0.521239, --0.371363, -0.241344, --0.109900, --0.009034, -0.049734, -0.056905, --0.310267, -0.607184, --0.783920, -0.707563, --0.352959, --0.187089, -0.757900, --1.217602, -1.479296, --1.509238, -1.310947, --0.929862, -0.475003, --0.116686, -0.024388, --0.262035, -0.712055, --1.102022, -1.142995, --0.704404, --0.087833, -0.900686, --1.367982, -1.286248, --0.719169, --0.044576, -0.649477, --0.856012, -0.649477, --0.220855, --0.162621, -0.318180, --0.242696, -0.087434, --0.035080, -0.166995, --0.412837, -0.613157, --0.644270, -0.511442, --0.342864, -0.290567, --0.411919, -0.618271, --0.730561, -0.604528, --0.236920, --0.225635, -0.584112, --0.721077, -0.670641, --0.571144, -0.538499, --0.563896, -0.523269, --0.296930, --0.096642, -0.469016, --0.572584, -0.280439, -0.301614, --0.882362, -1.165250, --1.033054, -0.606931, --0.146550, --0.124496, -0.138347, -0.024370, --0.235778, -0.418821, --0.568635, -0.703581, --0.812470, -0.854009, --0.803463, -0.691677, --0.590648, -0.553580, --0.562513, -0.531370, --0.365030, -0.030234, -0.412008, --0.831744, -1.094160, --1.124379, -0.941312, --0.647498, -0.381789, --0.255095, -0.297174, --0.439381, -0.544615, --0.473957, -0.160886, -0.342769, --0.875924, -1.235398, --1.275173, -0.986908, --0.511907, -0.067145, -0.177133, --0.191787, -0.090829, --0.038912, -0.131197, --0.332078, -0.512539, --0.551905, -0.425855, --0.221885, -0.080187, --0.106502, -0.311203, --0.603926, -0.839205, --0.887414, -0.698458, --0.328951, --0.083144, -0.389237, --0.510396, -0.477820, --0.402703, -0.391800, --0.468607, -0.561669, --0.570983, -0.457439, --0.277028, -0.126351, --0.045455, --0.031912, -0.225985, --0.589391, -1.017413, --1.276788, -1.150816, --0.602731, --0.167560, -0.827658, --1.114478, -0.993047, --0.658058, -0.379727, --0.312022, -0.406372, --0.485116, -0.401255, --0.150620, --0.144025, -0.342593, --0.385947, -0.305549, --0.159548, --0.025605, -0.248196, --0.475945, -0.613461, --0.544770, -0.227593, -0.241388, --0.656338, -0.817283, --0.648851, -0.237196, -0.234873, --0.597897, -0.768952, --0.750023, -0.579567, --0.294928, --0.064337, -0.433488, --0.722838, -0.857889, --0.829774, -0.707638, --0.593209, -0.548692, --0.554623, -0.531000, --0.402387, -0.153135, -0.168397, --0.491008, -0.764592, --0.970241, -1.097224, --1.120197, -1.004642, --0.736721, -0.347433, -0.093535, --0.509621, -0.847267, --1.079976, -1.190006, --1.154392, -0.959350, --0.637075, -0.288014, --0.050699, -0.020942, --0.173902, -0.358193, --0.385512, -0.161937, -0.236134, --0.603605, -0.739126, --0.573019, -0.203792, -0.169665, --0.360172, -0.273616, -0.073909, --0.586041, -1.127899, --1.560460, -1.769629, --1.695112, -1.352853, --0.836027, -0.286499, -0.155465, --0.403198, -0.454268, --0.385109, -0.309736, --0.318865, -0.428967, --0.570846, -0.629532, --0.518694, -0.247259, -0.065901, --0.246826, -0.165194, -0.181748, --0.657006, -1.058683, --1.237631, -1.180114, --0.996907, -0.827840, --0.735085, -0.668570, --0.529304, -0.274980, -0.023366, --0.223742, -0.220768, --0.030367, --0.216173, -0.361382, --0.323539, -0.139335, -0.072759, --0.191500, -0.160798, --0.013392, --0.151212, -0.218923, --0.121680, --0.120131, -0.400670, --0.586404, -0.601235, --0.481516, -0.354035, --0.342629, -0.467495, --0.615938, -0.616224, --0.368544, --0.061838, -0.465072, --0.618164, -0.439565, --0.054775, --0.281873, -0.359269, --0.153260, --0.161200, -0.334763, --0.211064, --0.181389, -0.662692, --1.017592, -1.104872, --0.901833, -0.487739, --0.005120, --0.376827, -0.503988, --0.296993, --0.189690, -0.757090, --1.135147, -1.118615, --0.686149, -0.020009, -0.594526, --0.928035, -0.922115, --0.693960, -0.441518, --0.322585, -0.383631, --0.566596, -0.767581, --0.899342, -0.924768, --0.857070, -0.739547, --0.618435, -0.516974, --0.419757, -0.278719, --0.046283, --0.278389, -0.623332, --0.867033, -0.907881, --0.736301, -0.453320, --0.212383, -0.118359, --0.155572, -0.200641, --0.115226, --0.146447, -0.494346, --0.758103, -0.803359, --0.624363, -0.343985, --0.120304, -0.031588, --0.030115, -0.001624, -0.119877, --0.281416, -0.349853, --0.231277, --0.032257, -0.279544, --0.357278, -0.255252, --0.131894, -0.197490, --0.540422, -1.035191, --1.412465, -1.445954, --1.116928, -0.630620, --0.268771, -0.187413, --0.310139, -0.395291, --0.223547, --0.235918, -0.801701, --1.208234, -1.283840, --1.049816, -0.682864, --0.386972, -0.274370, --0.329041, -0.454125, --0.550254, -0.567475, --0.508969, -0.402757, --0.272860, -0.130119, -0.018584, --0.158859, -0.268739, --0.330021, -0.339440, --0.309897, -0.262999, --0.220792, -0.199334, --0.200347, -0.201891, --0.161282, -0.043534, -0.135343, --0.288846, -0.300273, --0.111767, --0.202299, -0.448912, --0.429283, -0.081050, -0.455946, --0.908027, -1.032112, --0.767349, -0.273242, -0.168061, --0.316892, -0.101822, -0.366419, --0.886275, -1.286653, --1.494276, -1.514317, --1.365159, -1.043045, --0.557187, -0.000138, -0.431617, --0.521370, -0.182072, -0.441604, --1.017848, -1.212666, --0.897005, -0.230866, -0.436019, --0.779118, -0.684763, --0.290837, --0.128781, -0.345064, --0.299409, -0.104966, -0.055340, --0.052280, --0.123407, -0.377238, --0.577728, -0.623523, --0.479805, -0.183052, -0.175262, --0.480037, -0.635531, --0.606287, -0.431783, --0.199788, --0.007919, -0.158223, --0.264472, -0.342724, --0.369158, -0.285994, --0.063526, --0.230391, -0.424696, --0.334781, --0.100390, -0.736590, --1.277104, -1.443608, --1.153531, -0.576193, --0.023762, --0.247067, -0.184234, -0.055725, --0.235822, -0.197013, -0.059251, --0.399308, -0.651989, --0.696854, -0.504298, --0.131702, --0.301305, -0.648431, --0.787493, -0.678870, --0.400396, -0.122895, --0.023853, -0.185045, --0.540115, -0.908095, --1.091901, -0.979012, --0.587215, -0.041012, -0.492078, --0.861838, -0.969365, --0.779953, -0.331234, -0.261008, --0.817081, -1.145174, --1.121941, -0.760964, --0.220865, --0.264737, -0.502385, --0.433521, -0.152128, -0.163735, --0.361567, -0.395776, --0.332808, -0.282977, --0.309388, -0.377181, --0.376186, -0.201352, -0.163045, --0.610919, -0.957553, --1.035302, -0.786269, --0.295862, --0.254195, -0.685147, --0.910810, -0.961452, --0.932013, -0.897357, --0.859564, -0.763945, --0.564146, -0.277471, -0.019108, --0.248487, -0.395198, --0.510548, -0.652085, --0.810404, -0.894975, --0.802956, -0.518900, --0.155002, --0.115713, -0.189694, --0.120921, -0.088653, --0.264596, -0.683627, --1.219214, -1.675253, --1.911449, -1.901855, --1.697422, -1.351714, --0.892758, -0.364291, -0.120261, --0.390149, -0.313912, -0.087972, --0.613002, -0.972315, --0.956042, -0.555515, -0.040828, --0.568781, -0.837834, --0.812175, -0.588717, --0.313775, -0.108266, --0.041152, -0.137574, --0.385479, -0.724853, --1.040485, -1.189222, --1.066030, -0.672492, --0.139094, --0.322677, -0.517186, --0.359695, --0.079176, -0.601035, --0.966998, -1.006597, --0.699230, -0.186319, -0.298279, --0.548990, -0.495527, --0.232146, --0.050705, -0.189967, --0.148667, -0.025387, -0.028569, -0.075447, --0.295899, -0.487006, --0.498159, -0.278602, -0.082267, --0.404050, -0.522172, --0.386030, -0.089718, -0.182817, --0.266016, -0.110193, -0.190644, --0.458715, -0.543581, --0.413856, -0.170139, -0.028428, --0.073707, --0.019917, -0.128939, --0.107628, --0.111588, -0.471412, --0.825185, -1.028658, --1.026494, -0.879021, --0.716439, -0.653873, --0.722153, -0.853958, --0.929882, -0.854253, --0.615672, -0.295487, --0.016341, --0.139174, -0.185454, --0.220469, -0.342173, --0.550209, -0.711682, --0.633409, -0.206133, -0.477000, --1.123807, -1.389232, --1.083561, -0.305754, -0.598117, --1.235708, -1.397765, --1.158162, -0.778147, --0.495694, -0.366902, --0.278722, -0.105312, -0.140895, --0.302070, -0.217089, -0.117293, --0.514515, -0.727544, --0.630792, -0.305489, -0.032182, --0.188821, -0.109172, -0.125211, --0.385363, -0.585772, --0.712925, -0.791335, --0.832335, -0.809927, --0.678560, -0.418005, --0.073779, --0.238784, -0.381774, --0.274042, --0.046160, -0.425745, --0.678104, -0.694712, --0.511675, -0.282511, --0.172931, -0.249209, --0.437023, -0.579412, --0.552978, -0.359841, --0.129334, -0.026370, --0.131732, -0.380925, --0.606108, -0.650937, --0.476237, -0.182852, -0.061077, --0.135087, -0.043957, -0.093665, --0.135640, -0.022545, -0.175097, --0.303373, -0.233634, -0.045093, --0.416762, -0.715318, --0.826195, -0.737457, --0.514491, -0.237054, -0.042785, --0.296536, -0.494832, --0.601324, -0.594094, --0.487530, -0.325107, --0.144898, --0.050571, -0.289635, --0.592398, -0.927438, --1.199853, -1.285473, --1.095957, -0.639358, --0.038633, --0.510855, -0.829804, --0.843166, -0.613684, --0.295751, -0.037394, -0.102485, --0.164256, -0.223000, --0.307575, -0.373053, --0.347472, -0.206198, --0.002350, --0.176203, -0.281790, --0.341091, -0.414315, --0.518312, -0.590076, --0.531438, -0.300735, -0.029248, --0.301194, -0.371751, --0.203007, --0.120046, -0.451884, --0.675136, -0.751173, --0.708106, -0.592896, --0.433870, -0.238626, --0.016599, --0.202871, -0.373831, --0.452393, -0.413671, --0.257386, -0.005767, -0.299439, --0.601152, -0.836919, --0.955878, -0.935253, --0.787595, -0.556099, --0.300956, -0.081269, -0.063971, --0.129717, -0.142937, --0.140116, -0.134722, --0.100658, --0.007666, -0.206048, --0.440299, -0.596359, --0.567708, -0.337669, --0.011317, --0.238957, -0.284984, --0.131593, --0.088362, -0.216544, --0.195139, -0.117282, --0.156276, -0.420741, --0.845151, -1.205048, --1.256911, -0.907195, --0.289150, --0.312741, -0.642029, --0.629102, -0.417978, --0.245130, -0.262045, --0.433521, -0.584276, --0.550615, -0.313146, --0.005289, --0.203700, -0.250176, --0.224335, -0.288364, --0.536258, -0.910948, --1.242709, -1.372783, --1.262479, -1.006281, --0.747379, -0.567207, --0.434961, -0.252844, -0.041543, --0.397949, -0.666019, --0.695182, -0.450647, --0.056124, --0.275800, -0.380117, --0.244568, -0.008955, -0.135176, --0.066534, --0.205105, -0.563467, --0.856855, -0.962125, --0.820553, -0.455514, -0.022935, --0.443980, -0.647343, --0.572810, -0.304574, --0.023782, --0.106910, -0.042493, -0.136620, --0.308344, -0.410291, --0.477546, -0.595769, --0.817677, -1.111059, --1.369925, -1.470560, --1.333357, -0.962590, --0.455657, --0.021219, -0.292512, --0.254458, --0.062765, -0.500230, --0.855585, -0.999414, --0.937033, -0.765572, --0.561327, -0.298756, -0.117988, --0.727404, -1.399205, --1.854504, -1.831736, --1.285127, -0.457526, -0.247369, --0.517639, -0.333923, -0.026708, --0.188730, --0.061806, -0.634971, --1.202601, -1.416292, --1.126119, -0.464139, -0.241557, --0.651170, -0.582252, --0.081925, --0.614373, -1.199770, --1.429537, -1.217003, --0.658991, --0.014586, -0.542144, --0.739594, -0.572137, --0.161987, --0.269802, -0.503392, --0.420616, -0.060363, -0.401278, --0.740080, -0.797818, --0.559491, -0.151258, -0.237381, --0.459544, -0.483900, --0.394888, -0.324654, --0.360523, -0.486067, --0.594040, -0.564587, --0.358407, -0.059109, -0.170981, --0.199254, -0.022307, -0.219721, --0.335175, -0.221250, -0.050493, --0.276053, -0.267720, --0.002699, --0.343720, -0.512712, --0.343836, --0.108233, -0.605011, --0.877280, -0.791458, --0.421909, --0.005682, -0.253198, --0.205139, --0.070984, -0.364186, --0.435551, -0.151362, -0.434454, --1.095716, -1.545084, --1.584373, -1.209823, --0.609151, -0.051114, -0.265512, --0.309548, -0.202197, --0.105484, -0.096261, --0.117415, -0.039976, -0.213643, --0.583093, -0.892489, --0.970134, -0.776358, --0.438075, -0.156683, --0.055766, -0.088014, --0.081536, --0.103602, -0.433605, --0.698938, -0.671184, --0.303573, --0.192055, -0.474622, --0.328761, --0.148108, -0.584080, --0.587355, -0.037802, -0.802151, --1.445360, -1.497948, --0.912718, -0.006243, -0.757036, --1.049885, -0.842584, --0.354887, --0.129400, -0.435286, --0.548838, -0.551920, --0.525066, -0.500296, --0.477018, -0.455225, --0.440424, -0.422532, --0.367393, -0.245700, --0.076501, --0.064157, -0.090776, -0.021713, --0.207281, -0.346232, --0.340459, -0.166914, -0.122664, --0.437688, -0.681845, --0.769876, -0.647099, --0.326826, --0.078218, -0.378818, --0.404831, -0.123250, -0.312061, --0.634750, -0.626682, --0.256159, --0.304905, -0.794518, --1.021907, -0.967386, --0.764630, -0.592750, --0.558582, -0.642407, --0.732003, -0.712728, --0.550746, -0.313444, --0.115924, -0.035377, --0.061082, -0.119028, --0.147202, -0.153226, --0.201676, -0.342641, --0.547423, -0.711074, --0.723241, -0.550978, --0.269161, -0.016914, -0.087330, --0.014210, --0.166064, -0.332090, --0.383497, -0.291460, --0.102019, --0.100402, -0.239431, --0.276089, -0.214683, --0.094661, --0.023789, -0.082040, --0.053467, --0.031474, -0.089681, --0.029238, --0.187781, -0.506066, --0.793639, -0.908948, --0.778317, -0.437554, --0.016710, --0.317894, -0.431822, --0.272438, --0.112065, -0.586273, --0.971317, -1.111497, --0.942481, -0.527635, --0.035663, --0.335950, -0.451320, --0.289622, --0.063322, -0.467484, --0.784239, -0.906939, --0.770457, -0.361334, -0.261235, --0.952284, -1.506910, --1.737494, -1.571628, --1.109474, -0.587301, --0.248654, -0.193654, --0.309945, -0.348879, --0.110271, --0.393011, -0.922831, --1.182274, -1.043161, --0.654141, -0.332397, --0.316258, -0.575788, --0.838635, -0.813662, --0.429924, --0.104666, -0.471299, --0.494579, -0.275400, --0.100019, -0.208069, --0.611586, -1.103569, --1.432151, -1.484881, --1.333691, -1.121079, --0.903881, -0.598395, --0.075126, --0.681115, -1.486548, --2.029714, -2.057492, --1.546926, -0.742894, --0.032285, --0.269473, -0.090991, -0.363999, --0.742569, -0.749880, --0.317095, --0.366058, -0.968506, --1.211918, -1.025162, --0.571529, -0.140455, -0.023164, -0.151880, --0.545533, -0.937670, --1.140029, -1.086834, --0.840117, -0.527316, --0.266416, -0.125610, --0.123385, -0.241522, --0.427033, -0.589599, --0.622614, -0.459550, --0.135328, --0.203064, -0.367811, --0.251252, --0.085482, -0.428624, --0.535435, -0.288789, -0.222385, --0.754902, -1.063545, --1.051861, -0.821465, --0.589191, -0.533203, --0.676244, -0.884469, --0.975770, -0.853341, --0.566471, -0.260314, --0.062577, --0.000838, --0.000732, --0.015889, -0.068384, --0.101639, -0.055846, -0.056532, --0.141340, -0.099758, -0.069672, --0.236471, -0.216340, -0.085669, --0.574906, -0.996132, --1.084211, -0.737979, --0.097350, --0.529218, -0.839217, --0.700815, -0.210750, -0.378445, --0.806920, -0.941426, --0.824442, -0.622575, --0.512983, -0.574017, --0.738188, -0.829730, --0.666352, -0.173052, -0.551607, --1.256974, -1.649299, --1.539692, -0.951533, --0.119324, --0.628909, -1.037832, --1.036312, -0.729273, --0.293048, --0.135736, -0.498516, --0.776481, -0.940120, --0.949872, -0.805725, --0.584029, -0.406619, --0.356157, -0.411978, --0.470595, -0.440075, --0.327008, -0.235743, --0.274114, -0.443223, --0.607223, -0.577552, --0.254409, --0.280317, -0.793645, --1.042595, -0.931322, --0.573564, -0.212927, --0.054918, -0.131785, --0.298449, -0.358854, --0.221039, --0.039964, -0.253889, --0.293636, -0.164709, -0.018919, --0.137995, -0.155336, --0.119603, -0.096914, --0.101297, -0.086147, -0.001863, --0.160825, -0.322281, --0.402399, -0.372040, --0.285286, -0.239874, --0.299430, -0.439658, --0.562653, -0.570736, --0.443276, -0.256290, --0.126916, -0.122234, --0.201780, -0.240683, --0.122435, --0.163190, -0.489685, --0.659727, -0.528944, --0.107044, --0.433396, -0.851043, --0.975618, -0.803457, --0.486684, -0.223691, --0.127434, -0.163730, --0.200483, -0.127151, -0.048404, --0.198559, -0.169033, -0.104980, --0.544296, -0.967621, --1.196151, -1.150035, --0.881131, -0.534100, --0.268463, -0.185485, --0.289010, -0.488478, --0.639391, -0.608498, --0.340823, --0.104362, -0.575597, --0.905779, -1.000734, --0.882415, -0.657995, --0.439670, -0.275245, --0.136415, --0.037132, -0.281033, --0.579901, -0.879816, --1.115393, -1.227029, --1.167625, -0.917114, --0.510268, -0.054634, -0.294574, --0.406658, -0.252061, -0.076457, --0.421540, -0.657745, --0.753436, -0.754568, --0.714293, -0.636029, --0.479003, -0.215258, -0.118921, --0.424878, -0.596264, --0.583021, -0.420264, --0.208151, -0.061978, --0.061200, -0.217448, --0.469206, -0.705480, --0.812369, -0.726018, --0.465463, -0.124734, -0.173889, --0.339231, -0.348342, --0.242606, -0.090303, -0.056751, --0.184201, -0.302470, --0.411609, -0.472202, --0.409493, -0.159069, -0.270078, --0.760666, -1.119565, --1.174627, -0.881301, --0.362947, --0.153969, -0.474014, --0.543059, -0.455281, --0.357275, -0.331473, --0.353314, -0.347552, --0.280044, -0.194932, --0.164582, -0.206188, --0.250772, -0.198047, --0.007740, --0.257317, -0.475042, --0.553452, -0.485849, --0.329404, -0.138366, -0.078464, --0.336194, -0.615476, --0.832436, -0.875921, --0.685913, -0.306064, -0.137318, --0.514125, -0.762082, --0.895309, -0.951360, --0.931996, -0.794963, --0.503973, -0.087840, -0.349841, --0.683955, -0.840254, --0.825980, -0.697519, --0.501118, -0.244296, -0.078438, --0.436525, -0.745892, --0.908331, -0.879396, --0.707241, -0.506751, --0.384150, -0.367364, --0.393639, -0.365373, --0.234786, -0.056387, -0.034701, -0.088968, --0.447616, -0.911913, --1.253895, -1.268097, --0.893485, -0.262349, -0.356750, --0.693901, -0.617446, --0.199675, --0.329729, -0.716767, --0.822460, -0.681893, --0.448319, -0.268022, --0.180915, -0.119182, -0.004390, --0.199443, -0.377223, --0.421906, -0.290133, --0.051595, --0.163665, -0.267168, --0.280252, -0.315566, --0.486565, -0.812658, --1.187180, -1.431436, --1.401375, -1.080965, --0.602412, -0.176199, -0.031435, -0.000676, --0.135072, -0.162367, -0.064744, --0.535116, -1.080238, --1.467252, -1.522575, --1.214651, -0.659885, --0.062193, --0.376877, -0.539414, --0.435068, -0.190582, -0.013931, --0.034422, --0.169510, -0.525883, --0.898221, -1.151325, --1.194882, -0.997411, --0.590869, -0.078799, -0.369629, --0.569088, -0.409576, -0.060265, --0.624122, -0.990824, --0.947539, -0.486299, -0.174484, --0.693791, -0.786099, --0.378701, --0.341901, -1.026441, --1.352787, -1.199320, --0.695975, -0.121625, -0.282672, --0.455013, -0.511004, --0.606809, -0.778925, --0.894492, -0.760508, --0.309605, --0.290774, -0.708922, --0.664648, -0.137381, -0.590812, --1.099072, -1.093060, --0.593188, --0.079171, -0.506033, --0.432439, --0.083651, -0.718996, --1.089776, -0.979734, --0.453553, --0.201380, -0.654639, --0.718052, -0.430833, --0.009655, --0.291554, -0.323086, --0.106117, --0.200799, -0.404524, --0.387357, -0.165632, -0.129703, --0.334999, -0.349114, --0.185883, --0.047298, -0.228657, --0.304237, -0.317116, --0.365811, -0.526246, --0.794343, -1.086339, --1.288117, -1.314691, --1.143209, -0.809898, --0.385485, --0.050112, -0.422431, --0.667416, -0.735478, --0.602785, -0.289316, -0.129107, --0.533051, -0.802867, --0.874812, -0.773682, --0.595235, -0.446695, --0.385530, -0.397127, --0.419713, -0.390069, --0.275814, -0.081670, -0.159239, --0.395213, -0.568504, --0.639090, -0.614272, --0.556382, -0.546245, --0.616334, -0.707218, --0.696816, -0.495276, --0.133554, --0.235235, -0.437744, --0.411874, -0.260814, --0.179302, -0.304935, --0.607649, -0.901207, --0.966626, -0.699266, --0.183241, --0.346909, -0.626676, --0.496144, --0.017559, -0.705703, --1.269882, -1.461336, --1.203367, -0.633359, --0.036718, --0.297595, -0.224330, -0.188811, --0.706982, -1.061023, --1.090357, -0.816920, --0.414032, -0.095438, -0.007614, -0.087988, --0.241504, -0.282711, --0.117925, --0.216060, -0.579886, --0.819876, -0.856208, --0.714508, -0.488985, --0.275280, -0.127417, --0.060926, -0.078894, --0.180638, -0.340650, --0.485414, -0.507139, --0.322195, --0.062111, -0.525275, --0.880934, -0.970065, --0.745010, -0.295218, -0.198028, --0.549607, -0.651372, --0.503342, -0.183604, -0.216943, --0.646440, -1.091373, --1.524665, -1.850013, --1.904600, -1.544071, --0.764371, --0.232313, -1.097981, --1.509271, -1.343241, --0.738578, --0.001319, -0.593238, --0.917019, -1.027856, --1.054153, -1.078605, --1.093889, -1.048055, --0.917409, -0.734757, --0.554957, -0.402632, --0.260336, -0.110208, -0.016003, --0.037975, --0.106854, -0.382513, --0.636005, -0.675020, --0.396334, --0.128975, -0.681723, --1.018805, -1.010951, --0.705212, -0.282199, -0.050687, --0.161210, -0.041776, -0.200969, --0.399344, -0.399675, --0.136761, --0.322213, -0.795818, --1.075088, -1.039731, --0.731261, -0.326871, --0.022975, --0.093136, -0.090083, --0.123448, -0.306476, --0.623416, -0.951097, --1.163429, -1.225268, --1.196992, -1.152231, --1.089537, -0.922369, --0.563148, -0.032676, -0.500239, --0.793797, -0.679940, --0.183420, --0.471120, -0.973281, --1.090863, -0.782829, --0.199088, --0.418720, -0.863001, --1.038386, -0.964089, --0.725953, -0.424162, --0.145292, --0.044813, -0.106276, --0.037855, --0.113605, -0.264937, --0.334835, -0.288905, --0.160304, -0.025926, -0.049411, --0.061460, -0.068804, --0.141855, -0.292918, --0.440364, -0.440218, --0.172189, --0.372112, -1.056663, --1.649371, -1.928044, --1.787778, -1.293270, --0.650159, -0.111133, -0.137243, --0.052959, --0.254147, -0.588836, --0.775065, -0.741830, --0.542845, -0.304163, --0.140590, -0.099686, --0.164315, -0.293414, --0.451681, -0.599569, --0.666889, -0.561192, --0.231579, --0.256876, -0.717220, --0.938833, -0.832001, --0.502325, -0.180709, --0.052609, -0.122011, --0.222739, -0.165998, -0.103361, --0.471462, -0.759385, --0.863028, -0.805764, --0.673610, -0.513752, --0.301635, -0.003098, -0.341517, --0.606648, -0.667047, --0.507094, -0.252324, --0.087485, -0.122270, --0.310380, -0.482854, --0.465740, -0.192865, -0.260120, --0.728218, -1.047355, --1.125935, -0.971895, --0.679305, -0.387190, --0.221136, -0.233097, --0.368300, -0.485980, --0.433357, -0.134712, -0.357236, --0.878696, -1.230612, --1.272714, -0.991828, --0.515436, -0.062800, -0.151356, --0.021342, --0.391225, -0.884472, --1.221167, -1.250265, --0.969567, -0.495595, -0.026598, --0.501655, -0.898507, --1.208562, -1.399408, --1.412051, -1.205129, --0.807501, -0.332245, -0.065538, --0.263244, -0.230819, --0.038292, --0.193397, -0.365000, --0.447270, -0.476020, --0.503777, -0.549485, --0.585582, -0.568557, --0.483319, -0.362714, --0.267342, -0.245296, --0.304157, -0.411943, --0.517114, -0.567136, --0.518709, -0.350241, --0.084436, --0.194214, -0.359200, --0.311152, -0.060496, -0.244324, --0.386504, -0.217733, -0.230448, --0.746283, -1.056609, --0.987641, -0.563723, -0.012287, --0.474917, -0.635096, --0.467191, -0.105660, -0.240442, --0.405773, -0.353537, --0.178260, -0.028498, --0.005876, -0.111501, --0.270642, -0.403716, --0.480493, -0.518679, --0.542746, -0.550031, --0.515782, -0.427894, --0.314317, -0.234718, --0.239329, -0.325816, --0.428299, -0.451633, --0.332966, -0.090082, -0.179909, --0.356565, -0.372272, --0.254656, -0.102503, --0.011561, -0.005851, --0.027617, --0.006272, -0.126309, --0.274325, -0.341344, --0.252010, -0.029798, -0.210664, --0.342238, -0.316693, --0.199948, -0.124945, --0.199187, -0.435414, --0.750449, -1.022316, --1.156356, -1.117050, --0.921376, -0.620537, --0.294115, -0.050874, --0.008507, -0.236611, --0.686724, -1.165274, --1.396451, -1.166165, --0.469740, --0.441106, -1.168168, --1.386624, -1.041409, --0.385983, --0.171694, -0.319456, --0.022500, --0.481137, -0.858301, --0.902057, -0.645260, --0.300530, -0.085975, --0.071042, -0.150588, --0.152492, --0.014741, -0.289440, --0.507839, -0.529629, --0.339407, -0.054686, -0.152949, --0.159981, --0.048662, -0.385804, --0.716394, -0.923084, --0.953288, -0.832871, --0.648169, -0.507702, --0.500299, -0.663014, --0.965648, -1.313967, --1.573905, -1.616293, --1.370226, -0.860128, --0.201602, --0.446498, -0.945688, --1.218827, -1.249848, --1.058117, -0.679386, --0.169126, --0.386340, -0.876475, --1.198900, -1.297285, --1.176790, -0.887527, --0.492028, -0.041325, -0.426836, --0.872657, -1.237631, --1.444147, -1.421707, --1.154151, -0.720206, --0.288583, -0.047054, --0.092827, -0.353493, --0.605595, -0.598731, --0.215972, --0.435044, -1.068358, --1.380443, -1.223983, --0.683287, -0.008880, -0.534511, --0.798965, -0.784814, --0.576983, -0.259119, -0.120367, --0.517210, -0.844444, --0.971925, -0.788262, --0.283832, --0.408175, -1.047814, --1.386544, -1.277491, --0.745448, --0.013796, -0.705820, --1.056406, -0.929531, --0.391163, --0.317557, -0.890773, --1.097495, -0.877325, --0.346581, --0.276062, -0.772496, --1.002734, -0.934091, --0.631257, -0.225258, -0.130041, --0.311885, -0.281101, --0.106812, --0.061452, -0.072481, -0.134784, --0.482231, -0.785234, --0.858053, -0.633230, --0.218914, --0.149989, -0.244010, -0.024288, --0.544186, -1.064871, --1.331277, -1.217831, --0.788814, -0.258113, -0.126737, --0.216737, -0.040505, -0.217470, --0.334742, -0.198648, -0.113813, --0.385837, -0.415203, --0.166876, --0.188819, -0.387211, --0.255611, --0.156598, -0.599134, --0.782966, -0.572679, --0.074003, --0.446376, -0.750849, --0.790107, -0.712085, --0.717444, -0.881068, --1.086974, -1.129437, --0.892978, -0.458164, --0.046256, --0.147048, -0.089361, -0.085964, --0.201406, -0.172710, --0.054971, --0.024340, --0.022123, -0.174939, --0.330176, -0.381741, --0.297059, -0.134517, -0.000521, --0.021640, --0.097779, -0.328400, --0.615237, -0.900406, --1.121860, -1.205006, --1.077928, -0.719241, --0.207326, --0.279484, -0.535236, --0.439890, -0.042086, -0.450087, --0.775184, -0.762726, --0.428275, --0.039563, -0.394668, --0.480550, -0.316585, --0.068663, --0.074902, -0.035849, -0.104722, --0.173214, -0.035751, -0.300482, --0.688423, -0.941903, --0.962584, -0.803981, --0.630035, -0.599563, --0.757987, -1.010176, --1.188820, -1.165757, --0.926047, -0.558498, --0.182004, --0.125764, -0.343162, --0.465347, -0.464640, --0.301352, --0.018576, -0.397577, --0.671053, -0.702023, --0.477546, -0.126935, -0.159506, --0.252899, -0.159761, --0.000458, --0.078859, --0.011399, -0.278165, --0.669169, -1.102782, --1.475711, -1.662890, --1.546252, -1.083350, --0.375357, --0.331073, -0.740423, --0.663071, -0.132026, -0.603020, --1.211987, -1.469404, --1.369245, -1.096741, --0.880997, -0.835342, --0.896927, -0.902724, --0.736003, -0.426609, --0.128470, --0.003570, --0.064173, -0.219608, --0.292130, -0.177812, -0.094458, --0.397219, -0.598579, --0.636533, -0.524390, --0.303111, --0.002192, -0.379387, --0.790465, -1.145296, --1.326937, -1.259105, --0.964018, -0.561327, --0.204840, -0.002975, -0.020033, -0.096890, --0.301778, -0.557667, --0.824880, -1.022837, --1.024548, -0.714153, --0.082143, --0.712776, -1.379719, --1.633312, -1.360834, --0.711429, -0.037479, -0.291004, --0.093496, --0.518670, -1.208747, --1.608613, -1.521348, --1.012835, -0.348277, -0.172309, --0.371584, -0.256304, -0.033706, --0.335026, -0.550186, --0.668880, -0.727464, --0.752685, -0.736375, --0.656365, -0.520122, --0.387947, -0.346724, --0.443133, -0.622376, --0.727047, -0.576888, --0.092236, --0.619419, -1.284412, --1.597761, -1.397646, --0.769930, -0.011566, -0.528479, --0.634503, -0.325861, -0.177366, --0.594231, -0.741713, --0.623496, -0.405701, --0.300229, -0.426219, --0.732763, -1.030500, --1.113399, -0.893077, --0.456840, -0.010330, -0.255594, --0.281571, -0.161239, --0.057313, -0.077938, --0.204716, -0.322117, --0.319271, -0.180903, -0.004778, --0.124601, -0.137130, --0.104051, -0.127845, --0.247594, -0.383139, --0.381107, -0.132848, -0.326597, --0.818097, -1.121622, --1.110177, -0.820252, --0.415188, -0.076336, -0.096551, --0.111687, -0.036637, -0.071458, --0.197140, -0.342763, --0.484523, -0.559258, --0.500516, -0.294611, --0.006951, --0.245206, -0.353561, --0.268688, -0.011686, -0.345269, --0.704648, -0.962095, --1.027040, -0.857353, --0.496898, -0.082146, -0.208597, --0.247450, -0.032421, -0.311364, --0.611917, -0.755525, --0.742530, -0.659807, --0.603253, -0.614412, --0.671237, -0.721560, --0.720174, -0.644046, --0.490236, -0.273375, --0.027699, --0.196116, -0.346620, --0.393291, -0.338847, --0.214523, -0.063553, -0.074906, --0.174997, -0.228155, --0.245809, -0.259380, --0.310121, -0.424025, --0.580592, -0.699516, --0.669190, -0.416184, -0.023401, --0.487444, -0.757435, --0.685371, -0.298345, -0.195781, --0.516727, -0.472404, --0.072316, --0.476100, -0.885315, --0.948105, -0.647063, --0.153584, --0.277483, -0.452444, --0.338426, -0.064579, -0.166966, --0.201488, -0.012894, -0.291490, --0.532294, -0.545551, --0.256254, --0.285468, -0.914533, --1.406334, -1.563444, --1.301147, -0.690226, -0.070095, --0.738188, -1.130471, --1.185622, -0.968727, --0.626623, -0.324215, --0.184883, -0.245599, --0.434874, -0.590571, --0.531254, -0.165229, -0.421140, --0.968500, -1.170043, --0.859534, -0.141489, -0.636881, --1.070942, -0.931456, --0.298089, --0.488117, -1.019386, --1.044446, -0.595736, -0.040989, --0.490815, -0.497747, --0.065392, --0.549867, -0.993903, --1.028664, -0.669744, --0.157257, --0.216428, -0.295676, --0.132995, --0.096945, -0.257735, --0.354163, -0.502710, --0.806473, -1.241884, --1.645734, -1.807723, --1.598250, -1.046112, --0.324811, --0.332897, -0.737472, --0.810708, -0.597423, --0.228829, --0.136606, -0.368642, --0.400459, -0.241009, -0.031569, --0.292360, -0.409829, --0.300533, --0.020744, -0.429667, --0.743186, -0.817262, --0.634077, -0.315948, --0.049321, --0.032795, --0.071409, -0.247484, --0.357641, -0.343729, --0.268957, -0.271926, --0.463123, -0.829768, --1.212523, -1.379820, --1.167280, -0.600529, -0.086540, --0.570077, -0.630301, --0.294796, --0.174658, -0.453192, --0.367221, -0.002852, -0.365236, --0.468688, -0.224384, -0.219717, --0.586744, -0.638518, --0.300041, --0.318231, -0.986794, --1.458546, -1.556121, --1.224543, -0.546889, -0.277485, --0.993113, -1.377197, --1.326744, -0.902215, --0.300434, --0.235544, -0.525439, --0.523269, -0.316603, --0.060699, --0.109845, -0.142102, --0.072805, --0.008437, -0.011496, -0.111376, --0.341243, -0.588941, --0.719429, -0.611977, --0.241235, --0.270512, -0.687222, --0.787705, -0.517073, --0.046858, --0.320430, -0.348986, --0.026504, --0.439932, -0.783389, --0.863591, -0.736581, --0.566805, -0.470589, --0.425134, -0.309516, --0.030665, --0.375533, -0.747862, --0.901404, -0.749898, --0.363140, --0.074977, -0.373945, --0.435312, -0.281692, --0.009156, --0.287819, -0.557175, --0.773199, -0.898245, --0.877790, -0.687347, --0.390286, -0.141064, --0.109731, -0.372481, --0.849055, -1.336299, --1.617867, -1.579067, --1.259242, -0.820112, --0.456802, -0.301975, --0.369456, -0.560897, --0.729562, -0.765843, --0.654430, -0.467725, --0.301471, -0.201839, --0.140926, -0.059484, -0.062103, --0.171386, -0.185838, --0.077600, --0.075193, -0.127537, -0.021359, --0.330436, -0.618021, --0.675276, -0.416112, -0.046031, --0.456685, -0.579746, --0.351189, --0.079385, -0.449914, --0.562569, -0.413764, --0.185280, -0.102633, --0.264662, -0.571389, --0.802977, -0.785839, --0.516238, -0.150126, -0.122448, --0.212307, -0.172434, --0.127909, -0.164771, --0.268730, -0.351099, --0.327655, -0.183467, -0.018355, --0.178411, -0.217294, --0.113006, --0.092081, -0.310574, --0.446492, -0.438981, --0.298166, -0.112165, --0.011178, -0.098136, --0.382668, -0.762720, --1.073481, -1.178516, --1.044890, -0.750703, --0.420616, -0.139040, -0.091172, --0.314264, -0.545697, --0.726680, -0.755495, --0.573469, -0.230644, -0.130948, --0.369730, -0.440820, --0.417835, -0.421280, --0.509824, -0.621535, --0.615315, -0.385819, -0.034787, --0.470753, -0.707364, --0.636256, -0.334400, --0.012027, --0.137383, -0.074325, -0.068117, --0.100210, --0.064885, -0.337121, --0.524536, -0.498650, --0.312311, -0.164216, --0.229646, -0.495569, --0.746458, -0.728152, --0.364347, --0.155186, -0.499100, --0.441667, -0.038426, -0.411382, --0.587123, -0.380841, -0.032996, --0.335783, -0.297184, -0.071213, --0.540964, -0.833586, --0.799183, -0.488001, --0.085751, --0.221426, -0.352950, --0.349067, -0.305772, --0.290184, -0.299603, --0.286844, -0.222628, --0.140206, -0.121777, --0.233029, -0.454876, --0.669506, -0.721044, --0.516593, -0.100022, -0.355212, --0.638002, -0.624179, --0.358246, -0.036613, -0.107109, -0.048023, --0.419105, -0.754807, --0.789100, -0.421659, -0.196235, --0.739287, -0.909851, --0.635302, -0.126690, -0.246635, --0.188612, --0.336200, -1.080706, --1.669659, -1.826062, --1.523914, -0.977707, --0.490159, -0.267987, --0.323357, -0.508379, --0.636694, -0.597825, --0.395937, -0.114671, -0.140593, --0.278372, -0.235892, --0.001093, --0.352378, -0.655614, --0.705900, -0.390957, -0.202925, --0.793863, -1.045835, --0.773116, -0.074037, -0.703248, --1.153251, -1.049706, --0.480013, --0.207343, -0.610859, --0.511007, --0.012096, -0.644234, --1.034062, -0.991462, --0.568745, --0.006010, -0.479081, --0.700559, -0.664099, --0.460232, -0.199786, -0.034989, --0.195857, -0.255932, --0.209653, -0.088081, -0.038116, --0.091378, -0.042301, -0.058730, --0.109745, -0.032922, -0.159828, --0.366520, -0.464622, --0.398364, -0.218812, --0.049816, -0.008234, --0.134518, -0.373623, --0.608245, -0.717429, --0.630822, -0.359579, -0.004006, --0.320794, -0.466554, --0.395803, -0.167400, -0.096688, --0.303009, -0.462789, --0.680778, -1.046264, --1.505721, -1.835543, --1.771528, -1.219855, --0.383720, --0.321160, -0.530839, --0.192537, --0.382335, -0.725863, --0.537578, --0.112011, -0.843950, --1.243669, -1.135985, --0.665482, -0.144374, -0.194341, --0.343144, -0.465844, --0.709298, -1.048425, --1.293392, -1.247383, --0.878764, -0.362291, -0.044310, --0.186595, -0.111441, --0.001710, -0.007703, --0.117377, -0.171787, --0.010692, --0.372991, -0.797791, --1.009470, -0.860998, --0.421486, --0.065043, -0.337255, --0.276825, --0.033909, -0.382451, --0.564462, -0.497774, --0.252109, --0.006853, -0.115751, --0.000865, --0.285359, -0.593844, --0.762273, -0.711569, --0.498725, -0.285353, --0.232725, -0.390006, --0.656967, -0.853174, --0.844856, -0.634047, --0.343734, -0.114810, -0.001274, --0.072273, -0.219474, --0.509949, -0.885691, --1.176755, -1.188635, --0.813403, -0.105189, -0.718603, --1.355917, -1.550166, --1.215703, -0.494814, -0.295807, --0.816383, -0.879396, --0.547485, -0.088894, -0.187274, --0.113801, --0.248782, -0.671082, --0.908095, -0.840310, --0.519007, -0.107220, -0.225340, --0.382525, -0.361462, --0.222254, -0.040643, -0.128603, --0.266369, -0.382606, --0.495434, -0.608564, --0.702127, -0.746357, --0.728960, -0.673336, --0.627219, -0.625591, --0.655757, -0.656478, --0.557866, -0.336009, --0.040850, --0.227756, -0.382835, --0.409007, -0.373092, --0.375783, -0.476303, --0.643131, -0.766124, --0.722555, -0.454861, --0.013768, --0.454474, -0.769718, --0.802992, -0.551127, --0.162832, --0.113987, -0.059374, -0.375962, --1.005729, -1.485776, --1.508603, -0.997077, --0.162961, --0.618519, -1.037045, --1.021076, -0.740387, --0.447988, -0.290719, --0.231779, -0.132118, -0.091885, --0.373077, -0.539229, --0.456247, -0.145893, -0.219611, --0.437840, -0.411975, --0.198685, --0.056512, -0.232291, --0.302589, -0.322788, --0.359245, -0.426138, --0.474482, -0.431605, --0.256492, --0.026030, -0.330108, --0.548758, -0.608409, --0.510063, -0.332036, --0.186936, -0.154433, --0.231529, -0.336268, --0.365704, -0.269208, --0.083340, --0.098640, -0.199708, --0.217020, -0.217965, --0.277262, -0.408214, --0.546606, -0.601509, --0.528962, -0.365045, --0.192150, -0.072081, --0.008338, --0.029829, -0.049250, --0.004465, --0.161415, -0.433494, --0.677475, -0.690589, --0.337511, --0.322692, -1.025186, --1.434488, -1.346749, --0.821286, -0.147759, -0.330123, --0.413972, -0.143656, -0.263798, --0.569982, -0.651310, --0.532580, -0.318475, --0.094552, --0.123527, -0.364750, --0.638115, -0.890051, --1.019311, -0.936532, --0.625580, -0.168970, -0.275749, --0.537930, -0.509550, --0.201312, --0.252832, -0.655030, --0.841377, -0.761703, --0.491157, -0.169988, -0.080408, --0.206873, -0.218755, --0.155948, -0.070394, --0.028489, -0.103315, --0.330489, -0.648002, --0.880576, -0.812857, --0.325211, --0.499366, -1.385703, --2.003012, -2.142513, --1.816944, -1.221635, --0.597542, -0.102533, -0.225266, --0.412378, -0.477307, --0.415608, -0.250339, --0.084191, -0.079704, --0.357528, -0.884585, --1.450842, -1.776365, --1.688638, -1.245550, --0.706705, -0.362365, --0.337467, -0.513523, --0.627818, -0.476970, --0.071192, --0.376660, -0.614570, --0.536410, -0.245479, -0.044207, --0.178673, -0.165502, --0.132618, -0.194818, --0.350473, -0.493506, --0.517195, -0.407210, --0.239616, -0.094980, -0.020040, --0.162089, -0.360631, --0.539882, -0.542404, --0.250888, --0.290518, -0.865716, --1.209722, -1.176239, --0.822228, -0.348092, -0.053814, --0.320916, -0.523102, --0.756717, -1.026727, --1.217730, -1.176960, --0.841073, -0.303397, -0.234908, --0.595536, -0.739699, --0.783869, -0.901070, --1.178525, -1.537657, --1.780612, -1.735190, --1.391786, -0.924836, --0.574989, -0.476824, --0.562766, -0.618116, --0.445097, -0.013554, -0.508563, --0.858578, -0.837890, --0.423149, --0.226332, -0.853040, --1.223223, -1.228919, --0.930869, -0.526550, --0.252291, -0.259175, --0.525436, -0.860980, --1.012683, -0.814970, --0.293793, --0.343371, -0.825596, --0.968199, -0.760037, --0.341770, --0.096725, -0.424109, --0.613503, -0.712308, --0.774916, -0.813915, --0.799475, -0.694583, --0.490666, -0.218289, -0.064283, --0.287748, -0.385750, --0.315563, -0.091581, -0.188207, --0.361415, -0.283129, -0.069120, --0.546970, -0.894617, --0.898188, -0.521418, -0.069555, --0.609145, -0.887303, --0.850131, -0.592276, --0.269987, -0.009525, -0.132879, --0.157185, -0.088870, -0.034719, --0.159181, -0.213082, --0.134505, --0.084626, -0.371942, --0.596794, -0.637308, --0.449899, -0.094480, -0.297922, --0.586562, -0.672236, --0.522515, -0.182417, -0.222640, --0.508775, -0.503252, --0.146371, --0.440072, -0.988568, --1.229712, -1.059059, --0.607658, -0.158430, -0.037431, -0.084399, --0.380287, -0.617991, --0.644756, -0.485465, --0.308821, -0.293437, --0.490183, -0.775539, --0.926517, -0.767292, --0.289990, --0.329598, -0.830958, --1.016778, -0.855794, --0.482669, -0.108011, -0.095089, --0.061489, --0.163117, -0.465922, --0.719887, -0.822687, --0.720880, -0.427405, --0.029787, --0.325172, -0.481998, --0.351531, --0.029379, -0.499044, --0.848456, -0.936413, --0.767784, -0.476806, --0.223465, -0.077667, -0.020496, --0.192924, -0.500415, --0.862324, -1.086798, --0.995462, -0.553485, -0.090374, --0.683758, -1.014963, --1.022992, -0.805919, --0.536034, -0.350697, --0.290927, -0.311995, --0.337595, -0.310908, --0.215569, -0.069392, -0.091967, --0.230311, -0.317310, --0.344331, -0.325399, --0.289469, -0.263764, --0.257855, -0.258822, --0.241665, -0.188609, --0.104074, -0.012708, -0.059278, --0.104476, -0.135140, --0.158226, -0.145114, --0.029810, --0.247947, -0.678998, --1.153313, -1.499793, --1.583258, -1.392782, --1.051116, -0.730170, --0.532291, -0.431307, --0.323497, -0.145957, -0.043476, --0.104573, --0.052753, -0.357063, --0.594919, -0.562403, --0.232431, --0.200574, -0.442269, --0.297563, --0.198723, -0.808434, --1.243824, -1.334377, --1.098651, -0.691516, --0.282091, --0.046074, -0.311229, --0.571246, -0.843935, --1.075609, -1.177559, --1.093135, -0.835855, --0.471564, -0.069921, -0.325297, --0.684950, -0.966223, --1.109789, -1.074700, --0.877989, -0.593998, --0.305143, -0.046963, -0.198244, --0.448081, -0.657858, --0.717911, -0.531608, --0.117716, --0.353230, -0.635865, --0.558209, -0.138737, -0.411513, --0.804595, -0.833673, --0.477611, --0.100198, -0.645796, --0.940615, -0.893217, --0.557935, -0.084087, -0.365602, --0.679121, -0.814586, --0.781935, -0.616185, --0.364482, -0.083878, -0.169204, --0.365262, -0.523820, --0.698971, -0.921024, --1.133323, -1.188042, --0.933283, -0.347803, -0.380740, --0.919594, -0.982833, --0.528071, --0.191456, -0.775491, --0.933995, -0.672164, --0.269414, -0.066805, --0.218587, -0.588920, --0.866491, -0.808545, --0.430353, --0.002436, -0.172680, -0.049250, --0.508435, -0.882034, --0.915752, -0.594824, --0.122978, --0.258750, -0.454560, --0.549682, -0.684733, --0.893345, -1.050609, --0.974718, -0.587504, -0.005533, --0.576703, -0.916589, --0.937417, -0.676754, --0.237005, --0.262677, -0.689880, --0.897580, -0.770263, --0.309414, --0.316791, -0.828919, --0.984166, -0.718749, --0.181138, --0.367358, -0.710463, --0.784152, -0.673261, --0.520983, -0.426857, --0.397893, -0.367933, --0.255618, -0.019873, -0.312371, --0.650809, -0.873143, --0.874893, -0.623687, --0.194769, --0.239329, -0.475739, --0.383980, --0.007403, -0.497351, --0.796807, -0.679052, --0.114642, --0.694980, -1.417776, --1.773611, -1.686546, --1.307696, -0.894609, --0.633728, -0.531200, --0.443237, -0.211514, -0.204331, --0.692551, -1.065813, --1.180680, -1.013234, --0.651513, -0.229704, -0.139747, --0.396474, -0.523579, --0.525302, -0.415743, --0.224329, -0.005316, -0.166213, --0.218411, -0.116151, -0.118057, --0.413278, -0.688315, --0.895863, -1.041713, --1.162875, -1.278976, --1.355738, -1.315683, --1.097349, -0.722734, --0.317807, -0.058242, --0.067536, -0.334188, --0.708776, -0.988890, --1.038088, -0.858676, --0.569049, -0.305736, --0.125609, --0.017191, -0.205913, --0.465832, -0.721646, --0.844304, -0.748601, --0.461907, -0.112670, -0.147120, --0.225597, -0.128665, -0.058079, --0.218788, -0.259069, --0.143366, --0.090090, -0.344226, --0.508528, -0.516867, --0.383774, -0.191998, --0.036289, --0.037502, -0.053290, --0.070303, -0.121367, --0.173461, -0.143747, -0.039088, --0.373462, -0.770314, --1.098383, -1.259027, --1.239577, -1.110278, --0.970879, -0.887116, --0.860512, -0.845541, --0.791896, -0.675523, --0.500695, -0.286327, --0.062075, --0.118249, -0.168976, --0.002142, --0.403392, -0.937477, --1.363344, -1.421040, --0.985707, -0.178358, -0.663029, --1.158598, -1.108499, --0.614099, -0.008983, -0.360678, --0.356640, -0.116040, -0.077602, --0.018378, --0.271426, -0.570265, --0.631931, -0.364529, -0.116882, --0.585838, -0.857463, --0.880231, -0.717002, --0.460661, -0.169704, -0.130063, --0.401937, -0.574789, --0.574098, -0.383458, --0.075931, --0.223834, -0.424097, --0.528810, -0.621127, --0.775023, -0.965371, --1.055089, -0.879512, --0.372129, --0.357740, -1.052827, --1.428983, -1.321668, --0.778549, -0.049165, -0.527549, --0.687365, -0.374916, -0.228458, --0.806929, -1.088697, --0.991346, -0.641424, --0.260008, -0.002790, -0.126220, --0.229887, -0.391866, --0.583427, -0.685445, --0.605086, -0.381750, --0.181216, -0.170554, --0.370249, -0.607789, --0.623997, -0.265491, -0.376055, --0.987689, -1.220302, --0.916429, -0.225372, -0.479089, --0.827849, -0.678507, --0.181342, --0.346256, -0.636205, --0.619702, -0.419358, --0.217832, -0.121651, --0.117241, -0.125137, --0.082035, --0.020598, -0.155369, --0.295893, -0.430344, --0.546573, -0.617344, --0.609047, -0.508826, --0.343433, -0.171793, --0.059157, -0.054406, --0.181365, -0.435241, --0.772827, -1.104517, --1.311803, -1.300769, --1.063565, -0.696425, --0.346542, -0.118369, --0.011623, --0.056692, -0.162714, --0.295322, -0.357281, --0.253080, --0.007169, -0.277918, --0.358538, -0.133965, -0.325923, --0.785717, -0.977200, --0.758443, -0.194017, -0.491140, --1.043367, -1.303648, --1.250709, -0.961848, --0.547888, -0.117208, -0.224121, --0.373676, -0.266964, -0.070128, --0.503181, -0.842427, --0.945008, -0.794504, --0.496761, -0.196177, -0.019261, --0.150056, -0.238791, --0.298712, -0.289206, --0.161623, --0.069505, -0.301910, --0.398966, -0.282844, -0.009016, --0.350885, -0.615968, --0.750026, -0.772031, --0.709316, -0.535903, --0.182445, --0.378442, -1.043170, --1.574376, -1.714574, --1.350856, -0.613369, -0.174613, --0.674924, -0.727833, --0.432973, -0.066678, -0.102553, -0.026335, --0.352125, -0.664853, --0.783610, -0.640604, --0.276392, --0.213064, -0.714287, --1.098705, -1.225166, --0.985650, -0.387205, -0.394471, --1.056040, -1.305314, --1.020298, -0.324171, -0.478028, --1.063059, -1.250482, --1.066474, -0.687207, --0.317405, -0.090249, --0.040420, -0.138645, --0.335720, -0.576596, --0.790298, -0.893449, --0.829634, -0.619657, --0.369209, -0.206177, --0.184847, -0.236479, --0.218132, -0.030361, -0.289882, --0.579373, -0.656293, --0.441586, -0.005230, -0.484571, --0.856885, -1.008674, --0.921266, -0.642440, --0.264510, --0.094658, -0.322040, --0.355960, -0.223994, --0.036210, --0.077723, -0.054779, -0.052076, --0.104053, --0.024258, -0.341481, --0.708958, -0.916008, --0.817358, -0.437065, -0.040609, --0.390209, -0.487393, --0.369513, -0.177317, --0.036155, --0.022839, -0.047083, --0.085294, -0.130344, --0.132675, -0.061703, -0.052827, --0.142963, -0.167065, --0.152290, -0.169290, --0.256691, -0.362762, --0.364192, -0.158438, -0.239596, --0.678525, -0.955064, --0.946540, -0.694488, --0.376305, -0.184813, --0.202668, -0.358330, --0.489324, -0.463353, --0.272727, -0.039327, -0.072068, -0.025802, --0.270031, -0.477036, --0.462122, -0.172884, -0.256863, --0.577165, -0.575833, --0.215305, --0.337875, -0.809239, --0.973540, -0.774582, --0.340772, --0.102577, -0.364076, --0.383330, -0.244025, --0.104834, -0.095816, --0.244903, -0.474312, --0.659539, -0.704550, --0.584813, -0.341836, --0.050061, --0.212801, -0.378698, --0.396098, -0.245373, -0.039741, --0.364485, -0.598156, --0.629296, -0.424952, --0.059430, --0.307575, -0.498710, --0.401764, -0.026722, -0.493044, --0.958680, -1.195645, --1.131124, -0.822219, --0.423885, -0.115111, --0.018591, -0.147932, --0.403836, -0.621419, --0.650908, -0.435753, --0.045920, --0.358753, -0.620054, --0.673076, -0.576294, --0.458232, -0.421075, --0.474848, -0.550418, --0.572989, -0.527698, --0.459466, -0.410676, --0.360059, -0.226993, -0.051794, --0.434290, -0.754872, --0.807418, -0.481465, -0.147044, --0.845020, -1.360778, --1.576197, -1.559280, --1.476807, -1.438267, --1.402302, -1.227804, --0.827915, -0.289966, -0.152940, --0.286627, -0.084007, -0.264677, --0.487587, -0.426538, --0.142480, --0.140939, -0.203452, -0.019826, --0.398930, -0.694545, --0.702735, -0.369313, -0.184871, --0.728829, -1.032327, --0.964265, -0.540138, -0.088859, --0.690628, -1.032282, --0.966644, -0.498027, -0.205869, --0.875847, -1.257594, --1.225116, -0.829968, --0.263338, --0.240727, -0.505726, --0.472726, -0.206533, -0.141420, --0.394873, -0.419704, --0.176335, --0.261570, -0.732772, --1.052532, -1.091609, --0.837822, -0.411257, --0.020252, --0.130752, --0.056072, -0.510617, --1.015952, -1.312333, --1.234451, -0.802575, --0.209573, --0.290969, -0.525376, --0.480803, -0.282703, --0.097683, -0.036114, --0.114872, -0.285125, --0.484428, -0.667998, --0.807132, -0.874696, --0.842519, -0.695433, --0.446796, -0.139665, -0.167260, --0.417137, -0.566074, --0.588711, -0.484261, --0.282545, -0.041018, -0.173118, --0.309078, -0.350262, --0.314097, -0.239755, --0.176032, -0.172402, --0.263948, -0.446653, --0.660075, -0.805361, --0.803949, -0.661184, --0.477927, -0.383953, --0.431313, -0.530884, --0.496159, -0.179690, -0.390421, --0.982097, -1.279813, --1.087409, -0.478058, -0.219696, --0.605044, -0.446716, -0.171015, --0.891926, -1.293613, --1.127401, -0.449631, -0.424529, --1.104797, -1.332183, --1.093173, -0.592452, --0.119470, --0.105324, -0.024488, -0.254820, --0.534207, -0.628339, --0.454521, -0.072455, -0.345257, --0.604120, -0.596896, --0.365578, -0.070517, -0.118967, --0.138285, -0.062385, --0.035852, -0.151744, --0.373119, -0.558889, --0.575442, -0.410113, --0.199071, -0.142813, --0.362923, -0.798232, --1.216925, -1.346117, --1.041030, -0.384731, -0.350256, --0.857874, -0.972095, --0.744852, -0.379226, --0.070029, --0.131156, -0.327387, --0.657745, -1.141385, --1.610034, -1.792820, --1.501849, -0.785249, -0.071774, --0.710982, -0.922181, --0.767003, -0.518056, --0.457699, -0.681046, --1.040997, -1.267340, --1.164776, -0.742620, --0.187269, --0.289494, -0.601751, --0.822967, -1.083204, --1.422029, -1.723620, --1.791730, -1.506216, --0.934338, -0.306371, -0.125643, --0.235141, -0.066712, -0.236663, --0.545554, -0.798330, --0.972017, -1.028908, --0.915239, -0.623118, --0.248154, --0.033731, -0.074696, -0.133825, --0.444000, -0.652237, --0.642813, -0.463943, --0.281164, -0.249035, --0.401392, -0.637105, --0.801290, -0.792334, --0.615735, -0.355346, --0.098411, --0.118715, -0.304038, --0.460250, -0.548519, --0.507595, -0.314845, --0.031155, --0.218166, -0.317682, --0.230877, -0.008809, -0.261731, --0.517654, -0.734501, --0.895941, -0.963517, --0.888245, -0.657038, --0.324963, --0.005581, -0.246998, --0.376019, -0.428362, --0.447869, -0.441768, --0.383428, -0.254463, --0.078565, --0.089024, -0.203701, --0.258298, -0.265348, --0.216783, -0.073012, -0.194822, --0.545026, -0.852614, --0.972670, -0.837339, --0.507186, -0.131305, -0.152728, --0.298929, -0.352983, --0.381381, -0.395076, --0.332889, -0.118811, -0.252738, --0.673449, -0.962259, --0.973934, -0.702893, --0.302571, --0.006590, -0.084230, -0.034373, --0.170627, -0.142077, -0.098064, --0.431137, -0.674012, --0.725813, -0.640291, --0.567442, -0.615738, --0.748887, -0.802086, --0.607932, -0.138334, -0.443783, --0.864986, -0.903282, --0.526667, --0.079341, -0.610147, --0.804697, -0.576613, --0.044280, --0.546099, -0.950105, --1.031987, -0.799669, --0.370147, --0.094984, -0.444290, --0.570268, -0.433807, --0.083335, --0.349892, -0.701894, --0.857993, -0.813158, --0.658621, -0.499565, --0.371113, -0.225920, --0.002401, --0.292827, -0.567714, --0.708857, -0.666969, --0.488043, -0.271304, --0.102431, -0.021557, --0.036551, -0.142852, --0.313077, -0.469588, --0.488073, -0.260840, -0.212707, --0.781762, -1.198631, --1.253859, -0.908983, --0.335643, --0.173382, -0.371968, --0.203849, --0.169389, -0.472878, --0.486886, -0.170791, -0.332686, --0.805370, -1.093731, --1.186471, -1.185210, --1.199776, -1.247887, --1.231694, -1.006293, --0.491381, --0.252792, -1.037454, --1.637222, -1.900681, --1.812092, -1.476485, --1.052055, -0.678072, --0.433920, -0.333595, --0.341457, -0.395547, --0.433304, -0.415561, --0.340781, -0.240955, --0.160519, -0.131305, --0.156973, -0.212164, --0.252351, -0.229528, --0.111866, --0.096459, -0.346226, --0.556930, -0.653483, --0.605604, -0.442445, --0.230686, -0.032556, -0.123653, --0.241871, -0.335520, --0.410175, -0.464798, --0.498311, -0.501732, --0.439864, -0.254018, -0.090539, --0.536800, -0.914068, --1.011124, -0.716061, --0.121139, --0.502528, -0.862071, --0.824761, -0.491941, --0.112469, --0.093559, -0.068235, -0.082400, --0.199250, -0.195788, --0.105900, -0.035011, --0.068771, -0.212086, --0.393517, -0.516885, --0.515505, -0.377044, --0.136384, --0.145700, -0.401895, --0.572697, -0.621237, --0.547956, -0.394760, --0.227395, -0.101336, --0.033881, -0.005873, -0.008109, --0.009852, --0.021133, -0.094651, --0.180267, -0.218241, --0.170733, -0.068667, --0.004696, -0.066634, --0.260477, -0.488472, --0.608126, -0.533638, --0.305582, -0.074610, --0.007258, -0.178059, --0.521975, -0.877867, --1.088741, -1.087609, --0.914551, -0.666129, --0.426022, -0.228249, --0.065961, --0.080037, -0.224015, --0.373858, -0.528225, --0.664132, -0.731893, --0.680185, -0.503810, --0.270910, -0.090247, --0.030440, -0.057559, --0.054546, --0.080093, -0.333082, --0.566027, -0.613318, --0.413364, -0.064130, -0.248424, --0.395842, -0.410250, --0.459108, -0.705703, --1.160106, -1.636245, --1.854790, -1.625995, --0.987721, -0.202678, -0.387383, --0.557529, -0.320394, -0.102610, --0.433509, -0.507854, --0.351278, -0.123204, -0.017152, --0.020139, --0.042405, -0.056854, -0.030133, --0.162565, -0.210390, --0.062214, --0.285025, -0.697361, --0.960811, -0.900072, --0.491584, --0.103728, -0.621353, --0.844972, -0.730719, --0.417778, -0.119345, -0.022825, --0.012153, --0.047934, -0.068610, --0.058539, -0.106954, --0.287564, -0.569264, --0.812434, -0.858795, --0.648508, -0.277564, -0.049954, --0.146880, --0.034816, -0.365116, --0.609378, -0.569964, --0.206468, --0.342960, -0.849848, --1.130006, -1.133726, --0.939822, -0.673476, --0.416661, -0.173566, -0.096248, --0.413337, -0.735660, --0.969561, -1.027183, --0.890215, -0.633835, --0.388287, -0.258974, --0.258576, -0.301445, --0.267699, -0.091413, -0.193922, --0.488129, -0.709134, --0.859895, -1.019258, --1.260217, -1.561432, --1.789521, -1.775283, --1.430679, -0.817116, --0.112626, --0.495279, -0.908992, --1.143305, -1.266583, --1.317305, -1.263984, --1.037233, -0.609253, --0.063626, --0.399308, -0.540723, --0.214694, --0.521573, -1.396719, --2.041776, -2.180228, --1.777191, -1.048976, --0.323885, --0.151136, -0.326689, --0.318296, -0.266722, --0.210316, -0.070428, -0.246293, --0.721154, -1.183276, --1.395756, -1.207477, --0.660403, --0.022360, -0.556620, --0.745230, -0.566852, --0.164383, --0.246595, -0.492266, --0.519540, -0.405663, --0.300723, -0.335595, --0.543852, -0.837702, --1.050630, -1.024682, --0.697975, -0.147638, -0.435110, --0.828561, -0.883298, --0.593030, -0.095697, -0.397067, --0.703057, -0.747689, --0.575529, -0.297746, --0.018266, --0.209591, -0.374082, --0.466434, -0.457731, --0.316481, -0.049706, -0.276748, --0.564706, -0.737887, --0.774630, -0.689794, --0.488955, -0.151207, -0.327536, --0.863108, -1.260628, --1.293467, -0.853538, --0.067518, --0.725303, -1.149856, --1.025952, -0.495753, -0.053431, --0.234095, --0.088578, -0.709545, --1.223870, -1.296438, --0.874812, -0.205220, -0.345749, --0.529534, -0.352569, --0.035292, --0.156414, -0.079894, -0.223907, --0.598141, -0.895977, --1.066009, -1.143990, --1.177288, -1.158043, --1.026122, -0.736906, --0.329750, --0.069419, -0.321527, --0.366803, -0.260209, --0.120832, -0.038505, --0.016181, --0.007263, -0.080783, --0.184316, -0.243690, --0.202981, -0.088479, --0.005886, -0.070040, --0.321253, -0.689713, --1.032035, -1.211903, --1.173086, -0.963010, --0.699090, -0.501368, --0.431095, -0.467209, --0.530756, -0.540761, --0.467960, -0.354208, --0.284996, -0.330033, --0.489631, -0.684331, --0.799335, -0.756726, --0.565115, -0.310639, --0.095939, --0.026416, -0.076812, --0.114806, -0.180281, --0.258152, -0.292495, --0.234887, -0.086882, -0.095560, --0.235760, -0.280262, --0.221471, -0.089150, -0.075860, --0.243360, -0.399329, --0.538669, -0.653831, --0.726120, -0.723592, --0.610841, -0.374159, --0.052109, --0.254092, -0.414160, --0.342623, -0.070852, -0.241212, --0.383062, -0.227721, -0.164841, --0.558605, -0.680289, --0.404080, --0.147187, -0.668126, --0.869883, -0.675633, --0.271564, --0.023563, --0.026089, -0.427504, --0.976372, -1.405982, --1.547590, -1.394704, --1.055017, -0.657488, --0.294071, -0.020909, -0.116481, --0.080961, --0.127114, -0.442281, --0.743847, -0.905547, --0.852849, -0.591903, --0.198769, --0.215159, -0.539572, --0.692160, -0.637519, --0.399425, -0.060156, -0.262536, --0.460181, -0.481411, --0.354852, -0.169431, --0.021269, --0.039819, -0.030701, --0.011804, -0.040613, --0.134726, -0.265772, --0.380627, -0.430353, --0.389547, -0.263272, --0.087878, --0.071671, -0.136547, --0.049721, --0.177789, -0.443124, --0.583439, -0.462190, --0.060717, --0.491163, -0.976399, --1.209251, -1.133657, --0.838996, -0.490511, --0.227895, -0.097950, --0.053745, -0.004439, -0.125797, --0.363456, -0.681976, --1.014671, -1.271137, --1.357067, -1.202092, --0.790608, -0.178448, -0.516366, --1.142339, -1.545966, --1.601644, -1.252172, --0.562295, --0.249455, -0.856754, --0.968473, -0.504972, -0.314103, --1.056841, -1.310885, --0.920470, -0.075626, -0.801296, --1.293401, -1.202321, --0.621365, --0.146613, -0.754148, --0.960414, -0.708794, --0.122789, --0.556760, -1.065395, --1.213739, -0.961040, --0.430639, --0.147127, -0.542550, --0.629788, -0.432380, --0.092077, --0.212917, -0.353496, --0.300410, -0.126021, -0.037425, --0.065040, --0.094371, -0.385676, --0.672584, -0.814198, --0.749862, -0.533838, --0.290136, -0.116620, --0.011013, --0.117517, -0.353421, --0.670242, -0.909779, --0.879578, -0.506727, -0.072799, --0.573943, -0.745087, --0.543018, -0.163280, -0.105962, --0.099358, --0.107864, -0.273405, --0.193438, --0.125673, -0.467892, --0.578464, -0.366076, -0.025499, --0.330051, -0.361969, --0.148303, --0.108863, -0.199903, --0.065919, --0.175538, -0.346435, --0.358640, -0.269857, --0.203964, -0.215811, --0.228688, -0.106193, -0.203294, --0.581984, -0.803350, --0.698917, -0.297958, -0.176971, --0.460265, -0.426377, --0.168364, --0.081402, -0.121927, -0.084003, --0.406783, -0.664633, --0.758699, -0.726316, --0.683937, -0.719482, --0.826183, -0.924679, --0.941923, -0.870956, --0.762163, -0.663142, --0.570548, -0.441494, --0.253279, -0.052519, -0.058366, -0.004232, --0.225830, -0.476908, --0.583302, -0.444731, --0.120913, --0.184139, -0.246178, -0.018222, --0.465394, -0.790441, --0.722337, -0.224913, -0.442579, --0.865129, -0.731574, --0.042297, --0.876237, -1.559652, --1.671557, -1.179979, --0.348128, --0.432687, -0.852477, --0.816130, -0.448328, -0.004543, --0.306732, -0.334713, --0.113409, --0.216697, -0.481298, --0.564927, -0.467946, --0.294573, -0.177094, --0.185462, -0.283864, --0.362449, -0.316952, --0.117487, --0.175210, -0.445124, --0.576059, -0.497255, --0.209069, --0.211553, -0.629257, --0.896141, -0.914533, --0.685511, -0.310019, -0.064251, --0.320117, -0.424150, --0.425185, -0.406044, --0.426401, -0.494651, --0.579642, -0.644121, --0.670871, -0.664135, --0.631245, -0.563988, --0.438329, -0.235412, -0.030973, --0.304163, -0.505428, --0.577522, -0.523686, --0.413674, -0.347222, --0.392698, -0.535963, --0.673604, -0.664454, --0.421298, --0.006678, -0.419516, --0.551306, -0.223740, -0.520107, --1.397142, -2.012874, --2.071384, -1.539025, --0.659768, --0.183183, -0.665691, --0.660314, -0.249759, -0.357170, --0.930851, -1.289509, --1.328794, -1.041730, --0.539983, -0.046463, -0.179587, -0.021299, --0.584869, -1.210190, --1.500839, -1.197523, --0.356983, --0.652869, -1.356766, --1.450895, -0.972625, --0.250481, --0.320701, -0.514709, --0.361143, -0.052631, -0.224795, --0.396972, -0.482550, --0.505622, -0.444424, --0.265834, --0.000254, -0.236199, --0.303143, -0.149795, -0.132719, --0.364487, -0.401162, --0.230916, --0.029590, -0.227273, --0.272158, -0.169295, -0.022851, --0.250010, -0.477781, --0.663825, -0.737708, --0.633204, -0.357674, --0.029250, --0.174097, -0.134259, -0.110014, --0.375837, -0.461427, --0.291412, --0.029703, -0.294752, --0.337422, -0.134377, -0.198017, --0.490743, -0.620593, --0.558853, -0.358494, --0.106413, --0.123993, -0.298083, --0.418058, -0.502051, --0.559428, -0.578399, --0.532088, -0.397830, --0.177519, --0.090978, -0.337210, --0.479325, -0.460777, --0.289165, -0.051998, -0.111873, --0.081475, --0.172262, -0.556448, --0.897735, -1.036828, --0.918789, -0.620301, --0.295765, -0.080914, --0.020838, -0.069325, --0.148835, -0.214976, --0.272330, -0.336116, --0.382844, -0.341472, --0.138623, --0.236625, -0.701042, --1.105799, -1.309010, --1.246143, -0.957583, --0.562286, -0.197878, -0.037796, --0.116065, -0.070515, -0.033585, --0.130830, -0.171943, --0.124138, --0.030555, -0.285694, --0.593972, -0.864920, --0.995936, -0.928207, --0.690381, -0.391011, --0.156161, -0.052715, --0.054125, -0.074585, --0.044590, --0.031733, -0.082149, --0.028428, --0.145689, -0.373721, --0.545727, -0.573681, --0.434648, -0.169725, -0.145740, --0.431101, -0.616257, --0.653310, -0.533254, --0.297631, -0.027108, -0.195789, --0.325646, -0.366258, --0.349442, -0.302547, --0.230799, -0.121778, -0.038287, --0.247862, -0.475728, --0.652505, -0.683308, --0.495294, -0.106130, -0.336221, --0.595367, -0.473617, -0.045402, --0.743380, -1.264133, --1.318983, -0.871233, --0.168515, --0.410703, -0.598514, --0.401183, -0.071977, -0.081520, -0.088535, --0.487608, -0.873158, --1.037489, -0.938302, --0.695618, -0.485739, --0.428198, -0.539450, --0.755495, -0.977540, --1.104311, -1.054257, --0.796500, -0.386674, -0.027963, --0.266418, -0.220052, -0.059920, --0.367843, -0.459508, --0.214404, --0.265970, -0.700872, --0.796876, -0.432371, -0.261047, --0.970643, -1.375343, --1.307886, -0.817012, --0.116328, --0.528279, -0.905216, --0.918193, -0.597629, --0.075148, --0.465174, -0.846313, --0.953506, -0.767196, --0.362276, --0.125812, -0.554776, --0.826836, -0.914527, --0.848963, -0.679720, --0.437494, -0.131243, -0.215227, --0.521999, -0.657590, --0.509791, -0.083703, -0.451669, --0.825152, -0.814166, --0.390427, --0.243919, -0.765524, --0.917844, -0.653966, --0.142081, --0.361403, -0.674444, --0.774964, -0.762800, --0.745856, -0.747558, --0.704809, -0.546904, --0.282271, -0.017432, -0.110135, --0.033279, --0.190261, -0.416178, --0.518396, -0.479042, --0.391613, -0.374260, --0.465659, -0.591701, --0.631436, -0.524413, --0.324311, -0.150119, --0.076189, -0.057397, -0.042689, --0.337288, -0.804592, --1.268750, -1.496934, --1.350030, -0.883870, --0.328001, --0.048786, -0.099508, -0.120157, --0.403812, -0.540919, --0.456414, -0.251324, --0.124125, -0.231150, --0.577582, -1.002227, --1.260702, -1.158908, --0.666743, --0.048238, -0.689791, --0.975248, -0.778007, --0.190891, --0.524881, -1.072459, --1.255379, -1.046624, --0.570903, -0.029177, -0.388105, --0.566554, -0.498761, --0.276881, -0.047795, -0.056401, -0.016828, --0.215977, -0.419170, --0.510700, -0.455270, --0.322570, -0.242288, --0.313185, -0.523412, --0.738048, -0.771506, --0.506143, --0.018077, -0.605822, --1.005714, -1.046770, --0.726236, -0.197193, -0.327241, --0.684491, -0.821504, --0.782006, -0.651295, --0.503172, -0.374114, --0.264338, -0.154107, --0.026809, --0.109621, -0.217786, --0.254179, -0.212188, --0.150620, -0.173940, --0.364332, -0.711337, --1.096282, -1.352641, --1.364819, -1.135767, --0.777306, -0.434958, --0.205586, -0.103502, --0.085770, -0.101284, --0.119139, -0.121851, --0.087253, --0.009565, -0.168981, --0.342259, -0.441321, --0.385568, -0.154607, -0.190080, --0.526625, -0.720487, --0.674483, -0.367775, -0.121754, --0.625073, -0.936091, --0.906432, -0.532976, -0.027879, --0.546481, -0.857043, --0.945503, -0.919555, --0.887077, -0.849961, --0.709366, -0.381414, -0.080395, --0.474255, -0.578220, --0.323050, --0.132760, -0.496874, --0.543563, -0.270582, -0.107195, --0.322376, -0.253245, --0.007981, --0.164535, -0.067021, -0.293372, --0.701319, -0.878893, --0.676555, -0.178483, -0.344921, --0.600520, -0.443246, -0.050421, --0.640419, -1.063932, --1.168216, -0.963192, --0.580759, -0.183783, -0.111585, --0.260880, -0.268040, --0.151038, --0.068395, -0.346125, --0.596982, -0.710836, --0.610349, -0.316329, -0.032088, --0.233853, -0.137144, -0.260723, --0.793216, -1.206288, --1.297049, -1.025475, --0.531579, -0.052274, -0.205602, --0.160244 -}; diff --git a/src/equalizer.c b/src/equalizer.c deleted file mode 100644 index f97808c7..00000000 --- a/src/equalizer.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - equalizer.c: equalizer settings - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - - -#include "mpg123.h" - -real equalizer[2][32]; -real equalizer_sum[2][32]; -int equalizer_cnt; - -real equalizerband[2][SBLIMIT*SSLIMIT]; - -void do_equalizer(real *bandPtr,int channel) -{ - int i; - - if(have_eq_settings) { - for(i=0;i<32;i++) - bandPtr[i] = REAL_MUL(bandPtr[i], equalizer[channel][i]); - } - -/* if(param.equalizer & 0x2) { - - for(i=0;i<32;i++) - equalizer_sum[channel][i] += bandPtr[i]; - } -*/ -} - -void do_equalizerband(real *bandPtr,int channel) -{ - int i; - for(i=0;i<576;i++) { - bandPtr[i] = REAL_MUL(bandPtr[i], equalizerband[channel][i]); - } -} - diff --git a/src/equalizer_3dnow.S b/src/equalizer_3dnow.S deleted file mode 100644 index 06a35c72..00000000 --- a/src/equalizer_3dnow.S +++ /dev/null @@ -1,69 +0,0 @@ -/* - equalizer_3dnow: 3DNow! optimized do_equalizer() - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by KIMURA Takuhiro -*/ - -#include "mangle.h" - -.text - ALIGN4 -.globl ASM_NAME(do_equalizer_3dnow) -/* .type ASM_NAME(do_equalizer_3dnow),@function */ -ASM_NAME(do_equalizer_3dnow): - pushl %esi - pushl %ebx - /* bandPtr */ - movl 12(%esp),%ebx - cmpl $0,ASM_NAME(equalfile) - je .L5 - /* channel */ - movl 16(%esp),%ecx - xorl %edx,%edx - movl $ASM_NAME(equalizer),%esi - sall $7,%ecx - ALIGN4 -.L9: - movq (%ebx,%edx),%mm0 - pfmul (%esi,%ecx),%mm0 - - movq 8(%ebx,%edx),%mm1 - pfmul 8(%esi,%ecx),%mm1 - movq %mm0,(%ebx,%edx) - - movq 16(%ebx,%edx),%mm0 - pfmul 16(%esi,%ecx),%mm0 - movq %mm1,8(%ebx,%edx) - - movq 24(%ebx,%edx),%mm1 - pfmul 24(%esi,%ecx),%mm1 - movq %mm0,16(%ebx,%edx) - - movq 32(%ebx,%edx),%mm0 - pfmul 32(%esi,%ecx),%mm0 - movq %mm1,24(%ebx,%edx) - - movq 40(%ebx,%edx),%mm1 - pfmul 40(%esi,%ecx),%mm1 - movq %mm0,32(%ebx,%edx) - - movq 48(%ebx,%edx),%mm0 - pfmul 48(%esi,%ecx),%mm0 - movq %mm1,40(%ebx,%edx) - - movq 56(%ebx,%edx),%mm1 - pfmul 56(%esi,%ecx),%mm1 - movq %mm0,48(%ebx,%edx) - movq %mm1,56(%ebx,%edx) - - addl $64,%edx - addl $32,%ecx - cmpl $124,%edx - jle .L9 - ALIGN4 -.L5: - popl %ebx - popl %esi - ret diff --git a/src/getbits.c b/src/getbits.c deleted file mode 100644 index 8cfb9316..00000000 --- a/src/getbits.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - getbits - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include "mpg123.h" -#include "common.h" - -#if 0 -static void check_buffer_range(int size) -{ - int pos = (bsi.wordpointer-bsbuf) + (size>>3); - - if( pos >= fsizeold) { - fprintf(stderr,"Pointer out of range (%d,%d)!\n",pos,fsizeold); - } -} -#endif - -void backbits(int number_of_bits) -{ - bsi.bitindex -= number_of_bits; - bsi.wordpointer += (bsi.bitindex>>3); - bsi.bitindex &= 0x7; -} - -int getbitoffset(void) -{ - return (-bsi.bitindex)&0x7; -} - -int getbyte(void) -{ -#ifdef DEBUG_GETBITS - if(bsi.bitindex) - fprintf(stderr,"getbyte called unsynched!\n"); -#endif - return *bsi.wordpointer++; -} - -unsigned int getbits(int number_of_bits) -{ - unsigned long rval; - -#ifdef DEBUG_GETBITS -fprintf(stderr,"g%d",number_of_bits); -#endif - - if(!number_of_bits) - return 0; - -#if 0 - check_buffer_range(number_of_bits+bsi.bitindex); -#endif - - { - rval = bsi.wordpointer[0]; - rval <<= 8; - rval |= bsi.wordpointer[1]; - rval <<= 8; - rval |= bsi.wordpointer[2]; - - rval <<= bsi.bitindex; - rval &= 0xffffff; - - bsi.bitindex += number_of_bits; - - rval >>= (24-number_of_bits); - - bsi.wordpointer += (bsi.bitindex>>3); - bsi.bitindex &= 7; - } - -#ifdef DEBUG_GETBITS -fprintf(stderr,":%lx ",rval); -#endif - - return rval; -} - -unsigned int getbits_fast(int number_of_bits) -{ - unsigned int rval; -#ifdef DEBUG_GETBITS -fprintf(stderr,"g%d",number_of_bits); -#endif - -#if 0 - check_buffer_range(number_of_bits+bsi.bitindex); -#endif - - rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex); - rval |= ((unsigned int) bsi.wordpointer[1]<>8; - rval <<= number_of_bits; - rval >>= 8; - - bsi.bitindex += number_of_bits; - - bsi.wordpointer += (bsi.bitindex>>3); - bsi.bitindex &= 7; - -#ifdef DEBUG_GETBITS -fprintf(stderr,":%x ",rval); -#endif - return rval; -} - -unsigned int get1bit(void) -{ - unsigned char rval; - -#ifdef DEBUG_GETBITS -fprintf(stderr,"g%d",1); -#endif - -#if 0 - check_buffer_range(1+bsi.bitindex); -#endif - - rval = *bsi.wordpointer << bsi.bitindex; - - bsi.bitindex++; - bsi.wordpointer += (bsi.bitindex>>3); - bsi.bitindex &= 7; - -#ifdef DEBUG_GETBITS -fprintf(stderr,":%d ",rval>>7); -#endif - - return rval>>7; -} - diff --git a/src/getbits.h b/src/getbits.h deleted file mode 100644 index 6e7eda9d..00000000 --- a/src/getbits.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - getbits - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#ifndef _MPG123_GETBITS_H_ -#define _MPG123_GETBITS_H_ - -/* that's the same file as getits.c but with defines to - force inlining */ - -static unsigned long rval; -static unsigned char rval_uc; - -#define backbits(nob) ((void)( \ - bsi.bitindex -= nob, \ - bsi.wordpointer += (bsi.bitindex>>3), \ - bsi.bitindex &= 0x7 )) - -#define getbitoffset() ((-bsi.bitindex)&0x7) -#define getbyte() (*bsi.wordpointer++) - -#define getbits(nob) ( \ - rval = bsi.wordpointer[0], rval <<= 8, rval |= bsi.wordpointer[1], \ - rval <<= 8, rval |= bsi.wordpointer[2], rval <<= bsi.bitindex, \ - rval &= 0xffffff, bsi.bitindex += nob, \ - rval >>= (24-nob), bsi.wordpointer += (bsi.bitindex>>3), \ - bsi.bitindex &= 7,rval) - -#define getbits_fast(nob) ( \ - rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex), \ - rval |= ((unsigned long) bsi.wordpointer[1]<>8, \ - rval <<= nob, rval >>= 8, \ - bsi.bitindex += nob, bsi.wordpointer += (bsi.bitindex>>3), \ - bsi.bitindex &= 7, rval ) - -#define get1bit() ( \ - rval_uc = *bsi.wordpointer << bsi.bitindex, bsi.bitindex++, \ - bsi.wordpointer += (bsi.bitindex>>3), bsi.bitindex &= 7, rval_uc>>7 ) - - -#endif diff --git a/src/getcpuflags.S b/src/getcpuflags.S deleted file mode 100644 index 897127d1..00000000 --- a/src/getcpuflags.S +++ /dev/null @@ -1,79 +0,0 @@ -/* - getcpucpuflags: get cpuflags for ia32 - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http:#mpg123.org - initially written by KIMURA Takuhiro (for 3DNow!) - extended for general use by Thomas Orgis - - extern int getcpuid(struct cpuflags*) - or just - extern int getcpuid(unsigned int*) - where there is memory for 4 ints - -> the first set of idflags (basic cpu family info) - and the idflags, stdflags, std2flags, extflags written to the parameter - -> 0x00000000 (CPUID instruction not supported) -*/ - -#include "mangle.h" - -.text - ALIGN4 - -.globl ASM_NAME(getcpuflags) -/* .type ASM_NAME(getcpuflags),@function */ -ASM_NAME(getcpuflags): - pushl %ebp - movl %esp,%ebp - pushl %edx - pushl %ecx - pushl %ebx - pushl %esi -/* get the int pointer for storing the flags */ - movl 8(%ebp), %esi -/* does that one make sense? */ - movl $0x80000000,%eax -/* now save the flags and do a check for cpuid availability */ - pushfl - pushfl - popl %eax - movl %eax,%ebx -/* set that bit... */ - xorl $0x00200000,%eax - pushl %eax - popfl -/* ...and read back the flags to see if it is understood */ - pushfl - popl %eax - popfl - cmpl %ebx,%eax - je .Lnocpuid -/* now get the info, first extended */ - movl $0x80000001,%eax - cpuid - movl %edx,12(%esi) -/* then the other ones, called last to get the id flags in %eax for ret */ - movl $0x00000001,%eax - cpuid - movl %eax, (%esi) - movl %ecx, 4(%esi) - movl %edx, 8(%esi) - jmp .Lend - ALIGN4 -.Lnocpuid: -/* error: set everything to zero */ - movl $0, %eax - movl $0, (%esi) - movl $0, 4(%esi) - movl $0, 8(%esi) - movl $0, 12(%esi) - ALIGN4 -.Lend: -/* return value are the id flags, still stored in %eax */ - popl %esi - popl %ebx - popl %ecx - popl %edx - movl %ebp,%esp - popl %ebp - ret diff --git a/src/getcpuflags.h b/src/getcpuflags.h deleted file mode 100644 index ff56f951..00000000 --- a/src/getcpuflags.h +++ /dev/null @@ -1,32 +0,0 @@ -/* standard level flags part 1 */ -#define FLAG_SSE3 0x00000001 -/* standard level flags part 2 */ -#define FLAG2_MMX 0x00800000 -#define FLAG2_SSE 0x02000000 -#define FLAG2_SSE2 0x04000000 -#define FLAG2_FPU 0x00000001 -/* cpuid extended level 1 (AMD) */ -#define XFLAG_MMX 0x00800000 -#define XFLAG_3DNOW 0x80000000 -#define XFLAG_3DNOWEXT 0x40000000 - -struct cpuflags -{ - unsigned int id; - unsigned int std; - unsigned int std2; - unsigned int ext; -}; - -unsigned int getcpuflags(struct cpuflags* cf); - -/* checks the family */ -#define cpu_i586(s) ( ((s.id & 0xf00)>>8) == 0 || ((s.id & 0xf00)>>8) > 4 ) -/* checking some flags... */ -#define cpu_fpu(s) (FLAG2_FPU & s.std2) -#define cpu_mmx(s) (FLAG2_MMX & s.std2 || XFLAG_MMX & s.ext) -#define cpu_3dnow(s) (XFLAG_3DNOW & s.ext) -#define cpu_3dnowext(s) (XFLAG_3DNOWEXT & s.ext) -#define cpu_sse(s) (FLAG2_SSE & s.std2) -#define cpu_sse2(s) (FLAG2_SSE2 & s.std2) -#define cpu_sse3(s) (FLAG_SSE3 & s.std) diff --git a/src/httpget.c b/src/httpget.c index a32747bf..3ee2c3c5 100644 --- a/src/httpget.c +++ b/src/httpget.c @@ -26,10 +26,28 @@ Funny aspect there is that shoutcast servers do not do HTTP/1.1 chunked transfer but implement some different chunking themselves... */ -#include "mpg123.h" +#include "mpg123app.h" #include "httpget.h" +#include "mpg123.h" -char *proxyurl = NULL; +void httpdata_init(struct httpdata *e) +{ + mpg123_init_string(&e->content_type); + mpg123_init_string(&e->icy_url); + mpg123_init_string(&e->icy_name); + e->icy_interval = 0; + e->proxyurl = NULL; + e->proxyip = 0; +} + +void httpdata_reset(struct httpdata *e) +{ + mpg123_free_string(&e->content_type); + mpg123_free_string(&e->icy_url); + mpg123_free_string(&e->icy_name); + e->icy_interval = 0; + /* the other stuff shall persist */ +} #if !defined(WIN32) && !defined(GENERIC) @@ -45,8 +63,7 @@ char *proxyurl = NULL; #include #include -#include "stringbuf.h" -#include "icy.h" +#include "true.h" #ifndef INADDR_NONE #define INADDR_NONE 0xffffffff @@ -258,7 +275,6 @@ char* get_header_val(const char *hname, char* response, size_t *length) return tmp; } -unsigned long proxyip = 0; unsigned int proxyport; /* needed for HTTP/1.1 non-pipelining mode */ @@ -266,7 +282,8 @@ unsigned int proxyport; #define CONN_HEAD "" /* shoutcsast meta data: 1=on, 0=off */ -#define ACCEPT_ICY_META "Icy-MetaData: 1\r\n" +const char *icy_yes = "Icy-MetaData: 1\r\n"; +const char *icy_no = "Icy-MetaData: 0\r\n"; char *httpauth = NULL; char *httpauth1 = NULL; @@ -293,12 +310,13 @@ static size_t accept_length(void) return l; } -int http_open (char* url, char** content_type) +int http_open(char* url, struct httpdata *hd) { /* TODO: make sure ulong vs. size_t is really clear! */ /* TODO: change this whole thing until I stop disliking it */ char *purl, *host, *request, *response, *sptr; char* request_url = NULL; + const char *icy = param.talk_icy ? icy_yes : icy_no; size_t request_url_size = 0; size_t purl_size; size_t linelength, linelengthbase, tmp; @@ -320,13 +338,13 @@ int http_open (char* url, char** content_type) purl = NULL; request = NULL; response = NULL; - if (!proxyip) { - if (!proxyurl) - if (!(proxyurl = getenv("MP3_HTTP_PROXY"))) - if (!(proxyurl = getenv("http_proxy"))) - proxyurl = getenv("HTTP_PROXY"); - if (proxyurl && proxyurl[0] && strcmp(proxyurl, "none")) { - if (!(url2hostport(proxyurl, &host, &proxyip, &proxyport))) { + if (!hd->proxyip) { + if (!hd->proxyurl) + if (!(hd->proxyurl = getenv("MP3_HTTP_PROXY"))) + if (!(hd->proxyurl = getenv("http_proxy"))) + hd->proxyurl = getenv("HTTP_PROXY"); + if (hd->proxyurl && hd->proxyurl[0] && strcmp(hd->proxyurl, "none")) { + if (!(url2hostport(hd->proxyurl, &host, &hd->proxyip, &proxyport))) { fprintf (stderr, "Unknown proxy host \"%s\".\n", host ? host : ""); sock = -1; @@ -334,7 +352,7 @@ int http_open (char* url, char** content_type) } } else - proxyip = INADDR_NONE; + hd->proxyip = INADDR_NONE; } /* The length of purl is upper bound by 3*strlen(url) + 1 if @@ -399,7 +417,7 @@ int http_open (char* url, char** content_type) * ... plus the other predefined header lines */ linelengthbase = 62 + strlen(PACKAGE_NAME) + strlen(PACKAGE_VERSION) - + accept_length() + strlen(CONN_HEAD) + strlen(ACCEPT_ICY_META); + + accept_length() + strlen(CONN_HEAD) + strlen(icy); if(httpauth) { tmp = (strlen(httpauth) + 1) * 4; @@ -445,9 +463,9 @@ int http_open (char* url, char** content_type) else request_url[0] = '\0'; strcat(request_url, purl); - if (proxyip != INADDR_NONE) { + if (hd->proxyip != INADDR_NONE) { myport = proxyport; - myip = proxyip; + myip = hd->proxyip; linelength = linelengthbase + strlen(purl); if (linelength < linelengthbase) { @@ -559,7 +577,7 @@ int http_open (char* url, char** content_type) } */ append_accept(request); strcat (request, CONN_HEAD); - strcat (request, ACCEPT_ICY_META); + strcat (request, icy); server.sin_family = AF_INET; server.sin_port = htons(myport); server.sin_addr.s_addr = myip; @@ -706,43 +724,30 @@ int http_open (char* url, char** content_type) { char *tmp; size_t len; - /* watch out for content type */ debug1("searching for header values... %s", response); + /* watch out for content type */ if((tmp = get_header_val("content-type", response, &len))) { - if(content_type != NULL) - { - if(len) - { - if(*content_type != NULL) free(*content_type); - *content_type = (char*) malloc(len+1); - if(*content_type != NULL) - { - strncpy(*content_type, tmp, len); - (*content_type)[len] = 0; - debug1("got type %s", *content_type); - } - else error("cannot allocate memory for content type!"); - } - } + if(mpg123_set_string(&hd->content_type, tmp)) debug1("got content-type %s", hd->content_type.p); + else error1("unable to set content type to %s!", tmp); } /* watch out for icy-name */ - else if((tmp = get_header_val("icy-name", response, &len))) + if((tmp = get_header_val("icy-name", response, &len))) { - if(set_stringbuf(&icy.name, tmp)) debug1("got icy-name %s", icy.name.p); + if(mpg123_set_string(&hd->icy_name, tmp)) debug1("got icy-name %s", hd->icy_name.p); else error1("unable to set icy name to %s!", tmp); } /* watch out for icy-url */ else if((tmp = get_header_val("icy-url", response, &len))) { - if(set_stringbuf(&icy.url, tmp)) debug1("got icy-url %s", icy.name.p); + if(mpg123_set_string(&hd->icy_url, tmp)) debug1("got icy-url %s", hd->icy_name.p); else error1("unable to set icy url to %s!", tmp); } /* watch out for icy-metaint */ else if((tmp = get_header_val("icy-metaint", response, &len))) { - icy.interval = atoi(tmp); - debug1("got icy-metaint %li", (long int)icy.interval); + hd->icy_interval = (off_t) atol(tmp); + debug1("got icy-metaint %li", (long int)hd->icy_interval); } } } while (response[0] != '\r' && response[0] != '\n'); @@ -763,7 +768,7 @@ exit: #else /* defined(WIN32) || defined(GENERIC) */ /* stub */ -int http_open (char* url, char** content_type) +int http_open (char* url, struct httpdata *hd) { return -1; } diff --git a/src/httpget.h b/src/httpget.h index 0916ab3b..e4a8d279 100644 --- a/src/httpget.h +++ b/src/httpget.h @@ -13,6 +13,21 @@ #ifndef _HTTPGET_H_ #define _HTPPGET_H_ +#include "mpg123.h" + +struct httpdata +{ + mpg123_string content_type; + mpg123_string icy_name; + mpg123_string icy_url; + off_t icy_interval; + char *proxyurl; + unsigned long proxyip; +}; + +void httpdata_init(struct httpdata *e); +void httpdata_reset(struct httpdata *e); + /* There is a whole lot of MIME types for the same thing. the function will reduce it to a combination of these flags */ #define IS_FILE 1 @@ -24,7 +39,7 @@ int debunk_mime(const char* mime); extern char *proxyurl; extern unsigned long proxyip; /* takes url and content type string address, opens resource, returns fd for data, allocates and sets content type */ -extern int http_open (char* url, char** content_type); +extern int http_open (char* url, struct httpdata *hd); extern char *httpauth; #endif diff --git a/src/huffman.h b/src/huffman.h deleted file mode 100644 index 74b543cc..00000000 --- a/src/huffman.h +++ /dev/null @@ -1,340 +0,0 @@ -/* - huffman.h: huffman tables ... recalcualted to work with optimzed decoder scheme (MH) - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - probably we could save a few bytes of memory, because the - smaller tables are often the part of a bigger table -*/ - - -#ifndef _MPG123_HUFFMAN_H_ -#define _MPG123_HUFFMAN_H_ - -struct newhuff -{ - unsigned int linbits; - short *table; -}; - -static short tab0[] = -{ - 0 -}; - -static short tab1[] = -{ - -5, -3, -1, 17, 1, 16, 0 -}; - -static short tab2[] = -{ - -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, - 16, 0 -}; - -static short tab3[] = -{ - -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, - 1, 0 -}; - -static short tab5[] = -{ - -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, - 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, - 0 -}; - -static short tab6[] = -{ - -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, - 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, - 0 -}; - -static short tab7[] = -{ - -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, - -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, - 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, - -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, - -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 -}; - -static short tab8[] = -{ - -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, - -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, - 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, - 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, - 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 -}; - -static short tab9[] = -{ - -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, - 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, - -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5, - -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2, - 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0 -}; - -static short tab10[] = -{ --125,-121,-111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118, - 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3, - -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1, - 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23, - -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81, - -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7, - -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, - 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, - 2, 32, 17, -1, 1, 16, 0 -}; - -static short tab11[] = -{ --121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, - -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, - -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, - -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96, - -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38, - 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1, - 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, - -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, - 32, 17, -3, -1, 1, 16, 0 -}; - -static short tab12[] = -{ --115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, - 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, - 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, - 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5, - -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37, - 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4, - 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, - -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, - 2, 32, 0, 17, -1, 1, 16 -}; - -static short tab13[] = -{ --509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, - -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, - 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, - 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249, - 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158, - -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1, - 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245, - 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1, - 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15, - -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1, - 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1, - 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1, - 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3, - -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1, - 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5, - -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167, - 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76, - 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137, - 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106, - -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43, - -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178, - -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1, - 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161, - -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88, - -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1, - 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25, - 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100, - 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113, - -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38, - -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6, - 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81, - -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11, - -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, - -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static short tab15[] = -{ --495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, - -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, - 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, - -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219, - -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173, - -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246, - -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9, - -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243, - 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1, - 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1, - 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3, - -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5, - -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124, - 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1, - 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183, - -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76, - -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1, - 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15, - -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106, - -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5, - -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74, - -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1, - 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134, - 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29, - -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7, - -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7, - -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86, - -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100, - 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69, - -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9, - -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1, - 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20, - 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, - 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, - 0 -}; - -static short tab16[] = -{ --509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, - 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, - -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, - -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19, - -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1, - 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5, - -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125, - 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13, - -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3, - -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186, - -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1, - 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169, - -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213, - -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154, - 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1, - 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1, - 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45, - -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107, - -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12, - -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1, - 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74, - 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33, - -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3, - -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147, - -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1, - 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3, - -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1, - 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3, - -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1, - 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9, - -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33, - -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, - -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, - 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static short tab24[] = -{ --451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, - 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, - -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, - 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31, - 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1, - 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3, - -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3, - -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255,-235, --143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3, - -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9, - -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1, - 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185, - 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199, - 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3, - -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3, - -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196, - -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1, - 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1, - 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10, - 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9, - 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165, - 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135, - -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104, - -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3, - -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3, - -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7, - -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86, - 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15, - -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84, - -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1, - 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5, - 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5, - -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, - 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, - 0 -}; - -static short tab_c0[] = -{ - -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, - 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, - 0 -}; - -static short tab_c1[] = -{ - -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, - 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, - 0 -}; - - - -static struct newhuff ht[] = -{ - { /* 0 */ 0 , tab0 } , - { /* 2 */ 0 , tab1 } , - { /* 3 */ 0 , tab2 } , - { /* 3 */ 0 , tab3 } , - { /* 0 */ 0 , tab0 } , - { /* 4 */ 0 , tab5 } , - { /* 4 */ 0 , tab6 } , - { /* 6 */ 0 , tab7 } , - { /* 6 */ 0 , tab8 } , - { /* 6 */ 0 , tab9 } , - { /* 8 */ 0 , tab10 } , - { /* 8 */ 0 , tab11 } , - { /* 8 */ 0 , tab12 } , - { /* 16 */ 0 , tab13 } , - { /* 0 */ 0 , tab0 } , - { /* 16 */ 0 , tab15 } , - - { /* 16 */ 1 , tab16 } , - { /* 16 */ 2 , tab16 } , - { /* 16 */ 3 , tab16 } , - { /* 16 */ 4 , tab16 } , - { /* 16 */ 6 , tab16 } , - { /* 16 */ 8 , tab16 } , - { /* 16 */ 10, tab16 } , - { /* 16 */ 13, tab16 } , - { /* 16 */ 4 , tab24 } , - { /* 16 */ 5 , tab24 } , - { /* 16 */ 6 , tab24 } , - { /* 16 */ 7 , tab24 } , - { /* 16 */ 8 , tab24 } , - { /* 16 */ 9 , tab24 } , - { /* 16 */ 11, tab24 } , - { /* 16 */ 13, tab24 } -}; - -static struct newhuff htc[] = -{ - { /* 1 , 1 , */ 0 , tab_c0 } , - { /* 1 , 1 , */ 0 , tab_c1 } -}; - - -#endif diff --git a/src/icy.c b/src/icy.c deleted file mode 100644 index 3be9c861..00000000 --- a/src/icy.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "icy.h" -#include - -struct icy_meta icy; - -void init_icy() -{ - init_stringbuf(&icy.name); - init_stringbuf(&icy.url); - icy.data = NULL; - icy.interval = 0; - icy.next = 0; - icy.changed = 0; -} - -void clear_icy() -{ - /* if pointers are non-null, they have some memory */ - free_stringbuf(&icy.name); - free_stringbuf(&icy.url); - free(icy.data); - init_icy(); -} - -void set_data(char* new_data) -{ - if(icy.data) free(icy.data); - icy.data = new_data; - icy.changed = 1; -} diff --git a/src/icy.h b/src/icy.h deleted file mode 100644 index 29fc0bf2..00000000 --- a/src/icy.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - icy: support for SHOUTcast ICY meta info, an attempt to keep it organized - - copyright 2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis and modelled after patch by Honza -*/ - -#include -#include "stringbuf.h" - -struct icy_meta -{ - struct stringbuf name; - struct stringbuf url; - char* data; - off_t interval; - off_t next; - int changed; -}; - -/* bah, just make it global... why bother with all that poiner passing to "methods" when there will be only one? */ -extern struct icy_meta icy; - -void init_icy(); -void clear_icy(); diff --git a/src/id3.c b/src/id3.c deleted file mode 100644 index f6789f0b..00000000 --- a/src/id3.c +++ /dev/null @@ -1,818 +0,0 @@ -#include "mpg123.h" -#include "common.h" -#include "stringbuf.h" -#include "genre.h" -#include "id3.h" - -struct taginfo -{ - unsigned char version; /* 1, 2 */ - struct stringbuf title; - struct stringbuf artist; - struct stringbuf album; - struct stringbuf year; /* be ready for 20570! */ - struct stringbuf comment; - struct stringbuf genre; -}; - -struct taginfo id3; - -/* UTF support definitions */ - -typedef int (*text_decoder)(char* dest, unsigned char* source, size_t len); - -static int decode_il1(char* dest, unsigned char* source, size_t len); -static int decode_utf16(char* dest, unsigned char* source, size_t len, int str_be); -static int decode_utf16bom(char* dest, unsigned char* source, size_t len); -static int decode_utf16be(char* dest, unsigned char* source, size_t len); -static int decode_utf8(char* dest, unsigned char* source, size_t len); -int wide_bytelen(int width, char* string, size_t string_size); - -static text_decoder text_decoders[4] = -{ - decode_il1, - decode_utf16bom, - decode_utf16be, - decode_utf8 -}; - -const int encoding_widths[4] = { 1, 2, 2, 1 }; - -/* the code starts here... */ - -void init_id3() -{ - id3.version = 0; /* nothing there */ - init_stringbuf(&id3.title); - init_stringbuf(&id3.artist); - init_stringbuf(&id3.album); - init_stringbuf(&id3.year); - init_stringbuf(&id3.comment); - init_stringbuf(&id3.genre); -} - -void exit_id3() -{ - free_stringbuf(&id3.title); - free_stringbuf(&id3.artist); - free_stringbuf(&id3.album); - free_stringbuf(&id3.year); - free_stringbuf(&id3.comment); - free_stringbuf(&id3.genre); -} - -void reset_id3() -{ - id3.version = 0; - id3.title.fill = 0; - id3.artist.fill = 0; - id3.album.fill = 0; - id3.year.fill = 0; - id3.comment.fill = 0; - id3.genre.fill = 0; -} - -void store_id3_text(struct stringbuf* sb, char* source, size_t source_size) -{ - size_t pos = 1; /* skipping the encoding */ - int encoding; - int bwidth; - if(! source_size) return; - encoding = source[0]; - debug1("encoding: %i\n", encoding); - if(encoding > 3) - { - warning1("Unknown text encoding %d, assuming ISO8859-1 - I will probably screw a bit up!", encoding); - encoding = 0; - } - bwidth = encoding_widths[encoding]; - if((source_size-1) % bwidth) - { - /* Uh. (BTW, the -1 is for the encoding byte.) */ - warning2("Weird tag size %d for encoding %d - I will probably trim too early or something but I think the MP3 is broken.", (int)source_size, encoding); - source_size -= (source_size-1) % bwidth; - } - /* - first byte: Text encoding $xx - Text fields store a list of strings terminated by null, whatever that is for the encoding. - That's not funny. Trying to work that by joining them into one string separated by line breaks... - ...and assume a series of \0 being the separator for any encoding - */ - while(pos < source_size) - { - size_t l = wide_bytelen(bwidth, source+pos, source_size-pos); - debug2("wide bytelen of %lu: %lu", (unsigned long)(source_size-pos), (unsigned long)l); - /* we need space for the stuff plus the closing zero */ - if((sb->size > sb->fill+l) || resize_stringbuf(sb, sb->fill+l+1)) - { - /* append with line break - sb is in latin1 mode! */ - if(sb->fill) sb->p[sb->fill-1] = '\n'; - /* do not include the ending 0 in the conversion */ - sb->fill += text_decoders[encoding](sb->p+sb->fill, (unsigned char *) source+pos, l-(source_size==pos+l ? 0 : bwidth)); - sb->p[sb->fill++] = 0; - /* advance to beginning of next string */ - pos += l; - } - else break; - } -} - -/* - trying to parse ID3v2.3 and ID3v2.4 tags... - - returns: 0 = read-error - -1 = illegal ID3 header; maybe extended to mean unparseable (to new) header in future - 1 = somehow ok... -*/ -int parse_new_id3(unsigned long first4bytes, struct reader *rds) -{ - #define UNSYNC_FLAG 128 - #define EXTHEAD_FLAG 64 - #define EXP_FLAG 32 - #define FOOTER_FLAG 16 - #define UNKNOWN_FLAGS 15 /* 00001111*/ - unsigned char buf[6]; - unsigned long length=0; - unsigned char flags = 0; - int ret = 1; - unsigned char* tagdata = NULL; - unsigned char major = first4bytes & 0xff; - debug1("ID3v2: major tag version: %i", major); - if(major == 0xff) return -1; - if(!rds->read_frame_body(rds,buf,6)) /* read more header information */ - return 0; - - if(buf[0] == 0xff) /* major version, will never be 0xff */ - return -1; - /* second new byte are some nice flags, if these are invalid skip the whole thing */ - flags = buf[1]; - debug1("ID3v2: flags 0x%08x", flags); - /* use 4 bytes from buf to construct 28bit uint value and return 1; return 0 if bytes are not synchsafe */ - #define synchsafe_to_long(buf,res) \ - ( \ - (((buf)[0]|(buf)[1]|(buf)[2]|(buf)[3]) & 0x80) ? 0 : \ - (res = (((unsigned long) (buf)[0]) << 21) \ - | (((unsigned long) (buf)[1]) << 14) \ - | (((unsigned long) (buf)[2]) << 7) \ - | ((unsigned long) (buf)[3]) \ - ,1) \ - ) - /* id3v2.3 does not store synchsafe frame sizes, but synchsafe tag size - doh! */ - #define bytes_to_long(buf,res) \ - ( \ - major == 3 ? \ - (res = (((unsigned long) (buf)[0]) << 24) \ - | (((unsigned long) (buf)[1]) << 16) \ - | (((unsigned long) (buf)[2]) << 8) \ - | ((unsigned long) (buf)[3]) \ - ,1) : synchsafe_to_long(buf,res) \ - ) - /* length-10 or length-20 (footer present); 4 synchsafe integers == 28 bit number */ - /* we have already read 10 bytes, so left are length or length+10 bytes belonging to tag */ - if(!synchsafe_to_long(buf+2,length)) return -1; - debug1("ID3v2: tag data length %lu", length); - if(param.verbose > 1) fprintf(stderr,"Note: ID3v2.%i rev %i tag of %lu bytes\n", major, buf[0], length); - /* skip if unknown version/scary flags, parse otherwise */ - if((flags & UNKNOWN_FLAGS) || (major > 4) || (major < 3)) - { - /* going to skip because there are unknown flags set */ - warning2("ID3v2: Won't parse the ID3v2 tag with major version %u and flags 0x%xu - some extra code may be needed", major, flags); - if(!rds->skip_bytes(rds,length)) /* will not store data in backbuff! */ - ret = 0; - } - else - { - id3.version = major; - /* try to interpret that beast */ - if((tagdata = (unsigned char*) malloc(length+1)) != NULL) - { - debug("ID3v2: analysing frames..."); - if(rds->read_frame_body(rds,tagdata,length)) - { - unsigned long tagpos = 0; - debug1("ID3v2: have read at all %lu bytes for the tag now", (unsigned long)length+6); - /* going to apply strlen for strings inside frames, make sure that it doesn't overflow! */ - tagdata[length] = 0; - if(flags & EXTHEAD_FLAG) - { - debug("ID3v2: skipping extended header"); - if(!bytes_to_long(tagdata, tagpos)) ret = -1; - } - if(ret >= 0) - { - char id[5]; - unsigned long framesize; - unsigned long fflags; /* need 16 bits, actually */ - id[4] = 0; - /* pos now advanced after ext head, now a frame has to follow */ - while(tagpos < length-10) /* I want to read at least a full header */ - { - int i = 0; - unsigned long pos = tagpos; - /* level 1,2,3 - 0 is info from lame/info tag! */ - /* rva tags with ascending significance, then general frames */ - #define KNOWN_FRAMES 8 - const char frame_type[KNOWN_FRAMES][5] = { "COMM", "TXXX", "RVA2", "TPE1", "TALB", "TIT2", "TYER", "TCON" }; - enum { egal = -1, comment, extra, rva2, artist, album, title, year, genre } tt = egal; - /* we may have entered the padding zone or any other strangeness: check if we have valid frame id characters */ - for(; i< 4; ++i) if( !( ((tagdata[tagpos+i] > 47) && (tagdata[tagpos+i] < 58)) - || ((tagdata[tagpos+i] > 64) && (tagdata[tagpos+i] < 91)) ) ) - { - debug5("ID3v2: real tag data apparently ended after %lu bytes with 0x%02x%02x%02x%02x", tagpos, tagdata[tagpos], tagdata[tagpos+1], tagdata[tagpos+2], tagdata[tagpos+3]); - ret = -1; - break; - } - if(ret >= 0) - { - /* 4 bytes id */ - strncpy(id, (char*) tagdata+pos, 4); - pos += 4; - /* size as 32 bits */ - if(!bytes_to_long(tagdata+pos, framesize)) - { - ret = -1; - error1("ID3v2: non-syncsafe size of %s frame, skipping the remainder of tag", id); - break; - } - if(param.verbose > 2) fprintf(stderr, "Note: ID3v2 %s frame of size %lu\n", id, framesize); - tagpos += 10 + framesize; /* the important advancement in whole tag */ - pos += 4; - fflags = (((unsigned long) tagdata[pos]) << 8) | ((unsigned long) tagdata[pos+1]); - pos += 2; - /* for sanity, after full parsing tagpos should be == pos */ - /* debug4("ID3v2: found %s frame, size %lu (as bytes: 0x%08lx), flags 0x%016lx", id, framesize, framesize, fflags); */ - /* %0abc0000 %0h00kmnp */ - #define BAD_FFLAGS (unsigned long) 36784 - #define PRES_TAG_FFLAG 16384 - #define PRES_FILE_FFLAG 8192 - #define READ_ONLY_FFLAG 4096 - #define GROUP_FFLAG 64 - #define COMPR_FFLAG 8 - #define ENCR_FFLAG 4 - #define UNSYNC_FFLAG 2 - #define DATLEN_FFLAG 1 - /* shall not or want not handle these */ - if(fflags & (BAD_FFLAGS | COMPR_FFLAG | ENCR_FFLAG)) - { - warning("ID3v2: skipping invalid/unsupported frame"); - continue; - } - - for(i = 0; i < KNOWN_FRAMES; ++i) - if(!strncmp(frame_type[i], id, 4)){ tt = i; break; } - - if(tt != egal) - { - int rva_mode = -1; /* mix / album */ - unsigned long realsize = framesize; - unsigned char* realdata = tagdata+pos; - if((flags & UNSYNC_FLAG) || (fflags & UNSYNC_FFLAG)) - { - unsigned long ipos = 0; - unsigned long opos = 0; - debug("Id3v2: going to de-unsync the frame data"); - /* de-unsync: FF00 -> FF; real FF00 is simply represented as FF0000 ... */ - /* damn, that means I have to delete bytes from withing the data block... thus need temporal storage */ - /* standard mandates that de-unsync should always be safe if flag is set */ - realdata = (unsigned char*) malloc(framesize); /* will need <= bytes */ - if(realdata == NULL) - { - error("ID3v2: unable to allocate working buffer for de-unsync"); - continue; - } - /* now going byte per byte through the data... */ - realdata[0] = tagdata[pos]; - opos = 1; - for(ipos = pos+1; ipos < pos+framesize; ++ipos) - { - if(!((tagdata[ipos] == 0) && (tagdata[ipos-1] == 0xff))) - { - realdata[opos++] = tagdata[ipos]; - } - } - realsize = opos; - debug2("ID3v2: de-unsync made %lu out of %lu bytes", realsize, framesize); - } - pos = 0; /* now at the beginning again... */ - switch(tt) - { - case comment: /* a comment that perhaps is a RVA / RVA_ALBUM/AUDIOPHILE / RVA_MIX/RADIO one */ - { - /* Text encoding $xx */ - /* Language $xx xx xx */ - /* policy about encodings: do not care for now here */ - /* if(realdata[0] == 0) */ - { - /* don't care about language */ - pos = 4; - if( !strcasecmp((char*)realdata+pos, "rva") - || !strcasecmp((char*)realdata+pos, "rva_mix") - || !strcasecmp((char*)realdata+pos, "rva_radio")) - rva_mode = 0; - else if( !strcasecmp((char*)realdata+pos, "rva_album") - || !strcasecmp((char*)realdata+pos, "rva_audiophile") - || !strcasecmp((char*)realdata+pos, "rva_user")) - rva_mode = 1; - if((rva_mode > -1) && (rva_level[rva_mode] <= tt+1)) - { - char* comstr; - size_t comsize = realsize-4-(strlen((char*)realdata+pos)+1); - if(param.verbose > 2) fprintf(stderr, "Note: evaluating %s data for RVA\n", realdata+pos); - if((comstr = (char*) malloc(comsize+1)) != NULL) - { - memcpy(comstr,realdata+realsize-comsize, comsize); - comstr[comsize] = 0; - /* hm, what about utf16 here? */ - rva_gain[rva_mode] = atof(comstr); - if(param.verbose > 2) fprintf(stderr, "Note: RVA value %fdB\n", rva_gain[rva_mode]); - rva_peak[rva_mode] = 0; - rva_level[rva_mode] = tt+1; - free(comstr); - } - else error("could not allocate memory for rva comment interpretation"); - } - else - { - if(!strcasecmp((char*)realdata+pos, "")) - { - /* only add general comments */ - realdata[pos] = realdata[pos-4]; /* the encoding field copied */ - store_id3_text(&id3.comment, (char*)realdata+pos, realsize-4); - } - } - } - } - break; - case extra: /* perhaps foobar2000's work */ - { - /* Text encoding $xx */ - /* unicode would hurt in string comparison... */ - if(realdata[0] == 0) - { - int is_peak = 0; - pos = 1; - - if(!strncasecmp((char*)realdata+pos, "replaygain_track_",17)) - { - debug("ID3v2: track gain/peak"); - rva_mode = 0; - if(!strcasecmp((char*)realdata+pos, "replaygain_track_peak")) is_peak = 1; - else if(strcasecmp((char*)realdata+pos, "replaygain_track_gain")) rva_mode = -1; - } - else - if(!strncasecmp((char*)realdata+pos, "replaygain_album_",17)) - { - debug("ID3v2: album gain/peak"); - rva_mode = 1; - if(!strcasecmp((char*)realdata+pos, "replaygain_album_peak")) is_peak = 1; - else if(strcasecmp((char*)realdata+pos, "replaygain_album_gain")) rva_mode = -1; - } - if((rva_mode > -1) && (rva_level[rva_mode] <= tt+1)) - { - char* comstr; - size_t comsize = realsize-1-(strlen((char*)realdata+pos)+1); - if(param.verbose > 2) fprintf(stderr, "Note: evaluating %s data for RVA\n", realdata+pos); - if((comstr = (char*) malloc(comsize+1)) != NULL) - { - memcpy(comstr,realdata+realsize-comsize, comsize); - comstr[comsize] = 0; - if(is_peak) - { - rva_peak[rva_mode] = atof(comstr); - if(param.verbose > 2) fprintf(stderr, "Note: RVA peak %fdB\n", rva_peak[rva_mode]); - } - else - { - rva_gain[rva_mode] = atof(comstr); - if(param.verbose > 2) fprintf(stderr, "Note: RVA gain %fdB\n", rva_gain[rva_mode]); - } - rva_level[rva_mode] = tt+1; - free(comstr); - } - else error("could not allocate memory for rva comment interpretation"); - } - } - } - break; - case rva2: /* "the" RVA tag */ - { - /* starts with null-terminated identification */ - if(param.verbose > 2) fprintf(stderr, "Note: RVA2 identification \"%s\"\n", realdata); - /* default: some individual value, mix mode */ - rva_mode = 0; - if( !strncasecmp((char*)realdata, "album", 5) - || !strncasecmp((char*)realdata, "audiophile", 10) - || !strncasecmp((char*)realdata, "user", 4)) - rva_mode = 1; - if(rva_level[rva_mode] <= tt+1) - { - pos += strlen((char*) realdata) + 1; - if(realdata[pos] == 1) - { - ++pos; - /* only handle master channel */ - debug("ID3v2: it is for the master channel"); - /* two bytes adjustment, one byte for bits representing peak - n bytes for peak */ - /* 16 bit signed integer = dB * 512 */ - /* we already assume short being 16 bit */ - rva_gain[rva_mode] = (float) ((((short) realdata[pos]) << 8) | ((short) realdata[pos+1])) / 512; - pos += 2; - if(param.verbose > 2) fprintf(stderr, "Note: RVA value %fdB\n", rva_gain[rva_mode]); - /* heh, the peak value is represented by a number of bits - but in what manner? Skipping that part */ - rva_peak[rva_mode] = 0; - rva_level[rva_mode] = tt+1; - } - } - } - break; - /* non-rva metainfo, simply store... */ - case artist: - debug("ID3v2: parsing artist info"); - store_id3_text(&id3.artist, (char*) realdata, realsize); - break; - case album: - debug("ID3v2: parsing album info"); - store_id3_text(&id3.album, (char*) realdata, realsize); - break; - case title: - debug("ID3v2: parsing title info"); - store_id3_text(&id3.title, (char*) realdata, realsize); - break; - case year: - debug("ID3v2: parsing year info"); - store_id3_text(&id3.year, (char*) realdata, realsize); - break; - case genre: - debug("ID3v2: parsing genre info"); - store_id3_text(&id3.genre, (char*) realdata, realsize); - break; - default: error1("ID3v2: unknown frame type %i", tt); - } - if((flags & UNSYNC_FLAG) || (fflags & UNSYNC_FFLAG)) free(realdata); - } - #undef BAD_FFLAGS - #undef PRES_TAG_FFLAG - #undef PRES_FILE_FFLAG - #undef READ_ONLY_FFLAG - #undef GROUP_FFLAG - #undef COMPR_FFLAG - #undef ENCR_FFLAG - #undef UNSYNC_FFLAG - #undef DATLEN_FFLAG - } - else break; - #undef KNOWN_FRAMES - } - } - } - else - { - error("ID3v2: Duh, not able to read ID3v2 tag data."); - ret = 0; - } - free(tagdata); - } - else - { - error1("ID3v2Arrg! Unable to allocate %lu bytes for interpreting ID3v2 data - trying to skip instead.", length); - if(!rds->skip_bytes(rds,length)) /* will not store data in backbuff! */ - ret = 0; - } - } - /* skip footer if present */ - if((flags & FOOTER_FLAG) && (!rds->skip_bytes(rds,length))) ret = 0; - return ret; - #undef UNSYNC_FLAG - #undef EXTHEAD_FLAG - #undef EXP_FLAG - #undef FOOTER_FLAG - #undef UNKOWN_FLAGS -} - -void print_id3_tag(unsigned char *id3v1buf) -{ - char genre_from_v1 = 0; - if(!(id3.version || id3v1buf)) return; - if(id3v1buf != NULL) - { - /* fill gaps in id3v2 info with id3v1 info */ - struct id3tag { - char tag[3]; - char title[30]; - char artist[30]; - char album[30]; - char year[4]; - char comment[30]; - unsigned char genre; - }; - struct id3tag *tag = (struct id3tag *) id3v1buf; - /* I _could_ skip the recalculation of fill ... */ - if(!id3.title.fill) - { - if(id3.title.size >= 31 || resize_stringbuf(&id3.title, 31)) - { - strncpy(id3.title.p,tag->title,30); - id3.title.p[30] = 0; - id3.title.fill = strlen(id3.title.p) + 1; - } - } - if(!id3.artist.fill) - { - if(id3.artist.size >= 31 || resize_stringbuf(&id3.artist,31)) - { - strncpy(id3.artist.p,tag->artist,30); - id3.artist.p[30] = 0; - id3.artist.fill = strlen(id3.artist.p) + 1; - } - } - if(!id3.album.fill) - { - if(id3.album.size >= 31 || resize_stringbuf(&id3.album,31)) - { - strncpy(id3.album.p,tag->album,30); - id3.album.p[30] = 0; - id3.album.fill = strlen(id3.album.p) + 1; - } - } - if(!id3.comment.fill) - { - if(id3.comment.size >= 31 || resize_stringbuf(&id3.comment,31)) - { - strncpy(id3.comment.p,tag->comment,30); - id3.comment.p[30] = 0; - id3.comment.fill = strlen(id3.comment.p) + 1; - } - } - if(!id3.year.fill) - { - if(id3.year.size >= 5 || resize_stringbuf(&id3.year,5)) - { - strncpy(id3.year.p,tag->year,4); - id3.year.p[4] = 0; - id3.year.fill = strlen(id3.year.p) + 1; - } - } - /* - genre is special... tag->genre holds an index, id3v2 genre may contain indices in textual form and raw textual genres... - */ - if(!id3.genre.fill) - { - if(id3.genre.size >= 31 || resize_stringbuf(&id3.genre,31)) - { - if (tag->genre <= genre_count) - { - strncpy(id3.genre.p, genre_table[tag->genre], 30); - } - else - { - strncpy(id3.genre.p,"Unknown",30); - } - id3.genre.p[30] = 0; - id3.genre.fill = strlen(id3.genre.p) + 1; - genre_from_v1 = 1; - } - } - } - - if(id3.genre.fill && !genre_from_v1) - { - /* - id3v2.3 says (id)(id)blabla and in case you want ot have (blabla) write ((blabla) - also, there is - (RX) Remix - (CR) Cover - id3v2.4 says - "one or several of the ID3v1 types as numerical strings" - or define your own (write strings), RX and CR - - Now I am very sure that I'll encounter hellishly mixed up id3v2 frames, so try to parse both at once. - */ - struct stringbuf tmp; - init_stringbuf(&tmp); - debug1("interpreting genre: %s\n", id3.genre.p); - if(copy_stringbuf(&id3.genre, &tmp)) - { - size_t num = 0; - size_t nonum = 0; - size_t i; - enum { nothing, number, outtahere } state = nothing; - id3.genre.fill = 0; /* going to be refilled */ - /* number\n -> id3v1 genre */ - /* (number) -> id3v1 genre */ - /* (( -> ( */ - for(i = 0; i < tmp.fill; ++i) - { - debug1("i=%lu", (unsigned long) i); - switch(state) - { - case nothing: - nonum = i; - if(tmp.p[i] == '(') - { - num = i+1; /* number starting as next? */ - state = number; - debug1("( before number at %lu?", (unsigned long) num); - } - /* you know an encoding where this doesn't work? */ - else if(tmp.p[i] >= '0' && tmp.p[i] <= '9') - { - num = i; - state = number; - debug1("direct number at %lu", (unsigned long) num); - } - else state = outtahere; - break; - case number: - /* fake number alert: (( -> ( */ - if(tmp.p[i] == '(') - { - nonum = i; - state = outtahere; - debug("no, it was (("); - } - else if(tmp.p[i] == ')' || tmp.p[i] == '\n' || tmp.p[i] == 0) - { - if(i-num > 0) - { - /* we really have a number */ - int gid; - char* genre = "Unknown"; - tmp.p[i] = 0; - gid = atoi(tmp.p+num); - - /* get that genre */ - if (gid >= 0 && gid <= genre_count) genre = genre_table[gid]; - debug1("found genre: %s", genre); - - if(id3.genre.fill) add_to_stringbuf(&id3.genre, ", "); - add_to_stringbuf(&id3.genre, genre); - nonum = i+1; /* next possible stuff */ - state = nothing; - debug1("had a number: %i", gid); - } - else - { - /* wasn't a number, nonum is set */ - state = outtahere; - debug("no (num) thing..."); - } - } - else if(!(tmp.p[i] >= '0' && tmp.p[i] <= '9')) - { - /* no number at last... */ - state = outtahere; - debug("nothing numeric here"); - } - else - { - debug("still number..."); - } - break; - default: break; - } - if(state == outtahere) break; - } - if(nonum < tmp.fill-1) - { - if(id3.genre.fill) add_to_stringbuf(&id3.genre, ", "); - add_to_stringbuf(&id3.genre, tmp.p+nonum); - } - } - free_stringbuf(&tmp); - } - - if(param.long_id3) - { - fprintf(stderr,"\n"); - /* print id3v2 */ - /* dammed, I use pointers as bool again! It's so convenient... */ - fprintf(stderr,"\tTitle: %s\n", id3.title.fill ? id3.title.p : ""); - fprintf(stderr,"\tArtist: %s\n", id3.artist.fill ? id3.artist.p : ""); - fprintf(stderr,"\tAlbum: %s\n", id3.album.fill ? id3.album.p : ""); - fprintf(stderr,"\tYear: %s\n", id3.year.fill ? id3.year.p : ""); - fprintf(stderr,"\tGenre: %s\n", id3.genre.fill ? id3.genre.p : ""); - fprintf(stderr,"\tComment: %s\n", id3.comment.fill ? id3.comment.p : ""); - fprintf(stderr,"\n"); - } - else - { - /* We are trying to be smart here and conserve vertical space. - So we will skip tags not set, and try to show them in two parallel columns if they are short, which is by far the most common case. */ - /* one _could_ circumvent the strlen calls... */ - if(id3.title.fill && id3.artist.fill && strlen(id3.title.p) <= 30 && strlen(id3.title.p) <= 30) - { - fprintf(stderr,"Title: %-30s Artist: %s\n",id3.title.p,id3.artist.p); - } - else - { - if(id3.title.fill) fprintf(stderr,"Title: %s\n", id3.title.p); - if(id3.artist.fill) fprintf(stderr,"Artist: %s\n", id3.artist.p); - } - if (id3.comment.fill && id3.album.fill && strlen(id3.comment.p) <= 30 && strlen(id3.album.p) <= 30) - { - fprintf(stderr,"Comment: %-30s Album: %s\n",id3.comment.p,id3.album.p); - } - else - { - if (id3.comment.fill) - fprintf(stderr,"Comment: %s\n", id3.comment.p); - if (id3.album.fill) - fprintf(stderr,"Album: %s\n", id3.album.p); - } - if (id3.year.fill && id3.genre.fill && strlen(id3.year.p) <= 30 && strlen(id3.genre.p) <= 30) - { - fprintf(stderr,"Year: %-30s Genre: %s\n",id3.year.p,id3.genre.p); - } - else - { - if (id3.year.fill) - fprintf(stderr,"Year: %s\n", id3.year.p); - if (id3.genre.fill) - fprintf(stderr,"Genre: %s\n", id3.genre.p); - } - } -} - -/* - Preliminary UTF support routines - - Text decoder decodes the ID3 text content from whatever encoding to plain ASCII, substituting unconvertable characters with '*' and returning the final length of decoded string. - TODO: iconv() to whatever locale. But we will want to keep this code anyway for systems w/o iconv(). But we currently assume that it is enough to allocate @len bytes in dest. That might not be true when converting to Unicode encodings. -*/ - -static int decode_il1(char* dest, unsigned char* source, size_t len) -{ - memcpy(dest, source, len); - return len; -} - -static int decode_utf16(char* dest, unsigned char* source, size_t len, int str_be) -{ - int spos = 0; - int dlen = 0; - - len -= len % 2; - /* Just ASCII, we take it easy. */ - for (; spos < len; spos += 2) - { - unsigned short word; - if(str_be) word = source[spos] << 8 | source[spos+1]; - else word = source[spos] | source[spos+1] << 8; - /* utf16 continuation byte */ - if(word & 0xdc00) continue; - /* utf16 out-of-range codepoint */ - else if(word > 255) dest[dlen++] = '*'; - /* an old-school character */ - else dest[dlen++] = word; /* would a cast be good here? */ - } - return dlen; -} - -static int decode_utf16bom(char* dest, unsigned char* source, size_t len) -{ - if(len < 2) return 0; - if(source[0] == 0xFF && source[1] == 0xFE) /* Little-endian */ - return decode_utf16(dest, source + 2, len - 2, 0); - else /* Big-endian */ - return decode_utf16(dest, source + 2, len - 2, 1); -} - -static int decode_utf16be(char* dest, unsigned char* source, size_t len) -{ - return decode_utf16(dest, source, len, 1); -} - -static int decode_utf8(char* dest, unsigned char* source, size_t len) -{ - int spos = 0; - int dlen = 0; - /* Just ASCII, we take it easy. */ - for(; spos < len; spos++) - { - /* utf8 continuation byte bo, lead!*/ - if((source[spos] & 0xc0) == 0x80) continue; - /* utf8 lead byte, no, cont! */ - else if(source[spos] & 0x80) dest[dlen++] = '*'; - else dest[dlen++] = source[spos]; - } - return dlen; -} - -/* determine byte length of string with characters wide @width; - terminating 0 will be included, too, if there is any */ -int wide_bytelen(int width, char* string, size_t string_size) -{ - size_t l = 0; - while(l < string_size) - { - int b; - for(b = 0; b < width; b++) - if(string[l + b]) - break; - - l += width; - if(b == width) /* terminating zero */ - return l; - } - return l; -} diff --git a/src/id3.h b/src/id3.h deleted file mode 100644 index aaaa59cd..00000000 --- a/src/id3.h +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef MPG123_ID3_H -#define MPG123_ID3_H - -void init_id3(); -void exit_id3(); -void reset_id3(); -void print_id3_tag(unsigned char *id3v1buf); -int parse_new_id3(unsigned long first4bytes, struct reader *rds); - -#endif diff --git a/src/id3print.c b/src/id3print.c new file mode 100644 index 00000000..9720e92e --- /dev/null +++ b/src/id3print.c @@ -0,0 +1,286 @@ +#include "mpg123.h" +#include "mpg123app.h" +#include "genre.h" + +static void utf8_ascii(mpg123_string *dest, mpg123_string *source); + +/* print tags... limiting the UTF-8 to ASCII */ +void print_id3_tag(mpg123_handle *mh, int long_id3, FILE *out) +{ + char genre_from_v1 = 0; + enum { TITLE=0, ARTIST, ALBUM, COMMENT, YEAR, GENRE, FIELDS } ti; + mpg123_string tag[FIELDS]; + mpg123_id3v1 *v1; + mpg123_id3v2 *v2; + /* no memory allocated here, so return is safe */ + for(ti=0; tititle); + utf8_ascii(&tag[ARTIST], &v2->artist); + utf8_ascii(&tag[ALBUM], &v2->album); + utf8_ascii(&tag[COMMENT], &v2->comment); + utf8_ascii(&tag[YEAR], &v2->year); + utf8_ascii(&tag[GENRE], &v2->genre); + } + if(v1 != NULL) /* fill gaps with ID3v1 data */ + { + /* I _could_ skip the recalculation of fill ... */ + if(!tag[TITLE].fill) + { + if(tag[TITLE].size >= 31 || mpg123_resize_string(&tag[TITLE], 31)) + { + strncpy(tag[TITLE].p,v1->title,30); + tag[TITLE].p[30] = 0; + tag[TITLE].fill = strlen(tag[TITLE].p) + 1; + } + } + if(!tag[ARTIST].fill) + { + if(tag[ARTIST].size >= 31 || mpg123_resize_string(&tag[ARTIST],31)) + { + strncpy(tag[ARTIST].p,v1->artist,30); + tag[ARTIST].p[30] = 0; + tag[ARTIST].fill = strlen(tag[ARTIST].p) + 1; + } + } + if(!tag[ALBUM].fill) + { + if(tag[ALBUM].size >= 31 || mpg123_resize_string(&tag[ALBUM],31)) + { + strncpy(tag[ALBUM].p,v1->album,30); + tag[ALBUM].p[30] = 0; + tag[ALBUM].fill = strlen(tag[ALBUM].p) + 1; + } + } + if(!tag[COMMENT].fill) + { + if(tag[COMMENT].size >= 31 || mpg123_resize_string(&tag[COMMENT],31)) + { + strncpy(tag[COMMENT].p,v1->comment,30); + tag[COMMENT].p[30] = 0; + tag[COMMENT].fill = strlen(tag[COMMENT].p) + 1; + } + } + if(!tag[YEAR].fill) + { + if(tag[YEAR].size >= 5 || mpg123_resize_string(&tag[YEAR],5)) + { + strncpy(tag[YEAR].p,v1->year,4); + tag[YEAR].p[4] = 0; + tag[YEAR].fill = strlen(tag[YEAR].p) + 1; + } + } + /* + genre is special... v1->genre holds an index, id3v2 genre may contain indices in textual form and raw textual genres... + */ + if(!tag[GENRE].fill) + { + if(tag[GENRE].size >= 31 || mpg123_resize_string(&tag[GENRE],31)) + { + if(v1->genre <= genre_count) + { + strncpy(tag[GENRE].p, genre_table[v1->genre], 30); + } + else + { + strncpy(tag[GENRE].p,"Unknown",30); + } + tag[GENRE].p[30] = 0; + tag[GENRE].fill = strlen(tag[GENRE].p) + 1; + genre_from_v1 = 1; + } + } + } + + if(tag[GENRE].fill && !genre_from_v1) + { + /* + id3v2.3 says (id)(id)blabla and in case you want ot have (blabla) write ((blabla) + also, there is + (RX) Remix + (CR) Cover + id3v2.4 says + "one or several of the ID3v1 types as numerical strings" + or define your own (write strings), RX and CR + + Now I am very sure that I'll encounter hellishly mixed up id3v2 frames, so try to parse both at once. + */ + mpg123_string tmp; + mpg123_init_string(&tmp); + debug1("interpreting genre: %s\n", tag[GENRE].p); + if(mpg123_copy_string(&tag[GENRE], &tmp)) + { + size_t num = 0; + size_t nonum = 0; + size_t i; + enum { nothing, number, outtahere } state = nothing; + tag[GENRE].fill = 0; /* going to be refilled */ + /* number\n -> id3v1 genre */ + /* (number) -> id3v1 genre */ + /* (( -> ( */ + for(i = 0; i < tmp.fill; ++i) + { + debug1("i=%lu", (unsigned long) i); + switch(state) + { + case nothing: + nonum = i; + if(tmp.p[i] == '(') + { + num = i+1; /* number starting as next? */ + state = number; + debug1("( before number at %lu?", (unsigned long) num); + } + /* you know an encoding where this doesn't work? */ + else if(tmp.p[i] >= '0' && tmp.p[i] <= '9') + { + num = i; + state = number; + debug1("direct number at %lu", (unsigned long) num); + } + else state = outtahere; + break; + case number: + /* fake number alert: (( -> ( */ + if(tmp.p[i] == '(') + { + nonum = i; + state = outtahere; + debug("no, it was (("); + } + else if(tmp.p[i] == ')' || tmp.p[i] == '\n' || tmp.p[i] == 0) + { + if(i-num > 0) + { + /* we really have a number */ + int gid; + char* genre = "Unknown"; + tmp.p[i] = 0; + gid = atoi(tmp.p+num); + + /* get that genre */ + if(gid >= 0 && gid <= genre_count) genre = genre_table[gid]; + debug1("found genre: %s", genre); + + if(tag[GENRE].fill) mpg123_add_string(&tag[GENRE], ", "); + mpg123_add_string(&tag[GENRE], genre); + nonum = i+1; /* next possible stuff */ + state = nothing; + debug1("had a number: %i", gid); + } + else + { + /* wasn't a number, nonum is set */ + state = outtahere; + debug("no (num) thing..."); + } + } + else if(!(tmp.p[i] >= '0' && tmp.p[i] <= '9')) + { + /* no number at last... */ + state = outtahere; + debug("nothing numeric here"); + } + else + { + debug("still number..."); + } + break; + default: break; + } + if(state == outtahere) break; + } + if(nonum < tmp.fill-1) + { + if(tag[GENRE].fill) mpg123_add_string(&tag[GENRE], ", "); + mpg123_add_string(&tag[GENRE], tmp.p+nonum); + } + } + mpg123_free_string(&tmp); + } + + if(long_id3) + { + fprintf(out,"\n"); + /* print id3v2 */ + /* dammed, I use pointers as bool again! It's so convenient... */ + fprintf(out,"\tTitle: %s\n", tag[TITLE].fill ? tag[TITLE].p : ""); + fprintf(out,"\tArtist: %s\n", tag[ARTIST].fill ? tag[ARTIST].p : ""); + fprintf(out,"\tAlbum: %s\n", tag[ALBUM].fill ? tag[ALBUM].p : ""); + fprintf(out,"\tYear: %s\n", tag[YEAR].fill ? tag[YEAR].p : ""); + fprintf(out,"\tGenre: %s\n", tag[GENRE].fill ? tag[GENRE].p : ""); + fprintf(out,"\tComment: %s\n", tag[COMMENT].fill ? tag[COMMENT].p : ""); + fprintf(out,"\n"); + } + else + { + /* We are trying to be smart here and conserve vertical space. + So we will skip tags not set, and try to show them in two parallel columns if they are short, which is by far the most common case. */ + /* one _could_ circumvent the strlen calls... */ + if(tag[TITLE].fill && tag[ARTIST].fill && strlen(tag[TITLE].p) <= 30 && strlen(tag[TITLE].p) <= 30) + { + fprintf(out,"Title: %-30s Artist: %s\n",tag[TITLE].p,tag[ARTIST].p); + } + else + { + if(tag[TITLE].fill) fprintf(out,"Title: %s\n", tag[TITLE].p); + if(tag[ARTIST].fill) fprintf(out,"Artist: %s\n", tag[ARTIST].p); + } + if(tag[COMMENT].fill && tag[ALBUM].fill && strlen(tag[COMMENT].p) <= 30 && strlen(tag[ALBUM].p) <= 30) + { + fprintf(out,"Comment: %-30s Album: %s\n",tag[COMMENT].p,tag[ALBUM].p); + } + else + { + if(tag[COMMENT].fill) + fprintf(out,"Comment: %s\n", tag[COMMENT].p); + if(tag[ALBUM].fill) + fprintf(out,"Album: %s\n", tag[ALBUM].p); + } + if(tag[YEAR].fill && tag[GENRE].fill && strlen(tag[YEAR].p) <= 30 && strlen(tag[GENRE].p) <= 30) + { + fprintf(out,"Year: %-30s Genre: %s\n",tag[YEAR].p,tag[GENRE].p); + } + else + { + if(tag[YEAR].fill) + fprintf(out,"Year: %s\n", tag[YEAR].p); + if(tag[GENRE].fill) + fprintf(out,"Genre: %s\n", tag[GENRE].p); + } + } + for(ti=0; tifill; ++spos) + if((source->p[spos] & 0xc0) == 0x80) continue; + else ++dlen; + + if(!mpg123_resize_string(dest, dlen)){ mpg123_free_string(dest); return; } + /* Just ASCII, we take it easy. */ + p = dest->p; + for(spos=0; spos < source->fill; ++spos) + { + *p++ = source->p[spos]; continue; + /* utf8 continuation byte bo, lead!*/ + if((source->p[spos] & 0xc0) == 0x80) continue; + /* utf8 lead byte, no, cont! */ + else if(source->p[spos] & 0x80) *p = '*'; + else *p = source->p[spos]; + ++p; /* next output char */ + } + if(dest->size) dest->p[dest->size-1] = 0; + dest->fill = dest->size; /* The one extra 0 is unaccounted. */ +} diff --git a/src/id3print.h b/src/id3print.h new file mode 100644 index 00000000..75d6b215 --- /dev/null +++ b/src/id3print.h @@ -0,0 +1,8 @@ +#ifndef MPG123_ID3PRINT_H +#define MPG123_ID3PRINT_H + +#include "mpg123.h" + +void print_id3_tag(mpg123_handle *mh, int long_id3, FILE *out); + +#endif diff --git a/src/l2tables.h b/src/l2tables.h deleted file mode 100644 index f174d083..00000000 --- a/src/l2tables.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - l2tables.h: Layer 2 Alloc tables - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - most other tables are calculated on program start (which is (of course) not ISO-conform) - Layer-3 huffman table is in huffman.h -*/ - - -#ifndef _MPG123_L2TABLES_H_ -#define _MPG123_L2TABLES_H_ - -struct al_table alloc_0[] = { - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767} }; - -struct al_table alloc_1[] = { - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767} }; - -struct al_table alloc_2[] = { - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; - -struct al_table alloc_3[] = { - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; - -struct al_table alloc_4[] = { - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9} }; - -#endif - diff --git a/src/layer1.c b/src/layer1.c deleted file mode 100644 index 1ebbea73..00000000 --- a/src/layer1.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - layer1.c: the layer 1 decoder - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - may have a few bugs after last optimization ... -*/ - -#include "mpg123.h" - -void I_step_one(unsigned int balloc[], unsigned int scale_index[2][SBLIMIT],struct frame *fr) -{ - unsigned int *ba=balloc; - unsigned int *sca = (unsigned int *) scale_index; - - if(fr->stereo == 2) { - int i; - int jsbound = fr->jsbound; - for (i=0;istereo == 2) { - int jsbound = fr->jsbound; - register real *f0 = fraction[0]; - register real *f1 = fraction[1]; - ba = balloc; - for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) - fraction[0][i] = fraction[1][i] = 0.0; - } - else { - register real *f0 = fraction[0]; - ba = balloc; - for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) - fraction[0][i] = 0.0; - } -} - -int do_layer1(struct frame *fr,int outmode,audio_output_t *ao) -{ - int clip=0; - int i,stereo = fr->stereo; - unsigned int balloc[2*SBLIMIT]; - unsigned int scale_index[2][SBLIMIT]; - ALIGNED(16) real fraction[2][SBLIMIT]; - int single = fr->single; - - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; - - if(stereo == 1 || single == 3) - single = 0; - - I_step_one(balloc,scale_index,fr); - - for (i=0;i= 0) - { - clip += (fr->synth_mono)( (real *) fraction[single],pcm_sample,&pcm_point); - } - else { - int p1 = pcm_point; - clip += (fr->synth)( (real *) fraction[0],0,pcm_sample,&p1); - clip += (fr->synth)( (real *) fraction[1],1,pcm_sample,&pcm_point); - } - - if(pcm_point >= audiobufsize) - flush_output(outmode,ao); - } - - return clip; -} - - diff --git a/src/layer2.c b/src/layer2.c deleted file mode 100644 index 65b8cca5..00000000 --- a/src/layer2.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - layer2.c: the layer 2 decoder, root of mpg123 - - copyright 1994-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - mpg123 started as mp2 decoder a long time ago... -*/ - - -#include "mpg123.h" -#include "l2tables.h" - -static int grp_3tab[32 * 3] = { 0, }; /* used: 27 */ -static int grp_5tab[128 * 3] = { 0, }; /* used: 125 */ -static int grp_9tab[1024 * 3] = { 0, }; /* used: 729 */ - -real muls[27][64]; /* also used by layer 1 */ - -void init_layer2(void) -{ - static double mulmul[27] = { - 0.0 , -2.0/3.0 , 2.0/3.0 , - 2.0/7.0 , 2.0/15.0 , 2.0/31.0, 2.0/63.0 , 2.0/127.0 , 2.0/255.0 , - 2.0/511.0 , 2.0/1023.0 , 2.0/2047.0 , 2.0/4095.0 , 2.0/8191.0 , - 2.0/16383.0 , 2.0/32767.0 , 2.0/65535.0 , - -4.0/5.0 , -2.0/5.0 , 2.0/5.0, 4.0/5.0 , - -8.0/9.0 , -4.0/9.0 , -2.0/9.0 , 2.0/9.0 , 4.0/9.0 , 8.0/9.0 }; - static int base[3][9] = { - { 1 , 0, 2 , } , - { 17, 18, 0 , 19, 20 , } , - { 21, 1, 22, 23, 0, 24, 25, 2, 26 } }; - int i,j,k,l,len; - real *table; - static int tablen[3] = { 3 , 5 , 9 }; - static int *itable,*tables[3] = { grp_3tab , grp_5tab , grp_9tab }; - - for(i=0;i<3;i++) - { - itable = tables[i]; - len = tablen[i]; - for(j=0;jstereo-1; - int sblimit = fr->II_sblimit; - int jsbound = fr->jsbound; - int sblimit2 = fr->II_sblimit<alloc; - int i; - static unsigned int scfsi_buf[64]; - unsigned int *scfsi,*bita; - int sc,step; - - bita = bit_alloc; - if(stereo) - { - for (i=jsbound;i;i--,alloc1+=(1<bits); - *bita++ = (char) getbits(step); - } - for (i=sblimit-jsbound;i;i--,alloc1+=(1<bits); - bita[1] = bita[0]; - bita+=2; - } - bita = bit_alloc; - scfsi=scfsi_buf; - for (i=sblimit2;i;i--) - if (*bita++) - *scfsi++ = (char) getbits_fast(2); - } - else /* mono */ - { - for (i=sblimit;i;i--,alloc1+=(1<bits); - bita = bit_alloc; - scfsi=scfsi_buf; - for (i=sblimit;i;i--) - if (*bita++) - *scfsi++ = (char) getbits_fast(2); - } - - bita = bit_alloc; - scfsi=scfsi_buf; - for (i=sblimit2;i;i--) - if (*bita++) - switch (*scfsi++) - { - case 0: - *scale++ = getbits_fast(6); - *scale++ = getbits_fast(6); - *scale++ = getbits_fast(6); - break; - case 1 : - *scale++ = sc = getbits_fast(6); - *scale++ = sc; - *scale++ = getbits_fast(6); - break; - case 2: - *scale++ = sc = getbits_fast(6); - *scale++ = sc; - *scale++ = sc; - break; - default: /* case 3 */ - *scale++ = getbits_fast(6); - *scale++ = sc = getbits_fast(6); - *scale++ = sc; - break; - } - -} - -void II_step_two(unsigned int *bit_alloc,real fraction[2][4][SBLIMIT],int *scale,struct frame *fr,int x1) -{ - int i,j,k,ba; - int stereo = fr->stereo; - int sblimit = fr->II_sblimit; - int jsbound = fr->jsbound; - struct al_table *alloc2,*alloc1 = fr->alloc; - unsigned int *bita=bit_alloc; - int d1,step; - - for (i=0;ibits; - for (j=0;jbits; - if( (d1=alloc2->d) < 0) - { - real cm=muls[k][scale[x1]]; - fraction[j][0][i] = ((real) ((int)getbits(k) + d1)) * cm; - fraction[j][1][i] = ((real) ((int)getbits(k) + d1)) * cm; - fraction[j][2][i] = ((real) ((int)getbits(k) + d1)) * cm; - } - else - { - static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; - unsigned int idx,*tab,m=scale[x1]; - idx = (unsigned int) getbits(k); - tab = (unsigned int *) (table[d1] + idx + idx + idx); - fraction[j][0][i] = muls[*tab++][m]; - fraction[j][1][i] = muls[*tab++][m]; - fraction[j][2][i] = muls[*tab][m]; - } - scale+=3; - } - else - fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0; - } - } - - for (i=jsbound;ibits; - bita++; /* channel 1 and channel 2 bitalloc are the same */ - if ( (ba=*bita++) ) - { - k=(alloc2 = alloc1+ba)->bits; - if( (d1=alloc2->d) < 0) - { - real cm; - cm=muls[k][scale[x1+3]]; - fraction[1][0][i] = (fraction[0][0][i] = (real) ((int)getbits(k) + d1) ) * cm; - fraction[1][1][i] = (fraction[0][1][i] = (real) ((int)getbits(k) + d1) ) * cm; - fraction[1][2][i] = (fraction[0][2][i] = (real) ((int)getbits(k) + d1) ) * cm; - cm=muls[k][scale[x1]]; - fraction[0][0][i] *= cm; fraction[0][1][i] *= cm; fraction[0][2][i] *= cm; - } - else - { - static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; - unsigned int idx,*tab,m1,m2; - m1 = scale[x1]; m2 = scale[x1+3]; - idx = (unsigned int) getbits(k); - tab = (unsigned int *) (table[d1] + idx + idx + idx); - fraction[0][0][i] = muls[*tab][m1]; fraction[1][0][i] = muls[*tab++][m2]; - fraction[0][1][i] = muls[*tab][m1]; fraction[1][1][i] = muls[*tab++][m2]; - fraction[0][2][i] = muls[*tab][m1]; fraction[1][2][i] = muls[*tab][m2]; - } - scale+=6; - } - else { - fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] = - fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0; - } -/* - should we use individual scalefac for channel 2 or - is the current way the right one , where we just copy channel 1 to - channel 2 ?? - The current 'strange' thing is, that we throw away the scalefac - values for the second channel ...!! --> changed .. now we use the scalefac values of channel one !! -*/ - } - - if(sblimit > (fr->down_sample_sblimit) ) - sblimit = fr->down_sample_sblimit; - - for(i=sblimit;isampling_frequency >= 3) /* Or equivalent: (fr->lsf == 1) */ - table = 4; - else - table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; - sblim = sblims[table]; - - fr->alloc = tables[table]; - fr->II_sblimit = sblim; -} - - -int do_layer2(struct frame *fr,int outmode,audio_output_t *ao) -{ - int clip=0; - int i,j; - int stereo = fr->stereo; - ALIGNED(16) real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ - unsigned int bit_alloc[64]; - int scale[192]; - int single = fr->single; - - II_select_table(fr); - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? - (fr->mode_ext<<2)+4 : fr->II_sblimit; - - if (fr->jsbound > fr->II_sblimit) { - fprintf(stderr, "Truncating stereo boundary to sideband limit.\n"); - fr->jsbound=fr->II_sblimit; - } - - if(stereo == 1 || single == 3) - single = 0; - - II_step_one(bit_alloc, scale, fr); - - for (i=0;i>2); - for (j=0;j<3;j++) - { - if(single >= 0) - { - clip += (fr->synth_mono) (fraction[single][j],pcm_sample,&pcm_point); - } - else { - int p1 = pcm_point; - clip += (fr->synth) (fraction[0][j],0,pcm_sample,&p1); - clip += (fr->synth) (fraction[1][j],1,pcm_sample,&pcm_point); - } - - if(pcm_point >= audiobufsize) - flush_output(outmode,ao); - } - } - - return clip; -} - - diff --git a/src/layer3.c b/src/layer3.c deleted file mode 100644 index 13eee5da..00000000 --- a/src/layer3.c +++ /dev/null @@ -1,1942 +0,0 @@ -/* - leyer3.c: the layer 3 decoder - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - Optimize-TODO: put short bands into the band-field without the stride of 3 reals - Length-optimze: unify long and short band code where it is possible - - The int-vs-pointer situation has to be cleaned up. -*/ - -#include "mpg123.h" -#include "huffman.h" - -#include "common.h" - -#include "getbits.h" - -static real ispow[8207]; -static real aa_ca[8],aa_cs[8]; -static real COS1[12][6]; -static real win[4][36]; -static real win1[4][36]; -static real gainpow2[256+118+4]; -real COS9[9]; /* dct36_3dnow wants to use that */ -static real COS6_1,COS6_2; -real tfcos36[9]; /* dct36_3dnow wants to use that */ -static real tfcos12[3]; -#define NEW_DCT9 -#ifdef NEW_DCT9 -static real cos9[3],cos18[3]; -#endif - -struct bandInfoStruct { - int longIdx[23]; - int longDiff[22]; - int shortIdx[14]; - int shortDiff[13]; -}; - -int longLimit[9][23]; -int shortLimit[9][14]; - -struct bandInfoStruct bandInfo[9] = { - -/* MPEG 1.0 */ - { {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576}, - {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158}, - {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3}, - {4,4,4,4,6,8,10,12,14,18,22,30,56} } , - - { {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576}, - {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192}, - {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3}, - {4,4,4,4,6,6,10,12,14,16,20,26,66} } , - - { {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576} , - {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26} , - {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3} , - {4,4,4,4,6,8,12,16,20,26,34,42,12} } , - -/* MPEG 2.0 */ - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } , - {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} , - {4,4,4,6,6,8,10,14,18,26,32,42,18 } } , - -/* mhipp trunk has 330 -> 332 without further explanation ... */ - { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576}, - {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,52,64,70,76,36 } , - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} , - {4,4,4,6,8,10,12,14,18,24,32,44,12 } } , - - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 }, - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3}, - {4,4,4,6,8,10,12,14,18,24,30,40,18 } } , -/* MPEG 2.5 */ - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} }, - { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} }, - { {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, - {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2}, - {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576}, - {8,8,8,12,16,20,24,28,36,2,2,2,26} } , -}; - -static int mapbuf0[9][152]; -static int mapbuf1[9][156]; -static int mapbuf2[9][44]; -static int *map[9][3]; -static int *mapend[9][3]; - -static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */ -static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */ - -static real tan1_1[16],tan2_1[16],tan1_2[16],tan2_2[16]; -static real pow1_1[2][16],pow2_1[2][16],pow1_2[2][16],pow2_2[2][16]; - -#ifdef GAPLESS -/* still a dirty hack, places in bytes (zero-based)... */ -static unsigned long position; /* position in raw decoder bytestream */ -static unsigned long begin; /* first byte to play == number to skip */ -static unsigned long end; /* last byte to play */ -static unsigned long ignore; /* forcedly ignore stuff in between */ -static int bytified; - -/* input in bytes already */ -void layer3_gapless_init(unsigned long b, unsigned long e) -{ - bytified = 0; - position = 0; - ignore = 0; - begin = b; - end = e; - debug2("layer3_gapless_init: from %lu to %lu samples", begin, end); -} - -void layer3_gapless_set_position(unsigned long frames, struct frame* fr, audio_output_t *ao) -{ - position = samples_to_bytes(frames*spf(fr), fr, ao); - debug1("set; position now %lu", position); -} - -void layer3_gapless_bytify(struct frame *fr, audio_output_t *ao) -{ - if(!bytified) - { - begin = samples_to_bytes(begin, fr, ao); - end = samples_to_bytes(end, fr, ao); - bytified = 1; - debug2("bytified: begin=%lu; end=%5lu", begin, end); - } -} - -/* I need initialized fr here! */ -void layer3_gapless_set_ignore(unsigned long frames, struct frame *fr, audio_output_t *ao) -{ - ignore = samples_to_bytes(frames*spf(fr), fr, ao); -} - -/* - take the (partially or fully) filled and remove stuff for gapless mode if needed - pcm_point may then be smaller than before... -*/ -void layer3_gapless_buffercheck() -{ - /* pcm_point bytes added since last position... */ - unsigned long new_pos = position + pcm_point; - if(begin && (position < begin)) - { - debug4("new_pos %lu (old: %lu), begin %lu, pcm_point %i", new_pos, position, begin, pcm_point); - if(new_pos < begin) - { - if(ignore > pcm_point) ignore -= pcm_point; - else ignore = 0; - pcm_point = 0; /* full of padding/delay */ - } - else - { - unsigned long ignored = begin-position; - /* we need to shift the memory to the left... */ - debug3("old pcm_point: %i, begin %lu; good bytes: %i", pcm_point, begin, (int)(new_pos-begin)); - if(ignore > ignored) ignore -= ignored; - else ignore = 0; - pcm_point -= ignored; - debug3("shifting %i bytes from %p to %p", pcm_point, pcm_sample+(int)(begin-position), pcm_sample); - memmove(pcm_sample, pcm_sample+(int)(begin-position), pcm_point); - } - } - /* I don't cover the case with both end and begin in chunk! */ - else if(end && (new_pos > end)) - { - ignore = 0; - /* either end in current chunk or chunk totally out */ - debug2("ending at position %lu / point %i", new_pos, pcm_point); - if(position < end) pcm_point -= new_pos-end; - else pcm_point = 0; - debug1("set pcm_point to %i", pcm_point); - } - else if(ignore) - { - if(pcm_point < ignore) - { - ignore -= pcm_point; - debug2("ignored %i bytes; pcm_point = 0; %lu bytes left", pcm_point, ignore); - pcm_point = 0; - } - else - { - /* we need to shift the memory to the left... */ - debug3("old pcm_point: %i, to ignore: %lu; good bytes: %i", pcm_point, ignore, pcm_point-(int)ignore); - pcm_point -= ignore; - debug3("shifting %i bytes from %p to %p", pcm_point, pcm_sample+ignore, pcm_sample); - memmove(pcm_sample, pcm_sample+ignore, pcm_point); - ignore = 0; - } - } - position = new_pos; -} -#endif - -#ifdef OPT_MMXORSSE -real init_layer3_gainpow2_mmx(int i) -{ - if(!param.down_sample) return 16384.0 * pow((double)2.0,-0.25 * (double) (i+210) ); - else return DOUBLE_TO_REAL(pow((double)2.0,-0.25 * (double) (i+210))); -} -#endif - -real init_layer3_gainpow2(int i) -{ - return DOUBLE_TO_REAL(pow((double)2.0,-0.25 * (double) (i+210))); -} - -/* - * init tables for layer-3 - */ -void init_layer3(int down_sample_sblimit) -{ - int i,j,k,l; - - for(i=-256;i<118+4;i++) - gainpow2[i+256] = opt_init_layer3_gainpow2(i); - - for(i=0;i<8207;i++) - ispow[i] = DOUBLE_TO_REAL(pow((double)i,(double)4.0/3.0)); - - for (i=0;i<8;i++) { - static double Ci[8]={-0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142,-0.0037}; - double sq=sqrt(1.0+Ci[i]*Ci[i]); - aa_cs[i] = DOUBLE_TO_REAL(1.0/sq); - aa_ca[i] = DOUBLE_TO_REAL(Ci[i]/sq); - } - - for(i=0;i<18;i++) { - win[0][i] = win[1][i] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 72.0 * (double) (2*(i+0) +1) ) / cos ( M_PI * (double) (2*(i+0) +19) / 72.0 )); - win[0][i+18] = win[3][i+18] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 72.0 * (double) (2*(i+18)+1) ) / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 )); - } - for(i=0;i<6;i++) { - win[1][i+18] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 )); - win[3][i+12] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+12)+19) / 72.0 )); - win[1][i+24] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+13) ) / cos ( M_PI * (double) (2*(i+24)+19) / 72.0 )); - win[1][i+30] = win[3][i] = DOUBLE_TO_REAL(0.0); - win[3][i+6 ] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*(i+6 )+19) / 72.0 )); - } - - for(i=0;i<9;i++) - COS9[i] = DOUBLE_TO_REAL(cos( M_PI / 18.0 * (double) i)); - - for(i=0;i<9;i++) - tfcos36[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 36.0 )); - for(i=0;i<3;i++) - tfcos12[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 12.0 )); - - COS6_1 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 1)); - COS6_2 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 2)); - -#ifdef NEW_DCT9 - cos9[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/9.0)); - cos9[1] = DOUBLE_TO_REAL(cos(5.0*M_PI/9.0)); - cos9[2] = DOUBLE_TO_REAL(cos(7.0*M_PI/9.0)); - cos18[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/18.0)); - cos18[1] = DOUBLE_TO_REAL(cos(11.0*M_PI/18.0)); - cos18[2] = DOUBLE_TO_REAL(cos(13.0*M_PI/18.0)); -#endif - - for(i=0;i<12;i++) { - win[2][i] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*i+7) / 24.0 )); - for(j=0;j<6;j++) - COS1[i][j] = DOUBLE_TO_REAL(cos( M_PI / 24.0 * (double) ((2*i+7)*(2*j+1)) )); - } - - for(j=0;j<4;j++) { - static int len[4] = { 36,36,12,36 }; - for(i=0;i 0) { - if( i & 1 ) - p1 = pow(base,(i+1.0)*0.5); - else - p2 = pow(base,i*0.5); - } - pow1_1[j][i] = DOUBLE_TO_REAL(p1); - pow2_1[j][i] = DOUBLE_TO_REAL(p2); - pow1_2[j][i] = DOUBLE_TO_REAL(M_SQRT2 * p1); - pow2_2[j][i] = DOUBLE_TO_REAL(M_SQRT2 * p2); - } - } - - for(j=0;j<9;j++) { - struct bandInfoStruct *bi = &bandInfo[j]; - int *mp; - int cb,lwin; - int *bdf; - - mp = map[j][0] = mapbuf0[j]; - bdf = bi->longDiff; - for(i=0,cb = 0; cb < 8 ; cb++,i+=*bdf++) { - *mp++ = (*bdf) >> 1; - *mp++ = i; - *mp++ = 3; - *mp++ = cb; - } - bdf = bi->shortDiff+3; - for(cb=3;cb<13;cb++) { - int l = (*bdf++) >> 1; - for(lwin=0;lwin<3;lwin++) { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6*l; - } - mapend[j][0] = mp; - - mp = map[j][1] = mapbuf1[j]; - bdf = bi->shortDiff+0; - for(i=0,cb=0;cb<13;cb++) { - int l = (*bdf++) >> 1; - for(lwin=0;lwin<3;lwin++) { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6*l; - } - mapend[j][1] = mp; - - mp = map[j][2] = mapbuf2[j]; - bdf = bi->longDiff; - for(cb = 0; cb < 22 ; cb++) { - *mp++ = (*bdf++) >> 1; - *mp++ = cb; - } - mapend[j][2] = mp; - - } - - for(j=0;j<9;j++) { - for(i=0;i<23;i++) { - longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1; - if(longLimit[j][i] > (down_sample_sblimit) ) - longLimit[j][i] = down_sample_sblimit; - } - for(i=0;i<14;i++) { - shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1; - if(shortLimit[j][i] > (down_sample_sblimit) ) - shortLimit[j][i] = down_sample_sblimit; - } - } - - for(i=0;i<5;i++) { - for(j=0;j<6;j++) { - for(k=0;k<6;k++) { - int n = k + j * 6 + i * 36; - i_slen2[n] = i|(j<<3)|(k<<6)|(3<<12); - } - } - } - for(i=0;i<4;i++) { - for(j=0;j<4;j++) { - for(k=0;k<4;k++) { - int n = k + j * 4 + i * 16; - i_slen2[n+180] = i|(j<<3)|(k<<6)|(4<<12); - } - } - } - for(i=0;i<4;i++) { - for(j=0;j<3;j++) { - int n = j + i * 3; - i_slen2[n+244] = i|(j<<3) | (5<<12); - n_slen2[n+500] = i|(j<<3) | (2<<12) | (1<<15); - } - } - - for(i=0;i<5;i++) { - for(j=0;j<5;j++) { - for(k=0;k<4;k++) { - for(l=0;l<4;l++) { - int n = l + k * 4 + j * 16 + i * 80; - n_slen2[n] = i|(j<<3)|(k<<6)|(l<<9)|(0<<12); - } - } - } - } - for(i=0;i<5;i++) { - for(j=0;j<5;j++) { - for(k=0;k<4;k++) { - int n = k + j * 4 + i * 20; - n_slen2[n+400] = i|(j<<3)|(k<<6)|(1<<12); - } - } - } -} - -/* - * read additional side information (for MPEG 1 and MPEG 2) - */ -static int III_get_side_info(struct III_sideinfo *si,int stereo, - int ms_stereo,long sfreq,int single,int lsf) -{ - int ch, gr; - int powdiff = (single == 3) ? 4 : 0; - - static const int tabs[2][5] = { { 2,9,5,3,4 } , { 1,8,1,2,9 } }; - const int *tab = tabs[lsf]; - - si->main_data_begin = getbits(tab[1]); - if (stereo == 1) - si->private_bits = getbits_fast(tab[2]); - else - si->private_bits = getbits_fast(tab[3]); - - if(!lsf) { - for (ch=0; chch[ch].gr[0].scfsi = -1; - si->ch[ch].gr[1].scfsi = getbits_fast(4); - } - } - - for (gr=0; grch[ch].gr[gr]); - - gr_info->part2_3_length = getbits(12); - gr_info->big_values = getbits(9); - if(gr_info->big_values > 288) { - error("big_values too large!"); - gr_info->big_values = 288; - } - gr_info->pow2gain = gainpow2+256 - getbits_fast(8) + powdiff; - if(ms_stereo) - gr_info->pow2gain += 2; - gr_info->scalefac_compress = getbits(tab[4]); - - if(get1bit()) { /* window switch flag */ - int i; - gr_info->block_type = getbits_fast(2); - gr_info->mixed_block_flag = get1bit(); - gr_info->table_select[0] = getbits_fast(5); - gr_info->table_select[1] = getbits_fast(5); - /* - * table_select[2] not needed, because there is no region2, - * but to satisfy some verifications tools we set it either. - */ - gr_info->table_select[2] = 0; - for(i=0;i<3;i++) - gr_info->full_gain[i] = gr_info->pow2gain + (getbits_fast(3)<<3); - - if(gr_info->block_type == 0) { - error("Blocktype == 0 and window-switching == 1 not allowed."); - /* exit(1); */ - return 1; - } - - /* region_count/start parameters are implicit in this case. */ - if(!lsf || gr_info->block_type == 2) - gr_info->region1start = 36>>1; - else { -/* check this again for 2.5 and sfreq=8 */ - if(sfreq == 8) - gr_info->region1start = 108>>1; - else - gr_info->region1start = 54>>1; - } - gr_info->region2start = 576>>1; - } - else { - int i,r0c,r1c; - for (i=0; i<3; i++) - gr_info->table_select[i] = getbits_fast(5); - r0c = getbits_fast(4); - r1c = getbits_fast(3); - gr_info->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; - gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; - gr_info->block_type = 0; - gr_info->mixed_block_flag = 0; - } - if(!lsf) - gr_info->preflag = get1bit(); - gr_info->scalefac_scale = get1bit(); - gr_info->count1table_select = get1bit(); - } - } - return 0; -} - -/* - * read scalefactors - */ -static int III_get_scale_factors_1(int *scf,struct gr_info_s *gr_info,int ch,int gr) -{ - static const unsigned char slen[2][16] = { - {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, - {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} - }; - int numbits; - int num0 = slen[0][gr_info->scalefac_compress]; - int num1 = slen[1][gr_info->scalefac_compress]; - - if (gr_info->block_type == 2) { - int i=18; - numbits = (num0 + num1) * 18; - - if (gr_info->mixed_block_flag) { - for (i=8;i;i--) - *scf++ = getbits_fast(num0); - i = 9; - numbits -= num0; /* num0 * 17 + num1 * 18 */ - } - - for (;i;i--) - *scf++ = getbits_fast(num0); - for (i = 18; i; i--) - *scf++ = getbits_fast(num1); - *scf++ = 0; *scf++ = 0; *scf++ = 0; /* short[13][0..2] = 0 */ - } - else { - int i; - int scfsi = gr_info->scfsi; - - if(scfsi < 0) { /* scfsi < 0 => granule == 0 */ - for(i=11;i;i--) - *scf++ = getbits_fast(num0); - for(i=10;i;i--) - *scf++ = getbits_fast(num1); - numbits = (num0 + num1) * 10 + num0; - *scf++ = 0; - } - else { - numbits = 0; - if(!(scfsi & 0x8)) { - for (i=0;i<6;i++) - *scf++ = getbits_fast(num0); - numbits += num0 * 6; - } - else { - scf += 6; - } - - if(!(scfsi & 0x4)) { - for (i=0;i<5;i++) - *scf++ = getbits_fast(num0); - numbits += num0 * 5; - } - else { - scf += 5; - } - - if(!(scfsi & 0x2)) { - for(i=0;i<5;i++) - *scf++ = getbits_fast(num1); - numbits += num1 * 5; - } - else { - scf += 5; - } - - if(!(scfsi & 0x1)) { - for (i=0;i<5;i++) - *scf++ = getbits_fast(num1); - numbits += num1 * 5; - } - else { - scf += 5; - } - *scf++ = 0; /* no l[21] in original sources */ - } - } - return numbits; -} - -static int III_get_scale_factors_2(int *scf,struct gr_info_s *gr_info,int i_stereo) -{ - unsigned char *pnt; - int i,j,n=0,numbits=0; - unsigned int slen; - - static unsigned char stab[3][6][4] = { - { { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0} , - { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} } , - { { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0} , - {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} } , - { { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0} , - { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} } }; - - if(i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ - slen = i_slen2[gr_info->scalefac_compress>>1]; - else - slen = n_slen2[gr_info->scalefac_compress]; - - gr_info->preflag = (slen>>15) & 0x1; - - n = 0; - if( gr_info->block_type == 2 ) { - n++; - if(gr_info->mixed_block_flag) - n++; - } - - pnt = stab[n][(slen>>12)&0x7]; - - for(i=0;i<4;i++) { - int num = slen & 0x7; - slen >>= 3; - if(num) { - for(j=0;j<(int)(pnt[i]);j++) - *scf++ = getbits_fast(num); - numbits += pnt[i] * num; - } - else { - for(j=0;j<(int)(pnt[i]);j++) - *scf++ = 0; - } - } - - n = (n << 1) + 1; - for(i=0;iscalefac_scale; - real *xrpnt = (real *) xr; - int l[3],l3; - int part2remain = gr_info->part2_3_length - part2bits; - int *me; - - /* mhipp tree has this split up a bit... */ - int num=getbitoffset(); - long mask = (long) getbits(num)<<(BITSHIFT+8-num); - part2remain -= num; - - { - int bv = gr_info->big_values; - int region1 = gr_info->region1start; - int region2 = gr_info->region2start; -if(region1 > region2) -{ - /* That's not optimal: it fixes a segfault with fuzzed data, but also apparently triggers where it shouldn't, see bug 1641196. - The benefit of not crashing / having this security risk is bigger than these few frames of a lame-3.70 file that aren't audible anyway - But still, I want to know if indeed this check or the old lame is at fault. */ - error("You got some really nasty file there... region1>region2!"); - return 1; -} - l3 = ((576>>1)-bv)>>1; -/* - * we may lose the 'odd' bit here !! - * check this later again - */ - if(bv <= region1) { - l[0] = bv; l[1] = 0; l[2] = 0; - } - else { - l[0] = region1; - if(bv <= region2) { - l[1] = bv - l[0]; l[2] = 0; - } - else { - l[1] = region2 - l[0]; l[2] = bv - region2; - } - } - } - - if(gr_info->block_type == 2) { - /* - * decoding with short or mixed mode BandIndex table - */ - int i,max[4]; - int step=0,lwin=3,cb=0; - register real v = 0.0; - register int *m,mc; - - if(gr_info->mixed_block_flag) { - max[3] = -1; - max[0] = max[1] = max[2] = 2; - m = map[sfreq][0]; - me = mapend[sfreq][0]; - } - else { - max[0] = max[1] = max[2] = max[3] = -1; - /* max[3] not really needed in this case */ - m = map[sfreq][1]; - me = mapend[sfreq][1]; - } - - mc = 0; - for(i=0;i<2;i++) { - int lp = l[i]; - struct newhuff *h = ht+gr_info->table_select[i]; - for(;lp;lp--,mc--) { - register int x,y; - if( (!mc) ) { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if(lwin == 3) { - v = gr_info->pow2gain[(*scf++) << shift]; - step = 1; - } - else { - v = gr_info->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - { - register short *val = h->table; - REFRESH_MASK; - while((y=*val++)<0) { - if (mask < 0) - val -= y; - num--; - mask <<= 1; - } - x = y >> 4; - y &= 0xf; - } - if(x == 15 && h->linbits) { - max[lwin] = cb; - REFRESH_MASK; - x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) - *xrpnt = REAL_MUL(-ispow[x], v); - else - *xrpnt = REAL_MUL(ispow[x], v); - mask <<= 1; - } - else if(x) { - max[lwin] = cb; - if(mask < 0) - *xrpnt = REAL_MUL(-ispow[x], v); - else - *xrpnt = REAL_MUL(ispow[x], v); - num--; - mask <<= 1; - } - else - *xrpnt = DOUBLE_TO_REAL(0.0); - xrpnt += step; - if(y == 15 && h->linbits) { - max[lwin] = cb; - REFRESH_MASK; - y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) - *xrpnt = REAL_MUL(-ispow[y], v); - else - *xrpnt = REAL_MUL(ispow[y], v); - mask <<= 1; - } - else if(y) { - max[lwin] = cb; - if(mask < 0) - *xrpnt = REAL_MUL(-ispow[y], v); - else - *xrpnt = REAL_MUL(ispow[y], v); - num--; - mask <<= 1; - } - else - *xrpnt = DOUBLE_TO_REAL(0.0); - xrpnt += step; - } - } - - for(;l3 && (part2remain+num > 0);l3--) { - /* not mixing code and declarations to keep C89 happy */ - struct newhuff* h; - register short* val; - register short a; - /* This is only a humble hack to prevent a special segfault. */ - /* More insight into the real workings is still needed. */ - /* especially why there are (valid?) files that make xrpnt exceed the array with 4 bytes without segfaulting, more seems to be really bad, though. */ - #ifdef DEBUG - if(!(xrpnt < &xr[SBLIMIT][0])) - { - if(param.verbose) debug2("attempted soft xrpnt overflow (%p !< %p) ?", (void*) xrpnt, (void*) &xr[SBLIMIT][0]); - } - #endif - if(!(xrpnt < &xr[SBLIMIT][0]+5)) - { - error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) &xr[SBLIMIT][0]); - return 2; - } - h = htc+gr_info->count1table_select; - val = h->table; - - REFRESH_MASK; - while((a=*val++)<0) { - if (mask < 0) - val -= a; - num--; - mask <<= 1; - } - if(part2remain+num <= 0) { - num -= part2remain+num; - break; - } - - for(i=0;i<4;i++) { - if(!(i & 1)) { - if(!mc) { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if(lwin == 3) { - v = gr_info->pow2gain[(*scf++) << shift]; - step = 1; - } - else { - v = gr_info->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - mc--; - } - if( (a & (0x8>>i)) ) { - max[lwin] = cb; - if(part2remain+num <= 0) { - break; - } - if(mask < 0) - *xrpnt = -v; - else - *xrpnt = v; - num--; - mask <<= 1; - } - else - *xrpnt = DOUBLE_TO_REAL(0.0); - xrpnt += step; - } - } - - if(lwin < 3) { /* short band? */ - while(1) { - for(;mc > 0;mc--) { - *xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3; /* short band -> step=3 */ - *xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3; - } - if(m >= me) - break; - mc = *m++; - xrpnt = ((real *) xr) + *m++; - if(*m++ == 0) - break; /* optimize: field will be set to zero at the end of the function */ - m++; /* cb */ - } - } - - gr_info->maxband[0] = max[0]+1; - gr_info->maxband[1] = max[1]+1; - gr_info->maxband[2] = max[2]+1; - gr_info->maxbandl = max[3]+1; - - { - int rmax = max[0] > max[1] ? max[0] : max[1]; - rmax = (rmax > max[2] ? rmax : max[2]) + 1; - gr_info->maxb = rmax ? shortLimit[sfreq][rmax] : longLimit[sfreq][max[3]+1]; - } - - } - else { - /* - * decoding with 'long' BandIndex table (block_type != 2) - */ - int *pretab = gr_info->preflag ? pretab1 : pretab2; - int i,max = -1; - int cb = 0; - int *m = map[sfreq][2]; - register real v = 0.0; - int mc = 0; - - /* - * long hash table values - */ - for(i=0;i<3;i++) { - int lp = l[i]; - struct newhuff *h = ht+gr_info->table_select[i]; - - for(;lp;lp--,mc--) { - int x,y; - if(!mc) { - mc = *m++; - cb = *m++; - if(cb == 21) - v = 0.0; - else - v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift]; - - } - { - register short *val = h->table; - REFRESH_MASK; - while((y=*val++)<0) { - if (mask < 0) - val -= y; - num--; - mask <<= 1; - } - x = y >> 4; - y &= 0xf; - } - - if (x == 15 && h->linbits) { - max = cb; - REFRESH_MASK; - x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) - *xrpnt++ = REAL_MUL(-ispow[x], v); - else - *xrpnt++ = REAL_MUL(ispow[x], v); - mask <<= 1; - } - else if(x) { - max = cb; - if(mask < 0) - *xrpnt++ = REAL_MUL(-ispow[x], v); - else - *xrpnt++ = REAL_MUL(ispow[x], v); - num--; - mask <<= 1; - } - else - *xrpnt++ = DOUBLE_TO_REAL(0.0); - - if (y == 15 && h->linbits) { - max = cb; - REFRESH_MASK; - y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) - *xrpnt++ = REAL_MUL(-ispow[y], v); - else - *xrpnt++ = REAL_MUL(ispow[y], v); - mask <<= 1; - } - else if(y) { - max = cb; - if(mask < 0) - *xrpnt++ = REAL_MUL(-ispow[y], v); - else - *xrpnt++ = REAL_MUL(ispow[y], v); - num--; - mask <<= 1; - } - else - *xrpnt++ = DOUBLE_TO_REAL(0.0); - } - } - - /* - * short (count1table) values - */ - for(;l3 && (part2remain+num > 0);l3--) { - struct newhuff *h = htc+gr_info->count1table_select; - register short *val = h->table,a; - - REFRESH_MASK; - while((a=*val++)<0) { - if (mask < 0) - val -= a; - num--; - mask <<= 1; - } - if(part2remain+num <= 0) { - num -= part2remain+num; - break; - } - - for(i=0;i<4;i++) { - if(!(i & 1)) { - if(!mc) { - mc = *m++; - cb = *m++; - if(cb == 21) - v = 0.0; - else - v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift]; - } - mc--; - } - if ( (a & (0x8>>i)) ) { - max = cb; - if(part2remain+num <= 0) { - break; - } - if(mask < 0) - *xrpnt++ = -v; - else - *xrpnt++ = v; - num--; - mask <<= 1; - } - else - *xrpnt++ = DOUBLE_TO_REAL(0.0); - } - } - - gr_info->maxbandl = max+1; - gr_info->maxb = longLimit[sfreq][gr_info->maxbandl]; - } - - part2remain += num; - backbits(num); - num = 0; - - while(xrpnt < &xr[SBLIMIT][0]) - *xrpnt++ = DOUBLE_TO_REAL(0.0); - - while( part2remain > 16 ) { - getbits(16); /* Dismiss stuffing Bits */ - part2remain -= 16; - } - if(part2remain > 0) - getbits(part2remain); - else if(part2remain < 0) { - debug1("Can't rewind stream by %d bits!",-part2remain); - return 1; /* -> error */ - } - return 0; -} - -/* - * III_stereo: calculate real channel values for Joint-I-Stereo-mode - */ -static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT],int *scalefac, - struct gr_info_s *gr_info,int sfreq,int ms_stereo,int lsf) -{ - real (*xr)[SBLIMIT*SSLIMIT] = (real (*)[SBLIMIT*SSLIMIT] ) xr_buf; - struct bandInfoStruct *bi = &bandInfo[sfreq]; - - const real *tab1,*tab2; - -#if 1 - int tab; -/* TODO: optimize as static */ - static const real *tabs[3][2][2] = { - { { tan1_1,tan2_1 } , { tan1_2,tan2_2 } }, - { { pow1_1[0],pow2_1[0] } , { pow1_2[0],pow2_2[0] } } , - { { pow1_1[1],pow2_1[1] } , { pow1_2[1],pow2_2[1] } } - }; - - tab = lsf + (gr_info->scalefac_compress & lsf); - tab1 = tabs[tab][ms_stereo][0]; - tab2 = tabs[tab][ms_stereo][1]; -#else - if(lsf) { - int p = gr_info->scalefac_compress & 0x1; - if(ms_stereo) { - tab1 = pow1_2[p]; tab2 = pow2_2[p]; - } - else { - tab1 = pow1_1[p]; tab2 = pow2_1[p]; - } - } - else { - if(ms_stereo) { - tab1 = tan1_2; tab2 = tan2_2; - } - else { - tab1 = tan1_1; tab2 = tan2_1; - } - } -#endif - - if (gr_info->block_type == 2) { - int lwin,do_l = 0; - if( gr_info->mixed_block_flag ) - do_l = 1; - - for (lwin=0;lwin<3;lwin++) { /* process each window */ - /* get first band with zero values */ - int is_p,sb,idx,sfb = gr_info->maxband[lwin]; /* sfb is minimal 3 for mixed mode */ - if(sfb > 3) - do_l = 0; - - for(;sfb<12;sfb++) { - is_p = scalefac[sfb*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - if(is_p != 7) { - real t1,t2; - sb = bi->shortDiff[sfb]; - idx = bi->shortIdx[sfb] + lwin; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for (; sb > 0; sb--,idx+=3) { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL(v, t1); - xr[1][idx] = REAL_MUL(v, t2); - } - } - } - -#if 1 -/* in the original: copy 10 to 11 , here: copy 11 to 12 -maybe still wrong??? (copy 12 to 13?) */ - is_p = scalefac[11*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[12]; - idx = bi->shortIdx[12] + lwin; -#else - is_p = scalefac[10*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[11]; - idx = bi->shortIdx[11] + lwin; -#endif - if(is_p != 7) { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for ( ; sb > 0; sb--,idx+=3 ) { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL(v, t1); - xr[1][idx] = REAL_MUL(v, t2); - } - } - } /* end for(lwin; .. ; . ) */ - -/* also check l-part, if ALL bands in the three windows are 'empty' - * and mode = mixed_mode - */ - if (do_l) { - int sfb = gr_info->maxbandl; - int idx; - if(sfb > 21) return; /* similarity fix related to CVE-2006-1655 */ - idx = bi->longIdx[sfb]; - for ( ; sfb<8; sfb++ ) { - int sb = bi->longDiff[sfb]; - int is_p = scalefac[sfb]; /* scale: 0-15 */ - if(is_p != 7) { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for ( ; sb > 0; sb--,idx++) { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL(v, t1); - xr[1][idx] = REAL_MUL(v, t2); - } - } - else - idx += sb; - } - } - } - else { /* ((gr_info->block_type != 2)) */ - int sfb = gr_info->maxbandl; - int is_p,idx; - if(sfb > 21) return; /* tightened fix for CVE-2006-1655 */ - idx = bi->longIdx[sfb]; - for ( ; sfb<21; sfb++) { - int sb = bi->longDiff[sfb]; - is_p = scalefac[sfb]; /* scale: 0-15 */ - if(is_p != 7) { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for ( ; sb > 0; sb--,idx++) { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL(v, t1); - xr[1][idx] = REAL_MUL(v, t2); - } - } - else - idx += sb; - } - - is_p = scalefac[20]; - if(is_p != 7) { /* copy l-band 20 to l-band 21 */ - int sb; - real t1 = tab1[is_p],t2 = tab2[is_p]; - - for ( sb = bi->longDiff[21]; sb > 0; sb--,idx++ ) { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL(v, t1); - xr[1][idx] = REAL_MUL(v, t2); - } - } - } /* ... */ -} - -static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_info) { - int sblim; - - if(gr_info->block_type == 2) { - if(!gr_info->mixed_block_flag) - return; - sblim = 1; - } - else { - sblim = gr_info->maxb-1; - } - - /* 31 alias-reduction operations between each pair of sub-bands */ - /* with 8 butterflies between each pair */ - - { - int sb; - real *xr1=(real *) xr[1]; - - for(sb=sblim;sb;sb--,xr1+=10) { - int ss; - real *cs=aa_cs,*ca=aa_ca; - real *xr2 = xr1; - - for(ss=7;ss>=0;ss--) - { /* upper and lower butterfly inputs */ - register real bu = *--xr2,bd = *xr1; - *xr2 = REAL_MUL(bu, *cs) - REAL_MUL(bd, *ca); - *xr1++ = REAL_MUL(bd, *cs++) + REAL_MUL(bu, *ca++); - } - } - } -} - -/* -// This is an optimized DCT from Jeff Tsay's maplay 1.2+ package. -// Saved one multiplication by doing the 'twiddle factor' stuff -// together with the window mul. (MH) -// -// This uses Byeong Gi Lee's Fast Cosine Transform algorithm, but the -// 9 point IDCT needs to be reduced further. Unfortunately, I don't -// know how to do that, because 9 is not an even number. - Jeff. -// -////////////////////////////////////////////////////////////////// -// -// 9 Point Inverse Discrete Cosine Transform -// -// This piece of code is Copyright 1997 Mikko Tommila and is freely usable -// by anybody. The algorithm itself is of course in the public domain. -// -// Again derived heuristically from the 9-point WFTA. -// -// The algorithm is optimized (?) for speed, not for small rounding errors or -// good readability. -// -// 36 additions, 11 multiplications -// -// Again this is very likely sub-optimal. -// -// The code is optimized to use a minimum number of temporary variables, -// so it should compile quite well even on 8-register Intel x86 processors. -// This makes the code quite obfuscated and very difficult to understand. -// -// References: -// [1] S. Winograd: "On Computing the Discrete Fourier Transform", -// Mathematics of Computation, Volume 32, Number 141, January 1978, -// Pages 175-199 -*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Function: Calculation of the inverse MDCT */ -/* */ -/*------------------------------------------------------------------*/ -/* used to be static without 3dnow - does that really matter? */ -void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf) -{ -#ifdef NEW_DCT9 - real tmp[18]; -#endif - - { - register real *in = inbuf; - - in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14]; - in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11]; - in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8]; - in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5]; - in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2]; - in[2] +=in[1]; in[1] +=in[0]; - - in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9]; - in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1]; - - -#ifdef NEW_DCT9 -#if 1 - { - real t3; - { - real t0, t1, t2; - - t0 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4])); - t1 = REAL_MUL(COS6_2, in[12]); - - t3 = in[0]; - t2 = t3 - t1 - t1; - tmp[1] = tmp[7] = t2 - t0; - tmp[4] = t2 + t0 + t0; - t3 += t1; - - t2 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2])); - tmp[1] -= t2; - tmp[7] += t2; - } - { - real t0, t1, t2; - - t0 = REAL_MUL(cos9[0], (in[4] + in[8] )); - t1 = REAL_MUL(cos9[1], (in[8] - in[16])); - t2 = REAL_MUL(cos9[2], (in[4] + in[16])); - - tmp[2] = tmp[6] = t3 - t0 - t2; - tmp[0] = tmp[8] = t3 + t0 + t1; - tmp[3] = tmp[5] = t3 - t1 + t2; - } - } - { - real t1, t2, t3; - - t1 = REAL_MUL(cos18[0], (in[2] + in[10])); - t2 = REAL_MUL(cos18[1], (in[10] - in[14])); - t3 = REAL_MUL(COS6_1, in[6]); - - { - real t0 = t1 + t2 + t3; - tmp[0] += t0; - tmp[8] -= t0; - } - - t2 -= t3; - t1 -= t3; - - t3 = REAL_MUL(cos18[2], (in[2] + in[14])); - - t1 += t3; - tmp[3] += t1; - tmp[5] -= t1; - - t2 -= t3; - tmp[2] += t2; - tmp[6] -= t2; - } - -#else - { - real t0, t1, t2, t3, t4, t5, t6, t7; - - t1 = REAL_MUL(COS6_2, in[12]); - t2 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4])); - - t3 = in[0] + t1; - t4 = in[0] - t1 - t1; - t5 = t4 - t2; - tmp[4] = t4 + t2 + t2; - - t0 = REAL_MUL(cos9[0], (in[4] + in[8])); - t1 = REAL_MUL(cos9[1], (in[8] - in[16])); - - t2 = REAL_MUL(cos9[2], (in[4] + in[16])); - - t6 = t3 - t0 - t2; - t0 += t3 + t1; - t3 += t2 - t1; - - t2 = REAL_MUL(cos18[0], (in[2] + in[10])); - t4 = REAL_MUL(cos18[1], (in[10] - in[14])); - t7 = REAL_MUL(COS6_1, in[6]); - - t1 = t2 + t4 + t7; - tmp[0] = t0 + t1; - tmp[8] = t0 - t1; - t1 = REAL_MUL(cos18[2], (in[2] + in[14])); - t2 += t1 - t7; - - tmp[3] = t3 + t2; - t0 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2])); - tmp[5] = t3 - t2; - - t4 -= t1 + t7; - - tmp[1] = t5 - t0; - tmp[7] = t5 + t0; - tmp[2] = t6 + t4; - tmp[6] = t6 - t4; - } -#endif - - { - real t0, t1, t2, t3, t4, t5, t6, t7; - - t1 = REAL_MUL(COS6_2, in[13]); - t2 = REAL_MUL(COS6_2, (in[9] + in[17] - in[5])); - - t3 = in[1] + t1; - t4 = in[1] - t1 - t1; - t5 = t4 - t2; - - t0 = REAL_MUL(cos9[0], (in[5] + in[9])); - t1 = REAL_MUL(cos9[1], (in[9] - in[17])); - - tmp[13] = REAL_MUL((t4 + t2 + t2), tfcos36[17-13]); - t2 = REAL_MUL(cos9[2], (in[5] + in[17])); - - t6 = t3 - t0 - t2; - t0 += t3 + t1; - t3 += t2 - t1; - - t2 = REAL_MUL(cos18[0], (in[3] + in[11])); - t4 = REAL_MUL(cos18[1], (in[11] - in[15])); - t7 = REAL_MUL(COS6_1, in[7]); - - t1 = t2 + t4 + t7; - tmp[17] = REAL_MUL((t0 + t1), tfcos36[17-17]); - tmp[9] = REAL_MUL((t0 - t1), tfcos36[17-9]); - t1 = REAL_MUL(cos18[2], (in[3] + in[15])); - t2 += t1 - t7; - - tmp[14] = REAL_MUL((t3 + t2), tfcos36[17-14]); - t0 = REAL_MUL(COS6_1, (in[11] + in[15] - in[3])); - tmp[12] = REAL_MUL((t3 - t2), tfcos36[17-12]); - - t4 -= t1 + t7; - - tmp[16] = REAL_MUL((t5 - t0), tfcos36[17-16]); - tmp[10] = REAL_MUL((t5 + t0), tfcos36[17-10]); - tmp[15] = REAL_MUL((t6 + t4), tfcos36[17-15]); - tmp[11] = REAL_MUL((t6 - t4), tfcos36[17-11]); - } - -#define MACRO(v) { \ - real tmpval; \ - tmpval = tmp[(v)] + tmp[17-(v)]; \ - out2[9+(v)] = REAL_MUL(tmpval, w[27+(v)]); \ - out2[8-(v)] = REAL_MUL(tmpval, w[26-(v)]); \ - tmpval = tmp[(v)] - tmp[17-(v)]; \ - ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(tmpval, w[8-(v)]); \ - ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(tmpval, w[9+(v)]); } - -{ - register real *out2 = o2; - register real *w = wintab; - register real *out1 = o1; - register real *ts = tsbuf; - - MACRO(0); - MACRO(1); - MACRO(2); - MACRO(3); - MACRO(4); - MACRO(5); - MACRO(6); - MACRO(7); - MACRO(8); -} - -#else - - { - -#define MACRO0(v) { \ - real tmp; \ - out2[9+(v)] = REAL_MUL((tmp = sum0 + sum1), w[27+(v)]); \ - out2[8-(v)] = REAL_MUL(tmp, w[26-(v)]); } \ - sum0 -= sum1; \ - ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(sum0, w[8-(v)]); \ - ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(sum0, w[9+(v)]); -#define MACRO1(v) { \ - real sum0,sum1; \ - sum0 = tmp1a + tmp2a; \ - sum1 = REAL_MUL((tmp1b + tmp2b), tfcos36[(v)]); \ - MACRO0(v); } -#define MACRO2(v) { \ - real sum0,sum1; \ - sum0 = tmp2a - tmp1a; \ - sum1 = REAL_MUL((tmp2b - tmp1b), tfcos36[(v)]); \ - MACRO0(v); } - - register const real *c = COS9; - register real *out2 = o2; - register real *w = wintab; - register real *out1 = o1; - register real *ts = tsbuf; - - real ta33,ta66,tb33,tb66; - - ta33 = REAL_MUL(in[2*3+0], c[3]); - ta66 = REAL_MUL(in[2*6+0], c[6]); - tb33 = REAL_MUL(in[2*3+1], c[3]); - tb66 = REAL_MUL(in[2*6+1], c[6]); - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[1]) + ta33 + REAL_MUL(in[2*5+0], c[5]) + REAL_MUL(in[2*7+0], c[7]); - tmp1b = REAL_MUL(in[2*1+1], c[1]) + tb33 + REAL_MUL(in[2*5+1], c[5]) + REAL_MUL(in[2*7+1], c[7]); - tmp2a = REAL_MUL(in[2*2+0], c[2]) + REAL_MUL(in[2*4+0], c[4]) + ta66 + REAL_MUL(in[2*8+0], c[8]); - tmp2b = REAL_MUL(in[2*2+1], c[2]) + REAL_MUL(in[2*4+1], c[4]) + tb66 + REAL_MUL(in[2*8+1], c[8]); - - MACRO1(0); - MACRO2(8); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(( in[2*1+0] - in[2*5+0] - in[2*7+0] ), c[3]); - tmp1b = REAL_MUL(( in[2*1+1] - in[2*5+1] - in[2*7+1] ), c[3]); - tmp2a = REAL_MUL(( in[2*2+0] - in[2*4+0] - in[2*8+0] ), c[6]) - in[2*6+0] + in[2*0+0]; - tmp2b = REAL_MUL(( in[2*2+1] - in[2*4+1] - in[2*8+1] ), c[6]) - in[2*6+1] + in[2*0+1]; - - MACRO1(1); - MACRO2(7); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[5]) - ta33 - REAL_MUL(in[2*5+0], c[7]) + REAL_MUL(in[2*7+0], c[1]); - tmp1b = REAL_MUL(in[2*1+1], c[5]) - tb33 - REAL_MUL(in[2*5+1], c[7]) + REAL_MUL(in[2*7+1], c[1]); - tmp2a = - REAL_MUL(in[2*2+0], c[8]) - REAL_MUL(in[2*4+0], c[2]) + ta66 + REAL_MUL(in[2*8+0], c[4]); - tmp2b = - REAL_MUL(in[2*2+1], c[8]) - REAL_MUL(in[2*4+1], c[2]) + tb66 + REAL_MUL(in[2*8+1], c[4]); - - MACRO1(2); - MACRO2(6); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[7]) - ta33 + REAL_MUL(in[2*5+0], c[1]) - REAL_MUL(in[2*7+0], c[5]); - tmp1b = REAL_MUL(in[2*1+1], c[7]) - tb33 + REAL_MUL(in[2*5+1], c[1]) - REAL_MUL(in[2*7+1], c[5]); - tmp2a = - REAL_MUL(in[2*2+0], c[4]) + REAL_MUL(in[2*4+0], c[8]) + ta66 - REAL_MUL(in[2*8+0], c[2]); - tmp2b = - REAL_MUL(in[2*2+1], c[4]) + REAL_MUL(in[2*4+1], c[8]) + tb66 - REAL_MUL(in[2*8+1], c[2]); - - MACRO1(3); - MACRO2(5); - } - - { - real sum0,sum1; - sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0]; - sum1 = REAL_MUL((in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ), tfcos36[4]); - MACRO0(4); - } - } -#endif - - } -} - -/* - * new DCT12 - */ -static void dct12(real *in,real *rawout1,real *rawout2,register real *wi,register real *ts) -{ -#define DCT12_PART1 \ - in5 = in[5*3]; \ - in5 += (in4 = in[4*3]); \ - in4 += (in3 = in[3*3]); \ - in3 += (in2 = in[2*3]); \ - in2 += (in1 = in[1*3]); \ - in1 += (in0 = in[0*3]); \ - \ - in5 += in3; in3 += in1; \ - \ - in2 = REAL_MUL(in2, COS6_1); \ - in3 = REAL_MUL(in3, COS6_1); \ - -#define DCT12_PART2 \ - in0 += REAL_MUL(in4, COS6_2); \ - \ - in4 = in0 + in2; \ - in0 -= in2; \ - \ - in1 += REAL_MUL(in5, COS6_2); \ - \ - in5 = REAL_MUL((in1 + in3), tfcos12[0]); \ - in1 = REAL_MUL((in1 - in3), tfcos12[2]); \ - \ - in3 = in4 + in5; \ - in4 -= in5; \ - \ - in2 = in0 + in1; \ - in0 -= in1; - - - { - real in0,in1,in2,in3,in4,in5; - register real *out1 = rawout1; - ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2]; - ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5]; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - ts[(17-1)*SBLIMIT] = out1[17-1] + REAL_MUL(tmp0, wi[11-1]); - ts[(12+1)*SBLIMIT] = out1[12+1] + REAL_MUL(tmp0, wi[6+1]); - ts[(6 +1)*SBLIMIT] = out1[6 +1] + REAL_MUL(tmp1, wi[1]); - ts[(11-1)*SBLIMIT] = out1[11-1] + REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - ts[(17-0)*SBLIMIT] = out1[17-0] + REAL_MUL(in2, wi[11-0]); - ts[(12+0)*SBLIMIT] = out1[12+0] + REAL_MUL(in2, wi[6+0]); - ts[(12+2)*SBLIMIT] = out1[12+2] + REAL_MUL(in3, wi[6+2]); - ts[(17-2)*SBLIMIT] = out1[17-2] + REAL_MUL(in3, wi[11-2]); - - ts[(6 +0)*SBLIMIT] = out1[6+0] + REAL_MUL(in0, wi[0]); - ts[(11-0)*SBLIMIT] = out1[11-0] + REAL_MUL(in0, wi[5-0]); - ts[(6 +2)*SBLIMIT] = out1[6+2] + REAL_MUL(in4, wi[2]); - ts[(11-2)*SBLIMIT] = out1[11-2] + REAL_MUL(in4, wi[5-2]); - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - register real *out2 = rawout2; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[5-1] = REAL_MUL(tmp0, wi[11-1]); - out2[0+1] = REAL_MUL(tmp0, wi[6+1]); - ts[(12+1)*SBLIMIT] += REAL_MUL(tmp1, wi[1]); - ts[(17-1)*SBLIMIT] += REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - out2[5-0] = REAL_MUL(in2, wi[11-0]); - out2[0+0] = REAL_MUL(in2, wi[6+0]); - out2[0+2] = REAL_MUL(in3, wi[6+2]); - out2[5-2] = REAL_MUL(in3, wi[11-2]); - - ts[(12+0)*SBLIMIT] += REAL_MUL(in0, wi[0]); - ts[(17-0)*SBLIMIT] += REAL_MUL(in0, wi[5-0]); - ts[(12+2)*SBLIMIT] += REAL_MUL(in4, wi[2]); - ts[(17-2)*SBLIMIT] += REAL_MUL(in4, wi[5-2]); - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - register real *out2 = rawout2; - out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[11-1] = REAL_MUL(tmp0, wi[11-1]); - out2[6 +1] = REAL_MUL(tmp0, wi[6+1]); - out2[0+1] += REAL_MUL(tmp1, wi[1]); - out2[5-1] += REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - out2[11-0] = REAL_MUL(in2, wi[11-0]); - out2[6 +0] = REAL_MUL(in2, wi[6+0]); - out2[6 +2] = REAL_MUL(in3, wi[6+2]); - out2[11-2] = REAL_MUL(in3, wi[11-2]); - - out2[0+0] += REAL_MUL(in0, wi[0]); - out2[5-0] += REAL_MUL(in0, wi[5-0]); - out2[0+2] += REAL_MUL(in4, wi[2]); - out2[5-2] += REAL_MUL(in4, wi[5-2]); - } -} - -/* - * III_hybrid - */ -static void III_hybrid(real fsIn[SBLIMIT][SSLIMIT], real tsOut[SSLIMIT][SBLIMIT], int ch,struct gr_info_s *gr_info) -{ - static real block[2][2][SBLIMIT*SSLIMIT] = { { { 0, } } }; - static int blc[2]={0,0}; - - real *tspnt = (real *) tsOut; - real *rawout1,*rawout2; - int bt,sb = 0; - - { - int b = blc[ch]; - rawout1=block[b][ch]; - b=-b+1; - rawout2=block[b][ch]; - blc[ch] = b; - } - - if(gr_info->mixed_block_flag) { - sb = 2; - opt_dct36(fsIn[0],rawout1,rawout2,win[0],tspnt); - opt_dct36(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1); - rawout1 += 36; rawout2 += 36; tspnt += 2; - } - - bt = gr_info->block_type; - if(bt == 2) { - for (; sbmaxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { - dct12(fsIn[sb] ,rawout1 ,rawout2 ,win[2] ,tspnt); - dct12(fsIn[sb+1],rawout1+18,rawout2+18,win1[2],tspnt+1); - } - } - else { - for (; sbmaxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { - opt_dct36(fsIn[sb],rawout1,rawout2,win[bt],tspnt); - opt_dct36(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1); - } - } - - for(;sbstereo; - int single = fr->single; - int ms_stereo,i_stereo; - int sfreq = fr->sampling_frequency; - int stereo1,granules; - - if(stereo == 1) { /* stream is mono */ - stereo1 = 1; - single = 0; - } - else if(single >= 0) /* stream is stereo, but force to mono */ - stereo1 = 1; - else - stereo1 = 2; - - if(fr->mode == MPG_MD_JOINT_STEREO) { - ms_stereo = (fr->mode_ext & 0x2)>>1; - i_stereo = fr->mode_ext & 0x1; - } - else - ms_stereo = i_stereo = 0; - - if(fr->lsf) { - granules = 1; -#if 0 - III_get_side_info_2(&sideinfo,stereo,ms_stereo,sfreq,single); -#endif - } - else { - granules = 2; - } - /* quick hack to keep the music playing */ - /* after having seen this nasty test file... */ - if(III_get_side_info(&sideinfo,stereo,ms_stereo,sfreq,single,fr->lsf)) - { - error("bad frame - unable to get valid sideinfo"); - return clip; - } - - set_pointer(sideinfo.main_data_begin); - - for (gr=0;grlsf) - part2bits = III_get_scale_factors_2(scalefacs[0],gr_info,0); - else - part2bits = III_get_scale_factors_1(scalefacs[0],gr_info,0,gr); - - if(III_dequantize_sample(hybridIn[0], scalefacs[0],gr_info,sfreq,part2bits)) - return clip; - } - - if(stereo == 2) { - struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]); - long part2bits; - if(fr->lsf) - part2bits = III_get_scale_factors_2(scalefacs[1],gr_info,i_stereo); - else - part2bits = III_get_scale_factors_1(scalefacs[1],gr_info,1,gr); - - if(III_dequantize_sample(hybridIn[1],scalefacs[1],gr_info,sfreq,part2bits)) - return clip; - - if(ms_stereo) { - int i; - int maxb = sideinfo.ch[0].gr[gr].maxb; - if(sideinfo.ch[1].gr[gr].maxb > maxb) - maxb = sideinfo.ch[1].gr[gr].maxb; - for(i=0;ilsf); - - if(ms_stereo || i_stereo || (single == 3) ) { - if(gr_info->maxb > sideinfo.ch[0].gr[gr].maxb) - sideinfo.ch[0].gr[gr].maxb = gr_info->maxb; - else - gr_info->maxb = sideinfo.ch[0].gr[gr].maxb; - } - - switch(single) { - case 3: - { - register int i; - register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; - for(i=0;imaxb;i++,in0++) - *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ - } - break; - case 1: - { - register int i; - register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; - for(i=0;imaxb;i++) - *in0++ = *in1++; - } - break; - } - } - - for(ch=0;chsynth != opt_synth_1to1 || single >= 0) { -#endif - for(ss=0;ss= 0) { - clip += (fr->synth_mono)(hybridOut[0][ss],pcm_sample,&pcm_point); - } - else { - int p1 = pcm_point; - clip += (fr->synth)(hybridOut[0][ss],0,pcm_sample,&p1); - clip += (fr->synth)(hybridOut[1][ss],1,pcm_sample,&pcm_point); - } - -#ifdef VARMODESUPPORT - if (playlimit < 128) { - pcm_point -= playlimit >> 1; - playlimit = 0; - } - else - playlimit -= 128; -#endif - if(pcm_point >= audiobufsize) flush_output(outmode,ao); - } -#ifdef OPT_I486 - } else { - /* Only stereo, 16 bits benefit from the 486 optimization. */ - ss=0; - while (ss < SSLIMIT) { - int n; - n=(audiobufsize - pcm_point) / (2*2*32); - if (n > (SSLIMIT-ss)) n=SSLIMIT-ss; - - synth_1to1_486(hybridOut[0][ss],0,pcm_sample+pcm_point,n); - synth_1to1_486(hybridOut[1][ss],1,pcm_sample+pcm_point,n); - ss+=n; - pcm_point+=(2*2*32)*n; - - if(pcm_point >= audiobufsize) flush_output(outmode,ao); - } - } -#endif - } - - return clip; -} diff --git a/src/libmpg123/dct64_altivec.c b/src/libmpg123/dct64_altivec.c index f41e8507..ea6dc030 100644 --- a/src/libmpg123/dct64_altivec.c +++ b/src/libmpg123/dct64_altivec.c @@ -26,7 +26,7 @@ void dct64_altivec(real *out0,real *out1,real *samples) { - real __attribute__ ((aligned (16))) bufs[64]; + ALIGNED(16) real bufs[64]; { register real *b1,*costab; diff --git a/src/libmpg123/decode_altivec.c b/src/libmpg123/decode_altivec.c index 1e31700c..1e911047 100644 --- a/src/libmpg123/decode_altivec.c +++ b/src/libmpg123/decode_altivec.c @@ -133,6 +133,10 @@ int synth_1to1_mono2stereo_altivec(real *bandPtr, mpg123_handle *fr) int synth_1to1_altivec(real *bandPtr, int channel, mpg123_handle *fr, int final) { +<<<<<<< .working +======= + static ALIGNED(16) real buffs[4][4][0x110]; +>>>>>>> .merge-right.r998 static const int step = 2; short *samples = (short *) (fr->buffer.data + fr->buffer.fill); @@ -168,7 +172,7 @@ int synth_1to1_altivec(real *bandPtr, int channel, mpg123_handle *fr, int final) register int j; real *window = decwin + 16 - bo1; - int __attribute__ ((aligned (16))) clip_tmp[4]; + ALIGNED(16) int clip_tmp[4]; vector float v1,v2,v3,v4,v5,v6,v7,v8,v9; vector unsigned char vperm1,vperm2,vperm3,vperm4,vperm5; vector float vsum,vsum2,vsum3,vsum4,vmin,vmax; diff --git a/src/libmpg123/layer1.c b/src/libmpg123/layer1.c index 39d51884..7105b21d 100644 --- a/src/libmpg123/layer1.c +++ b/src/libmpg123/layer1.c @@ -122,7 +122,7 @@ int do_layer1(mpg123_handle *fr) int i,stereo = fr->stereo; unsigned int balloc[2*SBLIMIT]; unsigned int scale_index[2][SBLIMIT]; - real aligned(16) fraction[2][SBLIMIT]; + ALIGNED(16) real fraction[2][SBLIMIT]; int single = fr->single; fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; diff --git a/src/libmpg123/layer2.c b/src/libmpg123/layer2.c index d22120f1..9dc3d464 100644 --- a/src/libmpg123/layer2.c +++ b/src/libmpg123/layer2.c @@ -293,7 +293,7 @@ int do_layer2(mpg123_handle *fr) int clip=0; int i,j; int stereo = fr->stereo; - real aligned(16) fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ + ALIGNED(16) real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ unsigned int bit_alloc[64]; int scale[192]; int single = fr->single; diff --git a/src/libmpg123/layer3.c b/src/libmpg123/layer3.c index d59f08d7..c0e41bf6 100644 --- a/src/libmpg123/layer3.c +++ b/src/libmpg123/layer3.c @@ -1749,8 +1749,8 @@ int do_layer3(mpg123_handle *fr) set_pointer(fr,sideinfo.main_data_begin); for (gr=0;gr #include #include +#include #ifndef WIN32 #include #include #endif -/* want to suport large files in future */ + +/* Types, types, types. */ #ifdef HAVE_SYS_TYPES_H - #include +#include #endif -#ifndef off_t - #define off_t long +#ifdef HAVE_INTTYPES_H +#include +#endif +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t)-1) +#endif +#ifndef ULONG_MAX +#define ULONG_MAX ((unsigned long)-1) #endif -#include typedef unsigned char byte; diff --git a/src/libmpg123/optimize.h b/src/libmpg123/optimize.h index 8c8b982c..b1d40542 100644 --- a/src/libmpg123/optimize.h +++ b/src/libmpg123/optimize.h @@ -22,9 +22,9 @@ /* this is included in mpg123.h, which includes config.h */ #ifdef CCALIGN -#define aligned(a) __attribute__((aligned(a))) +#define ALIGNED(a) __attribute__((aligned(a))) #else -#define aligned(a) +#define ALIGNED(a) #endif /* the optimizations only cover the synth1to1 mode and the dct36 function */ diff --git a/src/libmpg123/parse.c b/src/libmpg123/parse.c index 7742d956..e608bfae 100644 --- a/src/libmpg123/parse.c +++ b/src/libmpg123/parse.c @@ -6,32 +6,18 @@ initially written by Michael Hipp & Thomas Orgis */ -#include -#include -#include +#include "mpg123lib_intern.h" -#include #include #include -#include -#ifdef HAVE_INTTYPES_H -#include -#endif - #include -#include "mpg123lib_intern.h" #include "getbits.h" #ifdef WIN32 #include #endif -/* fr is a mpg123_handle* by convention here... */ -#define NOQUIET (!(fr->p.flags & MPG123_QUIET)) -#define VERBOSE (NOQUIET && fr->p.verbose) -#define VERBOSE2 (NOQUIET && fr->p.verbose > 1) - #define bsbufid(fr) (fr)->bsbuf==(fr)->bsspace[0] ? 0 : ((fr)->bsbuf==fr->bsspace[1] ? 1 : ( (fr)->bsbuf==(fr)->bsspace[0]+512 ? 2 : ((fr)->bsbuf==fr->bsspace[1]+512 ? 3 : -1) ) ) /* @@ -242,7 +228,7 @@ static int check_lame_tag(mpg123_handle *fr) { /* In theory, one should use that value for skipping... - When I know the exact number of samples I could simply count in audio_flush, + When I know the exact number of samples I could simply count in flush_output, but that's problematic with seeking and such. I still miss the real solution for detecting the end. */ @@ -594,7 +580,8 @@ init_resync: } else if (give_note) { - fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset 0x%lx.\n", newhead,fr->rd->tell(fr)-4); + fprintf(stderr,"Note: Illegal Audio-MPEG-Header 0x%08lx at offset 0x%lx.\n", + newhead, (long unsigned int)fr->rd->tell(fr)-4); } if(give_note && (newhead & 0xffffff00) == ('b'<<24)+('m'<<16)+('p'<<8)) fprintf(stderr,"Note: Could be a BMP album art.\n"); diff --git a/src/libmpg123/reader.h b/src/libmpg123/reader.h index 66e8894a..c1d10ba5 100644 --- a/src/libmpg123/reader.h +++ b/src/libmpg123/reader.h @@ -17,6 +17,8 @@ struct reader_data off_t filepos; /* position in file or position in buffer chain */ int filept; int flags; + long timeout_sec; + ssize_t (*fdread)(mpg123_handle *, unsigned char *, size_t); /* variables specific to feed reader */ off_t firstpos; /* the point of return on non-forget() */ struct buffy *buf; /* first in buffer chain */ @@ -54,6 +56,7 @@ off_t feed_set_pos(mpg123_handle *fr, off_t pos); /* Set position (inside availa #define READER_SEEKABLE 0x4 #define READER_BUFFERED 0x8 #define READER_MICROSEEK 0x10 +#define READER_NONBLOCK 0x20 #define READER_STREAM 0 #define READER_ICY_STREAM 1 diff --git a/src/libmpg123/readers.c b/src/libmpg123/readers.c index ba8d9e02..8f1d61dd 100644 --- a/src/libmpg123/readers.c +++ b/src/libmpg123/readers.c @@ -10,12 +10,39 @@ #include #include +#include #include #include "mpg123lib_intern.h" static off_t get_fileinfo(mpg123_handle *); +/* A normal read and a read with timeout. */ +static ssize_t plain_read(mpg123_handle *fr, unsigned char *buf, size_t count){ return read(fr->rdat.filept, buf, count); } +#ifndef WIN32 + +/* Wait for data becoming available, allowing soft-broken network connection to die + This is needed for Shoutcast servers that have forgotten about us while connection was temporarily down. */ +static ssize_t timeout_read(mpg123_handle *fr, unsigned char *buf, size_t count) +{ + struct timeval tv; + ssize_t ret = 0; + fd_set fds; + tv.tv_sec = rds->timeout_sec; + tv.tv_usec = 0; + FD_ZERO(&fds); + FD_SET(fr->rdat.filept, &fds); + ret = select(fr->rdat.filept+1, &fds, NULL, NULL, &tv); + if(ret > 0) ret = read(fr->rdat.filept, buf, count); + else + { + ret=-1; /* no activity is the error */ + if(NOQUIET) error("stream timed out"); + } + return ret; +} +#endif + /* stream based operation with icy meta data*/ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count) { @@ -40,7 +67,7 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count /* we are near icy-metaint boundary, read up to the boundary */ cut_pos = fr->icy.next - fr->rdat.filepos; - ret = read(fr->rdat.filept,buf,cut_pos); + ret = fr->rdat.fdread(fr,buf,cut_pos); if(ret < 0) return READER_ERROR; fr->rdat.filepos += ret; @@ -49,7 +76,7 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count /* now off to read icy data */ /* one byte icy-meta size (must be multiplied by 16 to get icy-meta length) */ - ret = read(fr->rdat.filept,&temp_buff,1); + ret = fr->rdat.fdread(fr,&temp_buff,1); if(ret < 0) return READER_ERROR; if(ret == 0) break; @@ -63,7 +90,7 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count meta_buff = (char*) malloc(meta_size+1); if(meta_buff != NULL) { - ret = read(fr->rdat.filept,meta_buff,meta_size); + ret = fr->rdat.fdread(fr,meta_buff,meta_size); meta_buff[meta_size] = 0; /* string paranoia */ if(ret < 0) return READER_ERROR; @@ -83,7 +110,7 @@ static ssize_t icy_fullread(mpg123_handle *fr, unsigned char *buf, ssize_t count fr->icy.next = fr->rdat.filepos+fr->icy.interval; } - ret = read(fr->rdat.filept,buf+cnt,count-cnt); + ret = fr->rdat.fdread(fr,buf+cnt,count-cnt); if(ret < 0) return READER_ERROR; if(ret == 0) break; @@ -106,7 +133,7 @@ static ssize_t plain_fullread(mpg123_handle *fr,unsigned char *buf, ssize_t coun if((fr->rdat.flags & READER_ID3TAG) && fr->rdat.filepos + count > fr->rdat.filelen) count = fr->rdat.filelen - fr->rdat.filepos; while(cnt < count) { - ret = read(fr->rdat.filept,buf+cnt,count-cnt); + ret = fr->rdat.fdread(fr,buf+cnt,count-cnt); if(ret < 0) return READER_ERROR; if(ret == 0) break; fr->rdat.filepos += ret; @@ -126,6 +153,18 @@ static off_t stream_lseek(struct reader_data *rds, off_t pos, int whence) static int default_init(mpg123_handle *fr) { +#ifndef WIN32 + if(param.timeout > 0) + { + fcntl(fr->rdat.filept, F_SETFL, O_NONBLOCK); + fr->rdat.fdread = timeout_read; + fr->rdat.timeout_sec = param.timeout; + fr->rdat.flags |= READER_NONBLOCK; + } + else +#endif + fr->rdat.fdread = plain_read; + fr->rdat.filelen = get_fileinfo(fr); fr->rdat.filepos = 0; if(fr->rdat.filelen >= 0) diff --git a/src/libmpg123/tabinit.c b/src/libmpg123/tabinit.c index f11ce3a8..b65b910b 100644 --- a/src/libmpg123/tabinit.c +++ b/src/libmpg123/tabinit.c @@ -6,8 +6,6 @@ initially written by Michael Hipp */ -#include - #include "mpg123lib_intern.h" #ifdef OPT_MMXORSSE @@ -28,11 +26,11 @@ const int aligned(32) costab_mmxsse[] = #ifndef OPT_MMX_ONLY /* that altivec alignment part here should not hurt generic code, I hope */ #ifdef OPT_ALTIVEC -static real __attribute__ ((aligned (16))) cos64[16]; -static real __attribute__ ((aligned (16))) cos32[8]; -static real __attribute__ ((aligned (16))) cos16[4]; -static real __attribute__ ((aligned (16))) cos8[2]; -static real __attribute__ ((aligned (16))) cos4[1]; +static ALIGNED(16) real cos64[16]; +static ALIGNED(16) real cos32[8]; +static ALIGNED(16) real cos16[4]; +static ALIGNED(16) real cos8[2]; +static ALIGNED(16) real cos4[1]; #else static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1]; #endif diff --git a/src/mangle.h b/src/mangle.h deleted file mode 100644 index 07c4b0e9..00000000 --- a/src/mangle.h +++ /dev/null @@ -1,57 +0,0 @@ -/* mangle.h - This file has some CPP macros to deal with different symbol - * mangling across binary formats. - * (c)2002 by Felix Buenemann - * File licensed under the GPL, see http://www.fsf.org/ for more info. - */ - -/* ThOr: added the plain ASM_NAME - Also this is getting more generic with the align stuff. */ - -#ifndef __MANGLE_H -#define __MANGLE_H - -#include "config.h" - -#ifdef CCALIGN -#define MOVUAPS movaps -#else -#define MOVUAPS movups -#endif - -#ifdef ASMALIGN_EXP -#define ALIGN4 .align 2 -#define ALIGN8 .align 3 -#define ALIGN16 .align 4 -#define ALIGN32 .align 5 -#else -#define ALIGN4 .align 4 -#define ALIGN8 .align 8 -#define ALIGN16 .align 16 -#define ALIGN32 .align 32 -#endif - -/* Feel free to add more to the list, eg. a.out IMO */ -#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__OS2__) || \ - (defined(__OpenBSD__) && !defined(__ELF__)) || defined(__APPLE__) -#define MANGLE(a) "_" #a -#define ASM_NAME(a) _##a -#define ASM_VALUE(a) $_##a -#else -#define MANGLE(a) #a -#define ASM_NAME(a) a -#define ASM_VALUE(a) "$" #a -#endif - -#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__) -#define COMM(a,b,c) .comm a,b -#else -#define COMM(a,b,c) .comm a,b,c -#endif -/* more hacks for macosx; no .bss ... */ -#ifdef __APPLE__ -#define BSS .data -#else -#define BSS .bss -#endif -#endif /* !__MANGLE_H */ - diff --git a/src/module.c b/src/module.c index ce8c87db..276f056b 100644 --- a/src/module.c +++ b/src/module.c @@ -11,7 +11,7 @@ #include #include -#include "mpg123.h" +#include "mpg123app.h" #ifndef HAVE_LTDL #error Cannot build without LTDL library support diff --git a/src/mpg123.c b/src/mpg123.c index f3b98ba6..ab2c8545 100644 --- a/src/mpg123.c +++ b/src/mpg123.c @@ -7,6 +7,7 @@ */ #define ME "main" +#include "mpg123app.h" #include "mpg123.h" #ifdef HAVE_SYS_WAIT_H @@ -37,18 +38,12 @@ #include "getlopt.h" #include "buffer.h" #include "term.h" -#ifdef GAPLESS -#include "layer3.h" -#endif #include "playlist.h" #include "httpget.h" -#include "id3.h" -#include "icy.h" - -#ifdef OPT_MPLAYER -/* disappear! */ -func_dct64 mpl_dct64; -#endif +#include "id3print.h" +#include "getbits.h" +#include "httpget.h" +#include "getcpuflags.h" static void usage(int err); static void want_usage(char* arg); @@ -57,6 +52,28 @@ static void want_long_usage(char* arg); static void print_title(FILE* o); static void give_version(char* arg); +struct parameter +{ +#ifndef WIN32 + long timeout; /* timeout for reading in seconds */ +#endif + long loop; /* looping of tracks */ + /* parameters for mpg123 handle */ + int down_sample; + long rva; /* (which) rva to do: 0: nothing, 1: radio/mix/track 2: album/audiophile */ + long halfspeed; + long doublespeed; + long start_frame; /* frame offset to begin with */ + long frame_number; /* number of frames to decode */ +#ifdef FLOATOUT + double outscale; +#else + long outscale; +#endif + int flags; + long force_rate; + int talk_icy; +}; struct parameter param = { FALSE , /* aggressiv */ FALSE , /* shuffle */ @@ -66,7 +83,6 @@ struct parameter param = { FALSE , /* silent operation */ FALSE , /* xterm title on/off */ 0 , /* second level buffer size */ - TRUE , /* resync after stream error */ 0 , /* verbose level */ DEFAULT_OUTPUT_MODULE, /* output module */ NULL, /* output device */ @@ -74,78 +90,54 @@ struct parameter param = { #ifdef HAVE_TERMIOS FALSE , /* term control */ #endif - 0 , /* force mono */ - 0 , /* force stereo */ - 0 , /* force 8bit */ - 0 , /* force rate */ - 0 , /* down sample */ FALSE , /* checkrange */ - 0 , /* doublespeed */ - 0 , /* halfspeed */ 0 , /* force_reopen, always (re)opens audio device for next song */ - #ifdef OPT_3DNOW - 0 , /* autodetect from CPUFLAGS */ - #endif /* test_cpu flag is valid for multi and 3dnow.. even if 3dnow is built alone; ensure it appears only once */ - #ifdef OPT_MULTI FALSE , /* normal operation */ - #else - #ifdef OPT_3DNOW - FALSE , /* normal operation */ - #endif - #endif FALSE, /* try to run process in 'realtime mode' */ { 0,}, /* wav,cdr,au Filename */ -#ifdef GAPLESS - 0, /* gapless off per default - yet */ -#endif 0, /* default is to play all titles in playlist */ - 0, /* do not use rva per default */ NULL, /* no playlist per default */ 0 /* condensed id3 per default */ - #ifdef OPT_MULTI - ,NULL /* choose optimization */ - ,0 - #endif + ,0 /* list_cpu */ + ,NULL /* cpu */ #ifdef FIFO ,NULL #endif #ifndef WIN32 - ,0 + ,0 /* timeout */ #endif - ,1 + ,1 /* loop */ + /* Parameters for mpg123 handle, defaults are queried from library! */ + ,0 /* down_sample */ + ,0 /* rva */ + ,0 /* halfspeed */ + ,0 /* doublespeed */ + ,0 /* start_frame */ + ,-1 /* frame_number */ + ,0 /* outscale */ + ,0 /* flags */ + ,0 /* force_rate */ + ,1 /* ICY */ }; +mpg123_handle *mh = NULL; +off_t framenum; +off_t frames_left; +audio_output_t *ao = NULL; +txfermem *buffermem = NULL; char *prgName = NULL; char *equalfile = NULL; /* ThOr: pointers are not TRUE or FALSE */ -int have_eq_settings = FALSE; -scale_t outscale = MAXOUTBURST; -long numframes = -1; -long startFrame= 0; +struct httpdata htd; + int buffer_fd[2]; int buffer_pid; +size_t bufferblock = 0; static int intflag = FALSE; int OutputDescriptor; -/* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */ -void *safe_realloc(void *ptr, size_t size) -{ - if(ptr == NULL) return malloc(size); - else return realloc(ptr, size); -} - -#ifndef HAVE_STRERROR -const char *strerror(int errnum) -{ - extern int sys_nerr; - extern char *sys_errlist[]; - - return (errnum < sys_nerr) ? sys_errlist[errnum] : ""; -} -#endif - #if !defined(WIN32) && !defined(GENERIC) static void catch_interrupt(void) { @@ -165,17 +157,13 @@ void safe_exit(int code) if(param.term_ctrl) term_restore(); #endif + if(mh != NULL) mpg123_delete(mh); + mpg123_exit(); + httpdata_reset(&htd); exit(code); } -audio_output_t *ao = NULL; -audio_output_t pre_ao; -static struct frame fr; -txfermem *buffermem = NULL; - - -void set_synth_functions(struct frame *fr); - +/* returns 1 if reset_audio needed instead */ static void set_output_module( char *arg ) { int i; @@ -189,7 +177,6 @@ static void set_output_module( char *arg ) break; } } - /* Set the output module */ param.output_module = arg; debug1("Setting output module: %s", param.output_module ); @@ -232,7 +219,6 @@ static void set_output(char *arg) else set_output_module(arg); } - static void set_verbose (char *arg) { param.verbose++; @@ -245,18 +231,18 @@ static void set_out_wav(char *arg) param.filename[255] = 0; } -static void set_out_cdr(char *arg) +void set_out_cdr(char *arg) { param.outmode = DECODE_CDR; strncpy(param.filename,arg,255); param.filename[255] = 0; } -static void set_out_au(char *arg) +void set_out_au(char *arg) { - param.outmode = DECODE_AU; - strncpy(param.filename,arg,255); - param.filename[255] = 0; + param.outmode = DECODE_AU; + strncpy(param.filename,arg,255); + param.filename[255] = 0; } static void set_out_file(char *arg) @@ -294,22 +280,34 @@ static void set_out_stdout1(char *arg) #endif } -void realtime_not_compiled(char *arg) +#ifndef HAVE_SCHED_SETSCHEDULER +static void realtime_not_compiled(char *arg) { fprintf(stderr,"Option '-T / --realtime' not compiled into this binary.\n"); } +#endif - +static int frameflag; /* ugly, but that's the way without hacking getlopt */ +static void set_frameflag(char *arg) +{ + /* Only one mono flag at a time! */ + if(frameflag & MPG123_FORCE_MONO) param.flags &= ~MPG123_FORCE_MONO; + param.flags |= frameflag; +} /* Please note: GLO_NUM expects point to LONG! */ /* ThOr: - * Yeah, and despite that numerous addresses to int variables were passed. + * Yeah, and despite that numerous addresses to int variables were +passed. * That's not good on my Alpha machine with int=32bit and long=64bit! * Introduced GLO_INT and GLO_LONG as different bits to make that clear. * GLO_NUM no longer exists. */ +#ifdef OPT_3DNOW +static int dnow = 0; /* helper for mapping the old 3dnow options */ +#endif topt opts[] = { - {'k', "skip", GLO_ARG | GLO_LONG, 0, &startFrame, 0}, + {'k', "skip", GLO_ARG | GLO_LONG, 0, ¶m.start_frame, 0}, {'2', "2to1", GLO_INT, 0, ¶m.down_sample, 1}, {'4', "4to1", GLO_INT, 0, ¶m.down_sample, 2}, {'t', "test", GLO_INT, 0, ¶m.outmode, DECODE_TEST}, @@ -319,19 +317,19 @@ topt opts[] = { {'c', "check", GLO_INT, 0, ¶m.checkrange, TRUE}, {'v', "verbose", 0, set_verbose, 0, 0}, {'q', "quiet", GLO_INT, 0, ¶m.quiet, TRUE}, - {'y', "resync", GLO_INT, 0, ¶m.tryresync, FALSE}, - {'0', "single0", GLO_INT, 0, ¶m.force_mono, 0}, - {0, "left", GLO_INT, 0, ¶m.force_mono, 0}, - {'1', "single1", GLO_INT, 0, ¶m.force_mono, 1}, - {0, "right", GLO_INT, 0, ¶m.force_mono, 1}, - {'m', "singlemix", GLO_INT, 0, ¶m.force_mono, 3}, - {0, "mix", GLO_INT, 0, ¶m.force_mono, 3}, - {0, "mono", GLO_INT, 0, ¶m.force_mono, 3}, - {0, "stereo", GLO_INT, 0, ¶m.force_stereo, 1}, + {'y', "resync", GLO_INT, set_frameflag, &frameflag, MPG123_NO_RESYNC}, + {'0', "single0", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_LEFT}, + {0, "left", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_LEFT}, + {'1', "single1", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_RIGHT}, + {0, "right", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_RIGHT}, + {'m', "singlemix", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_MIX}, + {0, "mix", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_MIX}, + {0, "mono", GLO_INT, set_frameflag, &frameflag, MPG123_MONO_MIX}, + {0, "stereo", GLO_INT, set_frameflag, &frameflag, MPG123_FORCE_STEREO}, {0, "reopen", GLO_INT, 0, ¶m.force_reopen, 1}, /* {'g', "gain", GLO_ARG | GLO_LONG, 0, &ao.gain, 0}, FIXME */ {'r', "rate", GLO_ARG | GLO_LONG, 0, ¶m.force_rate, 0}, - {0, "8bit", GLO_INT, 0, ¶m.force_8bit, 1}, + {0, "8bit", GLO_INT, set_frameflag, &frameflag, MPG123_FORCE_8BIT}, {0, "headphones", 0, set_output_h, 0,0}, {0, "speaker", 0, set_output_s, 0,0}, {0, "lineout", 0, set_output_l, 0,0}, @@ -339,20 +337,20 @@ topt opts[] = { {0, "list-modules",0, list_modules, NULL, 0}, {'a', "audiodevice", GLO_ARG | GLO_CHAR, 0, ¶m.output_device, 0}, #ifdef FLOATOUT - {'f', "scale", GLO_ARG | GLO_DOUBLE, 0, &outscale, 0}, + {'f', "scale", GLO_ARG | GLO_DOUBLE, 0, ¶m.outscale, 0}, #else - {'f', "scale", GLO_ARG | GLO_LONG, 0, &outscale, 0}, + {'f', "scale", GLO_ARG | GLO_LONG, 0, ¶m.outscale, 0}, #endif - {'n', "frames", GLO_ARG | GLO_LONG, 0, &numframes, 0}, + {'n', "frames", GLO_ARG | GLO_LONG, 0, ¶m.frame_number, 0}, #ifdef HAVE_TERMIOS {'C', "control", GLO_INT, 0, ¶m.term_ctrl, TRUE}, #endif {'b', "buffer", GLO_ARG | GLO_LONG, 0, ¶m.usebuffer, 0}, {'R', "remote", GLO_INT, 0, ¶m.remote, TRUE}, {0, "remote-err", GLO_INT, 0, ¶m.remote_err, TRUE}, - {'d', "doublespeed", GLO_ARG | GLO_LONG, 0, ¶m.doublespeed,0}, - {'h', "halfspeed", GLO_ARG | GLO_LONG, 0, ¶m.halfspeed, 0}, - {'p', "proxy", GLO_ARG | GLO_CHAR, 0, &proxyurl, 0}, + {'d', "doublespeed", GLO_ARG | GLO_LONG, 0, ¶m.doublespeed, 0}, + {'h', "halfspeed", GLO_ARG | GLO_LONG, 0, ¶m.halfspeed, 0}, + {'p', "proxy", GLO_ARG | GLO_CHAR, 0, &htd.proxyurl, 0}, {'@', "list", GLO_ARG | GLO_CHAR, 0, ¶m.listname, 0}, /* 'z' comes from the the german word 'zufall' (eng: random) */ {'z', "shuffle", GLO_INT, 0, ¶m.shuffle, 1}, @@ -362,8 +360,10 @@ topt opts[] = { {0, "aggressive", GLO_INT, 0, ¶m.aggressive, 2}, #endif #ifdef OPT_3DNOW - {0, "force-3dnow", GLO_INT, 0, ¶m.stat_3dnow, 1}, - {0, "no-3dnow", GLO_INT, 0, ¶m.stat_3dnow, 2}, +#define SET_3DNOW 1 +#define SET_I586 2 + {0, "force-3dnow", GLO_CHAR, 0, &dnow, SET_3DNOW}, + {0, "no-3dnow", GLO_CHAR, 0, &dnow, SET_I586}, {0, "test-3dnow", GLO_INT, 0, ¶m.test_cpu, TRUE}, #endif #ifdef OPT_MULTI @@ -385,7 +385,7 @@ topt opts[] = { {0, "cdr", GLO_ARG | GLO_CHAR, set_out_cdr, 0, 0 }, {0, "au", GLO_ARG | GLO_CHAR, set_out_au, 0, 0 }, #ifdef GAPLESS - {0, "gapless", GLO_INT, 0, ¶m.gapless, 1}, + {0, "gapless", GLO_INT, set_frameflag, &frameflag, MPG123_GAPLESS}, #endif {'?', "help", 0, want_usage, 0, 0 }, {0 , "longhelp" , 0, want_long_usage, 0, 0 }, @@ -395,6 +395,7 @@ topt opts[] = { {0, "rva-radio", GLO_INT, 0, ¶m.rva, 1 }, {0, "rva-album", GLO_INT, 0, ¶m.rva, 2 }, {0, "rva-audiophile", GLO_INT, 0, ¶m.rva, 2 }, + {0, "no-icy-meta", GLO_INT, 0, ¶m.talk_icy, 0 }, {0, "long-tag", GLO_INT, 0, ¶m.long_id3, 1 }, #ifdef FIFO {0, "fifo", GLO_ARG | GLO_CHAR, 0, ¶m.fifo, 0}, @@ -449,251 +450,173 @@ static void reset_audio(void) } } - -/* - precog the audio rate that will be set before output begins - this is needed to give gapless code a chance to keep track for firstframe != 0 -*/ -void prepare_audioinfo(struct frame *fr, audio_output_t *ao) +/* 1 on success, 0 on failure */ +int open_track(char *fname) { - long newrate = freqs[fr->sampling_frequency]>>(param.down_sample); - fr->down_sample = param.down_sample; - if(!audio_fit_capabilities(ao,fr->stereo,newrate)) safe_exit(1); -} - -/* - * play a frame read by read_frame(); - * (re)initialize audio if necessary. - * - * needs a major rewrite .. it's incredible ugly! - */ -int play_frame(int init,struct frame *fr) -{ - int clip; - long newrate; - long old_rate,old_format,old_channels; - - if(fr->header_change || init) { - - if (!param.quiet && init) { - if (param.verbose) - print_header(fr); - else - print_header_compact(fr); + int filept = -1; + if(MPG123_OK != mpg123_param(mh, MPG123_ICY_INTERVAL, 0, 0)) + error1("Cannot (re)set ICY interval: %s", mpg123_strerror(mh)); + if(!fname) filept = STDIN_FILENO; + else if (!strncmp(fname, "http://", 7)) /* http stream */ + { + httpdata_reset(&htd); + filept = http_open(fname, &htd); + /* now check if we got sth. and if we got sth. good */ + if( (filept >= 0) && (htd.content_type.p != NULL) + && strcmp(htd.content_type.p, "audio/mpeg") && strcmp(htd.content_type.p, "audio/x-mpeg") ) + { + error1("Unknown mpeg MIME type %s - is it perhaps a playlist (use -@)?", htd.content_type.p == NULL ? "" : htd.content_type.p); + error("If you know the stream is mpeg1/2 audio, then please report this as "PACKAGE_NAME" bug"); + return 0; } - - if(fr->header_change > 1 || init) { - old_rate = ao->rate; - old_format = ao->format; - old_channels = ao->channels; - - newrate = freqs[fr->sampling_frequency]>>(param.down_sample); - prepare_audioinfo(fr, ao); - if(param.verbose > 1) fprintf(stderr, "Note: audio output rate = %li\n", ao->rate); - #ifdef GAPLESS - if(param.gapless && (fr->lay == 3)) layer3_gapless_bytify(fr, ao); - #endif - - /* check, whether the fitter set our proposed rate */ - if(ao->rate != newrate) { - if(ao->rate == (newrate>>1) ) - fr->down_sample++; - else if(ao->rate == (newrate>>2) ) - fr->down_sample+=2; - else { - fr->down_sample = 3; - fprintf(stderr,"Warning, flexible rate not heavily tested!\n"); - } - if(fr->down_sample > 3) - fr->down_sample = 3; - } - - switch(fr->down_sample) { - case 0: - case 1: - case 2: - fr->down_sample_sblimit = SBLIMIT>>(fr->down_sample); - break; - case 3: - { - long n = freqs[fr->sampling_frequency]; - long m = ao->rate; - - if(!synth_ntom_set_step(n,m)) return 0; - - if(n>m) { - fr->down_sample_sblimit = SBLIMIT * m; - fr->down_sample_sblimit /= n; - } - else { - fr->down_sample_sblimit = SBLIMIT; - } - } - break; - } - - if (init_output( ao )) { - safe_exit(-1); - } - - if(ao->rate != old_rate || ao->channels != old_channels || - ao->format != old_format || param.force_reopen) { - if(param.force_mono < 0) { - if(ao->channels == 1) - fr->single = 3; - else - fr->single = -1; - } - else - fr->single = param.force_mono-1; - - param.force_stereo &= ~0x2; - if(fr->single >= 0 && ao->channels == 2) { - param.force_stereo |= 0x2; - } - - set_synth_functions(fr); - init_layer3(fr->down_sample_sblimit); - reset_audio(); - if(param.verbose) { - if(fr->down_sample == 3) { - long n = freqs[fr->sampling_frequency]; - long m = ao->rate; - if(n > m) { - fprintf(stderr,"Audio: %2.4f:1 conversion,",(float)n/(float)m); - } - else { - fprintf(stderr,"Audio: 1:%2.4f conversion,",(float)m/(float)n); - } - } - else { - fprintf(stderr,"Audio: %ld:1 conversion,",(long)pow(2.0,fr->down_sample)); - } - fprintf(stderr," rate: %ld, encoding: %s, channels: %d\n",ao->rate,audio_encoding_name(ao->format),ao->channels); - } - } - if (intflag) - return 1; + if(MPG123_OK != mpg123_param(mh, MPG123_ICY_INTERVAL, htd.icy_interval, 0)) + error1("Cannot set ICY interval: %s", mpg123_strerror(mh)); + if(param.verbose > 1) fprintf(stderr, "Info: ICY interval %li\n", (long)htd.icy_interval); + } + debug("OK... going to finally open."); + /* Now hook up the decoder on the opened stream or the file. */ + if(filept > -1) + { + if(mpg123_open_fd(mh, filept) != MPG123_OK) + { + error2("Cannot open fd %i: %s", filept, mpg123_strerror(mh)); + return 0; } } - - if (fr->error_protection) { - getbits(16); /* skip crc */ + else if(mpg123_open(mh, fname) != MPG123_OK) + { + error2("Cannot open %s: %s", fname, mpg123_strerror(mh)); + return 0; } - - /* do the decoding */ - clip = (fr->do_layer)(fr,param.outmode,ao); - -#ifndef NOXFERMEM - if (param.usebuffer) { - if (!intflag) { - buffermem->freeindex = - (buffermem->freeindex + pcm_point) % buffermem->size; - if (buffermem->wakeme[XF_READER]) - xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP_INFO); - } - pcm_sample = (unsigned char *) (buffermem->data + buffermem->freeindex); - pcm_point = 0; - while (xfermem_get_freespace(buffermem) < (FRAMEBUFUNIT << 1)) - if (xfermem_block(XF_WRITER, buffermem) == XF_CMD_TERMINATE) { - intflag = TRUE; - break; - } - if (intflag) - return 1; - } -#endif - - if(clip > 0 && param.checkrange) - fprintf(stderr,"%d samples clipped\n", clip); + debug("Track successfully opened."); return 1; } -/* set synth functions for current frame, optimizations handled by opt_* macros */ -void set_synth_functions(struct frame *fr) +/* for symmetry */ +void close_track(void) { - int ds = fr->down_sample; - int p8=0; - static func_synth funcs[2][4] = { - { NULL, - synth_2to1, - synth_4to1, - synth_ntom } , - { NULL, - synth_2to1_8bit, - synth_4to1_8bit, - synth_ntom_8bit } - }; - static func_synth_mono funcs_mono[2][2][4] = { - { { NULL , - synth_2to1_mono2stereo , - synth_4to1_mono2stereo , - synth_ntom_mono2stereo } , - { NULL , - synth_2to1_8bit_mono2stereo , - synth_4to1_8bit_mono2stereo , - synth_ntom_8bit_mono2stereo } } , - { { NULL , - synth_2to1_mono , - synth_4to1_mono , - synth_ntom_mono } , - { NULL , - synth_2to1_8bit_mono , - synth_4to1_8bit_mono , - synth_ntom_8bit_mono } } - }; + mpg123_close(mh); +} - /* possibly non-constand entries filled here */ - funcs[0][0] = opt_synth_1to1; - funcs[1][0] = opt_synth_1to1_8bit; - funcs_mono[0][0][0] = opt_synth_1to1_mono2stereo; - funcs_mono[0][1][0] = opt_synth_1to1_8bit_mono2stereo; - funcs_mono[1][0][0] = opt_synth_1to1_mono; - funcs_mono[1][1][0] = opt_synth_1to1_8bit_mono; - - if((ao->format & AUDIO_FORMAT_MASK) == AUDIO_FORMAT_8) - p8 = 1; - fr->synth = funcs[p8][ds]; - fr->synth_mono = funcs_mono[param.force_stereo?0:1][p8][ds]; - - if(p8) { - if(make_conv16to8_table(ao->format) != 0) +/* return 1 on success, 0 on failure */ +int play_frame(void) +{ + unsigned char *audio; + size_t bytes; + /* The first call will not decode anything but return MPG123_NEW_FORMAT! */ + int mc = mpg123_decode_frame(mh, &framenum, &audio, &bytes); + /* Play what is there to play (starting with second decode_frame call!) */ + if(bytes) + { + if(param.frame_number > -1) --frames_left; + if(framenum == param.start_frame && !param.quiet) { - /* it's a bit more work to get proper error propagation up */ - safe_exit(1); + if(param.verbose) print_header(mh); + else print_header_compact(mh); + } +#ifndef NOXFERMEM + if(param.usebuffer) + { /* We decoded directly into the buffer's buffer. */ + if(!intflag) + { + buffermem->freeindex = + (buffermem->freeindex + bytes) % buffermem->size; + if (buffermem->wakeme[XF_READER]) + xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP_INFO); + } + mpg123_replace_buffer(mh, (unsigned char *) (buffermem->data + buffermem->freeindex), bufferblock); + while (xfermem_get_freespace(buffermem) < bufferblock) + if (xfermem_block(XF_WRITER, buffermem) == XF_CMD_TERMINATE) + { + intflag = TRUE; + break; + } + if(intflag) return 1; + } + else +#endif + /* Normal flushing of data. */ + flush_output(param.outmode, ao, audio, bytes) + if(param.checkrange) + { + long clip = mpg123_clip(mh); + if(clip > 0) fprintf(stderr,"%ld samples clipped\n", clip); } } + /* Special actions and errors. */ + if(mc != MPG123_OK) + { + if(mc == MPG123_ERR || mc == MPG123_DONE) + { + if(mc == MPG123_ERR) error1("...in decoding next frame: %s", mpg123_strerror(mh)); + return 0; + } + if(mc == MPG123_NO_SPACE) + { + error("I have not enough output space? I didn't plan for this."); + return 0; + } + if(mc == MPG123_NEW_FORMAT) + { + mpg123_getformat(mh, &ao->rate, &ao->channels, &ao->format); + /* from mpg123lib branch: if(init_output()) reset_audio(); */ + /* does the newtrunk stuff fit here? */ + if(init_output(ao)) + { + warning("I am not sure if my code is ready to switch audio format during playback!"); + reset_audio(); + /* safe_exit(-1); */ + } + } + } + return 1; } int main(int argc, char *argv[]) { int result; + long parr; char *fname; + mpg123_pars *mp; #if !defined(WIN32) && !defined(GENERIC) struct timeval start_time, now; unsigned long secdiff; -#endif - int init; - #ifdef GAPLESS - int pre_init; - #endif - int j; +#endif + httpdata_init(&htd); + result = mpg123_init(); + if(result != MPG123_OK) + { + error1("Cannot initialize mpg123 library: %s", mpg123_plain_strerror(result)); + safe_exit(77); + } + mp = mpg123_new_pars(&result); + if(mp == NULL) + { + error1("Crap! Cannot get mpg123 parameters: %s", mpg123_plain_strerror(result)); + safe_exit(77); + } + + /* get default values */ + mpg123_getpar(mp, MPG123_DOWN_SAMPLE, &parr, NULL); + param.down_sample = (int) parr; + mpg123_getpar(mp, MPG123_RVA, ¶m.rva, NULL); + mpg123_getpar(mp, MPG123_DOWNSPEED, ¶m.halfspeed, NULL); + mpg123_getpar(mp, MPG123_UPSPEED, ¶m.doublespeed, NULL); +#ifdef FLOATOUT + mpg123_getpar(mp, MPG123_OUTSCALE, NULL, ¶m.outscale); +#else + mpg123_getpar(mp, MPG123_OUTSCALE, ¶m.outscale, NULL); +#endif + mpg123_getpar(mp, MPG123_FLAGS, &parr, NULL); + param.flags = (int) parr; + bufferblock = mpg123_safe_buffer(); #ifdef OS2 _wildcard(&argc,&argv); #endif - if(sizeof(short) != 2) { - fprintf(stderr,"Ouch SHORT has size of %d bytes (required: '2')\n",(int)sizeof(short)); - safe_exit(1); - } - if(sizeof(long) < 4) { - fprintf(stderr,"Ouch LONG has size of %d bytes (required: at least 4)\n",(int)sizeof(long)); - } - (prgName = strrchr(argv[0], '/')) ? prgName++ : (prgName = argv[0]); - while ((result = getlopt(argc, argv, opts))) switch (result) { case GLO_UNKNOWN: @@ -706,60 +629,79 @@ int main(int argc, char *argv[]) usage(1); } - #ifdef OPT_MULTI if(param.list_cpu) { - list_cpu_opt(); + char **all_dec = mpg123_decoders(); + printf("Builtin decoders:"); + while(*all_dec != NULL){ printf(" %s", *all_dec); ++all_dec; } + printf("\n"); safe_exit(0); } - if (param.test_cpu) + if(param.test_cpu) { - test_cpu_flags(); + char **all_dec = mpg123_supported_decoders(); + printf("Supported decoders:"); + while(*all_dec != NULL){ printf(" %s", *all_dec); ++all_dec; } + printf("\n"); safe_exit(0); } - if(!set_cpu_opt()) safe_exit(1); - #else - #ifdef OPT_3DNOW - if (param.test_cpu) { - struct cpuflags cf; - getcpuflags(&cf); - fprintf(stderr,"CPUFLAGS = %08x\n",cf.ext); - if ((cf.ext & 0x00800000) == 0x00800000) { - fprintf(stderr,"MMX instructions are supported.\n"); - } - if ((cf.ext & 0x80000000) == 0x80000000) { - fprintf(stderr,"3DNow! instructions are supported.\n"); - } - safe_exit(0); - } - #endif - #endif - #ifdef OPT_MPLAYER - mpl_dct64 = opt_mpl_dct64; - #endif - if (loptind >= argc && !param.listname && !param.remote) - usage(1); + if (loptind >= argc && !param.listname && !param.remote) usage(1); #if !defined(WIN32) && !defined(GENERIC) - if (param.remote) { - param.verbose = 0; + if (param.remote) + { + param.verbose = 0; param.quiet = 1; + param.flags |= MPG123_QUIET; } #endif - if (!(param.listentry < 0) && !param.quiet) - print_title(stderr); /* do not pollute stdout! */ - - if(param.force_mono) { - fr.single = param.force_mono-1; + /* Set the frame parameters from command line options */ + if(param.quiet) param.flags |= MPG123_QUIET; +#ifdef OPT_3DNOW + if(dnow != 0) param.cpu = (dnow == SET_3DNOW) ? "3dnow" : "i586"; +#endif + if(param.cpu != NULL && (!strcmp(param.cpu, "auto") || !strcmp(param.cpu, ""))) param.cpu = NULL; + if(!( MPG123_OK == (result = mpg123_par(mp, MPG123_VERBOSE, param.verbose, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_FLAGS, param.flags, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_DOWN_SAMPLE, param.down_sample, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_RVA, param.rva, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_DOWNSPEED, param.halfspeed, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_UPSPEED, param.doublespeed, 0)) + && MPG123_OK == (result = mpg123_par(mp, MPG123_ICY_INTERVAL, 0, 0)) +#ifdef FLOATOUT + && MPG123_OK == (result = mpg123_par(mp, MPG123_OUTSCALE, 0, param.outscale)) +#else + && MPG123_OK == (result = mpg123_par(mp, MPG123_OUTSCALE, param.outscale, 0)) +#endif + )) + { + error1("Cannot set library parameters: %s", mpg123_plain_strerror(result)); + safe_exit(45); } + if (!(param.listentry < 0) && !param.quiet) print_title(stderr); /* do not pollute stdout! */ - if(param.force_rate && param.down_sample) { + if(param.force_rate && param.down_sample) + { error("Down sampling and fixed rate options not allowed together!"); safe_exit(1); } + /* Now actually get an mpg123_handle. */ + mh = mpg123_parnew(mp, NULL, &result); + if(mh == NULL) + { + error1("Crap! Cannot get a mpg123 handle: %s", mpg123_plain_strerror(result)); + safe_exit(77); + } + mpg123_delete_pars(mp); /* Don't need the parameters anymore ,they're in the handle now. */ + if(param.cpu != NULL && (MPG123_OK != mpg123_decoder(mh, param.cpu))) + { + error1("Unable to set decoder: %s", mpg123_strerror(mh)); + safe_exit(46); + } + /* Open audio output module */ ao = open_output_module( param.output_module ); if (!ao) { @@ -767,21 +709,12 @@ int main(int argc, char *argv[]) safe_exit(1); } - audio_capabilities(ao); + audio_capabilities(ao, mh); /* Query audio output parameters, store in mpg123 handle. */ - - - /* equalizer initialization regardless of equalfile */ - for(j=0; j<32; j++) { - equalizer[0][j] = equalizer[1][j] = 1.0; - equalizer_sum[0][j] = equalizer_sum[1][j] = 0.0; - } - if(equalfile != NULL) { /* tst; ThOr: not TRUE or FALSE: allocated or not... */ + if(equalfile != NULL) + { /* tst; ThOr: not TRUE or FALSE: allocated or not... */ FILE *fe; int i; - - equalizer_cnt = 0; - fe = fopen(equalfile,"r"); if(fe) { char line[256]; @@ -792,11 +725,10 @@ int main(int argc, char *argv[]) if(line[0]=='#') continue; sscanf(line,"%f %f",&e0,&e1); - equalizer[0][i] = e0; - equalizer[1][i] = e1; + mpg123_eq(mh, MPG123_LEFT, i, e0); + mpg123_eq(mh, MPG123_RIGHT, i, e1); } fclose(fe); - have_eq_settings = TRUE; } else fprintf(stderr,"Can't open equalizer file '%s'\n",equalfile); @@ -820,14 +752,8 @@ int main(int argc, char *argv[]) } #endif - set_synth_functions(&fr); - if(!param.remote) prepare_playlist(argc, argv); - opt_make_decode_tables(outscale); - init_layer2(); /* inits also shared tables with layer1 */ - init_layer3(fr.down_sample); - #if !defined(WIN32) && !defined(GENERIC) /* This ctrl+c for title skip only when not in some control mode */ if @@ -842,25 +768,25 @@ int main(int argc, char *argv[]) if(param.remote) { int ret; - init_id3(); - init_icy(); - ret = control_generic(&fr); - clear_icy(); - exit_id3(); + ret = control_generic(mh); safe_exit(ret); } - init_icy(); - init_id3(); /* prepare id3 memory */ - while ((fname = get_next_file())) { + while ((fname = get_next_file())) + { char *dirname, *filename; - long leftFrames,newFrame; + frames_left = param.frame_number; + debug1("Going to play %s", fname != NULL ? fname : "standard input"); + + if(!open_track(fname)) continue; + + framenum = mpg123_seek_frame(mh, param.start_frame, SEEK_SET); + if(framenum < 0) + { + error1("Initial seek failed: %s", mpg123_strerror(mh)); + continue; + } - if(!*fname || !strcmp(fname, "-")) - fname = NULL; - if (open_stream(fname,-1) < 0) - continue; - if (!param.quiet) { if (split_dir_file(fname ? fname : "standard input", &dirname, &filename)) @@ -887,111 +813,84 @@ int main(int argc, char *argv[]) #endif gettimeofday (&start_time, NULL); #endif - read_frame_init(&fr); - init = 1; - #ifdef GAPLESS - pre_init = 1; - #endif - newFrame = startFrame; - #ifdef HAVE_TERMIOS debug1("param.term_ctrl: %i", param.term_ctrl); if(param.term_ctrl) term_init(); #endif - leftFrames = numframes; - /* read_frame is counting the frames! */ - for(;read_frame(&fr) && leftFrames && !intflag;) { -#ifdef HAVE_TERMIOS +#ifdef HAVE_TERMIOS /* I am not sure if this is right here anymore!... what with intflag? */ tc_hack: #endif - if(fr.num < startFrame || (param.doublespeed && (fr.num % param.doublespeed))) { - if(fr.lay == 3) - { - set_pointer(512); - #ifdef GAPLESS - if(param.gapless) - { - if(pre_init) - { - prepare_audioinfo(&fr, &pre_ao); - pre_init = 0; - } - /* keep track... */ - layer3_gapless_set_position(fr.num, &fr, &pre_ao); - } - #endif - } - continue; - } - if(leftFrames > 0) - leftFrames--; - if(!play_frame(init,&fr)) + while(!intflag) + { + int meta; + if(param.frame_number > -1) { - error("frame playback failed, skipping rest of track"); - break; + debug1("frames left: %li", (long) frames_left); + if(!frames_left) break; } - init = 0; - - if(param.verbose) { + if(!play_frame()) break; + if(!param.quiet) + { + meta = mpg123_meta_check(mh); + if(meta & (MPG123_NEW_ID3|MPG123_NEW_ICY)) + { + char *icy; + if(meta & MPG123_NEW_ID3) print_id3_tag(mh, param.long_id3, stderr); + if(meta & MPG123_NEW_ICY && MPG123_OK == mpg123_icy(mh, &icy)) + fprintf(stderr, "\nICY-META: %s\n", icy); + } + } + if(param.verbose) + { #ifndef NOXFERMEM - if (param.verbose > 1 || !(fr.num & 0x7)) - print_stat(&fr,fr.num,xfermem_get_usedspace(buffermem),ao); + if (param.verbose > 1 || !(framenum & 0x7)) + print_stat(mh,0,xfermem_get_usedspace(buffermem)); if(param.verbose > 2 && param.usebuffer) fprintf(stderr,"[%08x %08x]",buffermem->readindex,buffermem->freeindex); #else - if (param.verbose > 1 || !(fr.num & 0x7)) - print_stat(&fr,fr.num,0,ao); + if(param.verbose > 1 || !(framenum & 0x7)) print_stat(mh,0,0); #endif } #ifdef HAVE_TERMIOS - if(!param.term_ctrl) { - continue; - } else { - long offset; - if((offset=term_control(&fr,ao))) { - if(!rd->back_frame(rd, &fr, -offset)) { - debug1("seeked to %lu", fr.num); - #ifdef GAPLESS - if(param.gapless && (fr.lay == 3)) - layer3_gapless_set_position(fr.num, &fr, ao); - #endif - } else { error("seek failed!"); } + if(!param.term_ctrl) continue; + else + { + off_t offset; + if((offset=term_control(mh,&ai))) + { + if((offset = mpg123_seek_frame(mh, offset, SEEK_CUR)) >= 0) + { + if(param.usebuffer) buffer_resync(); + debug1("seeked to %li", offset); + } else error1("seek failed: %s!", mpg123_strerror(mh)); } } #endif - } - #ifdef GAPLESS - /* make sure that the correct padding is skipped after track ended */ - if(param.gapless) flush_output(param.outmode, ao); - #endif #ifndef NOXFERMEM if(param.usebuffer) { int s; - while ((s = xfermem_get_usedspace(buffermem))) { + while ((s = xfermem_get_usedspace(buffermem))) + { struct timeval wait170 = {0, 170000}; - buffer_ignore_lowmem(); - - if(param.verbose) - print_stat(&fr,fr.num,s,ao); + if(param.verbose) print_stat(mh,0,s); #ifdef HAVE_TERMIOS - if(param.term_ctrl) { - long offset; - if((offset=term_control(&fr,ao))) { - if((!rd->back_frame(rd, &fr, -offset)) - && read_frame(&fr)) + if(param.term_ctrl) + { + off_t offset; + if((offset=term_control(mh,&ai))) + { + if((offset = mpg123_seek_frame(mh, offset, SEEK_CUR)) >= 0) + /* && read_frame(&fr) == 1 */ { - debug1("seeked to %lu", fr.num); - #ifdef GAPLESS - if(param.gapless && (fr.lay == 3)) - layer3_gapless_set_position(fr.num, &fr, ao); - #endif + if(param.usebuffer) buffer_resync(); + debug1("seeked to %li", offset); goto tc_hack; /* Doh! Gag me with a spoon! */ - } else { error("seek failed!"); } + } else error1("seek failed: %s!", mpg123_strerror(mh)); } } #endif @@ -999,35 +898,22 @@ tc_hack: } } #endif - if(param.verbose) - print_stat(&fr,fr.num,xfermem_get_usedspace(buffermem),ao); + if(param.verbose) print_stat(mh,0,xfermem_get_usedspace(buffermem)); #ifdef HAVE_TERMIOS - if(param.term_ctrl) - term_restore(); + if(param.term_ctrl) term_restore(); #endif - if (!param.quiet) { - /* - * This formula seems to work at least for - * MPEG 1.0/2.0 layer 3 streams. - */ - int secs = get_songlen(&fr,fr.num); - fprintf(stderr,"\n[%d:%02d] Decoding of %s finished.\n", secs / 60, - secs % 60, filename); + if(!param.quiet) + { + double secs; + mpg123_position(mh, 0, 0, NULL, NULL, &secs, NULL); + fprintf(stderr,"\n[%d:%02d] Decoding of %s finished.\n", (int)(secs / 60), ((int)secs) % 60, filename); } - rd->close(rd); -#if 0 - if(param.remote) - fprintf(stderr,"@R MPG123\n"); - if (remflag) { - intflag = FALSE; - remflag = FALSE; - } -#endif - - if (intflag) { + mpg123_close(mh); + if (intflag) + { /* * When HAVE_TERMIOS is defined, there is 'q' to terminate a list of songs, so * no pressing need to keep up this first second SIGINT hack that was too @@ -1056,8 +942,6 @@ tc_hack: #endif } } /* end of loop over input files */ - clear_icy(); - exit_id3(); /* free id3 memory */ #ifndef NOXFERMEM if (param.usebuffer) { buffer_end(); @@ -1065,14 +949,7 @@ tc_hack: waitpid (buffer_pid, NULL, 0); xfermem_done (buffermem); } - else { #endif - flush_output(param.outmode, ao); - free (pcm_sample); -#ifndef NOXFERMEM - } -#endif - /* Close the output */ close_output(param.outmode, ao); @@ -1080,9 +957,11 @@ tc_hack: close_output_module( ao ); /* Free up memory used by playlist */ - if(!param.remote) free_playlist(); - - return 0; + if(!param.remote) free_playlist(); + mpg123_delete(mh); + mpg123_exit(); + httpdata_reset(&htd); + return 0; } static void print_title(FILE *o) @@ -1108,7 +987,7 @@ static void usage(int err) /* print syntax & exit */ fprintf(o," -w write Output as WAV file\n"); fprintf(o," -k n skip first n frames [0] -n n decode only n frames [all]\n"); fprintf(o," -c check range violations -y DISABLE resync on errors\n"); - fprintf(o," -b n output buffer: n Kbytes [0] -f n change scalefactor [%g]\n", (double)outscale); + fprintf(o," -b n output buffer: n Kbytes [0] -f n change scalefactor [%g]\n", (double)param.outscale); fprintf(o," -r n set/force samplerate [auto] -g n set audio hardware output gain\n"); fprintf(o," -os,-ol,-oh output to built-in speaker,line-out connector,headphones\n"); #ifdef NAS @@ -1169,7 +1048,7 @@ static void long_usage(int err) #endif fprintf(o," -z --shuffle shuffle song-list before playing\n"); fprintf(o," -Z --random full random play\n"); - + fprintf(o," --no-icy-meta Do not accept ICY meta data\n"); fprintf(o,"\noutput/processing options\n\n"); fprintf(o," -o --output select audio output module\n"); fprintf(o," --list-modules list the available modules\n"); @@ -1191,7 +1070,7 @@ static void long_usage(int err) fprintf(o," --no-3dnow force use of floating-pointer routine (obsoleted by --cpu)\n"); #endif fprintf(o," -g --gain set audio hardware output gain\n"); - fprintf(o," -f --scale scale output samples (soft gain, default=%g)\n", (double)outscale); + fprintf(o," -f --scale scale output samples (soft gain, default=%g)\n", (double)param.outscale); fprintf(o," --rva-mix,\n"); fprintf(o," --rva-radio use RVA2/ReplayGain values for mix/radio mode\n"); fprintf(o," --rva-album,\n"); @@ -1204,8 +1083,8 @@ static void long_usage(int err) fprintf(o," -2 --2to1 2:1 downsampling\n"); fprintf(o," -4 --4to1 4:1 downsampling\n"); fprintf(o," --8bit force 8 bit output\n"); - fprintf(o," -d --doublespeed play only every second frame\n"); - fprintf(o," -h --halfspeed play every frame twice\n"); + fprintf(o," -d n --doublespeed n play only every nth frame\n"); + fprintf(o," -h n --halfspeed n play every frame n times\n"); fprintf(o," --equalizer exp.: scales freq. bands acrd. to 'equalizer.dat'\n"); #ifdef GAPLESS fprintf(o," --gapless remove padding/junk added by encoder/decoder\n"); diff --git a/src/mpg123.h b/src/mpg123.h deleted file mode 100644 index 382bc407..00000000 --- a/src/mpg123.h +++ /dev/null @@ -1,439 +0,0 @@ -/* - mpg123: main code of the program (not of the decoder...) - - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - mpg123 defines - used source: musicout.h from mpegaudio package -*/ - -#ifndef _MPG123_H_ -#define _MPG123_H_ - -/* everyone needs it */ -#include "config.h" -#include "debug.h" - -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#endif -/* want to suport large files in future */ -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -/* More integer stuff, just take what we can get... */ -#ifdef HAVE_INTTYPES_H -#include -#endif -#ifdef HAVE_STDINT_H -#include -#endif -#ifdef HAVE_LIMITS_H -#include -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX ((size_t)-1) -#endif -#ifndef ULONG_MAX -#define ULONG_MAX ((unsigned long)-1) -#endif - -typedef unsigned char byte; - -#ifdef OS2 -#include -#endif - -#define REMOTE_BUFFER_SIZE 2048 - -#define SKIP_JUNK 1 - -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif -#ifndef M_SQRT2 -# define M_SQRT2 1.41421356237309504880 -#endif - - -#include "xfermem.h" - -#ifdef SUNOS -#define memmove(dst,src,size) bcopy(src,dst,size) -#endif - -#ifdef REAL_IS_FLOAT -# define real float -# define REAL_SCANF "%f" -# define REAL_PRINTF "%f" -#elif defined(REAL_IS_LONG_DOUBLE) -# define real long double -# define REAL_SCANF "%Lf" -# define REAL_PRINTF "%Lf" -#elif defined(REAL_IS_FIXED) -# define real long - -# define REAL_RADIX 15 -# define REAL_FACTOR (32.0 * 1024.0) - -# define REAL_PLUS_32767 ( 32767 << REAL_RADIX ) -# define REAL_MINUS_32768 ( -32768 << REAL_RADIX ) - -# define DOUBLE_TO_REAL(x) ((int)((x) * REAL_FACTOR)) -# define REAL_TO_SHORT(x) ((x) >> REAL_RADIX) -# define REAL_MUL(x, y) (((long long)(x) * (long long)(y)) >> REAL_RADIX) -# define REAL_SCANF "%ld" -# define REAL_PRINTF "%ld" - -#else -# define real double -# define REAL_SCANF "%lf" -# define REAL_PRINTF "%f" -#endif - -#ifndef DOUBLE_TO_REAL -# define DOUBLE_TO_REAL(x) (x) -#endif -#ifndef REAL_TO_SHORT -# define REAL_TO_SHORT(x) (x) -#endif -#ifndef REAL_PLUS_32767 -# define REAL_PLUS_32767 32767.0 -#endif -#ifndef REAL_MINUS_32768 -# define REAL_MINUS_32768 -32768.0 -#endif -#ifndef REAL_MUL -# define REAL_MUL(x, y) ((x) * (y)) -#endif - -#include "module.h" -#include "audio.h" - -/* AUDIOBUFSIZE = n*64 with n=1,2,3 ... */ -#define AUDIOBUFSIZE 16384 - -#define FALSE 0 -#define TRUE 1 - -#define MAX_NAME_SIZE 81 -#define SBLIMIT 32 -#define SCALE_BLOCK 12 -#define SSLIMIT 18 - -#define MPG_MD_STEREO 0 -#define MPG_MD_JOINT_STEREO 1 -#define MPG_MD_DUAL_CHANNEL 2 -#define MPG_MD_MONO 3 - -/* float output only for generic decoder! */ -#ifdef FLOATOUT -#define MAXOUTBURST 1.0 -#define scale_t double -#else -/* I suspect that 32767 would be a better idea here, but Michael put this in... */ -#define MAXOUTBURST 32768 -#define scale_t long -#endif - -/* Pre Shift fo 16 to 8 bit converter table */ -#define AUSHIFT (3) - - -struct al_table -{ - short bits; - short d; -}; - -struct frame { - struct al_table *alloc; - /* could use types from optimize.h */ - int (*synth)(real *,int,unsigned char *,int *); - int (*synth_mono)(real *,unsigned char *,int *); - int stereo; /* I _think_ 1 for mono and 2 for stereo */ - int jsbound; - int single; - int II_sblimit; - int down_sample_sblimit; - int lsf; /* 0: MPEG 1.0; 1: MPEG 2.0/2.5 -- both used as bool and array index! */ - int mpeg25; - int down_sample; - int header_change; - int lay; - int (*do_layer)(struct frame *fr,int,audio_output_t *); - int error_protection; - int bitrate_index; - int sampling_frequency; - int padding; - int extension; - int mode; - int mode_ext; - int copyright; - int original; - int emphasis; - int framesize; /* computed framesize */ - int vbr; /* 1 if variable bitrate was detected */ - unsigned long num; /* the nth frame in some stream... */ -}; - - -#define FRAMEBUFUNIT (18 * 64 * 4) - -#define VERBOSE_MAX 3 - -#define MONO_LEFT 1 -#define MONO_RIGHT 2 -#define MONO_MIX 4 - -struct parameter { - int aggressive; /* renice to max. priority */ - int shuffle; /* shuffle/random play */ - int remote; /* remote operation */ - int remote_err; /* remote operation to stderr */ - int outmode; /* where to out the decoded sampels */ - int quiet; /* shut up! */ - int xterm_title; /* Change xterm title to song names? */ - long usebuffer; /* second level buffer size */ - int tryresync; /* resync stream after error */ - int verbose; /* verbose level */ - char* output_module; /* audio output module to use */ - char* output_device; /* audio output device to use */ - int output_flags; /* legacy output destination for AIX/HP/Sun */ -#ifdef HAVE_TERMIOS - int term_ctrl; -#endif - int force_mono; - int force_stereo; - int force_8bit; - long force_rate; - int down_sample; - int checkrange; - long doublespeed; - long halfspeed; - int force_reopen; - /* the testing part shared between 3dnow and multi mode */ -#ifdef OPT_3DNOW - int stat_3dnow; /* automatic/force/force-off 3DNow! optimized code */ -#endif -#ifdef OPT_MULTI - int test_cpu; -#endif - long realtime; - char filename[256]; -#ifdef GAPLESS - int gapless; /* (try to) remove silence padding/delay to enable gapless playback */ -#endif - long listentry; /* possibility to choose playback of one entry in playlist (0: off, > 0 : select, < 0; just show list*/ - int rva; /* (which) rva to do: 0: nothing, 1: radio/mix/track 2: album/audiophile */ - char* listname; /* name of playlist */ - int long_id3; - #ifdef OPT_MULTI - char* cpu; /* chosen optimization, can be NULL/""/"auto"*/ - int list_cpu; - #endif -#ifdef FIFO - char* fifo; -#endif -#ifndef WIN32 - long timeout; /* timeout for reading in seconds */ -#endif - long loop; /* looping of tracks */ -}; - -/* start to use off_t to properly do LFS in future ... used to be long */ -struct reader { - int (*init)(struct reader *); - void (*close)(struct reader *); - int (*head_read)(struct reader *,unsigned long *newhead); - int (*head_shift)(struct reader *,unsigned long *head); - off_t (*skip_bytes)(struct reader *,off_t len); - int (*read_frame_body)(struct reader *,unsigned char *,int size); - int (*back_bytes)(struct reader *,off_t bytes); - int (*back_frame)(struct reader *,struct frame *,long num); - off_t (*tell)(struct reader *); - void (*rewind)(struct reader *); - off_t filelen; - off_t filepos; - int filept; - int flags; - long timeout_sec; - unsigned char id3buf[128]; -}; -#define READER_FD_OPENED 0x1 -#define READER_ID3TAG 0x2 -#define READER_SEEKABLE 0x4 -#define READER_NONBLOCK 0x8 - -extern struct reader *rd,readers[]; -extern char *equalfile; -/*ThOr: No fiddling with the pointer in control_generic! */ -extern int have_eq_settings; - -extern int halfspeed; -extern int buffer_fd[2]; -extern txfermem *buffermem; - -#ifndef NOXFERMEM -extern void buffer_loop(audio_output_t *ao,sigset_t *oldsigset); -#endif - -/* ------ Declarations from "common.c" ------ */ - -extern void (*catchsignal(int signum, void(*handler)()))(); - -extern void print_header(struct frame *); -extern void print_header_compact(struct frame *); -extern void print_id3_tag(unsigned char *buf); - -extern int split_dir_file(const char *path, char **dname, char **fname); - -extern unsigned int get1bit(void); -extern unsigned int getbits(int); -extern unsigned int getbits_fast(int); -extern void backbits(int); -extern int getbitoffset(void); -extern int getbyte(void); - -extern void set_pointer(long); - -extern unsigned char *pcm_sample; -extern int pcm_point; -extern int audiobufsize; -extern int buffer_pid; - -extern int OutputDescriptor; - -#ifdef VARMODESUPPORT -extern int varmode; -extern int playlimit; -#endif - -struct gr_info_s { - int scfsi; - unsigned part2_3_length; - unsigned big_values; - unsigned scalefac_compress; - unsigned block_type; - unsigned mixed_block_flag; - unsigned table_select[3]; - unsigned subblock_gain[3]; - unsigned maxband[3]; - unsigned maxbandl; - unsigned maxb; - unsigned region1start; - unsigned region2start; - unsigned preflag; - unsigned scalefac_scale; - unsigned count1table_select; - real *full_gain[3]; - real *pow2gain; -}; - -struct III_sideinfo -{ - unsigned main_data_begin; - unsigned private_bits; - struct { - struct gr_info_s gr[2]; - } ch[2]; -}; - -extern int open_stream(char *,int fd); -extern void read_frame_init (struct frame* fr); -extern int read_frame(struct frame *fr); -/* why extern? */ -extern void prepare_audioinfo(struct frame *fr, audio_output_t *ao); -extern int play_frame(int init,struct frame *fr); -extern int do_layer3(struct frame *fr,int,audio_output_t *); -extern int do_layer2(struct frame *fr,int,audio_output_t *); -extern int do_layer1(struct frame *fr,int,audio_output_t *); -extern void do_equalizer(real *bandPtr,int channel); - -/* synth_1to1 in optimize.h, one should also use opts for these here... */ - -extern int synth_2to1 (real *,int,unsigned char *,int *); -extern int synth_2to1_8bit (real *,int,unsigned char *,int *); -extern int synth_2to1_mono (real *,unsigned char *,int *); -extern int synth_2to1_mono2stereo (real *,unsigned char *,int *); -extern int synth_2to1_8bit_mono (real *,unsigned char *,int *); -extern int synth_2to1_8bit_mono2stereo (real *,unsigned char *,int *); - -extern int synth_4to1 (real *,int,unsigned char *,int *); -extern int synth_4to1_8bit (real *,int,unsigned char *,int *); -extern int synth_4to1_mono (real *,unsigned char *,int *); -extern int synth_4to1_mono2stereo (real *,unsigned char *,int *); -extern int synth_4to1_8bit_mono (real *,unsigned char *,int *); -extern int synth_4to1_8bit_mono2stereo (real *,unsigned char *,int *); - -extern int synth_ntom (real *,int,unsigned char *,int *); -extern int synth_ntom_8bit (real *,int,unsigned char *,int *); -extern int synth_ntom_mono (real *,unsigned char *,int *); -extern int synth_ntom_mono2stereo (real *,unsigned char *,int *); -extern int synth_ntom_8bit_mono (real *,unsigned char *,int *); -extern int synth_ntom_8bit_mono2stereo (real *,unsigned char *,int *); - -extern void rewindNbits(int bits); -extern int hsstell(void); -extern void set_pointer(long); -extern void huffman_decoder(int ,int *); -extern void huffman_count1(int,int *); -extern int get_songlen(struct frame *fr,int no); - -extern void init_layer3(int); -extern void init_layer2(void); -extern int make_conv16to8_table(int); - -extern int synth_ntom_set_step(long,long); - -extern int control_generic(struct frame *fr); - -extern int cdr_open(audio_output_t *, char *ame); -extern int au_open(audio_output_t *, char *name); -extern int wav_open(audio_output_t *, char *wavfilename); -extern int wav_write(unsigned char *buf,int len); -extern int cdr_close(void); -extern int au_close(void); -extern int wav_close(void); - -extern int au_open(audio_output_t *, char *aufilename); -extern int au_close(void); - -extern int cdr_open(audio_output_t *, char *cdrfilename); -extern int cdr_close(void); - -extern unsigned char *conv16to8; -extern long freqs[9]; -extern real muls[27][64]; - -extern real equalizer[2][32]; -extern real equalizer_sum[2][32]; -extern int equalizer_cnt; - -extern struct audio_format_name audio_val2name[]; - -extern struct parameter param; - -/* avoid the SIGINT in terminal control */ -void next_track(void); -extern scale_t outscale; - -#include "optimize.h" - -void *safe_realloc(void *ptr, size_t size); -#ifndef HAVE_STRERROR -const char *strerror(int errnum); -#endif - -#endif diff --git a/src/mpg123app.h b/src/mpg123app.h new file mode 100644 index 00000000..7cb8ad81 --- /dev/null +++ b/src/mpg123app.h @@ -0,0 +1,178 @@ +/* + mpg123: main code of the program (not of the decoder...) + + copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org + initially written by Michael Hipp + + mpg123 defines + used source: musicout.h from mpegaudio package +*/ + +#ifndef MPG123_H +#define MPG123_H + +/* everyone needs it */ +#include "config.h" +#include "debug.h" +#include "httpget.h" +#include "mpg123.h" +#include "compat.h" +#define MPG123_REMOTE +#define REMOTE_BUFFER_SIZE 2048 +#define MAXOUTBURST 32768 + +#ifdef HAVE_STDLIB_H +#include +#endif + +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#endif +/* want to suport large files in future */ +#ifdef HAVE_SYS_TYPES_H +#include +#endif + +/* More integer stuff, just take what we can get... */ +#ifdef HAVE_INTTYPES_H +#include +#endif +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t)-1) +#endif +#ifndef ULONG_MAX +#define ULONG_MAX ((unsigned long)-1) +#endif + +#ifdef OS2 +#include +#endif + +typedef unsigned char byte; +#include "xfermem.h" + +#ifdef __GNUC__ +#define INLINE inline +#else +#define INLINE +#endif + +#include "module.h" +#include "audio.h" + +extern size_t bufferblock; + +#define VERBOSE_MAX 3 + +struct parameter +{ + int aggressive; /* renice to max. priority */ + int shuffle; /* shuffle/random play */ + int remote; /* remote operation */ + int remote_err; /* remote operation to stderr */ + int outmode; /* where to out the decoded sampels */ + int quiet; /* shut up! */ + int xterm_title; /* Change xterm title to song names? */ + long usebuffer; /* second level buffer size */ + int verbose; /* verbose level */ + char* output_module; /* audio output module to use */ + char* output_device; /* audio output device to use */ + int output_flags; /* legacy output destination for AIX/HP/Sun */ +#ifdef HAVE_TERMIOS + int term_ctrl; +#endif + int checkrange; + int force_reopen; + int test_cpu; + long realtime; + char filename[256]; + long listentry; /* possibility to choose playback of one entry in playlist (0: off, > 0 : select, < 0; just show list*/ + char* listname; /* name of playlist */ + int long_id3; + int list_cpu; + char *cpu; +#ifdef FIFO + char* fifo; +#endif +#ifndef WIN32 + long timeout; /* timeout for reading in seconds */ +#endif + long loop; /* looping of tracks */ + /* parameters for mpg123 handle */ + int down_sample; + long rva; /* (which) rva to do: 0: nothing, 1: radio/mix/track 2: album/audiophile */ + long halfspeed; + long doublespeed; + long start_frame; /* frame offset to begin with */ + long frame_number; /* number of frames to decode */ +#ifdef FLOATOUT + double outscale; +#else + long outscale; +#endif + int flags; + long force_rate; + int talk_icy; +}; + +extern char *equalfile; +extern long framenum; +extern struct httpdata htd; + +extern int buffer_fd[2]; +extern txfermem *buffermem; +extern int buffer_pid; + +#ifndef NOXFERMEM +extern void buffer_loop(audio_output_t *ao,sigset_t *oldsigset); +#endif + +extern int OutputDescriptor; + +#ifdef VARMODESUPPORT +extern int varmode; +extern int playlimit; +#endif + +/* why extern? */ +extern void prepare_audioinfo(mpg123_handle *mh, audio_output_t *ao); +extern int play_frame(void); + +extern int control_generic(mpg123_handle *fr); + +/* Eh... I see duplicated definitions. Clean up after merge! */ +extern int cdr_open(audio_output_t *, char *ame); +extern int au_open(audio_output_t *, char *name); +extern int wav_open(audio_output_t *, char *wavfilename); +extern int wav_write(unsigned char *buf,int len); +extern int cdr_close(void); +extern int au_close(void); +extern int wav_close(void); + +extern int au_open(audio_output_t *, char *aufilename); +extern int au_close(void); + +extern int cdr_open(audio_output_t *, char *cdrfilename); +extern int cdr_close(void); + +extern struct parameter param; + +/* avoid the SIGINT in terminal control */ +void next_track(void); +int open_track(char *fname); +void close_track(void); +#endif diff --git a/src/optimize.c b/src/optimize.c deleted file mode 100644 index 485775d7..00000000 --- a/src/optimize.c +++ /dev/null @@ -1,326 +0,0 @@ -/* - optimize: get a grip on the different optimizations - - copyright 2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, inspired by 3DNow stuff in mpg123.[hc] - - Currently, this file contains the struct and function to choose an optimization variant and works only when OPT_MULTI is in effect. -*/ - -#include "mpg123.h" /* includes optimize.h */ - -#ifdef OPT_MULTI -struct_opts cpu_opts; - -#include "getcpuflags.h" - -void list_cpu_opt() -{ - printf("CPU options:"); - #ifdef OPT_3DNOWEXT - printf(" 3DNowExt"); - #endif - #ifdef OPT_SSE - printf(" SSE"); - #endif - #ifdef OPT_3DNOW - printf(" 3DNow"); - #endif - #ifdef OPT_MMX - printf(" MMX"); - #endif - #ifdef OPT_I586 - printf(" i586"); - #endif - #ifdef OPT_I586_DITHER - printf(" i586_dither"); - #endif - #ifdef OPT_I486 - printf(" i486"); - #endif - #ifdef OPT_I386 - printf(" i386"); - #endif - #ifdef OPT_ALTIVEC - printf(" AltiVec"); - #endif - #ifdef OPT_GENERIC - printf(" generic"); - #endif - printf("\n"); -} - -void test_cpu_flags() -{ - #ifdef OPT_X86 - struct cpuflags cf; - getcpuflags(&cf); - if(cpu_i586(cf)) - { - printf("Supported decoders:"); - /* not yet: if(cpu_sse2(cf)) printf(" SSE2"); - if(cpu_sse3(cf)) printf(" SSE3"); */ -#ifdef OPT_3DNOWEXT - if(cpu_3dnowext(cf)) printf(" 3DNowExt"); -#endif -#ifdef OPT_SSE - if(cpu_sse(cf)) printf(" SSE"); -#endif -#ifdef OPT_3DNOW - if(cpu_3dnow(cf)) printf(" 3DNow"); -#endif -#ifdef OPT_MMX - if(cpu_mmx(cf)) printf(" MMX"); -#endif -#ifdef OPT_I586 - printf(" i586"); -#endif -#ifdef OPT_I586_DITHER - printf(" i586_dither"); -#endif -#ifdef OPT_I386 - printf(" i386"); -#endif -#ifdef OPT_GENERIC - printf(" generic"); -#endif - printf("\n"); - } - else - { - printf("You have an i386 or i486... or perhaps a non-x86-32bit CPU?\n"); - } - #else - printf("I only know x86 cpus...\n"); - #endif -} - -int set_cpu_opt() -{ - #ifdef OPT_X86 - struct cpuflags cf; - #endif - char* chosen = ""; /* the chosed decoder opt as string */ - int auto_choose = 0; - int done = 0; - if( (param.cpu == NULL) - || (param.cpu[0] == 0) - || !strcasecmp(param.cpu, "auto") ) - auto_choose = 1; - - /* covers any i386+ cpu; they actually differ only in the synth_1to1 function... */ - #ifdef OPT_X86 - - #ifdef OPT_MMXORSSE - cpu_opts.decwin = decwin; - cpu_opts.make_decode_tables = make_decode_tables; - cpu_opts.init_layer3_gainpow2 = init_layer3_gainpow2; - cpu_opts.init_layer2_table = init_layer2_table; - #endif - #ifdef OPT_3DNOW - cpu_opts.dct36 = dct36; - #endif - #ifdef OPT_3DNOWEXT - cpu_opts.dct36 = dct36; - #endif - - if(getcpuflags(&cf) && cpu_i586(cf)) - { - debug2("standard flags: 0x%08x\textended flags: 0x%08x\n", cf.std, cf.ext); - #ifdef OPT_3DNOWEXT - if( !done && (auto_choose || !strcasecmp(param.cpu, "3dnowext")) - && cpu_3dnow(cf) - && cpu_3dnowext(cf) - && cpu_mmx(cf) ) - { - int go = 1; - if(param.force_rate) - { - #if defined(K6_FALLBACK) || defined(PENTIUM_FALLBACK) - if(!auto_choose) error("I refuse to choose 3DNowExt as this will screw up with forced rate!"); - else if(param.verbose) fprintf(stderr, "Note: Not choosing 3DNowExt because flexible rate not supported.\n"); - - go = 0; - #else - error("You will hear some awful sound because of flexible rate being chosen with SSE decoder!"); - #endif - } - if(go){ /* temporary hack for flexible rate bug, not going indent this - fix it instead! */ - chosen = "3DNowExt"; - cpu_opts.dct36 = dct36_3dnowext; - cpu_opts.synth_1to1 = synth_1to1_sse; - cpu_opts.dct64 = dct64_mmx; /* only use the sse version in the synth_1to1_sse */ - cpu_opts.decwin = decwin_mmx; - cpu_opts.make_decode_tables = make_decode_tables_mmx; - cpu_opts.init_layer3_gainpow2 = init_layer3_gainpow2_mmx; - cpu_opts.init_layer2_table = init_layer2_table_mmx; - cpu_opts.mpl_dct64 = dct64_3dnowext; - done = 1; - } - } - #endif - #ifdef OPT_SSE - if( !done && (auto_choose || !strcasecmp(param.cpu, "sse")) - && cpu_sse(cf) && cpu_mmx(cf) ) - { - int go = 1; - if(param.force_rate) - { - #ifdef PENTIUM_FALLBACK - if(!auto_choose) error("I refuse to choose SSE as this will screw up with forced rate!"); - else if(param.verbose) fprintf(stderr, "Note: Not choosing SSE because flexible rate not supported.\n"); - - go = 0; - #else - error("You will hear some awful sound because of flexible rate being chosen with SSE decoder!"); - #endif - } - if(go){ /* temporary hack for flexible rate bug, not going indent this - fix it instead! */ - chosen = "SSE"; - cpu_opts.synth_1to1 = synth_1to1_sse; - cpu_opts.dct64 = dct64_mmx; /* only use the sse version in the synth_1to1_sse */ - cpu_opts.decwin = decwin_mmx; - cpu_opts.make_decode_tables = make_decode_tables_mmx; - cpu_opts.init_layer3_gainpow2 = init_layer3_gainpow2_mmx; - cpu_opts.init_layer2_table = init_layer2_table_mmx; - cpu_opts.mpl_dct64 = dct64_sse; - done = 1; - } - } - #endif - #ifdef OPT_3DNOW - cpu_opts.dct36 = dct36; - /* TODO: make autodetection for _all_ x86 optimizations (maybe just for i586+ and keep separate 486 build?) */ - /* check cpuflags bit 31 (3DNow!) and 23 (MMX) */ - if( !done && (auto_choose || !strcasecmp(param.cpu, "3dnow")) - && (param.stat_3dnow < 2) - && ((param.stat_3dnow == 1) || (cpu_3dnow(cf) && cpu_mmx(cf)))) - { - chosen = "3DNow"; - cpu_opts.dct36 = dct36_3dnow; /* 3DNow! optimized dct36() */ - cpu_opts.synth_1to1 = synth_1to1_3dnow; - cpu_opts.dct64 = dct64_i386; /* use the 3dnow one? */ - done = 1; - } - #endif - #ifdef OPT_MMX - if( !done && (auto_choose || !strcasecmp(param.cpu, "mmx")) - && cpu_mmx(cf) ) - { - int go = 1; - if(param.force_rate) - { - #ifdef PENTIUM_FALLBACK - if(!auto_choose) error("I refuse to choose MMX as this will screw up with forced rate!"); - else if(param.verbose) fprintf(stderr, "Note: Not choosing MMX because flexible rate not supported.\n"); - - go = 0; - #else - error("You will hear some awful sound because of flexible rate being chosen with MMX decoder!"); - #endif - } - if(go){ /* temporary hack for flexible rate bug, not going indent this - fix it instead! */ - chosen = "MMX"; - cpu_opts.synth_1to1 = synth_1to1_mmx; - cpu_opts.dct64 = dct64_mmx; - cpu_opts.decwin = decwin_mmx; - cpu_opts.make_decode_tables = make_decode_tables_mmx; - cpu_opts.init_layer3_gainpow2 = init_layer3_gainpow2_mmx; - cpu_opts.init_layer2_table = init_layer2_table_mmx; - done = 1; - } - } - #endif - #ifdef OPT_I586 - if(!done && (auto_choose || !strcasecmp(param.cpu, "i586"))) - { - chosen = "i586/pentium"; - cpu_opts.synth_1to1 = synth_1to1_i586; - cpu_opts.synth_1to1_i586_asm = synth_1to1_i586_asm; - cpu_opts.dct64 = dct64_i386; - done = 1; - } - #endif - #ifdef OPT_I586_DITHER - if(!done && (auto_choose || !strcasecmp(param.cpu, "i586_dither"))) - { - chosen = "dithered i586/pentium"; - cpu_opts.synth_1to1 = synth_1to1_i586; - cpu_opts.dct64 = dct64_i386; - cpu_opts.synth_1to1_i586_asm = synth_1to1_i586_asm_dither; - done = 1; - } - #endif - } - #ifdef OPT_I486 /* that won't cooperate nicely in multi opt mode - forcing i486 in layer3.c */ - if(!done && (auto_choose || !strcasecmp(param.cpu, "i486"))) - { - chosen = "i486"; - cpu_opts.synth_1to1 = synth_1to1_i386; /* i486 function is special */ - cpu_opts.dct64 = dct64_i386; - done = 1; - } - #endif - #ifdef OPT_I386 - if(!done && (auto_choose || !strcasecmp(param.cpu, "i386"))) - { - chosen = "i386"; - cpu_opts.synth_1to1 = synth_1to1_i386; - cpu_opts.dct64 = dct64_i386; - done = 1; - } - #endif - - if(done) /* set common x86 functions */ - { - cpu_opts.synth_1to1_mono = synth_1to1_mono_i386; - cpu_opts.synth_1to1_mono2stereo = synth_1to1_mono2stereo_i386; - cpu_opts.synth_1to1_8bit = synth_1to1_8bit_i386; - cpu_opts.synth_1to1_8bit_mono = synth_1to1_8bit_mono_i386; - cpu_opts.synth_1to1_8bit_mono2stereo = synth_1to1_8bit_mono2stereo_i386; - } - #endif /* OPT_X86 */ - - #ifdef OPT_ALTIVEC - if(!done && (auto_choose || !strcasecmp(param.cpu, "altivec"))) - { - chosen = "AltiVec"; - cpu_opts.dct64 = dct64_altivec; - cpu_opts.synth_1to1 = synth_1to1_altivec; - cpu_opts.synth_1to1_mono = synth_1to1_mono_altivec; - cpu_opts.synth_1to1_mono2stereo = synth_1to1_mono2stereo_altivec; - cpu_opts.synth_1to1_8bit = synth_1to1_8bit_altivec; - cpu_opts.synth_1to1_8bit_mono = synth_1to1_8bit_mono_altivec; - cpu_opts.synth_1to1_8bit_mono2stereo = synth_1to1_8bit_mono2stereo_altivec; - done = 1; - } - #endif - - #ifdef OPT_GENERIC - if(!done && (auto_choose || !strcasecmp(param.cpu, "generic"))) - { - chosen = "generic"; - cpu_opts.dct64 = dct64; - cpu_opts.synth_1to1 = synth_1to1; - cpu_opts.synth_1to1_mono = synth_1to1_mono; - cpu_opts.synth_1to1_mono2stereo = synth_1to1_mono2stereo; - cpu_opts.synth_1to1_8bit = synth_1to1_8bit; - cpu_opts.synth_1to1_8bit_mono = synth_1to1_8bit_mono; - cpu_opts.synth_1to1_8bit_mono2stereo = synth_1to1_8bit_mono2stereo; - done = 1; - } - #endif - - if(done) - { - if(!param.remote && !param.quiet) fprintf(stderr, "decoder: %s\n", chosen); - return 1; - } - else - { - error("Could not set optimization!"); - return 0; - } -} -#endif diff --git a/src/optimize.h b/src/optimize.h deleted file mode 100644 index d813e502..00000000 --- a/src/optimize.h +++ /dev/null @@ -1,333 +0,0 @@ -/* - optimize: get a grip on the different optimizations - - copyright 2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, taking from mpg123.[hc] - - for building mpg123 with one optimization only, you have to choose exclusively between - OPT_GENERIC (generic C code for everyone) - OPT_I386 (Intel i386) - OPT_I486 (...) - OPT_I586 (Intel Pentium) - OPT_I586_DITHER (Intel Pentium with dithering/noise shaping for enhanced quality) - OPT_MMX (Intel Pentium and compatibles with MMX, fast, but not the best accuracy) - OPT_3DNOW (AMD 3DNow!, K6-2/3, Athlon, compatibles...) - OPT_ALTIVEC (Motorola/IBM PPC with AltiVec under MacOSX) - - or you define OPT_MULTI and give a combination which makes sense (do not include i486, do not mix altivec and x86). - - I still have to examine the dynamics of this here together with REAL_IS_FIXED. -*/ - -/* this is included in mpg123.h, which includes config.h */ -#ifdef CCALIGN -#define ALIGNED(a) __attribute__((aligned(a))) -#else -#define ALIGNED(a) -#endif - -/* the optimizations only cover the synth1to1 mode and the dct36 function */ -/* the first two types are needed in set_synth_functions regardless of optimizations */ -typedef int (*func_synth)(real *,int,unsigned char *,int *); -typedef int (*func_synth_mono)(real *,unsigned char *,int *); -typedef void (*func_dct36)(real *,real *,real *,real *,real *); -typedef void (*func_dct64)(real *,real *,real *); -typedef void (*func_make_decode_tables)(long); -typedef real (*func_init_layer3_gainpow2)(int); -typedef real* (*func_init_layer2_table)(real*, double); -typedef int (*func_synth_pent)(real *,int,unsigned char *); - -/* last headaches about getting mmx hardcode out */ -real init_layer3_gainpow2(int i); -real* init_layer2_table(real *table, double m); -void make_decode_tables(scale_t scaleval); - -/* only 3dnow replaces that one, it's internal to layer3.c otherwise */ -void dct36(real *,real *,real *,real *,real *); -#define opt_dct36 dct36 -/* only mmx replaces those */ -#define opt_make_decode_tables make_decode_tables -#define opt_decwin decwin -#define opt_init_layer3_gainpow2 init_layer3_gainpow2 -#define opt_init_layer2_table init_layer2_table - -#ifdef OPT_GENERIC - #define PENTIUM_FALLBACK - void dct64(real *,real *,real *); - int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt); - int synth_1to1 (real *,int,unsigned char *,int *); - int synth_1to1_8bit (real *,int,unsigned char *,int *); - int synth_1to1_mono (real *,unsigned char *,int *); - int synth_1to1_mono2stereo (real *,unsigned char *,int *); - int synth_1to1_8bit_mono (real *,unsigned char *,int *); - int synth_1to1_8bit_mono2stereo (real *,unsigned char *,int *); - #ifndef OPT_MULTI - #define opt_dct64 dct64 - #define opt_synth_1to1 synth_1to1 - #define opt_synth_1to1_mono synth_1to1_mono - #define opt_synth_1to1_mono2stereo synth_1to1_mono2stereo - #define opt_synth_1to1_8bit synth_1to1_8bit - #define opt_synth_1to1_8bit_mono synth_1to1_8bit_mono - #define opt_synth_1to1_8bit_mono2stereo synth_1to1_8bit_mono2stereo - #endif -#endif - -/* i486 is special */ -#ifdef OPT_I486 - #define OPT_I386 - #define FIR_BUFFER_SIZE 128 - int synth_1to1_486(real *bandPtr,int channel,unsigned char *out,int nb_blocks); - void dct64_i486(int *a,int *b,real *c); /* not used generally */ -#endif - -#ifdef OPT_I386 - #define PENTIUM_FALLBACK - #define OPT_X86 - int synth_1to1_i386(real *bandPtr,int channel,unsigned char *out,int *pnt); - #ifndef OPT_MULTI - #define opt_synth_1to1 synth_1to1_i386 - #endif -#endif - -#ifdef OPT_I586 - #define PENTIUM_FALLBACK - #define OPT_PENTIUM - #define OPT_X86 - int synth_1to1_i586(real *bandPtr,int channel,unsigned char *out,int *pnt); - int synth_1to1_i586_asm(real *,int,unsigned char *); - #ifndef OPT_MULTI - #define opt_synth_1to1 synth_1to1_i586 - #define opt_synth_1to1_i586_asm synth_1to1_i586_asm - #endif -#endif - -#ifdef OPT_I586_DITHER - #define PENTIUM_FALLBACK - #define OPT_PENTIUM - #define OPT_X86 - int synth_1to1_i586(real *bandPtr,int channel,unsigned char *out,int *pnt); - int synth_1to1_i586_asm_dither(real *,int,unsigned char *); - #ifndef OPT_MULTI - #define opt_synth_1to1 synth_1to1_i586 - #define opt_synth_1to1_i586_asm synth_1to1_i586_asm_dither - #endif -#endif - -/* That one has by far the most ugly hacks to make it cooperative. */ -#ifdef OPT_MMX - #define OPT_MMXORSSE - #define OPT_X86 - real init_layer3_gainpow2_mmx(int i); - real* init_layer2_table_mmx(real *table, double m); - /* I think one can optimize storage here with the normal decwin */ - extern real decwin_mmx[512+32]; - void dct64_mmx(real *,real *,real *); - int synth_1to1_mmx(real *bandPtr,int channel,unsigned char *out,int *pnt); - void make_decode_tables_mmx(long scaleval); /* tabinit_mmx.s */ - #ifndef OPT_MULTI - #undef opt_decwin - #define opt_decwin decwin_mmx - #define opt_dct64 dct64_mmx - #define opt_synth_1to1 synth_1to1_mmx - #undef opt_make_decode_tables - #define opt_make_decode_tables make_decode_tables_mmx - #undef opt_init_layer3_gainpow2 - #define opt_init_layer3_gainpow2 init_layer3_gainpow2_mmx - #undef opt_init_layer2_table - #define opt_init_layer2_table init_layer2_table_mmx - #define OPT_MMX_ONLY - #endif -#endif - -/* first crude hack into our source */ -#ifdef OPT_SSE - #define OPT_MMXORSSE - #define OPT_MPLAYER - #define OPT_X86 - real init_layer3_gainpow2_mmx(int i); - real* init_layer2_table_mmx(real *table, double m); - /* I think one can optimize storage here with the normal decwin */ - extern real decwin_mmx[512+32]; - void dct64_mmx(real *,real *,real *); - void dct64_sse(real *,real *,real *); - int synth_1to1_sse(real *bandPtr,int channel,unsigned char *out,int *pnt); - void make_decode_tables_mmx(long scaleval); /* tabinit_mmx.s */ - /* ugly! */ - extern func_dct64 mpl_dct64; - #ifndef OPT_MULTI - #define opt_mpl_dct64 dct64_sse - #undef opt_decwin - #define opt_decwin decwin_mmx - #define opt_dct64 dct64_mmx /* dct64_sse is silent in downsampling modes */ - #define opt_synth_1to1 synth_1to1_sse - #undef opt_make_decode_tables - #define opt_make_decode_tables make_decode_tables_mmx - #undef opt_init_layer3_gainpow2 - #define opt_init_layer3_gainpow2 init_layer3_gainpow2_mmx - #undef opt_init_layer2_table - #define opt_init_layer2_table init_layer2_table_mmx - #define OPT_MMX_ONLY /* watch out! */ - #endif -#endif - -/* first crude hack into our source */ -#ifdef OPT_3DNOWEXT - #define OPT_MMXORSSE - #define OPT_MPLAYER - #define OPT_X86 - real init_layer3_gainpow2_mmx(int i); - real* init_layer2_table_mmx(real *table, double m); - /* I think one can optimize storage here with the normal decwin */ - extern real decwin_mmx[512+32]; - void dct64_mmx(real *,real *,real *); - void dct64_3dnowext(real *,real *,real *); - void dct36_3dnowext(real *,real *,real *,real *,real *); - int synth_1to1_sse(real *bandPtr,int channel,unsigned char *out,int *pnt); - void make_decode_tables_mmx(long scaleval); /* tabinit_mmx.s */ - /* ugly! */ - extern func_dct64 mpl_dct64; - #ifndef OPT_MULTI - #define opt_mpl_dct64 dct64_3dnowext - #undef opt_dct36 - #define opt_dct36 dct36_3dnowext - #undef opt_decwin - #define opt_decwin decwin_mmx - #define opt_dct64 dct64_mmx /* dct64_sse is silent in downsampling modes */ - #define opt_synth_1to1 synth_1to1_sse - #undef opt_make_decode_tables - #define opt_make_decode_tables make_decode_tables_mmx - #undef opt_init_layer3_gainpow2 - #define opt_init_layer3_gainpow2 init_layer3_gainpow2_mmx - #undef opt_init_layer2_table - #define opt_init_layer2_table init_layer2_table_mmx - #define OPT_MMX_ONLY /* watch out! */ - #endif -#endif - - -#ifndef OPT_MMX_ONLY -extern real *pnts[5]; -extern real decwin[512+32]; -#endif - -/* 3dnow used to use synth_1to1_i586 for mono / 8bit conversion - was that intentional? */ -/* I'm trying to skip the pentium code here ... until I see that that is indeed a bad idea */ -#ifdef OPT_3DNOW - #define K6_FALLBACK /* a fallback for 3DNowExt */ - #define OPT_X86 - void dct36_3dnow(real *,real *,real *,real *,real *); - int synth_1to1_3dnow(real *,int,unsigned char *,int *); - #ifndef OPT_MULTI - #undef opt_dct36 - #define opt_dct36 dct36_3dnow - #define opt_synth_1to1 synth_1to1_3dnow - #endif -#endif - -#ifdef OPT_X86 - /* these have to be merged back into one! */ - unsigned int getcpuid(); - unsigned int getextcpuflags(); - unsigned int getstdcpuflags(); - unsigned int getstd2cpuflags(); - - void dct64_i386(real *,real *,real *); - int synth_1to1_mono_i386(real *,unsigned char *,int *); - int synth_1to1_mono2stereo_i386(real *,unsigned char *,int *); - int synth_1to1_8bit_i386(real *,int,unsigned char *,int *); - int synth_1to1_8bit_mono_i386(real *,unsigned char *,int *); - int synth_1to1_8bit_mono2stereo_i386(real *,unsigned char *,int *); - #ifndef OPT_MULTI - #ifndef opt_dct64 - #define opt_dct64 dct64_i386 /* default one even for 3dnow and i486 in decode_2to1, decode_ntom */ - #endif - #define opt_synth_1to1_mono synth_1to1_mono_i386 - #define opt_synth_1to1_mono2stereo synth_1to1_mono2stereo_i386 - #define opt_synth_1to1_8bit synth_1to1_8bit_i386 - #define opt_synth_1to1_8bit_mono synth_1to1_8bit_mono_i386 - #define opt_synth_1to1_8bit_mono2stereo synth_1to1_8bit_mono2stereo_i386 - #endif -#endif - -#ifdef OPT_ALTIVEC - void dct64_altivec(real *out0,real *out1,real *samples); - int synth_1to1_altivec(real *,int,unsigned char *,int *); - int synth_1to1_mono_altivec(real *,unsigned char *,int *); - int synth_1to1_mono2stereo_altivec(real *,unsigned char *,int *); - int synth_1to1_8bit_altivec(real *,int,unsigned char *,int *); - int synth_1to1_8bit_mono_altivec(real *,unsigned char *,int *); - int synth_1to1_8bit_mono2stereo_altivec(real *,unsigned char *,int *); - #ifndef OPT_MULTI - #define opt_dct64 dct64_altivec - #define opt_synth_1to1 synth_1to1_altivec - #define opt_synth_1to1_mono synth_1to1_mono_altivec - #define opt_synth_1to1_mono2stereo synth_1to1_mono2stereo_altivec - #define opt_synth_1to1_8bit synth_1to1_8bit_altivec - #define opt_synth_1to1_8bit_mono synth_1to1_8bit_mono_altivec - #define opt_synth_1to1_8bit_mono2stereo synth_1to1_8bit_mono2stereo_altivec - #endif -#endif - -/* used for multi opt mode and the single 3dnow mode to have the old 3dnow test flag still working */ -void test_cpu_flags(); -void list_cpu_opt(); - -#ifdef OPT_MULTI - int set_cpu_opt(); - /* a simple global struct to hold the decoding function pointers, could be localized later if really wanted */ - typedef struct - { - func_synth synth_1to1; - func_synth_mono synth_1to1_mono; - func_synth_mono synth_1to1_mono2stereo; - func_synth synth_1to1_8bit; - func_synth_mono synth_1to1_8bit_mono; - func_synth_mono synth_1to1_8bit_mono2stereo; - #ifdef OPT_PENTIUM - func_synth_pent synth_1to1_i586_asm; - #endif - #ifdef OPT_MMXORSSE - real *decwin; /* ugly... needed to get mmx together with folks*/ - func_make_decode_tables make_decode_tables; - func_init_layer3_gainpow2 init_layer3_gainpow2; - func_init_layer2_table init_layer2_table; - #endif - #ifdef OPT_3DNOW - func_dct36 dct36; - #endif - func_dct64 dct64; - #ifdef OPT_MPLAYER - func_dct64 mpl_dct64; - #endif - } struct_opts; - extern struct_opts cpu_opts; - - #define opt_synth_1to1 (cpu_opts.synth_1to1) - #define opt_synth_1to1_mono (cpu_opts.synth_1to1_mono) - #define opt_synth_1to1_mono2stereo (cpu_opts.synth_1to1_mono2stereo) - #define opt_synth_1to1_8bit (cpu_opts.synth_1to1_8bit) - #define opt_synth_1to1_8bit_mono (cpu_opts.synth_1to1_8bit_mono) - #define opt_synth_1to1_8bit_mono2stereo (cpu_opts.synth_1to1_8bit_mono2stereo) - #ifdef OPT_PENTIUM - #define opt_synth_1to1_i586_asm (cpu_opts.synth_1to1_i586_asm) - #endif - #ifdef OPT_MMXORSSE - #undef opt_make_decode_tables - #define opt_make_decode_tables (cpu_opts.make_decode_tables) - #undef opt_decwin - #define opt_decwin cpu_opts.decwin - #undef opt_init_layer3_gainpow2 - #define opt_init_layer3_gainpow2 (cpu_opts.init_layer3_gainpow2) - #undef opt_init_layer2_table - #define opt_init_layer2_table (cpu_opts.init_layer2_table) - #endif - #ifdef OPT_3DNOW - #undef opt_dct36 - #define opt_dct36 (cpu_opts.dct36) - #endif - #define opt_dct64 (cpu_opts.dct64) - #ifdef OPT_MPLAYER - #define opt_mpl_dct64 (cpu_opts.mpl_dct64) - #endif -#endif diff --git a/src/playlist.c b/src/playlist.c index c5dc57c7..92b99ae2 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -8,7 +8,7 @@ If we officially support Windows again, we should have this reworked to really cope with Windows paths, too. */ -#include "mpg123.h" +#include "mpg123app.h" #include "getlopt.h" /* for loptind */ #include "term.h" /* for term_restore */ #include "playlist.h" @@ -57,8 +57,8 @@ void prepare_playlist(int argc, char** argv) } if(param.shuffle == 1) shuffle_playlist(); /* Don't need these anymore, we have copies! */ - free_stringbuf(&pl.linebuf); - free_stringbuf(&pl.dir); + mpg123_free_string(&pl.linebuf); + mpg123_free_string(&pl.dir); } char *get_next_file() @@ -86,7 +86,7 @@ char *get_next_file() /* randomly select files, with repeating */ else newfile = pl.list[ (size_t) rand() % pl.fill ].url; - return newfile; + return (newfile != NULL && strcmp(newfile, "-") && strcmp(newfile, "")) ? newfile : NULL; } /* It doesn't really matter on program exit, but anyway... @@ -107,8 +107,8 @@ void free_playlist() pl.size = 0; debug("free()d the playlist"); } - free_stringbuf(&pl.linebuf); - free_stringbuf(&pl.dir); + mpg123_free_string(&pl.linebuf); + mpg123_free_string(&pl.dir); } /* the constructor... */ @@ -122,8 +122,8 @@ void init_playlist() pl.pos = 0; pl.list = NULL; pl.alloc_step = 10; - init_stringbuf(&pl.dir); - init_stringbuf(&pl.linebuf); + mpg123_init_string(&pl.dir); + mpg123_init_string(&pl.linebuf); pl.type = UNKNOWN; pl.loop = param.loop; } @@ -148,7 +148,7 @@ int add_next_file (int argc, char *argv[]) if ((slashpos=strrchr(param.listname, '/'))) { /* up to and including /, with space for \0 */ - if(resize_stringbuf(&pl.dir, 2 + slashpos - param.listname)) + if(mpg123_resize_string(&pl.dir, 2 + slashpos - param.listname)) { memcpy(pl.dir.p, param.listname, pl.dir.size-1); pl.dir.p[pl.dir.size-1] = 0; @@ -176,14 +176,15 @@ int add_next_file (int argc, char *argv[]) else if (!strncmp(param.listname, "http://", 7)) { int fd; - char *listmime = NULL; - fd = http_open(param.listname, &listmime); - debug1("listmime: %p", (void*) listmime); - if(listmime != NULL) + struct httpdata htd; + httpdata_init(&htd); + fd = http_open(param.listname, &htd); + debug1("htd.content_type.p: %p", (void*) htd.content_type.p); + if(htd.content_type.p != NULL) { int mimi; - debug1("listmime value: %s", listmime); - mimi = debunk_mime(listmime); + debug1("htd.content_type.p value: %s", htd.content_type.p); + mimi = debunk_mime(htd.content_type.p); if(mimi & IS_M3U) pl.type = M3U; else if(mimi & IS_PLS) pl.type = PLS; @@ -205,10 +206,10 @@ int add_next_file (int argc, char *argv[]) return 1; } } - fprintf(stderr, "Error: unknown playlist MIME type %s; maybe "PACKAGE_NAME" can support it in future if you report this to the maintainer.\n", listmime); + fprintf(stderr, "Error: unknown playlist MIME type %s; maybe "PACKAGE_NAME" can support it in future if you report this to the maintainer.\n", htd.content_type.p); fd = -1; } - free(listmime); + httpdata_reset(&htd); } if(fd < 0) { @@ -250,7 +251,7 @@ int add_next_file (int argc, char *argv[]) /* have is the length of the string read, without the closing \0 */ if(pl.linebuf.size <= have+1) { - if(!resize_stringbuf(&pl.linebuf, pl.linebuf.size+LINEBUF_STEP)) + if(!mpg123_resize_string(&pl.linebuf, pl.linebuf.size+LINEBUF_STEP)) { error("cannot increase line buffer"); break; @@ -382,7 +383,7 @@ int add_next_file (int argc, char *argv[]) need = pl.dir.size + strlen(pl.linebuf.p+line_offset); if(pl.linebuf.size < need) { - if(!resize_stringbuf(&pl.linebuf, need)) + if(!mpg123_resize_string(&pl.linebuf, need)) { error("unable to enlarge linebuf for appending path! skipping"); continue; diff --git a/src/playlist.h b/src/playlist.h index 31e5d3e0..ef51f7a3 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -1,14 +1,14 @@ /* playlist: playlist logic - copyright 1995-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright 1995-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp, outsourced/reorganized by Thomas Orgis */ #ifndef MPG123_PLAYLIST_H #define MPG123_PLAYLIST_H -#include "stringbuf.h" +#include "mpg123.h" enum playlist_type { UNKNOWN = 0, M3U, PLS, NO_LIST }; @@ -28,8 +28,8 @@ typedef struct playlist_struct size_t pos; size_t alloc_step; struct listitem* list; - struct stringbuf linebuf; - struct stringbuf dir; + mpg123_string linebuf; + mpg123_string dir; enum playlist_type type; } playlist_struct; diff --git a/src/readers.c b/src/readers.c deleted file mode 100644 index 45ac51ee..00000000 --- a/src/readers.c +++ /dev/null @@ -1,464 +0,0 @@ -/* - readers.c: reading input data - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include "mpg123.h" -#include "httpget.h" -#include -#include -#include - -#include "buffer.h" -#include "common.h" -#include "icy.h" - -static off_t get_fileinfo(struct reader *,char *buf); - -static ssize_t icy_fullread(struct reader *rds,unsigned char *buf, ssize_t count); -static ssize_t plain_fullread(struct reader *rds,unsigned char *buf, ssize_t count); -ssize_t (*fullread)(struct reader *,unsigned char *, ssize_t) = plain_fullread; -static ssize_t timeout_read(struct reader *rds, void *buf, size_t count); -static ssize_t plain_read(struct reader *rds, void *buf, size_t count); -ssize_t (*fdread)(struct reader *rds, void *buf, size_t count) = plain_read; - -static ssize_t plain_read(struct reader *rds, void *buf, size_t count){ return read(rds->filept, buf, count); } - -#ifndef WIN32 -/* Wait for data becoming available, allowing soft-broken network connection to die - This is needed for Shoutcast servers that have forgotten about us while connection was temporarily down. */ -static ssize_t timeout_read(struct reader *rds, void *buf, size_t count) -{ - struct timeval tv; - ssize_t ret = 0; - fd_set fds; - tv.tv_sec = rds->timeout_sec; - tv.tv_usec = 0; - FD_ZERO(&fds); - FD_SET(rds->filept, &fds); - ret = select(rds->filept+1, &fds, NULL, NULL, &tv); - if(ret > 0) ret = read(rds->filept, buf, count); - else - { - ret=-1; /* no activity is the error */ - error("stream timed out"); - } - return ret; -} -#endif - -/* stream based operation with icy meta data*/ -static ssize_t icy_fullread(struct reader *rds,unsigned char *buf, ssize_t count) -{ - ssize_t ret,cnt; - cnt = 0; - - /* - We check against READER_ID3TAG instead of rds->filelen >= 0 because if we got the ID3 TAG we know we have the end of the file. - If we don't have an ID3 TAG, then it is possible the file has grown since we started playing, so we want to keep reading from it if possible. - */ - if((rds->flags & READER_ID3TAG) && rds->filepos + count > rds->filelen) count = rds->filelen - rds->filepos; - - while(cnt < count) - { - /* all icy code is inside this if block, everything else is the plain fullread we know */ - /* debug1("read: %li left", (long) count-cnt); */ - if(icy.interval && (rds->filepos+count > icy.next)) - { - unsigned char temp_buff; - size_t meta_size; - ssize_t cut_pos; - - /* we are near icy-metaint boundary, read up to the boundary */ - cut_pos = icy.next-rds->filepos; - ret = fdread(rds,buf,cut_pos); - if(ret < 0) return ret; - - rds->filepos += ret; - cnt += ret; - - /* now off to read icy data */ - - /* one byte icy-meta size (must be multiplied by 16 to get icy-meta length) */ - ret = fdread(rds,&temp_buff,1); - if(ret < 0) return ret; - if(ret == 0) break; - - debug2("got meta-size byte: %u, at filepos %li", temp_buff, (long)rds->filepos ); - rds->filepos += ret; /* 1... */ - - if((meta_size = ((size_t) temp_buff) * 16)) - { - /* we have got some metadata */ - char *meta_buff; - meta_buff = (char*) malloc(meta_size+1); - if(meta_buff != NULL) - { - ret = fdread(rds,meta_buff,meta_size); - meta_buff[meta_size] = 0; /* string paranoia */ - if(ret < 0) return ret; - - rds->filepos += ret; - - if(icy.data) free(icy.data); - icy.data = meta_buff; - icy.changed = 1; - debug2("icy-meta: %s size: %d bytes", icy.data, (int)meta_size); - } - else - { - error1("cannot allocate memory for meta_buff (%lu bytes) ... trying to skip the metadata!", (unsigned long)meta_size); - rds->skip_bytes(rds, meta_size); - } - } - icy.next = rds->filepos+icy.interval; - } - - ret = fdread(rds,buf+cnt,count-cnt); - if(ret < 0) return ret; - if(ret == 0) break; - - rds->filepos += ret; - cnt += ret; - } - /* debug1("done reading, got %li", (long)cnt); */ - return cnt; -} - -/* stream based operation */ -static ssize_t plain_fullread(struct reader *rds,unsigned char *buf, ssize_t count) -{ - ssize_t ret,cnt=0; - - /* - We check against READER_ID3TAG instead of rds->filelen >= 0 because if we got the ID3 TAG we know we have the end of the file. - If we don't have an ID3 TAG, then it is possible the file has grown since we started playing, so we want to keep reading from it if possible. - */ - if((rds->flags & READER_ID3TAG) && rds->filepos + count > rds->filelen) count = rds->filelen - rds->filepos; - while(cnt < count) - { - ret = fdread(rds,buf+cnt,count-cnt); - if(ret < 0) return ret; - if(ret == 0) break; - rds->filepos += ret; - cnt += ret; - } - return cnt; -} - -static off_t stream_lseek(struct reader *rds, off_t pos, int whence) -{ - off_t ret; - ret = lseek(rds->filept, pos, whence); - if (ret >= 0) rds->filepos = ret; - - return ret; -} - -static int default_init(struct reader *rds) -{ - char buf[128]; -#ifndef WIN32 - if(param.timeout > 0) - { - fcntl(rds->filept, F_SETFL, O_NONBLOCK); - fdread = timeout_read; - rds->timeout_sec = param.timeout; - rds->flags |= READER_NONBLOCK; - } - else -#endif -fdread = plain_read; - - rds->filelen = get_fileinfo(rds,buf); - rds->filepos = 0; - if(rds->filelen >= 0) - { - rds->flags |= READER_SEEKABLE; - if(!strncmp(buf,"TAG",3)) - { - rds->flags |= READER_ID3TAG; - memcpy(rds->id3buf,buf,128); - } - } - return 0; -} - -void stream_close(struct reader *rds) -{ - if (rds->flags & READER_FD_OPENED) close(rds->filept); -} - -/**************************************** - * HACK,HACK,HACK: step back frames - * can only work if the 'stream' isn't a real stream but a file - * returns 0 on success; - */ -static int stream_back_bytes(struct reader *rds, off_t bytes) -{ - if(stream_lseek(rds,-bytes,SEEK_CUR) < 0) return -1; - /* you sure you want the buffer to resync here? */ - if(param.usebuffer) buffer_resync(); - - return 0; -} - -/* this function strangely is defined to seek num frames _back_ (and is called with -offset - duh!) */ -/* also... let that int be a long in future! */ -static int stream_back_frame(struct reader *rds,struct frame *fr,long num) -{ - if(rds->flags & READER_SEEKABLE) - { - unsigned long newframe, preframe; - if(num > 0) /* back! */ - { - if(num > fr->num) newframe = 0; - else newframe = fr->num-num; - } - else newframe = fr->num-num; - - /* two leading frames? hm, doesn't seem to be really needed... */ - /*if(newframe > 1) newframe -= 2; - else newframe = 0;*/ - - /* now seek to nearest leading index position and read from there until newframe is reached */ - if(stream_lseek(rds,frame_index_find(newframe, &preframe),SEEK_SET) < 0) - return -1; - debug2("going to %lu; just got %lu", newframe, preframe); - fr->num = preframe; - while(fr->num < newframe) - { - /* try to be non-fatal now... frameNum only gets advanced on success anyway */ - if(!read_frame(fr)) break; - } - /* this is not needed at last? */ - /*read_frame(fr); - read_frame(fr);*/ - - if(fr->lay == 3) set_pointer(512); - - debug1("arrived at %lu", fr->num); - - if(param.usebuffer) buffer_resync(); - - return 0; - } - else return -1; /* invalid, no seek happened */ -} - -static int stream_head_read(struct reader *rds,unsigned long *newhead) -{ - unsigned char hbuf[4]; - - if(fullread(rds,hbuf,4) != 4) return FALSE; - - *newhead = ((unsigned long) hbuf[0] << 24) | - ((unsigned long) hbuf[1] << 16) | - ((unsigned long) hbuf[2] << 8) | - (unsigned long) hbuf[3]; - - return TRUE; -} - -static int stream_head_shift(struct reader *rds,unsigned long *head) -{ - unsigned char hbuf; - - if(fullread(rds,&hbuf,1) != 1) return 0; - - *head <<= 8; - *head |= hbuf; - *head &= 0xffffffff; - return 1; -} - -/* returns reached position... negative ones are bad */ -static off_t stream_skip_bytes(struct reader *rds,off_t len) -{ - if (rds->filelen >= 0) - { - off_t ret = stream_lseek(rds, len, SEEK_CUR); - if(param.usebuffer) buffer_resync(); - - return ret; - } - else if(len >= 0) - { - unsigned char buf[1024]; /* ThOr: Compaq cxx complained and it makes sense to me... or should one do a cast? What for? */ - off_t ret; - while (len > 0) - { - off_t num = len < sizeof(buf) ? len : sizeof(buf); - ret = fullread(rds, buf, num); - if (ret < 0) return ret; - len -= ret; - } - return rds->filepos; - } - else return -1; -} - -static int stream_read_frame_body(struct reader *rds,unsigned char *buf, int size) -{ - long l; - - if( (l=fullread(rds,buf,size)) != size) - { - if(l <= 0) return 0; - - memset(buf+l,0,size-l); - } - - return 1; -} - -static off_t stream_tell(struct reader *rds) -{ - return rds->filepos; -} - -static void stream_rewind(struct reader *rds) -{ - stream_lseek(rds,0,SEEK_SET); - if(param.usebuffer) buffer_resync(); -} - -/* - * returns length of a file (if filept points to a file) - * reads the last 128 bytes information into buffer - * ... that is not totally safe... - */ -static off_t get_fileinfo(struct reader *rds,char *buf) -{ - off_t len; - - if((len=lseek(rds->filept,0,SEEK_END)) < 0) return -1; - - if(lseek(rds->filept,-128,SEEK_END) < 0) return -1; - - if(fullread(rds,(unsigned char *)buf,128) != 128) return -1; - - if(!strncmp(buf,"TAG",3)) len -= 128; - - if(lseek(rds->filept,0,SEEK_SET) < 0) return -1; - - if(len <= 0) return -1; - - return len; -} - -/***************************************************************** - * read frame helper - */ - -struct reader *rd; -struct reader readers[] = -{ -#ifdef READ_SYSTEM - { - system_init, - NULL, /* filled in by system_init() */ - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - } , -#endif - { - default_init, - stream_close, - stream_head_read, - stream_head_shift, - stream_skip_bytes, - stream_read_frame_body, - stream_back_bytes, - stream_back_frame, - stream_tell, - stream_rewind - } , - { - NULL - } -}; - - -/* open the device to read the bit stream from it */ -int open_stream(char *bs_filenam,int fd) -{ - int i; - int filept_opened = 1; - int filept; /* descriptor of opened file/stream */ - - clear_icy(); - if(!bs_filenam) /* no file to open, got a descriptor (stdin) */ - { - if(fd < 0) /* special: read from stdin */ - { - filept = 0; - filept_opened = 0; /* and don't try to close it... */ - } - else filept = fd; - } - else if (!strncmp(bs_filenam, "http://", 7)) /* http stream */ - { - char* mime = NULL; - filept = http_open(bs_filenam, &mime); - /* now check if we got sth. and if we got sth. good */ - if((filept >= 0) && (mime != NULL) && strcmp(mime, "audio/mpeg") && strcmp(mime, "audio/x-mpeg")) - { - fprintf(stderr, "Error: unknown mpeg MIME type %s - is it perhaps a playlist (use -@)?\nError: If you know the stream is mpeg1/2 audio, then please report this as "PACKAGE_NAME" bug\n", mime == NULL ? "" : mime); - filept = -1; - } - if(mime != NULL) free(mime); - if(filept < 0) return filept; /* error... */ - } - #ifndef O_BINARY - #define O_BINARY (0) - #endif - else if((filept = open(bs_filenam, O_RDONLY|O_BINARY)) < 0) /* a plain old file to open... */ - { - perror(bs_filenam); - return filept; /* error... */ - } - - /* now we have something behind filept and can init the reader */ - rd = NULL; - /* strongly considering removal of that loop...*/ - for(i=0;;i++) - { - readers[i].filelen = -1; - readers[i].filept = filept; - readers[i].flags = 0; - if(filept_opened) readers[i].flags |= READER_FD_OPENED; - if(!readers[i].init) - { - error1("no init for reader %i!", i); - return -1; - } - /* now use this reader if it successfully inits */ - if(readers[i].init(readers+i) >= 0) - { - rd = &readers[i]; - break; - } - } - - if(icy.interval) - { - fullread = icy_fullread; - icy.next = icy.interval; - } - else - { - fullread = plain_fullread; - } - - /* id3tag printing moved to read_frame */ - return filept; -} diff --git a/src/stringbuf.c b/src/stringbuf.c deleted file mode 100644 index fc371558..00000000 --- a/src/stringbuf.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - stringbuf: mimicking a bit of C++ to more safely handle strings - - copyright 2006-7 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "config.h" -#include "debug.h" -#include "stringbuf.h" -#include "mpg123.h" /* actually just for safe_realloc */ - -void init_stringbuf(struct stringbuf* sb) -{ - sb->p = NULL; - sb->size = 0; - sb->fill = 0; -} - -void free_stringbuf(struct stringbuf* sb) -{ - if(sb->p != NULL) - { - free(sb->p); - init_stringbuf(sb); - } -} - -int resize_stringbuf(struct stringbuf* sb, size_t new) -{ - debug3("resizing string pointer %p from %lu to %lu", (void*) sb->p, (unsigned long)sb->size, (unsigned long)new); - if(sb->size != new) - { - char* t; - debug("really!"); - t = (char*) safe_realloc(sb->p, new*sizeof(char)); - debug1("realloc returned %p", (void*) t); - if(t != NULL) - { - sb->p = t; - sb->size = new; - return 1; - } - else return 0; - } - else return 1; /* success */ -} - -int copy_stringbuf(struct stringbuf* from, struct stringbuf* to) -{ - if(resize_stringbuf(to, from->fill)) - { - memcpy(to->p, from->p, to->size); - to->fill = to->size; - return 1; - } - else return 0; -} - -int add_to_stringbuf(struct stringbuf* sb, char* stuff) -{ - size_t addl = strlen(stuff)+1; - debug1("adding %s", stuff); - if(sb->fill) - { - if(sb->size >= sb->fill-1+addl || resize_stringbuf(sb, sb->fill-1+addl)) - { - memcpy(sb->p+sb->fill-1, stuff, addl); - sb->fill += addl-1; - } - else return 0; - } - else - { - if(resize_stringbuf(sb, addl)) - { - memcpy(sb->p, stuff, addl); - sb->fill = addl; - } - else return 0; - } - return 1; -} - -int set_stringbuf(struct stringbuf* sb, char* stuff) -{ - sb->fill = 0; - return add_to_stringbuf(sb, stuff); -} diff --git a/src/stringbuf.h b/src/stringbuf.h deleted file mode 100644 index a7876ab3..00000000 --- a/src/stringbuf.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - stringbuf: mimicking a bit of C++ to more safely handle strings - - copyright 2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ -#ifndef MPG123_STRINGBUF_H -#define MPG123_STRINGBUF_H - -#include - -struct stringbuf -{ - char* p; - size_t size; - size_t fill; -}; - -void init_stringbuf(struct stringbuf* sb); -void free_stringbuf(struct stringbuf* sb); -/* returning 0 on error, 1 on success */ -int resize_stringbuf(struct stringbuf* sb, size_t new); -int copy_stringbuf(struct stringbuf* from, struct stringbuf* to); -int add_to_stringbuf(struct stringbuf* sb, char* stuff); -int set_stringbuf(struct stringbuf* sb, char* stuff); - -#endif diff --git a/src/system.c b/src/system.c deleted file mode 100644 index f9eca232..00000000 --- a/src/system.c +++ /dev/null @@ -1,493 +0,0 @@ -/* - system.c: system stream decoder (standalone) - - copyright 1997-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - grabs an audio stream inside a video/audio system stream - This Program outputs only the first audio stream to STDOUT - - currently this is an external program. You must pipe - your streams file to this program and the output to - the mpg123 player. e.g: - ./system < my_system_stream.mpg | mpg123 - -*/ - -#include -#include - -#include "mpg123.h" - -static int filept; -static int verbose = 1; - -#define PACKET_START 0x000001ba -#define STREAM_END 0x000001b9 -#define SYSTEM_STREAM 0x000001bb - -/* the following two types are not supported */ -#define AUDIO_STREAM 0x000001b8 -#define VIDEO_STREAM 0x000001b9 - -#define PADDING_STREAM 0x000001be -#define RESERVED_STREAM 0x000001bc -#define PRIVATE_STREAM_1 0x000001bd -#define PRIVATE_STREAM_2 0x000001bf - -static int system_back_frame(struct frame *fr,int num); -static int system_head_read(unsigned char *hbuf,unsigned long *newhead); -static int system_head_shift(unsigned char *hbuf,unsigned long *head); -static int system_skip_bytes(int len); -static int system_read_frame_body(int size); -static long system_tell(void); - -struct system_info { - unsigned long rate; - int num_audio; - int num_video; - int fixed; - int csps; - int audio_lock; - int video_lock; -}; - -struct stream_info { - int id; - int id1; - int type; - int size; - int scale; -}; - -struct packet_info { - int scale; - int size; - unsigned long dts; - unsigned long pts; -}; - -struct system_info sys_info; -struct stream_info str_info[64]; - -static int my_read(int f,char *buf,int len) -{ - int len1 = 0; - int ret; - - while(len1 < len) { - ret = read(f,buf+len1,len-len1); - if(ret < 0) - return -1; - len1 += ret; - } - return len; -} - -static int system_raw_read_head(int f,unsigned long *head) -{ - unsigned char buf[4]; - if(my_read(f,buf,4) != 4) { - perror("read_head"); - return -1; - } - *head = (buf[0]<<24) + (buf[1]<<16) + (buf[2]<<8) + buf[3]; - - if(verbose > 1) - fprintf(stderr,"head: %08lx\n",*head); - return 0; -} - -static int system_raw_read_word(int f,int *word) -{ - unsigned char buf[2]; - - if(my_read(f,buf,2) != 2) { - perror("read_word"); - return -1; - } - *word = (buf[0]<<8) + buf[1]; - return 0; -} - -static int system_raw_read(int f,int len,unsigned char *buf) -{ - - if(my_read(f,buf,len) != len) - return -1; - return 0; -} - -static int system_raw_skip(int f,int len) -{ - int ret; - int cnt = 0; - - ret = lseek(f,len,SEEK_CUR); - - if(ret < 0 && errno == ESPIPE) { - cnt = len; - while(cnt) { - char buf[1024]; - if(cnt > 1024) - ret = read(f,buf,1024); - else - ret = read(f,buf,cnt); - if(ret < 0) - return -1; - cnt -= ret; - } - ret = len; - } - - return ret; -} - -static unsigned long system_raw_timer_value(unsigned char *buf) -{ - unsigned long val; - - if(!(buf[0] & 0x1) || !(buf[2] & 0x1) || !(buf[4] & 0x1)) { - if(verbose) - fprintf(stderr,"Warning: missing marker in time stamp!\n"); - } - - val = (buf[0] & 0xe) << (29-1); - val |= buf[1] << 21; - val |= (buf[2] & 0xfe) << (14-1); - val |= buf[3] << 7; - val |= buf[4] >> 1; - - return val; -} - -static int system_raw_read_packet_data(int fd,struct packet_info *pi) -{ - static unsigned char buf[16384]; - int len; - int pos = 0; - int i; - - if(system_raw_read_word(filept,&len) < 0) - return -1; - if(verbose > 1) - fprintf(stderr,"Stream video/audio len: %d\n",len); - - if(system_raw_read(fd,len,buf) < 0) - return -1; - - for(i=0;i<16;i++,pos++) { - if(buf[pos] != 0xff) - break; - } - if(i == 16) { - fprintf(stderr,"Ouch ... too many stuffing bytes!\n"); - return -1; - } - - if( (buf[pos] & 0xc0) == 0x40 ) { - pi->scale = (buf[pos] >> 5) & 0x1; - pi->size = (buf[pos] & 0x1f) << 8; - pi->size |= buf[pos+1]; - pos += 2; - } - - switch( buf[pos] & 0xf0) { - case 0x00: - if(buf[pos] != 0x0f) { - fprintf(stderr,"Ouch ... illegal timer code!\n"); - return -1; - } - pos++; - break; - case 0x20: - pi->pts = system_raw_timer_value(buf+pos); - pos += 5; - break; - case 0x30: - pi->pts = system_raw_timer_value(buf+pos); - pos += 5; - if( (buf[pos] & 0xf) != 0x10) { - if(verbose) - fprintf(stderr,"DTS should start with 0x1x!\n"); - } - pi->dts = system_raw_timer_value(buf+pos); - pos += 5; - break; - default: - if(verbose) - fprintf(stderr,"Ouch ... illegal timer code!\n"); - return -1; - - } - - -#if 1 - write(1,buf+pos,len-pos); -#endif - - return 0; -} - - -static int system_raw_read_packet_info(int f,double *clock,unsigned long *rate) -{ - unsigned char buf[8]; - int i; - - if(my_read(f,buf,8) != 8) { - perror("read_packet_info"); - return -1; - } - - *clock = 0.0; - for(i=0;i<5;i++) { - *clock *= 256.0; - *clock += (double) buf[4-i]; - } - *rate = (buf[5]<<16) + (buf[6]<<8) + buf[7]; - return 0; -} - -static int system_raw_read_system_header(int f,struct system_info *ssi) -{ - int rlen,len; - unsigned char buf[6+48*3]; - int i,cnt; - - if(system_raw_read_word(filept,&len) < 0) - return -1; - - if(verbose > 1) - fprintf(stderr,"system len: %d\n",len); - - rlen = len; - if(len > 6 + 48 * 3) { - if(verbose) - fprintf(stderr,"Oops .. large System header!\n"); - rlen = 6+48*3; - } - if(my_read(f,buf,rlen) != rlen) { - perror("raw_read_system_header"); - return -1; - } - - if(len - rlen) { - if(system_raw_skip(filept,len-rlen) < 0) - return -1; - } - - if(buf[5] != 0xff) { - if(verbose) - fprintf(stderr,"Warning: buf[5] !=0xff \n"); - } - - ssi->rate = (buf[0]<<16)+(buf[1]<<8)+buf[2]; - if( (ssi->rate & 0x800001) != 0x800001) { - if(verbose) - fprintf(stderr,"System Header Byte 0: Missing bits\n"); - return -1; - } - ssi->rate >>= 1; - ssi->rate &= 0x7fffff; - - ssi->num_audio = buf[3] >> 2; - ssi->num_video = buf[4] & 0x1f; - ssi->fixed = buf[3] & 0x2; - ssi->csps = buf[3] & 0x1; - ssi->audio_lock = buf[4] & 0x80; - ssi->video_lock = buf[4] & 0x40; - - if(verbose) - fprintf(stderr,"Audio: %d Video: %d, Lock: %d/%d, fixed: %d, csps: %d\n", - ssi->num_audio,ssi->num_video,ssi->audio_lock?1:0,ssi->video_lock?1:0, - ssi->fixed?1:0,ssi->csps?1:0); - - i = 6; - cnt = 0; - while( i < rlen ) { - if( !(buf[i] & 0x80) || ((buf[i+1] & 0xc0) != 0xc0) ) { - fprintf(stderr,"system_raw_read_system_header byte %d,%d: bits not set!\n",i,i+1); - return -1; - } - str_info[cnt].id = buf[i]; - if( (str_info[cnt].id & 0xe0) == 0xc0 ) { - str_info[cnt].type = 'A'; - str_info[cnt].id1 = str_info[cnt].id & 0x1f; - } - else if((str_info[cnt].id & 0xf0) == 0xe0 ) { - str_info[cnt].type = 'V'; - str_info[cnt].id1 = str_info[cnt].id & 0x0f; - } - else { - str_info[cnt].type = 'R'; - str_info[cnt].id1 = str_info[cnt].id & 0x3f; - } - str_info[cnt].scale = buf[i+1] & 0x20; - str_info[cnt].size = ((buf[i+1] & 0x1f)<<8)+buf[i+2]; - i += 3; - - if(verbose) - fprintf(stderr,"ID: %#02x=%c%d, scale: %d, size %d\n", - str_info[cnt].id,str_info[cnt].type,str_info[cnt].id1,str_info[cnt].scale?1:0,str_info[cnt].size); - } - - return 0; -} - -/*************************************************** - * init system layer read functions - */ -int system_init(struct reader *r) -{ - unsigned long head; - double clk; - unsigned long rate; - int len; - int err; - - r->back_frame = NULL; - r->head_read = system_head_read; - r->head_shift = system_head_shift; - r->skip_bytes = system_skip_bytes; - r->read_frame_body = system_read_frame_body; - r->tell = system_tell; - - if(system_raw_read_head(filept,&head) < 0) - return -1; - if(head != PACKET_START) { - fprintf(stderr,"No PACKET_START found!\n"); - return -1; - } - if(system_raw_read_packet_info(filept,&clk,&rate) < 0) - return -1; - - err = 0; - while(err == 0) { - if(system_raw_read_head(filept,&head) < 0) - return -1; - if((head & 0xffffff00) != 0x00000100) - return -1; - - switch(head) { - case PACKET_START: - if(system_raw_read_packet_info(filept,&clk,&rate)) - return -1; - if(verbose > 1) - fprintf(stderr,"Packet Start\n"); - break; - case STREAM_END: - if(verbose) - fprintf(stderr,"Stream End\n"); - break; - case SYSTEM_STREAM: - if(system_raw_read_system_header(filept,&sys_info) < 0) - return -1; - break; -#if 0 - case AUDIO_STREAM: - if(system_raw_read_word(filept,&len) < 0) - return -1; - if(verbose > 1) - fprintf(stderr,"STD audio len: %d\n",len); - if(system_raw_skip(filept,len) < 0) - return -1; - break; - case VIDEO_STREAM: - if(system_raw_read_word(filept,&len) < 0) - return -1; - if(verbose > 1) - fprintf(stderr,"STD video len: %d\n",len); - if(system_raw_skip(filept,len) < 0) - return -1; - break; -#endif - default: - if(head >= 0x000001c0 && head < 0x000001f0) { - - if(verbose > 1) - fprintf(stderr,"Stream ID %ld\n",head - 0x000001c0); - - if( (head - 0x000001c0) == 0x0) { - struct packet_info pi; - if(system_raw_read_packet_data(filept,&pi) < 0 ) - return -1; - } - else { - if(system_raw_read_word(filept,&len) < 0) - return -1; - - if(system_raw_skip(filept,len) < 0) - return -1; - } - - break; - } - else if(head >= 0x000001bd && head < 0x000001c0) { - if(system_raw_read_word(filept,&len) < 0) - return -1; - if(system_raw_skip(filept,len) < 0) - return -1; - break; - } - else { - if(verbose) - fprintf(stderr,"unsupported head %8lx\n",head); - if(system_raw_read_word(filept,&len) < 0) - return -1; - if(verbose) - fprintf(stderr,"Skipping: %d bytes\n",len); - if(system_raw_skip(filept,len) < 0) - return -1; - break; - } - err = 1; - break; - } - } - - return 0; -} - -static int system_back_frame(struct frame *fr,int num) -{ - return 0; -} - -static int system_head_read(unsigned char *hbuf,unsigned long *newhead) -{ - return 0; - -} - -static int system_head_shift(unsigned char *hbuf,unsigned long *head) -{ - return 0; -} - -static int system_skip_bytes(int len) -{ - return 0; -} - -static int system_read_frame_body(int size) -{ - return 0; -} - -static long system_tell(void) -{ - return 0; -} - -struct reader rd1; - -void main(void) -{ - int ret; - filept = 0; - ret = system_init(&rd1); - fprintf(stderr,"ret: %d\n",ret); - return ret; -} - diff --git a/src/tabinit.c b/src/tabinit.c deleted file mode 100644 index c6e4242e..00000000 --- a/src/tabinit.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - tabinit.c: initialize tables... - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -#include "mpg123.h" - -static unsigned char *conv16to8_buf = NULL; -unsigned char *conv16to8; - -/* All optimizations share this code - with the exception of MMX */ -#ifndef OPT_MMX_ONLY -real decwin[512+32]; /* MMX has another one */ -/* that altivec alignment part here should not hurt generic code, I hope */ -#ifdef OPT_ALTIVEC -static ALIGNED(16) real cos64[16]; -static ALIGNED(16) real cos32[8]; -static ALIGNED(16) real cos16[4]; -static ALIGNED(16) real cos8[2]; -static ALIGNED(16) real cos4[1]; -#else -static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1]; -#endif - -real *pnts[] = { cos64,cos32,cos16,cos8,cos4 }; - - -static long intwinbase[] = { - 0, -1, -1, -1, -1, -1, -1, -2, -2, -2, - -2, -3, -3, -4, -4, -5, -5, -6, -7, -7, - -8, -9, -10, -11, -13, -14, -16, -17, -19, -21, - -24, -26, -29, -31, -35, -38, -41, -45, -49, -53, - -58, -63, -68, -73, -79, -85, -91, -97, -104, -111, - -117, -125, -132, -139, -147, -154, -161, -169, -176, -183, - -190, -196, -202, -208, -213, -218, -222, -225, -227, -228, - -228, -227, -224, -221, -215, -208, -200, -189, -177, -163, - -146, -127, -106, -83, -57, -29, 2, 36, 72, 111, - 153, 197, 244, 294, 347, 401, 459, 519, 581, 645, - 711, 779, 848, 919, 991, 1064, 1137, 1210, 1283, 1356, - 1428, 1498, 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962, - 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, 2037, 2000, - 1952, 1893, 1822, 1739, 1644, 1535, 1414, 1280, 1131, 970, - 794, 605, 402, 185, -45, -288, -545, -814, -1095, -1388, - -1692, -2006, -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788, - -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, -7910, -8209, - -8491, -8755, -8998, -9219, -9416, -9585, -9727, -9838, -9916, -9959, - -9966, -9935, -9863, -9750, -9592, -9389, -9139, -8840, -8492, -8092, - -7640, -7134, -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082, - -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, 9975, 11455, - 12980, 14548, 16155, 17799, 19478, 21189, 22929, 24694, 26482, 28289, - 30112, 31947, 33791, 35640, 37489, 39336, 41176, 43006, 44821, 46617, - 48390, 50137, 51853, 53534, 55178, 56778, 58333, 59838, 61289, 62684, - 64019, 65290, 66494, 67629, 68692, 69679, 70590, 71420, 72169, 72835, - 73415, 73908, 74313, 74630, 74856, 74992, 75038 }; - -void make_decode_tables(scale_t scaleval) -{ - int i,j,k,kr,divv; - real *costab; - int idx; - - - for(i=0;i<5;i++) - { - kr=0x10>>i; divv=0x40>>i; - costab = pnts[i]; - for(k=0;k 255) - fprintf(stderr,"Converror %d %d\n",i,c1); - if(c1 == 0) - c1 = 2; - conv16to8[i] = (unsigned char) c1; - } - } - else if(mode == AUDIO_FORMAT_SIGNED_8) { - for(i=-4096;i<4096;i++) { - conv16to8[i] = i>>5; - } - } - else if(mode == AUDIO_FORMAT_UNSIGNED_8) { - for(i=-4096;i<4096;i++) { - conv16to8[i] = (i>>5)+128; - } - } - else { - for(i=-4096;i<4096;i++) { - conv16to8[i] = 0; - } - } - return 0; -} - diff --git a/src/tabinit_mmx.S b/src/tabinit_mmx.S deleted file mode 100644 index 0d3265d3..00000000 --- a/src/tabinit_mmx.S +++ /dev/null @@ -1,169 +0,0 @@ -/* - tabinit_mmx: make_decode_tables_mmx - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by the mysterious higway (apparently) -*/ - -#include "mangle.h" - -BSS - ALIGN32 - COMM(ASM_NAME(decwin_mmx),2176,32) - ALIGN32 - COMM(ASM_NAME(decwins),2176,32) - -.data - ALIGN32 -intwinbase: - .value 0, -1, -1, -1, -1, -1, -1, -2 - .value -2, -2, -2, -3, -3, -4, -4, -5 - .value -5, -6, -7, -7, -8, -9, -10, -11 - .value -13, -14, -16, -17, -19, -21, -24, -26 - .value -29, -31, -35, -38, -41, -45, -49, -53 - .value -58, -63, -68, -73, -79, -85, -91, -97 - .value -104, -111, -117, -125, -132, -139, -147, -154 - .value -161, -169, -176, -183, -190, -196, -202, -208 - .value -213, -218, -222, -225, -227, -228, -228, -227 - .value -224, -221, -215, -208, -200, -189, -177, -163 - .value -146, -127, -106, -83, -57, -29, 2, 36 - .value 72, 111, 153, 197, 244, 294, 347, 401 - .value 459, 519, 581, 645, 711, 779, 848, 919 - .value 991, 1064, 1137, 1210, 1283, 1356, 1428, 1498 - .value 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962 - .value 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063 - .value 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535 - .value 1414, 1280, 1131, 970, 794, 605, 402, 185 - .value -45, -288, -545, -814, -1095, -1388, -1692, -2006 - .value -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788 - .value -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597 - .value -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585 - .value -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750 - .value -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134 - .value -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082 - .value -70, 998, 2122, 3300, 4533, 5818, 7154, 8540 - .value 9975, 11455, 12980, 14548, 16155, 17799, 19478, 21189 - .value 22929, 24694, 26482, 28289, 30112, 31947,-26209,-24360 - .value -22511,-20664,-18824,-16994,-15179,-13383,-11610, -9863 - .value -8147, -6466, -4822, -3222, -1667, -162, 1289, 2684 - .value 4019, 5290, 6494, 7629, 8692, 9679, 10590, 11420 - .value 12169, 12835, 13415, 13908, 14313, 14630, 14856, 14992 - .value 15038 - -intwindiv: - .long 0x47800000 # 65536.0 -.text - ALIGN32 -.globl ASM_NAME(make_decode_tables_mmx) -ASM_NAME(make_decode_tables_mmx): - pushl %edi - pushl %esi - pushl %ebx - - xorl %ecx,%ecx - xorl %ebx,%ebx - movl $32,%esi - movl $intwinbase,%edi - negl 16(%esp) /* scaleval */ - pushl $2 /* intwinbase step */ -.L00: - cmpl $528,%ecx - jnc .L02 - movswl (%edi),%eax - cmpl $intwinbase+444,%edi - jc .L01 - addl $60000,%eax -.L01: - pushl %eax - fildl (%esp) - fdivs intwindiv - fimull 24(%esp) - popl %eax - fsts ASM_NAME(decwin_mmx)(,%ecx,4) - fstps ASM_NAME(decwin_mmx)+64(,%ecx,4) -.L02: - leal -1(%esi),%edx - and %ebx,%edx - cmp $31,%edx - jnz .L03 - addl $-1023,%ecx - test %esi,%ebx - jz .L03 - negl 20(%esp) -.L03: - addl %esi,%ecx - addl (%esp),%edi - incl %ebx - cmpl $intwinbase,%edi - jz .L04 - cmp $256,%ebx - jnz .L00 - negl (%esp) - jmp .L00 -.L04: - popl %eax - - xorl %ecx,%ecx - xorl %ebx,%ebx - pushl $2 -.L05: - cmpl $528,%ecx - jnc .L11 - movswl (%edi),%eax - cmpl $intwinbase+444,%edi - jc .L06 - addl $60000,%eax -.L06: - cltd - imull 20(%esp) - shrdl $17,%edx,%eax - cmpl $32767,%eax - movl $1055,%edx - jle .L07 - movl $32767,%eax - jmp .L08 -.L07: - cmpl $-32767,%eax - jge .L08 - movl $-32767,%eax -.L08: - cmpl $512,%ecx - jnc .L09 - subl %ecx,%edx - movw %ax,ASM_NAME(decwins)(,%edx,2) - movw %ax,ASM_NAME(decwins)-32(,%edx,2) -.L09: - testl $1,%ecx - jnz .L10 - negl %eax -.L10: - movw %ax,ASM_NAME(decwins)(,%ecx,2) - movw %ax,ASM_NAME(decwins)+32(,%ecx,2) -.L11: - leal -1(%esi),%edx - and %ebx,%edx - cmp $31,%edx - jnz .L12 - addl $-1023,%ecx - test %esi,%ebx - jz .L12 - negl 20(%esp) -.L12: - addl %esi,%ecx - addl (%esp),%edi - incl %ebx - cmpl $intwinbase,%edi - jz .L13 - cmp $256,%ebx - jnz .L05 - negl (%esp) - jmp .L05 -.L13: - popl %eax - - popl %ebx - popl %esi - popl %edi - ret - diff --git a/src/term.c b/src/term.c index 7afd98b5..9dcc7485 100644 --- a/src/term.c +++ b/src/term.c @@ -1,12 +1,12 @@ /* term: terminal control - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 + copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Michael Hipp */ -#include "mpg123.h" +#include "mpg123app.h" #ifdef HAVE_TERMIOS @@ -70,15 +70,15 @@ void term_init(void) term_enable = 1; } -static long term_handle_input(struct frame *,int); +static long term_handle_input(mpg123_handle *,int); static int stopped = 0; static int paused = 0; static int pause_cycle; -long term_control(struct frame *fr, audio_output_t *ao) +off_t term_control(mpg123_handle *fr, audio_output_t *ao) { - long offset = 0; + off_t offset = 0; if(!term_enable) return 0; @@ -86,7 +86,7 @@ long term_control(struct frame *fr, audio_output_t *ao) { if(!--pause_cycle) { - pause_cycle=(int)(LOOP_CYCLES/compute_tpf(fr)); + pause_cycle=(int)(LOOP_CYCLES/mpg123_tpf(fr)); offset-=pause_cycle; if(param.usebuffer) { @@ -103,15 +103,15 @@ long term_control(struct frame *fr, audio_output_t *ao) do { offset += term_handle_input(fr, stopped); - if((offset < 0) && (-offset > fr->num)) offset = - fr->num; + if((offset < 0) && (-offset > framenum)) offset = - framenum; if(param.verbose && offset != 0) - print_stat(fr,fr->num+offset,0,ao); + print_stat(fr,offset,0); } while (stopped); return offset; } -static long term_handle_input(struct frame *fr, int do_delay) +static long term_handle_input(mpg123_handle *fr, int do_delay) { int n = 1; long offset = 0; @@ -140,19 +140,21 @@ static long term_handle_input(struct frame *fr, int do_delay) * end up in a deadlock. The only acceptable workaround was to * resume playing as soon as BACK_KEY is pressed. This is not * necessary when running non-buffered but I chose to remain - * compatible. [dk] + * compatible. [dk] -- now the resync is explicitly here... [ThOr] */ if(stopped) { stopped = 0; if(param.usebuffer) buffer_start(); fprintf(stderr, "%s", EMPTY_STRING); - } - if(paused) - pause_cycle=(int)(LOOP_CYCLES/compute_tpf(fr)); - rd->rewind(rd); - fr->num=0; - break; + } + if(paused) pause_cycle=(int)(LOOP_CYCLES/mpg123_tpf(fr)); + + mpg123_seek_frame(fr, 0, SEEK_SET); + if(param.usebuffer) buffer_resync(); + + framenum=0; + break; case NEXT_KEY: if(!param.usebuffer) ao.flush(&ao); plain_buffer_resync(); @@ -166,7 +168,7 @@ static long term_handle_input(struct frame *fr, int do_delay) case PAUSE_KEY: paused=1-paused; if(paused) { - pause_cycle=(int)(LOOP_CYCLES/compute_tpf(fr)); + pause_cycle=(int)(LOOP_CYCLES/mpg123_tpf(fr)); offset -= pause_cycle; } if(stopped) { @@ -206,10 +208,10 @@ static long term_handle_input(struct frame *fr, int do_delay) offset+=50; break; case VOL_UP_KEY: - do_volume((double) outscale / MAXOUTBURST + 0.02); + mpg123_volume_change(fr, 0.02); break; case VOL_DOWN_KEY: - do_volume((double) outscale / MAXOUTBURST - 0.02); + mpg123_volume_change(fr, -0.02); break; case VERBOSE_KEY: param.verbose++; @@ -220,16 +222,16 @@ static long term_handle_input(struct frame *fr, int do_delay) } break; case RVA_KEY: - param.rva++; - if(param.rva > RVA_MAX) param.rva = 0; - do_rva(); + if(++param.rva > MPG123_RVA_MAX) param.rva = 0; + mpg123_param(fr, MPG123_RVA, param.rva, 0); + mpg123_volume(fr, -1); break; case HELP_KEY: fprintf(stderr,"\n\n -= terminal control keys =-\n[%c] or space bar\t interrupt/restart playback (i.e. 'pause')\n[%c]\t next track\n[%c]\t back to beginning of track\n[%c]\t pause while looping current sound chunk\n[%c]\t forward\n[%c]\t rewind\n[%c]\t fast forward\n[%c]\t fast rewind\n[%c]\t fine forward\n[%c]\t fine rewind\n[%c]\t volume up\n[%c]\t volume down\n[%c]\t RVA switch\n[%c]\t verbose switch\n[%c]\t this help\n[%c]\t quit\n\n", STOP_KEY, NEXT_KEY, BACK_KEY, PAUSE_KEY, FORWARD_KEY, REWIND_KEY, FAST_FORWARD_KEY, FAST_REWIND_KEY, FINE_FORWARD_KEY, FINE_REWIND_KEY, VOL_UP_KEY, VOL_DOWN_KEY, RVA_KEY, VERBOSE_KEY, HELP_KEY, QUIT_KEY); break; case FRAME_INDEX_KEY: - print_frame_index(stderr); + mpg123_print_index(fr, stderr); break; default: ; diff --git a/src/term.h b/src/term.h index ac54fca8..f860876a 100644 --- a/src/term.h +++ b/src/term.h @@ -57,7 +57,7 @@ #define EMPTY_STRING " \b\b\b\b\b\b\b\b" void term_init(void); -long term_control(struct frame *fr, audio_output_t *ao); +off_t term_control(mpg123_handle *mh, audio_output_t *ao); void term_restore(void); #endif diff --git a/src/testcpu.c b/src/testcpu.c deleted file mode 100644 index f865c1c9..00000000 --- a/src/testcpu.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include "getcpuflags.h" - -int main() -{ - int family; - struct cpuflags flags; - if(!getcpuflags(&flags)){ printf("CPU won't do cpuid (some old i386 or i486)\n"); return 0; } - family = (flags.id & 0xf00)>>8; - printf("family: %i\n", family); - printf("stdcpuflags: 0x%08x\n", flags.std); - printf("std2cpuflags: 0x%08x\n", flags.std2); - printf("extcpuflags: 0x%08x\n", flags.ext); - if(cpu_i586(flags)) - { - printf("A i586 or better cpu with:"); - if(cpu_mmx(flags)) printf(" mmx"); - if(cpu_3dnow(flags)) printf(" 3dnow"); - if(cpu_3dnowext(flags)) printf(" 3dnowext"); - if(cpu_sse(flags)) printf(" sse"); - if(cpu_sse2(flags)) printf(" sse2"); - if(cpu_sse3(flags)) printf(" sse3"); - printf("\n"); - } - else printf("I guess you have some i486\n"); - return 0; -} diff --git a/src/wav.c b/src/wav.c index 61c73f6e..bc72e365 100644 --- a/src/wav.c +++ b/src/wav.c @@ -14,7 +14,7 @@ It's not a very clean code ... Fix this! */ -#include "mpg123.h" +#include "mpg123app.h" #ifdef FLOATOUT #define WAVE_FORMAT 3 @@ -178,7 +178,7 @@ int au_open(audio_output_t *ao, char *aufilename) flipendian = 0; switch(ao->format) { - case AUDIO_FORMAT_SIGNED_16: + case MPG123_ENC_SIGNED_16: { int endiantest = testEndian(); if(endiantest == -1) return -1; @@ -186,9 +186,9 @@ int au_open(audio_output_t *ao, char *aufilename) long2bigendian(3,auhead.encoding,sizeof(auhead.encoding)); } break; - case AUDIO_FORMAT_UNSIGNED_8: - ao->format = AUDIO_FORMAT_ULAW_8; - case AUDIO_FORMAT_ULAW_8: + case MPG123_ENC_UNSIGNED_8: + ao->format = MPG123_ENC_ULAW_8; + case MPG123_ENC_ULAW_8: long2bigendian(1,auhead.encoding,sizeof(auhead.encoding)); break; default: @@ -217,11 +217,11 @@ int cdr_open(audio_output_t *ao, char *cdrfilename) return -1; #else param.force_stereo = 0; - ao->format = AUDIO_FORMAT_SIGNED_16; + ao->format = MPG123_ENC_SIGNED_16; ao->rate = 44100; ao->channels = 2; /* - if(ao->format != AUDIO_FORMAT_SIGNED_16 || ao->rate != 44100 || ao->channels != 2) { + if(ao->format != MPG123_ENC_SIGNED_16 || ao->rate != 44100 || ao->channels != 2) { fprintf(stderr,"Oops .. not forced to 16 bit, 44kHz?, stereo\n"); exit(1); } @@ -248,11 +248,11 @@ int wav_open(audio_output_t *ao, char *wavfilename) long2littleendian(bps=32,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample)); flipendian = testEndian(); #else - if(ao->format == AUDIO_FORMAT_SIGNED_16) { + if(ao->format == MPG123_ENC_SIGNED_16) { long2littleendian(bps=16,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample)); flipendian = testEndian(); } - else if(ao->format == AUDIO_FORMAT_UNSIGNED_8) + else if(ao->format == MPG123_ENC_UNSIGNED_8) long2littleendian(bps=8,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample)); else { diff --git a/src/xfermem.c b/src/xfermem.c index f97ef583..b5e2d18c 100644 --- a/src/xfermem.c +++ b/src/xfermem.c @@ -12,7 +12,7 @@ #ifndef NOXFERMEM -#include "mpg123.h" +#include "mpg123app.h" #include #include #include @@ -25,7 +25,6 @@ #include #endif - #ifndef HAVE_MMAP #include #include @@ -35,9 +34,9 @@ #define MAP_ANON MAP_ANONYMOUS #endif -void xfermem_init (txfermem **xf, int bufsize, int msize, int skipbuf) +void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) { - int regsize = bufsize + msize + skipbuf + sizeof(txfermem); + size_t regsize = bufsize + msize + skipbuf + sizeof(txfermem); #ifdef HAVE_MMAP # ifdef MAP_ANON @@ -116,9 +115,9 @@ void xfermem_init_reader (txfermem *xf) close (xf->fd[XF_WRITER]); } -int xfermem_get_freespace (txfermem *xf) +size_t xfermem_get_freespace (txfermem *xf) { - int freeindex, readindex; + size_t freeindex, readindex; if(!xf) return 0; @@ -132,9 +131,9 @@ int xfermem_get_freespace (txfermem *xf) return ((xf->size - (freeindex - readindex)) - 1); } -int xfermem_get_usedspace (txfermem *xf) +size_t xfermem_get_usedspace (txfermem *xf) { - int freeindex, readindex; + size_t freeindex, readindex; if(!xf) return 0; @@ -221,10 +220,10 @@ int xfermem_block (int readwrite, txfermem *xf) #else /* stubs for generic / win32 */ -#include "mpg123.h" +#include "mpg123app.h" #include "xfermem.h" -void xfermem_init (txfermem **xf, int bufsize, int msize, int skipbuf) +void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf) { } void xfermem_done (txfermem *xf) @@ -236,11 +235,11 @@ void xfermem_init_writer (txfermem *xf) void xfermem_init_reader (txfermem *xf) { } -int xfermem_get_freespace (txfermem *xf) +size_t xfermem_get_freespace (txfermem *xf) { return 0; } -int xfermem_get_usedspace (txfermem *xf) +size_t xfermem_get_usedspace (txfermem *xf) { return 0; } diff --git a/src/xfermem.h b/src/xfermem.h index 72347b27..c7457b7c 100644 --- a/src/xfermem.h +++ b/src/xfermem.h @@ -26,14 +26,14 @@ #endif typedef struct { - int freeindex; /* [W] next free index */ - int readindex; /* [R] next index to read */ + size_t freeindex; /* [W] next free index */ + size_t readindex; /* [R] next index to read */ int fd[2]; int wakeme[2]; byte *data; byte *metadata; - int size; - int metasize; + size_t size; + size_t metasize; int buf[3]; } txfermem; /* @@ -42,15 +42,12 @@ typedef struct { * All other entries are initialized once. */ -void xfermem_init (txfermem **xf, int bufsize, int msize,int skipbuf); +void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf); void xfermem_init_writer (txfermem *xf); void xfermem_init_reader (txfermem *xf); -int xfermem_write (txfermem *xf, byte *data, int count); -int xfermem_read (txfermem *xf, byte *data, int count); - -int xfermem_get_freespace (txfermem *xf); -int xfermem_get_usedspace (txfermem *xf); +size_t xfermem_get_freespace (txfermem *xf); +size_t xfermem_get_usedspace (txfermem *xf); #define XF_CMD_WAKEUP_INFO 0x04 #define XF_CMD_WAKEUP 0x02 #define XF_CMD_TERMINATE 0x03