shithub: ft²

Download patch

ref: f0826db5064ef380bbdae7938ec3a485e3a63f6d
parent: fa67abc5fee622a881e1373cf30e7f226a269989
author: Olav Sørensen <[email protected]>
date: Fri Jul 24 16:19:22 EDT 2020

Pushed v1.27 code

- Fixed a small stuttering issue in the audio/video syncing
- Bugfix: When rendering a song to a 16-bit WAV while having audio output
  set to 32-bit, you'd never get dithering in the WAV render.
- Further optimization of the audio channel mixer (~5-16% perf. increase)

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,7 @@
     "${ft2-clone_SOURCE_DIR}/src/rtmidi/*.cpp"
     "${ft2-clone_SOURCE_DIR}/src/*.c"
     "${ft2-clone_SOURCE_DIR}/src/gfxdata/*.c"
+    "${ft2-clone_SOURCE_DIR}/src/mixer/*.c"
 )
 
 add_executable(ft2-clone ${ft2-clone_SRC})
--- a/make-linux-nomidi.sh
+++ b/make-linux-nomidi.sh
@@ -3,7 +3,7 @@
 rm release/other/ft2-clone &> /dev/null
 echo Compiling \(with no MIDI functionality\), please wait patiently...
 
-gcc -DNDEBUG src/gfxdata/*.c src/*.c -lSDL2 -lm -Wshadow -Winit-self -Wall -Wno-missing-field-initializers -Wno-unused-result -Wno-strict-aliasing -Wextra -Wunused -Wunreachable-code -Wswitch-default -march=native -mtune=native -O3 -o release/other/ft2-clone
+gcc -DNDEBUG src/gfxdata/*.c src/mixer/*.c src/*.c -lSDL2 -lm -Wshadow -Winit-self -Wall -Wno-missing-field-initializers -Wno-unused-result -Wno-strict-aliasing -Wextra -Wunused -Wunreachable-code -Wswitch-default -march=native -mtune=native -O3 -o release/other/ft2-clone
 
 rm src/gfxdata/*.o src/*.o &> /dev/null
 
--- a/make-linux.sh
+++ b/make-linux.sh
@@ -3,7 +3,7 @@
 rm release/other/ft2-clone &> /dev/null
 echo Compiling, please wait patiently...
 
-gcc -DNDEBUG -DHAS_MIDI -D__LINUX_ALSA__ src/rtmidi/*.cpp src/gfxdata/*.c src/*.c -lSDL2 -lpthread -lasound -lstdc++ -lm -Wshadow -Winit-self -Wall -Wno-missing-field-initializers -Wno-unused-result -Wno-strict-aliasing -Wextra -Wunused -Wunreachable-code -Wswitch-default -march=native -mtune=native -O3 -o release/other/ft2-clone
+gcc -DNDEBUG -DHAS_MIDI -D__LINUX_ALSA__ src/rtmidi/*.cpp src/gfxdata/*.c src/mixer/*.c src/*.c -lSDL2 -lpthread -lasound -lstdc++ -lm -Wshadow -Winit-self -Wall -Wno-missing-field-initializers -Wno-unused-result -Wno-strict-aliasing -Wextra -Wunused -Wunreachable-code -Wswitch-default -march=native -mtune=native -O3 -o release/other/ft2-clone
 
 rm src/rtmidi/*.o src/gfxdata/*.o src/*.o &> /dev/null
 
--- a/make-macos.sh
+++ b/make-macos.sh
@@ -8,7 +8,7 @@
     
     rm release/macos/ft2-clone-macos.app/Contents/MacOS/ft2-clone-macos &> /dev/null
     
-    clang -mmacosx-version-min=10.7 -arch x86_64 -mmmx -mfpmath=sse -msse2 -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks -g0 -DNDEBUG -DHAS_MIDI -D__MACOSX_CORE__ -stdlib=libc++ src/rtmidi/*.cpp src/gfxdata/*.c src/*.c -O3 /usr/lib/libiconv.dylib -lm -Winit-self -Wno-deprecated -Wextra -Wunused -mno-ms-bitfields -Wno-missing-field-initializers -Wswitch-default -framework SDL2 -framework CoreMidi -framework CoreAudio -framework Cocoa -lpthread -lm -lstdc++ -o release/macos/ft2-clone-macos.app/Contents/MacOS/ft2-clone-macos
+    clang -mmacosx-version-min=10.7 -arch x86_64 -mmmx -mfpmath=sse -msse2 -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks -g0 -DNDEBUG -DHAS_MIDI -D__MACOSX_CORE__ -stdlib=libc++ src/rtmidi/*.cpp src/gfxdata/*.c src/mixer/*.c src/*.c -O3 /usr/lib/libiconv.dylib -lm -Winit-self -Wno-deprecated -Wextra -Wunused -mno-ms-bitfields -Wno-missing-field-initializers -Wswitch-default -framework SDL2 -framework CoreMidi -framework CoreAudio -framework Cocoa -lpthread -lm -lstdc++ -o release/macos/ft2-clone-macos.app/Contents/MacOS/ft2-clone-macos
     strip release/macos/ft2-clone-macos.app/Contents/MacOS/ft2-clone-macos
     install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2 release/macos/ft2-clone-macos.app/Contents/MacOS/ft2-clone-macos
     
--- a/src/ft2_audio.c
+++ b/src/ft2_audio.c
@@ -12,9 +12,13 @@
 #include "ft2_gui.h"
 #include "ft2_midi.h"
 #include "ft2_wav_renderer.h"
-#include "ft2_mix.h"
 #include "ft2_tables.h"
 #include "ft2_structs.h"
+// --------------------------------
+#include "mixer/ft2_mix.h"
+#include "mixer/ft2_center_mix.h"
+#include "mixer/ft2_silence_mix.h"
+// --------------------------------
 
 #define INITIAL_DITHER_SEED 0x12345000
 
@@ -28,8 +32,9 @@
 static void (*sendAudSamplesFunc)(uint8_t *, uint32_t, uint8_t); // "send mixed samples" routines
 
 static int32_t oldPeriod;
+static uint32_t oldSFrqRev;
 #if !defined __amd64__ && !defined _WIN64
-static uint32_t oldSFrq, oldSFrqRev;
+static uint32_t oldSFrq;
 #else
 static uint64_t oldSFrq;
 #endif
@@ -46,9 +51,7 @@
 {
 	oldPeriod = -1;
 	oldSFrq = 0;
-#if !defined __amd64__ && !defined _WIN64
 	oldSFrqRev = 0xFFFFFFFF;
-#endif
 }
 
 void stopVoice(int32_t i)
@@ -195,20 +198,21 @@
 
 	v = &voice[i];
 
-	vol = v->SVol; // 0..65535
+	vol = v->SVol; // 0..4096
 
-	// (0..65535 * 0..65536) >> 4 = 0..268431360
-	volR = (vol * panningTab[    v->SPan]) >> 4;
-	volL = (vol * panningTab[256-v->SPan]) >> 4;
+	// 0..4096 * 0..65535 = 0..268431360 (about max safe volume range)
+	volR = vol * panningTab[    v->SPan];
+	volL = vol * panningTab[256-v->SPan];
 
 	if (!audio.volumeRampingFlag)
 	{
+		v->SVolIPLen = 0; // reset volume ramp length
 		v->SLVol2 = volL;
 		v->SRVol2 = volR;
 	}
 	else
 	{
-		v->SLVol1 = volL;
+		v->SLVol1 = volL; // ramp destination volumes
 		v->SRVol1 = volR;
 
 		if (status & IS_NyTon)
@@ -233,7 +237,7 @@
 				f->isFadeOutVoice = true;
 			}
 
-			// make current voice fade in when it starts
+			// make current voice fade in from zero when it starts
 			v->SLVol2 = 0;
 			v->SRVol2 = 0;
 		}
@@ -245,7 +249,8 @@
 		** Normal: The duration of a tick (speedVal)
 		*/
 
-		if (volL == v->SLVol2 && volR == v->SRVol2)
+		// if destination volume and current volume is the same (and we have no sample trigger), don't do ramp
+		if (volL == v->SLVol2 && volR == v->SRVol2 && !(status & IS_NyTon))
 		{
 			v->SVolIPLen = 0; // there is no volume change
 		}
@@ -298,7 +303,7 @@
 
 	if (s->pek == NULL || length < 1)
 	{
-		v->mixRoutine = NULL; // shut down voice (illegal parameters)
+		v->active = false; // shut down voice (illegal parameters)
 		return;
 	}
 
@@ -317,6 +322,7 @@
 	}
 
 	v->backwards = false;
+	v->SLoopType = loopType;
 	v->SLen = (loopType > 0) ? (loopBegin + loopLength) : length;
 	v->SRepS = loopBegin;
 	v->SRepL = loopLength;
@@ -327,11 +333,12 @@
 	oldSLen = (loopType > 0) ? (loopBegin + loopLength) : length;
 	if (v->SPos >= oldSLen)
 	{
-		v->mixRoutine = NULL;
+		v->active = false;
 		return;
 	}
 
-	v->mixRoutine = mixRoutineTable[(sampleIs16Bit * 12) + (audio.volumeRampingFlag * 6) + (audio.interpolationFlag * 3) + loopType];
+	v->mixFuncOffset = (sampleIs16Bit * 6) + (audio.interpolationFlag * 3) + loopType;
+	v->active = true;
 }
 
 void mix_SaveIPVolumes(void) // for volume ramping
@@ -356,8 +363,8 @@
 
 	for (int32_t i = 0; i < song.antChn; i++, ch++, v++)
 	{
-		status = ch->tmpStatus = ch->status; // ch->tmpStatus is used for audio/video sync queue
-		if (status == 0) continue;
+		status = ch->tmpStatus = ch->status; // (tmpStatus is used for audio/video sync queue)
+		if (status == 0) continue; // nothing to do
 		ch->status = 0;
 
 		if (status & IS_Vol)
@@ -379,17 +386,19 @@
 				oldPeriod = period;
 				oldSFrq = getMixerDelta(period);
 
-#if !defined __amd64__ && !defined _WIN64
 				oldSFrqRev = 0xFFFFFFFF;
 				if (oldSFrq != 0)
+				{
+#if defined __amd64__ || defined _WIN64
+					oldSFrqRev = (uint32_t)((0xFFFFFFFFFFFFFFFF / oldSFrq) >> 16);
+#else
 					oldSFrqRev /= oldSFrq;
 #endif
+				}
 			}
 
 			v->SFrq = oldSFrq;
-#if !defined __amd64__ && !defined _WIN64
 			v->SFrqRev = oldSFrqRev;
-#endif
 		}
 
 		if (status & IS_NyTon)
@@ -454,6 +463,7 @@
 		CLAMP16(out32);
 		*streamPointer16++ = (int16_t)out32;
 
+		// send zeroes to the rest of the channels
 		for (j = 2; j < numAudioChannels; j++)
 			*streamPointer16++ = 0;
 	}
@@ -507,6 +517,7 @@
 		CLAMP16(out32);
 		*streamPointer16++ = (int16_t)out32;
 
+		// send zeroes to the rest of the channels
 		for (uint32_t j = 2; j < numAudioChannels; j++)
 			*streamPointer16++ = 0;
 	}
@@ -550,31 +561,58 @@
 		fOut = CLAMP(fOut, -1.0f, 1.0f);
 		*fStreamPointer24++ = fOut;
 
+		// send zeroes to the rest of the channels
 		for (uint32_t j = 2; j < numAudioChannels; j++)
 			*fStreamPointer24++ = 0.0f;
 	}
 }
 
-static void mixAudio(uint8_t *stream, uint32_t sampleBlockLength, uint8_t numAudioChannels)
+static void doChannelMixing(int32_t samplesToMix)
 {
-	voice_t *v, *r;
+	voice_t *v = voice; // normal voices
+	voice_t *r = &voice[MAX_VOICES]; // volume ramp fadeout-voices
 
-	assert(sampleBlockLength <= MAX_WAV_RENDER_SAMPLES_PER_TICK);
-	memset(audio.mixBufferL, 0, sampleBlockLength * sizeof (int32_t));
-	memset(audio.mixBufferR, 0, sampleBlockLength * sizeof (int32_t));
+	for (int32_t i = 0; i < song.antChn; i++, v++, r++)
+	{
+		if (v->active)
+		{
+			bool centerMixFlag;
 
-	// mix channels
+			const bool volRampFlag = v->SVolIPLen > 0;
+			if (volRampFlag)
+			{
+				centerMixFlag = (v->SLVol1 == v->SRVol1) && (v->SLVolIP == v->SRVolIP);
+			}
+			else
+			{
+				if (v->SLVol2 == 0 && v->SRVol2 == 0)
+				{ 
+					silenceMixRoutine(v, samplesToMix);
+					continue;
+				}
 
-	v = voice; // normal voices
-	r = &voice[MAX_VOICES]; // volume ramp voices
+				centerMixFlag = v->SLVol2 == v->SRVol2;
+			}
 
-	for (int32_t i = 0; i < song.antChn; i++, v++, r++)
-	{
-		// call the mixing routine currently set for the voice
-		if (v->mixRoutine != NULL) v->mixRoutine(v, sampleBlockLength); // mix normal voice
-		if (r->mixRoutine != NULL) r->mixRoutine(r, sampleBlockLength); // mix volume ramp voice
+			mixFuncTab[(centerMixFlag * 24) + (volRampFlag * 12) + v->mixFuncOffset](v, samplesToMix);
+		}
+
+		if (r->active) // volume ramp fadeout-voice
+		{
+			const bool centerMixFlag = (r->SLVol1 == r->SRVol1) && (r->SLVolIP == r->SRVolIP);
+			mixFuncTab[(centerMixFlag * 24) + 12 + r->mixFuncOffset](r, samplesToMix);
+		}
 	}
+}
 
+static void mixAudio(uint8_t *stream, uint32_t sampleBlockLength, uint8_t numAudioChannels)
+{
+	assert(sampleBlockLength <= MAX_WAV_RENDER_SAMPLES_PER_TICK);
+	memset(audio.mixBufferL, 0, sampleBlockLength * sizeof (int32_t));
+	memset(audio.mixBufferR, 0, sampleBlockLength * sizeof (int32_t));
+
+	doChannelMixing(sampleBlockLength);
+
 	// normalize mix buffer and send to audio stream
 	sendAudSamplesFunc(stream, sampleBlockLength, numAudioChannels);
 }
@@ -582,23 +620,12 @@
 // used for song-to-WAV renderer
 void mixReplayerTickToBuffer(uint32_t samplesToMix, uint8_t *stream, uint8_t bitDepth)
 {
-	voice_t *v, *r;
-
 	assert(samplesToMix <= MAX_WAV_RENDER_SAMPLES_PER_TICK);
 	memset(audio.mixBufferL, 0, samplesToMix * sizeof (int32_t));
 	memset(audio.mixBufferR, 0, samplesToMix * sizeof (int32_t));
 
-	// mix channels
-	v = voice; // normal voices
-	r = &voice[MAX_VOICES]; // volume ramp voices
+	doChannelMixing(samplesToMix);
 
-	for (int32_t i = 0; i < song.antChn; i++, v++, r++)
-	{
-		// call the mixing routine currently set for the voice
-		if (v->mixRoutine != NULL) v->mixRoutine(v, samplesToMix); // mix normal voice
-		if (r->mixRoutine != NULL) r->mixRoutine(r, samplesToMix); // mix volume ramp voice
-	}
-
 	// normalize mix buffer and send to audio stream
 	if (bitDepth == 16)
 	{
@@ -642,7 +669,8 @@
 		** shouldn't be that dangerous.
 		** It will also create a small visual stutter while the buffer is getting filled,
 		** though that is barely noticable on normal buffer sizes, and it takes a minute
-		** or two at max BPM between each time (when queue size is default, 4095) */
+		** or two at max BPM between each time (when queue size is default, 4095)
+		*/
 		pattSync.data[0].timestamp = 0;
 		pattSync.readPos = 0;
 		pattSync.writePos = 0;
@@ -729,7 +757,8 @@
 		** shouldn't be that dangerous.
 		** It will also create a small visual stutter while the buffer is getting filled,
 		** though that is barely noticable on normal buffer sizes, and it takes several
-		** minutes between each time (when queue size is default, 16384) */
+		** minutes between each time (when queue size is default, 16384)
+		*/
 		chSync.data[0].timestamp = 0;
 		chSync.readPos = 0;
 		chSync.writePos = 0;
@@ -929,6 +958,9 @@
 
 static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len)
 {
+	if (editor.wavIsRendering)
+		return;
+
 	int32_t samplesLeft = len / pmpCountDiv;
 	if (samplesLeft <= 0)
 		return;
@@ -1009,13 +1041,9 @@
 	if (lockMixer)
 		lockMixerCallback();
 
-	// force dither off if somehow set with 32-bit float (illegal)
-	if ((config.specialFlags2 & DITHERED_AUDIO) && (config.specialFlags & BITDEPTH_32))
-		config.specialFlags2 &= ~DITHERED_AUDIO;
-
-	if (config.specialFlags2 & DITHERED_AUDIO)
+	if (config.specialFlags & BITDEPTH_16)
 	{
-		if (config.specialFlags & BITDEPTH_16)
+		if (config.specialFlags2 & DITHERED_AUDIO)
 		{
 			if (pmpChannels > 2)
 				sendAudSamplesFunc = sendSamples16BitDitherMultiChan;
@@ -1022,10 +1050,7 @@
 			else
 				sendAudSamplesFunc = sendSamples16BitDitherStereo;
 		}
-	}
-	else
-	{
-		if (config.specialFlags & BITDEPTH_16)
+		else
 		{
 			if (pmpChannels > 2)
 				sendAudSamplesFunc = sendSamples16BitMultiChan;
@@ -1032,13 +1057,13 @@
 			else
 				sendAudSamplesFunc = sendSamples16BitStereo;
 		}
+	}
+	else
+	{
+		if (pmpChannels > 2)
+			sendAudSamplesFunc = sendSamples24BitMultiChan;
 		else
-		{
-			if (pmpChannels > 2)
-				sendAudSamplesFunc = sendSamples24BitMultiChan;
-			else
-				sendAudSamplesFunc = sendSamples24BitStereo;
-		}
+			sendAudSamplesFunc = sendSamples24BitStereo;
 	}
 
 	if (lockMixer)
@@ -1195,9 +1220,6 @@
 	smpBuffSize = have.samples;
 
 	calcAudioLatencyVars(have.samples, have.freq);
-
-	if ((config.specialFlags2 & DITHERED_AUDIO) && newBitDepth == 24)
-		config.specialFlags2 &= ~DITHERED_AUDIO;
 
 	pmpChannels = have.channels;
 	pmpCountDiv = pmpChannels * ((newBitDepth == 16) ? sizeof (int16_t) : sizeof (float));
--- a/src/ft2_audio.h
+++ b/src/ft2_audio.h
@@ -63,20 +63,18 @@
 {
 	const int8_t *SBase8, *SRevBase8;
 	const int16_t *SBase16, *SRevBase16;
-	bool backwards, isFadeOutVoice;
-	uint8_t SPan;
+	bool active, backwards, isFadeOutVoice;
+	uint8_t mixFuncOffset, SPan, SLoopType;
 	uint16_t SVol;
 	int32_t SLVol1, SRVol1, SLVol2, SRVol2, SLVolIP, SRVolIP;
 	int32_t SPos, SLen, SRepS, SRepL;
-	uint32_t SVolIPLen;
+	uint32_t SVolIPLen, SFrqRev;
 
 #if defined _WIN64 || defined __amd64__
 	uint64_t SPosDec, SFrq;
 #else
-	uint32_t SPosDec, SFrq, SFrqRev;
+	uint32_t SPosDec, SFrq;
 #endif
-
-	void (*mixRoutine)(void *, int32_t); // function pointer to mix routine
 } voice_t;
 
 typedef struct pattSyncData_t
--- a/src/ft2_checkboxes.c
+++ b/src/ft2_checkboxes.c
@@ -83,7 +83,7 @@
 	{   3,  91,  77, 12, cbToggleAutoSaveConfig },
 	{ 389, 132,  90, 12, cbConfigInterpolation },
 	{ 389, 145, 107, 12, cbConfigVolRamp },
-	{ 389, 158 , 84, 12, cbConfigDither },
+	{ 389, 158 , 69, 12, cbConfigDithering },
 	{ 113,  14, 108, 12, cbConfigPattStretch },
 	{ 113,  27, 117, 12, cbConfigHexCount },
 	{ 113,  40,  81, 12, cbConfigAccidential },
--- a/src/ft2_config.c
+++ b/src/ft2_config.c
@@ -873,7 +873,7 @@
 {
 	checkBoxes[CB_CONF_INTERPOLATION].checked = config.interpolation;
 	checkBoxes[CB_CONF_VOL_RAMP].checked = (config.specialFlags & NO_VOLRAMP_FLAG) ? false : true;
-	checkBoxes[CB_CONF_DITHER].checked = (config.specialFlags & BITDEPTH_32) ? false : config.specialFlags2 & DITHERED_AUDIO;
+	checkBoxes[CB_CONF_DITHER].checked = (config.specialFlags2 & DITHERED_AUDIO) ? true : false;
 
 	showCheckBox(CB_CONF_INTERPOLATION);
 	showCheckBox(CB_CONF_VOL_RAMP);
@@ -912,10 +912,10 @@
 	switch (config.mouseType)
 	{
 		default:
-		case MOUSE_IDLE_SHAPE_NICE:    tmpID = RB_CONFIG_MOUSE_NICE;    break;
-		case MOUSE_IDLE_SHAPE_UGLY:    tmpID = RB_CONFIG_MOUSE_UGLY;    break;
-		case MOUSE_IDLE_SHAPE_AWFUL:   tmpID = RB_CONFIG_MOUSE_AWFUL;   break;
-		case MOUSE_IDLE_SHAPE_USABLE:  tmpID = RB_CONFIG_MOUSE_USABLE;  break;
+		case MOUSE_IDLE_SHAPE_NICE:   tmpID = RB_CONFIG_MOUSE_NICE;    break;
+		case MOUSE_IDLE_SHAPE_UGLY:   tmpID = RB_CONFIG_MOUSE_UGLY;    break;
+		case MOUSE_IDLE_SHAPE_AWFUL:  tmpID = RB_CONFIG_MOUSE_AWFUL;   break;
+		case MOUSE_IDLE_SHAPE_USABLE: tmpID = RB_CONFIG_MOUSE_USABLE;  break;
 	}
 	radioButtons[tmpID].state = RADIOBUTTON_CHECKED;
 
@@ -1165,7 +1165,7 @@
 			textOutShadow(390, 120, PAL_FORGRND, PAL_DSKTOP2, "Mixing device ctrl.:");
 			textOutShadow(406, 134, PAL_FORGRND, PAL_DSKTOP2, "Interpolation");
 			textOutShadow(406, 147, PAL_FORGRND, PAL_DSKTOP2, "Volume ramping");
-			textOutShadow(406, 160, PAL_FORGRND, PAL_DSKTOP2, "1-bit dither");
+			textOutShadow(406, 160, PAL_FORGRND, PAL_DSKTOP2, "Dithering");
 
 			textOutShadow(509,   3, PAL_FORGRND, PAL_DSKTOP2, "Mixing frequency:");
 			textOutShadow(525,  17, PAL_FORGRND, PAL_DSKTOP2, "44100Hz");
@@ -1600,8 +1600,6 @@
 	config.specialFlags &= ~BITDEPTH_16;
 	config.specialFlags |=  BITDEPTH_32;
 
-	config.specialFlags2 &= ~DITHERED_AUDIO; // no dither in "32-bit float" mode
-
 	checkBoxes[CB_CONF_DITHER].checked = false;
 	if (editor.currConfigScreen == CONFIG_SCREEN_IO_DEVICES)
 		drawCheckBox(CB_CONF_DITHER);
@@ -1682,21 +1680,10 @@
 	audioSetVolRamp((config.specialFlags & NO_VOLRAMP_FLAG) ? false : true);
 }
 
-void cbConfigDither(void)
+void cbConfigDithering(void)
 {
-	if (config.specialFlags & BITDEPTH_32) // no dither in float mode, force off
-	{
-		config.specialFlags2 &= ~DITHERED_AUDIO;
-
-		checkBoxes[CB_CONF_DITHER].checked = false;
-		if (editor.currConfigScreen == CONFIG_SCREEN_IO_DEVICES)
-			drawCheckBox(CB_CONF_DITHER);
-	}
-	else
-	{
-		config.specialFlags2 ^= DITHERED_AUDIO;
-		updateSendAudSamplesRoutine(true);
-	}
+	config.specialFlags2 ^= DITHERED_AUDIO;
+	updateSendAudSamplesRoutine(true);
 }
 
 // CONFIG LAYOUT
--- a/src/ft2_config.h
+++ b/src/ft2_config.h
@@ -240,7 +240,7 @@
 void cbToggleAutoSaveConfig(void);
 void cbConfigInterpolation(void);
 void cbConfigVolRamp(void);
-void cbConfigDither(void);
+void cbConfigDithering(void);
 void cbConfigPattStretch(void);
 void cbConfigHexCount(void);
 void cbConfigAccidential(void);
--- a/src/ft2_header.h
+++ b/src/ft2_header.h
@@ -12,7 +12,7 @@
 #endif
 #include "ft2_replayer.h"
 
-#define PROG_VER_STR "1.26"
+#define PROG_VER_STR "1.27"
 
 // do NOT change these! It will only mess things up...
 
@@ -21,9 +21,7 @@
 */
 #define VBLANK_HZ 60
 
-/* Scopes are clocked at 64Hz instead of 60Hz to prevent possible stutters
-** from monitors not being exactly 60Hz (and unstable non-vsync mode).
-*/
+// scopes must be clocked slightly higher than the nominal vblank rate
 #define SCOPE_HZ 64
 
 #define FT2_VBLANK_HZ 70
--- a/src/ft2_intrp_table.c
+++ /dev/null
@@ -1,2326 +1,0 @@
-#include <stdint.h>
-#include "ft2_intrp_table.h"
-
-// 4-tap cubic spline table
-
-#if defined __amd64__ || defined _WIN64
-
-// 15-bit precision, 8192 phases (slightly harder on the CPU cache)
-
-const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES] =
-{
-	    0, 32767,     0,     0,    -2, 32767,     2,     0,    -4, 32767,     4,     0,    -6, 32767,     6,     0,
-	   -8, 32767,     8,     0,   -10, 32767,    10,     0,   -12, 32767,    12,     0,   -14, 32767,    14,     0,
-	  -16, 32767,    16,     0,   -18, 32767,    18,     0,   -20, 32767,    20,     0,   -22, 32767,    22,     0,
-	  -24, 32767,    24,     0,   -26, 32767,    26,     0,   -28, 32767,    28,     0,   -30, 32767,    30,     0,
-	  -32, 32767,    32,     0,   -34, 32767,    34,     0,   -36, 32767,    36,     0,   -38, 32767,    38,     0,
-	  -40, 32767,    40,     0,   -42, 32767,    42,     0,   -44, 32767,    44,     0,   -46, 32767,    47,     0,
-	  -48, 32767,    49,     0,   -50, 32767,    51,     0,   -52, 32767,    53,     0,   -54, 32767,    55,     0,
-	  -56, 32767,    57,     0,   -58, 32767,    59,     0,   -60, 32767,    61,     0,   -62, 32767,    63,     0,
-	  -64, 32767,    65,     0,   -65, 32766,    67,     0,   -67, 32766,    69,     0,   -69, 32766,    71,     0,
-	  -71, 32766,    73,     0,   -73, 32766,    75,     0,   -75, 32766,    77,     0,   -77, 32766,    79,     0,
-	  -79, 32765,    82,     0,   -81, 32765,    84,     0,   -83, 32765,    86,     0,   -85, 32765,    88,     0,
-	  -87, 32765,    90,     0,   -89, 32765,    92,     0,   -91, 32766,    94,    -1,   -93, 32766,    96,    -1,
-	  -95, 32766,    98,    -1,   -97, 32766,   100,    -1,   -99, 32766,   102,    -1,  -101, 32765,   105,    -1,
-	 -103, 32765,   107,    -1,  -105, 32765,   109,    -1,  -107, 32765,   111,    -1,  -109, 32765,   113,    -1,
-	 -110, 32764,   115,    -1,  -112, 32764,   117,    -1,  -114, 32764,   119,    -1,  -116, 32764,   121,    -1,
-	 -118, 32764,   123,    -1,  -120, 32763,   126,    -1,  -122, 32763,   128,    -1,  -124, 32763,   130,    -1,
-	 -126, 32763,   132,    -1,  -128, 32763,   134,    -1,  -130, 32763,   136,    -1,  -132, 32763,   138,    -1,
-	 -134, 32763,   140,    -1,  -136, 32762,   143,    -1,  -138, 32762,   145,    -1,  -140, 32762,   147,    -1,
-	 -141, 32761,   149,    -1,  -143, 32761,   151,    -1,  -145, 32761,   153,    -1,  -147, 32761,   155,    -1,
-	 -149, 32760,   158,    -1,  -151, 32760,   160,    -1,  -153, 32760,   162,    -1,  -155, 32761,   164,    -2,
-	 -157, 32761,   166,    -2,  -159, 32761,   168,    -2,  -161, 32760,   171,    -2,  -163, 32760,   173,    -2,
-	 -165, 32760,   175,    -2,  -166, 32759,   177,    -2,  -168, 32759,   179,    -2,  -170, 32759,   181,    -2,
-	 -172, 32758,   184,    -2,  -174, 32758,   186,    -2,  -176, 32758,   188,    -2,  -178, 32758,   190,    -2,
-	 -180, 32758,   192,    -2,  -182, 32758,   194,    -2,  -184, 32757,   197,    -2,  -186, 32757,   199,    -2,
-	 -188, 32757,   201,    -2,  -189, 32756,   203,    -2,  -191, 32756,   205,    -2,  -193, 32756,   207,    -2,
-	 -195, 32755,   210,    -2,  -197, 32755,   212,    -2,  -199, 32756,   214,    -3,  -201, 32756,   216,    -3,
-	 -203, 32756,   218,    -3,  -205, 32755,   221,    -3,  -207, 32755,   223,    -3,  -208, 32754,   225,    -3,
-	 -210, 32754,   227,    -3,  -212, 32754,   229,    -3,  -214, 32753,   232,    -3,  -216, 32753,   234,    -3,
-	 -218, 32753,   236,    -3,  -220, 32753,   238,    -3,  -222, 32752,   241,    -3,  -224, 32752,   243,    -3,
-	 -225, 32751,   245,    -3,  -227, 32751,   247,    -3,  -229, 32751,   249,    -3,  -231, 32750,   252,    -3,
-	 -233, 32750,   254,    -3,  -235, 32751,   256,    -4,  -237, 32751,   258,    -4,  -239, 32750,   261,    -4,
-	 -241, 32750,   263,    -4,  -242, 32749,   265,    -4,  -244, 32749,   267,    -4,  -246, 32748,   270,    -4,
-	 -248, 32748,   272,    -4,  -250, 32748,   274,    -4,  -252, 32748,   276,    -4,  -254, 32747,   279,    -4,
-	 -256, 32747,   281,    -4,  -257, 32746,   283,    -4,  -259, 32746,   285,    -4,  -261, 32745,   288,    -4,
-	 -263, 32745,   290,    -4,  -265, 32746,   292,    -5,  -267, 32746,   294,    -5,  -269, 32745,   297,    -5,
-	 -271, 32745,   299,    -5,  -272, 32744,   301,    -5,  -274, 32744,   303,    -5,  -276, 32743,   306,    -5,
-	 -278, 32743,   308,    -5,  -280, 32743,   310,    -5,  -282, 32742,   313,    -5,  -284, 32742,   315,    -5,
-	 -285, 32741,   317,    -5,  -287, 32741,   319,    -5,  -289, 32740,   322,    -5,  -291, 32740,   324,    -5,
-	 -293, 32741,   326,    -6,  -295, 32740,   329,    -6,  -297, 32740,   331,    -6,  -298, 32739,   333,    -6,
-	 -300, 32739,   335,    -6,  -302, 32738,   338,    -6,  -304, 32738,   340,    -6,  -306, 32738,   342,    -6,
-	 -308, 32737,   345,    -6,  -309, 32736,   347,    -6,  -311, 32736,   349,    -6,  -313, 32735,   352,    -6,
-	 -315, 32735,   354,    -6,  -317, 32736,   356,    -7,  -319, 32735,   359,    -7,  -321, 32735,   361,    -7,
-	 -322, 32734,   363,    -7,  -324, 32734,   365,    -7,  -326, 32733,   368,    -7,  -328, 32733,   370,    -7,
-	 -330, 32733,   372,    -7,  -332, 32732,   375,    -7,  -333, 32731,   377,    -7,  -335, 32731,   379,    -7,
-	 -337, 32730,   382,    -7,  -339, 32730,   384,    -7,  -341, 32731,   386,    -8,  -343, 32730,   389,    -8,
-	 -344, 32729,   391,    -8,  -346, 32729,   393,    -8,  -348, 32728,   396,    -8,  -350, 32728,   398,    -8,
-	 -352, 32727,   401,    -8,  -353, 32726,   403,    -8,  -355, 32726,   405,    -8,  -357, 32725,   408,    -8,
-	 -359, 32725,   410,    -8,  -361, 32726,   412,    -9,  -363, 32725,   415,    -9,  -364, 32724,   417,    -9,
-	 -366, 32724,   419,    -9,  -368, 32723,   422,    -9,  -370, 32723,   424,    -9,  -372, 32723,   426,    -9,
-	 -373, 32721,   429,    -9,  -375, 32721,   431,    -9,  -377, 32720,   434,    -9,  -379, 32720,   436,    -9,
-	 -381, 32721,   438,   -10,  -383, 32720,   441,   -10,  -384, 32719,   443,   -10,  -386, 32719,   445,   -10,
-	 -388, 32718,   448,   -10,  -390, 32718,   450,   -10,  -392, 32717,   453,   -10,  -393, 32716,   455,   -10,
-	 -395, 32716,   457,   -10,  -397, 32715,   460,   -10,  -399, 32715,   462,   -10,  -401, 32715,   465,   -11,
-	 -402, 32714,   467,   -11,  -404, 32714,   469,   -11,  -406, 32713,   472,   -11,  -408, 32713,   474,   -11,
-	 -410, 32712,   477,   -11,  -411, 32711,   479,   -11,  -413, 32711,   481,   -11,  -415, 32710,   484,   -11,
-	 -417, 32710,   486,   -11,  -418, 32709,   489,   -12,  -420, 32709,   491,   -12,  -422, 32708,   494,   -12,
-	 -424, 32708,   496,   -12,  -426, 32708,   498,   -12,  -427, 32706,   501,   -12,  -429, 32706,   503,   -12,
-	 -431, 32705,   506,   -12,  -433, 32705,   508,   -12,  -435, 32705,   511,   -13,  -436, 32704,   513,   -13,
-	 -438, 32704,   515,   -13,  -440, 32703,   518,   -13,  -442, 32703,   520,   -13,  -443, 32701,   523,   -13,
-	 -445, 32701,   525,   -13,  -447, 32700,   528,   -13,  -449, 32700,   530,   -13,  -451, 32700,   533,   -14,
-	 -452, 32699,   535,   -14,  -454, 32699,   537,   -14,  -456, 32698,   540,   -14,  -458, 32698,   542,   -14,
-	 -459, 32696,   545,   -14,  -461, 32696,   547,   -14,  -463, 32695,   550,   -14,  -465, 32695,   552,   -14,
-	 -466, 32694,   555,   -15,  -468, 32694,   557,   -15,  -470, 32693,   560,   -15,  -472, 32693,   562,   -15,
-	 -473, 32691,   565,   -15,  -475, 32691,   567,   -15,  -477, 32690,   570,   -15,  -479, 32690,   572,   -15,
-	 -481, 32690,   575,   -16,  -482, 32689,   577,   -16,  -484, 32689,   579,   -16,  -486, 32688,   582,   -16,
-	 -488, 32688,   584,   -16,  -489, 32686,   587,   -16,  -491, 32686,   589,   -16,  -493, 32685,   592,   -16,
-	 -495, 32685,   594,   -16,  -496, 32684,   597,   -17,  -498, 32684,   599,   -17,  -500, 32683,   602,   -17,
-	 -502, 32683,   604,   -17,  -503, 32681,   607,   -17,  -505, 32681,   609,   -17,  -507, 32680,   612,   -17,
-	 -508, 32679,   614,   -17,  -510, 32679,   617,   -18,  -512, 32679,   619,   -18,  -514, 32678,   622,   -18,
-	 -515, 32676,   625,   -18,  -517, 32676,   627,   -18,  -519, 32675,   630,   -18,  -521, 32675,   632,   -18,
-	 -522, 32673,   635,   -18,  -524, 32674,   637,   -19,  -526, 32673,   640,   -19,  -528, 32673,   642,   -19,
-	 -529, 32671,   645,   -19,  -531, 32671,   647,   -19,  -533, 32670,   650,   -19,  -534, 32669,   652,   -19,
-	 -536, 32669,   655,   -20,  -538, 32669,   657,   -20,  -540, 32668,   660,   -20,  -541, 32667,   662,   -20,
-	 -543, 32666,   665,   -20,  -545, 32665,   668,   -20,  -547, 32665,   670,   -20,  -548, 32663,   673,   -20,
-	 -550, 32664,   675,   -21,  -552, 32663,   678,   -21,  -553, 32662,   680,   -21,  -555, 32661,   683,   -21,
-	 -557, 32661,   685,   -21,  -559, 32660,   688,   -21,  -560, 32658,   691,   -21,  -562, 32659,   693,   -22,
-	 -564, 32658,   696,   -22,  -565, 32657,   698,   -22,  -567, 32656,   701,   -22,  -569, 32656,   703,   -22,
-	 -571, 32655,   706,   -22,  -572, 32653,   709,   -22,  -574, 32654,   711,   -23,  -576, 32653,   714,   -23,
-	 -577, 32652,   716,   -23,  -579, 32651,   719,   -23,  -581, 32650,   722,   -23,  -582, 32649,   724,   -23,
-	 -584, 32648,   727,   -23,  -586, 32649,   729,   -24,  -588, 32648,   732,   -24,  -589, 32647,   734,   -24,
-	 -591, 32646,   737,   -24,  -593, 32645,   740,   -24,  -594, 32644,   742,   -24,  -596, 32643,   745,   -24,
-	 -598, 32644,   747,   -25,  -599, 32642,   750,   -25,  -601, 32641,   753,   -25,  -603, 32641,   755,   -25,
-	 -605, 32640,   758,   -25,  -606, 32638,   761,   -25,  -608, 32639,   763,   -26,  -610, 32638,   766,   -26,
-	 -611, 32637,   768,   -26,  -613, 32636,   771,   -26,  -615, 32635,   774,   -26,  -616, 32634,   776,   -26,
-	 -618, 32633,   779,   -26,  -620, 32634,   781,   -27,  -621, 32632,   784,   -27,  -623, 32631,   787,   -27,
-	 -625, 32631,   789,   -27,  -626, 32629,   792,   -27,  -628, 32628,   795,   -27,  -630, 32629,   797,   -28,
-	 -631, 32627,   800,   -28,  -633, 32626,   803,   -28,  -635, 32626,   805,   -28,  -636, 32624,   808,   -28,
-	 -638, 32624,   810,   -28,  -640, 32623,   813,   -28,  -641, 32622,   816,   -29,  -643, 32622,   818,   -29,
-	 -645, 32621,   821,   -29,  -646, 32619,   824,   -29,  -648, 32619,   826,   -29,  -650, 32618,   829,   -29,
-	 -651, 32617,   832,   -30,  -653, 32617,   834,   -30,  -655, 32616,   837,   -30,  -656, 32614,   840,   -30,
-	 -658, 32614,   842,   -30,  -660, 32613,   845,   -30,  -661, 32612,   848,   -31,  -663, 32612,   850,   -31,
-	 -665, 32611,   853,   -31,  -666, 32609,   856,   -31,  -668, 32609,   858,   -31,  -670, 32608,   861,   -31,
-	 -671, 32607,   864,   -32,  -673, 32607,   866,   -32,  -675, 32606,   869,   -32,  -676, 32604,   872,   -32,
-	 -678, 32603,   875,   -32,  -680, 32603,   877,   -32,  -681, 32602,   880,   -33,  -683, 32601,   883,   -33,
-	 -685, 32601,   885,   -33,  -686, 32599,   888,   -33,  -688, 32598,   891,   -33,  -689, 32597,   893,   -33,
-	 -691, 32597,   896,   -34,  -693, 32596,   899,   -34,  -694, 32594,   902,   -34,  -696, 32594,   904,   -34,
-	 -698, 32593,   907,   -34,  -699, 32591,   910,   -34,  -701, 32592,   912,   -35,  -703, 32591,   915,   -35,
-	 -704, 32589,   918,   -35,  -706, 32588,   921,   -35,  -708, 32588,   923,   -35,  -709, 32587,   926,   -36,
-	 -711, 32586,   929,   -36,  -712, 32585,   931,   -36,  -714, 32584,   934,   -36,  -716, 32583,   937,   -36,
-	 -717, 32581,   940,   -36,  -719, 32582,   942,   -37,  -721, 32581,   945,   -37,  -722, 32579,   948,   -37,
-	 -724, 32578,   951,   -37,  -725, 32577,   953,   -37,  -727, 32577,   956,   -38,  -729, 32576,   959,   -38,
-	 -730, 32575,   961,   -38,  -732, 32574,   964,   -38,  -734, 32573,   967,   -38,  -735, 32571,   970,   -38,
-	 -737, 32572,   972,   -39,  -738, 32570,   975,   -39,  -740, 32569,   978,   -39,  -742, 32568,   981,   -39,
-	 -743, 32566,   984,   -39,  -745, 32567,   986,   -40,  -746, 32565,   989,   -40,  -748, 32564,   992,   -40,
-	 -750, 32563,   995,   -40,  -751, 32562,   997,   -40,  -753, 32561,  1000,   -40,  -754, 32560,  1003,   -41,
-	 -756, 32559,  1006,   -41,  -758, 32559,  1008,   -41,  -759, 32557,  1011,   -41,  -761, 32556,  1014,   -41,
-	 -762, 32555,  1017,   -42,  -764, 32554,  1020,   -42,  -766, 32554,  1022,   -42,  -767, 32552,  1025,   -42,
-	 -769, 32551,  1028,   -42,  -770, 32550,  1031,   -43,  -772, 32550,  1033,   -43,  -774, 32549,  1036,   -43,
-	 -775, 32547,  1039,   -43,  -777, 32546,  1042,   -43,  -778, 32545,  1045,   -44,  -780, 32545,  1047,   -44,
-	 -782, 32544,  1050,   -44,  -783, 32542,  1053,   -44,  -785, 32541,  1056,   -44,  -786, 32540,  1059,   -45,
-	 -788, 32540,  1061,   -45,  -790, 32539,  1064,   -45,  -791, 32537,  1067,   -45,  -793, 32536,  1070,   -45,
-	 -794, 32535,  1073,   -46,  -796, 32534,  1076,   -46,  -798, 32534,  1078,   -46,  -799, 32532,  1081,   -46,
-	 -801, 32531,  1084,   -46,  -802, 32530,  1087,   -47,  -804, 32529,  1090,   -47,  -805, 32528,  1092,   -47,
-	 -807, 32527,  1095,   -47,  -809, 32526,  1098,   -47,  -810, 32525,  1101,   -48,  -812, 32524,  1104,   -48,
-	 -813, 32522,  1107,   -48,  -815, 32522,  1109,   -48,  -816, 32520,  1112,   -48,  -818, 32520,  1115,   -49,
-	 -820, 32519,  1118,   -49,  -821, 32517,  1121,   -49,  -823, 32516,  1124,   -49,  -824, 32515,  1126,   -49,
-	 -826, 32515,  1129,   -50,  -827, 32513,  1132,   -50,  -829, 32512,  1135,   -50,  -831, 32511,  1138,   -50,
-	 -832, 32509,  1141,   -50,  -834, 32509,  1144,   -51,  -835, 32508,  1146,   -51,  -837, 32507,  1149,   -51,
-	 -838, 32505,  1152,   -51,  -840, 32504,  1155,   -51,  -841, 32503,  1158,   -52,  -843, 32502,  1161,   -52,
-	 -845, 32501,  1164,   -52,  -846, 32500,  1166,   -52,  -848, 32500,  1169,   -53,  -849, 32498,  1172,   -53,
-	 -851, 32497,  1175,   -53,  -852, 32495,  1178,   -53,  -854, 32494,  1181,   -53,  -855, 32493,  1184,   -54,
-	 -857, 32492,  1187,   -54,  -859, 32491,  1190,   -54,  -860, 32490,  1192,   -54,  -862, 32489,  1195,   -54,
-	 -863, 32488,  1198,   -55,  -865, 32487,  1201,   -55,  -866, 32485,  1204,   -55,  -868, 32484,  1207,   -55,
-	 -869, 32483,  1210,   -56,  -871, 32482,  1213,   -56,  -872, 32480,  1216,   -56,  -874, 32480,  1218,   -56,
-	 -876, 32479,  1221,   -56,  -877, 32478,  1224,   -57,  -879, 32477,  1227,   -57,  -880, 32475,  1230,   -57,
-	 -882, 32474,  1233,   -57,  -883, 32473,  1236,   -58,  -885, 32472,  1239,   -58,  -886, 32470,  1242,   -58,
-	 -888, 32469,  1245,   -58,  -889, 32467,  1248,   -58,  -891, 32468,  1250,   -59,  -892, 32466,  1253,   -59,
-	 -894, 32465,  1256,   -59,  -895, 32463,  1259,   -59,  -897, 32463,  1262,   -60,  -898, 32461,  1265,   -60,
-	 -900, 32460,  1268,   -60,  -902, 32459,  1271,   -60,  -903, 32457,  1274,   -60,  -905, 32457,  1277,   -61,
-	 -906, 32455,  1280,   -61,  -908, 32454,  1283,   -61,  -909, 32452,  1286,   -61,  -911, 32452,  1289,   -62,
-	 -912, 32451,  1291,   -62,  -914, 32450,  1294,   -62,  -915, 32448,  1297,   -62,  -917, 32448,  1300,   -63,
-	 -918, 32446,  1303,   -63,  -920, 32445,  1306,   -63,  -921, 32443,  1309,   -63,  -923, 32442,  1312,   -63,
-	 -924, 32441,  1315,   -64,  -926, 32440,  1318,   -64,  -927, 32438,  1321,   -64,  -929, 32437,  1324,   -64,
-	 -930, 32436,  1327,   -65,  -932, 32435,  1330,   -65,  -933, 32433,  1333,   -65,  -935, 32432,  1336,   -65,
-	 -936, 32431,  1339,   -66,  -938, 32430,  1342,   -66,  -939, 32428,  1345,   -66,  -941, 32427,  1348,   -66,
-	 -942, 32425,  1351,   -66,  -944, 32425,  1354,   -67,  -945, 32423,  1357,   -67,  -947, 32422,  1360,   -67,
-	 -948, 32420,  1363,   -67,  -950, 32420,  1366,   -68,  -951, 32418,  1369,   -68,  -953, 32417,  1372,   -68,
-	 -954, 32415,  1375,   -68,  -956, 32415,  1378,   -69,  -957, 32413,  1381,   -69,  -959, 32412,  1384,   -69,
-	 -960, 32410,  1387,   -69,  -962, 32410,  1390,   -70,  -963, 32408,  1393,   -70,  -965, 32407,  1396,   -70,
-	 -966, 32405,  1399,   -70,  -968, 32405,  1402,   -71,  -969, 32403,  1405,   -71,  -971, 32402,  1408,   -71,
-	 -972, 32400,  1411,   -71,  -974, 32400,  1414,   -72,  -975, 32398,  1417,   -72,  -977, 32397,  1420,   -72,
-	 -978, 32395,  1423,   -72,  -980, 32395,  1426,   -73,  -981, 32393,  1429,   -73,  -982, 32391,  1432,   -73,
-	 -984, 32390,  1435,   -73,  -985, 32389,  1438,   -74,  -987, 32388,  1441,   -74,  -988, 32386,  1444,   -74,
-	 -990, 32385,  1447,   -74,  -991, 32384,  1450,   -75,  -993, 32383,  1453,   -75,  -994, 32381,  1456,   -75,
-	 -996, 32380,  1459,   -75,  -997, 32379,  1462,   -76,  -999, 32378,  1465,   -76, -1000, 32376,  1468,   -76,
-	-1002, 32375,  1471,   -76, -1003, 32374,  1474,   -77, -1004, 32372,  1477,   -77, -1006, 32371,  1480,   -77,
-	-1007, 32369,  1483,   -77, -1009, 32369,  1486,   -78, -1010, 32367,  1489,   -78, -1012, 32366,  1492,   -78,
-	-1013, 32364,  1495,   -78, -1015, 32363,  1499,   -79, -1016, 32361,  1502,   -79, -1018, 32360,  1505,   -79,
-	-1019, 32358,  1508,   -79, -1021, 32358,  1511,   -80, -1022, 32356,  1514,   -80, -1023, 32354,  1517,   -80,
-	-1025, 32353,  1520,   -80, -1026, 32352,  1523,   -81, -1028, 32351,  1526,   -81, -1029, 32349,  1529,   -81,
-	-1031, 32348,  1532,   -81, -1032, 32347,  1535,   -82, -1034, 32346,  1538,   -82, -1035, 32344,  1541,   -82,
-	-1036, 32341,  1545,   -82, -1038, 32341,  1548,   -83, -1039, 32339,  1551,   -83, -1041, 32338,  1554,   -83,
-	-1042, 32337,  1557,   -84, -1044, 32336,  1560,   -84, -1045, 32334,  1563,   -84, -1047, 32333,  1566,   -84,
-	-1048, 32332,  1569,   -85, -1049, 32330,  1572,   -85, -1051, 32329,  1575,   -85, -1052, 32326,  1579,   -85,
-	-1054, 32326,  1582,   -86, -1055, 32324,  1585,   -86, -1057, 32323,  1588,   -86, -1058, 32321,  1591,   -86,
-	-1059, 32320,  1594,   -87, -1061, 32319,  1597,   -87, -1062, 32317,  1600,   -87, -1064, 32317,  1603,   -88,
-	-1065, 32314,  1607,   -88, -1067, 32313,  1610,   -88, -1068, 32311,  1613,   -88, -1069, 32310,  1616,   -89,
-	-1071, 32309,  1619,   -89, -1072, 32307,  1622,   -89, -1074, 32306,  1625,   -89, -1075, 32305,  1628,   -90,
-	-1076, 32303,  1631,   -90, -1078, 32301,  1635,   -90, -1079, 32300,  1638,   -91, -1081, 32299,  1641,   -91,
-	-1082, 32297,  1644,   -91, -1084, 32296,  1647,   -91, -1085, 32295,  1650,   -92, -1086, 32293,  1653,   -92,
-	-1088, 32291,  1657,   -92, -1089, 32289,  1660,   -92, -1091, 32289,  1663,   -93, -1092, 32287,  1666,   -93,
-	-1093, 32285,  1669,   -93, -1095, 32285,  1672,   -94, -1096, 32283,  1675,   -94, -1098, 32281,  1679,   -94,
-	-1099, 32279,  1682,   -94, -1100, 32278,  1685,   -95, -1102, 32277,  1688,   -95, -1103, 32275,  1691,   -95,
-	-1105, 32275,  1694,   -96, -1106, 32272,  1698,   -96, -1107, 32270,  1701,   -96, -1109, 32269,  1704,   -96,
-	-1110, 32268,  1707,   -97, -1112, 32267,  1710,   -97, -1113, 32265,  1713,   -97, -1114, 32262,  1717,   -97,
-	-1116, 32262,  1720,   -98, -1117, 32260,  1723,   -98, -1119, 32259,  1726,   -98, -1120, 32258,  1729,   -99,
-	-1121, 32256,  1732,   -99, -1123, 32254,  1736,   -99, -1124, 32252,  1739,   -99, -1126, 32252,  1742,  -100,
-	-1127, 32250,  1745,  -100, -1128, 32248,  1748,  -100, -1130, 32248,  1751,  -101, -1131, 32245,  1755,  -101,
-	-1133, 32244,  1758,  -101, -1134, 32242,  1761,  -101, -1135, 32241,  1764,  -102, -1137, 32240,  1767,  -102,
-	-1138, 32237,  1771,  -102, -1139, 32236,  1774,  -103, -1141, 32235,  1777,  -103, -1142, 32233,  1780,  -103,
-	-1144, 32233,  1783,  -104, -1145, 32230,  1787,  -104, -1146, 32228,  1790,  -104, -1148, 32227,  1793,  -104,
-	-1149, 32226,  1796,  -105, -1150, 32224,  1799,  -105, -1152, 32222,  1803,  -105, -1153, 32221,  1806,  -106,
-	-1155, 32220,  1809,  -106, -1156, 32218,  1812,  -106, -1157, 32215,  1816,  -106, -1159, 32215,  1819,  -107,
-	-1160, 32213,  1822,  -107, -1161, 32211,  1825,  -107, -1163, 32211,  1828,  -108, -1164, 32208,  1832,  -108,
-	-1166, 32207,  1835,  -108, -1167, 32206,  1838,  -109, -1168, 32204,  1841,  -109, -1170, 32202,  1845,  -109,
-	-1171, 32200,  1848,  -109, -1172, 32199,  1851,  -110, -1174, 32198,  1854,  -110, -1175, 32195,  1858,  -110,
-	-1176, 32194,  1861,  -111, -1178, 32193,  1864,  -111, -1179, 32191,  1867,  -111, -1180, 32189,  1871,  -112,
-	-1182, 32188,  1874,  -112, -1183, 32186,  1877,  -112, -1185, 32185,  1880,  -112, -1186, 32183,  1884,  -113,
-	-1187, 32181,  1887,  -113, -1189, 32180,  1890,  -113, -1190, 32179,  1893,  -114, -1191, 32176,  1897,  -114,
-	-1193, 32175,  1900,  -114, -1194, 32174,  1903,  -115, -1195, 32172,  1906,  -115, -1197, 32170,  1910,  -115,
-	-1198, 32168,  1913,  -115, -1199, 32167,  1916,  -116, -1201, 32166,  1919,  -116, -1202, 32163,  1923,  -116,
-	-1203, 32162,  1926,  -117, -1205, 32161,  1929,  -117, -1206, 32158,  1933,  -117, -1207, 32157,  1936,  -118,
-	-1209, 32156,  1939,  -118, -1210, 32154,  1942,  -118, -1211, 32152,  1946,  -119, -1213, 32151,  1949,  -119,
-	-1214, 32149,  1952,  -119, -1215, 32147,  1955,  -119, -1217, 32146,  1959,  -120, -1218, 32144,  1962,  -120,
-	-1219, 32142,  1965,  -120, -1221, 32141,  1969,  -121, -1222, 32139,  1972,  -121, -1223, 32137,  1975,  -121,
-	-1225, 32136,  1979,  -122, -1226, 32134,  1982,  -122, -1227, 32132,  1985,  -122, -1229, 32132,  1988,  -123,
-	-1230, 32129,  1992,  -123, -1231, 32127,  1995,  -123, -1233, 32126,  1998,  -123, -1234, 32124,  2002,  -124,
-	-1235, 32122,  2005,  -124, -1237, 32121,  2008,  -124, -1238, 32119,  2012,  -125, -1239, 32117,  2015,  -125,
-	-1241, 32116,  2018,  -125, -1242, 32114,  2022,  -126, -1243, 32112,  2025,  -126, -1244, 32110,  2028,  -126,
-	-1246, 32109,  2032,  -127, -1247, 32107,  2035,  -127, -1248, 32105,  2038,  -127, -1250, 32105,  2041,  -128,
-	-1251, 32102,  2045,  -128, -1252, 32100,  2048,  -128, -1254, 32100,  2051,  -129, -1255, 32097,  2055,  -129,
-	-1256, 32095,  2058,  -129, -1258, 32095,  2061,  -130, -1259, 32092,  2065,  -130, -1260, 32090,  2068,  -130,
-	-1262, 32089,  2072,  -131, -1263, 32087,  2075,  -131, -1264, 32085,  2078,  -131, -1265, 32082,  2082,  -131,
-	-1267, 32082,  2085,  -132, -1268, 32080,  2088,  -132, -1269, 32077,  2092,  -132, -1271, 32077,  2095,  -133,
-	-1272, 32075,  2098,  -133, -1273, 32072,  2102,  -133, -1274, 32071,  2105,  -134, -1276, 32070,  2108,  -134,
-	-1277, 32067,  2112,  -134, -1278, 32066,  2115,  -135, -1280, 32065,  2118,  -135, -1281, 32062,  2122,  -135,
-	-1282, 32061,  2125,  -136, -1284, 32059,  2129,  -136, -1285, 32057,  2132,  -136, -1286, 32056,  2135,  -137,
-	-1287, 32053,  2139,  -137, -1289, 32052,  2142,  -137, -1290, 32051,  2145,  -138, -1291, 32048,  2149,  -138,
-	-1293, 32047,  2152,  -138, -1294, 32045,  2156,  -139, -1295, 32043,  2159,  -139, -1296, 32041,  2162,  -139,
-	-1298, 32040,  2166,  -140, -1299, 32038,  2169,  -140, -1300, 32036,  2172,  -140, -1301, 32034,  2176,  -141,
-	-1303, 32033,  2179,  -141, -1304, 32030,  2183,  -141, -1305, 32029,  2186,  -142, -1307, 32028,  2189,  -142,
-	-1308, 32025,  2193,  -142, -1309, 32024,  2196,  -143, -1310, 32021,  2200,  -143, -1312, 32020,  2203,  -143,
-	-1313, 32019,  2206,  -144, -1314, 32016,  2210,  -144, -1315, 32014,  2213,  -144, -1317, 32013,  2217,  -145,
-	-1318, 32011,  2220,  -145, -1319, 32009,  2223,  -145, -1321, 32008,  2227,  -146, -1322, 32006,  2230,  -146,
-	-1323, 32003,  2234,  -146, -1324, 32002,  2237,  -147, -1326, 32000,  2241,  -147, -1327, 31998,  2244,  -147,
-	-1328, 31997,  2247,  -148, -1329, 31994,  2251,  -148, -1331, 31993,  2254,  -148, -1332, 31991,  2258,  -149,
-	-1333, 31989,  2261,  -149, -1334, 31987,  2264,  -149, -1336, 31986,  2268,  -150, -1337, 31984,  2271,  -150,
-	-1338, 31981,  2275,  -150, -1339, 31980,  2278,  -151, -1341, 31978,  2282,  -151, -1342, 31976,  2285,  -151,
-	-1343, 31974,  2289,  -152, -1344, 31972,  2292,  -152, -1346, 31972,  2295,  -153, -1347, 31969,  2299,  -153,
-	-1348, 31967,  2302,  -153, -1349, 31965,  2306,  -154, -1351, 31964,  2309,  -154, -1352, 31961,  2313,  -154,
-	-1353, 31960,  2316,  -155, -1354, 31957,  2320,  -155, -1356, 31956,  2323,  -155, -1357, 31955,  2326,  -156,
-	-1358, 31952,  2330,  -156, -1359, 31950,  2333,  -156, -1361, 31949,  2337,  -157, -1362, 31947,  2340,  -157,
-	-1363, 31944,  2344,  -157, -1364, 31943,  2347,  -158, -1366, 31941,  2351,  -158, -1367, 31939,  2354,  -158,
-	-1368, 31937,  2358,  -159, -1369, 31935,  2361,  -159, -1370, 31932,  2365,  -159, -1372, 31932,  2368,  -160,
-	-1373, 31930,  2371,  -160, -1374, 31928,  2375,  -161, -1375, 31926,  2378,  -161, -1377, 31924,  2382,  -161,
-	-1378, 31923,  2385,  -162, -1379, 31920,  2389,  -162, -1380, 31918,  2392,  -162, -1381, 31916,  2396,  -163,
-	-1383, 31915,  2399,  -163, -1384, 31912,  2403,  -163, -1385, 31911,  2406,  -164, -1386, 31908,  2410,  -164,
-	-1388, 31907,  2413,  -164, -1389, 31905,  2417,  -165, -1390, 31903,  2420,  -165, -1391, 31901,  2424,  -166,
-	-1392, 31899,  2427,  -166, -1394, 31897,  2431,  -166, -1395, 31896,  2434,  -167, -1396, 31893,  2438,  -167,
-	-1397, 31891,  2441,  -167, -1399, 31890,  2445,  -168, -1400, 31888,  2448,  -168, -1401, 31885,  2452,  -168,
-	-1402, 31884,  2455,  -169, -1403, 31881,  2459,  -169, -1405, 31880,  2462,  -169, -1406, 31878,  2466,  -170,
-	-1407, 31876,  2469,  -170, -1408, 31874,  2473,  -171, -1409, 31872,  2476,  -171, -1411, 31870,  2480,  -171,
-	-1412, 31869,  2483,  -172, -1413, 31866,  2487,  -172, -1414, 31863,  2491,  -172, -1415, 31862,  2494,  -173,
-	-1417, 31860,  2498,  -173, -1418, 31858,  2501,  -173, -1419, 31856,  2505,  -174, -1420, 31854,  2508,  -174,
-	-1421, 31852,  2512,  -175, -1423, 31851,  2515,  -175, -1424, 31848,  2519,  -175, -1425, 31847,  2522,  -176,
-	-1426, 31844,  2526,  -176, -1427, 31842,  2529,  -176, -1429, 31841,  2533,  -177, -1430, 31839,  2536,  -177,
-	-1431, 31836,  2540,  -177, -1432, 31834,  2544,  -178, -1433, 31832,  2547,  -178, -1435, 31831,  2551,  -179,
-	-1436, 31829,  2554,  -179, -1437, 31826,  2558,  -179, -1438, 31825,  2561,  -180, -1439, 31822,  2565,  -180,
-	-1440, 31820,  2568,  -180, -1442, 31819,  2572,  -181, -1443, 31816,  2576,  -181, -1444, 31815,  2579,  -182,
-	-1445, 31812,  2583,  -182, -1446, 31810,  2586,  -182, -1448, 31809,  2590,  -183, -1449, 31807,  2593,  -183,
-	-1450, 31804,  2597,  -183, -1451, 31802,  2601,  -184, -1452, 31800,  2604,  -184, -1453, 31798,  2608,  -185,
-	-1455, 31797,  2611,  -185, -1456, 31794,  2615,  -185, -1457, 31793,  2618,  -186, -1458, 31790,  2622,  -186,
-	-1459, 31787,  2626,  -186, -1460, 31786,  2629,  -187, -1462, 31784,  2633,  -187, -1463, 31783,  2636,  -188,
-	-1464, 31780,  2640,  -188, -1465, 31778,  2643,  -188, -1466, 31776,  2647,  -189, -1467, 31773,  2651,  -189,
-	-1469, 31772,  2654,  -189, -1470, 31770,  2658,  -190, -1471, 31768,  2661,  -190, -1472, 31766,  2665,  -191,
-	-1473, 31763,  2669,  -191, -1474, 31761,  2672,  -191, -1476, 31760,  2676,  -192, -1477, 31758,  2679,  -192,
-	-1478, 31755,  2683,  -192, -1479, 31753,  2687,  -193, -1480, 31751,  2690,  -193, -1481, 31749,  2694,  -194,
-	-1483, 31748,  2697,  -194, -1484, 31745,  2701,  -194, -1485, 31743,  2705,  -195, -1486, 31741,  2708,  -195,
-	-1487, 31739,  2712,  -196, -1488, 31736,  2716,  -196, -1489, 31734,  2719,  -196, -1491, 31733,  2723,  -197,
-	-1492, 31731,  2726,  -197, -1493, 31728,  2730,  -197, -1494, 31726,  2734,  -198, -1495, 31724,  2737,  -198,
-	-1496, 31722,  2741,  -199, -1498, 31720,  2745,  -199, -1499, 31718,  2748,  -199, -1500, 31716,  2752,  -200,
-	-1501, 31714,  2755,  -200, -1502, 31712,  2759,  -201, -1503, 31709,  2763,  -201, -1504, 31707,  2766,  -201,
-	-1506, 31706,  2770,  -202, -1507, 31703,  2774,  -202, -1508, 31702,  2777,  -203, -1509, 31699,  2781,  -203,
-	-1510, 31696,  2785,  -203, -1511, 31695,  2788,  -204, -1512, 31692,  2792,  -204, -1513, 31690,  2795,  -204,
-	-1515, 31689,  2799,  -205, -1516, 31686,  2803,  -205, -1517, 31685,  2806,  -206, -1518, 31682,  2810,  -206,
-	-1519, 31679,  2814,  -206, -1520, 31678,  2817,  -207, -1521, 31675,  2821,  -207, -1522, 31673,  2825,  -208,
-	-1524, 31672,  2828,  -208, -1525, 31669,  2832,  -208, -1526, 31667,  2836,  -209, -1527, 31665,  2839,  -209,
-	-1528, 31663,  2843,  -210, -1529, 31660,  2847,  -210, -1530, 31658,  2850,  -210, -1531, 31656,  2854,  -211,
-	-1533, 31654,  2858,  -211, -1534, 31653,  2861,  -212, -1535, 31650,  2865,  -212, -1536, 31647,  2869,  -212,
-	-1537, 31646,  2872,  -213, -1538, 31643,  2876,  -213, -1539, 31641,  2880,  -214, -1540, 31639,  2883,  -214,
-	-1542, 31637,  2887,  -214, -1543, 31635,  2891,  -215, -1544, 31632,  2895,  -215, -1545, 31631,  2898,  -216,
-	-1546, 31628,  2902,  -216, -1547, 31625,  2906,  -216, -1548, 31624,  2909,  -217, -1549, 31621,  2913,  -217,
-	-1550, 31619,  2917,  -218, -1552, 31618,  2920,  -218, -1553, 31615,  2924,  -218, -1554, 31613,  2928,  -219,
-	-1555, 31611,  2931,  -219, -1556, 31609,  2935,  -220, -1557, 31606,  2939,  -220, -1558, 31603,  2943,  -220,
-	-1559, 31602,  2946,  -221, -1560, 31599,  2950,  -221, -1561, 31597,  2954,  -222, -1563, 31596,  2957,  -222,
-	-1564, 31593,  2961,  -222, -1565, 31591,  2965,  -223, -1566, 31588,  2969,  -223, -1567, 31587,  2972,  -224,
-	-1568, 31584,  2976,  -224, -1569, 31581,  2980,  -224, -1570, 31580,  2983,  -225, -1571, 31577,  2987,  -225,
-	-1572, 31575,  2991,  -226, -1573, 31572,  2995,  -226, -1575, 31571,  2998,  -226, -1576, 31569,  3002,  -227,
-	-1577, 31566,  3006,  -227, -1578, 31564,  3010,  -228, -1579, 31562,  3013,  -228, -1580, 31559,  3017,  -228,
-	-1581, 31557,  3021,  -229, -1582, 31555,  3024,  -229, -1583, 31553,  3028,  -230, -1584, 31550,  3032,  -230,
-	-1585, 31548,  3036,  -231, -1586, 31546,  3039,  -231, -1588, 31544,  3043,  -231, -1589, 31542,  3047,  -232,
-	-1590, 31539,  3051,  -232, -1591, 31538,  3054,  -233, -1592, 31535,  3058,  -233, -1593, 31532,  3062,  -233,
-	-1594, 31530,  3066,  -234, -1595, 31528,  3069,  -234, -1596, 31526,  3073,  -235, -1597, 31523,  3077,  -235,
-	-1598, 31520,  3081,  -235, -1599, 31519,  3084,  -236, -1600, 31516,  3088,  -236, -1602, 31515,  3092,  -237,
-	-1603, 31512,  3096,  -237, -1604, 31511,  3099,  -238, -1605, 31508,  3103,  -238, -1606, 31505,  3107,  -238,
-	-1607, 31503,  3111,  -239, -1608, 31500,  3115,  -239, -1609, 31499,  3118,  -240, -1610, 31496,  3122,  -240,
-	-1611, 31493,  3126,  -240, -1612, 31491,  3130,  -241, -1613, 31489,  3133,  -241, -1614, 31487,  3137,  -242,
-	-1615, 31484,  3141,  -242, -1616, 31482,  3145,  -243, -1617, 31479,  3149,  -243, -1619, 31478,  3152,  -243,
-	-1620, 31476,  3156,  -244, -1621, 31473,  3160,  -244, -1622, 31471,  3164,  -245, -1623, 31469,  3167,  -245,
-	-1624, 31467,  3171,  -246, -1625, 31464,  3175,  -246, -1626, 31461,  3179,  -246, -1627, 31459,  3183,  -247,
-	-1628, 31457,  3186,  -247, -1629, 31455,  3190,  -248, -1630, 31452,  3194,  -248, -1631, 31449,  3198,  -248,
-	-1632, 31447,  3202,  -249, -1633, 31445,  3205,  -249, -1634, 31443,  3209,  -250, -1635, 31440,  3213,  -250,
-	-1636, 31438,  3217,  -251, -1637, 31435,  3221,  -251, -1638, 31433,  3224,  -251, -1640, 31432,  3228,  -252,
-	-1641, 31429,  3232,  -252, -1642, 31427,  3236,  -253, -1643, 31424,  3240,  -253, -1644, 31422,  3244,  -254,
-	-1645, 31420,  3247,  -254, -1646, 31417,  3251,  -254, -1647, 31415,  3255,  -255, -1648, 31412,  3259,  -255,
-	-1649, 31410,  3263,  -256, -1650, 31408,  3266,  -256, -1651, 31406,  3270,  -257, -1652, 31403,  3274,  -257,
-	-1653, 31400,  3278,  -257, -1654, 31398,  3282,  -258, -1655, 31395,  3286,  -258, -1656, 31394,  3289,  -259,
-	-1657, 31391,  3293,  -259, -1658, 31389,  3297,  -260, -1659, 31386,  3301,  -260, -1660, 31383,  3305,  -260,
-	-1661, 31381,  3309,  -261, -1662, 31379,  3312,  -261, -1663, 31377,  3316,  -262, -1664, 31374,  3320,  -262,
-	-1665, 31372,  3324,  -263, -1666, 31369,  3328,  -263, -1667, 31367,  3332,  -264, -1668, 31364,  3336,  -264,
-	-1669, 31362,  3339,  -264, -1670, 31360,  3343,  -265, -1671, 31357,  3347,  -265, -1672, 31355,  3351,  -266,
-	-1673, 31352,  3355,  -266, -1674, 31350,  3359,  -267, -1675, 31347,  3363,  -267, -1676, 31345,  3366,  -267,
-	-1677, 31343,  3370,  -268, -1679, 31341,  3374,  -268, -1680, 31339,  3378,  -269, -1681, 31336,  3382,  -269,
-	-1682, 31334,  3386,  -270, -1683, 31331,  3390,  -270, -1684, 31329,  3393,  -270, -1685, 31327,  3397,  -271,
-	-1686, 31324,  3401,  -271, -1687, 31322,  3405,  -272, -1688, 31319,  3409,  -272, -1689, 31317,  3413,  -273,
-	-1690, 31314,  3417,  -273, -1691, 31312,  3421,  -274, -1692, 31310,  3424,  -274, -1693, 31307,  3428,  -274,
-	-1694, 31305,  3432,  -275, -1695, 31302,  3436,  -275, -1696, 31300,  3440,  -276, -1697, 31297,  3444,  -276,
-	-1698, 31295,  3448,  -277, -1699, 31292,  3452,  -277, -1700, 31290,  3456,  -278, -1701, 31288,  3459,  -278,
-	-1702, 31285,  3463,  -278, -1703, 31283,  3467,  -279, -1704, 31280,  3471,  -279, -1705, 31278,  3475,  -280,
-	-1706, 31275,  3479,  -280, -1707, 31273,  3483,  -281, -1708, 31270,  3487,  -281, -1708, 31267,  3491,  -282,
-	-1709, 31264,  3495,  -282, -1710, 31262,  3498,  -282, -1711, 31260,  3502,  -283, -1712, 31257,  3506,  -283,
-	-1713, 31255,  3510,  -284, -1714, 31252,  3514,  -284, -1715, 31250,  3518,  -285, -1716, 31247,  3522,  -285,
-	-1717, 31245,  3526,  -286, -1718, 31242,  3530,  -286, -1719, 31239,  3534,  -286, -1720, 31237,  3538,  -287,
-	-1721, 31235,  3541,  -287, -1722, 31233,  3545,  -288, -1723, 31230,  3549,  -288, -1724, 31228,  3553,  -289,
-	-1725, 31225,  3557,  -289, -1726, 31223,  3561,  -290, -1727, 31220,  3565,  -290, -1728, 31218,  3569,  -291,
-	-1729, 31215,  3573,  -291, -1730, 31212,  3577,  -291, -1731, 31210,  3581,  -292, -1732, 31207,  3585,  -292,
-	-1733, 31205,  3589,  -293, -1734, 31202,  3593,  -293, -1735, 31201,  3596,  -294, -1736, 31198,  3600,  -294,
-	-1737, 31196,  3604,  -295, -1738, 31193,  3608,  -295, -1739, 31191,  3612,  -296, -1740, 31188,  3616,  -296,
-	-1741, 31185,  3620,  -296, -1742, 31183,  3624,  -297, -1743, 31180,  3628,  -297, -1744, 31178,  3632,  -298,
-	-1745, 31175,  3636,  -298, -1745, 31172,  3640,  -299, -1746, 31169,  3644,  -299, -1747, 31167,  3648,  -300,
-	-1748, 31164,  3652,  -300, -1749, 31162,  3656,  -301, -1750, 31159,  3660,  -301, -1751, 31156,  3664,  -301,
-	-1752, 31154,  3668,  -302, -1753, 31151,  3672,  -302, -1754, 31149,  3676,  -303, -1755, 31147,  3679,  -303,
-	-1756, 31145,  3683,  -304, -1757, 31142,  3687,  -304, -1758, 31140,  3691,  -305, -1759, 31137,  3695,  -305,
-	-1760, 31135,  3699,  -306, -1761, 31132,  3703,  -306, -1762, 31129,  3707,  -306, -1763, 31127,  3711,  -307,
-	-1764, 31124,  3715,  -307, -1765, 31122,  3719,  -308, -1765, 31118,  3723,  -308, -1766, 31116,  3727,  -309,
-	-1767, 31113,  3731,  -309, -1768, 31111,  3735,  -310, -1769, 31108,  3739,  -310, -1770, 31106,  3743,  -311,
-	-1771, 31103,  3747,  -311, -1772, 31101,  3751,  -312, -1773, 31098,  3755,  -312, -1774, 31096,  3759,  -313,
-	-1775, 31093,  3763,  -313, -1776, 31090,  3767,  -313, -1777, 31088,  3771,  -314, -1778, 31085,  3775,  -314,
-	-1779, 31083,  3779,  -315, -1780, 31080,  3783,  -315, -1780, 31077,  3787,  -316, -1781, 31074,  3791,  -316,
-	-1782, 31072,  3795,  -317, -1783, 31069,  3799,  -317, -1784, 31067,  3803,  -318, -1785, 31064,  3807,  -318,
-	-1786, 31062,  3811,  -319, -1787, 31059,  3815,  -319, -1788, 31057,  3819,  -320, -1789, 31054,  3823,  -320,
-	-1790, 31051,  3827,  -320, -1791, 31049,  3831,  -321, -1792, 31046,  3835,  -321, -1793, 31044,  3839,  -322,
-	-1793, 31040,  3843,  -322, -1794, 31038,  3847,  -323, -1795, 31035,  3851,  -323, -1796, 31033,  3855,  -324,
-	-1797, 31030,  3859,  -324, -1798, 31028,  3863,  -325, -1799, 31025,  3867,  -325, -1800, 31023,  3871,  -326,
-	-1801, 31020,  3875,  -326, -1802, 31018,  3879,  -327, -1803, 31015,  3883,  -327, -1804, 31012,  3888,  -328,
-	-1804, 31008,  3892,  -328, -1805, 31005,  3896,  -328, -1806, 31003,  3900,  -329, -1807, 31000,  3904,  -329,
-	-1808, 30998,  3908,  -330, -1809, 30995,  3912,  -330, -1810, 30993,  3916,  -331, -1811, 30990,  3920,  -331,
-	-1812, 30988,  3924,  -332, -1813, 30985,  3928,  -332, -1813, 30982,  3932,  -333, -1814, 30979,  3936,  -333,
-	-1815, 30977,  3940,  -334, -1816, 30974,  3944,  -334, -1817, 30972,  3948,  -335, -1818, 30969,  3952,  -335,
-	-1819, 30967,  3956,  -336, -1820, 30964,  3960,  -336, -1821, 30962,  3964,  -337, -1822, 30959,  3968,  -337,
-	-1823, 30956,  3973,  -338, -1823, 30952,  3977,  -338, -1824, 30949,  3981,  -338, -1825, 30947,  3985,  -339,
-	-1826, 30944,  3989,  -339, -1827, 30942,  3993,  -340, -1828, 30939,  3997,  -340, -1829, 30937,  4001,  -341,
-	-1830, 30934,  4005,  -341, -1831, 30932,  4009,  -342, -1831, 30928,  4013,  -342, -1832, 30926,  4017,  -343,
-	-1833, 30923,  4021,  -343, -1834, 30921,  4025,  -344, -1835, 30918,  4029,  -344, -1836, 30915,  4034,  -345,
-	-1837, 30912,  4038,  -345, -1838, 30910,  4042,  -346, -1839, 30907,  4046,  -346, -1839, 30904,  4050,  -347,
-	-1840, 30901,  4054,  -347, -1841, 30899,  4058,  -348, -1842, 30896,  4062,  -348, -1843, 30894,  4066,  -349,
-	-1844, 30891,  4070,  -349, -1845, 30889,  4074,  -350, -1846, 30885,  4079,  -350, -1846, 30882,  4083,  -351,
-	-1847, 30879,  4087,  -351, -1848, 30876,  4091,  -351, -1849, 30874,  4095,  -352, -1850, 30871,  4099,  -352,
-	-1851, 30869,  4103,  -353, -1852, 30866,  4107,  -353, -1853, 30864,  4111,  -354, -1853, 30860,  4115,  -354,
-	-1854, 30858,  4119,  -355, -1855, 30854,  4124,  -355, -1856, 30852,  4128,  -356, -1857, 30849,  4132,  -356,
-	-1858, 30847,  4136,  -357, -1859, 30844,  4140,  -357, -1859, 30841,  4144,  -358, -1860, 30838,  4148,  -358,
-	-1861, 30836,  4152,  -359, -1862, 30833,  4156,  -359, -1863, 30830,  4161,  -360, -1864, 30827,  4165,  -360,
-	-1865, 30825,  4169,  -361, -1866, 30822,  4173,  -361, -1866, 30819,  4177,  -362, -1867, 30816,  4181,  -362,
-	-1868, 30814,  4185,  -363, -1869, 30811,  4189,  -363, -1870, 30808,  4194,  -364, -1871, 30805,  4198,  -364,
-	-1872, 30803,  4202,  -365, -1872, 30799,  4206,  -365, -1873, 30797,  4210,  -366, -1874, 30794,  4214,  -366,
-	-1875, 30792,  4218,  -367, -1876, 30788,  4223,  -367, -1877, 30786,  4227,  -368, -1878, 30783,  4231,  -368,
-	-1878, 30780,  4235,  -369, -1879, 30777,  4239,  -369, -1880, 30775,  4243,  -370, -1881, 30772,  4247,  -370,
-	-1882, 30769,  4252,  -371, -1883, 30766,  4256,  -371, -1883, 30763,  4260,  -372, -1884, 30760,  4264,  -372,
-	-1885, 30758,  4268,  -373, -1886, 30755,  4272,  -373, -1887, 30753,  4276,  -374, -1888, 30749,  4281,  -374,
-	-1888, 30746,  4285,  -375, -1889, 30743,  4289,  -375, -1890, 30741,  4293,  -376, -1891, 30738,  4297,  -376,
-	-1892, 30736,  4301,  -377, -1893, 30732,  4306,  -377, -1894, 30730,  4310,  -378, -1894, 30726,  4314,  -378,
-	-1895, 30724,  4318,  -379, -1896, 30721,  4322,  -379, -1897, 30719,  4326,  -380, -1898, 30715,  4331,  -380,
-	-1899, 30713,  4335,  -381, -1899, 30709,  4339,  -381, -1900, 30707,  4343,  -382, -1901, 30704,  4347,  -382,
-	-1902, 30702,  4351,  -383, -1903, 30698,  4356,  -383, -1903, 30695,  4360,  -384, -1904, 30692,  4364,  -384,
-	-1905, 30690,  4368,  -385, -1906, 30687,  4372,  -385, -1907, 30685,  4376,  -386, -1908, 30681,  4381,  -386,
-	-1908, 30678,  4385,  -387, -1909, 30675,  4389,  -387, -1910, 30673,  4393,  -388, -1911, 30670,  4397,  -388,
-	-1912, 30667,  4402,  -389, -1913, 30664,  4406,  -389, -1913, 30661,  4410,  -390, -1914, 30658,  4414,  -390,
-	-1915, 30656,  4418,  -391, -1916, 30652,  4423,  -391, -1917, 30650,  4427,  -392, -1917, 30646,  4431,  -392,
-	-1918, 30644,  4435,  -393, -1919, 30641,  4439,  -393, -1920, 30639,  4443,  -394, -1921, 30635,  4448,  -394,
-	-1922, 30633,  4452,  -395, -1922, 30629,  4456,  -395, -1923, 30627,  4460,  -396, -1924, 30623,  4465,  -396,
-	-1925, 30621,  4469,  -397, -1926, 30618,  4473,  -397, -1926, 30615,  4477,  -398, -1927, 30612,  4481,  -398,
-	-1928, 30609,  4486,  -399, -1929, 30606,  4490,  -399, -1930, 30604,  4494,  -400, -1930, 30600,  4498,  -400,
-	-1931, 30598,  4502,  -401, -1932, 30594,  4507,  -401, -1933, 30592,  4511,  -402, -1934, 30589,  4515,  -402,
-	-1934, 30586,  4519,  -403, -1935, 30582,  4524,  -403, -1936, 30580,  4528,  -404, -1937, 30577,  4532,  -404,
-	-1938, 30575,  4536,  -405, -1938, 30571,  4540,  -405, -1939, 30568,  4545,  -406, -1940, 30565,  4549,  -406,
-	-1941, 30563,  4553,  -407, -1942, 30560,  4557,  -407, -1942, 30556,  4562,  -408, -1943, 30553,  4566,  -408,
-	-1944, 30551,  4570,  -409, -1945, 30549,  4574,  -410, -1946, 30545,  4579,  -410, -1946, 30542,  4583,  -411,
-	-1947, 30539,  4587,  -411, -1948, 30537,  4591,  -412, -1949, 30533,  4596,  -412, -1949, 30530,  4600,  -413,
-	-1950, 30527,  4604,  -413, -1951, 30525,  4608,  -414, -1952, 30521,  4613,  -414, -1953, 30519,  4617,  -415,
-	-1953, 30515,  4621,  -415, -1954, 30513,  4625,  -416, -1955, 30509,  4630,  -416, -1956, 30507,  4634,  -417,
-	-1956, 30503,  4638,  -417, -1957, 30501,  4642,  -418, -1958, 30497,  4647,  -418, -1959, 30495,  4651,  -419,
-	-1960, 30492,  4655,  -419, -1960, 30489,  4659,  -420, -1961, 30485,  4664,  -420, -1962, 30483,  4668,  -421,
-	-1963, 30480,  4672,  -421, -1963, 30477,  4676,  -422, -1964, 30473,  4681,  -422, -1965, 30471,  4685,  -423,
-	-1966, 30468,  4689,  -423, -1967, 30466,  4693,  -424, -1967, 30462,  4698,  -425, -1968, 30459,  4702,  -425,
-	-1969, 30457,  4706,  -426, -1970, 30453,  4711,  -426, -1970, 30450,  4715,  -427, -1971, 30447,  4719,  -427,
-	-1972, 30445,  4723,  -428, -1973, 30441,  4728,  -428, -1973, 30438,  4732,  -429, -1974, 30435,  4736,  -429,
-	-1975, 30432,  4741,  -430, -1976, 30429,  4745,  -430, -1977, 30427,  4749,  -431, -1977, 30423,  4753,  -431,
-	-1978, 30420,  4758,  -432, -1979, 30417,  4762,  -432, -1980, 30415,  4766,  -433, -1980, 30410,  4771,  -433,
-	-1981, 30408,  4775,  -434, -1982, 30405,  4779,  -434, -1983, 30403,  4783,  -435, -1983, 30399,  4788,  -436,
-	-1984, 30396,  4792,  -436, -1985, 30394,  4796,  -437, -1986, 30390,  4801,  -437, -1986, 30387,  4805,  -438,
-	-1987, 30384,  4809,  -438, -1988, 30381,  4814,  -439, -1989, 30378,  4818,  -439, -1989, 30375,  4822,  -440,
-	-1990, 30372,  4826,  -440, -1991, 30369,  4831,  -441, -1992, 30366,  4835,  -441, -1992, 30363,  4839,  -442,
-	-1993, 30359,  4844,  -442, -1994, 30357,  4848,  -443, -1995, 30354,  4852,  -443, -1995, 30350,  4857,  -444,
-	-1996, 30347,  4861,  -444, -1997, 30345,  4865,  -445, -1998, 30342,  4870,  -446, -1998, 30338,  4874,  -446,
-	-1999, 30336,  4878,  -447, -2000, 30332,  4883,  -447, -2000, 30329,  4887,  -448, -2001, 30326,  4891,  -448,
-	-2002, 30323,  4896,  -449, -2003, 30320,  4900,  -449, -2003, 30317,  4904,  -450, -2004, 30313,  4909,  -450,
-	-2005, 30311,  4913,  -451, -2006, 30308,  4917,  -451, -2006, 30305,  4921,  -452, -2007, 30301,  4926,  -452,
-	-2008, 30299,  4930,  -453, -2009, 30297,  4934,  -454, -2009, 30292,  4939,  -454, -2010, 30290,  4943,  -455,
-	-2011, 30286,  4948,  -455, -2011, 30283,  4952,  -456, -2012, 30280,  4956,  -456, -2013, 30277,  4961,  -457,
-	-2014, 30274,  4965,  -457, -2014, 30271,  4969,  -458, -2015, 30267,  4974,  -458, -2016, 30265,  4978,  -459,
-	-2017, 30262,  4982,  -459, -2017, 30258,  4987,  -460, -2018, 30255,  4991,  -460, -2019, 30253,  4995,  -461,
-	-2019, 30249,  5000,  -462, -2020, 30246,  5004,  -462, -2021, 30244,  5008,  -463, -2022, 30240,  5013,  -463,
-	-2022, 30237,  5017,  -464, -2023, 30234,  5021,  -464, -2024, 30231,  5026,  -465, -2024, 30227,  5030,  -465,
-	-2025, 30224,  5035,  -466, -2026, 30221,  5039,  -466, -2027, 30219,  5043,  -467, -2027, 30214,  5048,  -467,
-	-2028, 30212,  5052,  -468, -2029, 30210,  5056,  -469, -2029, 30205,  5061,  -469, -2030, 30203,  5065,  -470,
-	-2031, 30200,  5069,  -470, -2032, 30197,  5074,  -471, -2032, 30193,  5078,  -471, -2033, 30190,  5083,  -472,
-	-2034, 30187,  5087,  -472, -2034, 30184,  5091,  -473, -2035, 30180,  5096,  -473, -2036, 30178,  5100,  -474,
-	-2036, 30174,  5104,  -474, -2037, 30171,  5109,  -475, -2038, 30169,  5113,  -476, -2039, 30165,  5118,  -476,
-	-2039, 30162,  5122,  -477, -2040, 30159,  5126,  -477, -2041, 30156,  5131,  -478, -2041, 30152,  5135,  -478,
-	-2042, 30149,  5140,  -479, -2043, 30146,  5144,  -479, -2043, 30143,  5148,  -480, -2044, 30139,  5153,  -480,
-	-2045, 30137,  5157,  -481, -2046, 30134,  5162,  -482, -2046, 30130,  5166,  -482, -2047, 30128,  5170,  -483,
-	-2048, 30124,  5175,  -483, -2048, 30121,  5179,  -484, -2049, 30117,  5184,  -484, -2050, 30115,  5188,  -485,
-	-2050, 30111,  5192,  -485, -2051, 30108,  5197,  -486, -2052, 30105,  5201,  -486, -2052, 30101,  5206,  -487,
-	-2053, 30099,  5210,  -488, -2054, 30096,  5214,  -488, -2055, 30093,  5219,  -489, -2055, 30089,  5223,  -489,
-	-2056, 30086,  5228,  -490, -2057, 30083,  5232,  -490, -2057, 30080,  5236,  -491, -2058, 30076,  5241,  -491,
-	-2059, 30074,  5245,  -492, -2059, 30069,  5250,  -492, -2060, 30067,  5254,  -493, -2061, 30065,  5258,  -494,
-	-2061, 30060,  5263,  -494, -2062, 30058,  5267,  -495, -2063, 30054,  5272,  -495, -2063, 30051,  5276,  -496,
-	-2064, 30047,  5281,  -496, -2065, 30045,  5285,  -497, -2065, 30041,  5289,  -497, -2066, 30038,  5294,  -498,
-	-2067, 30036,  5298,  -499, -2067, 30031,  5303,  -499, -2068, 30029,  5307,  -500, -2069, 30025,  5312,  -500,
-	-2069, 30022,  5316,  -501, -2070, 30019,  5320,  -501, -2071, 30016,  5325,  -502, -2071, 30012,  5329,  -502,
-	-2072, 30009,  5334,  -503, -2073, 30006,  5338,  -503, -2073, 30002,  5343,  -504, -2074, 30000,  5347,  -505,
-	-2075, 29996,  5352,  -505, -2075, 29993,  5356,  -506, -2076, 29990,  5360,  -506, -2077, 29987,  5365,  -507,
-	-2077, 29983,  5369,  -507, -2078, 29980,  5374,  -508, -2079, 29977,  5378,  -508, -2079, 29973,  5383,  -509,
-	-2080, 29971,  5387,  -510, -2081, 29967,  5392,  -510, -2081, 29964,  5396,  -511, -2082, 29961,  5400,  -511,
-	-2083, 29958,  5405,  -512, -2083, 29954,  5409,  -512, -2084, 29951,  5414,  -513, -2085, 29948,  5418,  -513,
-	-2085, 29944,  5423,  -514, -2086, 29942,  5427,  -515, -2087, 29938,  5432,  -515, -2087, 29935,  5436,  -516,
-	-2088, 29931,  5441,  -516, -2089, 29929,  5445,  -517, -2089, 29924,  5450,  -517, -2090, 29922,  5454,  -518,
-	-2090, 29918,  5458,  -518, -2091, 29915,  5463,  -519, -2092, 29913,  5467,  -520, -2092, 29908,  5472,  -520,
-	-2093, 29906,  5476,  -521, -2094, 29902,  5481,  -521, -2094, 29899,  5485,  -522, -2095, 29895,  5490,  -522,
-	-2096, 29893,  5494,  -523, -2096, 29889,  5499,  -524, -2097, 29886,  5503,  -524, -2098, 29883,  5508,  -525,
-	-2098, 29879,  5512,  -525, -2099, 29876,  5517,  -526, -2099, 29872,  5521,  -526, -2100, 29869,  5526,  -527,
-	-2101, 29866,  5530,  -527, -2101, 29862,  5535,  -528, -2102, 29860,  5539,  -529, -2103, 29856,  5544,  -529,
-	-2103, 29853,  5548,  -530, -2104, 29849,  5553,  -530, -2105, 29847,  5557,  -531, -2105, 29842,  5562,  -531,
-	-2106, 29840,  5566,  -532, -2106, 29835,  5571,  -532, -2107, 29833,  5575,  -533, -2108, 29830,  5580,  -534,
-	-2108, 29826,  5584,  -534, -2109, 29823,  5589,  -535, -2110, 29820,  5593,  -535, -2110, 29816,  5598,  -536,
-	-2111, 29813,  5602,  -536, -2111, 29809,  5607,  -537, -2112, 29807,  5611,  -538, -2113, 29803,  5616,  -538,
-	-2113, 29800,  5620,  -539, -2114, 29796,  5625,  -539, -2115, 29794,  5629,  -540, -2115, 29789,  5634,  -540,
-	-2116, 29787,  5638,  -541, -2116, 29783,  5643,  -542, -2117, 29780,  5647,  -542, -2118, 29777,  5652,  -543,
-	-2118, 29773,  5656,  -543, -2119, 29770,  5661,  -544, -2120, 29767,  5665,  -544, -2120, 29763,  5670,  -545,
-	-2121, 29760,  5674,  -545, -2121, 29756,  5679,  -546, -2122, 29754,  5683,  -547, -2123, 29750,  5688,  -547,
-	-2123, 29747,  5692,  -548, -2124, 29743,  5697,  -548, -2124, 29740,  5701,  -549, -2125, 29736,  5706,  -549,
-	-2126, 29734,  5710,  -550, -2126, 29730,  5715,  -551, -2127, 29727,  5719,  -551, -2127, 29723,  5724,  -552,
-	-2128, 29719,  5729,  -552, -2129, 29717,  5733,  -553, -2129, 29712,  5738,  -553, -2130, 29710,  5742,  -554,
-	-2130, 29706,  5747,  -555, -2131, 29703,  5751,  -555, -2132, 29700,  5756,  -556, -2132, 29696,  5760,  -556,
-	-2133, 29693,  5765,  -557, -2133, 29689,  5769,  -557, -2134, 29686,  5774,  -558, -2135, 29684,  5778,  -559,
-	-2135, 29679,  5783,  -559, -2136, 29676,  5788,  -560, -2136, 29672,  5792,  -560, -2137, 29669,  5797,  -561,
-	-2138, 29666,  5801,  -561, -2138, 29662,  5806,  -562, -2139, 29660,  5810,  -563, -2139, 29655,  5815,  -563,
-	-2140, 29653,  5819,  -564, -2141, 29649,  5824,  -564, -2141, 29645,  5829,  -565, -2142, 29642,  5833,  -565,
-	-2142, 29638,  5838,  -566, -2143, 29636,  5842,  -567, -2144, 29632,  5847,  -567, -2144, 29629,  5851,  -568,
-	-2145, 29625,  5856,  -568, -2145, 29622,  5860,  -569, -2146, 29618,  5865,  -569, -2147, 29615,  5870,  -570,
-	-2147, 29612,  5874,  -571, -2148, 29608,  5879,  -571, -2148, 29605,  5883,  -572, -2149, 29601,  5888,  -572,
-	-2149, 29598,  5892,  -573, -2150, 29594,  5897,  -573, -2151, 29591,  5902,  -574, -2151, 29588,  5906,  -575,
-	-2152, 29584,  5911,  -575, -2152, 29581,  5915,  -576, -2153, 29577,  5920,  -576, -2154, 29575,  5924,  -577,
-	-2154, 29571,  5929,  -578, -2155, 29567,  5934,  -578, -2155, 29564,  5938,  -579, -2156, 29560,  5943,  -579,
-	-2156, 29557,  5947,  -580, -2157, 29553,  5952,  -580, -2158, 29551,  5956,  -581, -2158, 29547,  5961,  -582,
-	-2159, 29543,  5966,  -582, -2159, 29540,  5970,  -583, -2160, 29536,  5975,  -583, -2160, 29533,  5979,  -584,
-	-2161, 29529,  5984,  -584, -2162, 29526,  5989,  -585, -2162, 29523,  5993,  -586, -2163, 29519,  5998,  -586,
-	-2163, 29516,  6002,  -587, -2164, 29512,  6007,  -587, -2164, 29508,  6012,  -588, -2165, 29506,  6016,  -589,
-	-2165, 29501,  6021,  -589, -2166, 29499,  6025,  -590, -2167, 29495,  6030,  -590, -2167, 29491,  6035,  -591,
-	-2168, 29488,  6039,  -591, -2168, 29484,  6044,  -592, -2169, 29482,  6048,  -593, -2169, 29477,  6053,  -593,
-	-2170, 29474,  6058,  -594, -2171, 29471,  6062,  -594, -2171, 29467,  6067,  -595, -2172, 29465,  6071,  -596,
-	-2172, 29460,  6076,  -596, -2173, 29457,  6081,  -597, -2173, 29453,  6085,  -597, -2174, 29450,  6090,  -598,
-	-2174, 29446,  6094,  -598, -2175, 29443,  6099,  -599, -2176, 29440,  6104,  -600, -2176, 29436,  6108,  -600,
-	-2177, 29433,  6113,  -601, -2177, 29428,  6118,  -601, -2178, 29426,  6122,  -602, -2178, 29422,  6127,  -603,
-	-2179, 29419,  6131,  -603, -2179, 29415,  6136,  -604, -2180, 29411,  6141,  -604, -2180, 29408,  6145,  -605,
-	-2181, 29404,  6150,  -605, -2182, 29401,  6155,  -606, -2182, 29398,  6159,  -607, -2183, 29394,  6164,  -607,
-	-2183, 29391,  6168,  -608, -2184, 29387,  6173,  -608, -2184, 29383,  6178,  -609, -2185, 29381,  6182,  -610,
-	-2185, 29376,  6187,  -610, -2186, 29373,  6192,  -611, -2186, 29369,  6196,  -611, -2187, 29366,  6201,  -612,
-	-2188, 29363,  6206,  -613, -2188, 29359,  6210,  -613, -2189, 29356,  6215,  -614, -2189, 29352,  6219,  -614,
-	-2190, 29349,  6224,  -615, -2190, 29344,  6229,  -615, -2191, 29342,  6233,  -616, -2191, 29338,  6238,  -617,
-	-2192, 29334,  6243,  -617, -2192, 29331,  6247,  -618, -2193, 29327,  6252,  -618, -2193, 29323,  6257,  -619,
-	-2194, 29321,  6261,  -620, -2194, 29316,  6266,  -620, -2195, 29313,  6271,  -621, -2195, 29309,  6275,  -621,
-	-2196, 29306,  6280,  -622, -2197, 29303,  6285,  -623, -2197, 29299,  6289,  -623, -2198, 29296,  6294,  -624,
-	-2198, 29292,  6298,  -624, -2199, 29289,  6303,  -625, -2199, 29284,  6308,  -625, -2200, 29282,  6312,  -626,
-	-2200, 29278,  6317,  -627, -2201, 29274,  6322,  -627, -2201, 29271,  6326,  -628, -2202, 29267,  6331,  -628,
-	-2202, 29263,  6336,  -629, -2203, 29261,  6340,  -630, -2203, 29256,  6345,  -630, -2204, 29253,  6350,  -631,
-	-2204, 29249,  6354,  -631, -2205, 29246,  6359,  -632, -2205, 29242,  6364,  -633, -2206, 29239,  6368,  -633,
-	-2206, 29235,  6373,  -634, -2207, 29231,  6378,  -634, -2207, 29228,  6382,  -635, -2208, 29225,  6387,  -636,
-	-2208, 29220,  6392,  -636, -2209, 29217,  6397,  -637, -2209, 29213,  6401,  -637, -2210, 29210,  6406,  -638,
-	-2211, 29207,  6411,  -639, -2211, 29203,  6415,  -639, -2212, 29200,  6420,  -640, -2212, 29195,  6425,  -640,
-	-2213, 29193,  6429,  -641, -2213, 29189,  6434,  -642, -2214, 29185,  6439,  -642, -2214, 29182,  6443,  -643,
-	-2215, 29178,  6448,  -643, -2215, 29174,  6453,  -644, -2216, 29171,  6457,  -644, -2216, 29167,  6462,  -645,
-	-2217, 29164,  6467,  -646, -2217, 29160,  6471,  -646, -2218, 29157,  6476,  -647, -2218, 29152,  6481,  -647,
-	-2219, 29149,  6486,  -648, -2219, 29146,  6490,  -649, -2220, 29142,  6495,  -649, -2220, 29138,  6500,  -650,
-	-2221, 29135,  6504,  -650, -2221, 29131,  6509,  -651, -2222, 29128,  6514,  -652, -2222, 29124,  6518,  -652,
-	-2223, 29121,  6523,  -653, -2223, 29116,  6528,  -653, -2224, 29113,  6533,  -654, -2224, 29110,  6537,  -655,
-	-2224, 29105,  6542,  -655, -2225, 29102,  6547,  -656, -2225, 29098,  6551,  -656, -2226, 29095,  6556,  -657,
-	-2226, 29091,  6561,  -658, -2227, 29087,  6566,  -658, -2227, 29084,  6570,  -659, -2228, 29080,  6575,  -659,
-	-2228, 29076,  6580,  -660, -2229, 29074,  6584,  -661, -2229, 29069,  6589,  -661, -2230, 29066,  6594,  -662,
-	-2230, 29061,  6599,  -662, -2231, 29059,  6603,  -663, -2231, 29055,  6608,  -664, -2232, 29051,  6613,  -664,
-	-2232, 29048,  6617,  -665, -2233, 29044,  6622,  -665, -2233, 29040,  6627,  -666, -2234, 29037,  6632,  -667,
-	-2234, 29033,  6636,  -667, -2235, 29030,  6641,  -668, -2235, 29025,  6646,  -668, -2236, 29022,  6651,  -669,
-	-2236, 29019,  6655,  -670, -2237, 29015,  6660,  -670, -2237, 29011,  6665,  -671, -2237, 29006,  6670,  -671,
-	-2238, 29004,  6674,  -672, -2238, 29000,  6679,  -673, -2239, 28996,  6684,  -673, -2239, 28993,  6688,  -674,
-	-2240, 28990,  6693,  -675, -2240, 28985,  6698,  -675, -2241, 28982,  6703,  -676, -2241, 28978,  6707,  -676,
-	-2242, 28975,  6712,  -677, -2242, 28971,  6717,  -678, -2243, 28967,  6722,  -678, -2243, 28964,  6726,  -679,
-	-2244, 28960,  6731,  -679, -2244, 28956,  6736,  -680, -2245, 28953,  6741,  -681, -2245, 28949,  6745,  -681,
-	-2245, 28945,  6750,  -682, -2246, 28941,  6755,  -682, -2246, 28937,  6760,  -683, -2247, 28935,  6764,  -684,
-	-2247, 28930,  6769,  -684, -2248, 28927,  6774,  -685, -2248, 28922,  6779,  -685, -2249, 28920,  6783,  -686,
-	-2249, 28916,  6788,  -687, -2250, 28912,  6793,  -687, -2250, 28908,  6798,  -688, -2250, 28904,  6802,  -688,
-	-2251, 28901,  6807,  -689, -2251, 28897,  6812,  -690, -2252, 28893,  6817,  -690, -2252, 28890,  6821,  -691,
-	-2253, 28886,  6826,  -691, -2253, 28882,  6831,  -692, -2254, 28879,  6836,  -693, -2254, 28874,  6841,  -693,
-	-2255, 28872,  6845,  -694, -2255, 28868,  6850,  -695, -2255, 28863,  6855,  -695, -2256, 28860,  6860,  -696,
-	-2256, 28856,  6864,  -696, -2257, 28853,  6869,  -697, -2257, 28849,  6874,  -698, -2258, 28845,  6879,  -698,
-	-2258, 28842,  6883,  -699, -2259, 28838,  6888,  -699, -2259, 28834,  6893,  -700, -2259, 28830,  6898,  -701,
-	-2260, 28826,  6903,  -701, -2260, 28823,  6907,  -702, -2261, 28819,  6912,  -702, -2261, 28815,  6917,  -703,
-	-2262, 28812,  6922,  -704, -2262, 28807,  6927,  -704, -2263, 28805,  6931,  -705, -2263, 28801,  6936,  -706,
-	-2263, 28796,  6941,  -706, -2264, 28793,  6946,  -707, -2264, 28789,  6950,  -707, -2265, 28786,  6955,  -708,
-	-2265, 28782,  6960,  -709, -2266, 28778,  6965,  -709, -2266, 28774,  6970,  -710, -2266, 28770,  6974,  -710,
-	-2267, 28767,  6979,  -711, -2267, 28763,  6984,  -712, -2268, 28759,  6989,  -712, -2268, 28755,  6994,  -713,
-	-2269, 28752,  6998,  -713, -2269, 28748,  7003,  -714, -2269, 28744,  7008,  -715, -2270, 28740,  7013,  -715,
-	-2270, 28736,  7018,  -716, -2271, 28734,  7022,  -717, -2271, 28729,  7027,  -717, -2272, 28726,  7032,  -718,
-	-2272, 28721,  7037,  -718, -2272, 28717,  7042,  -719, -2273, 28715,  7046,  -720, -2273, 28710,  7051,  -720,
-	-2274, 28707,  7056,  -721, -2274, 28702,  7061,  -721, -2275, 28699,  7066,  -722, -2275, 28696,  7070,  -723,
-	-2275, 28691,  7075,  -723, -2276, 28688,  7080,  -724, -2276, 28684,  7085,  -725, -2277, 28680,  7090,  -725,
-	-2277, 28676,  7095,  -726, -2277, 28672,  7099,  -726, -2278, 28669,  7104,  -727, -2278, 28665,  7109,  -728,
-	-2279, 28661,  7114,  -728, -2279, 28657,  7119,  -729, -2280, 28654,  7123,  -729, -2280, 28650,  7128,  -730,
-	-2280, 28646,  7133,  -731, -2281, 28642,  7138,  -731, -2281, 28638,  7143,  -732, -2282, 28635,  7148,  -733,
-	-2282, 28631,  7152,  -733, -2282, 28627,  7157,  -734, -2283, 28623,  7162,  -734, -2283, 28619,  7167,  -735,
-	-2284, 28616,  7172,  -736, -2284, 28612,  7176,  -736, -2284, 28608,  7181,  -737, -2285, 28605,  7186,  -738,
-	-2285, 28600,  7191,  -738, -2286, 28597,  7196,  -739, -2286, 28592,  7201,  -739, -2287, 28590,  7205,  -740,
-	-2287, 28586,  7210,  -741, -2287, 28581,  7215,  -741, -2288, 28578,  7220,  -742, -2288, 28573,  7225,  -742,
-	-2289, 28570,  7230,  -743, -2289, 28566,  7235,  -744, -2289, 28562,  7239,  -744, -2290, 28559,  7244,  -745,
-	-2290, 28555,  7249,  -746, -2290, 28550,  7254,  -746, -2291, 28547,  7259,  -747, -2291, 28542,  7264,  -747,
-	-2292, 28540,  7268,  -748, -2292, 28536,  7273,  -749, -2292, 28531,  7278,  -749, -2293, 28528,  7283,  -750,
-	-2293, 28524,  7288,  -751, -2294, 28520,  7293,  -751, -2294, 28516,  7298,  -752, -2294, 28512,  7302,  -752,
-	-2295, 28509,  7307,  -753, -2295, 28505,  7312,  -754, -2296, 28501,  7317,  -754, -2296, 28497,  7322,  -755,
-	-2296, 28493,  7327,  -756, -2297, 28489,  7332,  -756, -2297, 28486,  7336,  -757, -2298, 28482,  7341,  -757,
-	-2298, 28478,  7346,  -758, -2298, 28474,  7351,  -759, -2299, 28470,  7356,  -759, -2299, 28466,  7361,  -760,
-	-2299, 28462,  7366,  -761, -2300, 28459,  7370,  -761, -2300, 28455,  7375,  -762, -2301, 28451,  7380,  -762,
-	-2301, 28447,  7385,  -763, -2301, 28443,  7390,  -764, -2302, 28439,  7395,  -764, -2302, 28435,  7400,  -765,
-	-2302, 28431,  7405,  -766, -2303, 28428,  7409,  -766, -2303, 28424,  7414,  -767, -2304, 28420,  7419,  -767,
-	-2304, 28416,  7424,  -768, -2304, 28412,  7429,  -769, -2305, 28408,  7434,  -769, -2305, 28404,  7439,  -770,
-	-2305, 28400,  7444,  -771, -2306, 28397,  7448,  -771, -2306, 28393,  7453,  -772, -2307, 28389,  7458,  -772,
-	-2307, 28385,  7463,  -773, -2307, 28381,  7468,  -774, -2308, 28377,  7473,  -774, -2308, 28373,  7478,  -775,
-	-2308, 28369,  7483,  -776, -2309, 28366,  7487,  -776, -2309, 28362,  7492,  -777, -2310, 28358,  7497,  -777,
-	-2310, 28354,  7502,  -778, -2310, 28350,  7507,  -779, -2311, 28346,  7512,  -779, -2311, 28342,  7517,  -780,
-	-2311, 28338,  7522,  -781, -2312, 28334,  7527,  -781, -2312, 28331,  7531,  -782, -2312, 28326,  7536,  -782,
-	-2313, 28323,  7541,  -783, -2313, 28319,  7546,  -784, -2314, 28315,  7551,  -784, -2314, 28311,  7556,  -785,
-	-2314, 28307,  7561,  -786, -2315, 28303,  7566,  -786, -2315, 28299,  7571,  -787, -2315, 28294,  7576,  -787,
-	-2316, 28292,  7580,  -788, -2316, 28288,  7585,  -789, -2316, 28283,  7590,  -789, -2317, 28280,  7595,  -790,
-	-2317, 28276,  7600,  -791, -2317, 28271,  7605,  -791, -2318, 28268,  7610,  -792, -2318, 28263,  7615,  -792,
-	-2319, 28260,  7620,  -793, -2319, 28256,  7625,  -794, -2319, 28252,  7629,  -794, -2320, 28249,  7634,  -795,
-	-2320, 28245,  7639,  -796, -2320, 28240,  7644,  -796, -2321, 28237,  7649,  -797, -2321, 28233,  7654,  -798,
-	-2321, 28228,  7659,  -798, -2322, 28225,  7664,  -799, -2322, 28220,  7669,  -799, -2322, 28216,  7674,  -800,
-	-2323, 28213,  7679,  -801, -2323, 28208,  7684,  -801, -2323, 28205,  7688,  -802, -2324, 28202,  7693,  -803,
-	-2324, 28197,  7698,  -803, -2324, 28193,  7703,  -804, -2325, 28189,  7708,  -804, -2325, 28185,  7713,  -805,
-	-2325, 28181,  7718,  -806, -2326, 28177,  7723,  -806, -2326, 28173,  7728,  -807, -2326, 28169,  7733,  -808,
-	-2327, 28165,  7738,  -808, -2327, 28161,  7743,  -809, -2327, 28157,  7748,  -810, -2328, 28153,  7753,  -810,
-	-2328, 28150,  7757,  -811, -2328, 28145,  7762,  -811, -2329, 28142,  7767,  -812, -2329, 28138,  7772,  -813,
-	-2329, 28133,  7777,  -813, -2330, 28130,  7782,  -814, -2330, 28126,  7787,  -815, -2330, 28121,  7792,  -815,
-	-2331, 28118,  7797,  -816, -2331, 28113,  7802,  -816, -2331, 28109,  7807,  -817, -2332, 28106,  7812,  -818,
-	-2332, 28101,  7817,  -818, -2332, 28097,  7822,  -819, -2333, 28094,  7827,  -820, -2333, 28089,  7832,  -820,
-	-2333, 28086,  7836,  -821, -2334, 28083,  7841,  -822, -2334, 28078,  7846,  -822, -2334, 28074,  7851,  -823,
-	-2335, 28070,  7856,  -823, -2335, 28066,  7861,  -824, -2335, 28062,  7866,  -825, -2336, 28058,  7871,  -825,
-	-2336, 28054,  7876,  -826, -2336, 28050,  7881,  -827, -2337, 28046,  7886,  -827, -2337, 28042,  7891,  -828,
-	-2337, 28038,  7896,  -829, -2338, 28034,  7901,  -829, -2338, 28030,  7906,  -830, -2338, 28025,  7911,  -830,
-	-2338, 28021,  7916,  -831, -2339, 28018,  7921,  -832, -2339, 28013,  7926,  -832, -2339, 28009,  7931,  -833,
-	-2340, 28006,  7936,  -834, -2340, 28002,  7940,  -834, -2340, 27998,  7945,  -835, -2341, 27995,  7950,  -836,
-	-2341, 27990,  7955,  -836, -2341, 27986,  7960,  -837, -2342, 27982,  7965,  -837, -2342, 27978,  7970,  -838,
-	-2342, 27974,  7975,  -839, -2343, 27970,  7980,  -839, -2343, 27966,  7985,  -840, -2343, 27962,  7990,  -841,
-	-2343, 27957,  7995,  -841, -2344, 27954,  8000,  -842, -2344, 27950,  8005,  -843, -2344, 27945,  8010,  -843,
-	-2345, 27942,  8015,  -844, -2345, 27937,  8020,  -844, -2345, 27933,  8025,  -845, -2346, 27930,  8030,  -846,
-	-2346, 27925,  8035,  -846, -2346, 27921,  8040,  -847, -2346, 27917,  8045,  -848, -2347, 27913,  8050,  -848,
-	-2347, 27909,  8055,  -849, -2347, 27905,  8060,  -850, -2348, 27901,  8065,  -850, -2348, 27897,  8070,  -851,
-	-2348, 27892,  8075,  -851, -2349, 27889,  8080,  -852, -2349, 27885,  8085,  -853, -2349, 27880,  8090,  -853,
-	-2349, 27876,  8095,  -854, -2350, 27873,  8100,  -855, -2350, 27868,  8105,  -855, -2350, 27864,  8110,  -856,
-	-2351, 27861,  8115,  -857, -2351, 27856,  8120,  -857, -2351, 27852,  8125,  -858, -2351, 27848,  8130,  -859,
-	-2352, 27844,  8135,  -859, -2352, 27840,  8140,  -860, -2352, 27835,  8145,  -860, -2353, 27832,  8150,  -861,
-	-2353, 27828,  8155,  -862, -2353, 27823,  8160,  -862, -2353, 27819,  8165,  -863, -2354, 27816,  8170,  -864,
-	-2354, 27811,  8175,  -864, -2354, 27807,  8180,  -865, -2355, 27804,  8185,  -866, -2355, 27799,  8190,  -866,
-	-2355, 27795,  8195,  -867, -2355, 27791,  8200,  -868, -2356, 27787,  8205,  -868, -2356, 27783,  8210,  -869,
-	-2356, 27778,  8215,  -869, -2357, 27775,  8220,  -870, -2357, 27771,  8225,  -871, -2357, 27766,  8230,  -871,
-	-2357, 27762,  8235,  -872, -2358, 27759,  8240,  -873, -2358, 27754,  8245,  -873, -2358, 27750,  8250,  -874,
-	-2359, 27747,  8255,  -875, -2359, 27742,  8260,  -875, -2359, 27738,  8265,  -876, -2359, 27734,  8270,  -877,
-	-2360, 27730,  8275,  -877, -2360, 27726,  8280,  -878, -2360, 27721,  8285,  -878, -2360, 27717,  8290,  -879,
-	-2361, 27714,  8295,  -880, -2361, 27709,  8300,  -880, -2361, 27705,  8305,  -881, -2362, 27702,  8310,  -882,
-	-2362, 27697,  8315,  -882, -2362, 27693,  8320,  -883, -2362, 27689,  8325,  -884, -2363, 27685,  8330,  -884,
-	-2363, 27681,  8335,  -885, -2363, 27677,  8340,  -886, -2363, 27672,  8345,  -886, -2364, 27669,  8350,  -887,
-	-2364, 27664,  8355,  -887, -2364, 27660,  8360,  -888, -2364, 27656,  8365,  -889, -2365, 27652,  8370,  -889,
-	-2365, 27648,  8375,  -890, -2365, 27644,  8380,  -891, -2365, 27639,  8385,  -891, -2366, 27636,  8390,  -892,
-	-2366, 27632,  8395,  -893, -2366, 27627,  8400,  -893, -2367, 27624,  8405,  -894, -2367, 27620,  8410,  -895,
-	-2367, 27615,  8415,  -895, -2367, 27611,  8420,  -896, -2368, 27607,  8425,  -896, -2368, 27603,  8430,  -897,
-	-2368, 27598,  8436,  -898, -2368, 27593,  8441,  -898, -2369, 27590,  8446,  -899, -2369, 27586,  8451,  -900,
-	-2369, 27581,  8456,  -900, -2369, 27577,  8461,  -901, -2370, 27574,  8466,  -902, -2370, 27569,  8471,  -902,
-	-2370, 27565,  8476,  -903, -2370, 27561,  8481,  -904, -2371, 27557,  8486,  -904, -2371, 27553,  8491,  -905,
-	-2371, 27549,  8496,  -906, -2371, 27544,  8501,  -906, -2372, 27541,  8506,  -907, -2372, 27536,  8511,  -907,
-	-2372, 27532,  8516,  -908, -2372, 27528,  8521,  -909, -2373, 27524,  8526,  -909, -2373, 27520,  8531,  -910,
-	-2373, 27516,  8536,  -911, -2373, 27511,  8541,  -911, -2374, 27507,  8547,  -912, -2374, 27503,  8552,  -913,
-	-2374, 27498,  8557,  -913, -2374, 27494,  8562,  -914, -2374, 27490,  8567,  -915, -2375, 27486,  8572,  -915,
-	-2375, 27482,  8577,  -916, -2375, 27478,  8582,  -917, -2375, 27473,  8587,  -917, -2376, 27470,  8592,  -918,
-	-2376, 27466,  8597,  -919, -2376, 27461,  8602,  -919, -2376, 27457,  8607,  -920, -2377, 27453,  8612,  -920,
-	-2377, 27449,  8617,  -921, -2377, 27445,  8622,  -922, -2377, 27439,  8628,  -922, -2378, 27436,  8633,  -923,
-	-2378, 27432,  8638,  -924, -2378, 27427,  8643,  -924, -2378, 27423,  8648,  -925, -2378, 27419,  8653,  -926,
-	-2379, 27415,  8658,  -926, -2379, 27411,  8663,  -927, -2379, 27407,  8668,  -928, -2379, 27402,  8673,  -928,
-	-2380, 27399,  8678,  -929, -2380, 27395,  8683,  -930, -2380, 27390,  8688,  -930, -2380, 27386,  8693,  -931,
-	-2381, 27382,  8699,  -932, -2381, 27377,  8704,  -932, -2381, 27373,  8709,  -933, -2381, 27368,  8714,  -933,
-	-2381, 27364,  8719,  -934, -2382, 27361,  8724,  -935, -2382, 27356,  8729,  -935, -2382, 27352,  8734,  -936,
-	-2382, 27348,  8739,  -937, -2382, 27343,  8744,  -937, -2383, 27340,  8749,  -938, -2383, 27336,  8754,  -939,
-	-2383, 27331,  8759,  -939, -2383, 27326,  8765,  -940, -2384, 27323,  8770,  -941, -2384, 27318,  8775,  -941,
-	-2384, 27314,  8780,  -942, -2384, 27310,  8785,  -943, -2384, 27305,  8790,  -943, -2385, 27302,  8795,  -944,
-	-2385, 27298,  8800,  -945, -2385, 27293,  8805,  -945, -2385, 27289,  8810,  -946, -2386, 27285,  8815,  -946,
-	-2386, 27280,  8821,  -947, -2386, 27276,  8826,  -948, -2386, 27271,  8831,  -948, -2386, 27267,  8836,  -949,
-	-2387, 27264,  8841,  -950, -2387, 27259,  8846,  -950, -2387, 27255,  8851,  -951, -2387, 27251,  8856,  -952,
-	-2387, 27246,  8861,  -952, -2388, 27243,  8866,  -953, -2388, 27238,  8872,  -954, -2388, 27233,  8877,  -954,
-	-2388, 27229,  8882,  -955, -2388, 27225,  8887,  -956, -2389, 27221,  8892,  -956, -2389, 27217,  8897,  -957,
-	-2389, 27213,  8902,  -958, -2389, 27208,  8907,  -958, -2389, 27204,  8912,  -959, -2390, 27201,  8917,  -960,
-	-2390, 27195,  8923,  -960, -2390, 27191,  8928,  -961, -2390, 27186,  8933,  -961, -2390, 27182,  8938,  -962,
-	-2391, 27179,  8943,  -963, -2391, 27174,  8948,  -963, -2391, 27170,  8953,  -964, -2391, 27166,  8958,  -965,
-	-2391, 27161,  8963,  -965, -2392, 27157,  8969,  -966, -2392, 27153,  8974,  -967, -2392, 27148,  8979,  -967,
-	-2392, 27144,  8984,  -968, -2392, 27140,  8989,  -969, -2393, 27136,  8994,  -969, -2393, 27132,  8999,  -970,
-	-2393, 27128,  9004,  -971, -2393, 27123,  9009,  -971, -2393, 27118,  9015,  -972, -2394, 27115,  9020,  -973,
-	-2394, 27110,  9025,  -973, -2394, 27106,  9030,  -974, -2394, 27102,  9035,  -975, -2394, 27097,  9040,  -975,
-	-2394, 27093,  9045,  -976, -2395, 27090,  9050,  -977, -2395, 27084,  9056,  -977, -2395, 27080,  9061,  -978,
-	-2395, 27076,  9066,  -979, -2395, 27071,  9071,  -979, -2396, 27068,  9076,  -980, -2396, 27063,  9081,  -980,
-	-2396, 27059,  9086,  -981, -2396, 27055,  9091,  -982, -2396, 27049,  9097,  -982, -2396, 27045,  9102,  -983,
-	-2397, 27042,  9107,  -984, -2397, 27037,  9112,  -984, -2397, 27033,  9117,  -985, -2397, 27029,  9122,  -986,
-	-2397, 27024,  9127,  -986, -2398, 27020,  9133,  -987, -2398, 27016,  9138,  -988, -2398, 27011,  9143,  -988,
-	-2398, 27007,  9148,  -989, -2398, 27003,  9153,  -990, -2398, 26998,  9158,  -990, -2399, 26995,  9163,  -991,
-	-2399, 26991,  9168,  -992, -2399, 26985,  9174,  -992, -2399, 26981,  9179,  -993, -2399, 26977,  9184,  -994,
-	-2399, 26972,  9189,  -994, -2400, 26969,  9194,  -995, -2400, 26965,  9199,  -996, -2400, 26960,  9204,  -996,
-	-2400, 26955,  9210,  -997, -2400, 26951,  9215,  -998, -2401, 26947,  9220,  -998, -2401, 26943,  9225,  -999,
-	-2401, 26939,  9230, -1000, -2401, 26934,  9235, -1000, -2401, 26930,  9240, -1001, -2401, 26924,  9246, -1001,
-	-2402, 26921,  9251, -1002, -2402, 26917,  9256, -1003, -2402, 26912,  9261, -1003, -2402, 26908,  9266, -1004,
-	-2402, 26904,  9271, -1005, -2402, 26898,  9277, -1005, -2402, 26894,  9282, -1006, -2403, 26891,  9287, -1007,
-	-2403, 26886,  9292, -1007, -2403, 26882,  9297, -1008, -2403, 26878,  9302, -1009, -2403, 26873,  9307, -1009,
-	-2403, 26868,  9313, -1010, -2404, 26865,  9318, -1011, -2404, 26860,  9323, -1011, -2404, 26856,  9328, -1012,
-	-2404, 26852,  9333, -1013, -2404, 26847,  9338, -1013, -2404, 26842,  9344, -1014, -2405, 26839,  9349, -1015,
-	-2405, 26834,  9354, -1015, -2405, 26830,  9359, -1016, -2405, 26826,  9364, -1017, -2405, 26821,  9369, -1017,
-	-2405, 26816,  9375, -1018, -2405, 26812,  9380, -1019, -2406, 26808,  9385, -1019, -2406, 26804,  9390, -1020,
-	-2406, 26800,  9395, -1021, -2406, 26795,  9400, -1021, -2406, 26790,  9406, -1022, -2406, 26786,  9411, -1023,
-	-2406, 26781,  9416, -1023, -2407, 26778,  9421, -1024, -2407, 26774,  9426, -1025, -2407, 26769,  9431, -1025,
-	-2407, 26764,  9437, -1026, -2407, 26760,  9442, -1027, -2407, 26755,  9447, -1027, -2408, 26752,  9452, -1028,
-	-2408, 26747,  9457, -1028, -2408, 26742,  9463, -1029, -2408, 26738,  9468, -1030, -2408, 26733,  9473, -1030,
-	-2408, 26729,  9478, -1031, -2408, 26725,  9483, -1032, -2409, 26721,  9488, -1032, -2409, 26716,  9494, -1033,
-	-2409, 26712,  9499, -1034, -2409, 26707,  9504, -1034, -2409, 26703,  9509, -1035, -2409, 26699,  9514, -1036,
-	-2409, 26693,  9520, -1036, -2409, 26689,  9525, -1037, -2410, 26686,  9530, -1038, -2410, 26681,  9535, -1038,
-	-2410, 26677,  9540, -1039, -2410, 26673,  9545, -1040, -2410, 26667,  9551, -1040, -2410, 26663,  9556, -1041,
-	-2410, 26659,  9561, -1042, -2411, 26655,  9566, -1042, -2411, 26651,  9571, -1043, -2411, 26646,  9577, -1044,
-	-2411, 26641,  9582, -1044, -2411, 26637,  9587, -1045, -2411, 26633,  9592, -1046, -2411, 26628,  9597, -1046,
-	-2411, 26623,  9603, -1047, -2412, 26620,  9608, -1048, -2412, 26615,  9613, -1048, -2412, 26611,  9618, -1049,
-	-2412, 26607,  9623, -1050, -2412, 26601,  9629, -1050, -2412, 26597,  9634, -1051, -2412, 26593,  9639, -1052,
-	-2412, 26588,  9644, -1052, -2413, 26585,  9649, -1053, -2413, 26581,  9654, -1054, -2413, 26575,  9660, -1054,
-	-2413, 26571,  9665, -1055, -2413, 26567,  9670, -1056, -2413, 26562,  9675, -1056, -2413, 26557,  9681, -1057,
-	-2413, 26553,  9686, -1058, -2414, 26549,  9691, -1058, -2414, 26545,  9696, -1059, -2414, 26541,  9701, -1060,
-	-2414, 26535,  9707, -1060, -2414, 26531,  9712, -1061, -2414, 26527,  9717, -1062, -2414, 26522,  9722, -1062,
-	-2414, 26518,  9727, -1063, -2414, 26513,  9733, -1064, -2415, 26509,  9738, -1064, -2415, 26505,  9743, -1065,
-	-2415, 26501,  9748, -1066, -2415, 26496,  9753, -1066, -2415, 26491,  9759, -1067, -2415, 26487,  9764, -1068,
-	-2415, 26482,  9769, -1068, -2415, 26478,  9774, -1069, -2415, 26473,  9779, -1069, -2416, 26469,  9785, -1070,
-	-2416, 26465,  9790, -1071, -2416, 26460,  9795, -1071, -2416, 26456,  9800, -1072, -2416, 26451,  9806, -1073,
-	-2416, 26446,  9811, -1073, -2416, 26442,  9816, -1074, -2416, 26438,  9821, -1075, -2416, 26433,  9826, -1075,
-	-2417, 26429,  9832, -1076, -2417, 26425,  9837, -1077, -2417, 26420,  9842, -1077, -2417, 26416,  9847, -1078,
-	-2417, 26411,  9853, -1079, -2417, 26406,  9858, -1079, -2417, 26402,  9863, -1080, -2417, 26398,  9868, -1081,
-	-2417, 26393,  9873, -1081, -2417, 26388,  9879, -1082, -2418, 26385,  9884, -1083, -2418, 26380,  9889, -1083,
-	-2418, 26376,  9894, -1084, -2418, 26371,  9900, -1085, -2418, 26366,  9905, -1085, -2418, 26362,  9910, -1086,
-	-2418, 26358,  9915, -1087, -2418, 26352,  9921, -1087, -2418, 26348,  9926, -1088, -2418, 26344,  9931, -1089,
-	-2419, 26340,  9936, -1089, -2419, 26336,  9941, -1090, -2419, 26331,  9947, -1091, -2419, 26326,  9952, -1091,
-	-2419, 26322,  9957, -1092, -2419, 26318,  9962, -1093, -2419, 26312,  9968, -1093, -2419, 26308,  9973, -1094,
-	-2419, 26304,  9978, -1095, -2419, 26299,  9983, -1095, -2419, 26294,  9989, -1096, -2420, 26291,  9994, -1097,
-	-2420, 26286,  9999, -1097, -2420, 26282, 10004, -1098, -2420, 26277, 10010, -1099, -2420, 26272, 10015, -1099,
-	-2420, 26268, 10020, -1100, -2420, 26264, 10025, -1101, -2420, 26259, 10030, -1101, -2420, 26254, 10036, -1102,
-	-2420, 26250, 10041, -1103, -2420, 26245, 10046, -1103, -2421, 26242, 10051, -1104, -2421, 26237, 10057, -1105,
-	-2421, 26232, 10062, -1105, -2421, 26228, 10067, -1106, -2421, 26224, 10072, -1107, -2421, 26218, 10078, -1107,
-	-2421, 26214, 10083, -1108, -2421, 26210, 10088, -1109, -2421, 26205, 10093, -1109, -2421, 26200, 10099, -1110,
-	-2421, 26196, 10104, -1111, -2421, 26191, 10109, -1111, -2421, 26187, 10114, -1112, -2422, 26183, 10120, -1113,
-	-2422, 26178, 10125, -1113, -2422, 26174, 10130, -1114, -2422, 26170, 10135, -1115, -2422, 26164, 10141, -1115,
-	-2422, 26160, 10146, -1116, -2422, 26156, 10151, -1117, -2422, 26151, 10156, -1117, -2422, 26146, 10162, -1118,
-	-2422, 26142, 10167, -1119, -2422, 26137, 10172, -1119, -2422, 26132, 10178, -1120, -2422, 26128, 10183, -1121,
-	-2422, 26123, 10188, -1121, -2423, 26120, 10193, -1122, -2423, 26115, 10199, -1123, -2423, 26110, 10204, -1123,
-	-2423, 26106, 10209, -1124, -2423, 26102, 10214, -1125, -2423, 26096, 10220, -1125, -2423, 26092, 10225, -1126,
-	-2423, 26088, 10230, -1127, -2423, 26083, 10235, -1127, -2423, 26078, 10241, -1128, -2423, 26074, 10246, -1129,
-	-2423, 26069, 10251, -1129, -2423, 26065, 10256, -1130, -2423, 26060, 10262, -1131, -2423, 26055, 10267, -1131,
-	-2424, 26052, 10272, -1132, -2424, 26047, 10278, -1133, -2424, 26042, 10283, -1133, -2424, 26038, 10288, -1134,
-	-2424, 26034, 10293, -1135, -2424, 26028, 10299, -1135, -2424, 26024, 10304, -1136, -2424, 26020, 10309, -1137,
-	-2424, 26015, 10314, -1137, -2424, 26010, 10320, -1138, -2424, 26006, 10325, -1139, -2424, 26001, 10330, -1139,
-	-2424, 25996, 10336, -1140, -2424, 25992, 10341, -1141, -2424, 25987, 10346, -1141, -2424, 25983, 10351, -1142,
-	-2424, 25978, 10357, -1143, -2424, 25973, 10362, -1143, -2425, 25970, 10367, -1144, -2425, 25965, 10373, -1145,
-	-2425, 25960, 10378, -1145, -2425, 25956, 10383, -1146, -2425, 25952, 10388, -1147, -2425, 25946, 10394, -1147,
-	-2425, 25942, 10399, -1148, -2425, 25938, 10404, -1149, -2425, 25933, 10409, -1149, -2425, 25928, 10415, -1150,
-	-2425, 25924, 10420, -1151, -2425, 25919, 10425, -1151, -2425, 25914, 10431, -1152, -2425, 25910, 10436, -1153,
-	-2425, 25905, 10441, -1153, -2425, 25901, 10446, -1154, -2425, 25896, 10452, -1155, -2425, 25891, 10457, -1155,
-	-2425, 25887, 10462, -1156, -2425, 25882, 10468, -1157, -2425, 25877, 10473, -1157, -2426, 25874, 10478, -1158,
-	-2426, 25870, 10483, -1159, -2426, 25864, 10489, -1159, -2426, 25860, 10494, -1160, -2426, 25856, 10499, -1161,
-	-2426, 25850, 10505, -1161, -2426, 25846, 10510, -1162, -2426, 25842, 10515, -1163, -2426, 25836, 10521, -1163,
-	-2426, 25832, 10526, -1164, -2426, 25828, 10531, -1165, -2426, 25823, 10536, -1165, -2426, 25818, 10542, -1166,
-	-2426, 25814, 10547, -1167, -2426, 25809, 10552, -1167, -2426, 25804, 10558, -1168, -2426, 25800, 10563, -1169,
-	-2426, 25795, 10568, -1169, -2426, 25790, 10574, -1170, -2426, 25786, 10579, -1171, -2426, 25781, 10584, -1171,
-	-2426, 25777, 10589, -1172, -2426, 25772, 10595, -1173, -2426, 25767, 10600, -1173, -2426, 25763, 10605, -1174,
-	-2426, 25758, 10611, -1175, -2426, 25753, 10616, -1175, -2426, 25749, 10621, -1176, -2426, 25744, 10627, -1177,
-	-2427, 25740, 10632, -1177, -2427, 25736, 10637, -1178, -2427, 25732, 10642, -1179, -2427, 25726, 10648, -1179,
-	-2427, 25722, 10653, -1180, -2427, 25718, 10658, -1181, -2427, 25712, 10664, -1181, -2427, 25708, 10669, -1182,
-	-2427, 25704, 10674, -1183, -2427, 25698, 10680, -1183, -2427, 25694, 10685, -1184, -2427, 25690, 10690, -1185,
-	-2427, 25684, 10696, -1185, -2427, 25680, 10701, -1186, -2427, 25676, 10706, -1187, -2427, 25670, 10712, -1187,
-	-2427, 25666, 10717, -1188, -2427, 25662, 10722, -1189, -2427, 25657, 10727, -1189, -2427, 25652, 10733, -1190,
-	-2427, 25648, 10738, -1191, -2427, 25643, 10743, -1191, -2427, 25638, 10749, -1192, -2427, 25634, 10754, -1193,
-	-2427, 25629, 10759, -1193, -2427, 25624, 10765, -1194, -2427, 25620, 10770, -1195, -2427, 25615, 10775, -1195,
-	-2427, 25610, 10781, -1196, -2427, 25606, 10786, -1197, -2427, 25601, 10791, -1197, -2427, 25596, 10797, -1198,
-	-2427, 25592, 10802, -1199, -2427, 25587, 10807, -1199, -2427, 25582, 10813, -1200, -2427, 25578, 10818, -1201,
-	-2427, 25573, 10823, -1201, -2427, 25568, 10829, -1202, -2427, 25564, 10834, -1203, -2427, 25559, 10839, -1203,
-	-2427, 25555, 10844, -1204, -2427, 25550, 10850, -1205, -2427, 25545, 10855, -1205, -2427, 25541, 10860, -1206,
-	-2427, 25536, 10866, -1207, -2427, 25531, 10871, -1207, -2427, 25527, 10876, -1208, -2427, 25522, 10882, -1209,
-	-2427, 25517, 10887, -1209, -2427, 25513, 10892, -1210, -2427, 25508, 10898, -1211, -2427, 25503, 10903, -1211,
-	-2427, 25499, 10908, -1212, -2427, 25494, 10914, -1213, -2427, 25489, 10919, -1213, -2427, 25485, 10924, -1214,
-	-2427, 25480, 10930, -1215, -2427, 25475, 10935, -1215, -2427, 25471, 10940, -1216, -2427, 25466, 10946, -1217,
-	-2427, 25461, 10951, -1217, -2427, 25457, 10956, -1218, -2427, 25452, 10962, -1219, -2427, 25447, 10967, -1219,
-	-2427, 25443, 10972, -1220, -2427, 25438, 10978, -1221, -2427, 25433, 10983, -1221, -2427, 25429, 10988, -1222,
-	-2427, 25424, 10994, -1223, -2427, 25419, 10999, -1223, -2427, 25414, 11005, -1224, -2427, 25410, 11010, -1225,
-	-2427, 25405, 11015, -1225, -2427, 25400, 11021, -1226, -2427, 25396, 11026, -1227, -2427, 25391, 11031, -1227,
-	-2427, 25386, 11037, -1228, -2427, 25382, 11042, -1229, -2427, 25377, 11047, -1229, -2427, 25372, 11053, -1230,
-	-2427, 25368, 11058, -1231, -2427, 25363, 11063, -1231, -2427, 25358, 11069, -1232, -2427, 25354, 11074, -1233,
-	-2427, 25349, 11079, -1233, -2427, 25344, 11085, -1234, -2427, 25340, 11090, -1235, -2427, 25335, 11095, -1235,
-	-2427, 25330, 11101, -1236, -2427, 25326, 11106, -1237, -2427, 25321, 11111, -1237, -2427, 25316, 11117, -1238,
-	-2427, 25312, 11122, -1239, -2427, 25307, 11127, -1239, -2427, 25302, 11133, -1240, -2427, 25298, 11138, -1241,
-	-2427, 25292, 11144, -1241, -2427, 25288, 11149, -1242, -2427, 25284, 11154, -1243, -2427, 25278, 11160, -1243,
-	-2427, 25274, 11165, -1244, -2427, 25270, 11170, -1245, -2427, 25264, 11176, -1245, -2427, 25260, 11181, -1246,
-	-2427, 25256, 11186, -1247, -2427, 25250, 11192, -1247, -2427, 25246, 11197, -1248, -2427, 25242, 11202, -1249,
-	-2427, 25236, 11208, -1249, -2427, 25232, 11213, -1250, -2427, 25227, 11219, -1251, -2426, 25221, 11224, -1251,
-	-2426, 25217, 11229, -1252, -2426, 25212, 11235, -1253, -2426, 25207, 11240, -1253, -2426, 25203, 11245, -1254,
-	-2426, 25198, 11251, -1255, -2426, 25193, 11256, -1255, -2426, 25189, 11261, -1256, -2426, 25184, 11267, -1257,
-	-2426, 25179, 11272, -1257, -2426, 25175, 11277, -1258, -2426, 25170, 11283, -1259, -2426, 25165, 11288, -1259,
-	-2426, 25160, 11294, -1260, -2426, 25156, 11299, -1261, -2426, 25151, 11304, -1261, -2426, 25146, 11310, -1262,
-	-2426, 25142, 11315, -1263, -2426, 25137, 11320, -1263, -2426, 25132, 11326, -1264, -2426, 25128, 11331, -1265,
-	-2426, 25122, 11337, -1265, -2426, 25118, 11342, -1266, -2426, 25114, 11347, -1267, -2426, 25108, 11353, -1267,
-	-2426, 25104, 11358, -1268, -2426, 25100, 11363, -1269, -2426, 25094, 11369, -1269, -2426, 25090, 11374, -1270,
-	-2426, 25085, 11380, -1271, -2425, 25079, 11385, -1271, -2425, 25075, 11390, -1272, -2425, 25069, 11396, -1272,
-	-2425, 25065, 11401, -1273, -2425, 25061, 11406, -1274, -2425, 25055, 11412, -1274, -2425, 25051, 11417, -1275,
-	-2425, 25047, 11422, -1276, -2425, 25041, 11428, -1276, -2425, 25037, 11433, -1277, -2425, 25032, 11439, -1278,
-	-2425, 25027, 11444, -1278, -2425, 25023, 11449, -1279, -2425, 25018, 11455, -1280, -2425, 25013, 11460, -1280,
-	-2425, 25008, 11466, -1281, -2425, 25004, 11471, -1282, -2425, 24999, 11476, -1282, -2425, 24994, 11482, -1283,
-	-2425, 24990, 11487, -1284, -2425, 24985, 11492, -1284, -2424, 24979, 11498, -1285, -2424, 24975, 11503, -1286,
-	-2424, 24969, 11509, -1286, -2424, 24965, 11514, -1287, -2424, 24961, 11519, -1288, -2424, 24955, 11525, -1288,
-	-2424, 24951, 11530, -1289, -2424, 24946, 11536, -1290, -2424, 24941, 11541, -1290, -2424, 24937, 11546, -1291,
-	-2424, 24932, 11552, -1292, -2424, 24927, 11557, -1292, -2424, 24923, 11562, -1293, -2424, 24918, 11568, -1294,
-	-2424, 24913, 11573, -1294, -2424, 24908, 11579, -1295, -2424, 24904, 11584, -1296, -2424, 24899, 11589, -1296,
-	-2423, 24893, 11595, -1297, -2423, 24889, 11600, -1298, -2423, 24883, 11606, -1298, -2423, 24879, 11611, -1299,
-	-2423, 24875, 11616, -1300, -2423, 24869, 11622, -1300, -2423, 24865, 11627, -1301, -2423, 24860, 11633, -1302,
-	-2423, 24855, 11638, -1302, -2423, 24851, 11643, -1303, -2423, 24846, 11649, -1304, -2423, 24841, 11654, -1304,
-	-2423, 24837, 11659, -1305, -2423, 24832, 11665, -1306, -2423, 24827, 11670, -1306, -2423, 24822, 11676, -1307,
-	-2422, 24817, 11681, -1308, -2422, 24812, 11686, -1308, -2422, 24807, 11692, -1309, -2422, 24803, 11697, -1310,
-	-2422, 24797, 11703, -1310, -2422, 24793, 11708, -1311, -2422, 24789, 11713, -1312, -2422, 24783, 11719, -1312,
-	-2422, 24779, 11724, -1313, -2422, 24774, 11730, -1314, -2422, 24769, 11735, -1314, -2422, 24765, 11740, -1315,
-	-2422, 24760, 11746, -1316, -2422, 24755, 11751, -1316, -2421, 24749, 11757, -1317, -2421, 24745, 11762, -1318,
-	-2421, 24740, 11767, -1318, -2421, 24735, 11773, -1319, -2421, 24731, 11778, -1320, -2421, 24725, 11784, -1320,
-	-2421, 24721, 11789, -1321, -2421, 24717, 11794, -1322, -2421, 24711, 11800, -1322, -2421, 24707, 11805, -1323,
-	-2421, 24702, 11811, -1324, -2421, 24697, 11816, -1324, -2421, 24692, 11822, -1325, -2420, 24687, 11827, -1326,
-	-2420, 24682, 11832, -1326, -2420, 24677, 11838, -1327, -2420, 24673, 11843, -1328, -2420, 24667, 11849, -1328,
-	-2420, 24663, 11854, -1329, -2420, 24659, 11859, -1330, -2420, 24653, 11865, -1330, -2420, 24649, 11870, -1331,
-	-2420, 24644, 11876, -1332, -2420, 24639, 11881, -1332, -2420, 24635, 11886, -1333, -2419, 24629, 11892, -1334,
-	-2419, 24624, 11897, -1334, -2419, 24619, 11903, -1335, -2419, 24615, 11908, -1336, -2419, 24609, 11914, -1336,
-	-2419, 24605, 11919, -1337, -2419, 24601, 11924, -1338, -2419, 24595, 11930, -1338, -2419, 24591, 11935, -1339,
-	-2419, 24586, 11941, -1340, -2419, 24581, 11946, -1340, -2419, 24577, 11951, -1341, -2418, 24571, 11957, -1342,
-	-2418, 24566, 11962, -1342, -2418, 24561, 11968, -1343, -2418, 24557, 11973, -1344, -2418, 24551, 11979, -1344,
-	-2418, 24547, 11984, -1345, -2418, 24543, 11989, -1346, -2418, 24537, 11995, -1346, -2418, 24533, 12000, -1347,
-	-2418, 24528, 12006, -1348, -2418, 24523, 12011, -1348, -2417, 24518, 12016, -1349, -2417, 24513, 12022, -1350,
-	-2417, 24508, 12027, -1350, -2417, 24503, 12033, -1351, -2417, 24499, 12038, -1352, -2417, 24493, 12044, -1352,
-	-2417, 24489, 12049, -1353, -2417, 24485, 12054, -1354, -2417, 24479, 12060, -1354, -2417, 24475, 12065, -1355,
-	-2416, 24469, 12071, -1356, -2416, 24464, 12076, -1356, -2416, 24459, 12082, -1357, -2416, 24455, 12087, -1358,
-	-2416, 24450, 12092, -1358, -2416, 24445, 12098, -1359, -2416, 24441, 12103, -1360, -2416, 24435, 12109, -1360,
-	-2416, 24431, 12114, -1361, -2416, 24426, 12120, -1362, -2415, 24420, 12125, -1362, -2415, 24416, 12130, -1363,
-	-2415, 24411, 12136, -1364, -2415, 24406, 12141, -1364, -2415, 24401, 12147, -1365, -2415, 24396, 12152, -1365,
-	-2415, 24391, 12158, -1366, -2415, 24387, 12163, -1367, -2415, 24382, 12168, -1367, -2414, 24376, 12174, -1368,
-	-2414, 24372, 12179, -1369, -2414, 24366, 12185, -1369, -2414, 24362, 12190, -1370, -2414, 24357, 12196, -1371,
-	-2414, 24352, 12201, -1371, -2414, 24348, 12206, -1372, -2414, 24343, 12212, -1373, -2414, 24338, 12217, -1373,
-	-2413, 24332, 12223, -1374, -2413, 24328, 12228, -1375, -2413, 24322, 12234, -1375, -2413, 24318, 12239, -1376,
-	-2413, 24314, 12244, -1377, -2413, 24308, 12250, -1377, -2413, 24304, 12255, -1378, -2413, 24299, 12261, -1379,
-	-2413, 24294, 12266, -1379, -2412, 24288, 12272, -1380, -2412, 24284, 12277, -1381, -2412, 24278, 12283, -1381,
-	-2412, 24274, 12288, -1382, -2412, 24270, 12293, -1383, -2412, 24264, 12299, -1383, -2412, 24260, 12304, -1384,
-	-2412, 24255, 12310, -1385, -2411, 24249, 12315, -1385, -2411, 24244, 12321, -1386, -2411, 24240, 12326, -1387,
-	-2411, 24234, 12332, -1387, -2411, 24230, 12337, -1388, -2411, 24226, 12342, -1389, -2411, 24220, 12348, -1389,
-	-2411, 24216, 12353, -1390, -2411, 24211, 12359, -1391, -2410, 24205, 12364, -1391, -2410, 24200, 12370, -1392,
-	-2410, 24196, 12375, -1393, -2410, 24190, 12381, -1393, -2410, 24186, 12386, -1394, -2410, 24182, 12391, -1395,
-	-2410, 24176, 12397, -1395, -2410, 24172, 12402, -1396, -2409, 24166, 12408, -1397, -2409, 24161, 12413, -1397,
-	-2409, 24156, 12419, -1398, -2409, 24152, 12424, -1399, -2409, 24146, 12430, -1399, -2409, 24142, 12435, -1400,
-	-2409, 24138, 12440, -1401, -2408, 24131, 12446, -1401, -2408, 24127, 12451, -1402, -2408, 24122, 12457, -1403,
-	-2408, 24117, 12462, -1403, -2408, 24112, 12468, -1404, -2408, 24107, 12473, -1404, -2408, 24102, 12479, -1405,
-	-2408, 24098, 12484, -1406, -2407, 24091, 12490, -1406, -2407, 24087, 12495, -1407, -2407, 24083, 12500, -1408,
-	-2407, 24077, 12506, -1408, -2407, 24073, 12511, -1409, -2407, 24068, 12517, -1410, -2407, 24063, 12522, -1410,
-	-2406, 24057, 12528, -1411, -2406, 24053, 12533, -1412, -2406, 24047, 12539, -1412, -2406, 24043, 12544, -1413,
-	-2406, 24039, 12549, -1414, -2406, 24033, 12555, -1414, -2406, 24029, 12560, -1415, -2405, 24023, 12566, -1416,
-	-2405, 24018, 12571, -1416, -2405, 24013, 12577, -1417, -2405, 24009, 12582, -1418, -2405, 24003, 12588, -1418,
-	-2405, 23999, 12593, -1419, -2405, 23994, 12599, -1420, -2404, 23988, 12604, -1420, -2404, 23983, 12610, -1421,
-	-2404, 23979, 12615, -1422, -2404, 23974, 12620, -1422, -2404, 23969, 12626, -1423, -2404, 23965, 12631, -1424,
-	-2404, 23959, 12637, -1424, -2403, 23954, 12642, -1425, -2403, 23949, 12648, -1426, -2403, 23944, 12653, -1426,
-	-2403, 23939, 12659, -1427, -2403, 23935, 12664, -1428, -2403, 23929, 12670, -1428, -2403, 23925, 12675, -1429,
-	-2402, 23918, 12681, -1429, -2402, 23914, 12686, -1430, -2402, 23910, 12691, -1431, -2402, 23904, 12697, -1431,
-	-2402, 23900, 12702, -1432, -2402, 23895, 12708, -1433, -2402, 23890, 12713, -1433, -2401, 23884, 12719, -1434,
-	-2401, 23880, 12724, -1435, -2401, 23874, 12730, -1435, -2401, 23870, 12735, -1436, -2401, 23865, 12741, -1437,
-	-2401, 23860, 12746, -1437, -2400, 23854, 12752, -1438, -2400, 23850, 12757, -1439, -2400, 23844, 12763, -1439,
-	-2400, 23840, 12768, -1440, -2400, 23836, 12773, -1441, -2400, 23830, 12779, -1441, -2400, 23826, 12784, -1442,
-	-2399, 23820, 12790, -1443, -2399, 23815, 12795, -1443, -2399, 23810, 12801, -1444, -2399, 23806, 12806, -1445,
-	-2399, 23800, 12812, -1445, -2399, 23796, 12817, -1446, -2398, 23790, 12823, -1447, -2398, 23785, 12828, -1447,
-	-2398, 23780, 12834, -1448, -2398, 23776, 12839, -1449, -2398, 23770, 12845, -1449, -2398, 23766, 12850, -1450,
-	-2397, 23759, 12856, -1450, -2397, 23755, 12861, -1451, -2397, 23751, 12866, -1452, -2397, 23745, 12872, -1452,
-	-2397, 23741, 12877, -1453, -2397, 23736, 12883, -1454, -2396, 23730, 12888, -1454, -2396, 23725, 12894, -1455,
-	-2396, 23721, 12899, -1456, -2396, 23715, 12905, -1456, -2396, 23711, 12910, -1457, -2396, 23706, 12916, -1458,
-	-2395, 23700, 12921, -1458, -2395, 23695, 12927, -1459, -2395, 23691, 12932, -1460, -2395, 23685, 12938, -1460,
-	-2395, 23681, 12943, -1461, -2395, 23676, 12949, -1462, -2394, 23670, 12954, -1462, -2394, 23665, 12960, -1463,
-	-2394, 23661, 12965, -1464, -2394, 23655, 12971, -1464, -2394, 23651, 12976, -1465, -2394, 23646, 12982, -1466,
-	-2393, 23640, 12987, -1466, -2393, 23636, 12992, -1467, -2393, 23631, 12998, -1468, -2393, 23626, 13003, -1468,
-	-2393, 23621, 13009, -1469, -2393, 23616, 13014, -1469, -2392, 23610, 13020, -1470, -2392, 23606, 13025, -1471,
-	-2392, 23600, 13031, -1471, -2392, 23596, 13036, -1472, -2392, 23591, 13042, -1473, -2391, 23585, 13047, -1473,
-	-2391, 23580, 13053, -1474, -2391, 23576, 13058, -1475, -2391, 23570, 13064, -1475, -2391, 23566, 13069, -1476,
-	-2391, 23561, 13075, -1477, -2390, 23555, 13080, -1477, -2390, 23550, 13086, -1478, -2390, 23546, 13091, -1479,
-	-2390, 23540, 13097, -1479, -2390, 23536, 13102, -1480, -2389, 23530, 13108, -1481, -2389, 23525, 13113, -1481,
-	-2389, 23520, 13119, -1482, -2389, 23516, 13124, -1483, -2389, 23510, 13130, -1483, -2389, 23506, 13135, -1484,
-	-2388, 23499, 13141, -1484, -2388, 23495, 13146, -1485, -2388, 23490, 13152, -1486, -2388, 23485, 13157, -1486,
-	-2388, 23480, 13163, -1487, -2387, 23475, 13168, -1488, -2387, 23470, 13173, -1488, -2387, 23465, 13179, -1489,
-	-2387, 23461, 13184, -1490, -2387, 23455, 13190, -1490, -2387, 23451, 13195, -1491, -2386, 23445, 13201, -1492,
-	-2386, 23440, 13206, -1492, -2386, 23435, 13212, -1493, -2386, 23431, 13217, -1494, -2386, 23425, 13223, -1494,
-	-2385, 23420, 13228, -1495, -2385, 23415, 13234, -1496, -2385, 23410, 13239, -1496, -2385, 23405, 13245, -1497,
-	-2385, 23400, 13250, -1497, -2384, 23394, 13256, -1498, -2384, 23390, 13261, -1499, -2384, 23384, 13267, -1499,
-	-2384, 23380, 13272, -1500, -2384, 23375, 13278, -1501, -2383, 23369, 13283, -1501, -2383, 23364, 13289, -1502,
-	-2383, 23360, 13294, -1503, -2383, 23354, 13300, -1503, -2383, 23350, 13305, -1504, -2382, 23344, 13311, -1505,
-	-2382, 23339, 13316, -1505, -2382, 23334, 13322, -1506, -2382, 23330, 13327, -1507, -2382, 23324, 13333, -1507,
-	-2381, 23319, 13338, -1508, -2381, 23314, 13344, -1509, -2381, 23309, 13349, -1509, -2381, 23304, 13355, -1510,
-	-2381, 23299, 13360, -1510, -2380, 23293, 13366, -1511, -2380, 23289, 13371, -1512, -2380, 23283, 13377, -1512,
-	-2380, 23279, 13382, -1513, -2380, 23274, 13388, -1514, -2379, 23268, 13393, -1514, -2379, 23263, 13399, -1515,
-	-2379, 23259, 13404, -1516, -2379, 23253, 13410, -1516, -2379, 23249, 13415, -1517, -2378, 23243, 13421, -1518,
-	-2378, 23238, 13426, -1518, -2378, 23233, 13432, -1519, -2378, 23229, 13437, -1520, -2378, 23223, 13443, -1520,
-	-2377, 23218, 13448, -1521, -2377, 23212, 13454, -1521, -2377, 23208, 13459, -1522, -2377, 23203, 13465, -1523,
-	-2377, 23198, 13470, -1523, -2376, 23192, 13476, -1524, -2376, 23188, 13481, -1525, -2376, 23182, 13487, -1525,
-	-2376, 23178, 13492, -1526, -2376, 23173, 13498, -1527, -2375, 23167, 13503, -1527, -2375, 23162, 13509, -1528,
-	-2375, 23158, 13514, -1529, -2375, 23152, 13520, -1529, -2374, 23147, 13525, -1530, -2374, 23142, 13531, -1531,
-	-2374, 23137, 13536, -1531, -2374, 23132, 13542, -1532, -2374, 23127, 13547, -1532, -2373, 23121, 13553, -1533,
-	-2373, 23117, 13558, -1534, -2373, 23111, 13564, -1534, -2373, 23107, 13569, -1535, -2373, 23102, 13575, -1536,
-	-2372, 23096, 13580, -1536, -2372, 23091, 13586, -1537, -2372, 23087, 13591, -1538, -2372, 23081, 13597, -1538,
-	-2371, 23076, 13602, -1539, -2371, 23071, 13608, -1540, -2371, 23066, 13613, -1540, -2371, 23061, 13619, -1541,
-	-2371, 23057, 13624, -1542, -2370, 23050, 13630, -1542, -2370, 23045, 13636, -1543, -2370, 23040, 13641, -1543,
-	-2370, 23035, 13647, -1544, -2369, 23030, 13652, -1545, -2369, 23024, 13658, -1545, -2369, 23020, 13663, -1546,
-	-2369, 23015, 13669, -1547, -2369, 23010, 13674, -1547, -2368, 23004, 13680, -1548, -2368, 23000, 13685, -1549,
-	-2368, 22994, 13691, -1549, -2368, 22990, 13696, -1550, -2367, 22984, 13702, -1551, -2367, 22979, 13707, -1551,
-	-2367, 22974, 13713, -1552, -2367, 22969, 13718, -1552, -2367, 22964, 13724, -1553, -2366, 22959, 13729, -1554,
-	-2366, 22953, 13735, -1554, -2366, 22949, 13740, -1555, -2366, 22944, 13746, -1556, -2365, 22938, 13751, -1556,
-	-2365, 22933, 13757, -1557, -2365, 22929, 13762, -1558, -2365, 22923, 13768, -1558, -2364, 22918, 13773, -1559,
-	-2364, 22913, 13779, -1560, -2364, 22908, 13784, -1560, -2364, 22903, 13790, -1561, -2364, 22898, 13795, -1561,
-	-2363, 22892, 13801, -1562, -2363, 22888, 13806, -1563, -2363, 22882, 13812, -1563, -2363, 22878, 13817, -1564,
-	-2362, 22872, 13823, -1565, -2362, 22866, 13829, -1565, -2362, 22862, 13834, -1566, -2362, 22857, 13840, -1567,
-	-2361, 22851, 13845, -1567, -2361, 22846, 13851, -1568, -2361, 22842, 13856, -1569, -2361, 22836, 13862, -1569,
-	-2360, 22831, 13867, -1570, -2360, 22825, 13873, -1570, -2360, 22821, 13878, -1571, -2360, 22816, 13884, -1572,
-	-2359, 22810, 13889, -1572, -2359, 22805, 13895, -1573, -2359, 22801, 13900, -1574, -2359, 22795, 13906, -1574,
-	-2359, 22791, 13911, -1575, -2358, 22785, 13917, -1576, -2358, 22780, 13922, -1576, -2358, 22775, 13928, -1577,
-	-2358, 22770, 13933, -1577, -2357, 22764, 13939, -1578, -2357, 22760, 13944, -1579, -2357, 22754, 13950, -1579,
-	-2357, 22750, 13955, -1580, -2356, 22744, 13961, -1581, -2356, 22738, 13967, -1581, -2356, 22734, 13972, -1582,
-	-2356, 22729, 13978, -1583, -2355, 22723, 13983, -1583, -2355, 22718, 13989, -1584, -2355, 22713, 13994, -1584,
-	-2355, 22708, 14000, -1585, -2354, 22703, 14005, -1586, -2354, 22697, 14011, -1586, -2354, 22693, 14016, -1587,
-	-2354, 22688, 14022, -1588, -2353, 22682, 14027, -1588, -2353, 22677, 14033, -1589, -2353, 22673, 14038, -1590,
-	-2353, 22667, 14044, -1590, -2352, 22662, 14049, -1591, -2352, 22657, 14055, -1592, -2352, 22652, 14060, -1592,
-	-2352, 22647, 14066, -1593, -2351, 22641, 14071, -1593, -2351, 22636, 14077, -1594, -2351, 22631, 14083, -1595,
-	-2351, 22626, 14088, -1595, -2350, 22620, 14094, -1596, -2350, 22616, 14099, -1597, -2350, 22610, 14105, -1597,
-	-2350, 22606, 14110, -1598, -2349, 22600, 14116, -1599, -2349, 22595, 14121, -1599, -2349, 22590, 14127, -1600,
-	-2349, 22585, 14132, -1600, -2348, 22579, 14138, -1601, -2348, 22575, 14143, -1602, -2348, 22569, 14149, -1602,
-	-2348, 22565, 14154, -1603, -2347, 22559, 14160, -1604, -2347, 22554, 14165, -1604, -2347, 22549, 14171, -1605,
-	-2347, 22544, 14177, -1606, -2346, 22538, 14182, -1606, -2346, 22533, 14188, -1607, -2346, 22528, 14193, -1607,
-	-2345, 22522, 14199, -1608, -2345, 22518, 14204, -1609, -2345, 22512, 14210, -1609, -2345, 22508, 14215, -1610,
-	-2344, 22502, 14221, -1611, -2344, 22497, 14226, -1611, -2344, 22492, 14232, -1612, -2344, 22487, 14237, -1612,
-	-2343, 22481, 14243, -1613, -2343, 22477, 14248, -1614, -2343, 22471, 14254, -1614, -2343, 22467, 14259, -1615,
-	-2342, 22461, 14265, -1616, -2342, 22455, 14271, -1616, -2342, 22451, 14276, -1617, -2341, 22445, 14282, -1618,
-	-2341, 22440, 14287, -1618, -2341, 22435, 14293, -1619, -2341, 22430, 14298, -1619, -2340, 22424, 14304, -1620,
-	-2340, 22420, 14309, -1621, -2340, 22414, 14315, -1621, -2340, 22410, 14320, -1622, -2339, 22404, 14326, -1623,
-	-2339, 22399, 14331, -1623, -2339, 22394, 14337, -1624, -2339, 22389, 14342, -1624, -2338, 22383, 14348, -1625,
-	-2338, 22378, 14354, -1626, -2338, 22373, 14359, -1626, -2337, 22367, 14365, -1627, -2337, 22363, 14370, -1628,
-	-2337, 22357, 14376, -1628, -2337, 22353, 14381, -1629, -2336, 22347, 14387, -1630, -2336, 22342, 14392, -1630,
-	-2336, 22337, 14398, -1631, -2336, 22332, 14403, -1631, -2335, 22326, 14409, -1632, -2335, 22322, 14414, -1633,
-	-2335, 22316, 14420, -1633, -2334, 22311, 14425, -1634, -2334, 22306, 14431, -1635, -2334, 22300, 14437, -1635,
-	-2334, 22296, 14442, -1636, -2333, 22289, 14448, -1636, -2333, 22285, 14453, -1637, -2333, 22280, 14459, -1638,
-	-2332, 22274, 14464, -1638, -2332, 22269, 14470, -1639, -2332, 22265, 14475, -1640, -2332, 22259, 14481, -1640,
-	-2331, 22254, 14486, -1641, -2331, 22249, 14492, -1642, -2331, 22244, 14497, -1642, -2331, 22239, 14503, -1643,
-	-2330, 22232, 14509, -1643, -2330, 22228, 14514, -1644, -2330, 22223, 14520, -1645, -2329, 22217, 14525, -1645,
-	-2329, 22212, 14531, -1646, -2329, 22208, 14536, -1647, -2329, 22202, 14542, -1647, -2328, 22197, 14547, -1648,
-	-2328, 22191, 14553, -1648, -2328, 22187, 14558, -1649, -2327, 22181, 14564, -1650, -2327, 22176, 14569, -1650,
-	-2327, 22171, 14575, -1651, -2327, 22166, 14581, -1652, -2326, 22160, 14586, -1652, -2326, 22155, 14592, -1653,
-	-2326, 22150, 14597, -1653, -2325, 22144, 14603, -1654, -2325, 22140, 14608, -1655, -2325, 22134, 14614, -1655,
-	-2325, 22130, 14619, -1656, -2324, 22124, 14625, -1657, -2324, 22119, 14630, -1657, -2324, 22114, 14636, -1658,
-	-2323, 22107, 14642, -1658, -2323, 22103, 14647, -1659, -2323, 22098, 14653, -1660, -2322, 22092, 14658, -1660,
-	-2322, 22087, 14664, -1661, -2322, 22083, 14669, -1662, -2322, 22077, 14675, -1662, -2321, 22072, 14680, -1663,
-	-2321, 22066, 14686, -1663, -2321, 22062, 14691, -1664, -2320, 22056, 14697, -1665, -2320, 22051, 14702, -1665,
-	-2320, 22046, 14708, -1666, -2320, 22041, 14714, -1667, -2319, 22035, 14719, -1667, -2319, 22030, 14725, -1668,
-	-2319, 22025, 14730, -1668, -2318, 22019, 14736, -1669, -2318, 22015, 14741, -1670, -2318, 22009, 14747, -1670,
-	-2317, 22004, 14752, -1671, -2317, 21999, 14758, -1672, -2317, 21994, 14763, -1672, -2317, 21989, 14769, -1673,
-	-2316, 21982, 14775, -1673, -2316, 21978, 14780, -1674, -2316, 21973, 14786, -1675, -2315, 21967, 14791, -1675,
-	-2315, 21962, 14797, -1676, -2315, 21958, 14802, -1677, -2314, 21951, 14808, -1677, -2314, 21947, 14813, -1678,
-	-2314, 21941, 14819, -1678, -2314, 21937, 14824, -1679, -2313, 21931, 14830, -1680, -2313, 21925, 14836, -1680,
-	-2313, 21921, 14841, -1681, -2312, 21914, 14847, -1681, -2312, 21910, 14852, -1682, -2312, 21905, 14858, -1683,
-	-2311, 21899, 14863, -1683, -2311, 21894, 14869, -1684, -2311, 21890, 14874, -1685, -2310, 21883, 14880, -1685,
-	-2310, 21879, 14885, -1686, -2310, 21873, 14891, -1686, -2310, 21868, 14897, -1687, -2309, 21863, 14902, -1688,
-	-2309, 21857, 14908, -1688, -2309, 21853, 14913, -1689, -2308, 21847, 14919, -1690, -2308, 21842, 14924, -1690,
-	-2308, 21837, 14930, -1691, -2307, 21831, 14935, -1691, -2307, 21826, 14941, -1692, -2307, 21822, 14946, -1693,
-	-2306, 21815, 14952, -1693, -2306, 21810, 14958, -1694, -2306, 21805, 14963, -1694, -2306, 21800, 14969, -1695,
-	-2305, 21795, 14974, -1696, -2305, 21789, 14980, -1696, -2305, 21785, 14985, -1697, -2304, 21779, 14991, -1698,
-	-2304, 21774, 14996, -1698, -2304, 21769, 15002, -1699, -2303, 21763, 15007, -1699, -2303, 21758, 15013, -1700,
-	-2303, 21753, 15019, -1701, -2302, 21747, 15024, -1701, -2302, 21742, 15030, -1702, -2302, 21737, 15035, -1702,
-	-2301, 21731, 15041, -1703, -2301, 21727, 15046, -1704, -2301, 21721, 15052, -1704, -2300, 21716, 15057, -1705,
-	-2300, 21711, 15063, -1706, -2300, 21705, 15069, -1706, -2300, 21701, 15074, -1707, -2299, 21694, 15080, -1707,
-	-2299, 21690, 15085, -1708, -2299, 21685, 15091, -1709, -2298, 21679, 15096, -1709, -2298, 21674, 15102, -1710,
-	-2298, 21669, 15107, -1710, -2297, 21663, 15113, -1711, -2297, 21659, 15118, -1712, -2297, 21653, 15124, -1712,
-	-2296, 21647, 15130, -1713, -2296, 21643, 15135, -1714, -2296, 21637, 15141, -1714, -2295, 21632, 15146, -1715,
-	-2295, 21626, 15152, -1715, -2295, 21622, 15157, -1716, -2294, 21616, 15163, -1717, -2294, 21611, 15168, -1717,
-	-2294, 21606, 15174, -1718, -2293, 21599, 15180, -1718, -2293, 21595, 15185, -1719, -2293, 21590, 15191, -1720,
-	-2292, 21584, 15196, -1720, -2292, 21579, 15202, -1721, -2292, 21575, 15207, -1722, -2291, 21568, 15213, -1722,
-	-2291, 21564, 15218, -1723, -2291, 21558, 15224, -1723, -2290, 21553, 15229, -1724, -2290, 21548, 15235, -1725,
-	-2290, 21542, 15241, -1725, -2289, 21537, 15246, -1726, -2289, 21531, 15252, -1726, -2289, 21527, 15257, -1727,
-	-2288, 21521, 15263, -1728, -2288, 21516, 15268, -1728, -2288, 21511, 15274, -1729, -2287, 21505, 15279, -1729,
-	-2287, 21500, 15285, -1730, -2287, 21495, 15291, -1731, -2286, 21489, 15296, -1731, -2286, 21484, 15302, -1732,
-	-2286, 21480, 15307, -1733, -2285, 21473, 15313, -1733, -2285, 21469, 15318, -1734, -2285, 21463, 15324, -1734,
-	-2284, 21458, 15329, -1735, -2284, 21453, 15335, -1736, -2284, 21447, 15341, -1736, -2283, 21442, 15346, -1737,
-	-2283, 21436, 15352, -1737, -2283, 21432, 15357, -1738, -2282, 21426, 15363, -1739, -2282, 21421, 15368, -1739,
-	-2282, 21416, 15374, -1740, -2281, 21410, 15379, -1740, -2281, 21405, 15385, -1741, -2281, 21400, 15391, -1742,
-	-2280, 21394, 15396, -1742, -2280, 21389, 15402, -1743, -2280, 21384, 15407, -1743, -2279, 21378, 15413, -1744,
-	-2279, 21374, 15418, -1745, -2279, 21368, 15424, -1745, -2278, 21363, 15429, -1746, -2278, 21357, 15435, -1746,
-	-2278, 21353, 15440, -1747, -2277, 21347, 15446, -1748, -2277, 21341, 15452, -1748, -2277, 21337, 15457, -1749,
-	-2276, 21331, 15463, -1750, -2276, 21326, 15468, -1750, -2276, 21321, 15474, -1751, -2275, 21315, 15479, -1751,
-	-2275, 21310, 15485, -1752, -2275, 21306, 15490, -1753, -2274, 21299, 15496, -1753, -2274, 21294, 15502, -1754,
-	-2274, 21289, 15507, -1754, -2273, 21283, 15513, -1755, -2273, 21279, 15518, -1756, -2273, 21273, 15524, -1756,
-	-2272, 21268, 15529, -1757, -2272, 21262, 15535, -1757, -2271, 21257, 15540, -1758, -2271, 21252, 15546, -1759,
-	-2271, 21246, 15552, -1759, -2270, 21241, 15557, -1760, -2270, 21235, 15563, -1760, -2270, 21231, 15568, -1761,
-	-2269, 21225, 15574, -1762, -2269, 21220, 15579, -1762, -2269, 21215, 15585, -1763, -2268, 21209, 15590, -1763,
-	-2268, 21204, 15596, -1764, -2268, 21199, 15602, -1765, -2267, 21193, 15607, -1765, -2267, 21188, 15613, -1766,
-	-2267, 21183, 15618, -1766, -2266, 21177, 15624, -1767, -2266, 21173, 15629, -1768, -2266, 21167, 15635, -1768,
-	-2265, 21162, 15640, -1769, -2265, 21156, 15646, -1769, -2264, 21150, 15652, -1770, -2264, 21146, 15657, -1771,
-	-2264, 21140, 15663, -1771, -2263, 21135, 15668, -1772, -2263, 21129, 15674, -1772, -2263, 21125, 15679, -1773,
-	-2262, 21119, 15685, -1774, -2262, 21114, 15690, -1774, -2262, 21109, 15696, -1775, -2261, 21102, 15702, -1775,
-	-2261, 21098, 15707, -1776, -2261, 21093, 15713, -1777, -2260, 21087, 15718, -1777, -2260, 21082, 15724, -1778,
-	-2259, 21076, 15729, -1778, -2259, 21071, 15735, -1779, -2259, 21067, 15740, -1780, -2258, 21060, 15746, -1780,
-	-2258, 21055, 15752, -1781, -2258, 21050, 15757, -1781, -2257, 21044, 15763, -1782, -2257, 21040, 15768, -1783,
-	-2257, 21034, 15774, -1783, -2256, 21029, 15779, -1784, -2256, 21023, 15785, -1784, -2255, 21018, 15790, -1785,
-	-2255, 21013, 15796, -1786, -2255, 21007, 15802, -1786, -2254, 21002, 15807, -1787, -2254, 20996, 15813, -1787,
-	-2254, 20992, 15818, -1788, -2253, 20986, 15824, -1789, -2253, 20981, 15829, -1789, -2253, 20976, 15835, -1790,
-	-2252, 20970, 15840, -1790, -2252, 20965, 15846, -1791, -2251, 20959, 15852, -1792, -2251, 20954, 15857, -1792,
-	-2251, 20949, 15863, -1793, -2250, 20943, 15868, -1793, -2250, 20938, 15874, -1794, -2250, 20933, 15879, -1794,
-	-2249, 20927, 15885, -1795, -2249, 20923, 15890, -1796, -2249, 20917, 15896, -1796, -2248, 20911, 15902, -1797,
-	-2248, 20906, 15907, -1797, -2247, 20900, 15913, -1798, -2247, 20896, 15918, -1799, -2247, 20890, 15924, -1799,
-	-2246, 20885, 15929, -1800, -2246, 20879, 15935, -1800, -2246, 20875, 15940, -1801, -2245, 20869, 15946, -1802,
-	-2245, 20863, 15952, -1802, -2244, 20858, 15957, -1803, -2244, 20852, 15963, -1803, -2244, 20848, 15968, -1804,
-	-2243, 20842, 15974, -1805, -2243, 20837, 15979, -1805, -2243, 20832, 15985, -1806, -2242, 20826, 15990, -1806,
-	-2242, 20821, 15996, -1807, -2241, 20814, 16002, -1807, -2241, 20810, 16007, -1808, -2241, 20805, 16013, -1809,
-	-2240, 20799, 16018, -1809, -2240, 20794, 16024, -1810, -2240, 20789, 16029, -1810, -2239, 20783, 16035, -1811,
-	-2239, 20779, 16040, -1812, -2238, 20772, 16046, -1812, -2238, 20767, 16052, -1813, -2238, 20762, 16057, -1813,
-	-2237, 20756, 16063, -1814, -2237, 20752, 16068, -1815, -2237, 20746, 16074, -1815, -2236, 20741, 16079, -1816,
-	-2236, 20735, 16085, -1816, -2235, 20730, 16090, -1817, -2235, 20725, 16096, -1818, -2235, 20719, 16102, -1818,
-	-2234, 20714, 16107, -1819, -2234, 20708, 16113, -1819, -2233, 20703, 16118, -1820, -2233, 20697, 16124, -1820,
-	-2233, 20693, 16129, -1821, -2232, 20687, 16135, -1822, -2232, 20682, 16140, -1822, -2232, 20677, 16146, -1823,
-	-2231, 20670, 16152, -1823, -2231, 20666, 16157, -1824, -2230, 20660, 16163, -1825, -2230, 20655, 16168, -1825,
-	-2230, 20650, 16174, -1826, -2229, 20644, 16179, -1826, -2229, 20639, 16185, -1827, -2228, 20633, 16190, -1827,
-	-2228, 20628, 16196, -1828, -2228, 20623, 16202, -1829, -2227, 20617, 16207, -1829, -2227, 20612, 16213, -1830,
-	-2227, 20607, 16218, -1830, -2226, 20601, 16224, -1831, -2226, 20597, 16229, -1832, -2225, 20590, 16235, -1832,
-	-2225, 20586, 16240, -1833, -2225, 20580, 16246, -1833, -2224, 20574, 16252, -1834, -2224, 20569, 16257, -1834,
-	-2223, 20563, 16263, -1835, -2223, 20559, 16268, -1836, -2223, 20553, 16274, -1836, -2222, 20548, 16279, -1837,
-	-2222, 20542, 16285, -1837, -2221, 20537, 16290, -1838, -2221, 20532, 16296, -1839, -2221, 20526, 16302, -1839,
-	-2220, 20521, 16307, -1840, -2220, 20515, 16313, -1840, -2220, 20511, 16318, -1841, -2219, 20504, 16324, -1841,
-	-2219, 20500, 16329, -1842, -2218, 20494, 16335, -1843, -2218, 20489, 16340, -1843, -2218, 20484, 16346, -1844,
-	-2217, 20478, 16351, -1844, -2217, 20473, 16357, -1845, -2216, 20466, 16363, -1845, -2216, 20462, 16368, -1846,
-	-2216, 20457, 16374, -1847, -2215, 20451, 16379, -1847, -2215, 20446, 16385, -1848, -2214, 20440, 16390, -1848,
-	-2214, 20435, 16396, -1849, -2214, 20431, 16401, -1850, -2213, 20424, 16407, -1850, -2213, 20419, 16413, -1851,
-	-2212, 20413, 16418, -1851, -2212, 20408, 16424, -1852, -2212, 20403, 16429, -1852, -2211, 20397, 16435, -1853,
-	-2211, 20393, 16440, -1854, -2210, 20386, 16446, -1854, -2210, 20382, 16451, -1855, -2210, 20376, 16457, -1855,
-	-2209, 20370, 16463, -1856, -2209, 20365, 16468, -1856, -2208, 20359, 16474, -1857, -2208, 20355, 16479, -1858,
-	-2208, 20349, 16485, -1858, -2207, 20344, 16490, -1859, -2207, 20338, 16496, -1859, -2206, 20333, 16501, -1860,
-	-2206, 20327, 16507, -1860, -2206, 20322, 16513, -1861, -2205, 20317, 16518, -1862, -2205, 20311, 16524, -1862,
-	-2204, 20306, 16529, -1863, -2204, 20300, 16535, -1863, -2204, 20296, 16540, -1864, -2203, 20289, 16546, -1864,
-	-2203, 20285, 16551, -1865, -2202, 20279, 16557, -1866, -2202, 20273, 16563, -1866, -2201, 20268, 16568, -1867,
-	-2201, 20262, 16574, -1867, -2201, 20258, 16579, -1868, -2200, 20251, 16585, -1868, -2200, 20247, 16590, -1869,
-	-2199, 20241, 16596, -1870, -2199, 20236, 16601, -1870, -2199, 20231, 16607, -1871, -2198, 20225, 16612, -1871,
-	-2198, 20220, 16618, -1872, -2197, 20213, 16624, -1872, -2197, 20209, 16629, -1873, -2197, 20204, 16635, -1874,
-	-2196, 20198, 16640, -1874, -2196, 20193, 16646, -1875, -2195, 20187, 16651, -1875, -2195, 20182, 16657, -1876,
-	-2195, 20177, 16662, -1876, -2194, 20171, 16668, -1877, -2194, 20166, 16674, -1878, -2193, 20160, 16679, -1878,
-	-2193, 20155, 16685, -1879, -2192, 20149, 16690, -1879, -2192, 20144, 16696, -1880, -2192, 20139, 16701, -1880,
-	-2191, 20133, 16707, -1881, -2191, 20129, 16712, -1882, -2190, 20122, 16718, -1882, -2190, 20118, 16723, -1883,
-	-2190, 20112, 16729, -1883, -2189, 20106, 16735, -1884, -2189, 20101, 16740, -1884, -2188, 20095, 16746, -1885,
-	-2188, 20091, 16751, -1886, -2187, 20084, 16757, -1886, -2187, 20080, 16762, -1887, -2187, 20074, 16768, -1887,
-	-2186, 20069, 16773, -1888, -2186, 20063, 16779, -1888, -2185, 20057, 16785, -1889, -2185, 20053, 16790, -1890,
-	-2185, 20047, 16796, -1890, -2184, 20042, 16801, -1891, -2184, 20036, 16807, -1891, -2183, 20031, 16812, -1892,
-	-2183, 20025, 16818, -1892, -2182, 20020, 16823, -1893, -2182, 20014, 16829, -1893, -2182, 20010, 16834, -1894,
-	-2181, 20004, 16840, -1895, -2181, 19998, 16846, -1895, -2180, 19993, 16851, -1896, -2180, 19987, 16857, -1896,
-	-2179, 19982, 16862, -1897, -2179, 19976, 16868, -1897, -2179, 19972, 16873, -1898, -2178, 19966, 16879, -1899,
-	-2178, 19961, 16884, -1899, -2177, 19955, 16890, -1900, -2177, 19950, 16895, -1900, -2177, 19945, 16901, -1901,
-	-2176, 19938, 16907, -1901, -2176, 19934, 16912, -1902, -2175, 19927, 16918, -1902, -2175, 19923, 16923, -1903,
-	-2174, 19917, 16929, -1904, -2174, 19912, 16934, -1904, -2174, 19907, 16940, -1905, -2173, 19901, 16945, -1905,
-	-2173, 19896, 16951, -1906, -2172, 19890, 16956, -1906, -2172, 19885, 16962, -1907, -2171, 19878, 16968, -1907,
-	-2171, 19874, 16973, -1908, -2171, 19869, 16979, -1909, -2170, 19863, 16984, -1909, -2170, 19858, 16990, -1910,
-	-2169, 19852, 16995, -1910, -2169, 19847, 17001, -1911, -2168, 19841, 17006, -1911, -2168, 19836, 17012, -1912,
-	-2168, 19831, 17018, -1913, -2167, 19825, 17023, -1913, -2167, 19820, 17029, -1914, -2166, 19814, 17034, -1914,
-	-2166, 19809, 17040, -1915, -2165, 19803, 17045, -1915, -2165, 19798, 17051, -1916, -2164, 19792, 17056, -1916,
-	-2164, 19787, 17062, -1917, -2164, 19783, 17067, -1918, -2163, 19776, 17073, -1918, -2163, 19772, 17078, -1919,
-	-2162, 19765, 17084, -1919, -2162, 19760, 17090, -1920, -2161, 19754, 17095, -1920, -2161, 19749, 17101, -1921,
-	-2161, 19744, 17106, -1921, -2160, 19738, 17112, -1922, -2160, 19733, 17117, -1922, -2159, 19727, 17123, -1923,
-	-2159, 19723, 17128, -1924, -2158, 19716, 17134, -1924, -2158, 19712, 17139, -1925, -2157, 19705, 17145, -1925,
-	-2157, 19700, 17151, -1926, -2157, 19695, 17156, -1926, -2156, 19689, 17162, -1927, -2156, 19684, 17167, -1927,
-	-2155, 19678, 17173, -1928, -2155, 19674, 17178, -1929, -2154, 19667, 17184, -1929, -2154, 19663, 17189, -1930,
-	-2154, 19657, 17195, -1930, -2153, 19652, 17200, -1931, -2153, 19646, 17206, -1931, -2152, 19640, 17212, -1932,
-	-2152, 19635, 17217, -1932, -2151, 19629, 17223, -1933, -2151, 19625, 17228, -1934, -2150, 19618, 17234, -1934,
-	-2150, 19614, 17239, -1935, -2150, 19608, 17245, -1935, -2149, 19603, 17250, -1936, -2149, 19597, 17256, -1936,
-	-2148, 19592, 17261, -1937, -2148, 19586, 17267, -1937, -2147, 19581, 17272, -1938, -2147, 19575, 17278, -1938,
-	-2146, 19569, 17284, -1939, -2146, 19565, 17289, -1940, -2146, 19559, 17295, -1940, -2145, 19554, 17300, -1941,
-	-2145, 19548, 17306, -1941, -2144, 19543, 17311, -1942, -2144, 19537, 17317, -1942, -2143, 19532, 17322, -1943,
-	-2143, 19526, 17328, -1943, -2142, 19521, 17333, -1944, -2142, 19515, 17339, -1944, -2142, 19511, 17344, -1945,
-	-2141, 19505, 17350, -1946, -2141, 19499, 17356, -1946, -2140, 19494, 17361, -1947, -2140, 19488, 17367, -1947,
-	-2139, 19483, 17372, -1948, -2139, 19477, 17378, -1948, -2138, 19472, 17383, -1949, -2138, 19466, 17389, -1949,
-	-2137, 19461, 17394, -1950, -2137, 19455, 17400, -1950, -2137, 19451, 17405, -1951, -2136, 19445, 17411, -1952,
-	-2136, 19440, 17416, -1952, -2135, 19434, 17422, -1953, -2135, 19429, 17427, -1953, -2134, 19423, 17433, -1954,
-	-2134, 19417, 17439, -1954, -2133, 19412, 17444, -1955, -2133, 19406, 17450, -1955, -2133, 19402, 17455, -1956,
-	-2132, 19395, 17461, -1956, -2132, 19391, 17466, -1957, -2131, 19384, 17472, -1957, -2131, 19380, 17477, -1958,
-	-2130, 19374, 17483, -1959, -2130, 19369, 17488, -1959, -2129, 19363, 17494, -1960, -2129, 19358, 17499, -1960,
-	-2128, 19352, 17505, -1961, -2128, 19346, 17511, -1961, -2127, 19341, 17516, -1962, -2127, 19335, 17522, -1962,
-	-2127, 19331, 17527, -1963, -2126, 19324, 17533, -1963, -2126, 19320, 17538, -1964, -2125, 19313, 17544, -1964,
-	-2125, 19309, 17549, -1965, -2124, 19303, 17555, -1966, -2124, 19298, 17560, -1966, -2123, 19292, 17566, -1967,
-	-2123, 19287, 17571, -1967, -2122, 19281, 17577, -1968, -2122, 19276, 17582, -1968, -2122, 19271, 17588, -1969,
-	-2121, 19265, 17593, -1969, -2121, 19260, 17599, -1970, -2120, 19253, 17605, -1970, -2120, 19249, 17610, -1971,
-	-2119, 19242, 17616, -1971, -2119, 19238, 17621, -1972, -2118, 19231, 17627, -1972, -2118, 19227, 17632, -1973,
-	-2117, 19221, 17638, -1974, -2117, 19216, 17643, -1974, -2116, 19210, 17649, -1975, -2116, 19205, 17654, -1975,
-	-2116, 19200, 17660, -1976, -2115, 19194, 17665, -1976, -2115, 19189, 17671, -1977, -2114, 19183, 17676, -1977,
-	-2114, 19178, 17682, -1978, -2113, 19172, 17687, -1978, -2113, 19167, 17693, -1979, -2112, 19160, 17699, -1979,
-	-2112, 19156, 17704, -1980, -2111, 19149, 17710, -1980, -2111, 19145, 17715, -1981, -2110, 19139, 17721, -1982,
-	-2110, 19134, 17726, -1982, -2109, 19128, 17732, -1983, -2109, 19123, 17737, -1983, -2109, 19118, 17743, -1984,
-	-2108, 19112, 17748, -1984, -2108, 19107, 17754, -1985, -2107, 19101, 17759, -1985, -2107, 19096, 17765, -1986,
-	-2106, 19090, 17770, -1986, -2106, 19085, 17776, -1987, -2105, 19079, 17781, -1987, -2105, 19074, 17787, -1988,
-	-2104, 19068, 17792, -1988, -2104, 19063, 17798, -1989, -2103, 19056, 17804, -1989, -2103, 19052, 17809, -1990,
-	-2102, 19046, 17815, -1991, -2102, 19041, 17820, -1991, -2101, 19035, 17826, -1992, -2101, 19030, 17831, -1992,
-	-2101, 19025, 17837, -1993, -2100, 19019, 17842, -1993, -2100, 19014, 17848, -1994, -2099, 19008, 17853, -1994,
-	-2099, 19003, 17859, -1995, -2098, 18997, 17864, -1995, -2098, 18992, 17870, -1996, -2097, 18986, 17875, -1996,
-	-2097, 18981, 17881, -1997, -2096, 18975, 17886, -1997, -2096, 18970, 17892, -1998, -2095, 18964, 17897, -1998,
-	-2095, 18959, 17903, -1999, -2094, 18953, 17908, -1999, -2094, 18948, 17914, -2000, -2093, 18941, 17920, -2000,
-	-2093, 18937, 17925, -2001, -2092, 18931, 17931, -2002, -2092, 18926, 17936, -2002, -2092, 18921, 17942, -2003,
-	-2091, 18915, 17947, -2003, -2091, 18910, 17953, -2004, -2090, 18904, 17958, -2004, -2090, 18899, 17964, -2005,
-	-2089, 18893, 17969, -2005, -2089, 18888, 17975, -2006, -2088, 18882, 17980, -2006, -2088, 18877, 17986, -2007,
-	-2087, 18871, 17991, -2007, -2087, 18866, 17997, -2008, -2086, 18860, 18002, -2008, -2086, 18855, 18008, -2009,
-	-2085, 18849, 18013, -2009, -2085, 18844, 18019, -2010, -2084, 18838, 18024, -2010, -2084, 18833, 18030, -2011,
-	-2083, 18827, 18035, -2011, -2083, 18822, 18041, -2012, -2082, 18816, 18046, -2012, -2082, 18811, 18052, -2013,
-	-2081, 18805, 18057, -2013, -2081, 18800, 18063, -2014, -2080, 18794, 18068, -2014, -2080, 18789, 18074, -2015,
-	-2079, 18783, 18080, -2016, -2079, 18778, 18085, -2016, -2079, 18773, 18091, -2017, -2078, 18767, 18096, -2017,
-	-2078, 18762, 18102, -2018, -2077, 18756, 18107, -2018, -2077, 18751, 18113, -2019, -2076, 18745, 18118, -2019,
-	-2076, 18740, 18124, -2020, -2075, 18734, 18129, -2020, -2075, 18729, 18135, -2021, -2074, 18723, 18140, -2021,
-	-2074, 18718, 18146, -2022, -2073, 18712, 18151, -2022, -2073, 18707, 18157, -2023, -2072, 18701, 18162, -2023,
-	-2072, 18696, 18168, -2024, -2071, 18690, 18173, -2024, -2071, 18685, 18179, -2025, -2070, 18679, 18184, -2025,
-	-2070, 18674, 18190, -2026, -2069, 18668, 18195, -2026, -2069, 18663, 18201, -2027, -2068, 18657, 18206, -2027,
-	-2068, 18652, 18212, -2028, -2067, 18646, 18217, -2028, -2067, 18641, 18223, -2029, -2066, 18635, 18228, -2029,
-	-2066, 18630, 18234, -2030, -2065, 18624, 18239, -2030, -2065, 18619, 18245, -2031, -2064, 18613, 18250, -2031,
-	-2064, 18608, 18256, -2032, -2063, 18602, 18261, -2032, -2063, 18597, 18267, -2033, -2062, 18591, 18272, -2033,
-	-2062, 18586, 18278, -2034, -2061, 18580, 18283, -2034, -2061, 18575, 18289, -2035, -2060, 18569, 18294, -2035,
-	-2060, 18564, 18300, -2036, -2059, 18558, 18305, -2036, -2059, 18553, 18311, -2037, -2058, 18547, 18316, -2037,
-	-2058, 18542, 18322, -2038, -2057, 18536, 18327, -2038, -2057, 18531, 18333, -2039, -2056, 18525, 18338, -2039,
-	-2056, 18520, 18344, -2040, -2055, 18514, 18349, -2040, -2055, 18509, 18355, -2041, -2054, 18503, 18360, -2041,
-	-2054, 18498, 18366, -2042, -2053, 18492, 18371, -2042, -2053, 18487, 18377, -2043, -2052, 18481, 18382, -2043,
-	-2052, 18476, 18388, -2044, -2051, 18470, 18393, -2044, -2051, 18465, 18399, -2045, -2050, 18459, 18404, -2045,
-	-2050, 18454, 18410, -2046, -2049, 18448, 18415, -2046, -2049, 18443, 18421, -2047, -2048, 18437, 18426, -2047,
-	-2048, 18432, 18432, -2048, -2047, 18426, 18437, -2048, -2047, 18421, 18443, -2049, -2046, 18415, 18448, -2049,
-	-2046, 18410, 18454, -2050, -2045, 18404, 18459, -2050, -2045, 18399, 18465, -2051, -2044, 18393, 18470, -2051,
-	-2044, 18388, 18476, -2052, -2043, 18382, 18481, -2052, -2043, 18377, 18487, -2053, -2042, 18371, 18492, -2053,
-	-2042, 18366, 18498, -2054, -2041, 18360, 18503, -2054, -2041, 18355, 18509, -2055, -2040, 18349, 18514, -2055,
-	-2040, 18344, 18520, -2056, -2039, 18338, 18525, -2056, -2039, 18333, 18531, -2057, -2038, 18327, 18536, -2057,
-	-2038, 18322, 18542, -2058, -2037, 18316, 18547, -2058, -2037, 18311, 18553, -2059, -2036, 18305, 18558, -2059,
-	-2036, 18300, 18564, -2060, -2035, 18294, 18569, -2060, -2035, 18289, 18575, -2061, -2034, 18283, 18580, -2061,
-	-2034, 18278, 18586, -2062, -2033, 18272, 18591, -2062, -2033, 18267, 18597, -2063, -2032, 18261, 18602, -2063,
-	-2032, 18256, 18608, -2064, -2031, 18250, 18613, -2064, -2031, 18245, 18619, -2065, -2030, 18239, 18624, -2065,
-	-2030, 18234, 18630, -2066, -2029, 18228, 18635, -2066, -2029, 18223, 18641, -2067, -2028, 18217, 18646, -2067,
-	-2028, 18212, 18652, -2068, -2027, 18206, 18657, -2068, -2027, 18201, 18663, -2069, -2026, 18195, 18668, -2069,
-	-2026, 18190, 18674, -2070, -2025, 18184, 18679, -2070, -2025, 18179, 18685, -2071, -2024, 18173, 18690, -2071,
-	-2024, 18168, 18696, -2072, -2023, 18162, 18701, -2072, -2023, 18157, 18707, -2073, -2022, 18151, 18712, -2073,
-	-2022, 18146, 18718, -2074, -2021, 18140, 18723, -2074, -2021, 18135, 18729, -2075, -2020, 18129, 18734, -2075,
-	-2020, 18124, 18740, -2076, -2019, 18118, 18745, -2076, -2019, 18113, 18751, -2077, -2018, 18107, 18756, -2077,
-	-2018, 18102, 18762, -2078, -2017, 18096, 18767, -2078, -2017, 18091, 18773, -2079, -2016, 18085, 18778, -2079,
-	-2016, 18080, 18783, -2079, -2015, 18074, 18789, -2080, -2014, 18068, 18794, -2080, -2014, 18063, 18800, -2081,
-	-2013, 18057, 18805, -2081, -2013, 18052, 18811, -2082, -2012, 18046, 18816, -2082, -2012, 18041, 18822, -2083,
-	-2011, 18035, 18827, -2083, -2011, 18030, 18833, -2084, -2010, 18024, 18838, -2084, -2010, 18019, 18844, -2085,
-	-2009, 18013, 18849, -2085, -2009, 18008, 18855, -2086, -2008, 18002, 18860, -2086, -2008, 17997, 18866, -2087,
-	-2007, 17991, 18871, -2087, -2007, 17986, 18877, -2088, -2006, 17980, 18882, -2088, -2006, 17975, 18888, -2089,
-	-2005, 17969, 18893, -2089, -2005, 17964, 18899, -2090, -2004, 17958, 18904, -2090, -2004, 17953, 18910, -2091,
-	-2003, 17947, 18915, -2091, -2003, 17942, 18921, -2092, -2002, 17936, 18926, -2092, -2002, 17931, 18931, -2092,
-	-2001, 17925, 18937, -2093, -2000, 17920, 18941, -2093, -2000, 17914, 18948, -2094, -1999, 17908, 18953, -2094,
-	-1999, 17903, 18959, -2095, -1998, 17897, 18964, -2095, -1998, 17892, 18970, -2096, -1997, 17886, 18975, -2096,
-	-1997, 17881, 18981, -2097, -1996, 17875, 18986, -2097, -1996, 17870, 18992, -2098, -1995, 17864, 18997, -2098,
-	-1995, 17859, 19003, -2099, -1994, 17853, 19008, -2099, -1994, 17848, 19014, -2100, -1993, 17842, 19019, -2100,
-	-1993, 17837, 19025, -2101, -1992, 17831, 19030, -2101, -1992, 17826, 19035, -2101, -1991, 17820, 19041, -2102,
-	-1991, 17815, 19046, -2102, -1990, 17809, 19052, -2103, -1989, 17804, 19056, -2103, -1989, 17798, 19063, -2104,
-	-1988, 17792, 19068, -2104, -1988, 17787, 19074, -2105, -1987, 17781, 19079, -2105, -1987, 17776, 19085, -2106,
-	-1986, 17770, 19090, -2106, -1986, 17765, 19096, -2107, -1985, 17759, 19101, -2107, -1985, 17754, 19107, -2108,
-	-1984, 17748, 19112, -2108, -1984, 17743, 19118, -2109, -1983, 17737, 19123, -2109, -1983, 17732, 19128, -2109,
-	-1982, 17726, 19134, -2110, -1982, 17721, 19139, -2110, -1981, 17715, 19145, -2111, -1980, 17710, 19149, -2111,
-	-1980, 17704, 19156, -2112, -1979, 17699, 19160, -2112, -1979, 17693, 19167, -2113, -1978, 17687, 19172, -2113,
-	-1978, 17682, 19178, -2114, -1977, 17676, 19183, -2114, -1977, 17671, 19189, -2115, -1976, 17665, 19194, -2115,
-	-1976, 17660, 19200, -2116, -1975, 17654, 19205, -2116, -1975, 17649, 19210, -2116, -1974, 17643, 19216, -2117,
-	-1974, 17638, 19221, -2117, -1973, 17632, 19227, -2118, -1972, 17627, 19231, -2118, -1972, 17621, 19238, -2119,
-	-1971, 17616, 19242, -2119, -1971, 17610, 19249, -2120, -1970, 17605, 19253, -2120, -1970, 17599, 19260, -2121,
-	-1969, 17593, 19265, -2121, -1969, 17588, 19271, -2122, -1968, 17582, 19276, -2122, -1968, 17577, 19281, -2122,
-	-1967, 17571, 19287, -2123, -1967, 17566, 19292, -2123, -1966, 17560, 19298, -2124, -1966, 17555, 19303, -2124,
-	-1965, 17549, 19309, -2125, -1964, 17544, 19313, -2125, -1964, 17538, 19320, -2126, -1963, 17533, 19324, -2126,
-	-1963, 17527, 19331, -2127, -1962, 17522, 19335, -2127, -1962, 17516, 19341, -2127, -1961, 17511, 19346, -2128,
-	-1961, 17505, 19352, -2128, -1960, 17499, 19358, -2129, -1960, 17494, 19363, -2129, -1959, 17488, 19369, -2130,
-	-1959, 17483, 19374, -2130, -1958, 17477, 19380, -2131, -1957, 17472, 19384, -2131, -1957, 17466, 19391, -2132,
-	-1956, 17461, 19395, -2132, -1956, 17455, 19402, -2133, -1955, 17450, 19406, -2133, -1955, 17444, 19412, -2133,
-	-1954, 17439, 19417, -2134, -1954, 17433, 19423, -2134, -1953, 17427, 19429, -2135, -1953, 17422, 19434, -2135,
-	-1952, 17416, 19440, -2136, -1952, 17411, 19445, -2136, -1951, 17405, 19451, -2137, -1950, 17400, 19455, -2137,
-	-1950, 17394, 19461, -2137, -1949, 17389, 19466, -2138, -1949, 17383, 19472, -2138, -1948, 17378, 19477, -2139,
-	-1948, 17372, 19483, -2139, -1947, 17367, 19488, -2140, -1947, 17361, 19494, -2140, -1946, 17356, 19499, -2141,
-	-1946, 17350, 19505, -2141, -1945, 17344, 19511, -2142, -1944, 17339, 19515, -2142, -1944, 17333, 19521, -2142,
-	-1943, 17328, 19526, -2143, -1943, 17322, 19532, -2143, -1942, 17317, 19537, -2144, -1942, 17311, 19543, -2144,
-	-1941, 17306, 19548, -2145, -1941, 17300, 19554, -2145, -1940, 17295, 19559, -2146, -1940, 17289, 19565, -2146,
-	-1939, 17284, 19569, -2146, -1938, 17278, 19575, -2147, -1938, 17272, 19581, -2147, -1937, 17267, 19586, -2148,
-	-1937, 17261, 19592, -2148, -1936, 17256, 19597, -2149, -1936, 17250, 19603, -2149, -1935, 17245, 19608, -2150,
-	-1935, 17239, 19614, -2150, -1934, 17234, 19618, -2150, -1934, 17228, 19625, -2151, -1933, 17223, 19629, -2151,
-	-1932, 17217, 19635, -2152, -1932, 17212, 19640, -2152, -1931, 17206, 19646, -2153, -1931, 17200, 19652, -2153,
-	-1930, 17195, 19657, -2154, -1930, 17189, 19663, -2154, -1929, 17184, 19667, -2154, -1929, 17178, 19674, -2155,
-	-1928, 17173, 19678, -2155, -1927, 17167, 19684, -2156, -1927, 17162, 19689, -2156, -1926, 17156, 19695, -2157,
-	-1926, 17151, 19700, -2157, -1925, 17145, 19705, -2157, -1925, 17139, 19712, -2158, -1924, 17134, 19716, -2158,
-	-1924, 17128, 19723, -2159, -1923, 17123, 19727, -2159, -1922, 17117, 19733, -2160, -1922, 17112, 19738, -2160,
-	-1921, 17106, 19744, -2161, -1921, 17101, 19749, -2161, -1920, 17095, 19754, -2161, -1920, 17090, 19760, -2162,
-	-1919, 17084, 19765, -2162, -1919, 17078, 19772, -2163, -1918, 17073, 19776, -2163, -1918, 17067, 19783, -2164,
-	-1917, 17062, 19787, -2164, -1916, 17056, 19792, -2164, -1916, 17051, 19798, -2165, -1915, 17045, 19803, -2165,
-	-1915, 17040, 19809, -2166, -1914, 17034, 19814, -2166, -1914, 17029, 19820, -2167, -1913, 17023, 19825, -2167,
-	-1913, 17018, 19831, -2168, -1912, 17012, 19836, -2168, -1911, 17006, 19841, -2168, -1911, 17001, 19847, -2169,
-	-1910, 16995, 19852, -2169, -1910, 16990, 19858, -2170, -1909, 16984, 19863, -2170, -1909, 16979, 19869, -2171,
-	-1908, 16973, 19874, -2171, -1907, 16968, 19878, -2171, -1907, 16962, 19885, -2172, -1906, 16956, 19890, -2172,
-	-1906, 16951, 19896, -2173, -1905, 16945, 19901, -2173, -1905, 16940, 19907, -2174, -1904, 16934, 19912, -2174,
-	-1904, 16929, 19917, -2174, -1903, 16923, 19923, -2175, -1902, 16918, 19927, -2175, -1902, 16912, 19934, -2176,
-	-1901, 16907, 19938, -2176, -1901, 16901, 19945, -2177, -1900, 16895, 19950, -2177, -1900, 16890, 19955, -2177,
-	-1899, 16884, 19961, -2178, -1899, 16879, 19966, -2178, -1898, 16873, 19972, -2179, -1897, 16868, 19976, -2179,
-	-1897, 16862, 19982, -2179, -1896, 16857, 19987, -2180, -1896, 16851, 19993, -2180, -1895, 16846, 19998, -2181,
-	-1895, 16840, 20004, -2181, -1894, 16834, 20010, -2182, -1893, 16829, 20014, -2182, -1893, 16823, 20020, -2182,
-	-1892, 16818, 20025, -2183, -1892, 16812, 20031, -2183, -1891, 16807, 20036, -2184, -1891, 16801, 20042, -2184,
-	-1890, 16796, 20047, -2185, -1890, 16790, 20053, -2185, -1889, 16785, 20057, -2185, -1888, 16779, 20063, -2186,
-	-1888, 16773, 20069, -2186, -1887, 16768, 20074, -2187, -1887, 16762, 20080, -2187, -1886, 16757, 20084, -2187,
-	-1886, 16751, 20091, -2188, -1885, 16746, 20095, -2188, -1884, 16740, 20101, -2189, -1884, 16735, 20106, -2189,
-	-1883, 16729, 20112, -2190, -1883, 16723, 20118, -2190, -1882, 16718, 20122, -2190, -1882, 16712, 20129, -2191,
-	-1881, 16707, 20133, -2191, -1880, 16701, 20139, -2192, -1880, 16696, 20144, -2192, -1879, 16690, 20149, -2192,
-	-1879, 16685, 20155, -2193, -1878, 16679, 20160, -2193, -1878, 16674, 20166, -2194, -1877, 16668, 20171, -2194,
-	-1876, 16662, 20177, -2195, -1876, 16657, 20182, -2195, -1875, 16651, 20187, -2195, -1875, 16646, 20193, -2196,
-	-1874, 16640, 20198, -2196, -1874, 16635, 20204, -2197, -1873, 16629, 20209, -2197, -1872, 16624, 20213, -2197,
-	-1872, 16618, 20220, -2198, -1871, 16612, 20225, -2198, -1871, 16607, 20231, -2199, -1870, 16601, 20236, -2199,
-	-1870, 16596, 20241, -2199, -1869, 16590, 20247, -2200, -1868, 16585, 20251, -2200, -1868, 16579, 20258, -2201,
-	-1867, 16574, 20262, -2201, -1867, 16568, 20268, -2201, -1866, 16563, 20273, -2202, -1866, 16557, 20279, -2202,
-	-1865, 16551, 20285, -2203, -1864, 16546, 20289, -2203, -1864, 16540, 20296, -2204, -1863, 16535, 20300, -2204,
-	-1863, 16529, 20306, -2204, -1862, 16524, 20311, -2205, -1862, 16518, 20317, -2205, -1861, 16513, 20322, -2206,
-	-1860, 16507, 20327, -2206, -1860, 16501, 20333, -2206, -1859, 16496, 20338, -2207, -1859, 16490, 20344, -2207,
-	-1858, 16485, 20349, -2208, -1858, 16479, 20355, -2208, -1857, 16474, 20359, -2208, -1856, 16468, 20365, -2209,
-	-1856, 16463, 20370, -2209, -1855, 16457, 20376, -2210, -1855, 16451, 20382, -2210, -1854, 16446, 20386, -2210,
-	-1854, 16440, 20393, -2211, -1853, 16435, 20397, -2211, -1852, 16429, 20403, -2212, -1852, 16424, 20408, -2212,
-	-1851, 16418, 20413, -2212, -1851, 16413, 20419, -2213, -1850, 16407, 20424, -2213, -1850, 16401, 20431, -2214,
-	-1849, 16396, 20435, -2214, -1848, 16390, 20440, -2214, -1848, 16385, 20446, -2215, -1847, 16379, 20451, -2215,
-	-1847, 16374, 20457, -2216, -1846, 16368, 20462, -2216, -1845, 16363, 20466, -2216, -1845, 16357, 20473, -2217,
-	-1844, 16351, 20478, -2217, -1844, 16346, 20484, -2218, -1843, 16340, 20489, -2218, -1843, 16335, 20494, -2218,
-	-1842, 16329, 20500, -2219, -1841, 16324, 20504, -2219, -1841, 16318, 20511, -2220, -1840, 16313, 20515, -2220,
-	-1840, 16307, 20521, -2220, -1839, 16302, 20526, -2221, -1839, 16296, 20532, -2221, -1838, 16290, 20537, -2221,
-	-1837, 16285, 20542, -2222, -1837, 16279, 20548, -2222, -1836, 16274, 20553, -2223, -1836, 16268, 20559, -2223,
-	-1835, 16263, 20563, -2223, -1834, 16257, 20569, -2224, -1834, 16252, 20574, -2224, -1833, 16246, 20580, -2225,
-	-1833, 16240, 20586, -2225, -1832, 16235, 20590, -2225, -1832, 16229, 20597, -2226, -1831, 16224, 20601, -2226,
-	-1830, 16218, 20607, -2227, -1830, 16213, 20612, -2227, -1829, 16207, 20617, -2227, -1829, 16202, 20623, -2228,
-	-1828, 16196, 20628, -2228, -1827, 16190, 20633, -2228, -1827, 16185, 20639, -2229, -1826, 16179, 20644, -2229,
-	-1826, 16174, 20650, -2230, -1825, 16168, 20655, -2230, -1825, 16163, 20660, -2230, -1824, 16157, 20666, -2231,
-	-1823, 16152, 20670, -2231, -1823, 16146, 20677, -2232, -1822, 16140, 20682, -2232, -1822, 16135, 20687, -2232,
-	-1821, 16129, 20693, -2233, -1820, 16124, 20697, -2233, -1820, 16118, 20703, -2233, -1819, 16113, 20708, -2234,
-	-1819, 16107, 20714, -2234, -1818, 16102, 20719, -2235, -1818, 16096, 20725, -2235, -1817, 16090, 20730, -2235,
-	-1816, 16085, 20735, -2236, -1816, 16079, 20741, -2236, -1815, 16074, 20746, -2237, -1815, 16068, 20752, -2237,
-	-1814, 16063, 20756, -2237, -1813, 16057, 20762, -2238, -1813, 16052, 20767, -2238, -1812, 16046, 20772, -2238,
-	-1812, 16040, 20779, -2239, -1811, 16035, 20783, -2239, -1810, 16029, 20789, -2240, -1810, 16024, 20794, -2240,
-	-1809, 16018, 20799, -2240, -1809, 16013, 20805, -2241, -1808, 16007, 20810, -2241, -1807, 16002, 20814, -2241,
-	-1807, 15996, 20821, -2242, -1806, 15990, 20826, -2242, -1806, 15985, 20832, -2243, -1805, 15979, 20837, -2243,
-	-1805, 15974, 20842, -2243, -1804, 15968, 20848, -2244, -1803, 15963, 20852, -2244, -1803, 15957, 20858, -2244,
-	-1802, 15952, 20863, -2245, -1802, 15946, 20869, -2245, -1801, 15940, 20875, -2246, -1800, 15935, 20879, -2246,
-	-1800, 15929, 20885, -2246, -1799, 15924, 20890, -2247, -1799, 15918, 20896, -2247, -1798, 15913, 20900, -2247,
-	-1797, 15907, 20906, -2248, -1797, 15902, 20911, -2248, -1796, 15896, 20917, -2249, -1796, 15890, 20923, -2249,
-	-1795, 15885, 20927, -2249, -1794, 15879, 20933, -2250, -1794, 15874, 20938, -2250, -1793, 15868, 20943, -2250,
-	-1793, 15863, 20949, -2251, -1792, 15857, 20954, -2251, -1792, 15852, 20959, -2251, -1791, 15846, 20965, -2252,
-	-1790, 15840, 20970, -2252, -1790, 15835, 20976, -2253, -1789, 15829, 20981, -2253, -1789, 15824, 20986, -2253,
-	-1788, 15818, 20992, -2254, -1787, 15813, 20996, -2254, -1787, 15807, 21002, -2254, -1786, 15802, 21007, -2255,
-	-1786, 15796, 21013, -2255, -1785, 15790, 21018, -2255, -1784, 15785, 21023, -2256, -1784, 15779, 21029, -2256,
-	-1783, 15774, 21034, -2257, -1783, 15768, 21040, -2257, -1782, 15763, 21044, -2257, -1781, 15757, 21050, -2258,
-	-1781, 15752, 21055, -2258, -1780, 15746, 21060, -2258, -1780, 15740, 21067, -2259, -1779, 15735, 21071, -2259,
-	-1778, 15729, 21076, -2259, -1778, 15724, 21082, -2260, -1777, 15718, 21087, -2260, -1777, 15713, 21093, -2261,
-	-1776, 15707, 21098, -2261, -1775, 15702, 21102, -2261, -1775, 15696, 21109, -2262, -1774, 15690, 21114, -2262,
-	-1774, 15685, 21119, -2262, -1773, 15679, 21125, -2263, -1772, 15674, 21129, -2263, -1772, 15668, 21135, -2263,
-	-1771, 15663, 21140, -2264, -1771, 15657, 21146, -2264, -1770, 15652, 21150, -2264, -1769, 15646, 21156, -2265,
-	-1769, 15640, 21162, -2265, -1768, 15635, 21167, -2266, -1768, 15629, 21173, -2266, -1767, 15624, 21177, -2266,
-	-1766, 15618, 21183, -2267, -1766, 15613, 21188, -2267, -1765, 15607, 21193, -2267, -1765, 15602, 21199, -2268,
-	-1764, 15596, 21204, -2268, -1763, 15590, 21209, -2268, -1763, 15585, 21215, -2269, -1762, 15579, 21220, -2269,
-	-1762, 15574, 21225, -2269, -1761, 15568, 21231, -2270, -1760, 15563, 21235, -2270, -1760, 15557, 21241, -2270,
-	-1759, 15552, 21246, -2271, -1759, 15546, 21252, -2271, -1758, 15540, 21257, -2271, -1757, 15535, 21262, -2272,
-	-1757, 15529, 21268, -2272, -1756, 15524, 21273, -2273, -1756, 15518, 21279, -2273, -1755, 15513, 21283, -2273,
-	-1754, 15507, 21289, -2274, -1754, 15502, 21294, -2274, -1753, 15496, 21299, -2274, -1753, 15490, 21306, -2275,
-	-1752, 15485, 21310, -2275, -1751, 15479, 21315, -2275, -1751, 15474, 21321, -2276, -1750, 15468, 21326, -2276,
-	-1750, 15463, 21331, -2276, -1749, 15457, 21337, -2277, -1748, 15452, 21341, -2277, -1748, 15446, 21347, -2277,
-	-1747, 15440, 21353, -2278, -1746, 15435, 21357, -2278, -1746, 15429, 21363, -2278, -1745, 15424, 21368, -2279,
-	-1745, 15418, 21374, -2279, -1744, 15413, 21378, -2279, -1743, 15407, 21384, -2280, -1743, 15402, 21389, -2280,
-	-1742, 15396, 21394, -2280, -1742, 15391, 21400, -2281, -1741, 15385, 21405, -2281, -1740, 15379, 21410, -2281,
-	-1740, 15374, 21416, -2282, -1739, 15368, 21421, -2282, -1739, 15363, 21426, -2282, -1738, 15357, 21432, -2283,
-	-1737, 15352, 21436, -2283, -1737, 15346, 21442, -2283, -1736, 15341, 21447, -2284, -1736, 15335, 21453, -2284,
-	-1735, 15329, 21458, -2284, -1734, 15324, 21463, -2285, -1734, 15318, 21469, -2285, -1733, 15313, 21473, -2285,
-	-1733, 15307, 21480, -2286, -1732, 15302, 21484, -2286, -1731, 15296, 21489, -2286, -1731, 15291, 21495, -2287,
-	-1730, 15285, 21500, -2287, -1729, 15279, 21505, -2287, -1729, 15274, 21511, -2288, -1728, 15268, 21516, -2288,
-	-1728, 15263, 21521, -2288, -1727, 15257, 21527, -2289, -1726, 15252, 21531, -2289, -1726, 15246, 21537, -2289,
-	-1725, 15241, 21542, -2290, -1725, 15235, 21548, -2290, -1724, 15229, 21553, -2290, -1723, 15224, 21558, -2291,
-	-1723, 15218, 21564, -2291, -1722, 15213, 21568, -2291, -1722, 15207, 21575, -2292, -1721, 15202, 21579, -2292,
-	-1720, 15196, 21584, -2292, -1720, 15191, 21590, -2293, -1719, 15185, 21595, -2293, -1718, 15180, 21599, -2293,
-	-1718, 15174, 21606, -2294, -1717, 15168, 21611, -2294, -1717, 15163, 21616, -2294, -1716, 15157, 21622, -2295,
-	-1715, 15152, 21626, -2295, -1715, 15146, 21632, -2295, -1714, 15141, 21637, -2296, -1714, 15135, 21643, -2296,
-	-1713, 15130, 21647, -2296, -1712, 15124, 21653, -2297, -1712, 15118, 21659, -2297, -1711, 15113, 21663, -2297,
-	-1710, 15107, 21669, -2298, -1710, 15102, 21674, -2298, -1709, 15096, 21679, -2298, -1709, 15091, 21685, -2299,
-	-1708, 15085, 21690, -2299, -1707, 15080, 21694, -2299, -1707, 15074, 21701, -2300, -1706, 15069, 21705, -2300,
-	-1706, 15063, 21711, -2300, -1705, 15057, 21716, -2300, -1704, 15052, 21721, -2301, -1704, 15046, 21727, -2301,
-	-1703, 15041, 21731, -2301, -1702, 15035, 21737, -2302, -1702, 15030, 21742, -2302, -1701, 15024, 21747, -2302,
-	-1701, 15019, 21753, -2303, -1700, 15013, 21758, -2303, -1699, 15007, 21763, -2303, -1699, 15002, 21769, -2304,
-	-1698, 14996, 21774, -2304, -1698, 14991, 21779, -2304, -1697, 14985, 21785, -2305, -1696, 14980, 21789, -2305,
-	-1696, 14974, 21795, -2305, -1695, 14969, 21800, -2306, -1694, 14963, 21805, -2306, -1694, 14958, 21810, -2306,
-	-1693, 14952, 21815, -2306, -1693, 14946, 21822, -2307, -1692, 14941, 21826, -2307, -1691, 14935, 21831, -2307,
-	-1691, 14930, 21837, -2308, -1690, 14924, 21842, -2308, -1690, 14919, 21847, -2308, -1689, 14913, 21853, -2309,
-	-1688, 14908, 21857, -2309, -1688, 14902, 21863, -2309, -1687, 14897, 21868, -2310, -1686, 14891, 21873, -2310,
-	-1686, 14885, 21879, -2310, -1685, 14880, 21883, -2310, -1685, 14874, 21890, -2311, -1684, 14869, 21894, -2311,
-	-1683, 14863, 21899, -2311, -1683, 14858, 21905, -2312, -1682, 14852, 21910, -2312, -1681, 14847, 21914, -2312,
-	-1681, 14841, 21921, -2313, -1680, 14836, 21925, -2313, -1680, 14830, 21931, -2313, -1679, 14824, 21937, -2314,
-	-1678, 14819, 21941, -2314, -1678, 14813, 21947, -2314, -1677, 14808, 21951, -2314, -1677, 14802, 21958, -2315,
-	-1676, 14797, 21962, -2315, -1675, 14791, 21967, -2315, -1675, 14786, 21973, -2316, -1674, 14780, 21978, -2316,
-	-1673, 14775, 21982, -2316, -1673, 14769, 21989, -2317, -1672, 14763, 21994, -2317, -1672, 14758, 21999, -2317,
-	-1671, 14752, 22004, -2317, -1670, 14747, 22009, -2318, -1670, 14741, 22015, -2318, -1669, 14736, 22019, -2318,
-	-1668, 14730, 22025, -2319, -1668, 14725, 22030, -2319, -1667, 14719, 22035, -2319, -1667, 14714, 22041, -2320,
-	-1666, 14708, 22046, -2320, -1665, 14702, 22051, -2320, -1665, 14697, 22056, -2320, -1664, 14691, 22062, -2321,
-	-1663, 14686, 22066, -2321, -1663, 14680, 22072, -2321, -1662, 14675, 22077, -2322, -1662, 14669, 22083, -2322,
-	-1661, 14664, 22087, -2322, -1660, 14658, 22092, -2322, -1660, 14653, 22098, -2323, -1659, 14647, 22103, -2323,
-	-1658, 14642, 22107, -2323, -1658, 14636, 22114, -2324, -1657, 14630, 22119, -2324, -1657, 14625, 22124, -2324,
-	-1656, 14619, 22130, -2325, -1655, 14614, 22134, -2325, -1655, 14608, 22140, -2325, -1654, 14603, 22144, -2325,
-	-1653, 14597, 22150, -2326, -1653, 14592, 22155, -2326, -1652, 14586, 22160, -2326, -1652, 14581, 22166, -2327,
-	-1651, 14575, 22171, -2327, -1650, 14569, 22176, -2327, -1650, 14564, 22181, -2327, -1649, 14558, 22187, -2328,
-	-1648, 14553, 22191, -2328, -1648, 14547, 22197, -2328, -1647, 14542, 22202, -2329, -1647, 14536, 22208, -2329,
-	-1646, 14531, 22212, -2329, -1645, 14525, 22217, -2329, -1645, 14520, 22223, -2330, -1644, 14514, 22228, -2330,
-	-1643, 14509, 22232, -2330, -1643, 14503, 22239, -2331, -1642, 14497, 22244, -2331, -1642, 14492, 22249, -2331,
-	-1641, 14486, 22254, -2331, -1640, 14481, 22259, -2332, -1640, 14475, 22265, -2332, -1639, 14470, 22269, -2332,
-	-1638, 14464, 22274, -2332, -1638, 14459, 22280, -2333, -1637, 14453, 22285, -2333, -1636, 14448, 22289, -2333,
-	-1636, 14442, 22296, -2334, -1635, 14437, 22300, -2334, -1635, 14431, 22306, -2334, -1634, 14425, 22311, -2334,
-	-1633, 14420, 22316, -2335, -1633, 14414, 22322, -2335, -1632, 14409, 22326, -2335, -1631, 14403, 22332, -2336,
-	-1631, 14398, 22337, -2336, -1630, 14392, 22342, -2336, -1630, 14387, 22347, -2336, -1629, 14381, 22353, -2337,
-	-1628, 14376, 22357, -2337, -1628, 14370, 22363, -2337, -1627, 14365, 22367, -2337, -1626, 14359, 22373, -2338,
-	-1626, 14354, 22378, -2338, -1625, 14348, 22383, -2338, -1624, 14342, 22389, -2339, -1624, 14337, 22394, -2339,
-	-1623, 14331, 22399, -2339, -1623, 14326, 22404, -2339, -1622, 14320, 22410, -2340, -1621, 14315, 22414, -2340,
-	-1621, 14309, 22420, -2340, -1620, 14304, 22424, -2340, -1619, 14298, 22430, -2341, -1619, 14293, 22435, -2341,
-	-1618, 14287, 22440, -2341, -1618, 14282, 22445, -2341, -1617, 14276, 22451, -2342, -1616, 14271, 22455, -2342,
-	-1616, 14265, 22461, -2342, -1615, 14259, 22467, -2343, -1614, 14254, 22471, -2343, -1614, 14248, 22477, -2343,
-	-1613, 14243, 22481, -2343, -1612, 14237, 22487, -2344, -1612, 14232, 22492, -2344, -1611, 14226, 22497, -2344,
-	-1611, 14221, 22502, -2344, -1610, 14215, 22508, -2345, -1609, 14210, 22512, -2345, -1609, 14204, 22518, -2345,
-	-1608, 14199, 22522, -2345, -1607, 14193, 22528, -2346, -1607, 14188, 22533, -2346, -1606, 14182, 22538, -2346,
-	-1606, 14177, 22544, -2347, -1605, 14171, 22549, -2347, -1604, 14165, 22554, -2347, -1604, 14160, 22559, -2347,
-	-1603, 14154, 22565, -2348, -1602, 14149, 22569, -2348, -1602, 14143, 22575, -2348, -1601, 14138, 22579, -2348,
-	-1600, 14132, 22585, -2349, -1600, 14127, 22590, -2349, -1599, 14121, 22595, -2349, -1599, 14116, 22600, -2349,
-	-1598, 14110, 22606, -2350, -1597, 14105, 22610, -2350, -1597, 14099, 22616, -2350, -1596, 14094, 22620, -2350,
-	-1595, 14088, 22626, -2351, -1595, 14083, 22631, -2351, -1594, 14077, 22636, -2351, -1593, 14071, 22641, -2351,
-	-1593, 14066, 22647, -2352, -1592, 14060, 22652, -2352, -1592, 14055, 22657, -2352, -1591, 14049, 22662, -2352,
-	-1590, 14044, 22667, -2353, -1590, 14038, 22673, -2353, -1589, 14033, 22677, -2353, -1588, 14027, 22682, -2353,
-	-1588, 14022, 22688, -2354, -1587, 14016, 22693, -2354, -1586, 14011, 22697, -2354, -1586, 14005, 22703, -2354,
-	-1585, 14000, 22708, -2355, -1584, 13994, 22713, -2355, -1584, 13989, 22718, -2355, -1583, 13983, 22723, -2355,
-	-1583, 13978, 22729, -2356, -1582, 13972, 22734, -2356, -1581, 13967, 22738, -2356, -1581, 13961, 22744, -2356,
-	-1580, 13955, 22750, -2357, -1579, 13950, 22754, -2357, -1579, 13944, 22760, -2357, -1578, 13939, 22764, -2357,
-	-1577, 13933, 22770, -2358, -1577, 13928, 22775, -2358, -1576, 13922, 22780, -2358, -1576, 13917, 22785, -2358,
-	-1575, 13911, 22791, -2359, -1574, 13906, 22795, -2359, -1574, 13900, 22801, -2359, -1573, 13895, 22805, -2359,
-	-1572, 13889, 22810, -2359, -1572, 13884, 22816, -2360, -1571, 13878, 22821, -2360, -1570, 13873, 22825, -2360,
-	-1570, 13867, 22831, -2360, -1569, 13862, 22836, -2361, -1569, 13856, 22842, -2361, -1568, 13851, 22846, -2361,
-	-1567, 13845, 22851, -2361, -1567, 13840, 22857, -2362, -1566, 13834, 22862, -2362, -1565, 13829, 22866, -2362,
-	-1565, 13823, 22872, -2362, -1564, 13817, 22878, -2363, -1563, 13812, 22882, -2363, -1563, 13806, 22888, -2363,
-	-1562, 13801, 22892, -2363, -1561, 13795, 22898, -2364, -1561, 13790, 22903, -2364, -1560, 13784, 22908, -2364,
-	-1560, 13779, 22913, -2364, -1559, 13773, 22918, -2364, -1558, 13768, 22923, -2365, -1558, 13762, 22929, -2365,
-	-1557, 13757, 22933, -2365, -1556, 13751, 22938, -2365, -1556, 13746, 22944, -2366, -1555, 13740, 22949, -2366,
-	-1554, 13735, 22953, -2366, -1554, 13729, 22959, -2366, -1553, 13724, 22964, -2367, -1552, 13718, 22969, -2367,
-	-1552, 13713, 22974, -2367, -1551, 13707, 22979, -2367, -1551, 13702, 22984, -2367, -1550, 13696, 22990, -2368,
-	-1549, 13691, 22994, -2368, -1549, 13685, 23000, -2368, -1548, 13680, 23004, -2368, -1547, 13674, 23010, -2369,
-	-1547, 13669, 23015, -2369, -1546, 13663, 23020, -2369, -1545, 13658, 23024, -2369, -1545, 13652, 23030, -2369,
-	-1544, 13647, 23035, -2370, -1543, 13641, 23040, -2370, -1543, 13636, 23045, -2370, -1542, 13630, 23050, -2370,
-	-1542, 13624, 23057, -2371, -1541, 13619, 23061, -2371, -1540, 13613, 23066, -2371, -1540, 13608, 23071, -2371,
-	-1539, 13602, 23076, -2371, -1538, 13597, 23081, -2372, -1538, 13591, 23087, -2372, -1537, 13586, 23091, -2372,
-	-1536, 13580, 23096, -2372, -1536, 13575, 23102, -2373, -1535, 13569, 23107, -2373, -1534, 13564, 23111, -2373,
-	-1534, 13558, 23117, -2373, -1533, 13553, 23121, -2373, -1532, 13547, 23127, -2374, -1532, 13542, 23132, -2374,
-	-1531, 13536, 23137, -2374, -1531, 13531, 23142, -2374, -1530, 13525, 23147, -2374, -1529, 13520, 23152, -2375,
-	-1529, 13514, 23158, -2375, -1528, 13509, 23162, -2375, -1527, 13503, 23167, -2375, -1527, 13498, 23173, -2376,
-	-1526, 13492, 23178, -2376, -1525, 13487, 23182, -2376, -1525, 13481, 23188, -2376, -1524, 13476, 23192, -2376,
-	-1523, 13470, 23198, -2377, -1523, 13465, 23203, -2377, -1522, 13459, 23208, -2377, -1521, 13454, 23212, -2377,
-	-1521, 13448, 23218, -2377, -1520, 13443, 23223, -2378, -1520, 13437, 23229, -2378, -1519, 13432, 23233, -2378,
-	-1518, 13426, 23238, -2378, -1518, 13421, 23243, -2378, -1517, 13415, 23249, -2379, -1516, 13410, 23253, -2379,
-	-1516, 13404, 23259, -2379, -1515, 13399, 23263, -2379, -1514, 13393, 23268, -2379, -1514, 13388, 23274, -2380,
-	-1513, 13382, 23279, -2380, -1512, 13377, 23283, -2380, -1512, 13371, 23289, -2380, -1511, 13366, 23293, -2380,
-	-1510, 13360, 23299, -2381, -1510, 13355, 23304, -2381, -1509, 13349, 23309, -2381, -1509, 13344, 23314, -2381,
-	-1508, 13338, 23319, -2381, -1507, 13333, 23324, -2382, -1507, 13327, 23330, -2382, -1506, 13322, 23334, -2382,
-	-1505, 13316, 23339, -2382, -1505, 13311, 23344, -2382, -1504, 13305, 23350, -2383, -1503, 13300, 23354, -2383,
-	-1503, 13294, 23360, -2383, -1502, 13289, 23364, -2383, -1501, 13283, 23369, -2383, -1501, 13278, 23375, -2384,
-	-1500, 13272, 23380, -2384, -1499, 13267, 23384, -2384, -1499, 13261, 23390, -2384, -1498, 13256, 23394, -2384,
-	-1497, 13250, 23400, -2385, -1497, 13245, 23405, -2385, -1496, 13239, 23410, -2385, -1496, 13234, 23415, -2385,
-	-1495, 13228, 23420, -2385, -1494, 13223, 23425, -2386, -1494, 13217, 23431, -2386, -1493, 13212, 23435, -2386,
-	-1492, 13206, 23440, -2386, -1492, 13201, 23445, -2386, -1491, 13195, 23451, -2387, -1490, 13190, 23455, -2387,
-	-1490, 13184, 23461, -2387, -1489, 13179, 23465, -2387, -1488, 13173, 23470, -2387, -1488, 13168, 23475, -2387,
-	-1487, 13163, 23480, -2388, -1486, 13157, 23485, -2388, -1486, 13152, 23490, -2388, -1485, 13146, 23495, -2388,
-	-1484, 13141, 23499, -2388, -1484, 13135, 23506, -2389, -1483, 13130, 23510, -2389, -1483, 13124, 23516, -2389,
-	-1482, 13119, 23520, -2389, -1481, 13113, 23525, -2389, -1481, 13108, 23530, -2389, -1480, 13102, 23536, -2390,
-	-1479, 13097, 23540, -2390, -1479, 13091, 23546, -2390, -1478, 13086, 23550, -2390, -1477, 13080, 23555, -2390,
-	-1477, 13075, 23561, -2391, -1476, 13069, 23566, -2391, -1475, 13064, 23570, -2391, -1475, 13058, 23576, -2391,
-	-1474, 13053, 23580, -2391, -1473, 13047, 23585, -2391, -1473, 13042, 23591, -2392, -1472, 13036, 23596, -2392,
-	-1471, 13031, 23600, -2392, -1471, 13025, 23606, -2392, -1470, 13020, 23610, -2392, -1469, 13014, 23616, -2393,
-	-1469, 13009, 23621, -2393, -1468, 13003, 23626, -2393, -1468, 12998, 23631, -2393, -1467, 12992, 23636, -2393,
-	-1466, 12987, 23640, -2393, -1466, 12982, 23646, -2394, -1465, 12976, 23651, -2394, -1464, 12971, 23655, -2394,
-	-1464, 12965, 23661, -2394, -1463, 12960, 23665, -2394, -1462, 12954, 23670, -2394, -1462, 12949, 23676, -2395,
-	-1461, 12943, 23681, -2395, -1460, 12938, 23685, -2395, -1460, 12932, 23691, -2395, -1459, 12927, 23695, -2395,
-	-1458, 12921, 23700, -2395, -1458, 12916, 23706, -2396, -1457, 12910, 23711, -2396, -1456, 12905, 23715, -2396,
-	-1456, 12899, 23721, -2396, -1455, 12894, 23725, -2396, -1454, 12888, 23730, -2396, -1454, 12883, 23736, -2397,
-	-1453, 12877, 23741, -2397, -1452, 12872, 23745, -2397, -1452, 12866, 23751, -2397, -1451, 12861, 23755, -2397,
-	-1450, 12856, 23759, -2397, -1450, 12850, 23766, -2398, -1449, 12845, 23770, -2398, -1449, 12839, 23776, -2398,
-	-1448, 12834, 23780, -2398, -1447, 12828, 23785, -2398, -1447, 12823, 23790, -2398, -1446, 12817, 23796, -2399,
-	-1445, 12812, 23800, -2399, -1445, 12806, 23806, -2399, -1444, 12801, 23810, -2399, -1443, 12795, 23815, -2399,
-	-1443, 12790, 23820, -2399, -1442, 12784, 23826, -2400, -1441, 12779, 23830, -2400, -1441, 12773, 23836, -2400,
-	-1440, 12768, 23840, -2400, -1439, 12763, 23844, -2400, -1439, 12757, 23850, -2400, -1438, 12752, 23854, -2400,
-	-1437, 12746, 23860, -2401, -1437, 12741, 23865, -2401, -1436, 12735, 23870, -2401, -1435, 12730, 23874, -2401,
-	-1435, 12724, 23880, -2401, -1434, 12719, 23884, -2401, -1433, 12713, 23890, -2402, -1433, 12708, 23895, -2402,
-	-1432, 12702, 23900, -2402, -1431, 12697, 23904, -2402, -1431, 12691, 23910, -2402, -1430, 12686, 23914, -2402,
-	-1429, 12681, 23918, -2402, -1429, 12675, 23925, -2403, -1428, 12670, 23929, -2403, -1428, 12664, 23935, -2403,
-	-1427, 12659, 23939, -2403, -1426, 12653, 23944, -2403, -1426, 12648, 23949, -2403, -1425, 12642, 23954, -2403,
-	-1424, 12637, 23959, -2404, -1424, 12631, 23965, -2404, -1423, 12626, 23969, -2404, -1422, 12620, 23974, -2404,
-	-1422, 12615, 23979, -2404, -1421, 12610, 23983, -2404, -1420, 12604, 23988, -2404, -1420, 12599, 23994, -2405,
-	-1419, 12593, 23999, -2405, -1418, 12588, 24003, -2405, -1418, 12582, 24009, -2405, -1417, 12577, 24013, -2405,
-	-1416, 12571, 24018, -2405, -1416, 12566, 24023, -2405, -1415, 12560, 24029, -2406, -1414, 12555, 24033, -2406,
-	-1414, 12549, 24039, -2406, -1413, 12544, 24043, -2406, -1412, 12539, 24047, -2406, -1412, 12533, 24053, -2406,
-	-1411, 12528, 24057, -2406, -1410, 12522, 24063, -2407, -1410, 12517, 24068, -2407, -1409, 12511, 24073, -2407,
-	-1408, 12506, 24077, -2407, -1408, 12500, 24083, -2407, -1407, 12495, 24087, -2407, -1406, 12490, 24091, -2407,
-	-1406, 12484, 24098, -2408, -1405, 12479, 24102, -2408, -1404, 12473, 24107, -2408, -1404, 12468, 24112, -2408,
-	-1403, 12462, 24117, -2408, -1403, 12457, 24122, -2408, -1402, 12451, 24127, -2408, -1401, 12446, 24131, -2408,
-	-1401, 12440, 24138, -2409, -1400, 12435, 24142, -2409, -1399, 12430, 24146, -2409, -1399, 12424, 24152, -2409,
-	-1398, 12419, 24156, -2409, -1397, 12413, 24161, -2409, -1397, 12408, 24166, -2409, -1396, 12402, 24172, -2410,
-	-1395, 12397, 24176, -2410, -1395, 12391, 24182, -2410, -1394, 12386, 24186, -2410, -1393, 12381, 24190, -2410,
-	-1393, 12375, 24196, -2410, -1392, 12370, 24200, -2410, -1391, 12364, 24205, -2410, -1391, 12359, 24211, -2411,
-	-1390, 12353, 24216, -2411, -1389, 12348, 24220, -2411, -1389, 12342, 24226, -2411, -1388, 12337, 24230, -2411,
-	-1387, 12332, 24234, -2411, -1387, 12326, 24240, -2411, -1386, 12321, 24244, -2411, -1385, 12315, 24249, -2411,
-	-1385, 12310, 24255, -2412, -1384, 12304, 24260, -2412, -1383, 12299, 24264, -2412, -1383, 12293, 24270, -2412,
-	-1382, 12288, 24274, -2412, -1381, 12283, 24278, -2412, -1381, 12277, 24284, -2412, -1380, 12272, 24288, -2412,
-	-1379, 12266, 24294, -2413, -1379, 12261, 24299, -2413, -1378, 12255, 24304, -2413, -1377, 12250, 24308, -2413,
-	-1377, 12244, 24314, -2413, -1376, 12239, 24318, -2413, -1375, 12234, 24322, -2413, -1375, 12228, 24328, -2413,
-	-1374, 12223, 24332, -2413, -1373, 12217, 24338, -2414, -1373, 12212, 24343, -2414, -1372, 12206, 24348, -2414,
-	-1371, 12201, 24352, -2414, -1371, 12196, 24357, -2414, -1370, 12190, 24362, -2414, -1369, 12185, 24366, -2414,
-	-1369, 12179, 24372, -2414, -1368, 12174, 24376, -2414, -1367, 12168, 24382, -2415, -1367, 12163, 24387, -2415,
-	-1366, 12158, 24391, -2415, -1365, 12152, 24396, -2415, -1365, 12147, 24401, -2415, -1364, 12141, 24406, -2415,
-	-1364, 12136, 24411, -2415, -1363, 12130, 24416, -2415, -1362, 12125, 24420, -2415, -1362, 12120, 24426, -2416,
-	-1361, 12114, 24431, -2416, -1360, 12109, 24435, -2416, -1360, 12103, 24441, -2416, -1359, 12098, 24445, -2416,
-	-1358, 12092, 24450, -2416, -1358, 12087, 24455, -2416, -1357, 12082, 24459, -2416, -1356, 12076, 24464, -2416,
-	-1356, 12071, 24469, -2416, -1355, 12065, 24475, -2417, -1354, 12060, 24479, -2417, -1354, 12054, 24485, -2417,
-	-1353, 12049, 24489, -2417, -1352, 12044, 24493, -2417, -1352, 12038, 24499, -2417, -1351, 12033, 24503, -2417,
-	-1350, 12027, 24508, -2417, -1350, 12022, 24513, -2417, -1349, 12016, 24518, -2417, -1348, 12011, 24523, -2418,
-	-1348, 12006, 24528, -2418, -1347, 12000, 24533, -2418, -1346, 11995, 24537, -2418, -1346, 11989, 24543, -2418,
-	-1345, 11984, 24547, -2418, -1344, 11979, 24551, -2418, -1344, 11973, 24557, -2418, -1343, 11968, 24561, -2418,
-	-1342, 11962, 24566, -2418, -1342, 11957, 24571, -2418, -1341, 11951, 24577, -2419, -1340, 11946, 24581, -2419,
-	-1340, 11941, 24586, -2419, -1339, 11935, 24591, -2419, -1338, 11930, 24595, -2419, -1338, 11924, 24601, -2419,
-	-1337, 11919, 24605, -2419, -1336, 11914, 24609, -2419, -1336, 11908, 24615, -2419, -1335, 11903, 24619, -2419,
-	-1334, 11897, 24624, -2419, -1334, 11892, 24629, -2419, -1333, 11886, 24635, -2420, -1332, 11881, 24639, -2420,
-	-1332, 11876, 24644, -2420, -1331, 11870, 24649, -2420, -1330, 11865, 24653, -2420, -1330, 11859, 24659, -2420,
-	-1329, 11854, 24663, -2420, -1328, 11849, 24667, -2420, -1328, 11843, 24673, -2420, -1327, 11838, 24677, -2420,
-	-1326, 11832, 24682, -2420, -1326, 11827, 24687, -2420, -1325, 11822, 24692, -2421, -1324, 11816, 24697, -2421,
-	-1324, 11811, 24702, -2421, -1323, 11805, 24707, -2421, -1322, 11800, 24711, -2421, -1322, 11794, 24717, -2421,
-	-1321, 11789, 24721, -2421, -1320, 11784, 24725, -2421, -1320, 11778, 24731, -2421, -1319, 11773, 24735, -2421,
-	-1318, 11767, 24740, -2421, -1318, 11762, 24745, -2421, -1317, 11757, 24749, -2421, -1316, 11751, 24755, -2422,
-	-1316, 11746, 24760, -2422, -1315, 11740, 24765, -2422, -1314, 11735, 24769, -2422, -1314, 11730, 24774, -2422,
-	-1313, 11724, 24779, -2422, -1312, 11719, 24783, -2422, -1312, 11713, 24789, -2422, -1311, 11708, 24793, -2422,
-	-1310, 11703, 24797, -2422, -1310, 11697, 24803, -2422, -1309, 11692, 24807, -2422, -1308, 11686, 24812, -2422,
-	-1308, 11681, 24817, -2422, -1307, 11676, 24822, -2423, -1306, 11670, 24827, -2423, -1306, 11665, 24832, -2423,
-	-1305, 11659, 24837, -2423, -1304, 11654, 24841, -2423, -1304, 11649, 24846, -2423, -1303, 11643, 24851, -2423,
-	-1302, 11638, 24855, -2423, -1302, 11633, 24860, -2423, -1301, 11627, 24865, -2423, -1300, 11622, 24869, -2423,
-	-1300, 11616, 24875, -2423, -1299, 11611, 24879, -2423, -1298, 11606, 24883, -2423, -1298, 11600, 24889, -2423,
-	-1297, 11595, 24893, -2423, -1296, 11589, 24899, -2424, -1296, 11584, 24904, -2424, -1295, 11579, 24908, -2424,
-	-1294, 11573, 24913, -2424, -1294, 11568, 24918, -2424, -1293, 11562, 24923, -2424, -1292, 11557, 24927, -2424,
-	-1292, 11552, 24932, -2424, -1291, 11546, 24937, -2424, -1290, 11541, 24941, -2424, -1290, 11536, 24946, -2424,
-	-1289, 11530, 24951, -2424, -1288, 11525, 24955, -2424, -1288, 11519, 24961, -2424, -1287, 11514, 24965, -2424,
-	-1286, 11509, 24969, -2424, -1286, 11503, 24975, -2424, -1285, 11498, 24979, -2424, -1284, 11492, 24985, -2425,
-	-1284, 11487, 24990, -2425, -1283, 11482, 24994, -2425, -1282, 11476, 24999, -2425, -1282, 11471, 25004, -2425,
-	-1281, 11466, 25008, -2425, -1280, 11460, 25013, -2425, -1280, 11455, 25018, -2425, -1279, 11449, 25023, -2425,
-	-1278, 11444, 25027, -2425, -1278, 11439, 25032, -2425, -1277, 11433, 25037, -2425, -1276, 11428, 25041, -2425,
-	-1276, 11422, 25047, -2425, -1275, 11417, 25051, -2425, -1274, 11412, 25055, -2425, -1274, 11406, 25061, -2425,
-	-1273, 11401, 25065, -2425, -1272, 11396, 25069, -2425, -1272, 11390, 25075, -2425, -1271, 11385, 25079, -2425,
-	-1271, 11380, 25085, -2426, -1270, 11374, 25090, -2426, -1269, 11369, 25094, -2426, -1269, 11363, 25100, -2426,
-	-1268, 11358, 25104, -2426, -1267, 11353, 25108, -2426, -1267, 11347, 25114, -2426, -1266, 11342, 25118, -2426,
-	-1265, 11337, 25122, -2426, -1265, 11331, 25128, -2426, -1264, 11326, 25132, -2426, -1263, 11320, 25137, -2426,
-	-1263, 11315, 25142, -2426, -1262, 11310, 25146, -2426, -1261, 11304, 25151, -2426, -1261, 11299, 25156, -2426,
-	-1260, 11294, 25160, -2426, -1259, 11288, 25165, -2426, -1259, 11283, 25170, -2426, -1258, 11277, 25175, -2426,
-	-1257, 11272, 25179, -2426, -1257, 11267, 25184, -2426, -1256, 11261, 25189, -2426, -1255, 11256, 25193, -2426,
-	-1255, 11251, 25198, -2426, -1254, 11245, 25203, -2426, -1253, 11240, 25207, -2426, -1253, 11235, 25212, -2426,
-	-1252, 11229, 25217, -2426, -1251, 11224, 25221, -2426, -1251, 11219, 25227, -2427, -1250, 11213, 25232, -2427,
-	-1249, 11208, 25236, -2427, -1249, 11202, 25242, -2427, -1248, 11197, 25246, -2427, -1247, 11192, 25250, -2427,
-	-1247, 11186, 25256, -2427, -1246, 11181, 25260, -2427, -1245, 11176, 25264, -2427, -1245, 11170, 25270, -2427,
-	-1244, 11165, 25274, -2427, -1243, 11160, 25278, -2427, -1243, 11154, 25284, -2427, -1242, 11149, 25288, -2427,
-	-1241, 11144, 25292, -2427, -1241, 11138, 25298, -2427, -1240, 11133, 25302, -2427, -1239, 11127, 25307, -2427,
-	-1239, 11122, 25312, -2427, -1238, 11117, 25316, -2427, -1237, 11111, 25321, -2427, -1237, 11106, 25326, -2427,
-	-1236, 11101, 25330, -2427, -1235, 11095, 25335, -2427, -1235, 11090, 25340, -2427, -1234, 11085, 25344, -2427,
-	-1233, 11079, 25349, -2427, -1233, 11074, 25354, -2427, -1232, 11069, 25358, -2427, -1231, 11063, 25363, -2427,
-	-1231, 11058, 25368, -2427, -1230, 11053, 25372, -2427, -1229, 11047, 25377, -2427, -1229, 11042, 25382, -2427,
-	-1228, 11037, 25386, -2427, -1227, 11031, 25391, -2427, -1227, 11026, 25396, -2427, -1226, 11021, 25400, -2427,
-	-1225, 11015, 25405, -2427, -1225, 11010, 25410, -2427, -1224, 11005, 25414, -2427, -1223, 10999, 25419, -2427,
-	-1223, 10994, 25424, -2427, -1222, 10988, 25429, -2427, -1221, 10983, 25433, -2427, -1221, 10978, 25438, -2427,
-	-1220, 10972, 25443, -2427, -1219, 10967, 25447, -2427, -1219, 10962, 25452, -2427, -1218, 10956, 25457, -2427,
-	-1217, 10951, 25461, -2427, -1217, 10946, 25466, -2427, -1216, 10940, 25471, -2427, -1215, 10935, 25475, -2427,
-	-1215, 10930, 25480, -2427, -1214, 10924, 25485, -2427, -1213, 10919, 25489, -2427, -1213, 10914, 25494, -2427,
-	-1212, 10908, 25499, -2427, -1211, 10903, 25503, -2427, -1211, 10898, 25508, -2427, -1210, 10892, 25513, -2427,
-	-1209, 10887, 25517, -2427, -1209, 10882, 25522, -2427, -1208, 10876, 25527, -2427, -1207, 10871, 25531, -2427,
-	-1207, 10866, 25536, -2427, -1206, 10860, 25541, -2427, -1205, 10855, 25545, -2427, -1205, 10850, 25550, -2427,
-	-1204, 10844, 25555, -2427, -1203, 10839, 25559, -2427, -1203, 10834, 25564, -2427, -1202, 10829, 25568, -2427,
-	-1201, 10823, 25573, -2427, -1201, 10818, 25578, -2427, -1200, 10813, 25582, -2427, -1199, 10807, 25587, -2427,
-	-1199, 10802, 25592, -2427, -1198, 10797, 25596, -2427, -1197, 10791, 25601, -2427, -1197, 10786, 25606, -2427,
-	-1196, 10781, 25610, -2427, -1195, 10775, 25615, -2427, -1195, 10770, 25620, -2427, -1194, 10765, 25624, -2427,
-	-1193, 10759, 25629, -2427, -1193, 10754, 25634, -2427, -1192, 10749, 25638, -2427, -1191, 10743, 25643, -2427,
-	-1191, 10738, 25648, -2427, -1190, 10733, 25652, -2427, -1189, 10727, 25657, -2427, -1189, 10722, 25662, -2427,
-	-1188, 10717, 25666, -2427, -1187, 10712, 25670, -2427, -1187, 10706, 25676, -2427, -1186, 10701, 25680, -2427,
-	-1185, 10696, 25684, -2427, -1185, 10690, 25690, -2427, -1184, 10685, 25694, -2427, -1183, 10680, 25698, -2427,
-	-1183, 10674, 25704, -2427, -1182, 10669, 25708, -2427, -1181, 10664, 25712, -2427, -1181, 10658, 25718, -2427,
-	-1180, 10653, 25722, -2427, -1179, 10648, 25726, -2427, -1179, 10642, 25732, -2427, -1178, 10637, 25736, -2427,
-	-1177, 10632, 25740, -2427, -1177, 10627, 25744, -2426, -1176, 10621, 25749, -2426, -1175, 10616, 25753, -2426,
-	-1175, 10611, 25758, -2426, -1174, 10605, 25763, -2426, -1173, 10600, 25767, -2426, -1173, 10595, 25772, -2426,
-	-1172, 10589, 25777, -2426, -1171, 10584, 25781, -2426, -1171, 10579, 25786, -2426, -1170, 10574, 25790, -2426,
-	-1169, 10568, 25795, -2426, -1169, 10563, 25800, -2426, -1168, 10558, 25804, -2426, -1167, 10552, 25809, -2426,
-	-1167, 10547, 25814, -2426, -1166, 10542, 25818, -2426, -1165, 10536, 25823, -2426, -1165, 10531, 25828, -2426,
-	-1164, 10526, 25832, -2426, -1163, 10521, 25836, -2426, -1163, 10515, 25842, -2426, -1162, 10510, 25846, -2426,
-	-1161, 10505, 25850, -2426, -1161, 10499, 25856, -2426, -1160, 10494, 25860, -2426, -1159, 10489, 25864, -2426,
-	-1159, 10483, 25870, -2426, -1158, 10478, 25874, -2426, -1157, 10473, 25877, -2425, -1157, 10468, 25882, -2425,
-	-1156, 10462, 25887, -2425, -1155, 10457, 25891, -2425, -1155, 10452, 25896, -2425, -1154, 10446, 25901, -2425,
-	-1153, 10441, 25905, -2425, -1153, 10436, 25910, -2425, -1152, 10431, 25914, -2425, -1151, 10425, 25919, -2425,
-	-1151, 10420, 25924, -2425, -1150, 10415, 25928, -2425, -1149, 10409, 25933, -2425, -1149, 10404, 25938, -2425,
-	-1148, 10399, 25942, -2425, -1147, 10394, 25946, -2425, -1147, 10388, 25952, -2425, -1146, 10383, 25956, -2425,
-	-1145, 10378, 25960, -2425, -1145, 10373, 25965, -2425, -1144, 10367, 25970, -2425, -1143, 10362, 25973, -2424,
-	-1143, 10357, 25978, -2424, -1142, 10351, 25983, -2424, -1141, 10346, 25987, -2424, -1141, 10341, 25992, -2424,
-	-1140, 10336, 25996, -2424, -1139, 10330, 26001, -2424, -1139, 10325, 26006, -2424, -1138, 10320, 26010, -2424,
-	-1137, 10314, 26015, -2424, -1137, 10309, 26020, -2424, -1136, 10304, 26024, -2424, -1135, 10299, 26028, -2424,
-	-1135, 10293, 26034, -2424, -1134, 10288, 26038, -2424, -1133, 10283, 26042, -2424, -1133, 10278, 26047, -2424,
-	-1132, 10272, 26052, -2424, -1131, 10267, 26055, -2423, -1131, 10262, 26060, -2423, -1130, 10256, 26065, -2423,
-	-1129, 10251, 26069, -2423, -1129, 10246, 26074, -2423, -1128, 10241, 26078, -2423, -1127, 10235, 26083, -2423,
-	-1127, 10230, 26088, -2423, -1126, 10225, 26092, -2423, -1125, 10220, 26096, -2423, -1125, 10214, 26102, -2423,
-	-1124, 10209, 26106, -2423, -1123, 10204, 26110, -2423, -1123, 10199, 26115, -2423, -1122, 10193, 26120, -2423,
-	-1121, 10188, 26123, -2422, -1121, 10183, 26128, -2422, -1120, 10178, 26132, -2422, -1119, 10172, 26137, -2422,
-	-1119, 10167, 26142, -2422, -1118, 10162, 26146, -2422, -1117, 10156, 26151, -2422, -1117, 10151, 26156, -2422,
-	-1116, 10146, 26160, -2422, -1115, 10141, 26164, -2422, -1115, 10135, 26170, -2422, -1114, 10130, 26174, -2422,
-	-1113, 10125, 26178, -2422, -1113, 10120, 26183, -2422, -1112, 10114, 26187, -2421, -1111, 10109, 26191, -2421,
-	-1111, 10104, 26196, -2421, -1110, 10099, 26200, -2421, -1109, 10093, 26205, -2421, -1109, 10088, 26210, -2421,
-	-1108, 10083, 26214, -2421, -1107, 10078, 26218, -2421, -1107, 10072, 26224, -2421, -1106, 10067, 26228, -2421,
-	-1105, 10062, 26232, -2421, -1105, 10057, 26237, -2421, -1104, 10051, 26242, -2421, -1103, 10046, 26245, -2420,
-	-1103, 10041, 26250, -2420, -1102, 10036, 26254, -2420, -1101, 10030, 26259, -2420, -1101, 10025, 26264, -2420,
-	-1100, 10020, 26268, -2420, -1099, 10015, 26272, -2420, -1099, 10010, 26277, -2420, -1098, 10004, 26282, -2420,
-	-1097,  9999, 26286, -2420, -1097,  9994, 26291, -2420, -1096,  9989, 26294, -2419, -1095,  9983, 26299, -2419,
-	-1095,  9978, 26304, -2419, -1094,  9973, 26308, -2419, -1093,  9968, 26312, -2419, -1093,  9962, 26318, -2419,
-	-1092,  9957, 26322, -2419, -1091,  9952, 26326, -2419, -1091,  9947, 26331, -2419, -1090,  9941, 26336, -2419,
-	-1089,  9936, 26340, -2419, -1089,  9931, 26344, -2418, -1088,  9926, 26348, -2418, -1087,  9921, 26352, -2418,
-	-1087,  9915, 26358, -2418, -1086,  9910, 26362, -2418, -1085,  9905, 26366, -2418, -1085,  9900, 26371, -2418,
-	-1084,  9894, 26376, -2418, -1083,  9889, 26380, -2418, -1083,  9884, 26385, -2418, -1082,  9879, 26388, -2417,
-	-1081,  9873, 26393, -2417, -1081,  9868, 26398, -2417, -1080,  9863, 26402, -2417, -1079,  9858, 26406, -2417,
-	-1079,  9853, 26411, -2417, -1078,  9847, 26416, -2417, -1077,  9842, 26420, -2417, -1077,  9837, 26425, -2417,
-	-1076,  9832, 26429, -2417, -1075,  9826, 26433, -2416, -1075,  9821, 26438, -2416, -1074,  9816, 26442, -2416,
-	-1073,  9811, 26446, -2416, -1073,  9806, 26451, -2416, -1072,  9800, 26456, -2416, -1071,  9795, 26460, -2416,
-	-1071,  9790, 26465, -2416, -1070,  9785, 26469, -2416, -1069,  9779, 26473, -2415, -1069,  9774, 26478, -2415,
-	-1068,  9769, 26482, -2415, -1068,  9764, 26487, -2415, -1067,  9759, 26491, -2415, -1066,  9753, 26496, -2415,
-	-1066,  9748, 26501, -2415, -1065,  9743, 26505, -2415, -1064,  9738, 26509, -2415, -1064,  9733, 26513, -2414,
-	-1063,  9727, 26518, -2414, -1062,  9722, 26522, -2414, -1062,  9717, 26527, -2414, -1061,  9712, 26531, -2414,
-	-1060,  9707, 26535, -2414, -1060,  9701, 26541, -2414, -1059,  9696, 26545, -2414, -1058,  9691, 26549, -2414,
-	-1058,  9686, 26553, -2413, -1057,  9681, 26557, -2413, -1056,  9675, 26562, -2413, -1056,  9670, 26567, -2413,
-	-1055,  9665, 26571, -2413, -1054,  9660, 26575, -2413, -1054,  9654, 26581, -2413, -1053,  9649, 26585, -2413,
-	-1052,  9644, 26588, -2412, -1052,  9639, 26593, -2412, -1051,  9634, 26597, -2412, -1050,  9629, 26601, -2412,
-	-1050,  9623, 26607, -2412, -1049,  9618, 26611, -2412, -1048,  9613, 26615, -2412, -1048,  9608, 26620, -2412,
-	-1047,  9603, 26623, -2411, -1046,  9597, 26628, -2411, -1046,  9592, 26633, -2411, -1045,  9587, 26637, -2411,
-	-1044,  9582, 26641, -2411, -1044,  9577, 26646, -2411, -1043,  9571, 26651, -2411, -1042,  9566, 26655, -2411,
-	-1042,  9561, 26659, -2410, -1041,  9556, 26663, -2410, -1040,  9551, 26667, -2410, -1040,  9545, 26673, -2410,
-	-1039,  9540, 26677, -2410, -1038,  9535, 26681, -2410, -1038,  9530, 26686, -2410, -1037,  9525, 26689, -2409,
-	-1036,  9520, 26693, -2409, -1036,  9514, 26699, -2409, -1035,  9509, 26703, -2409, -1034,  9504, 26707, -2409,
-	-1034,  9499, 26712, -2409, -1033,  9494, 26716, -2409, -1032,  9488, 26721, -2409, -1032,  9483, 26725, -2408,
-	-1031,  9478, 26729, -2408, -1030,  9473, 26733, -2408, -1030,  9468, 26738, -2408, -1029,  9463, 26742, -2408,
-	-1028,  9457, 26747, -2408, -1028,  9452, 26752, -2408, -1027,  9447, 26755, -2407, -1027,  9442, 26760, -2407,
-	-1026,  9437, 26764, -2407, -1025,  9431, 26769, -2407, -1025,  9426, 26774, -2407, -1024,  9421, 26778, -2407,
-	-1023,  9416, 26781, -2406, -1023,  9411, 26786, -2406, -1022,  9406, 26790, -2406, -1021,  9400, 26795, -2406,
-	-1021,  9395, 26800, -2406, -1020,  9390, 26804, -2406, -1019,  9385, 26808, -2406, -1019,  9380, 26812, -2405,
-	-1018,  9375, 26816, -2405, -1017,  9369, 26821, -2405, -1017,  9364, 26826, -2405, -1016,  9359, 26830, -2405,
-	-1015,  9354, 26834, -2405, -1015,  9349, 26839, -2405, -1014,  9344, 26842, -2404, -1013,  9338, 26847, -2404,
-	-1013,  9333, 26852, -2404, -1012,  9328, 26856, -2404, -1011,  9323, 26860, -2404, -1011,  9318, 26865, -2404,
-	-1010,  9313, 26868, -2403, -1009,  9307, 26873, -2403, -1009,  9302, 26878, -2403, -1008,  9297, 26882, -2403,
-	-1007,  9292, 26886, -2403, -1007,  9287, 26891, -2403, -1006,  9282, 26894, -2402, -1005,  9277, 26898, -2402,
-	-1005,  9271, 26904, -2402, -1004,  9266, 26908, -2402, -1003,  9261, 26912, -2402, -1003,  9256, 26917, -2402,
-	-1002,  9251, 26921, -2402, -1001,  9246, 26924, -2401, -1001,  9240, 26930, -2401, -1000,  9235, 26934, -2401,
-	-1000,  9230, 26939, -2401,  -999,  9225, 26943, -2401,  -998,  9220, 26947, -2401,  -998,  9215, 26951, -2400,
-	 -997,  9210, 26955, -2400,  -996,  9204, 26960, -2400,  -996,  9199, 26965, -2400,  -995,  9194, 26969, -2400,
-	 -994,  9189, 26972, -2399,  -994,  9184, 26977, -2399,  -993,  9179, 26981, -2399,  -992,  9174, 26985, -2399,
-	 -992,  9168, 26991, -2399,  -991,  9163, 26995, -2399,  -990,  9158, 26998, -2398,  -990,  9153, 27003, -2398,
-	 -989,  9148, 27007, -2398,  -988,  9143, 27011, -2398,  -988,  9138, 27016, -2398,  -987,  9133, 27020, -2398,
-	 -986,  9127, 27024, -2397,  -986,  9122, 27029, -2397,  -985,  9117, 27033, -2397,  -984,  9112, 27037, -2397,
-	 -984,  9107, 27042, -2397,  -983,  9102, 27045, -2396,  -982,  9097, 27049, -2396,  -982,  9091, 27055, -2396,
-	 -981,  9086, 27059, -2396,  -980,  9081, 27063, -2396,  -980,  9076, 27068, -2396,  -979,  9071, 27071, -2395,
-	 -979,  9066, 27076, -2395,  -978,  9061, 27080, -2395,  -977,  9056, 27084, -2395,  -977,  9050, 27090, -2395,
-	 -976,  9045, 27093, -2394,  -975,  9040, 27097, -2394,  -975,  9035, 27102, -2394,  -974,  9030, 27106, -2394,
-	 -973,  9025, 27110, -2394,  -973,  9020, 27115, -2394,  -972,  9015, 27118, -2393,  -971,  9009, 27123, -2393,
-	 -971,  9004, 27128, -2393,  -970,  8999, 27132, -2393,  -969,  8994, 27136, -2393,  -969,  8989, 27140, -2392,
-	 -968,  8984, 27144, -2392,  -967,  8979, 27148, -2392,  -967,  8974, 27153, -2392,  -966,  8969, 27157, -2392,
-	 -965,  8963, 27161, -2391,  -965,  8958, 27166, -2391,  -964,  8953, 27170, -2391,  -963,  8948, 27174, -2391,
-	 -963,  8943, 27179, -2391,  -962,  8938, 27182, -2390,  -961,  8933, 27186, -2390,  -961,  8928, 27191, -2390,
-	 -960,  8923, 27195, -2390,  -960,  8917, 27201, -2390,  -959,  8912, 27204, -2389,  -958,  8907, 27208, -2389,
-	 -958,  8902, 27213, -2389,  -957,  8897, 27217, -2389,  -956,  8892, 27221, -2389,  -956,  8887, 27225, -2388,
-	 -955,  8882, 27229, -2388,  -954,  8877, 27233, -2388,  -954,  8872, 27238, -2388,  -953,  8866, 27243, -2388,
-	 -952,  8861, 27246, -2387,  -952,  8856, 27251, -2387,  -951,  8851, 27255, -2387,  -950,  8846, 27259, -2387,
-	 -950,  8841, 27264, -2387,  -949,  8836, 27267, -2386,  -948,  8831, 27271, -2386,  -948,  8826, 27276, -2386,
-	 -947,  8821, 27280, -2386,  -946,  8815, 27285, -2386,  -946,  8810, 27289, -2385,  -945,  8805, 27293, -2385,
-	 -945,  8800, 27298, -2385,  -944,  8795, 27302, -2385,  -943,  8790, 27305, -2384,  -943,  8785, 27310, -2384,
-	 -942,  8780, 27314, -2384,  -941,  8775, 27318, -2384,  -941,  8770, 27323, -2384,  -940,  8765, 27326, -2383,
-	 -939,  8759, 27331, -2383,  -939,  8754, 27336, -2383,  -938,  8749, 27340, -2383,  -937,  8744, 27343, -2382,
-	 -937,  8739, 27348, -2382,  -936,  8734, 27352, -2382,  -935,  8729, 27356, -2382,  -935,  8724, 27361, -2382,
-	 -934,  8719, 27364, -2381,  -933,  8714, 27368, -2381,  -933,  8709, 27373, -2381,  -932,  8704, 27377, -2381,
-	 -932,  8699, 27382, -2381,  -931,  8693, 27386, -2380,  -930,  8688, 27390, -2380,  -930,  8683, 27395, -2380,
-	 -929,  8678, 27399, -2380,  -928,  8673, 27402, -2379,  -928,  8668, 27407, -2379,  -927,  8663, 27411, -2379,
-	 -926,  8658, 27415, -2379,  -926,  8653, 27419, -2378,  -925,  8648, 27423, -2378,  -924,  8643, 27427, -2378,
-	 -924,  8638, 27432, -2378,  -923,  8633, 27436, -2378,  -922,  8628, 27439, -2377,  -922,  8622, 27445, -2377,
-	 -921,  8617, 27449, -2377,  -920,  8612, 27453, -2377,  -920,  8607, 27457, -2376,  -919,  8602, 27461, -2376,
-	 -919,  8597, 27466, -2376,  -918,  8592, 27470, -2376,  -917,  8587, 27473, -2375,  -917,  8582, 27478, -2375,
-	 -916,  8577, 27482, -2375,  -915,  8572, 27486, -2375,  -915,  8567, 27490, -2374,  -914,  8562, 27494, -2374,
-	 -913,  8557, 27498, -2374,  -913,  8552, 27503, -2374,  -912,  8547, 27507, -2374,  -911,  8541, 27511, -2373,
-	 -911,  8536, 27516, -2373,  -910,  8531, 27520, -2373,  -909,  8526, 27524, -2373,  -909,  8521, 27528, -2372,
-	 -908,  8516, 27532, -2372,  -907,  8511, 27536, -2372,  -907,  8506, 27541, -2372,  -906,  8501, 27544, -2371,
-	 -906,  8496, 27549, -2371,  -905,  8491, 27553, -2371,  -904,  8486, 27557, -2371,  -904,  8481, 27561, -2370,
-	 -903,  8476, 27565, -2370,  -902,  8471, 27569, -2370,  -902,  8466, 27574, -2370,  -901,  8461, 27577, -2369,
-	 -900,  8456, 27581, -2369,  -900,  8451, 27586, -2369,  -899,  8446, 27590, -2369,  -898,  8441, 27593, -2368,
-	 -898,  8436, 27598, -2368,  -897,  8430, 27603, -2368,  -896,  8425, 27607, -2368,  -896,  8420, 27611, -2367,
-	 -895,  8415, 27615, -2367,  -895,  8410, 27620, -2367,  -894,  8405, 27624, -2367,  -893,  8400, 27627, -2366,
-	 -893,  8395, 27632, -2366,  -892,  8390, 27636, -2366,  -891,  8385, 27639, -2365,  -891,  8380, 27644, -2365,
-	 -890,  8375, 27648, -2365,  -889,  8370, 27652, -2365,  -889,  8365, 27656, -2364,  -888,  8360, 27660, -2364,
-	 -887,  8355, 27664, -2364,  -887,  8350, 27669, -2364,  -886,  8345, 27672, -2363,  -886,  8340, 27677, -2363,
-	 -885,  8335, 27681, -2363,  -884,  8330, 27685, -2363,  -884,  8325, 27689, -2362,  -883,  8320, 27693, -2362,
-	 -882,  8315, 27697, -2362,  -882,  8310, 27702, -2362,  -881,  8305, 27705, -2361,  -880,  8300, 27709, -2361,
-	 -880,  8295, 27714, -2361,  -879,  8290, 27717, -2360,  -878,  8285, 27721, -2360,  -878,  8280, 27726, -2360,
-	 -877,  8275, 27730, -2360,  -877,  8270, 27734, -2359,  -876,  8265, 27738, -2359,  -875,  8260, 27742, -2359,
-	 -875,  8255, 27747, -2359,  -874,  8250, 27750, -2358,  -873,  8245, 27754, -2358,  -873,  8240, 27759, -2358,
-	 -872,  8235, 27762, -2357,  -871,  8230, 27766, -2357,  -871,  8225, 27771, -2357,  -870,  8220, 27775, -2357,
-	 -869,  8215, 27778, -2356,  -869,  8210, 27783, -2356,  -868,  8205, 27787, -2356,  -868,  8200, 27791, -2355,
-	 -867,  8195, 27795, -2355,  -866,  8190, 27799, -2355,  -866,  8185, 27804, -2355,  -865,  8180, 27807, -2354,
-	 -864,  8175, 27811, -2354,  -864,  8170, 27816, -2354,  -863,  8165, 27819, -2353,  -862,  8160, 27823, -2353,
-	 -862,  8155, 27828, -2353,  -861,  8150, 27832, -2353,  -860,  8145, 27835, -2352,  -860,  8140, 27840, -2352,
-	 -859,  8135, 27844, -2352,  -859,  8130, 27848, -2351,  -858,  8125, 27852, -2351,  -857,  8120, 27856, -2351,
-	 -857,  8115, 27861, -2351,  -856,  8110, 27864, -2350,  -855,  8105, 27868, -2350,  -855,  8100, 27873, -2350,
-	 -854,  8095, 27876, -2349,  -853,  8090, 27880, -2349,  -853,  8085, 27885, -2349,  -852,  8080, 27889, -2349,
-	 -851,  8075, 27892, -2348,  -851,  8070, 27897, -2348,  -850,  8065, 27901, -2348,  -850,  8060, 27905, -2347,
-	 -849,  8055, 27909, -2347,  -848,  8050, 27913, -2347,  -848,  8045, 27917, -2346,  -847,  8040, 27921, -2346,
-	 -846,  8035, 27925, -2346,  -846,  8030, 27930, -2346,  -845,  8025, 27933, -2345,  -844,  8020, 27937, -2345,
-	 -844,  8015, 27942, -2345,  -843,  8010, 27945, -2344,  -843,  8005, 27950, -2344,  -842,  8000, 27954, -2344,
-	 -841,  7995, 27957, -2343,  -841,  7990, 27962, -2343,  -840,  7985, 27966, -2343,  -839,  7980, 27970, -2343,
-	 -839,  7975, 27974, -2342,  -838,  7970, 27978, -2342,  -837,  7965, 27982, -2342,  -837,  7960, 27986, -2341,
-	 -836,  7955, 27990, -2341,  -836,  7950, 27995, -2341,  -835,  7945, 27998, -2340,  -834,  7940, 28002, -2340,
-	 -834,  7936, 28006, -2340,  -833,  7931, 28009, -2339,  -832,  7926, 28013, -2339,  -832,  7921, 28018, -2339,
-	 -831,  7916, 28021, -2338,  -830,  7911, 28025, -2338,  -830,  7906, 28030, -2338,  -829,  7901, 28034, -2338,
-	 -829,  7896, 28038, -2337,  -828,  7891, 28042, -2337,  -827,  7886, 28046, -2337,  -827,  7881, 28050, -2336,
-	 -826,  7876, 28054, -2336,  -825,  7871, 28058, -2336,  -825,  7866, 28062, -2335,  -824,  7861, 28066, -2335,
-	 -823,  7856, 28070, -2335,  -823,  7851, 28074, -2334,  -822,  7846, 28078, -2334,  -822,  7841, 28083, -2334,
-	 -821,  7836, 28086, -2333,  -820,  7832, 28089, -2333,  -820,  7827, 28094, -2333,  -819,  7822, 28097, -2332,
-	 -818,  7817, 28101, -2332,  -818,  7812, 28106, -2332,  -817,  7807, 28109, -2331,  -816,  7802, 28113, -2331,
-	 -816,  7797, 28118, -2331,  -815,  7792, 28121, -2330,  -815,  7787, 28126, -2330,  -814,  7782, 28130, -2330,
-	 -813,  7777, 28133, -2329,  -813,  7772, 28138, -2329,  -812,  7767, 28142, -2329,  -811,  7762, 28145, -2328,
-	 -811,  7757, 28150, -2328,  -810,  7753, 28153, -2328,  -810,  7748, 28157, -2327,  -809,  7743, 28161, -2327,
-	 -808,  7738, 28165, -2327,  -808,  7733, 28169, -2326,  -807,  7728, 28173, -2326,  -806,  7723, 28177, -2326,
-	 -806,  7718, 28181, -2325,  -805,  7713, 28185, -2325,  -804,  7708, 28189, -2325,  -804,  7703, 28193, -2324,
-	 -803,  7698, 28197, -2324,  -803,  7693, 28202, -2324,  -802,  7688, 28205, -2323,  -801,  7684, 28208, -2323,
-	 -801,  7679, 28213, -2323,  -800,  7674, 28216, -2322,  -799,  7669, 28220, -2322,  -799,  7664, 28225, -2322,
-	 -798,  7659, 28228, -2321,  -798,  7654, 28233, -2321,  -797,  7649, 28237, -2321,  -796,  7644, 28240, -2320,
-	 -796,  7639, 28245, -2320,  -795,  7634, 28249, -2320,  -794,  7629, 28252, -2319,  -794,  7625, 28256, -2319,
-	 -793,  7620, 28260, -2319,  -792,  7615, 28263, -2318,  -792,  7610, 28268, -2318,  -791,  7605, 28271, -2317,
-	 -791,  7600, 28276, -2317,  -790,  7595, 28280, -2317,  -789,  7590, 28283, -2316,  -789,  7585, 28288, -2316,
-	 -788,  7580, 28292, -2316,  -787,  7576, 28294, -2315,  -787,  7571, 28299, -2315,  -786,  7566, 28303, -2315,
-	 -786,  7561, 28307, -2314,  -785,  7556, 28311, -2314,  -784,  7551, 28315, -2314,  -784,  7546, 28319, -2313,
-	 -783,  7541, 28323, -2313,  -782,  7536, 28326, -2312,  -782,  7531, 28331, -2312,  -781,  7527, 28334, -2312,
-	 -781,  7522, 28338, -2311,  -780,  7517, 28342, -2311,  -779,  7512, 28346, -2311,  -779,  7507, 28350, -2310,
-	 -778,  7502, 28354, -2310,  -777,  7497, 28358, -2310,  -777,  7492, 28362, -2309,  -776,  7487, 28366, -2309,
-	 -776,  7483, 28369, -2308,  -775,  7478, 28373, -2308,  -774,  7473, 28377, -2308,  -774,  7468, 28381, -2307,
-	 -773,  7463, 28385, -2307,  -772,  7458, 28389, -2307,  -772,  7453, 28393, -2306,  -771,  7448, 28397, -2306,
-	 -771,  7444, 28400, -2305,  -770,  7439, 28404, -2305,  -769,  7434, 28408, -2305,  -769,  7429, 28412, -2304,
-	 -768,  7424, 28416, -2304,  -767,  7419, 28420, -2304,  -767,  7414, 28424, -2303,  -766,  7409, 28428, -2303,
-	 -766,  7405, 28431, -2302,  -765,  7400, 28435, -2302,  -764,  7395, 28439, -2302,  -764,  7390, 28443, -2301,
-	 -763,  7385, 28447, -2301,  -762,  7380, 28451, -2301,  -762,  7375, 28455, -2300,  -761,  7370, 28459, -2300,
-	 -761,  7366, 28462, -2299,  -760,  7361, 28466, -2299,  -759,  7356, 28470, -2299,  -759,  7351, 28474, -2298,
-	 -758,  7346, 28478, -2298,  -757,  7341, 28482, -2298,  -757,  7336, 28486, -2297,  -756,  7332, 28489, -2297,
-	 -756,  7327, 28493, -2296,  -755,  7322, 28497, -2296,  -754,  7317, 28501, -2296,  -754,  7312, 28505, -2295,
-	 -753,  7307, 28509, -2295,  -752,  7302, 28512, -2294,  -752,  7298, 28516, -2294,  -751,  7293, 28520, -2294,
-	 -751,  7288, 28524, -2293,  -750,  7283, 28528, -2293,  -749,  7278, 28531, -2292,  -749,  7273, 28536, -2292,
-	 -748,  7268, 28540, -2292,  -747,  7264, 28542, -2291,  -747,  7259, 28547, -2291,  -746,  7254, 28550, -2290,
-	 -746,  7249, 28555, -2290,  -745,  7244, 28559, -2290,  -744,  7239, 28562, -2289,  -744,  7235, 28566, -2289,
-	 -743,  7230, 28570, -2289,  -742,  7225, 28573, -2288,  -742,  7220, 28578, -2288,  -741,  7215, 28581, -2287,
-	 -741,  7210, 28586, -2287,  -740,  7205, 28590, -2287,  -739,  7201, 28592, -2286,  -739,  7196, 28597, -2286,
-	 -738,  7191, 28600, -2285,  -738,  7186, 28605, -2285,  -737,  7181, 28608, -2284,  -736,  7176, 28612, -2284,
-	 -736,  7172, 28616, -2284,  -735,  7167, 28619, -2283,  -734,  7162, 28623, -2283,  -734,  7157, 28627, -2282,
-	 -733,  7152, 28631, -2282,  -733,  7148, 28635, -2282,  -732,  7143, 28638, -2281,  -731,  7138, 28642, -2281,
-	 -731,  7133, 28646, -2280,  -730,  7128, 28650, -2280,  -729,  7123, 28654, -2280,  -729,  7119, 28657, -2279,
-	 -728,  7114, 28661, -2279,  -728,  7109, 28665, -2278,  -727,  7104, 28669, -2278,  -726,  7099, 28672, -2277,
-	 -726,  7095, 28676, -2277,  -725,  7090, 28680, -2277,  -725,  7085, 28684, -2276,  -724,  7080, 28688, -2276,
-	 -723,  7075, 28691, -2275,  -723,  7070, 28696, -2275,  -722,  7066, 28699, -2275,  -721,  7061, 28702, -2274,
-	 -721,  7056, 28707, -2274,  -720,  7051, 28710, -2273,  -720,  7046, 28715, -2273,  -719,  7042, 28717, -2272,
-	 -718,  7037, 28721, -2272,  -718,  7032, 28726, -2272,  -717,  7027, 28729, -2271,  -717,  7022, 28734, -2271,
-	 -716,  7018, 28736, -2270,  -715,  7013, 28740, -2270,  -715,  7008, 28744, -2269,  -714,  7003, 28748, -2269,
-	 -713,  6998, 28752, -2269,  -713,  6994, 28755, -2268,  -712,  6989, 28759, -2268,  -712,  6984, 28763, -2267,
-	 -711,  6979, 28767, -2267,  -710,  6974, 28770, -2266,  -710,  6970, 28774, -2266,  -709,  6965, 28778, -2266,
-	 -709,  6960, 28782, -2265,  -708,  6955, 28786, -2265,  -707,  6950, 28789, -2264,  -707,  6946, 28793, -2264,
-	 -706,  6941, 28796, -2263,  -706,  6936, 28801, -2263,  -705,  6931, 28805, -2263,  -704,  6927, 28807, -2262,
-	 -704,  6922, 28812, -2262,  -703,  6917, 28815, -2261,  -702,  6912, 28819, -2261,  -702,  6907, 28823, -2260,
-	 -701,  6903, 28826, -2260,  -701,  6898, 28830, -2259,  -700,  6893, 28834, -2259,  -699,  6888, 28838, -2259,
-	 -699,  6883, 28842, -2258,  -698,  6879, 28845, -2258,  -698,  6874, 28849, -2257,  -697,  6869, 28853, -2257,
-	 -696,  6864, 28856, -2256,  -696,  6860, 28860, -2256,  -695,  6855, 28863, -2255,  -695,  6850, 28868, -2255,
-	 -694,  6845, 28872, -2255,  -693,  6841, 28874, -2254,  -693,  6836, 28879, -2254,  -692,  6831, 28882, -2253,
-	 -691,  6826, 28886, -2253,  -691,  6821, 28890, -2252,  -690,  6817, 28893, -2252,  -690,  6812, 28897, -2251,
-	 -689,  6807, 28901, -2251,  -688,  6802, 28904, -2250,  -688,  6798, 28908, -2250,  -687,  6793, 28912, -2250,
-	 -687,  6788, 28916, -2249,  -686,  6783, 28920, -2249,  -685,  6779, 28922, -2248,  -685,  6774, 28927, -2248,
-	 -684,  6769, 28930, -2247,  -684,  6764, 28935, -2247,  -683,  6760, 28937, -2246,  -682,  6755, 28941, -2246,
-	 -682,  6750, 28945, -2245,  -681,  6745, 28949, -2245,  -681,  6741, 28953, -2245,  -680,  6736, 28956, -2244,
-	 -679,  6731, 28960, -2244,  -679,  6726, 28964, -2243,  -678,  6722, 28967, -2243,  -678,  6717, 28971, -2242,
-	 -677,  6712, 28975, -2242,  -676,  6707, 28978, -2241,  -676,  6703, 28982, -2241,  -675,  6698, 28985, -2240,
-	 -675,  6693, 28990, -2240,  -674,  6688, 28993, -2239,  -673,  6684, 28996, -2239,  -673,  6679, 29000, -2238,
-	 -672,  6674, 29004, -2238,  -671,  6670, 29006, -2237,  -671,  6665, 29011, -2237,  -670,  6660, 29015, -2237,
-	 -670,  6655, 29019, -2236,  -669,  6651, 29022, -2236,  -668,  6646, 29025, -2235,  -668,  6641, 29030, -2235,
-	 -667,  6636, 29033, -2234,  -667,  6632, 29037, -2234,  -666,  6627, 29040, -2233,  -665,  6622, 29044, -2233,
-	 -665,  6617, 29048, -2232,  -664,  6613, 29051, -2232,  -664,  6608, 29055, -2231,  -663,  6603, 29059, -2231,
-	 -662,  6599, 29061, -2230,  -662,  6594, 29066, -2230,  -661,  6589, 29069, -2229,  -661,  6584, 29074, -2229,
-	 -660,  6580, 29076, -2228,  -659,  6575, 29080, -2228,  -659,  6570, 29084, -2227,  -658,  6566, 29087, -2227,
-	 -658,  6561, 29091, -2226,  -657,  6556, 29095, -2226,  -656,  6551, 29098, -2225,  -656,  6547, 29102, -2225,
-	 -655,  6542, 29105, -2224,  -655,  6537, 29110, -2224,  -654,  6533, 29113, -2224,  -653,  6528, 29116, -2223,
-	 -653,  6523, 29121, -2223,  -652,  6518, 29124, -2222,  -652,  6514, 29128, -2222,  -651,  6509, 29131, -2221,
-	 -650,  6504, 29135, -2221,  -650,  6500, 29138, -2220,  -649,  6495, 29142, -2220,  -649,  6490, 29146, -2219,
-	 -648,  6486, 29149, -2219,  -647,  6481, 29152, -2218,  -647,  6476, 29157, -2218,  -646,  6471, 29160, -2217,
-	 -646,  6467, 29164, -2217,  -645,  6462, 29167, -2216,  -644,  6457, 29171, -2216,  -644,  6453, 29174, -2215,
-	 -643,  6448, 29178, -2215,  -643,  6443, 29182, -2214,  -642,  6439, 29185, -2214,  -642,  6434, 29189, -2213,
-	 -641,  6429, 29193, -2213,  -640,  6425, 29195, -2212,  -640,  6420, 29200, -2212,  -639,  6415, 29203, -2211,
-	 -639,  6411, 29207, -2211,  -638,  6406, 29210, -2210,  -637,  6401, 29213, -2209,  -637,  6397, 29217, -2209,
-	 -636,  6392, 29220, -2208,  -636,  6387, 29225, -2208,  -635,  6382, 29228, -2207,  -634,  6378, 29231, -2207,
-	 -634,  6373, 29235, -2206,  -633,  6368, 29239, -2206,  -633,  6364, 29242, -2205,  -632,  6359, 29246, -2205,
-	 -631,  6354, 29249, -2204,  -631,  6350, 29253, -2204,  -630,  6345, 29256, -2203,  -630,  6340, 29261, -2203,
-	 -629,  6336, 29263, -2202,  -628,  6331, 29267, -2202,  -628,  6326, 29271, -2201,  -627,  6322, 29274, -2201,
-	 -627,  6317, 29278, -2200,  -626,  6312, 29282, -2200,  -625,  6308, 29284, -2199,  -625,  6303, 29289, -2199,
-	 -624,  6298, 29292, -2198,  -624,  6294, 29296, -2198,  -623,  6289, 29299, -2197,  -623,  6285, 29303, -2197,
-	 -622,  6280, 29306, -2196,  -621,  6275, 29309, -2195,  -621,  6271, 29313, -2195,  -620,  6266, 29316, -2194,
-	 -620,  6261, 29321, -2194,  -619,  6257, 29323, -2193,  -618,  6252, 29327, -2193,  -618,  6247, 29331, -2192,
-	 -617,  6243, 29334, -2192,  -617,  6238, 29338, -2191,  -616,  6233, 29342, -2191,  -615,  6229, 29344, -2190,
-	 -615,  6224, 29349, -2190,  -614,  6219, 29352, -2189,  -614,  6215, 29356, -2189,  -613,  6210, 29359, -2188,
-	 -613,  6206, 29363, -2188,  -612,  6201, 29366, -2187,  -611,  6196, 29369, -2186,  -611,  6192, 29373, -2186,
-	 -610,  6187, 29376, -2185,  -610,  6182, 29381, -2185,  -609,  6178, 29383, -2184,  -608,  6173, 29387, -2184,
-	 -608,  6168, 29391, -2183,  -607,  6164, 29394, -2183,  -607,  6159, 29398, -2182,  -606,  6155, 29401, -2182,
-	 -605,  6150, 29404, -2181,  -605,  6145, 29408, -2180,  -604,  6141, 29411, -2180,  -604,  6136, 29415, -2179,
-	 -603,  6131, 29419, -2179,  -603,  6127, 29422, -2178,  -602,  6122, 29426, -2178,  -601,  6118, 29428, -2177,
-	 -601,  6113, 29433, -2177,  -600,  6108, 29436, -2176,  -600,  6104, 29440, -2176,  -599,  6099, 29443, -2175,
-	 -598,  6094, 29446, -2174,  -598,  6090, 29450, -2174,  -597,  6085, 29453, -2173,  -597,  6081, 29457, -2173,
-	 -596,  6076, 29460, -2172,  -596,  6071, 29465, -2172,  -595,  6067, 29467, -2171,  -594,  6062, 29471, -2171,
-	 -594,  6058, 29474, -2170,  -593,  6053, 29477, -2169,  -593,  6048, 29482, -2169,  -592,  6044, 29484, -2168,
-	 -591,  6039, 29488, -2168,  -591,  6035, 29491, -2167,  -590,  6030, 29495, -2167,  -590,  6025, 29499, -2166,
-	 -589,  6021, 29501, -2165,  -589,  6016, 29506, -2165,  -588,  6012, 29508, -2164,  -587,  6007, 29512, -2164,
-	 -587,  6002, 29516, -2163,  -586,  5998, 29519, -2163,  -586,  5993, 29523, -2162,  -585,  5989, 29526, -2162,
-	 -584,  5984, 29529, -2161,  -584,  5979, 29533, -2160,  -583,  5975, 29536, -2160,  -583,  5970, 29540, -2159,
-	 -582,  5966, 29543, -2159,  -582,  5961, 29547, -2158,  -581,  5956, 29551, -2158,  -580,  5952, 29553, -2157,
-	 -580,  5947, 29557, -2156,  -579,  5943, 29560, -2156,  -579,  5938, 29564, -2155,  -578,  5934, 29567, -2155,
-	 -578,  5929, 29571, -2154,  -577,  5924, 29575, -2154,  -576,  5920, 29577, -2153,  -576,  5915, 29581, -2152,
-	 -575,  5911, 29584, -2152,  -575,  5906, 29588, -2151,  -574,  5902, 29591, -2151,  -573,  5897, 29594, -2150,
-	 -573,  5892, 29598, -2149,  -572,  5888, 29601, -2149,  -572,  5883, 29605, -2148,  -571,  5879, 29608, -2148,
-	 -571,  5874, 29612, -2147,  -570,  5870, 29615, -2147,  -569,  5865, 29618, -2146,  -569,  5860, 29622, -2145,
-	 -568,  5856, 29625, -2145,  -568,  5851, 29629, -2144,  -567,  5847, 29632, -2144,  -567,  5842, 29636, -2143,
-	 -566,  5838, 29638, -2142,  -565,  5833, 29642, -2142,  -565,  5829, 29645, -2141,  -564,  5824, 29649, -2141,
-	 -564,  5819, 29653, -2140,  -563,  5815, 29655, -2139,  -563,  5810, 29660, -2139,  -562,  5806, 29662, -2138,
-	 -561,  5801, 29666, -2138,  -561,  5797, 29669, -2137,  -560,  5792, 29672, -2136,  -560,  5788, 29676, -2136,
-	 -559,  5783, 29679, -2135,  -559,  5778, 29684, -2135,  -558,  5774, 29686, -2134,  -557,  5769, 29689, -2133,
-	 -557,  5765, 29693, -2133,  -556,  5760, 29696, -2132,  -556,  5756, 29700, -2132,  -555,  5751, 29703, -2131,
-	 -555,  5747, 29706, -2130,  -554,  5742, 29710, -2130,  -553,  5738, 29712, -2129,  -553,  5733, 29717, -2129,
-	 -552,  5729, 29719, -2128,  -552,  5724, 29723, -2127,  -551,  5719, 29727, -2127,  -551,  5715, 29730, -2126,
-	 -550,  5710, 29734, -2126,  -549,  5706, 29736, -2125,  -549,  5701, 29740, -2124,  -548,  5697, 29743, -2124,
-	 -548,  5692, 29747, -2123,  -547,  5688, 29750, -2123,  -547,  5683, 29754, -2122,  -546,  5679, 29756, -2121,
-	 -545,  5674, 29760, -2121,  -545,  5670, 29763, -2120,  -544,  5665, 29767, -2120,  -544,  5661, 29770, -2119,
-	 -543,  5656, 29773, -2118,  -543,  5652, 29777, -2118,  -542,  5647, 29780, -2117,  -542,  5643, 29783, -2116,
-	 -541,  5638, 29787, -2116,  -540,  5634, 29789, -2115,  -540,  5629, 29794, -2115,  -539,  5625, 29796, -2114,
-	 -539,  5620, 29800, -2113,  -538,  5616, 29803, -2113,  -538,  5611, 29807, -2112,  -537,  5607, 29809, -2111,
-	 -536,  5602, 29813, -2111,  -536,  5598, 29816, -2110,  -535,  5593, 29820, -2110,  -535,  5589, 29823, -2109,
-	 -534,  5584, 29826, -2108,  -534,  5580, 29830, -2108,  -533,  5575, 29833, -2107,  -532,  5571, 29835, -2106,
-	 -532,  5566, 29840, -2106,  -531,  5562, 29842, -2105,  -531,  5557, 29847, -2105,  -530,  5553, 29849, -2104,
-	 -530,  5548, 29853, -2103,  -529,  5544, 29856, -2103,  -529,  5539, 29860, -2102,  -528,  5535, 29862, -2101,
-	 -527,  5530, 29866, -2101,  -527,  5526, 29869, -2100,  -526,  5521, 29872, -2099,  -526,  5517, 29876, -2099,
-	 -525,  5512, 29879, -2098,  -525,  5508, 29883, -2098,  -524,  5503, 29886, -2097,  -524,  5499, 29889, -2096,
-	 -523,  5494, 29893, -2096,  -522,  5490, 29895, -2095,  -522,  5485, 29899, -2094,  -521,  5481, 29902, -2094,
-	 -521,  5476, 29906, -2093,  -520,  5472, 29908, -2092,  -520,  5467, 29913, -2092,  -519,  5463, 29915, -2091,
-	 -518,  5458, 29918, -2090,  -518,  5454, 29922, -2090,  -517,  5450, 29924, -2089,  -517,  5445, 29929, -2089,
-	 -516,  5441, 29931, -2088,  -516,  5436, 29935, -2087,  -515,  5432, 29938, -2087,  -515,  5427, 29942, -2086,
-	 -514,  5423, 29944, -2085,  -513,  5418, 29948, -2085,  -513,  5414, 29951, -2084,  -512,  5409, 29954, -2083,
-	 -512,  5405, 29958, -2083,  -511,  5400, 29961, -2082,  -511,  5396, 29964, -2081,  -510,  5392, 29967, -2081,
-	 -510,  5387, 29971, -2080,  -509,  5383, 29973, -2079,  -508,  5378, 29977, -2079,  -508,  5374, 29980, -2078,
-	 -507,  5369, 29983, -2077,  -507,  5365, 29987, -2077,  -506,  5360, 29990, -2076,  -506,  5356, 29993, -2075,
-	 -505,  5352, 29996, -2075,  -505,  5347, 30000, -2074,  -504,  5343, 30002, -2073,  -503,  5338, 30006, -2073,
-	 -503,  5334, 30009, -2072,  -502,  5329, 30012, -2071,  -502,  5325, 30016, -2071,  -501,  5320, 30019, -2070,
-	 -501,  5316, 30022, -2069,  -500,  5312, 30025, -2069,  -500,  5307, 30029, -2068,  -499,  5303, 30031, -2067,
-	 -499,  5298, 30036, -2067,  -498,  5294, 30038, -2066,  -497,  5289, 30041, -2065,  -497,  5285, 30045, -2065,
-	 -496,  5281, 30047, -2064,  -496,  5276, 30051, -2063,  -495,  5272, 30054, -2063,  -495,  5267, 30058, -2062,
-	 -494,  5263, 30060, -2061,  -494,  5258, 30065, -2061,  -493,  5254, 30067, -2060,  -492,  5250, 30069, -2059,
-	 -492,  5245, 30074, -2059,  -491,  5241, 30076, -2058,  -491,  5236, 30080, -2057,  -490,  5232, 30083, -2057,
-	 -490,  5228, 30086, -2056,  -489,  5223, 30089, -2055,  -489,  5219, 30093, -2055,  -488,  5214, 30096, -2054,
-	 -488,  5210, 30099, -2053,  -487,  5206, 30101, -2052,  -486,  5201, 30105, -2052,  -486,  5197, 30108, -2051,
-	 -485,  5192, 30111, -2050,  -485,  5188, 30115, -2050,  -484,  5184, 30117, -2049,  -484,  5179, 30121, -2048,
-	 -483,  5175, 30124, -2048,  -483,  5170, 30128, -2047,  -482,  5166, 30130, -2046,  -482,  5162, 30134, -2046,
-	 -481,  5157, 30137, -2045,  -480,  5153, 30139, -2044,  -480,  5148, 30143, -2043,  -479,  5144, 30146, -2043,
-	 -479,  5140, 30149, -2042,  -478,  5135, 30152, -2041,  -478,  5131, 30156, -2041,  -477,  5126, 30159, -2040,
-	 -477,  5122, 30162, -2039,  -476,  5118, 30165, -2039,  -476,  5113, 30169, -2038,  -475,  5109, 30171, -2037,
-	 -474,  5104, 30174, -2036,  -474,  5100, 30178, -2036,  -473,  5096, 30180, -2035,  -473,  5091, 30184, -2034,
-	 -472,  5087, 30187, -2034,  -472,  5083, 30190, -2033,  -471,  5078, 30193, -2032,  -471,  5074, 30197, -2032,
-	 -470,  5069, 30200, -2031,  -470,  5065, 30203, -2030,  -469,  5061, 30205, -2029,  -469,  5056, 30210, -2029,
-	 -468,  5052, 30212, -2028,  -467,  5048, 30214, -2027,  -467,  5043, 30219, -2027,  -466,  5039, 30221, -2026,
-	 -466,  5035, 30224, -2025,  -465,  5030, 30227, -2024,  -465,  5026, 30231, -2024,  -464,  5021, 30234, -2023,
-	 -464,  5017, 30237, -2022,  -463,  5013, 30240, -2022,  -463,  5008, 30244, -2021,  -462,  5004, 30246, -2020,
-	 -462,  5000, 30249, -2019,  -461,  4995, 30253, -2019,  -460,  4991, 30255, -2018,  -460,  4987, 30258, -2017,
-	 -459,  4982, 30262, -2017,  -459,  4978, 30265, -2016,  -458,  4974, 30267, -2015,  -458,  4969, 30271, -2014,
-	 -457,  4965, 30274, -2014,  -457,  4961, 30277, -2013,  -456,  4956, 30280, -2012,  -456,  4952, 30283, -2011,
-	 -455,  4948, 30286, -2011,  -455,  4943, 30290, -2010,  -454,  4939, 30292, -2009,  -454,  4934, 30297, -2009,
-	 -453,  4930, 30299, -2008,  -452,  4926, 30301, -2007,  -452,  4921, 30305, -2006,  -451,  4917, 30308, -2006,
-	 -451,  4913, 30311, -2005,  -450,  4909, 30313, -2004,  -450,  4904, 30317, -2003,  -449,  4900, 30320, -2003,
-	 -449,  4896, 30323, -2002,  -448,  4891, 30326, -2001,  -448,  4887, 30329, -2000,  -447,  4883, 30332, -2000,
-	 -447,  4878, 30336, -1999,  -446,  4874, 30338, -1998,  -446,  4870, 30342, -1998,  -445,  4865, 30345, -1997,
-	 -444,  4861, 30347, -1996,  -444,  4857, 30350, -1995,  -443,  4852, 30354, -1995,  -443,  4848, 30357, -1994,
-	 -442,  4844, 30359, -1993,  -442,  4839, 30363, -1992,  -441,  4835, 30366, -1992,  -441,  4831, 30369, -1991,
-	 -440,  4826, 30372, -1990,  -440,  4822, 30375, -1989,  -439,  4818, 30378, -1989,  -439,  4814, 30381, -1988,
-	 -438,  4809, 30384, -1987,  -438,  4805, 30387, -1986,  -437,  4801, 30390, -1986,  -437,  4796, 30394, -1985,
-	 -436,  4792, 30396, -1984,  -436,  4788, 30399, -1983,  -435,  4783, 30403, -1983,  -434,  4779, 30405, -1982,
-	 -434,  4775, 30408, -1981,  -433,  4771, 30410, -1980,  -433,  4766, 30415, -1980,  -432,  4762, 30417, -1979,
-	 -432,  4758, 30420, -1978,  -431,  4753, 30423, -1977,  -431,  4749, 30427, -1977,  -430,  4745, 30429, -1976,
-	 -430,  4741, 30432, -1975,  -429,  4736, 30435, -1974,  -429,  4732, 30438, -1973,  -428,  4728, 30441, -1973,
-	 -428,  4723, 30445, -1972,  -427,  4719, 30447, -1971,  -427,  4715, 30450, -1970,  -426,  4711, 30453, -1970,
-	 -426,  4706, 30457, -1969,  -425,  4702, 30459, -1968,  -425,  4698, 30462, -1967,  -424,  4693, 30466, -1967,
-	 -423,  4689, 30468, -1966,  -423,  4685, 30471, -1965,  -422,  4681, 30473, -1964,  -422,  4676, 30477, -1963,
-	 -421,  4672, 30480, -1963,  -421,  4668, 30483, -1962,  -420,  4664, 30485, -1961,  -420,  4659, 30489, -1960,
-	 -419,  4655, 30492, -1960,  -419,  4651, 30495, -1959,  -418,  4647, 30497, -1958,  -418,  4642, 30501, -1957,
-	 -417,  4638, 30503, -1956,  -417,  4634, 30507, -1956,  -416,  4630, 30509, -1955,  -416,  4625, 30513, -1954,
-	 -415,  4621, 30515, -1953,  -415,  4617, 30519, -1953,  -414,  4613, 30521, -1952,  -414,  4608, 30525, -1951,
-	 -413,  4604, 30527, -1950,  -413,  4600, 30530, -1949,  -412,  4596, 30533, -1949,  -412,  4591, 30537, -1948,
-	 -411,  4587, 30539, -1947,  -411,  4583, 30542, -1946,  -410,  4579, 30545, -1946,  -410,  4574, 30549, -1945,
-	 -409,  4570, 30551, -1944,  -408,  4566, 30553, -1943,  -408,  4562, 30556, -1942,  -407,  4557, 30560, -1942,
-	 -407,  4553, 30563, -1941,  -406,  4549, 30565, -1940,  -406,  4545, 30568, -1939,  -405,  4540, 30571, -1938,
-	 -405,  4536, 30575, -1938,  -404,  4532, 30577, -1937,  -404,  4528, 30580, -1936,  -403,  4524, 30582, -1935,
-	 -403,  4519, 30586, -1934,  -402,  4515, 30589, -1934,  -402,  4511, 30592, -1933,  -401,  4507, 30594, -1932,
-	 -401,  4502, 30598, -1931,  -400,  4498, 30600, -1930,  -400,  4494, 30604, -1930,  -399,  4490, 30606, -1929,
-	 -399,  4486, 30609, -1928,  -398,  4481, 30612, -1927,  -398,  4477, 30615, -1926,  -397,  4473, 30618, -1926,
-	 -397,  4469, 30621, -1925,  -396,  4465, 30623, -1924,  -396,  4460, 30627, -1923,  -395,  4456, 30629, -1922,
-	 -395,  4452, 30633, -1922,  -394,  4448, 30635, -1921,  -394,  4443, 30639, -1920,  -393,  4439, 30641, -1919,
-	 -393,  4435, 30644, -1918,  -392,  4431, 30646, -1917,  -392,  4427, 30650, -1917,  -391,  4423, 30652, -1916,
-	 -391,  4418, 30656, -1915,  -390,  4414, 30658, -1914,  -390,  4410, 30661, -1913,  -389,  4406, 30664, -1913,
-	 -389,  4402, 30667, -1912,  -388,  4397, 30670, -1911,  -388,  4393, 30673, -1910,  -387,  4389, 30675, -1909,
-	 -387,  4385, 30678, -1908,  -386,  4381, 30681, -1908,  -386,  4376, 30685, -1907,  -385,  4372, 30687, -1906,
-	 -385,  4368, 30690, -1905,  -384,  4364, 30692, -1904,  -384,  4360, 30695, -1903,  -383,  4356, 30698, -1903,
-	 -383,  4351, 30702, -1902,  -382,  4347, 30704, -1901,  -382,  4343, 30707, -1900,  -381,  4339, 30709, -1899,
-	 -381,  4335, 30713, -1899,  -380,  4331, 30715, -1898,  -380,  4326, 30719, -1897,  -379,  4322, 30721, -1896,
-	 -379,  4318, 30724, -1895,  -378,  4314, 30726, -1894,  -378,  4310, 30730, -1894,  -377,  4306, 30732, -1893,
-	 -377,  4301, 30736, -1892,  -376,  4297, 30738, -1891,  -376,  4293, 30741, -1890,  -375,  4289, 30743, -1889,
-	 -375,  4285, 30746, -1888,  -374,  4281, 30749, -1888,  -374,  4276, 30753, -1887,  -373,  4272, 30755, -1886,
-	 -373,  4268, 30758, -1885,  -372,  4264, 30760, -1884,  -372,  4260, 30763, -1883,  -371,  4256, 30766, -1883,
-	 -371,  4252, 30769, -1882,  -370,  4247, 30772, -1881,  -370,  4243, 30775, -1880,  -369,  4239, 30777, -1879,
-	 -369,  4235, 30780, -1878,  -368,  4231, 30783, -1878,  -368,  4227, 30786, -1877,  -367,  4223, 30788, -1876,
-	 -367,  4218, 30792, -1875,  -366,  4214, 30794, -1874,  -366,  4210, 30797, -1873,  -365,  4206, 30799, -1872,
-	 -365,  4202, 30803, -1872,  -364,  4198, 30805, -1871,  -364,  4194, 30808, -1870,  -363,  4189, 30811, -1869,
-	 -363,  4185, 30814, -1868,  -362,  4181, 30816, -1867,  -362,  4177, 30819, -1866,  -361,  4173, 30822, -1866,
-	 -361,  4169, 30825, -1865,  -360,  4165, 30827, -1864,  -360,  4161, 30830, -1863,  -359,  4156, 30833, -1862,
-	 -359,  4152, 30836, -1861,  -358,  4148, 30838, -1860,  -358,  4144, 30841, -1859,  -357,  4140, 30844, -1859,
-	 -357,  4136, 30847, -1858,  -356,  4132, 30849, -1857,  -356,  4128, 30852, -1856,  -355,  4124, 30854, -1855,
-	 -355,  4119, 30858, -1854,  -354,  4115, 30860, -1853,  -354,  4111, 30864, -1853,  -353,  4107, 30866, -1852,
-	 -353,  4103, 30869, -1851,  -352,  4099, 30871, -1850,  -352,  4095, 30874, -1849,  -351,  4091, 30876, -1848,
-	 -351,  4087, 30879, -1847,  -351,  4083, 30882, -1846,  -350,  4079, 30885, -1846,  -350,  4074, 30889, -1845,
-	 -349,  4070, 30891, -1844,  -349,  4066, 30894, -1843,  -348,  4062, 30896, -1842,  -348,  4058, 30899, -1841,
-	 -347,  4054, 30901, -1840,  -347,  4050, 30904, -1839,  -346,  4046, 30907, -1839,  -346,  4042, 30910, -1838,
-	 -345,  4038, 30912, -1837,  -345,  4034, 30915, -1836,  -344,  4029, 30918, -1835,  -344,  4025, 30921, -1834,
-	 -343,  4021, 30923, -1833,  -343,  4017, 30926, -1832,  -342,  4013, 30928, -1831,  -342,  4009, 30932, -1831,
-	 -341,  4005, 30934, -1830,  -341,  4001, 30937, -1829,  -340,  3997, 30939, -1828,  -340,  3993, 30942, -1827,
-	 -339,  3989, 30944, -1826,  -339,  3985, 30947, -1825,  -338,  3981, 30949, -1824,  -338,  3977, 30952, -1823,
-	 -338,  3973, 30956, -1823,  -337,  3968, 30959, -1822,  -337,  3964, 30962, -1821,  -336,  3960, 30964, -1820,
-	 -336,  3956, 30967, -1819,  -335,  3952, 30969, -1818,  -335,  3948, 30972, -1817,  -334,  3944, 30974, -1816,
-	 -334,  3940, 30977, -1815,  -333,  3936, 30979, -1814,  -333,  3932, 30982, -1813,  -332,  3928, 30985, -1813,
-	 -332,  3924, 30988, -1812,  -331,  3920, 30990, -1811,  -331,  3916, 30993, -1810,  -330,  3912, 30995, -1809,
-	 -330,  3908, 30998, -1808,  -329,  3904, 31000, -1807,  -329,  3900, 31003, -1806,  -328,  3896, 31005, -1805,
-	 -328,  3892, 31008, -1804,  -328,  3888, 31012, -1804,  -327,  3883, 31015, -1803,  -327,  3879, 31018, -1802,
-	 -326,  3875, 31020, -1801,  -326,  3871, 31023, -1800,  -325,  3867, 31025, -1799,  -325,  3863, 31028, -1798,
-	 -324,  3859, 31030, -1797,  -324,  3855, 31033, -1796,  -323,  3851, 31035, -1795,  -323,  3847, 31038, -1794,
-	 -322,  3843, 31040, -1793,  -322,  3839, 31044, -1793,  -321,  3835, 31046, -1792,  -321,  3831, 31049, -1791,
-	 -320,  3827, 31051, -1790,  -320,  3823, 31054, -1789,  -320,  3819, 31057, -1788,  -319,  3815, 31059, -1787,
-	 -319,  3811, 31062, -1786,  -318,  3807, 31064, -1785,  -318,  3803, 31067, -1784,  -317,  3799, 31069, -1783,
-	 -317,  3795, 31072, -1782,  -316,  3791, 31074, -1781,  -316,  3787, 31077, -1780,  -315,  3783, 31080, -1780,
-	 -315,  3779, 31083, -1779,  -314,  3775, 31085, -1778,  -314,  3771, 31088, -1777,  -313,  3767, 31090, -1776,
-	 -313,  3763, 31093, -1775,  -313,  3759, 31096, -1774,  -312,  3755, 31098, -1773,  -312,  3751, 31101, -1772,
-	 -311,  3747, 31103, -1771,  -311,  3743, 31106, -1770,  -310,  3739, 31108, -1769,  -310,  3735, 31111, -1768,
-	 -309,  3731, 31113, -1767,  -309,  3727, 31116, -1766,  -308,  3723, 31118, -1765,  -308,  3719, 31122, -1765,
-	 -307,  3715, 31124, -1764,  -307,  3711, 31127, -1763,  -306,  3707, 31129, -1762,  -306,  3703, 31132, -1761,
-	 -306,  3699, 31135, -1760,  -305,  3695, 31137, -1759,  -305,  3691, 31140, -1758,  -304,  3687, 31142, -1757,
-	 -304,  3683, 31145, -1756,  -303,  3679, 31147, -1755,  -303,  3676, 31149, -1754,  -302,  3672, 31151, -1753,
-	 -302,  3668, 31154, -1752,  -301,  3664, 31156, -1751,  -301,  3660, 31159, -1750,  -301,  3656, 31162, -1749,
-	 -300,  3652, 31164, -1748,  -300,  3648, 31167, -1747,  -299,  3644, 31169, -1746,  -299,  3640, 31172, -1745,
-	 -298,  3636, 31175, -1745,  -298,  3632, 31178, -1744,  -297,  3628, 31180, -1743,  -297,  3624, 31183, -1742,
-	 -296,  3620, 31185, -1741,  -296,  3616, 31188, -1740,  -296,  3612, 31191, -1739,  -295,  3608, 31193, -1738,
-	 -295,  3604, 31196, -1737,  -294,  3600, 31198, -1736,  -294,  3596, 31201, -1735,  -293,  3593, 31202, -1734,
-	 -293,  3589, 31205, -1733,  -292,  3585, 31207, -1732,  -292,  3581, 31210, -1731,  -291,  3577, 31212, -1730,
-	 -291,  3573, 31215, -1729,  -291,  3569, 31218, -1728,  -290,  3565, 31220, -1727,  -290,  3561, 31223, -1726,
-	 -289,  3557, 31225, -1725,  -289,  3553, 31228, -1724,  -288,  3549, 31230, -1723,  -288,  3545, 31233, -1722,
-	 -287,  3541, 31235, -1721,  -287,  3538, 31237, -1720,  -286,  3534, 31239, -1719,  -286,  3530, 31242, -1718,
-	 -286,  3526, 31245, -1717,  -285,  3522, 31247, -1716,  -285,  3518, 31250, -1715,  -284,  3514, 31252, -1714,
-	 -284,  3510, 31255, -1713,  -283,  3506, 31257, -1712,  -283,  3502, 31260, -1711,  -282,  3498, 31262, -1710,
-	 -282,  3495, 31264, -1709,  -282,  3491, 31267, -1708,  -281,  3487, 31270, -1708,  -281,  3483, 31273, -1707,
-	 -280,  3479, 31275, -1706,  -280,  3475, 31278, -1705,  -279,  3471, 31280, -1704,  -279,  3467, 31283, -1703,
-	 -278,  3463, 31285, -1702,  -278,  3459, 31288, -1701,  -278,  3456, 31290, -1700,  -277,  3452, 31292, -1699,
-	 -277,  3448, 31295, -1698,  -276,  3444, 31297, -1697,  -276,  3440, 31300, -1696,  -275,  3436, 31302, -1695,
-	 -275,  3432, 31305, -1694,  -274,  3428, 31307, -1693,  -274,  3424, 31310, -1692,  -274,  3421, 31312, -1691,
-	 -273,  3417, 31314, -1690,  -273,  3413, 31317, -1689,  -272,  3409, 31319, -1688,  -272,  3405, 31322, -1687,
-	 -271,  3401, 31324, -1686,  -271,  3397, 31327, -1685,  -270,  3393, 31329, -1684,  -270,  3390, 31331, -1683,
-	 -270,  3386, 31334, -1682,  -269,  3382, 31336, -1681,  -269,  3378, 31339, -1680,  -268,  3374, 31341, -1679,
-	 -268,  3370, 31343, -1677,  -267,  3366, 31345, -1676,  -267,  3363, 31347, -1675,  -267,  3359, 31350, -1674,
-	 -266,  3355, 31352, -1673,  -266,  3351, 31355, -1672,  -265,  3347, 31357, -1671,  -265,  3343, 31360, -1670,
-	 -264,  3339, 31362, -1669,  -264,  3336, 31364, -1668,  -264,  3332, 31367, -1667,  -263,  3328, 31369, -1666,
-	 -263,  3324, 31372, -1665,  -262,  3320, 31374, -1664,  -262,  3316, 31377, -1663,  -261,  3312, 31379, -1662,
-	 -261,  3309, 31381, -1661,  -260,  3305, 31383, -1660,  -260,  3301, 31386, -1659,  -260,  3297, 31389, -1658,
-	 -259,  3293, 31391, -1657,  -259,  3289, 31394, -1656,  -258,  3286, 31395, -1655,  -258,  3282, 31398, -1654,
-	 -257,  3278, 31400, -1653,  -257,  3274, 31403, -1652,  -257,  3270, 31406, -1651,  -256,  3266, 31408, -1650,
-	 -256,  3263, 31410, -1649,  -255,  3259, 31412, -1648,  -255,  3255, 31415, -1647,  -254,  3251, 31417, -1646,
-	 -254,  3247, 31420, -1645,  -254,  3244, 31422, -1644,  -253,  3240, 31424, -1643,  -253,  3236, 31427, -1642,
-	 -252,  3232, 31429, -1641,  -252,  3228, 31432, -1640,  -251,  3224, 31433, -1638,  -251,  3221, 31435, -1637,
-	 -251,  3217, 31438, -1636,  -250,  3213, 31440, -1635,  -250,  3209, 31443, -1634,  -249,  3205, 31445, -1633,
-	 -249,  3202, 31447, -1632,  -248,  3198, 31449, -1631,  -248,  3194, 31452, -1630,  -248,  3190, 31455, -1629,
-	 -247,  3186, 31457, -1628,  -247,  3183, 31459, -1627,  -246,  3179, 31461, -1626,  -246,  3175, 31464, -1625,
-	 -246,  3171, 31467, -1624,  -245,  3167, 31469, -1623,  -245,  3164, 31471, -1622,  -244,  3160, 31473, -1621,
-	 -244,  3156, 31476, -1620,  -243,  3152, 31478, -1619,  -243,  3149, 31479, -1617,  -243,  3145, 31482, -1616,
-	 -242,  3141, 31484, -1615,  -242,  3137, 31487, -1614,  -241,  3133, 31489, -1613,  -241,  3130, 31491, -1612,
-	 -240,  3126, 31493, -1611,  -240,  3122, 31496, -1610,  -240,  3118, 31499, -1609,  -239,  3115, 31500, -1608,
-	 -239,  3111, 31503, -1607,  -238,  3107, 31505, -1606,  -238,  3103, 31508, -1605,  -238,  3099, 31511, -1604,
-	 -237,  3096, 31512, -1603,  -237,  3092, 31515, -1602,  -236,  3088, 31516, -1600,  -236,  3084, 31519, -1599,
-	 -235,  3081, 31520, -1598,  -235,  3077, 31523, -1597,  -235,  3073, 31526, -1596,  -234,  3069, 31528, -1595,
-	 -234,  3066, 31530, -1594,  -233,  3062, 31532, -1593,  -233,  3058, 31535, -1592,  -233,  3054, 31538, -1591,
-	 -232,  3051, 31539, -1590,  -232,  3047, 31542, -1589,  -231,  3043, 31544, -1588,  -231,  3039, 31546, -1586,
-	 -231,  3036, 31548, -1585,  -230,  3032, 31550, -1584,  -230,  3028, 31553, -1583,  -229,  3024, 31555, -1582,
-	 -229,  3021, 31557, -1581,  -228,  3017, 31559, -1580,  -228,  3013, 31562, -1579,  -228,  3010, 31564, -1578,
-	 -227,  3006, 31566, -1577,  -227,  3002, 31569, -1576,  -226,  2998, 31571, -1575,  -226,  2995, 31572, -1573,
-	 -226,  2991, 31575, -1572,  -225,  2987, 31577, -1571,  -225,  2983, 31580, -1570,  -224,  2980, 31581, -1569,
-	 -224,  2976, 31584, -1568,  -224,  2972, 31587, -1567,  -223,  2969, 31588, -1566,  -223,  2965, 31591, -1565,
-	 -222,  2961, 31593, -1564,  -222,  2957, 31596, -1563,  -222,  2954, 31597, -1561,  -221,  2950, 31599, -1560,
-	 -221,  2946, 31602, -1559,  -220,  2943, 31603, -1558,  -220,  2939, 31606, -1557,  -220,  2935, 31609, -1556,
-	 -219,  2931, 31611, -1555,  -219,  2928, 31613, -1554,  -218,  2924, 31615, -1553,  -218,  2920, 31618, -1552,
-	 -218,  2917, 31619, -1550,  -217,  2913, 31621, -1549,  -217,  2909, 31624, -1548,  -216,  2906, 31625, -1547,
-	 -216,  2902, 31628, -1546,  -216,  2898, 31631, -1545,  -215,  2895, 31632, -1544,  -215,  2891, 31635, -1543,
-	 -214,  2887, 31637, -1542,  -214,  2883, 31639, -1540,  -214,  2880, 31641, -1539,  -213,  2876, 31643, -1538,
-	 -213,  2872, 31646, -1537,  -212,  2869, 31647, -1536,  -212,  2865, 31650, -1535,  -212,  2861, 31653, -1534,
-	 -211,  2858, 31654, -1533,  -211,  2854, 31656, -1531,  -210,  2850, 31658, -1530,  -210,  2847, 31660, -1529,
-	 -210,  2843, 31663, -1528,  -209,  2839, 31665, -1527,  -209,  2836, 31667, -1526,  -208,  2832, 31669, -1525,
-	 -208,  2828, 31672, -1524,  -208,  2825, 31673, -1522,  -207,  2821, 31675, -1521,  -207,  2817, 31678, -1520,
-	 -206,  2814, 31679, -1519,  -206,  2810, 31682, -1518,  -206,  2806, 31685, -1517,  -205,  2803, 31686, -1516,
-	 -205,  2799, 31689, -1515,  -204,  2795, 31690, -1513,  -204,  2792, 31692, -1512,  -204,  2788, 31695, -1511,
-	 -203,  2785, 31696, -1510,  -203,  2781, 31699, -1509,  -203,  2777, 31702, -1508,  -202,  2774, 31703, -1507,
-	 -202,  2770, 31706, -1506,  -201,  2766, 31707, -1504,  -201,  2763, 31709, -1503,  -201,  2759, 31712, -1502,
-	 -200,  2755, 31714, -1501,  -200,  2752, 31716, -1500,  -199,  2748, 31718, -1499,  -199,  2745, 31720, -1498,
-	 -199,  2741, 31722, -1496,  -198,  2737, 31724, -1495,  -198,  2734, 31726, -1494,  -197,  2730, 31728, -1493,
-	 -197,  2726, 31731, -1492,  -197,  2723, 31733, -1491,  -196,  2719, 31734, -1489,  -196,  2716, 31736, -1488,
-	 -196,  2712, 31739, -1487,  -195,  2708, 31741, -1486,  -195,  2705, 31743, -1485,  -194,  2701, 31745, -1484,
-	 -194,  2697, 31748, -1483,  -194,  2694, 31749, -1481,  -193,  2690, 31751, -1480,  -193,  2687, 31753, -1479,
-	 -192,  2683, 31755, -1478,  -192,  2679, 31758, -1477,  -192,  2676, 31760, -1476,  -191,  2672, 31761, -1474,
-	 -191,  2669, 31763, -1473,  -191,  2665, 31766, -1472,  -190,  2661, 31768, -1471,  -190,  2658, 31770, -1470,
-	 -189,  2654, 31772, -1469,  -189,  2651, 31773, -1467,  -189,  2647, 31776, -1466,  -188,  2643, 31778, -1465,
-	 -188,  2640, 31780, -1464,  -188,  2636, 31783, -1463,  -187,  2633, 31784, -1462,  -187,  2629, 31786, -1460,
-	 -186,  2626, 31787, -1459,  -186,  2622, 31790, -1458,  -186,  2618, 31793, -1457,  -185,  2615, 31794, -1456,
-	 -185,  2611, 31797, -1455,  -185,  2608, 31798, -1453,  -184,  2604, 31800, -1452,  -184,  2601, 31802, -1451,
-	 -183,  2597, 31804, -1450,  -183,  2593, 31807, -1449,  -183,  2590, 31809, -1448,  -182,  2586, 31810, -1446,
-	 -182,  2583, 31812, -1445,  -182,  2579, 31815, -1444,  -181,  2576, 31816, -1443,  -181,  2572, 31819, -1442,
-	 -180,  2568, 31820, -1440,  -180,  2565, 31822, -1439,  -180,  2561, 31825, -1438,  -179,  2558, 31826, -1437,
-	 -179,  2554, 31829, -1436,  -179,  2551, 31831, -1435,  -178,  2547, 31832, -1433,  -178,  2544, 31834, -1432,
-	 -177,  2540, 31836, -1431,  -177,  2536, 31839, -1430,  -177,  2533, 31841, -1429,  -176,  2529, 31842, -1427,
-	 -176,  2526, 31844, -1426,  -176,  2522, 31847, -1425,  -175,  2519, 31848, -1424,  -175,  2515, 31851, -1423,
-	 -175,  2512, 31852, -1421,  -174,  2508, 31854, -1420,  -174,  2505, 31856, -1419,  -173,  2501, 31858, -1418,
-	 -173,  2498, 31860, -1417,  -173,  2494, 31862, -1415,  -172,  2491, 31863, -1414,  -172,  2487, 31866, -1413,
-	 -172,  2483, 31869, -1412,  -171,  2480, 31870, -1411,  -171,  2476, 31872, -1409,  -171,  2473, 31874, -1408,
-	 -170,  2469, 31876, -1407,  -170,  2466, 31878, -1406,  -169,  2462, 31880, -1405,  -169,  2459, 31881, -1403,
-	 -169,  2455, 31884, -1402,  -168,  2452, 31885, -1401,  -168,  2448, 31888, -1400,  -168,  2445, 31890, -1399,
-	 -167,  2441, 31891, -1397,  -167,  2438, 31893, -1396,  -167,  2434, 31896, -1395,  -166,  2431, 31897, -1394,
-	 -166,  2427, 31899, -1392,  -166,  2424, 31901, -1391,  -165,  2420, 31903, -1390,  -165,  2417, 31905, -1389,
-	 -164,  2413, 31907, -1388,  -164,  2410, 31908, -1386,  -164,  2406, 31911, -1385,  -163,  2403, 31912, -1384,
-	 -163,  2399, 31915, -1383,  -163,  2396, 31916, -1381,  -162,  2392, 31918, -1380,  -162,  2389, 31920, -1379,
-	 -162,  2385, 31923, -1378,  -161,  2382, 31924, -1377,  -161,  2378, 31926, -1375,  -161,  2375, 31928, -1374,
-	 -160,  2371, 31930, -1373,  -160,  2368, 31932, -1372,  -159,  2365, 31932, -1370,  -159,  2361, 31935, -1369,
-	 -159,  2358, 31937, -1368,  -158,  2354, 31939, -1367,  -158,  2351, 31941, -1366,  -158,  2347, 31943, -1364,
-	 -157,  2344, 31944, -1363,  -157,  2340, 31947, -1362,  -157,  2337, 31949, -1361,  -156,  2333, 31950, -1359,
-	 -156,  2330, 31952, -1358,  -156,  2326, 31955, -1357,  -155,  2323, 31956, -1356,  -155,  2320, 31957, -1354,
-	 -155,  2316, 31960, -1353,  -154,  2313, 31961, -1352,  -154,  2309, 31964, -1351,  -154,  2306, 31965, -1349,
-	 -153,  2302, 31967, -1348,  -153,  2299, 31969, -1347,  -153,  2295, 31972, -1346,  -152,  2292, 31972, -1344,
-	 -152,  2289, 31974, -1343,  -151,  2285, 31976, -1342,  -151,  2282, 31978, -1341,  -151,  2278, 31980, -1339,
-	 -150,  2275, 31981, -1338,  -150,  2271, 31984, -1337,  -150,  2268, 31986, -1336,  -149,  2264, 31987, -1334,
-	 -149,  2261, 31989, -1333,  -149,  2258, 31991, -1332,  -148,  2254, 31993, -1331,  -148,  2251, 31994, -1329,
-	 -148,  2247, 31997, -1328,  -147,  2244, 31998, -1327,  -147,  2241, 32000, -1326,  -147,  2237, 32002, -1324,
-	 -146,  2234, 32003, -1323,  -146,  2230, 32006, -1322,  -146,  2227, 32008, -1321,  -145,  2223, 32009, -1319,
-	 -145,  2220, 32011, -1318,  -145,  2217, 32013, -1317,  -144,  2213, 32014, -1315,  -144,  2210, 32016, -1314,
-	 -144,  2206, 32019, -1313,  -143,  2203, 32020, -1312,  -143,  2200, 32021, -1310,  -143,  2196, 32024, -1309,
-	 -142,  2193, 32025, -1308,  -142,  2189, 32028, -1307,  -142,  2186, 32029, -1305,  -141,  2183, 32030, -1304,
-	 -141,  2179, 32033, -1303,  -141,  2176, 32034, -1301,  -140,  2172, 32036, -1300,  -140,  2169, 32038, -1299,
-	 -140,  2166, 32040, -1298,  -139,  2162, 32041, -1296,  -139,  2159, 32043, -1295,  -139,  2156, 32045, -1294,
-	 -138,  2152, 32047, -1293,  -138,  2149, 32048, -1291,  -138,  2145, 32051, -1290,  -137,  2142, 32052, -1289,
-	 -137,  2139, 32053, -1287,  -137,  2135, 32056, -1286,  -136,  2132, 32057, -1285,  -136,  2129, 32059, -1284,
-	 -136,  2125, 32061, -1282,  -135,  2122, 32062, -1281,  -135,  2118, 32065, -1280,  -135,  2115, 32066, -1278,
-	 -134,  2112, 32067, -1277,  -134,  2108, 32070, -1276,  -134,  2105, 32071, -1274,  -133,  2102, 32072, -1273,
-	 -133,  2098, 32075, -1272,  -133,  2095, 32077, -1271,  -132,  2092, 32077, -1269,  -132,  2088, 32080, -1268,
-	 -132,  2085, 32082, -1267,  -131,  2082, 32082, -1265,  -131,  2078, 32085, -1264,  -131,  2075, 32087, -1263,
-	 -131,  2072, 32089, -1262,  -130,  2068, 32090, -1260,  -130,  2065, 32092, -1259,  -130,  2061, 32095, -1258,
-	 -129,  2058, 32095, -1256,  -129,  2055, 32097, -1255,  -129,  2051, 32100, -1254,  -128,  2048, 32100, -1252,
-	 -128,  2045, 32102, -1251,  -128,  2041, 32105, -1250,  -127,  2038, 32105, -1248,  -127,  2035, 32107, -1247,
-	 -127,  2032, 32109, -1246,  -126,  2028, 32110, -1244,  -126,  2025, 32112, -1243,  -126,  2022, 32114, -1242,
-	 -125,  2018, 32116, -1241,  -125,  2015, 32117, -1239,  -125,  2012, 32119, -1238,  -124,  2008, 32121, -1237,
-	 -124,  2005, 32122, -1235,  -124,  2002, 32124, -1234,  -123,  1998, 32126, -1233,  -123,  1995, 32127, -1231,
-	 -123,  1992, 32129, -1230,  -123,  1988, 32132, -1229,  -122,  1985, 32132, -1227,  -122,  1982, 32134, -1226,
-	 -122,  1979, 32136, -1225,  -121,  1975, 32137, -1223,  -121,  1972, 32139, -1222,  -121,  1969, 32141, -1221,
-	 -120,  1965, 32142, -1219,  -120,  1962, 32144, -1218,  -120,  1959, 32146, -1217,  -119,  1955, 32147, -1215,
-	 -119,  1952, 32149, -1214,  -119,  1949, 32151, -1213,  -119,  1946, 32152, -1211,  -118,  1942, 32154, -1210,
-	 -118,  1939, 32156, -1209,  -118,  1936, 32157, -1207,  -117,  1933, 32158, -1206,  -117,  1929, 32161, -1205,
-	 -117,  1926, 32162, -1203,  -116,  1923, 32163, -1202,  -116,  1919, 32166, -1201,  -116,  1916, 32167, -1199,
-	 -115,  1913, 32168, -1198,  -115,  1910, 32170, -1197,  -115,  1906, 32172, -1195,  -115,  1903, 32174, -1194,
-	 -114,  1900, 32175, -1193,  -114,  1897, 32176, -1191,  -114,  1893, 32179, -1190,  -113,  1890, 32180, -1189,
-	 -113,  1887, 32181, -1187,  -113,  1884, 32183, -1186,  -112,  1880, 32185, -1185,  -112,  1877, 32186, -1183,
-	 -112,  1874, 32188, -1182,  -112,  1871, 32189, -1180,  -111,  1867, 32191, -1179,  -111,  1864, 32193, -1178,
-	 -111,  1861, 32194, -1176,  -110,  1858, 32195, -1175,  -110,  1854, 32198, -1174,  -110,  1851, 32199, -1172,
-	 -109,  1848, 32200, -1171,  -109,  1845, 32202, -1170,  -109,  1841, 32204, -1168,  -109,  1838, 32206, -1167,
-	 -108,  1835, 32207, -1166,  -108,  1832, 32208, -1164,  -108,  1828, 32211, -1163,  -107,  1825, 32211, -1161,
-	 -107,  1822, 32213, -1160,  -107,  1819, 32215, -1159,  -106,  1816, 32215, -1157,  -106,  1812, 32218, -1156,
-	 -106,  1809, 32220, -1155,  -106,  1806, 32221, -1153,  -105,  1803, 32222, -1152,  -105,  1799, 32224, -1150,
-	 -105,  1796, 32226, -1149,  -104,  1793, 32227, -1148,  -104,  1790, 32228, -1146,  -104,  1787, 32230, -1145,
-	 -104,  1783, 32233, -1144,  -103,  1780, 32233, -1142,  -103,  1777, 32235, -1141,  -103,  1774, 32236, -1139,
-	 -102,  1771, 32237, -1138,  -102,  1767, 32240, -1137,  -102,  1764, 32241, -1135,  -101,  1761, 32242, -1134,
-	 -101,  1758, 32244, -1133,  -101,  1755, 32245, -1131,  -101,  1751, 32248, -1130,  -100,  1748, 32248, -1128,
-	 -100,  1745, 32250, -1127,  -100,  1742, 32252, -1126,   -99,  1739, 32252, -1124,   -99,  1736, 32254, -1123,
-	  -99,  1732, 32256, -1121,   -99,  1729, 32258, -1120,   -98,  1726, 32259, -1119,   -98,  1723, 32260, -1117,
-	  -98,  1720, 32262, -1116,   -97,  1717, 32262, -1114,   -97,  1713, 32265, -1113,   -97,  1710, 32267, -1112,
-	  -97,  1707, 32268, -1110,   -96,  1704, 32269, -1109,   -96,  1701, 32270, -1107,   -96,  1698, 32272, -1106,
-	  -96,  1694, 32275, -1105,   -95,  1691, 32275, -1103,   -95,  1688, 32277, -1102,   -95,  1685, 32278, -1100,
-	  -94,  1682, 32279, -1099,   -94,  1679, 32281, -1098,   -94,  1675, 32283, -1096,   -94,  1672, 32285, -1095,
-	  -93,  1669, 32285, -1093,   -93,  1666, 32287, -1092,   -93,  1663, 32289, -1091,   -92,  1660, 32289, -1089,
-	  -92,  1657, 32291, -1088,   -92,  1653, 32293, -1086,   -92,  1650, 32295, -1085,   -91,  1647, 32296, -1084,
-	  -91,  1644, 32297, -1082,   -91,  1641, 32299, -1081,   -91,  1638, 32300, -1079,   -90,  1635, 32301, -1078,
-	  -90,  1631, 32303, -1076,   -90,  1628, 32305, -1075,   -89,  1625, 32306, -1074,   -89,  1622, 32307, -1072,
-	  -89,  1619, 32309, -1071,   -89,  1616, 32310, -1069,   -88,  1613, 32311, -1068,   -88,  1610, 32313, -1067,
-	  -88,  1607, 32314, -1065,   -88,  1603, 32317, -1064,   -87,  1600, 32317, -1062,   -87,  1597, 32319, -1061,
-	  -87,  1594, 32320, -1059,   -86,  1591, 32321, -1058,   -86,  1588, 32323, -1057,   -86,  1585, 32324, -1055,
-	  -86,  1582, 32326, -1054,   -85,  1579, 32326, -1052,   -85,  1575, 32329, -1051,   -85,  1572, 32330, -1049,
-	  -85,  1569, 32332, -1048,   -84,  1566, 32333, -1047,   -84,  1563, 32334, -1045,   -84,  1560, 32336, -1044,
-	  -84,  1557, 32337, -1042,   -83,  1554, 32338, -1041,   -83,  1551, 32339, -1039,   -83,  1548, 32341, -1038,
-	  -82,  1545, 32341, -1036,   -82,  1541, 32344, -1035,   -82,  1538, 32346, -1034,   -82,  1535, 32347, -1032,
-	  -81,  1532, 32348, -1031,   -81,  1529, 32349, -1029,   -81,  1526, 32351, -1028,   -81,  1523, 32352, -1026,
-	  -80,  1520, 32353, -1025,   -80,  1517, 32354, -1023,   -80,  1514, 32356, -1022,   -80,  1511, 32358, -1021,
-	  -79,  1508, 32358, -1019,   -79,  1505, 32360, -1018,   -79,  1502, 32361, -1016,   -79,  1499, 32363, -1015,
-	  -78,  1495, 32364, -1013,   -78,  1492, 32366, -1012,   -78,  1489, 32367, -1010,   -78,  1486, 32369, -1009,
-	  -77,  1483, 32369, -1007,   -77,  1480, 32371, -1006,   -77,  1477, 32372, -1004,   -77,  1474, 32374, -1003,
-	  -76,  1471, 32375, -1002,   -76,  1468, 32376, -1000,   -76,  1465, 32378,  -999,   -76,  1462, 32379,  -997,
-	  -75,  1459, 32380,  -996,   -75,  1456, 32381,  -994,   -75,  1453, 32383,  -993,   -75,  1450, 32384,  -991,
-	  -74,  1447, 32385,  -990,   -74,  1444, 32386,  -988,   -74,  1441, 32388,  -987,   -74,  1438, 32389,  -985,
-	  -73,  1435, 32390,  -984,   -73,  1432, 32391,  -982,   -73,  1429, 32393,  -981,   -73,  1426, 32395,  -980,
-	  -72,  1423, 32395,  -978,   -72,  1420, 32397,  -977,   -72,  1417, 32398,  -975,   -72,  1414, 32400,  -974,
-	  -71,  1411, 32400,  -972,   -71,  1408, 32402,  -971,   -71,  1405, 32403,  -969,   -71,  1402, 32405,  -968,
-	  -70,  1399, 32405,  -966,   -70,  1396, 32407,  -965,   -70,  1393, 32408,  -963,   -70,  1390, 32410,  -962,
-	  -69,  1387, 32410,  -960,   -69,  1384, 32412,  -959,   -69,  1381, 32413,  -957,   -69,  1378, 32415,  -956,
-	  -68,  1375, 32415,  -954,   -68,  1372, 32417,  -953,   -68,  1369, 32418,  -951,   -68,  1366, 32420,  -950,
-	  -67,  1363, 32420,  -948,   -67,  1360, 32422,  -947,   -67,  1357, 32423,  -945,   -67,  1354, 32425,  -944,
-	  -66,  1351, 32425,  -942,   -66,  1348, 32427,  -941,   -66,  1345, 32428,  -939,   -66,  1342, 32430,  -938,
-	  -66,  1339, 32431,  -936,   -65,  1336, 32432,  -935,   -65,  1333, 32433,  -933,   -65,  1330, 32435,  -932,
-	  -65,  1327, 32436,  -930,   -64,  1324, 32437,  -929,   -64,  1321, 32438,  -927,   -64,  1318, 32440,  -926,
-	  -64,  1315, 32441,  -924,   -63,  1312, 32442,  -923,   -63,  1309, 32443,  -921,   -63,  1306, 32445,  -920,
-	  -63,  1303, 32446,  -918,   -63,  1300, 32448,  -917,   -62,  1297, 32448,  -915,   -62,  1294, 32450,  -914,
-	  -62,  1291, 32451,  -912,   -62,  1289, 32452,  -911,   -61,  1286, 32452,  -909,   -61,  1283, 32454,  -908,
-	  -61,  1280, 32455,  -906,   -61,  1277, 32457,  -905,   -60,  1274, 32457,  -903,   -60,  1271, 32459,  -902,
-	  -60,  1268, 32460,  -900,   -60,  1265, 32461,  -898,   -60,  1262, 32463,  -897,   -59,  1259, 32463,  -895,
-	  -59,  1256, 32465,  -894,   -59,  1253, 32466,  -892,   -59,  1250, 32468,  -891,   -58,  1248, 32467,  -889,
-	  -58,  1245, 32469,  -888,   -58,  1242, 32470,  -886,   -58,  1239, 32472,  -885,   -58,  1236, 32473,  -883,
-	  -57,  1233, 32474,  -882,   -57,  1230, 32475,  -880,   -57,  1227, 32477,  -879,   -57,  1224, 32478,  -877,
-	  -56,  1221, 32479,  -876,   -56,  1218, 32480,  -874,   -56,  1216, 32480,  -872,   -56,  1213, 32482,  -871,
-	  -56,  1210, 32483,  -869,   -55,  1207, 32484,  -868,   -55,  1204, 32485,  -866,   -55,  1201, 32487,  -865,
-	  -55,  1198, 32488,  -863,   -54,  1195, 32489,  -862,   -54,  1192, 32490,  -860,   -54,  1190, 32491,  -859,
-	  -54,  1187, 32492,  -857,   -54,  1184, 32493,  -855,   -53,  1181, 32494,  -854,   -53,  1178, 32495,  -852,
-	  -53,  1175, 32497,  -851,   -53,  1172, 32498,  -849,   -53,  1169, 32500,  -848,   -52,  1166, 32500,  -846,
-	  -52,  1164, 32501,  -845,   -52,  1161, 32502,  -843,   -52,  1158, 32503,  -841,   -51,  1155, 32504,  -840,
-	  -51,  1152, 32505,  -838,   -51,  1149, 32507,  -837,   -51,  1146, 32508,  -835,   -51,  1144, 32509,  -834,
-	  -50,  1141, 32509,  -832,   -50,  1138, 32511,  -831,   -50,  1135, 32512,  -829,   -50,  1132, 32513,  -827,
-	  -50,  1129, 32515,  -826,   -49,  1126, 32515,  -824,   -49,  1124, 32516,  -823,   -49,  1121, 32517,  -821,
-	  -49,  1118, 32519,  -820,   -49,  1115, 32520,  -818,   -48,  1112, 32520,  -816,   -48,  1109, 32522,  -815,
-	  -48,  1107, 32522,  -813,   -48,  1104, 32524,  -812,   -48,  1101, 32525,  -810,   -47,  1098, 32526,  -809,
-	  -47,  1095, 32527,  -807,   -47,  1092, 32528,  -805,   -47,  1090, 32529,  -804,   -47,  1087, 32530,  -802,
-	  -46,  1084, 32531,  -801,   -46,  1081, 32532,  -799,   -46,  1078, 32534,  -798,   -46,  1076, 32534,  -796,
-	  -46,  1073, 32535,  -794,   -45,  1070, 32536,  -793,   -45,  1067, 32537,  -791,   -45,  1064, 32539,  -790,
-	  -45,  1061, 32540,  -788,   -45,  1059, 32540,  -786,   -44,  1056, 32541,  -785,   -44,  1053, 32542,  -783,
-	  -44,  1050, 32544,  -782,   -44,  1047, 32545,  -780,   -44,  1045, 32545,  -778,   -43,  1042, 32546,  -777,
-	  -43,  1039, 32547,  -775,   -43,  1036, 32549,  -774,   -43,  1033, 32550,  -772,   -43,  1031, 32550,  -770,
-	  -42,  1028, 32551,  -769,   -42,  1025, 32552,  -767,   -42,  1022, 32554,  -766,   -42,  1020, 32554,  -764,
-	  -42,  1017, 32555,  -762,   -41,  1014, 32556,  -761,   -41,  1011, 32557,  -759,   -41,  1008, 32559,  -758,
-	  -41,  1006, 32559,  -756,   -41,  1003, 32560,  -754,   -40,  1000, 32561,  -753,   -40,   997, 32562,  -751,
-	  -40,   995, 32563,  -750,   -40,   992, 32564,  -748,   -40,   989, 32565,  -746,   -40,   986, 32567,  -745,
-	  -39,   984, 32566,  -743,   -39,   981, 32568,  -742,   -39,   978, 32569,  -740,   -39,   975, 32570,  -738,
-	  -39,   972, 32572,  -737,   -38,   970, 32571,  -735,   -38,   967, 32573,  -734,   -38,   964, 32574,  -732,
-	  -38,   961, 32575,  -730,   -38,   959, 32576,  -729,   -38,   956, 32577,  -727,   -37,   953, 32577,  -725,
-	  -37,   951, 32578,  -724,   -37,   948, 32579,  -722,   -37,   945, 32581,  -721,   -37,   942, 32582,  -719,
-	  -36,   940, 32581,  -717,   -36,   937, 32583,  -716,   -36,   934, 32584,  -714,   -36,   931, 32585,  -712,
-	  -36,   929, 32586,  -711,   -36,   926, 32587,  -709,   -35,   923, 32588,  -708,   -35,   921, 32588,  -706,
-	  -35,   918, 32589,  -704,   -35,   915, 32591,  -703,   -35,   912, 32592,  -701,   -34,   910, 32591,  -699,
-	  -34,   907, 32593,  -698,   -34,   904, 32594,  -696,   -34,   902, 32594,  -694,   -34,   899, 32596,  -693,
-	  -34,   896, 32597,  -691,   -33,   893, 32597,  -689,   -33,   891, 32598,  -688,   -33,   888, 32599,  -686,
-	  -33,   885, 32601,  -685,   -33,   883, 32601,  -683,   -33,   880, 32602,  -681,   -32,   877, 32603,  -680,
-	  -32,   875, 32603,  -678,   -32,   872, 32604,  -676,   -32,   869, 32606,  -675,   -32,   866, 32607,  -673,
-	  -32,   864, 32607,  -671,   -31,   861, 32608,  -670,   -31,   858, 32609,  -668,   -31,   856, 32609,  -666,
-	  -31,   853, 32611,  -665,   -31,   850, 32612,  -663,   -31,   848, 32612,  -661,   -30,   845, 32613,  -660,
-	  -30,   842, 32614,  -658,   -30,   840, 32614,  -656,   -30,   837, 32616,  -655,   -30,   834, 32617,  -653,
-	  -30,   832, 32617,  -651,   -29,   829, 32618,  -650,   -29,   826, 32619,  -648,   -29,   824, 32619,  -646,
-	  -29,   821, 32621,  -645,   -29,   818, 32622,  -643,   -29,   816, 32622,  -641,   -28,   813, 32623,  -640,
-	  -28,   810, 32624,  -638,   -28,   808, 32624,  -636,   -28,   805, 32626,  -635,   -28,   803, 32626,  -633,
-	  -28,   800, 32627,  -631,   -28,   797, 32629,  -630,   -27,   795, 32628,  -628,   -27,   792, 32629,  -626,
-	  -27,   789, 32631,  -625,   -27,   787, 32631,  -623,   -27,   784, 32632,  -621,   -27,   781, 32634,  -620,
-	  -26,   779, 32633,  -618,   -26,   776, 32634,  -616,   -26,   774, 32635,  -615,   -26,   771, 32636,  -613,
-	  -26,   768, 32637,  -611,   -26,   766, 32638,  -610,   -26,   763, 32639,  -608,   -25,   761, 32638,  -606,
-	  -25,   758, 32640,  -605,   -25,   755, 32641,  -603,   -25,   753, 32641,  -601,   -25,   750, 32642,  -599,
-	  -25,   747, 32644,  -598,   -24,   745, 32643,  -596,   -24,   742, 32644,  -594,   -24,   740, 32645,  -593,
-	  -24,   737, 32646,  -591,   -24,   734, 32647,  -589,   -24,   732, 32648,  -588,   -24,   729, 32649,  -586,
-	  -23,   727, 32648,  -584,   -23,   724, 32649,  -582,   -23,   722, 32650,  -581,   -23,   719, 32651,  -579,
-	  -23,   716, 32652,  -577,   -23,   714, 32653,  -576,   -23,   711, 32654,  -574,   -22,   709, 32653,  -572,
-	  -22,   706, 32655,  -571,   -22,   703, 32656,  -569,   -22,   701, 32656,  -567,   -22,   698, 32657,  -565,
-	  -22,   696, 32658,  -564,   -22,   693, 32659,  -562,   -21,   691, 32658,  -560,   -21,   688, 32660,  -559,
-	  -21,   685, 32661,  -557,   -21,   683, 32661,  -555,   -21,   680, 32662,  -553,   -21,   678, 32663,  -552,
-	  -21,   675, 32664,  -550,   -20,   673, 32663,  -548,   -20,   670, 32665,  -547,   -20,   668, 32665,  -545,
-	  -20,   665, 32666,  -543,   -20,   662, 32667,  -541,   -20,   660, 32668,  -540,   -20,   657, 32669,  -538,
-	  -20,   655, 32669,  -536,   -19,   652, 32669,  -534,   -19,   650, 32670,  -533,   -19,   647, 32671,  -531,
-	  -19,   645, 32671,  -529,   -19,   642, 32673,  -528,   -19,   640, 32673,  -526,   -19,   637, 32674,  -524,
-	  -18,   635, 32673,  -522,   -18,   632, 32675,  -521,   -18,   630, 32675,  -519,   -18,   627, 32676,  -517,
-	  -18,   625, 32676,  -515,   -18,   622, 32678,  -514,   -18,   619, 32679,  -512,   -18,   617, 32679,  -510,
-	  -17,   614, 32679,  -508,   -17,   612, 32680,  -507,   -17,   609, 32681,  -505,   -17,   607, 32681,  -503,
-	  -17,   604, 32683,  -502,   -17,   602, 32683,  -500,   -17,   599, 32684,  -498,   -17,   597, 32684,  -496,
-	  -16,   594, 32685,  -495,   -16,   592, 32685,  -493,   -16,   589, 32686,  -491,   -16,   587, 32686,  -489,
-	  -16,   584, 32688,  -488,   -16,   582, 32688,  -486,   -16,   579, 32689,  -484,   -16,   577, 32689,  -482,
-	  -16,   575, 32690,  -481,   -15,   572, 32690,  -479,   -15,   570, 32690,  -477,   -15,   567, 32691,  -475,
-	  -15,   565, 32691,  -473,   -15,   562, 32693,  -472,   -15,   560, 32693,  -470,   -15,   557, 32694,  -468,
-	  -15,   555, 32694,  -466,   -14,   552, 32695,  -465,   -14,   550, 32695,  -463,   -14,   547, 32696,  -461,
-	  -14,   545, 32696,  -459,   -14,   542, 32698,  -458,   -14,   540, 32698,  -456,   -14,   537, 32699,  -454,
-	  -14,   535, 32699,  -452,   -14,   533, 32700,  -451,   -13,   530, 32700,  -449,   -13,   528, 32700,  -447,
-	  -13,   525, 32701,  -445,   -13,   523, 32701,  -443,   -13,   520, 32703,  -442,   -13,   518, 32703,  -440,
-	  -13,   515, 32704,  -438,   -13,   513, 32704,  -436,   -13,   511, 32705,  -435,   -12,   508, 32705,  -433,
-	  -12,   506, 32705,  -431,   -12,   503, 32706,  -429,   -12,   501, 32706,  -427,   -12,   498, 32708,  -426,
-	  -12,   496, 32708,  -424,   -12,   494, 32708,  -422,   -12,   491, 32709,  -420,   -12,   489, 32709,  -418,
-	  -11,   486, 32710,  -417,   -11,   484, 32710,  -415,   -11,   481, 32711,  -413,   -11,   479, 32711,  -411,
-	  -11,   477, 32712,  -410,   -11,   474, 32713,  -408,   -11,   472, 32713,  -406,   -11,   469, 32714,  -404,
-	  -11,   467, 32714,  -402,   -11,   465, 32715,  -401,   -10,   462, 32715,  -399,   -10,   460, 32715,  -397,
-	  -10,   457, 32716,  -395,   -10,   455, 32716,  -393,   -10,   453, 32717,  -392,   -10,   450, 32718,  -390,
-	  -10,   448, 32718,  -388,   -10,   445, 32719,  -386,   -10,   443, 32719,  -384,   -10,   441, 32720,  -383,
-	  -10,   438, 32721,  -381,    -9,   436, 32720,  -379,    -9,   434, 32720,  -377,    -9,   431, 32721,  -375,
-	   -9,   429, 32721,  -373,    -9,   426, 32723,  -372,    -9,   424, 32723,  -370,    -9,   422, 32723,  -368,
-	   -9,   419, 32724,  -366,    -9,   417, 32724,  -364,    -9,   415, 32725,  -363,    -9,   412, 32726,  -361,
-	   -8,   410, 32725,  -359,    -8,   408, 32725,  -357,    -8,   405, 32726,  -355,    -8,   403, 32726,  -353,
-	   -8,   401, 32727,  -352,    -8,   398, 32728,  -350,    -8,   396, 32728,  -348,    -8,   393, 32729,  -346,
-	   -8,   391, 32729,  -344,    -8,   389, 32730,  -343,    -8,   386, 32731,  -341,    -7,   384, 32730,  -339,
-	   -7,   382, 32730,  -337,    -7,   379, 32731,  -335,    -7,   377, 32731,  -333,    -7,   375, 32732,  -332,
-	   -7,   372, 32733,  -330,    -7,   370, 32733,  -328,    -7,   368, 32733,  -326,    -7,   365, 32734,  -324,
-	   -7,   363, 32734,  -322,    -7,   361, 32735,  -321,    -7,   359, 32735,  -319,    -7,   356, 32736,  -317,
-	   -6,   354, 32735,  -315,    -6,   352, 32735,  -313,    -6,   349, 32736,  -311,    -6,   347, 32736,  -309,
-	   -6,   345, 32737,  -308,    -6,   342, 32738,  -306,    -6,   340, 32738,  -304,    -6,   338, 32738,  -302,
-	   -6,   335, 32739,  -300,    -6,   333, 32739,  -298,    -6,   331, 32740,  -297,    -6,   329, 32740,  -295,
-	   -6,   326, 32741,  -293,    -5,   324, 32740,  -291,    -5,   322, 32740,  -289,    -5,   319, 32741,  -287,
-	   -5,   317, 32741,  -285,    -5,   315, 32742,  -284,    -5,   313, 32742,  -282,    -5,   310, 32743,  -280,
-	   -5,   308, 32743,  -278,    -5,   306, 32743,  -276,    -5,   303, 32744,  -274,    -5,   301, 32744,  -272,
-	   -5,   299, 32745,  -271,    -5,   297, 32745,  -269,    -5,   294, 32746,  -267,    -5,   292, 32746,  -265,
-	   -4,   290, 32745,  -263,    -4,   288, 32745,  -261,    -4,   285, 32746,  -259,    -4,   283, 32746,  -257,
-	   -4,   281, 32747,  -256,    -4,   279, 32747,  -254,    -4,   276, 32748,  -252,    -4,   274, 32748,  -250,
-	   -4,   272, 32748,  -248,    -4,   270, 32748,  -246,    -4,   267, 32749,  -244,    -4,   265, 32749,  -242,
-	   -4,   263, 32750,  -241,    -4,   261, 32750,  -239,    -4,   258, 32751,  -237,    -4,   256, 32751,  -235,
-	   -3,   254, 32750,  -233,    -3,   252, 32750,  -231,    -3,   249, 32751,  -229,    -3,   247, 32751,  -227,
-	   -3,   245, 32751,  -225,    -3,   243, 32752,  -224,    -3,   241, 32752,  -222,    -3,   238, 32753,  -220,
-	   -3,   236, 32753,  -218,    -3,   234, 32753,  -216,    -3,   232, 32753,  -214,    -3,   229, 32754,  -212,
-	   -3,   227, 32754,  -210,    -3,   225, 32754,  -208,    -3,   223, 32755,  -207,    -3,   221, 32755,  -205,
-	   -3,   218, 32756,  -203,    -3,   216, 32756,  -201,    -3,   214, 32756,  -199,    -2,   212, 32755,  -197,
-	   -2,   210, 32755,  -195,    -2,   207, 32756,  -193,    -2,   205, 32756,  -191,    -2,   203, 32756,  -189,
-	   -2,   201, 32757,  -188,    -2,   199, 32757,  -186,    -2,   197, 32757,  -184,    -2,   194, 32758,  -182,
-	   -2,   192, 32758,  -180,    -2,   190, 32758,  -178,    -2,   188, 32758,  -176,    -2,   186, 32758,  -174,
-	   -2,   184, 32758,  -172,    -2,   181, 32759,  -170,    -2,   179, 32759,  -168,    -2,   177, 32759,  -166,
-	   -2,   175, 32760,  -165,    -2,   173, 32760,  -163,    -2,   171, 32760,  -161,    -2,   168, 32761,  -159,
-	   -2,   166, 32761,  -157,    -2,   164, 32761,  -155,    -1,   162, 32760,  -153,    -1,   160, 32760,  -151,
-	   -1,   158, 32760,  -149,    -1,   155, 32761,  -147,    -1,   153, 32761,  -145,    -1,   151, 32761,  -143,
-	   -1,   149, 32761,  -141,    -1,   147, 32762,  -140,    -1,   145, 32762,  -138,    -1,   143, 32762,  -136,
-	   -1,   140, 32763,  -134,    -1,   138, 32763,  -132,    -1,   136, 32763,  -130,    -1,   134, 32763,  -128,
-	   -1,   132, 32763,  -126,    -1,   130, 32763,  -124,    -1,   128, 32763,  -122,    -1,   126, 32763,  -120,
-	   -1,   123, 32764,  -118,    -1,   121, 32764,  -116,    -1,   119, 32764,  -114,    -1,   117, 32764,  -112,
-	   -1,   115, 32764,  -110,    -1,   113, 32765,  -109,    -1,   111, 32765,  -107,    -1,   109, 32765,  -105,
-	   -1,   107, 32765,  -103,    -1,   105, 32765,  -101,    -1,   102, 32766,   -99,    -1,   100, 32766,   -97,
-	   -1,    98, 32766,   -95,    -1,    96, 32766,   -93,    -1,    94, 32766,   -91,     0,    92, 32765,   -89,
-	    0,    90, 32765,   -87,     0,    88, 32765,   -85,     0,    86, 32765,   -83,     0,    84, 32765,   -81,
-	    0,    82, 32765,   -79,     0,    79, 32766,   -77,     0,    77, 32766,   -75,     0,    75, 32766,   -73,
-	    0,    73, 32766,   -71,     0,    71, 32766,   -69,     0,    69, 32766,   -67,     0,    67, 32766,   -65,
-	    0,    65, 32767,   -64,     0,    63, 32767,   -62,     0,    61, 32767,   -60,     0,    59, 32767,   -58,
-	    0,    57, 32767,   -56,     0,    55, 32767,   -54,     0,    53, 32767,   -52,     0,    51, 32767,   -50,
-	    0,    49, 32767,   -48,     0,    47, 32767,   -46,     0,    44, 32767,   -44,     0,    42, 32767,   -42,
-	    0,    40, 32767,   -40,     0,    38, 32767,   -38,     0,    36, 32767,   -36,     0,    34, 32767,   -34,
-	    0,    32, 32767,   -32,     0,    30, 32767,   -30,     0,    28, 32767,   -28,     0,    26, 32767,   -26,
-	    0,    24, 32767,   -24,     0,    22, 32767,   -22,     0,    20, 32767,   -20,     0,    18, 32767,   -18,
-	    0,    16, 32767,   -16,     0,    14, 32767,   -14,     0,    12, 32767,   -12,     0,    10, 32767,   -10,
-	    0,     8, 32767,    -8,     0,     6, 32767,    -6,     0,     4, 32767,    -4,     0,     2, 32767,    -2
-};
-
-#else
-
-// for non-x86_64 CPUs: 15-bit precision, 1024 phases
-
-const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES] =
-{
-	    0, 32767,     0,     0,   -16, 32767,    16,     0,   -32, 32767,    32,     0,   -48, 32767,    49,     0,
-	  -64, 32767,    65,     0,   -79, 32765,    82,     0,   -95, 32766,    98,    -1,  -110, 32764,   115,    -1,
-	 -126, 32763,   132,    -1,  -141, 32761,   149,    -1,  -157, 32761,   166,    -2,  -172, 32758,   184,    -2,
-	 -188, 32757,   201,    -2,  -203, 32756,   218,    -3,  -218, 32753,   236,    -3,  -233, 32750,   254,    -3,
-	 -248, 32748,   272,    -4,  -263, 32745,   290,    -4,  -278, 32743,   308,    -5,  -293, 32741,   326,    -6,
-	 -308, 32737,   345,    -6,  -322, 32734,   363,    -7,  -337, 32730,   382,    -7,  -352, 32727,   401,    -8,
-	 -366, 32724,   419,    -9,  -381, 32721,   438,   -10,  -395, 32716,   457,   -10,  -410, 32712,   477,   -11,
-	 -424, 32708,   496,   -12,  -438, 32704,   515,   -13,  -452, 32699,   535,   -14,  -466, 32694,   555,   -15,
-	 -481, 32690,   575,   -16,  -495, 32685,   594,   -16,  -508, 32679,   614,   -17,  -522, 32673,   635,   -18,
-	 -536, 32669,   655,   -20,  -550, 32664,   675,   -21,  -564, 32658,   696,   -22,  -577, 32652,   716,   -23,
-	 -591, 32646,   737,   -24,  -605, 32640,   758,   -25,  -618, 32633,   779,   -26,  -631, 32627,   800,   -28,
-	 -645, 32621,   821,   -29,  -658, 32614,   842,   -30,  -671, 32607,   864,   -32,  -685, 32601,   885,   -33,
-	 -698, 32593,   907,   -34,  -711, 32586,   929,   -36,  -724, 32578,   951,   -37,  -737, 32572,   972,   -39,
-	 -750, 32563,   995,   -40,  -762, 32555,  1017,   -42,  -775, 32547,  1039,   -43,  -788, 32540,  1061,   -45,
-	 -801, 32531,  1084,   -46,  -813, 32522,  1107,   -48,  -826, 32515,  1129,   -50,  -838, 32505,  1152,   -51,
-	 -851, 32497,  1175,   -53,  -863, 32488,  1198,   -55,  -876, 32479,  1221,   -56,  -888, 32469,  1245,   -58,
-	 -900, 32460,  1268,   -60,  -912, 32451,  1291,   -62,  -924, 32441,  1315,   -64,  -936, 32431,  1339,   -66,
-	 -948, 32420,  1363,   -67,  -960, 32410,  1387,   -69,  -972, 32400,  1411,   -71,  -984, 32390,  1435,   -73,
-	 -996, 32380,  1459,   -75, -1007, 32369,  1483,   -77, -1019, 32358,  1508,   -79, -1031, 32348,  1532,   -81,
-	-1042, 32337,  1557,   -84, -1054, 32326,  1582,   -86, -1065, 32314,  1607,   -88, -1076, 32303,  1631,   -90,
-	-1088, 32291,  1657,   -92, -1099, 32279,  1682,   -94, -1110, 32268,  1707,   -97, -1121, 32256,  1732,   -99,
-	-1133, 32244,  1758,  -101, -1144, 32233,  1783,  -104, -1155, 32220,  1809,  -106, -1166, 32207,  1835,  -108,
-	-1176, 32194,  1861,  -111, -1187, 32181,  1887,  -113, -1198, 32168,  1913,  -115, -1209, 32156,  1939,  -118,
-	-1219, 32142,  1965,  -120, -1230, 32129,  1992,  -123, -1241, 32116,  2018,  -125, -1251, 32102,  2045,  -128,
-	-1262, 32089,  2072,  -131, -1272, 32075,  2098,  -133, -1282, 32061,  2125,  -136, -1293, 32047,  2152,  -138,
-	-1303, 32033,  2179,  -141, -1313, 32019,  2206,  -144, -1323, 32003,  2234,  -146, -1333, 31989,  2261,  -149,
-	-1343, 31974,  2289,  -152, -1353, 31960,  2316,  -155, -1363, 31944,  2344,  -157, -1373, 31930,  2371,  -160,
-	-1383, 31915,  2399,  -163, -1392, 31899,  2427,  -166, -1402, 31884,  2455,  -169, -1412, 31869,  2483,  -172,
-	-1421, 31852,  2512,  -175, -1431, 31836,  2540,  -177, -1440, 31820,  2568,  -180, -1450, 31804,  2597,  -183,
-	-1459, 31787,  2626,  -186, -1469, 31772,  2654,  -189, -1478, 31755,  2683,  -192, -1487, 31739,  2712,  -196,
-	-1496, 31722,  2741,  -199, -1506, 31706,  2770,  -202, -1515, 31689,  2799,  -205, -1524, 31672,  2828,  -208,
-	-1533, 31654,  2858,  -211, -1542, 31637,  2887,  -214, -1550, 31619,  2917,  -218, -1559, 31602,  2946,  -221,
-	-1568, 31584,  2976,  -224, -1577, 31566,  3006,  -227, -1585, 31548,  3036,  -231, -1594, 31530,  3066,  -234,
-	-1603, 31512,  3096,  -237, -1611, 31493,  3126,  -240, -1620, 31476,  3156,  -244, -1628, 31457,  3186,  -247,
-	-1636, 31438,  3217,  -251, -1645, 31420,  3247,  -254, -1653, 31400,  3278,  -257, -1661, 31381,  3309,  -261,
-	-1669, 31362,  3339,  -264, -1677, 31343,  3370,  -268, -1686, 31324,  3401,  -271, -1694, 31305,  3432,  -275,
-	-1702, 31285,  3463,  -278, -1709, 31264,  3495,  -282, -1717, 31245,  3526,  -286, -1725, 31225,  3557,  -289,
-	-1733, 31205,  3589,  -293, -1741, 31185,  3620,  -296, -1748, 31164,  3652,  -300, -1756, 31145,  3683,  -304,
-	-1764, 31124,  3715,  -307, -1771, 31103,  3747,  -311, -1779, 31083,  3779,  -315, -1786, 31062,  3811,  -319,
-	-1793, 31040,  3843,  -322, -1801, 31020,  3875,  -326, -1808, 30998,  3908,  -330, -1815, 30977,  3940,  -334,
-	-1823, 30956,  3973,  -338, -1830, 30934,  4005,  -341, -1837, 30912,  4038,  -345, -1844, 30891,  4070,  -349,
-	-1851, 30869,  4103,  -353, -1858, 30847,  4136,  -357, -1865, 30825,  4169,  -361, -1872, 30803,  4202,  -365,
-	-1878, 30780,  4235,  -369, -1885, 30758,  4268,  -373, -1892, 30736,  4301,  -377, -1899, 30713,  4335,  -381,
-	-1905, 30690,  4368,  -385, -1912, 30667,  4402,  -389, -1918, 30644,  4435,  -393, -1925, 30621,  4469,  -397,
-	-1931, 30598,  4502,  -401, -1938, 30575,  4536,  -405, -1944, 30551,  4570,  -409, -1950, 30527,  4604,  -413,
-	-1956, 30503,  4638,  -417, -1963, 30480,  4672,  -421, -1969, 30457,  4706,  -426, -1975, 30432,  4741,  -430,
-	-1981, 30408,  4775,  -434, -1987, 30384,  4809,  -438, -1993, 30359,  4844,  -442, -1999, 30336,  4878,  -447,
-	-2005, 30311,  4913,  -451, -2011, 30286,  4948,  -455, -2017, 30262,  4982,  -459, -2022, 30237,  5017,  -464,
-	-2028, 30212,  5052,  -468, -2034, 30187,  5087,  -472, -2039, 30162,  5122,  -477, -2045, 30137,  5157,  -481,
-	-2050, 30111,  5192,  -485, -2056, 30086,  5228,  -490, -2061, 30060,  5263,  -494, -2067, 30036,  5298,  -499,
-	-2072, 30009,  5334,  -503, -2077, 29983,  5369,  -507, -2083, 29958,  5405,  -512, -2088, 29931,  5441,  -516,
-	-2093, 29906,  5476,  -521, -2098, 29879,  5512,  -525, -2103, 29853,  5548,  -530, -2108, 29826,  5584,  -534,
-	-2113, 29800,  5620,  -539, -2118, 29773,  5656,  -543, -2123, 29747,  5692,  -548, -2128, 29719,  5729,  -552,
-	-2133, 29693,  5765,  -557, -2138, 29666,  5801,  -561, -2142, 29638,  5838,  -566, -2147, 29612,  5874,  -571,
-	-2152, 29584,  5911,  -575, -2156, 29557,  5947,  -580, -2161, 29529,  5984,  -584, -2165, 29501,  6021,  -589,
-	-2170, 29474,  6058,  -594, -2174, 29446,  6094,  -598, -2179, 29419,  6131,  -603, -2183, 29391,  6168,  -608,
-	-2188, 29363,  6206,  -613, -2192, 29334,  6243,  -617, -2196, 29306,  6280,  -622, -2200, 29278,  6317,  -627,
-	-2204, 29249,  6354,  -631, -2208, 29220,  6392,  -636, -2213, 29193,  6429,  -641, -2217, 29164,  6467,  -646,
-	-2221, 29135,  6504,  -650, -2224, 29105,  6542,  -655, -2228, 29076,  6580,  -660, -2232, 29048,  6617,  -665,
-	-2236, 29019,  6655,  -670, -2240, 28990,  6693,  -675, -2244, 28960,  6731,  -679, -2247, 28930,  6769,  -684,
-	-2251, 28901,  6807,  -689, -2255, 28872,  6845,  -694, -2258, 28842,  6883,  -699, -2262, 28812,  6922,  -704,
-	-2265, 28782,  6960,  -709, -2269, 28752,  6998,  -713, -2272, 28721,  7037,  -718, -2275, 28691,  7075,  -723,
-	-2279, 28661,  7114,  -728, -2282, 28631,  7152,  -733, -2285, 28600,  7191,  -738, -2289, 28570,  7230,  -743,
-	-2292, 28540,  7268,  -748, -2295, 28509,  7307,  -753, -2298, 28478,  7346,  -758, -2301, 28447,  7385,  -763,
-	-2304, 28416,  7424,  -768, -2307, 28385,  7463,  -773, -2310, 28354,  7502,  -778, -2313, 28323,  7541,  -783,
-	-2316, 28292,  7580,  -788, -2319, 28260,  7620,  -793, -2321, 28228,  7659,  -798, -2324, 28197,  7698,  -803,
-	-2327, 28165,  7738,  -808, -2329, 28133,  7777,  -813, -2332, 28101,  7817,  -818, -2335, 28070,  7856,  -823,
-	-2337, 28038,  7896,  -829, -2340, 28006,  7936,  -834, -2342, 27974,  7975,  -839, -2345, 27942,  8015,  -844,
-	-2347, 27909,  8055,  -849, -2349, 27876,  8095,  -854, -2352, 27844,  8135,  -859, -2354, 27811,  8175,  -864,
-	-2356, 27778,  8215,  -869, -2359, 27747,  8255,  -875, -2361, 27714,  8295,  -880, -2363, 27681,  8335,  -885,
-	-2365, 27648,  8375,  -890, -2367, 27615,  8415,  -895, -2369, 27581,  8456,  -900, -2371, 27549,  8496,  -906,
-	-2373, 27516,  8536,  -911, -2375, 27482,  8577,  -916, -2377, 27449,  8617,  -921, -2379, 27415,  8658,  -926,
-	-2381, 27382,  8699,  -932, -2382, 27348,  8739,  -937, -2384, 27314,  8780,  -942, -2386, 27280,  8821,  -947,
-	-2387, 27246,  8861,  -952, -2389, 27213,  8902,  -958, -2391, 27179,  8943,  -963, -2392, 27144,  8984,  -968,
-	-2394, 27110,  9025,  -973, -2395, 27076,  9066,  -979, -2397, 27042,  9107,  -984, -2398, 27007,  9148,  -989,
-	-2399, 26972,  9189,  -994, -2401, 26939,  9230, -1000, -2402, 26904,  9271, -1005, -2403, 26868,  9313, -1010,
-	-2405, 26834,  9354, -1015, -2406, 26800,  9395, -1021, -2407, 26764,  9437, -1026, -2408, 26729,  9478, -1031,
-	-2409, 26693,  9520, -1036, -2410, 26659,  9561, -1042, -2411, 26623,  9603, -1047, -2412, 26588,  9644, -1052,
-	-2413, 26553,  9686, -1058, -2414, 26518,  9727, -1063, -2415, 26482,  9769, -1068, -2416, 26446,  9811, -1073,
-	-2417, 26411,  9853, -1079, -2418, 26376,  9894, -1084, -2419, 26340,  9936, -1089, -2419, 26304,  9978, -1095,
-	-2420, 26268, 10020, -1100, -2421, 26232, 10062, -1105, -2421, 26196, 10104, -1111, -2422, 26160, 10146, -1116,
-	-2422, 26123, 10188, -1121, -2423, 26088, 10230, -1127, -2424, 26052, 10272, -1132, -2424, 26015, 10314, -1137,
-	-2424, 25978, 10357, -1143, -2425, 25942, 10399, -1148, -2425, 25905, 10441, -1153, -2426, 25870, 10483, -1159,
-	-2426, 25832, 10526, -1164, -2426, 25795, 10568, -1169, -2426, 25758, 10611, -1175, -2427, 25722, 10653, -1180,
-	-2427, 25684, 10696, -1185, -2427, 25648, 10738, -1191, -2427, 25610, 10781, -1196, -2427, 25573, 10823, -1201,
-	-2427, 25536, 10866, -1207, -2427, 25499, 10908, -1212, -2427, 25461, 10951, -1217, -2427, 25424, 10994, -1223,
-	-2427, 25386, 11037, -1228, -2427, 25349, 11079, -1233, -2427, 25312, 11122, -1239, -2427, 25274, 11165, -1244,
-	-2427, 25236, 11208, -1249, -2426, 25198, 11251, -1255, -2426, 25160, 11294, -1260, -2426, 25122, 11337, -1265,
-	-2426, 25085, 11380, -1271, -2425, 25047, 11422, -1276, -2425, 25008, 11466, -1281, -2424, 24969, 11509, -1286,
-	-2424, 24932, 11552, -1292, -2423, 24893, 11595, -1297, -2423, 24855, 11638, -1302, -2422, 24817, 11681, -1308,
-	-2422, 24779, 11724, -1313, -2421, 24740, 11767, -1318, -2421, 24702, 11811, -1324, -2420, 24663, 11854, -1329,
-	-2419, 24624, 11897, -1334, -2419, 24586, 11941, -1340, -2418, 24547, 11984, -1345, -2417, 24508, 12027, -1350,
-	-2416, 24469, 12071, -1356, -2416, 24431, 12114, -1361, -2415, 24391, 12158, -1366, -2414, 24352, 12201, -1371,
-	-2413, 24314, 12244, -1377, -2412, 24274, 12288, -1382, -2411, 24234, 12332, -1387, -2410, 24196, 12375, -1393,
-	-2409, 24156, 12419, -1398, -2408, 24117, 12462, -1403, -2407, 24077, 12506, -1408, -2406, 24039, 12549, -1414,
-	-2405, 23999, 12593, -1419, -2404, 23959, 12637, -1424, -2402, 23918, 12681, -1429, -2401, 23880, 12724, -1435,
-	-2400, 23840, 12768, -1440, -2399, 23800, 12812, -1445, -2397, 23759, 12856, -1450, -2396, 23721, 12899, -1456,
-	-2395, 23681, 12943, -1461, -2393, 23640, 12987, -1466, -2392, 23600, 13031, -1471, -2391, 23561, 13075, -1477,
-	-2389, 23520, 13119, -1482, -2388, 23480, 13163, -1487, -2386, 23440, 13206, -1492, -2385, 23400, 13250, -1497,
-	-2383, 23360, 13294, -1503, -2381, 23319, 13338, -1508, -2380, 23279, 13382, -1513, -2378, 23238, 13426, -1518,
-	-2377, 23198, 13470, -1523, -2375, 23158, 13514, -1529, -2373, 23117, 13558, -1534, -2371, 23076, 13602, -1539,
-	-2370, 23035, 13647, -1544, -2368, 22994, 13691, -1549, -2366, 22953, 13735, -1554, -2364, 22913, 13779, -1560,
-	-2362, 22872, 13823, -1565, -2360, 22831, 13867, -1570, -2359, 22791, 13911, -1575, -2357, 22750, 13955, -1580,
-	-2355, 22708, 14000, -1585, -2353, 22667, 14044, -1590, -2351, 22626, 14088, -1595, -2349, 22585, 14132, -1600,
-	-2347, 22544, 14177, -1606, -2344, 22502, 14221, -1611, -2342, 22461, 14265, -1616, -2340, 22420, 14309, -1621,
-	-2338, 22378, 14354, -1626, -2336, 22337, 14398, -1631, -2334, 22296, 14442, -1636, -2331, 22254, 14486, -1641,
-	-2329, 22212, 14531, -1646, -2327, 22171, 14575, -1651, -2325, 22130, 14619, -1656, -2322, 22087, 14664, -1661,
-	-2320, 22046, 14708, -1666, -2317, 22004, 14752, -1671, -2315, 21962, 14797, -1676, -2313, 21921, 14841, -1681,
-	-2310, 21879, 14885, -1686, -2308, 21837, 14930, -1691, -2305, 21795, 14974, -1696, -2303, 21753, 15019, -1701,
-	-2300, 21711, 15063, -1706, -2298, 21669, 15107, -1710, -2295, 21626, 15152, -1715, -2292, 21584, 15196, -1720,
-	-2290, 21542, 15241, -1725, -2287, 21500, 15285, -1730, -2284, 21458, 15329, -1735, -2282, 21416, 15374, -1740,
-	-2279, 21374, 15418, -1745, -2276, 21331, 15463, -1750, -2274, 21289, 15507, -1754, -2271, 21246, 15552, -1759,
-	-2268, 21204, 15596, -1764, -2265, 21162, 15640, -1769, -2262, 21119, 15685, -1774, -2259, 21076, 15729, -1778,
-	-2257, 21034, 15774, -1783, -2254, 20992, 15818, -1788, -2251, 20949, 15863, -1793, -2248, 20906, 15907, -1797,
-	-2245, 20863, 15952, -1802, -2242, 20821, 15996, -1807, -2239, 20779, 16040, -1812, -2236, 20735, 16085, -1816,
-	-2233, 20693, 16129, -1821, -2230, 20650, 16174, -1826, -2227, 20607, 16218, -1830, -2223, 20563, 16263, -1835,
-	-2220, 20521, 16307, -1840, -2217, 20478, 16351, -1844, -2214, 20435, 16396, -1849, -2211, 20393, 16440, -1854,
-	-2208, 20349, 16485, -1858, -2204, 20306, 16529, -1863, -2201, 20262, 16574, -1867, -2198, 20220, 16618, -1872,
-	-2195, 20177, 16662, -1876, -2191, 20133, 16707, -1881, -2188, 20091, 16751, -1886, -2185, 20047, 16796, -1890,
-	-2181, 20004, 16840, -1895, -2178, 19961, 16884, -1899, -2174, 19917, 16929, -1904, -2171, 19874, 16973, -1908,
-	-2168, 19831, 17018, -1913, -2164, 19787, 17062, -1917, -2161, 19744, 17106, -1921, -2157, 19700, 17151, -1926,
-	-2154, 19657, 17195, -1930, -2150, 19614, 17239, -1935, -2146, 19569, 17284, -1939, -2143, 19526, 17328, -1943,
-	-2139, 19483, 17372, -1948, -2136, 19440, 17416, -1952, -2132, 19395, 17461, -1956, -2128, 19352, 17505, -1961,
-	-2125, 19309, 17549, -1965, -2121, 19265, 17593, -1969, -2117, 19221, 17638, -1974, -2114, 19178, 17682, -1978,
-	-2110, 19134, 17726, -1982, -2106, 19090, 17770, -1986, -2102, 19046, 17815, -1991, -2099, 19003, 17859, -1995,
-	-2095, 18959, 17903, -1999, -2091, 18915, 17947, -2003, -2087, 18871, 17991, -2007, -2083, 18827, 18035, -2011,
-	-2079, 18783, 18080, -2016, -2076, 18740, 18124, -2020, -2072, 18696, 18168, -2024, -2068, 18652, 18212, -2028,
-	-2064, 18608, 18256, -2032, -2060, 18564, 18300, -2036, -2056, 18520, 18344, -2040, -2052, 18476, 18388, -2044,
-	-2048, 18432, 18432, -2048, -2044, 18388, 18476, -2052, -2040, 18344, 18520, -2056, -2036, 18300, 18564, -2060,
-	-2032, 18256, 18608, -2064, -2028, 18212, 18652, -2068, -2024, 18168, 18696, -2072, -2020, 18124, 18740, -2076,
-	-2016, 18080, 18783, -2079, -2011, 18035, 18827, -2083, -2007, 17991, 18871, -2087, -2003, 17947, 18915, -2091,
-	-1999, 17903, 18959, -2095, -1995, 17859, 19003, -2099, -1991, 17815, 19046, -2102, -1986, 17770, 19090, -2106,
-	-1982, 17726, 19134, -2110, -1978, 17682, 19178, -2114, -1974, 17638, 19221, -2117, -1969, 17593, 19265, -2121,
-	-1965, 17549, 19309, -2125, -1961, 17505, 19352, -2128, -1956, 17461, 19395, -2132, -1952, 17416, 19440, -2136,
-	-1948, 17372, 19483, -2139, -1943, 17328, 19526, -2143, -1939, 17284, 19569, -2146, -1935, 17239, 19614, -2150,
-	-1930, 17195, 19657, -2154, -1926, 17151, 19700, -2157, -1921, 17106, 19744, -2161, -1917, 17062, 19787, -2164,
-	-1913, 17018, 19831, -2168, -1908, 16973, 19874, -2171, -1904, 16929, 19917, -2174, -1899, 16884, 19961, -2178,
-	-1895, 16840, 20004, -2181, -1890, 16796, 20047, -2185, -1886, 16751, 20091, -2188, -1881, 16707, 20133, -2191,
-	-1876, 16662, 20177, -2195, -1872, 16618, 20220, -2198, -1867, 16574, 20262, -2201, -1863, 16529, 20306, -2204,
-	-1858, 16485, 20349, -2208, -1854, 16440, 20393, -2211, -1849, 16396, 20435, -2214, -1844, 16351, 20478, -2217,
-	-1840, 16307, 20521, -2220, -1835, 16263, 20563, -2223, -1830, 16218, 20607, -2227, -1826, 16174, 20650, -2230,
-	-1821, 16129, 20693, -2233, -1816, 16085, 20735, -2236, -1812, 16040, 20779, -2239, -1807, 15996, 20821, -2242,
-	-1802, 15952, 20863, -2245, -1797, 15907, 20906, -2248, -1793, 15863, 20949, -2251, -1788, 15818, 20992, -2254,
-	-1783, 15774, 21034, -2257, -1778, 15729, 21076, -2259, -1774, 15685, 21119, -2262, -1769, 15640, 21162, -2265,
-	-1764, 15596, 21204, -2268, -1759, 15552, 21246, -2271, -1754, 15507, 21289, -2274, -1750, 15463, 21331, -2276,
-	-1745, 15418, 21374, -2279, -1740, 15374, 21416, -2282, -1735, 15329, 21458, -2284, -1730, 15285, 21500, -2287,
-	-1725, 15241, 21542, -2290, -1720, 15196, 21584, -2292, -1715, 15152, 21626, -2295, -1710, 15107, 21669, -2298,
-	-1706, 15063, 21711, -2300, -1701, 15019, 21753, -2303, -1696, 14974, 21795, -2305, -1691, 14930, 21837, -2308,
-	-1686, 14885, 21879, -2310, -1681, 14841, 21921, -2313, -1676, 14797, 21962, -2315, -1671, 14752, 22004, -2317,
-	-1666, 14708, 22046, -2320, -1661, 14664, 22087, -2322, -1656, 14619, 22130, -2325, -1651, 14575, 22171, -2327,
-	-1646, 14531, 22212, -2329, -1641, 14486, 22254, -2331, -1636, 14442, 22296, -2334, -1631, 14398, 22337, -2336,
-	-1626, 14354, 22378, -2338, -1621, 14309, 22420, -2340, -1616, 14265, 22461, -2342, -1611, 14221, 22502, -2344,
-	-1606, 14177, 22544, -2347, -1600, 14132, 22585, -2349, -1595, 14088, 22626, -2351, -1590, 14044, 22667, -2353,
-	-1585, 14000, 22708, -2355, -1580, 13955, 22750, -2357, -1575, 13911, 22791, -2359, -1570, 13867, 22831, -2360,
-	-1565, 13823, 22872, -2362, -1560, 13779, 22913, -2364, -1554, 13735, 22953, -2366, -1549, 13691, 22994, -2368,
-	-1544, 13647, 23035, -2370, -1539, 13602, 23076, -2371, -1534, 13558, 23117, -2373, -1529, 13514, 23158, -2375,
-	-1523, 13470, 23198, -2377, -1518, 13426, 23238, -2378, -1513, 13382, 23279, -2380, -1508, 13338, 23319, -2381,
-	-1503, 13294, 23360, -2383, -1497, 13250, 23400, -2385, -1492, 13206, 23440, -2386, -1487, 13163, 23480, -2388,
-	-1482, 13119, 23520, -2389, -1477, 13075, 23561, -2391, -1471, 13031, 23600, -2392, -1466, 12987, 23640, -2393,
-	-1461, 12943, 23681, -2395, -1456, 12899, 23721, -2396, -1450, 12856, 23759, -2397, -1445, 12812, 23800, -2399,
-	-1440, 12768, 23840, -2400, -1435, 12724, 23880, -2401, -1429, 12681, 23918, -2402, -1424, 12637, 23959, -2404,
-	-1419, 12593, 23999, -2405, -1414, 12549, 24039, -2406, -1408, 12506, 24077, -2407, -1403, 12462, 24117, -2408,
-	-1398, 12419, 24156, -2409, -1393, 12375, 24196, -2410, -1387, 12332, 24234, -2411, -1382, 12288, 24274, -2412,
-	-1377, 12244, 24314, -2413, -1371, 12201, 24352, -2414, -1366, 12158, 24391, -2415, -1361, 12114, 24431, -2416,
-	-1356, 12071, 24469, -2416, -1350, 12027, 24508, -2417, -1345, 11984, 24547, -2418, -1340, 11941, 24586, -2419,
-	-1334, 11897, 24624, -2419, -1329, 11854, 24663, -2420, -1324, 11811, 24702, -2421, -1318, 11767, 24740, -2421,
-	-1313, 11724, 24779, -2422, -1308, 11681, 24817, -2422, -1302, 11638, 24855, -2423, -1297, 11595, 24893, -2423,
-	-1292, 11552, 24932, -2424, -1286, 11509, 24969, -2424, -1281, 11466, 25008, -2425, -1276, 11422, 25047, -2425,
-	-1271, 11380, 25085, -2426, -1265, 11337, 25122, -2426, -1260, 11294, 25160, -2426, -1255, 11251, 25198, -2426,
-	-1249, 11208, 25236, -2427, -1244, 11165, 25274, -2427, -1239, 11122, 25312, -2427, -1233, 11079, 25349, -2427,
-	-1228, 11037, 25386, -2427, -1223, 10994, 25424, -2427, -1217, 10951, 25461, -2427, -1212, 10908, 25499, -2427,
-	-1207, 10866, 25536, -2427, -1201, 10823, 25573, -2427, -1196, 10781, 25610, -2427, -1191, 10738, 25648, -2427,
-	-1185, 10696, 25684, -2427, -1180, 10653, 25722, -2427, -1175, 10611, 25758, -2426, -1169, 10568, 25795, -2426,
-	-1164, 10526, 25832, -2426, -1159, 10483, 25870, -2426, -1153, 10441, 25905, -2425, -1148, 10399, 25942, -2425,
-	-1143, 10357, 25978, -2424, -1137, 10314, 26015, -2424, -1132, 10272, 26052, -2424, -1127, 10230, 26088, -2423,
-	-1121, 10188, 26123, -2422, -1116, 10146, 26160, -2422, -1111, 10104, 26196, -2421, -1105, 10062, 26232, -2421,
-	-1100, 10020, 26268, -2420, -1095,  9978, 26304, -2419, -1089,  9936, 26340, -2419, -1084,  9894, 26376, -2418,
-	-1079,  9853, 26411, -2417, -1073,  9811, 26446, -2416, -1068,  9769, 26482, -2415, -1063,  9727, 26518, -2414,
-	-1058,  9686, 26553, -2413, -1052,  9644, 26588, -2412, -1047,  9603, 26623, -2411, -1042,  9561, 26659, -2410,
-	-1036,  9520, 26693, -2409, -1031,  9478, 26729, -2408, -1026,  9437, 26764, -2407, -1021,  9395, 26800, -2406,
-	-1015,  9354, 26834, -2405, -1010,  9313, 26868, -2403, -1005,  9271, 26904, -2402, -1000,  9230, 26939, -2401,
-	 -994,  9189, 26972, -2399,  -989,  9148, 27007, -2398,  -984,  9107, 27042, -2397,  -979,  9066, 27076, -2395,
-	 -973,  9025, 27110, -2394,  -968,  8984, 27144, -2392,  -963,  8943, 27179, -2391,  -958,  8902, 27213, -2389,
-	 -952,  8861, 27246, -2387,  -947,  8821, 27280, -2386,  -942,  8780, 27314, -2384,  -937,  8739, 27348, -2382,
-	 -932,  8699, 27382, -2381,  -926,  8658, 27415, -2379,  -921,  8617, 27449, -2377,  -916,  8577, 27482, -2375,
-	 -911,  8536, 27516, -2373,  -906,  8496, 27549, -2371,  -900,  8456, 27581, -2369,  -895,  8415, 27615, -2367,
-	 -890,  8375, 27648, -2365,  -885,  8335, 27681, -2363,  -880,  8295, 27714, -2361,  -875,  8255, 27747, -2359,
-	 -869,  8215, 27778, -2356,  -864,  8175, 27811, -2354,  -859,  8135, 27844, -2352,  -854,  8095, 27876, -2349,
-	 -849,  8055, 27909, -2347,  -844,  8015, 27942, -2345,  -839,  7975, 27974, -2342,  -834,  7936, 28006, -2340,
-	 -829,  7896, 28038, -2337,  -823,  7856, 28070, -2335,  -818,  7817, 28101, -2332,  -813,  7777, 28133, -2329,
-	 -808,  7738, 28165, -2327,  -803,  7698, 28197, -2324,  -798,  7659, 28228, -2321,  -793,  7620, 28260, -2319,
-	 -788,  7580, 28292, -2316,  -783,  7541, 28323, -2313,  -778,  7502, 28354, -2310,  -773,  7463, 28385, -2307,
-	 -768,  7424, 28416, -2304,  -763,  7385, 28447, -2301,  -758,  7346, 28478, -2298,  -753,  7307, 28509, -2295,
-	 -748,  7268, 28540, -2292,  -743,  7230, 28570, -2289,  -738,  7191, 28600, -2285,  -733,  7152, 28631, -2282,
-	 -728,  7114, 28661, -2279,  -723,  7075, 28691, -2275,  -718,  7037, 28721, -2272,  -713,  6998, 28752, -2269,
-	 -709,  6960, 28782, -2265,  -704,  6922, 28812, -2262,  -699,  6883, 28842, -2258,  -694,  6845, 28872, -2255,
-	 -689,  6807, 28901, -2251,  -684,  6769, 28930, -2247,  -679,  6731, 28960, -2244,  -675,  6693, 28990, -2240,
-	 -670,  6655, 29019, -2236,  -665,  6617, 29048, -2232,  -660,  6580, 29076, -2228,  -655,  6542, 29105, -2224,
-	 -650,  6504, 29135, -2221,  -646,  6467, 29164, -2217,  -641,  6429, 29193, -2213,  -636,  6392, 29220, -2208,
-	 -631,  6354, 29249, -2204,  -627,  6317, 29278, -2200,  -622,  6280, 29306, -2196,  -617,  6243, 29334, -2192,
-	 -613,  6206, 29363, -2188,  -608,  6168, 29391, -2183,  -603,  6131, 29419, -2179,  -598,  6094, 29446, -2174,
-	 -594,  6058, 29474, -2170,  -589,  6021, 29501, -2165,  -584,  5984, 29529, -2161,  -580,  5947, 29557, -2156,
-	 -575,  5911, 29584, -2152,  -571,  5874, 29612, -2147,  -566,  5838, 29638, -2142,  -561,  5801, 29666, -2138,
-	 -557,  5765, 29693, -2133,  -552,  5729, 29719, -2128,  -548,  5692, 29747, -2123,  -543,  5656, 29773, -2118,
-	 -539,  5620, 29800, -2113,  -534,  5584, 29826, -2108,  -530,  5548, 29853, -2103,  -525,  5512, 29879, -2098,
-	 -521,  5476, 29906, -2093,  -516,  5441, 29931, -2088,  -512,  5405, 29958, -2083,  -507,  5369, 29983, -2077,
-	 -503,  5334, 30009, -2072,  -499,  5298, 30036, -2067,  -494,  5263, 30060, -2061,  -490,  5228, 30086, -2056,
-	 -485,  5192, 30111, -2050,  -481,  5157, 30137, -2045,  -477,  5122, 30162, -2039,  -472,  5087, 30187, -2034,
-	 -468,  5052, 30212, -2028,  -464,  5017, 30237, -2022,  -459,  4982, 30262, -2017,  -455,  4948, 30286, -2011,
-	 -451,  4913, 30311, -2005,  -447,  4878, 30336, -1999,  -442,  4844, 30359, -1993,  -438,  4809, 30384, -1987,
-	 -434,  4775, 30408, -1981,  -430,  4741, 30432, -1975,  -426,  4706, 30457, -1969,  -421,  4672, 30480, -1963,
-	 -417,  4638, 30503, -1956,  -413,  4604, 30527, -1950,  -409,  4570, 30551, -1944,  -405,  4536, 30575, -1938,
-	 -401,  4502, 30598, -1931,  -397,  4469, 30621, -1925,  -393,  4435, 30644, -1918,  -389,  4402, 30667, -1912,
-	 -385,  4368, 30690, -1905,  -381,  4335, 30713, -1899,  -377,  4301, 30736, -1892,  -373,  4268, 30758, -1885,
-	 -369,  4235, 30780, -1878,  -365,  4202, 30803, -1872,  -361,  4169, 30825, -1865,  -357,  4136, 30847, -1858,
-	 -353,  4103, 30869, -1851,  -349,  4070, 30891, -1844,  -345,  4038, 30912, -1837,  -341,  4005, 30934, -1830,
-	 -338,  3973, 30956, -1823,  -334,  3940, 30977, -1815,  -330,  3908, 30998, -1808,  -326,  3875, 31020, -1801,
-	 -322,  3843, 31040, -1793,  -319,  3811, 31062, -1786,  -315,  3779, 31083, -1779,  -311,  3747, 31103, -1771,
-	 -307,  3715, 31124, -1764,  -304,  3683, 31145, -1756,  -300,  3652, 31164, -1748,  -296,  3620, 31185, -1741,
-	 -293,  3589, 31205, -1733,  -289,  3557, 31225, -1725,  -286,  3526, 31245, -1717,  -282,  3495, 31264, -1709,
-	 -278,  3463, 31285, -1702,  -275,  3432, 31305, -1694,  -271,  3401, 31324, -1686,  -268,  3370, 31343, -1677,
-	 -264,  3339, 31362, -1669,  -261,  3309, 31381, -1661,  -257,  3278, 31400, -1653,  -254,  3247, 31420, -1645,
-	 -251,  3217, 31438, -1636,  -247,  3186, 31457, -1628,  -244,  3156, 31476, -1620,  -240,  3126, 31493, -1611,
-	 -237,  3096, 31512, -1603,  -234,  3066, 31530, -1594,  -231,  3036, 31548, -1585,  -227,  3006, 31566, -1577,
-	 -224,  2976, 31584, -1568,  -221,  2946, 31602, -1559,  -218,  2917, 31619, -1550,  -214,  2887, 31637, -1542,
-	 -211,  2858, 31654, -1533,  -208,  2828, 31672, -1524,  -205,  2799, 31689, -1515,  -202,  2770, 31706, -1506,
-	 -199,  2741, 31722, -1496,  -196,  2712, 31739, -1487,  -192,  2683, 31755, -1478,  -189,  2654, 31772, -1469,
-	 -186,  2626, 31787, -1459,  -183,  2597, 31804, -1450,  -180,  2568, 31820, -1440,  -177,  2540, 31836, -1431,
-	 -175,  2512, 31852, -1421,  -172,  2483, 31869, -1412,  -169,  2455, 31884, -1402,  -166,  2427, 31899, -1392,
-	 -163,  2399, 31915, -1383,  -160,  2371, 31930, -1373,  -157,  2344, 31944, -1363,  -155,  2316, 31960, -1353,
-	 -152,  2289, 31974, -1343,  -149,  2261, 31989, -1333,  -146,  2234, 32003, -1323,  -144,  2206, 32019, -1313,
-	 -141,  2179, 32033, -1303,  -138,  2152, 32047, -1293,  -136,  2125, 32061, -1282,  -133,  2098, 32075, -1272,
-	 -131,  2072, 32089, -1262,  -128,  2045, 32102, -1251,  -125,  2018, 32116, -1241,  -123,  1992, 32129, -1230,
-	 -120,  1965, 32142, -1219,  -118,  1939, 32156, -1209,  -115,  1913, 32168, -1198,  -113,  1887, 32181, -1187,
-	 -111,  1861, 32194, -1176,  -108,  1835, 32207, -1166,  -106,  1809, 32220, -1155,  -104,  1783, 32233, -1144,
-	 -101,  1758, 32244, -1133,   -99,  1732, 32256, -1121,   -97,  1707, 32268, -1110,   -94,  1682, 32279, -1099,
-	  -92,  1657, 32291, -1088,   -90,  1631, 32303, -1076,   -88,  1607, 32314, -1065,   -86,  1582, 32326, -1054,
-	  -84,  1557, 32337, -1042,   -81,  1532, 32348, -1031,   -79,  1508, 32358, -1019,   -77,  1483, 32369, -1007,
-	  -75,  1459, 32380,  -996,   -73,  1435, 32390,  -984,   -71,  1411, 32400,  -972,   -69,  1387, 32410,  -960,
-	  -67,  1363, 32420,  -948,   -66,  1339, 32431,  -936,   -64,  1315, 32441,  -924,   -62,  1291, 32451,  -912,
-	  -60,  1268, 32460,  -900,   -58,  1245, 32469,  -888,   -56,  1221, 32479,  -876,   -55,  1198, 32488,  -863,
-	  -53,  1175, 32497,  -851,   -51,  1152, 32505,  -838,   -50,  1129, 32515,  -826,   -48,  1107, 32522,  -813,
-	  -46,  1084, 32531,  -801,   -45,  1061, 32540,  -788,   -43,  1039, 32547,  -775,   -42,  1017, 32555,  -762,
-	  -40,   995, 32563,  -750,   -39,   972, 32572,  -737,   -37,   951, 32578,  -724,   -36,   929, 32586,  -711,
-	  -34,   907, 32593,  -698,   -33,   885, 32601,  -685,   -32,   864, 32607,  -671,   -30,   842, 32614,  -658,
-	  -29,   821, 32621,  -645,   -28,   800, 32627,  -631,   -26,   779, 32633,  -618,   -25,   758, 32640,  -605,
-	  -24,   737, 32646,  -591,   -23,   716, 32652,  -577,   -22,   696, 32658,  -564,   -21,   675, 32664,  -550,
-	  -20,   655, 32669,  -536,   -18,   635, 32673,  -522,   -17,   614, 32679,  -508,   -16,   594, 32685,  -495,
-	  -16,   575, 32690,  -481,   -15,   555, 32694,  -466,   -14,   535, 32699,  -452,   -13,   515, 32704,  -438,
-	  -12,   496, 32708,  -424,   -11,   477, 32712,  -410,   -10,   457, 32716,  -395,   -10,   438, 32721,  -381,
-	   -9,   419, 32724,  -366,    -8,   401, 32727,  -352,    -7,   382, 32730,  -337,    -7,   363, 32734,  -322,
-	   -6,   345, 32737,  -308,    -6,   326, 32741,  -293,    -5,   308, 32743,  -278,    -4,   290, 32745,  -263,
-	   -4,   272, 32748,  -248,    -3,   254, 32750,  -233,    -3,   236, 32753,  -218,    -3,   218, 32756,  -203,
-	   -2,   201, 32757,  -188,    -2,   184, 32758,  -172,    -2,   166, 32761,  -157,    -1,   149, 32761,  -141,
-	   -1,   132, 32763,  -126,    -1,   115, 32764,  -110,    -1,    98, 32766,   -95,     0,    82, 32765,   -79,
-	    0,    65, 32767,   -64,     0,    49, 32767,   -48,     0,    32, 32767,   -32,     0,    16, 32767,   -16
-};
-
-#endif
--- a/src/ft2_intrp_table.h
+++ /dev/null
@@ -1,25 +1,0 @@
-#pragma once
-
-#include <stdint.h>
-#include "ft2_audio.h"
-
-#define CUBIC_WIDTH 4
-#define CUBIC_WIDTH_BITS 2
-
-#if defined __amd64__ || defined _WIN64
-
-#define CUBIC_PHASES 8192
-#define CUBIC_PHASES_BITS 13
-
-#else
-
-#define CUBIC_PHASES 1024
-#define CUBIC_PHASES_BITS 10
-
-#endif
-
-#define CUBIC_FSHIFT (MIXER_FRAC_BITS-(CUBIC_PHASES_BITS+CUBIC_WIDTH_BITS))
-#define CUBIC_FMASK ((CUBIC_WIDTH*CUBIC_PHASES)-CUBIC_WIDTH)
-#define CUBIC_QUANTSHIFT 15
-
-extern const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES];
--- a/src/ft2_mix.c
+++ /dev/null
@@ -1,1803 +1,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include "ft2_mix.h"
-#include "ft2_mix_macros.h"
-#include "ft2_intrp_table.h"
-
-/*
-** --------------------- 32-bit fixed-point audio channel mixer ---------------------
-**              (Note: Mixing macros can be found in ft2_mix_macros.h)
-**
-** 8bitbubsy: This is mostly ported from the i386-asm 32-bit mixer that was introduced
-** in FT2.08 (MS-DOS). It has been changed and improved quite a bit, though...
-** Instead of 2-tap linear interpolation, it has 4-tap cubic spline interpolation.
-** For x86_64: Fixed-point precision is 32.32 instead of 16.16
-**
-** This file has separate routines for EVERY possible sampling variation:
-** Interpolation on/off, volume ramping on/off, 8-bit, 16-bit, no loop, loop, pingpong.
-** (24 mixing routines in total)
-**
-** Every voice has a function pointer set to the according mixing routine on sample
-** trigger (from replayer, but set in audio thread), using a function pointer look-up
-** table. All voices & pointers are always thread-safely cleared when changing any
-** of the above attributes from the GUI, to prevent possible thread-related issues.
-**
-** There's one problem with the 4-tap cubic spline resampling interpolation...
-** On looped samples where loopStart>0, the splines are not correct when reading
-** from the loopStart (or +1?) sample point. The difference in audio is very minor,
-** so it's not a big problem. It just has to stay like this the way the mixer works.
-** In cases where loopStart=0, the sample before index 0 (yes, we allocate enough
-** data and pre-increment main pointer to support negative look-up), is already
-** pre-fixed so that the splines will be correct.
-** ----------------------------------------------------------------------------------
-*/
-
-/* ----------------------------------------------------------------------- */
-/*                          8-BIT MIXING ROUTINES                          */
-/* ----------------------------------------------------------------------- */
-
-static void mix8bNoLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				INC_POS
-				RENDER_8BIT_SMP
-				INC_POS
-			}
-		}
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-				RENDER_8BIT_SMP_MONO
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				INC_POS
-				RENDER_8BIT_SMP
-				INC_POS
-			}
-		}
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bBidiLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_MONO
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				INC_POS_BIDI
-				RENDER_8BIT_SMP
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-
-		WRAP_BIDI_LOOP
-	}
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bNoLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-			}
-		}
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-				RENDER_8BIT_SMP_INTRP
-				INC_POS
-			}
-		}
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE8_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_INTRP
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampNoLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampBidiLoop(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_8BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-		SET_VOL_BACK
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE8_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_8BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-		SET_VOL_BACK
-
-		WRAP_BIDI_LOOP
-	}
-	SET_BACK_MIXER_POS
-}
-
-
-
-/* ----------------------------------------------------------------------- */
-/*                          16-BIT MIXING ROUTINES                         */
-/* ----------------------------------------------------------------------- */
-
-static void mix16bNoLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				INC_POS
-				RENDER_16BIT_SMP
-				INC_POS
-			}
-		}
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-				RENDER_16BIT_SMP_MONO
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				INC_POS
-				RENDER_16BIT_SMP
-				INC_POS
-			}
-		}
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bBidiLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_MONO
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				INC_POS_BIDI
-				RENDER_16BIT_SMP
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bNoLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-			}
-		}
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol| CDA_RVol) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-				RENDER_16BIT_SMP_INTRP
-				INC_POS
-			}
-		}
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	GET_VOL
-
-	if ((CDA_LVol | CDA_RVol) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS
-	SET_BASE16_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		CDA_BytesLeft -= samplesToMix;
-
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_MONO_INTRP
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_INTRP
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampNoLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampBidiLoop(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_MONO
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_16BIT_SMP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-		SET_VOL_BACK
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_NO_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		HANDLE_SAMPLE_END
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos;
-#else
-	uint32_t pos;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS
-			}
-		}
-		SET_VOL_BACK
-
-		WRAP_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-static void mix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
-{
-	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
-	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
-	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
-	uint32_t i, samplesToMix, CDA_BytesLeft;
-#if defined _WIN64 || defined __amd64__
-	uint64_t pos, delta;
-#else
-	uint32_t pos, delta;
-#endif
-
-	if ((v->SLVol1 | v->SRVol1 | v->SLVol2 | v->SRVol2) == 0)
-	{
-		VOL0_MIXING_BIDI_LOOP
-		return;
-	}
-
-	GET_MIXER_VARS_RAMP
-	SET_BASE16_BIDI
-
-	CDA_BytesLeft = numSamples;
-	while (CDA_BytesLeft > 0)
-	{
-		LIMIT_MIX_NUM
-		LIMIT_MIX_NUM_RAMP
-		CDA_BytesLeft -= samplesToMix;
-
-		GET_VOL
-		START_BIDI
-		if (mixInMono)
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_MONO_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		else
-		{
-			if (samplesToMix & 1)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-			samplesToMix >>= 1;
-			for (i = 0; i < samplesToMix; i++)
-			{
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-				RENDER_16BIT_SMP_INTRP
-				VOLUME_RAMPING
-				INC_POS_BIDI
-			}
-		}
-		END_BIDI
-		SET_VOL_BACK
-
-		WRAP_BIDI_LOOP
-	}
-
-	SET_BACK_MIXER_POS
-}
-
-// -----------------------------------------------------------------------
-
-const mixRoutine mixRoutineTable[24] =
-{
-	(mixRoutine)mix8bNoLoop,
-	(mixRoutine)mix8bLoop,
-	(mixRoutine)mix8bBidiLoop,
-	(mixRoutine)mix8bNoLoopIntrp,
-	(mixRoutine)mix8bLoopIntrp,
-	(mixRoutine)mix8bBidiLoopIntrp,
-	(mixRoutine)mix8bRampNoLoop,
-	(mixRoutine)mix8bRampLoop,
-	(mixRoutine)mix8bRampBidiLoop,
-	(mixRoutine)mix8bRampNoLoopIntrp,
-	(mixRoutine)mix8bRampLoopIntrp,
-	(mixRoutine)mix8bRampBidiLoopIntrp,
-	(mixRoutine)mix16bNoLoop,
-	(mixRoutine)mix16bLoop,
-	(mixRoutine)mix16bBidiLoop,
-	(mixRoutine)mix16bNoLoopIntrp,
-	(mixRoutine)mix16bLoopIntrp,
-	(mixRoutine)mix16bBidiLoopIntrp,
-	(mixRoutine)mix16bRampNoLoop,
-	(mixRoutine)mix16bRampLoop,
-	(mixRoutine)mix16bRampBidiLoop,
-	(mixRoutine)mix16bRampNoLoopIntrp,
-	(mixRoutine)mix16bRampLoopIntrp,
-	(mixRoutine)mix16bRampBidiLoopIntrp
-};
--- a/src/ft2_mix.h
+++ /dev/null
@@ -1,8 +1,0 @@
-#pragma once
-
-#include <stdint.h>
-#include "ft2_audio.h"
-
-typedef void (*mixRoutine)(void *, int32_t);
-
-extern const mixRoutine mixRoutineTable[24]; // ft2_mix.c
--- a/src/ft2_mix_macros.h
+++ /dev/null
@@ -1,421 +1,0 @@
-#pragma once
-
-#include "ft2_header.h"
-#include "ft2_audio.h"
-
-/* ----------------------------------------------------------------------- */
-/*                          GENERAL MIXER MACROS                           */
-/* ----------------------------------------------------------------------- */
-
-#define GET_VOL \
-	CDA_LVol = v->SLVol2; \
-	CDA_RVol = v->SRVol2; \
-
-#define SET_VOL_BACK \
-	v->SLVol2 = CDA_LVol; \
-	v->SRVol2 = CDA_RVol; \
-
-#if defined _WIN64 || defined __amd64__
-
-#define GET_MIXER_VARS \
-	const uint64_t SFrq = v->SFrq; \
-	audioMixL = audio.mixBufferL; \
-	audioMixR = audio.mixBufferR; \
-	const bool mixInMono = (CDA_LVol == CDA_RVol); \
-	realPos = v->SPos; \
-	pos = v->SPosDec; \
-
-#define GET_MIXER_VARS_RAMP \
-	const uint64_t SFrq = v->SFrq; \
-	audioMixL = audio.mixBufferL; \
-	audioMixR = audio.mixBufferR; \
-	CDA_LVolIP = v->SLVolIP; \
-	CDA_RVolIP = v->SRVolIP; \
-	const bool mixInMono = (v->SLVol2 == v->SRVol2) && (CDA_LVolIP == CDA_RVolIP); \
-	realPos = v->SPos; \
-	pos = v->SPosDec; \
-
-#else
-
-#define GET_MIXER_VARS \
-	const uint32_t SFrq = v->SFrq; \
-	audioMixL = audio.mixBufferL; \
-	audioMixR = audio.mixBufferR; \
-	const bool mixInMono = (CDA_LVol == CDA_RVol); \
-	realPos = v->SPos; \
-	pos = v->SPosDec; \
-
-#define GET_MIXER_VARS_RAMP \
-	const uint32_t SFrq = v->SFrq; \
-	audioMixL = audio.mixBufferL; \
-	audioMixR = audio.mixBufferR; \
-	CDA_LVolIP = v->SLVolIP; \
-	CDA_RVolIP = v->SRVolIP; \
-	const bool mixInMono = (v->SLVol2 == v->SRVol2) && (CDA_LVolIP == CDA_RVolIP); \
-	realPos = v->SPos; \
-	pos = v->SPosDec; \
-
-#endif
-
-#define SET_BASE8 \
-	CDA_LinearAdr = v->SBase8; \
-	smpPtr = CDA_LinearAdr + realPos; \
-
-#define SET_BASE16 \
-	CDA_LinearAdr = v->SBase16; \
-	smpPtr = CDA_LinearAdr + realPos; \
-
-#define SET_BASE8_BIDI \
-	CDA_LinearAdr = v->SBase8; \
-	CDA_LinAdrRev = v->SRevBase8; \
-
-#define SET_BASE16_BIDI \
-	CDA_LinearAdr = v->SBase16; \
-	CDA_LinAdrRev = v->SRevBase16; \
-
-#define INC_POS \
-	pos += SFrq; \
-	smpPtr += pos >> MIXER_FRAC_BITS; \
-	pos &= MIXER_FRAC_MASK; \
-
-#define INC_POS_BIDI \
-	pos += CDA_IPValL; \
-	smpPtr += pos >> MIXER_FRAC_BITS; \
-	smpPtr += CDA_IPValH; \
-	pos &= MIXER_FRAC_MASK; \
-
-#define SET_BACK_MIXER_POS \
-	v->SPosDec = pos; \
-	v->SPos = realPos; \
-
-/* ----------------------------------------------------------------------- */
-/*                          SAMPLE RENDERING MACROS                        */
-/* ----------------------------------------------------------------------- */
-
-#define VOLUME_RAMPING \
-	CDA_LVol += CDA_LVolIP; \
-	CDA_RVol += CDA_RVolIP; \
-
-// all the 64-bit MULs here convert to fast logic on most 32-bit CPUs
-
-#define RENDER_8BIT_SMP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = *smpPtr << 20; \
-	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
-
-#define RENDER_8BIT_SMP_MONO \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = *smpPtr << 20; \
-	sample = ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixL++ += sample; \
-	*audioMixR++ += sample; \
-
-#define RENDER_16BIT_SMP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = *smpPtr << 12; \
-	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
-
-#define RENDER_16BIT_SMP_MONO \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = *smpPtr << 12; \
-	sample = ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixL++ += sample; \
-	*audioMixR++ += sample; \
-
-// 4-tap cubic spline interpolation
-
-// in: int32_t s0,s1,s2,s3 = -128..127 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
-#define INTERPOLATE8(s0, s1, s2, s3, f) \
-{ \
-	const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
-	s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> (CUBIC_QUANTSHIFT-8); \
-} \
-
-// in: int32_t s0,s1,s2,s3 = -32768..32767 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
-#define INTERPOLATE16(s0, s1, s2, s3, f) \
-{ \
-	const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
-	s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> CUBIC_QUANTSHIFT; \
-} \
-
-/* 8bitbubsy: It may look like we are potentially going out of bounds by looking up sample point
-** -1, 1 and 2, but the sample data is actually padded on both the left (negative) and right side,
-** where correct samples are stored according to loop mode (or no loop).
-**
-** The only issue is that the -1 look-up gets wrong information if loopStart>0 on looped-samples,
-** and the sample-position is at loopStart. The spline will get ever so slighty wrong because of this,
-** but it's barely audible anyway. Doing it elsewise would require a refactoring of how the audio mixer
-** works!
-*/
-
-#define RENDER_8BIT_SMP_INTRP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = smpPtr[-1]; \
-	sample2 = smpPtr[0]; \
-	sample3 = smpPtr[1]; \
-	sample4 = smpPtr[2]; \
-	INTERPOLATE8(sample, sample2, sample3, sample4, pos) \
-	sample <<= 12; \
-	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
-
-#define RENDER_8BIT_SMP_MONO_INTRP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = smpPtr[-1]; \
-	sample2 = smpPtr[0]; \
-	sample3 = smpPtr[1]; \
-	sample4 = smpPtr[2]; \
-	INTERPOLATE8(sample, sample2, sample3, sample4, pos) \
-	sample <<= 12; \
-	sample = ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixL++ += sample; \
-	*audioMixR++ += sample; \
-
-#define RENDER_16BIT_SMP_INTRP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = smpPtr[-1]; \
-	sample2 = smpPtr[0]; \
-	sample3 = smpPtr[1]; \
-	sample4 = smpPtr[2]; \
-	INTERPOLATE16(sample, sample2, sample3, sample4, pos) \
-	sample <<= 12; \
-	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
-
-#define RENDER_16BIT_SMP_MONO_INTRP \
-	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
-	sample = smpPtr[-1]; \
-	sample2 = smpPtr[0]; \
-	sample3 = smpPtr[1]; \
-	sample4 = smpPtr[2]; \
-	INTERPOLATE16(sample, sample2, sample3, sample4, pos) \
-	sample <<= 12; \
-	sample = ((int64_t)sample * CDA_LVol) >> 32; \
-	*audioMixL++ += sample; \
-	*audioMixR++ += sample; \
-
-/* ----------------------------------------------------------------------- */
-/*                      SAMPLES-TO-MIX LIMITING MACROS                     */
-/* ----------------------------------------------------------------------- */
-
-#if defined _WIN64 || defined __amd64__
-
-#define LIMIT_MIX_NUM \
-	samplesToMix = CDA_BytesLeft; \
-	i = (v->SLen - 1) - realPos; \
-	\
-	if (SFrq > 0) \
-	{ \
-		uint64_t tmp64 = ((uint64_t)i << MIXER_FRAC_BITS) | (pos ^ MIXER_FRAC_MASK); \
-		samplesToMix = (uint32_t)(tmp64 / SFrq) + 1; \
-		if (samplesToMix > CDA_BytesLeft) \
-			samplesToMix = CDA_BytesLeft; \
-	} \
-	\
-
-#define START_BIDI \
-	if (v->backwards) \
-	{ \
-		delta = 0 - SFrq; \
-		assert(realPos >= v->SRepS && realPos < v->SLen); \
-		realPos = ~realPos; \
-		smpPtr = CDA_LinAdrRev + realPos; \
-		pos ^= MIXER_FRAC_MASK; \
-	} \
-	else \
-	{ \
-		delta = SFrq; \
-		assert(realPos >= 0 && realPos < v->SLen); \
-		smpPtr = CDA_LinearAdr + realPos; \
-	} \
-	\
-	const int32_t CDA_IPValH = (int64_t)delta >> MIXER_FRAC_BITS; \
-	const uint32_t CDA_IPValL = delta & MIXER_FRAC_MASK; \
-
-#else
-
-#define LIMIT_MIX_NUM \
-	i = (v->SLen - 1) - realPos; \
-	if (i > (1UL << (32-MIXER_FRAC_BITS))) \
-		i = 1UL << (32-MIXER_FRAC_BITS); \
-	\
-	i = (i << MIXER_FRAC_BITS) | (pos ^ MIXER_FRAC_MASK); \
-	samplesToMix = ((int64_t)i * v->SFrqRev) >> 32; \
-	samplesToMix++; \
-	\
-	if (samplesToMix > CDA_BytesLeft) \
-		samplesToMix = CDA_BytesLeft; \
-
-#define START_BIDI \
-	if (v->backwards) \
-	{ \
-		delta = 0 - SFrq; \
-		assert(realPos >= v->SRepS && realPos < v->SLen); \
-		realPos = ~realPos; \
-		smpPtr = CDA_LinAdrRev + realPos; \
-		pos ^= MIXER_FRAC_MASK; \
-	} \
-	else \
-	{ \
-		delta = SFrq; \
-		assert(realPos >= 0 && realPos < v->SLen); \
-		smpPtr = CDA_LinearAdr + realPos; \
-	} \
-	\
-	const int32_t CDA_IPValH = (int32_t)delta >> MIXER_FRAC_BITS; \
-	const uint32_t CDA_IPValL = delta & MIXER_FRAC_MASK; \
-
-#endif
-
-#define LIMIT_MIX_NUM_RAMP \
-	if (v->SVolIPLen == 0) \
-	{ \
-		CDA_LVolIP = 0; \
-		CDA_RVolIP = 0; \
-		\
-		if (v->isFadeOutVoice) \
-		{ \
-			v->mixRoutine = NULL; /* fade out voice is done, shut it down */ \
-			return; \
-		} \
-	} \
-	else \
-	{ \
-		if (samplesToMix > v->SVolIPLen) \
-			samplesToMix = v->SVolIPLen; \
-		\
-		v->SVolIPLen -= samplesToMix; \
-	} \
-
-#define HANDLE_SAMPLE_END \
-	realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
-	if (realPos >= v->SLen) \
-	{ \
-		v->mixRoutine = NULL; \
-		return; \
-	} \
-
-#define WRAP_LOOP \
-	realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
-	while (realPos >= v->SLen) \
-		realPos -= v->SRepL; \
-	smpPtr = CDA_LinearAdr + realPos; \
-
-#define WRAP_BIDI_LOOP \
-	while (realPos >= v->SLen) \
-	{ \
-		realPos -= v->SRepL; \
-		v->backwards ^= 1; \
-	} \
-
-#define END_BIDI \
-	if (v->backwards) \
-	{ \
-		pos ^= MIXER_FRAC_MASK; \
-		realPos = ~(int32_t)(smpPtr - CDA_LinAdrRev); \
-	} \
-	else \
-	{ \
-		realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
-	} \
-	\
-
-/* ----------------------------------------------------------------------- */
-/*                          VOLUME=0 MIXING MACROS                         */
-/* ----------------------------------------------------------------------- */
-
-
-#if defined _WIN64 || defined __amd64__
-
-#define	VOL0_INC_POS \
-	const uint64_t newPos = v->SFrq * (uint64_t)numSamples; \
-	const uint32_t addPos = (uint32_t)(newPos >> MIXER_FRAC_BITS); \
-	uint64_t addFrac = newPos & MIXER_FRAC_MASK; \
-	\
-	addFrac += v->SPosDec; \
-	realPos = v->SPos + addPos + (uint32_t)(addFrac >> MIXER_FRAC_BITS); \
-	pos = addFrac & MIXER_FRAC_MASK; \
-
-#define VOL0_MIXING_NO_LOOP \
-	VOL0_INC_POS \
-	if (realPos >= v->SLen) \
-	{ \
-		v->mixRoutine = NULL; /* shut down voice */ \
-		return; \
-	} \
-	\
-	SET_BACK_MIXER_POS
-
-#define VOL0_MIXING_LOOP \
-	VOL0_INC_POS \
-	if (realPos >= v->SLen) \
-	{ \
-		if (v->SRepL >= 2) \
-			realPos = v->SRepS + ((realPos - v->SLen) % v->SRepL); \
-		else \
-			realPos = v->SRepS; \
-	} \
-	\
-	SET_BACK_MIXER_POS
-
-#define VOL0_MIXING_BIDI_LOOP \
-	VOL0_INC_POS \
-	if (realPos >= v->SLen) \
-	{ \
-		if (v->SRepL >= 2) \
-		{ \
-			const int32_t overflow = realPos - v->SLen; \
-			const int32_t cycles = overflow / v->SRepL; \
-			const int32_t phase = overflow % v->SRepL; \
-			\
-			realPos = v->SRepS + phase; \
-			v->backwards ^= !(cycles & 1); \
-		} \
-		else \
-		{ \
-			realPos = v->SRepS; \
-		} \
-	} \
-	\
-	SET_BACK_MIXER_POS
-
-#else
-
-#define	VOL0_INC_POS \
-	assert(numSamples <= 65536); \
-	\
-	pos = v->SPosDec + ((v->SFrq & 0xFFFF) * numSamples); \
-	realPos = v->SPos + ((v->SFrq >> 16) * numSamples) + (pos >> 16); \
-	pos &= 0xFFFF; \
-
-#define VOL0_MIXING_NO_LOOP \
-	VOL0_INC_POS \
-	if (realPos >= v->SLen) \
-	{ \
-		v->mixRoutine = NULL; /* shut down voice */ \
-		return; \
-	} \
-	\
-	SET_BACK_MIXER_POS
-
-#define VOL0_MIXING_LOOP \
-	VOL0_INC_POS \
-	\
-	while (realPos >= v->SLen) \
-		realPos -= v->SRepL; \
-	\
-	SET_BACK_MIXER_POS
-
-#define VOL0_MIXING_BIDI_LOOP \
-	VOL0_INC_POS \
-	while (realPos >= v->SLen) \
-	{ \
-		realPos -= v->SRepL; \
-		v->backwards ^= 1; \
-	} \
-	\
-	SET_BACK_MIXER_POS
-
-#endif
--- a/src/ft2_module_loader.h
+++ b/src/ft2_module_loader.h
@@ -10,5 +10,5 @@
 void loadDroppedFile(char *fullPathUTF8, bool songModifiedCheck);
 void handleLoadMusicEvents(void);
 void clearUnusedChannels(tonTyp *p, int16_t pattLen, int32_t antChn);
-void unpackPatt(uint8_t *dst, uint16_t inn, uint16_t len, int32_t antChn);
+//void unpackPatt(uint8_t *dst, uint16_t inn, uint16_t len, int32_t antChn);
 void checkSampleRepeat(sampleTyp *s);
--- a/src/ft2_replayer.c
+++ b/src/ft2_replayer.c
@@ -362,7 +362,6 @@
 	audio.tickTimeLengthTab[0] = UINT64_MAX;
 	audio.rampSpeedValMulTab[0] = INT32_MAX;
 
-	const double dMul = (UINT32_MAX + 1.0) / audioFreq;
 	for (int32_t i = MIN_BPM; i <= MAX_BPM; i++)
 	{
 		const double dBpmHz = i / 2.5;
@@ -372,8 +371,18 @@
 		audio.dSpeedValTab[i] = dSamplesPerTick;
 
 		// number of samples per tick -> tick length for performance counter (syncing visuals to audio)
-		audio.tickTimeLengthTab[i] = (uint64_t)(dSamplesPerTick * dMul);
+		double dTimeInt;
+		double dTimeFrac = modf(editor.dPerfFreq / dBpmHz, &dTimeInt);
+		const int32_t timeInt = (int32_t)dTimeInt;
 
+		// - fractional part (scaled to 0..2^32-1) -
+		dTimeFrac *= UINT32_MAX;
+		dTimeFrac += 0.5;
+		if (dTimeFrac > UINT32_MAX)
+			dTimeFrac = UINT32_MAX;
+
+		audio.tickTimeLengthTab[i] = ((uint64_t)timeInt << 32) | (uint32_t)dTimeFrac;
+
 		// for calculating volume ramp length for "tick" ramps
 		audio.rampSpeedValMulTab[i] = (int32_t)(((UINT32_MAX + 1.0) / samplesPerTick) + 0.5);
 	}
@@ -1312,25 +1321,25 @@
 				}
 			}
 
-			/* calculate with 256 times more precision (vol = 0..65535)
+			/* calculate with 16 times more precision than FT2 (vol = 0..4096)
 			** Also, vol envelope range is now 0..16384 instead of being shifted to 0..64
 			*/
 
 			int32_t vol1 = song.globVol * ch->outVol * ch->fadeOutAmp; // 0..64 * 0..64 * 0..32768 = 0..134217728
-			int32_t vol2 = envVal << 7; // 0..16384 * 2^7 = 0..2097152
+			int32_t vol2 = envVal << 3; // 0..16384 * 2^3 = 0..131072
 
-			vol = ((int64_t)vol1 * vol2) >> 32; // 0..65536
+			vol = ((int64_t)vol1 * vol2) >> 32; // 0..4096
 
 			ch->status |= IS_Vol;
 		}
 		else
 		{
-			// calculate with four times more precision (finalVol = 0..65535)
-			vol = ((song.globVol * ch->outVol * ch->fadeOutAmp) + (1 << 10)) >> 11; // 0..64 * 0..64 * 0..32768 -> 0..65536 (rounded)
+			// calculate with 16 times more precision than FT2 (vol = 0..4096)
+			vol = ((song.globVol * ch->outVol * ch->fadeOutAmp) + (1 << 14)) >> 15; // 0..64 * 0..64 * 0..32768 -> 0..4096 (rounded)
 		}
 
-		if (vol > 65535)
-			vol = 65535; // range is now 0..65535 to prevent MUL overflow when voice volume is calculated
+		if (vol > 4096)
+			vol = 4096;
 
 		ch->finalVol = (uint16_t)vol;
 	}
--- a/src/ft2_scopes.c
+++ b/src/ft2_scopes.c
@@ -46,7 +46,6 @@
 static uint64_t oldSFrq, timeNext64, timeNext64Frac;
 static volatile scope_t scope[MAX_VOICES];
 static SDL_Thread *scopeThread;
-static uint8_t *scopeMuteBMP_Ptrs[16];
 
 lastChInstr_t lastChInstr[MAX_VOICES]; // global
 
@@ -199,7 +198,7 @@
 		muteGfxLen = scopeMuteBMP_Widths[chanLookup];
 		muteGfxX = x + ((scopeLen - muteGfxLen) >> 1);
 
-		blitFastClipX(muteGfxX, y + 6, scopeMuteBMP_Ptrs[chanLookup], 162, scopeMuteBMP_Heights[chanLookup], muteGfxLen);
+		blitFastClipX(muteGfxX, y + 6, bmp.scopeMute+scopeMuteBMP_Offs[chanLookup], 162, scopeMuteBMP_Heights[chanLookup], muteGfxLen);
 
 		if (config.ptnChnNumbers)
 			drawScopeNumber(x + 1, y + 1, (uint8_t)i, true);
@@ -551,7 +550,7 @@
 		status = scopeUpdateStatus[i];
 
 		if (status & IS_Vol)
-			sc->SVol = (int8_t)(((ch->finalVol * SCOPE_HEIGHT) + (1 << 15)) >> 16); // rounded
+			sc->SVol = (int8_t)(((ch->finalVol * SCOPE_HEIGHT) + (1 << 11)) >> 12); // rounded
 
 		if (status & IS_Period)
 		{
@@ -655,11 +654,6 @@
 		dFrac = UINT32_MAX;
 
 	scopeTimeLenFrac = (uint32_t)dFrac;
-
-	// setup scope mute BMP pointers
-	assert(bmp.scopeMute != NULL);
-	for (int32_t i = 0; i < 16; i++)
-		scopeMuteBMP_Ptrs[i] = bmp.scopeMute + scopeMuteBMP_Offs[i];
 
 	scopeThread = SDL_CreateThread(scopeThreadFunc, NULL, NULL);
 	if (scopeThread == NULL)
--- a/src/ft2_tables.c
+++ b/src/ft2_tables.c
@@ -320,7 +320,7 @@
 /*                           AUDIO MIXER TABLES                            */
 /* ----------------------------------------------------------------------- */
 
-const uint32_t panningTab[257] = // bit-exact to FT2 table
+const uint16_t panningTab[257] = // bit-exact to FT2 table (except last value 65536 -> 65535)
 {
 	    0, 4096, 5793, 7094, 8192, 9159,10033,10837,11585,12288,12953,13585,14189,14768,15326,15864,
 	16384,16888,17378,17854,18318,18770,19212,19644,20066,20480,20886,21283,21674,22058,22435,22806,
@@ -338,7 +338,7 @@
 	59073,59215,59357,59498,59639,59779,59919,60059,60199,60338,60477,60615,60753,60891,61029,61166,
 	61303,61440,61576,61712,61848,61984,62119,62254,62388,62523,62657,62790,62924,63057,63190,63323,
 	63455,63587,63719,63850,63982,64113,64243,64374,64504,64634,64763,64893,65022,65151,65279,65408,
-	65536
+	65535
 };
 
 /* ----------------------------------------------------------------------- */
--- a/src/ft2_tables.h
+++ b/src/ft2_tables.h
@@ -17,7 +17,7 @@
 extern const uint16_t linearPeriods[1936];
 extern const uint16_t amigaPeriods[1936];
 
-extern const uint32_t panningTab[257];
+extern const uint16_t panningTab[257];
 
 extern const char *dec2StrTab[100];
 extern const char *dec3StrTab[256];
--- a/src/helpdata/FT2.HLP
+++ b/src/helpdata/FT2.HLP
@@ -781,7 +781,7 @@
 Please note that original FT2 can't load this config entry,
 clone only.
 
->@X040@C0011-bit dither:
+>@X040@C001Dithering:
 >@X060@C002
 Works for 16-bit audio mode only.
 Applies random scaled values to the mixed samples before truncating to 16-bit.
--- a/src/helpdata/ft2_help_data.h
+++ b/src/helpdata/ft2_help_data.h
@@ -3,9 +3,9 @@
 
 #include <stdint.h>
 
-#define HELP_DATA_LEN 27298
+#define HELP_DATA_LEN 27295
 
-const uint8_t helpData[27298] =
+const uint8_t helpData[27295] =
 {
 	0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
@@ -1784,504 +1784,504 @@
 	0x27,0x74,0x20,0x6C,0x6F,0x61,0x64,0x20,0x74,0x68,0x69,0x73,
 	0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,0x65,0x6E,0x74,0x72,
 	0x79,0x2C,0x0B,0x63,0x6C,0x6F,0x6E,0x65,0x20,0x6F,0x6E,0x6C,
-	0x79,0x2E,0x00,0x18,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
-	0x30,0x30,0x31,0x31,0x2D,0x62,0x69,0x74,0x20,0x64,0x69,0x74,
-	0x68,0x65,0x72,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
-	0x43,0x30,0x30,0x32,0x21,0x57,0x6F,0x72,0x6B,0x73,0x20,0x66,
-	0x6F,0x72,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x61,0x75,
-	0x64,0x69,0x6F,0x20,0x6D,0x6F,0x64,0x65,0x20,0x6F,0x6E,0x6C,
-	0x79,0x2E,0x4E,0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,0x72,
-	0x61,0x6E,0x64,0x6F,0x6D,0x20,0x73,0x63,0x61,0x6C,0x65,0x64,
-	0x20,0x76,0x61,0x6C,0x75,0x65,0x73,0x20,0x74,0x6F,0x20,0x74,
-	0x68,0x65,0x20,0x6D,0x69,0x78,0x65,0x64,0x20,0x73,0x61,0x6D,
-	0x70,0x6C,0x65,0x73,0x20,0x62,0x65,0x66,0x6F,0x72,0x65,0x20,
-	0x74,0x72,0x75,0x6E,0x63,0x61,0x74,0x69,0x6E,0x67,0x20,0x74,
-	0x6F,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x2E,0x33,0x54,0x68,
-	0x69,0x73,0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x69,0x6E,
-	0x20,0x74,0x68,0x65,0x6F,0x72,0x79,0x20,0x6C,0x6F,0x77,0x65,
-	0x72,0x20,0x74,0x68,0x65,0x20,0x71,0x75,0x61,0x6E,0x74,0x69,
-	0x7A,0x61,0x74,0x69,0x6F,0x6E,0x20,0x6E,0x6F,0x69,0x73,0x65,
-	0x2E,0x1F,0x41,0x6C,0x73,0x6F,0x20,0x61,0x70,0x70,0x6C,0x69,
-	0x65,0x73,0x20,0x66,0x6F,0x72,0x20,0x57,0x41,0x56,0x20,0x72,
-	0x65,0x6E,0x64,0x65,0x72,0x69,0x6E,0x67,0x2E,0x00,0x19,0x3E,
-	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x41,0x6D,
-	0x70,0x6C,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x3A,
+	0x79,0x2E,0x00,0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x44,0x69,0x74,0x68,0x65,0x72,0x69,0x6E,0x67,
+	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
+	0x32,0x21,0x57,0x6F,0x72,0x6B,0x73,0x20,0x66,0x6F,0x72,0x20,
+	0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x61,0x75,0x64,0x69,0x6F,
+	0x20,0x6D,0x6F,0x64,0x65,0x20,0x6F,0x6E,0x6C,0x79,0x2E,0x4E,
+	0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,0x72,0x61,0x6E,0x64,
+	0x6F,0x6D,0x20,0x73,0x63,0x61,0x6C,0x65,0x64,0x20,0x76,0x61,
+	0x6C,0x75,0x65,0x73,0x20,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,
+	0x6D,0x69,0x78,0x65,0x64,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,
+	0x73,0x20,0x62,0x65,0x66,0x6F,0x72,0x65,0x20,0x74,0x72,0x75,
+	0x6E,0x63,0x61,0x74,0x69,0x6E,0x67,0x20,0x74,0x6F,0x20,0x31,
+	0x36,0x2D,0x62,0x69,0x74,0x2E,0x33,0x54,0x68,0x69,0x73,0x20,
+	0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x6F,0x72,0x79,0x20,0x6C,0x6F,0x77,0x65,0x72,0x20,0x74,
+	0x68,0x65,0x20,0x71,0x75,0x61,0x6E,0x74,0x69,0x7A,0x61,0x74,
+	0x69,0x6F,0x6E,0x20,0x6E,0x6F,0x69,0x73,0x65,0x2E,0x1F,0x41,
+	0x6C,0x73,0x6F,0x20,0x61,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,
+	0x66,0x6F,0x72,0x20,0x57,0x41,0x56,0x20,0x72,0x65,0x6E,0x64,
+	0x65,0x72,0x69,0x6E,0x67,0x2E,0x00,0x19,0x3E,0x40,0x58,0x30,
+	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x41,0x6D,0x70,0x6C,0x69,
+	0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x0B,0x3E,0x40,
+	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x46,0x41,0x6D,
+	0x70,0x6C,0x69,0x66,0x69,0x65,0x73,0x20,0x74,0x68,0x65,0x20,
+	0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x77,0x68,0x65,0x6E,0x20,
+	0x6D,0x69,0x78,0x69,0x6E,0x67,0x2E,0x20,0x49,0x66,0x20,0x79,
+	0x6F,0x75,0x20,0x73,0x65,0x74,0x20,0x74,0x68,0x69,0x73,0x20,
+	0x6F,0x6E,0x65,0x20,0x74,0x6F,0x6F,0x20,0x68,0x69,0x67,0x68,
+	0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,0x3A,0x67,0x65,0x74,
+	0x20,0x64,0x69,0x73,0x74,0x6F,0x72,0x74,0x69,0x6F,0x6E,0x2E,
+	0x20,0x33,0x32,0x58,0x20,0x65,0x71,0x75,0x61,0x6C,0x73,0x20,
+	0x66,0x75,0x6C,0x6C,0x20,0x61,0x6D,0x70,0x6C,0x69,0x74,0x75,
+	0x64,0x65,0x20,0x66,0x6F,0x72,0x20,0x6F,0x6E,0x65,0x20,0x63,
+	0x68,0x61,0x6E,0x6E,0x65,0x6C,0x2E,0x00,0x1B,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x46,0x72,0x65,0x71,
+	0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,0x62,0x6C,0x65,0x3A,
 	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
-	0x46,0x41,0x6D,0x70,0x6C,0x69,0x66,0x69,0x65,0x73,0x20,0x74,
-	0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x77,0x68,
-	0x65,0x6E,0x20,0x6D,0x69,0x78,0x69,0x6E,0x67,0x2E,0x20,0x49,
-	0x66,0x20,0x79,0x6F,0x75,0x20,0x73,0x65,0x74,0x20,0x74,0x68,
-	0x69,0x73,0x20,0x6F,0x6E,0x65,0x20,0x74,0x6F,0x6F,0x20,0x68,
-	0x69,0x67,0x68,0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,0x3A,
-	0x67,0x65,0x74,0x20,0x64,0x69,0x73,0x74,0x6F,0x72,0x74,0x69,
-	0x6F,0x6E,0x2E,0x20,0x33,0x32,0x58,0x20,0x65,0x71,0x75,0x61,
-	0x6C,0x73,0x20,0x66,0x75,0x6C,0x6C,0x20,0x61,0x6D,0x70,0x6C,
-	0x69,0x74,0x75,0x64,0x65,0x20,0x66,0x6F,0x72,0x20,0x6F,0x6E,
-	0x65,0x20,0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x2E,0x00,0x1B,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x46,
-	0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,0x62,
-	0x6C,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x40,0x54,0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,
-	0x61,0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,
-	0x20,0x74,0x61,0x62,0x6C,0x65,0x20,0x6D,0x61,0x6B,0x65,0x73,
-	0x20,0x61,0x6C,0x6C,0x20,0x70,0x69,0x74,0x63,0x68,0x20,0x62,
-	0x65,0x6E,0x64,0x73,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,
-	0x63,0x6F,0x6E,0x73,0x74,0x61,0x6E,0x74,0x3F,0x73,0x70,0x65,
-	0x65,0x64,0x2C,0x20,0x69,0x6E,0x64,0x65,0x70,0x65,0x6E,0x64,
-	0x65,0x6E,0x74,0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,0x63,
-	0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x66,0x72,0x65,0x71,0x75,
-	0x65,0x6E,0x63,0x79,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,
-	0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x68,0x69,0x73,
-	0x41,0x6F,0x6E,0x65,0x2C,0x20,0x6F,0x6E,0x20,0x61,0x20,0x66,
-	0x69,0x6E,0x69,0x73,0x68,0x65,0x64,0x20,0x73,0x6F,0x6E,0x67,
-	0x2C,0x20,0x69,0x74,0x20,0x6D,0x69,0x67,0x68,0x74,0x20,0x73,
-	0x6F,0x75,0x6E,0x64,0x20,0x73,0x74,0x72,0x61,0x6E,0x67,0x65,
-	0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x6E,
-	0x64,0x20,0x75,0x73,0x65,0x73,0x0D,0x70,0x6F,0x72,0x74,0x61,
-	0x6D,0x65,0x6E,0x74,0x6F,0x65,0x73,0x2E,0x00,0x20,0x40,0x58,
-	0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,
-	0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x4C,
-	0x61,0x79,0x6F,0x75,0x74,0x3A,0x01,0x3E,0x29,0x3E,0x40,0x58,
-	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x61,0x74,0x74,
-	0x65,0x72,0x6E,0x20,0x6C,0x61,0x79,0x6F,0x75,0x74,0x2C,0x20,
-	0x68,0x65,0x78,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x69,0x6E,
-	0x67,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x41,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x75,0x73,
-	0x65,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x73,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x61,0x72,0x65,0x20,0x6C,0x6F,0x6E,0x67,
-	0x65,0x72,0x20,0x74,0x68,0x61,0x6E,0x20,0x39,0x39,0x20,0x6C,
-	0x69,0x6E,0x65,0x73,0x2C,0x20,0x79,0x6F,0x75,0x20,0x73,0x68,
-	0x6F,0x75,0x6C,0x64,0x20,0x75,0x73,0x65,0x45,0x68,0x65,0x78,
-	0x20,0x63,0x6F,0x75,0x6E,0x74,0x69,0x6E,0x67,0x20,0x73,0x69,
-	0x6E,0x63,0x65,0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x72,
-	0x65,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x32,0x20,0x64,0x69,0x67,
-	0x69,0x74,0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x6C,
-	0x69,0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x63,
-	0x6F,0x6C,0x75,0x6D,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,0x65,
-	0x73,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x43,0x22,0x53,0x74,0x64,0x2E,0x22,0x20,0x28,0x73,
-	0x74,0x61,0x6E,0x64,0x61,0x72,0x64,0x29,0x20,0x77,0x69,0x6C,
-	0x6C,0x20,0x73,0x68,0x6F,0x77,0x20,0x74,0x68,0x65,0x20,0x73,
-	0x61,0x6D,0x70,0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x73,
-	0x20,0x61,0x73,0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,0x28,
-	0x6C,0x69,0x6B,0x65,0x20,0x46,0x54,0x32,0x29,0x2E,0x41,0x22,
-	0x4C,0x69,0x6E,0x65,0x64,0x22,0x20,0x77,0x69,0x6C,0x6C,0x20,
-	0x64,0x72,0x61,0x77,0x20,0x6C,0x69,0x6E,0x65,0x73,0x20,0x62,
-	0x65,0x74,0x77,0x65,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,0x70,
-	0x6F,0x69,0x6E,0x74,0x73,0x2C,0x20,0x6C,0x69,0x6B,0x65,0x20,
-	0x61,0x6E,0x20,0x6F,0x73,0x63,0x69,0x6C,0x6C,0x6F,0x73,0x63,
-	0x6F,0x70,0x65,0x2E,0x00,0x27,0x40,0x58,0x30,0x32,0x30,0x40,
-	0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,
-	0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x4D,0x69,0x73,0x63,0x65,
-	0x6C,0x6C,0x61,0x6E,0x65,0x6F,0x75,0x73,0x3A,0x01,0x3E,0x15,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,
-	0x53,0x79,0x6E,0x63,0x20,0x6F,0x66,0x66,0x3A,0x0B,0x3E,0x40,
-	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3F,0x54,0x65,
-	0x6C,0x6C,0x73,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,
-	0x72,0x61,0x6D,0x20,0x74,0x6F,0x20,0x6E,0x6F,0x74,0x20,0x75,
-	0x73,0x65,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x66,0x6F,0x72,
-	0x20,0x76,0x69,0x64,0x65,0x6F,0x2E,0x20,0x49,0x66,0x20,0x79,
-	0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,
-	0x73,0x40,0x72,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x72,0x61,
-	0x74,0x65,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x36,0x30,
-	0x48,0x7A,0x20,0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,
-	0x2C,0x20,0x74,0x68,0x65,0x6E,0x20,0x56,0x53,0x79,0x6E,0x63,
-	0x20,0x69,0x73,0x20,0x61,0x6C,0x77,0x61,0x79,0x73,0x20,0x6F,
-	0x66,0x66,0x20,0x66,0x6F,0x72,0x45,0x74,0x68,0x69,0x73,0x20,
-	0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x2E,0x20,0x4E,0x6F,0x74,
-	0x20,0x68,0x61,0x76,0x69,0x6E,0x67,0x20,0x56,0x53,0x79,0x6E,
-	0x63,0x20,0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x73,0x75,0x6C,
-	0x74,0x20,0x69,0x6E,0x20,0x6C,0x65,0x73,0x73,0x20,0x69,0x6E,
-	0x70,0x75,0x74,0x2F,0x76,0x69,0x64,0x65,0x6F,0x20,0x64,0x65,
-	0x6C,0x61,0x79,0x2C,0x1E,0x62,0x75,0x74,0x20,0x61,0x6C,0x73,
-	0x6F,0x20,0x70,0x6F,0x74,0x65,0x6E,0x74,0x69,0x61,0x6C,0x20,
-	0x73,0x74,0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x2E,0x01,
-	0x20,0x18,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,
-	0x31,0x50,0x69,0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,
-	0x72,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x43,0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,0x61,
-	0x20,0x73,0x75,0x62,0x70,0x69,0x78,0x65,0x6C,0x20,0x66,0x69,
-	0x6C,0x74,0x65,0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x73,
-	0x20,0x75,0x73,0x65,0x64,0x20,0x77,0x68,0x65,0x6E,0x20,0x74,
-	0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x69,0x73,
-	0x20,0x75,0x70,0x73,0x63,0x61,0x6C,0x65,0x64,0x2E,0x43,0x54,
-	0x68,0x69,0x73,0x20,0x61,0x6C,0x73,0x6F,0x20,0x6D,0x61,0x6B,
-	0x65,0x73,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,
-	0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6C,
-	0x65,0x74,0x65,0x6C,0x79,0x20,0x73,0x74,0x72,0x65,0x74,0x63,
-	0x68,0x20,0x6F,0x75,0x74,0x20,0x69,0x66,0x20,0x69,0x74,0x20,
-	0x64,0x69,0x64,0x6E,0x27,0x74,0x44,0x61,0x6C,0x72,0x65,0x61,
-	0x64,0x79,0x2E,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x6B,
-	0x65,0x65,0x70,0x20,0x69,0x6E,0x20,0x6D,0x69,0x6E,0x64,0x20,
-	0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,
-	0x6C,0x6C,0x20,0x6D,0x61,0x6B,0x65,0x20,0x70,0x69,0x78,0x65,
-	0x6C,0x73,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x62,0x6C,0x75,0x72,
-	0x72,0x79,0x2E,0x00,0x23,0x40,0x58,0x30,0x32,0x30,0x40,0x43,
-	0x30,0x30,0x31,0x41,0x64,0x76,0x61,0x6E,0x63,0x65,0x64,0x20,
-	0x65,0x64,0x69,0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,
-	0x6E,0x73,0x3A,0x20,0x01,0x3E,0x1E,0x3E,0x40,0x58,0x30,0x34,
-	0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x70,0x79,0x2F,0x50,
-	0x61,0x73,0x74,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,0x67,
-	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x37,0x54,0x68,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,
-	0x67,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x66,0x6F,
-	0x72,0x20,0x63,0x6F,0x70,0x79,0x69,0x6E,0x67,0x2F,0x70,0x61,
-	0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x70,
-	0x61,0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,0x46,0x22,0x6E,
-	0x6F,0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,0x2E,0x20,0x54,
-	0x68,0x65,0x20,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,
-	0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,0x20,
-	0x22,0x6E,0x6F,0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,0x20,
-	0x69,0x73,0x20,0x4E,0x6F,0x74,0x65,0x2C,0x20,0x49,0x6E,0x73,
-	0x74,0x72,0x2E,0x20,0x6E,0x72,0x2E,0x2C,0x20,0x56,0x6F,0x6C,
-	0x75,0x6D,0x65,0x2C,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,
-	0x6E,0x72,0x20,0x26,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,
-	0x64,0x61,0x74,0x61,0x2E,0x34,0x3E,0x41,0x73,0x20,0x79,0x6F,
-	0x75,0x20,0x63,0x61,0x6E,0x20,0x73,0x65,0x65,0x20,0x69,0x6E,
-	0x20,0x74,0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,
-	0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x33,0x20,
-	0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x73,0x20,0x6F,0x66,0x3D,0x22,
-	0x65,0x6E,0x61,0x62,0x6C,0x65,0x2F,0x64,0x69,0x73,0x61,0x62,
-	0x6C,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x73,0x22,0x20,
-	0x77,0x68,0x69,0x63,0x68,0x20,0x68,0x61,0x73,0x20,0x74,0x68,
-	0x65,0x20,0x6C,0x65,0x74,0x74,0x65,0x72,0x73,0x20,0x43,0x2C,
-	0x50,0x20,0x26,0x20,0x54,0x20,0x61,0x62,0x6F,0x76,0x65,0x2E,
-	0x45,0x3E,0x43,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x63,0x6F,
-	0x70,0x79,0x2C,0x20,0x69,0x74,0x20,0x63,0x6F,0x6E,0x74,0x72,
-	0x6F,0x6C,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,
-	0x72,0x74,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,
-	0x73,0x20,0x69,0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x63,
-	0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x3E,0x3E,
-	0x50,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x70,0x61,0x73,0x74,
-	0x65,0x20,0x61,0x6E,0x64,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,
-	0x6C,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,0x72,
-	0x74,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,0x73,
-	0x20,0x6F,0x75,0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,0x68,
-	0x65,0x0B,0x63,0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,
-	0x2E,0x45,0x3E,0x54,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x74,
-	0x72,0x61,0x6E,0x73,0x70,0x61,0x72,0x65,0x6E,0x63,0x79,0x2E,
-	0x20,0x49,0x66,0x20,0x69,0x74,0x27,0x73,0x20,0x65,0x6E,0x61,
-	0x62,0x6C,0x65,0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x70,0x61,
-	0x73,0x74,0x69,0x6E,0x67,0x20,0x64,0x6F,0x65,0x73,0x6E,0x27,
-	0x74,0x20,0x6F,0x76,0x65,0x72,0x77,0x72,0x69,0x74,0x65,0x3D,
-	0x64,0x61,0x74,0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6E,0x69,
-	0x6C,0x2D,0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,
-	0x6E,0x2C,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x77,0x69,0x74,0x68,
-	0x20,0x61,0x20,0x6E,0x6F,0x74,0x65,0x20,0x6F,0x72,0x20,0x61,
-	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x3C,0x3E,0x20,0x30,
-	0x2E,0x01,0x3E,0x40,0x3E,0x54,0x68,0x65,0x20,0x63,0x75,0x74,
-	0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x20,0x77,
-	0x6F,0x72,0x6B,0x73,0x20,0x6C,0x69,0x6B,0x65,0x20,0x70,0x61,
-	0x73,0x74,0x69,0x6E,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x7A,
-	0x65,0x72,0x6F,0x2D,0x64,0x61,0x74,0x61,0x2E,0x20,0x54,0x68,
-	0x69,0x73,0x20,0x6D,0x65,0x61,0x6E,0x73,0x3B,0x74,0x68,0x61,
-	0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x74,0x74,0x69,0x6E,
-	0x67,0x20,0x69,0x73,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,
-	0x6C,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x50,0x2D,0x63,
-	0x6F,0x6C,0x75,0x6D,0x6E,0x20,0x28,0x6F,0x72,0x20,0x54,0x2D,
-	0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x29,0x2E,0x3C,0x3E,0x57,0x68,
-	0x65,0x6E,0x20,0x79,0x6F,0x75,0x20,0x63,0x6F,0x70,0x79,0x20,
-	0x64,0x61,0x74,0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6D,0x61,
-	0x73,0x6B,0x69,0x6E,0x67,0x2C,0x20,0x74,0x68,0x65,0x20,0x64,
-	0x69,0x73,0x61,0x62,0x6C,0x65,0x64,0x20,0x70,0x61,0x72,0x74,
-	0x73,0x20,0x61,0x72,0x65,0x20,0x6E,0x6F,0x74,0x43,0x63,0x6C,
-	0x65,0x61,0x72,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,
-	0x20,0x63,0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,
-	0x20,0x28,0x4D,0x61,0x6B,0x69,0x6E,0x67,0x20,0x69,0x74,0x20,
-	0x70,0x6F,0x73,0x73,0x69,0x62,0x6C,0x65,0x20,0x74,0x6F,0x20,
-	0x63,0x6F,0x6C,0x6C,0x65,0x63,0x74,0x20,0x64,0x61,0x74,0x61,
-	0x20,0x66,0x72,0x6F,0x6D,0x27,0x73,0x65,0x76,0x65,0x72,0x61,
-	0x6C,0x20,0x6C,0x6F,0x63,0x61,0x74,0x69,0x6F,0x6E,0x73,0x20,
-	0x69,0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x70,
-	0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x29,0x00,0x03,0x45,
-	0x4E,0x44,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x40,0x54,0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,0x61,0x72,0x20,
+	0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,
+	0x62,0x6C,0x65,0x20,0x6D,0x61,0x6B,0x65,0x73,0x20,0x61,0x6C,
+	0x6C,0x20,0x70,0x69,0x74,0x63,0x68,0x20,0x62,0x65,0x6E,0x64,
+	0x73,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x63,0x6F,0x6E,
+	0x73,0x74,0x61,0x6E,0x74,0x3F,0x73,0x70,0x65,0x65,0x64,0x2C,
+	0x20,0x69,0x6E,0x64,0x65,0x70,0x65,0x6E,0x64,0x65,0x6E,0x74,
+	0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,
+	0x65,0x6E,0x74,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,
+	0x79,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x73,0x77,
+	0x69,0x74,0x63,0x68,0x20,0x74,0x68,0x69,0x73,0x41,0x6F,0x6E,
+	0x65,0x2C,0x20,0x6F,0x6E,0x20,0x61,0x20,0x66,0x69,0x6E,0x69,
+	0x73,0x68,0x65,0x64,0x20,0x73,0x6F,0x6E,0x67,0x2C,0x20,0x69,
+	0x74,0x20,0x6D,0x69,0x67,0x68,0x74,0x20,0x73,0x6F,0x75,0x6E,
+	0x64,0x20,0x73,0x74,0x72,0x61,0x6E,0x67,0x65,0x20,0x69,0x66,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x75,
+	0x73,0x65,0x73,0x0D,0x70,0x6F,0x72,0x74,0x61,0x6D,0x65,0x6E,
+	0x74,0x6F,0x65,0x73,0x2E,0x00,0x20,0x40,0x58,0x30,0x32,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,0x75,
+	0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x4C,0x61,0x79,0x6F,
+	0x75,0x74,0x3A,0x01,0x3E,0x29,0x3E,0x40,0x58,0x30,0x34,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,
+	0x20,0x6C,0x61,0x79,0x6F,0x75,0x74,0x2C,0x20,0x68,0x65,0x78,
+	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x69,0x6E,0x67,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x41,
+	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x75,0x73,0x65,0x20,0x70,
+	0x61,0x74,0x74,0x65,0x72,0x6E,0x73,0x20,0x74,0x68,0x61,0x74,
+	0x20,0x61,0x72,0x65,0x20,0x6C,0x6F,0x6E,0x67,0x65,0x72,0x20,
+	0x74,0x68,0x61,0x6E,0x20,0x39,0x39,0x20,0x6C,0x69,0x6E,0x65,
+	0x73,0x2C,0x20,0x79,0x6F,0x75,0x20,0x73,0x68,0x6F,0x75,0x6C,
+	0x64,0x20,0x75,0x73,0x65,0x45,0x68,0x65,0x78,0x20,0x63,0x6F,
+	0x75,0x6E,0x74,0x69,0x6E,0x67,0x20,0x73,0x69,0x6E,0x63,0x65,
+	0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x6F,
+	0x6E,0x6C,0x79,0x20,0x32,0x20,0x64,0x69,0x67,0x69,0x74,0x73,
+	0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,
+	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x63,0x6F,0x6C,0x75,
+	0x6D,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
+	0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,0x65,0x73,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,
+	0x22,0x53,0x74,0x64,0x2E,0x22,0x20,0x28,0x73,0x74,0x61,0x6E,
+	0x64,0x61,0x72,0x64,0x29,0x20,0x77,0x69,0x6C,0x6C,0x20,0x73,
+	0x68,0x6F,0x77,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,
+	0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x73,0x20,0x61,0x73,
+	0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,0x28,0x6C,0x69,0x6B,
+	0x65,0x20,0x46,0x54,0x32,0x29,0x2E,0x41,0x22,0x4C,0x69,0x6E,
+	0x65,0x64,0x22,0x20,0x77,0x69,0x6C,0x6C,0x20,0x64,0x72,0x61,
+	0x77,0x20,0x6C,0x69,0x6E,0x65,0x73,0x20,0x62,0x65,0x74,0x77,
+	0x65,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,0x70,0x6F,0x69,0x6E,
+	0x74,0x73,0x2C,0x20,0x6C,0x69,0x6B,0x65,0x20,0x61,0x6E,0x20,
+	0x6F,0x73,0x63,0x69,0x6C,0x6C,0x6F,0x73,0x63,0x6F,0x70,0x65,
+	0x2E,0x00,0x27,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,
+	0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,
+	0x6F,0x6E,0x2C,0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,
+	0x6E,0x65,0x6F,0x75,0x73,0x3A,0x01,0x3E,0x15,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,0x53,0x79,0x6E,
+	0x63,0x20,0x6F,0x66,0x66,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
+	0x30,0x40,0x43,0x30,0x30,0x32,0x3F,0x54,0x65,0x6C,0x6C,0x73,
+	0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
+	0x20,0x74,0x6F,0x20,0x6E,0x6F,0x74,0x20,0x75,0x73,0x65,0x20,
+	0x56,0x53,0x79,0x6E,0x63,0x20,0x66,0x6F,0x72,0x20,0x76,0x69,
+	0x64,0x65,0x6F,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x72,
+	0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x40,0x72,
+	0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x72,0x61,0x74,0x65,0x20,
+	0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x36,0x30,0x48,0x7A,0x20,
+	0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,0x2C,0x20,0x74,
+	0x68,0x65,0x6E,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x69,0x73,
+	0x20,0x61,0x6C,0x77,0x61,0x79,0x73,0x20,0x6F,0x66,0x66,0x20,
+	0x66,0x6F,0x72,0x45,0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,
+	0x67,0x72,0x61,0x6D,0x2E,0x20,0x4E,0x6F,0x74,0x20,0x68,0x61,
+	0x76,0x69,0x6E,0x67,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x77,
+	0x69,0x6C,0x6C,0x20,0x72,0x65,0x73,0x75,0x6C,0x74,0x20,0x69,
+	0x6E,0x20,0x6C,0x65,0x73,0x73,0x20,0x69,0x6E,0x70,0x75,0x74,
+	0x2F,0x76,0x69,0x64,0x65,0x6F,0x20,0x64,0x65,0x6C,0x61,0x79,
+	0x2C,0x1E,0x62,0x75,0x74,0x20,0x61,0x6C,0x73,0x6F,0x20,0x70,
+	0x6F,0x74,0x65,0x6E,0x74,0x69,0x61,0x6C,0x20,0x73,0x74,0x75,
+	0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x2E,0x01,0x20,0x18,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x69,
+	0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,
+	0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,0x61,0x20,0x73,0x75,
+	0x62,0x70,0x69,0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,
+	0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x73,0x20,0x75,0x73,
+	0x65,0x64,0x20,0x77,0x68,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,
+	0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x69,0x73,0x20,0x75,0x70,
+	0x73,0x63,0x61,0x6C,0x65,0x64,0x2E,0x43,0x54,0x68,0x69,0x73,
+	0x20,0x61,0x6C,0x73,0x6F,0x20,0x6D,0x61,0x6B,0x65,0x73,0x20,
+	0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x6D,
+	0x6F,0x64,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6C,0x65,0x74,0x65,
+	0x6C,0x79,0x20,0x73,0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x6F,
+	0x75,0x74,0x20,0x69,0x66,0x20,0x69,0x74,0x20,0x64,0x69,0x64,
+	0x6E,0x27,0x74,0x44,0x61,0x6C,0x72,0x65,0x61,0x64,0x79,0x2E,
+	0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x6B,0x65,0x65,0x70,
+	0x20,0x69,0x6E,0x20,0x6D,0x69,0x6E,0x64,0x20,0x74,0x68,0x61,
+	0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x6D,0x61,0x6B,0x65,0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,
+	0x6C,0x6F,0x6F,0x6B,0x20,0x62,0x6C,0x75,0x72,0x72,0x79,0x2E,
+	0x00,0x23,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x41,0x64,0x76,0x61,0x6E,0x63,0x65,0x64,0x20,0x65,0x64,0x69,
+	0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x3A,
+	0x20,0x01,0x3E,0x1E,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x43,0x6F,0x70,0x79,0x2F,0x50,0x61,0x73,0x74,
+	0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,0x67,0x3A,0x0B,0x3E,
+	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x37,0x54,
+	0x68,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,0x67,0x20,0x69,
+	0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x66,0x6F,0x72,0x20,0x63,
+	0x6F,0x70,0x79,0x69,0x6E,0x67,0x2F,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x70,0x61,0x72,0x74,
+	0x73,0x20,0x6F,0x66,0x20,0x61,0x46,0x22,0x6E,0x6F,0x74,0x65,
+	0x2D,0x63,0x65,0x6C,0x6C,0x22,0x2E,0x20,0x54,0x68,0x65,0x20,
+	0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,0x61,
+	0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,0x20,0x22,0x6E,0x6F,
+	0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,0x20,0x69,0x73,0x20,
+	0x4E,0x6F,0x74,0x65,0x2C,0x20,0x49,0x6E,0x73,0x74,0x72,0x2E,
+	0x20,0x6E,0x72,0x2E,0x2C,0x20,0x56,0x6F,0x6C,0x75,0x6D,0x65,
+	0x2C,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,0x6E,0x72,0x20,
+	0x26,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,0x64,0x61,0x74,
+	0x61,0x2E,0x34,0x3E,0x41,0x73,0x20,0x79,0x6F,0x75,0x20,0x63,
+	0x61,0x6E,0x20,0x73,0x65,0x65,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x74,0x68,0x65,
+	0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x33,0x20,0x63,0x6F,0x6C,
+	0x75,0x6D,0x6E,0x73,0x20,0x6F,0x66,0x3D,0x22,0x65,0x6E,0x61,
+	0x62,0x6C,0x65,0x2F,0x64,0x69,0x73,0x61,0x62,0x6C,0x65,0x20,
+	0x62,0x75,0x74,0x74,0x6F,0x6E,0x73,0x22,0x20,0x77,0x68,0x69,
+	0x63,0x68,0x20,0x68,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x6C,
+	0x65,0x74,0x74,0x65,0x72,0x73,0x20,0x43,0x2C,0x50,0x20,0x26,
+	0x20,0x54,0x20,0x61,0x62,0x6F,0x76,0x65,0x2E,0x45,0x3E,0x43,
+	0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x63,0x6F,0x70,0x79,0x2C,
+	0x20,0x69,0x74,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x73,
+	0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,0x72,0x74,0x73,
+	0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,0x73,0x20,0x69,
+	0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x70,0x79,
+	0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x3E,0x3E,0x50,0x20,0x6D,
+	0x65,0x61,0x6E,0x73,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x61,
+	0x6E,0x64,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x73,0x20,
+	0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,0x72,0x74,0x73,0x20,
+	0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,0x73,0x20,0x6F,0x75,
+	0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,0x68,0x65,0x0B,0x63,
+	0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x45,0x3E,
+	0x54,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x74,0x72,0x61,0x6E,
+	0x73,0x70,0x61,0x72,0x65,0x6E,0x63,0x79,0x2E,0x20,0x49,0x66,
+	0x20,0x69,0x74,0x27,0x73,0x20,0x65,0x6E,0x61,0x62,0x6C,0x65,
+	0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x64,0x6F,0x65,0x73,0x6E,0x27,0x74,0x20,0x6F,
+	0x76,0x65,0x72,0x77,0x72,0x69,0x74,0x65,0x3D,0x64,0x61,0x74,
+	0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6E,0x69,0x6C,0x2D,0x69,
+	0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,
+	0x6F,0x6E,0x6C,0x79,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20,
+	0x6E,0x6F,0x74,0x65,0x20,0x6F,0x72,0x20,0x61,0x20,0x6E,0x75,
+	0x6D,0x62,0x65,0x72,0x20,0x3C,0x3E,0x20,0x30,0x2E,0x01,0x3E,
+	0x40,0x3E,0x54,0x68,0x65,0x20,0x63,0x75,0x74,0x20,0x66,0x75,
+	0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x20,0x77,0x6F,0x72,0x6B,
+	0x73,0x20,0x6C,0x69,0x6B,0x65,0x20,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x7A,0x65,0x72,0x6F,
+	0x2D,0x64,0x61,0x74,0x61,0x2E,0x20,0x54,0x68,0x69,0x73,0x20,
+	0x6D,0x65,0x61,0x6E,0x73,0x3B,0x74,0x68,0x61,0x74,0x20,0x74,
+	0x68,0x65,0x20,0x63,0x75,0x74,0x74,0x69,0x6E,0x67,0x20,0x69,
+	0x73,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x6C,0x65,0x64,
+	0x20,0x77,0x69,0x74,0x68,0x20,0x50,0x2D,0x63,0x6F,0x6C,0x75,
+	0x6D,0x6E,0x20,0x28,0x6F,0x72,0x20,0x54,0x2D,0x63,0x6F,0x6C,
+	0x75,0x6D,0x6E,0x29,0x2E,0x3C,0x3E,0x57,0x68,0x65,0x6E,0x20,
+	0x79,0x6F,0x75,0x20,0x63,0x6F,0x70,0x79,0x20,0x64,0x61,0x74,
+	0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6D,0x61,0x73,0x6B,0x69,
+	0x6E,0x67,0x2C,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x73,0x61,
+	0x62,0x6C,0x65,0x64,0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x61,
+	0x72,0x65,0x20,0x6E,0x6F,0x74,0x43,0x63,0x6C,0x65,0x61,0x72,
+	0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,
+	0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x20,0x28,0x4D,
+	0x61,0x6B,0x69,0x6E,0x67,0x20,0x69,0x74,0x20,0x70,0x6F,0x73,
+	0x73,0x69,0x62,0x6C,0x65,0x20,0x74,0x6F,0x20,0x63,0x6F,0x6C,
+	0x6C,0x65,0x63,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,
+	0x6F,0x6D,0x27,0x73,0x65,0x76,0x65,0x72,0x61,0x6C,0x20,0x6C,
+	0x6F,0x63,0x61,0x74,0x69,0x6F,0x6E,0x73,0x20,0x69,0x6E,0x74,
+	0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x70,0x79,0x62,0x75,
+	0x66,0x66,0x65,0x72,0x2E,0x29,0x00,0x03,0x45,0x4E,0x44,0x4C,
+	0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x0E,0x40,0x4C,0x50,0x72,0x6F,0x62,0x6C,0x65,0x6D,0x73,0x2F,
-	0x46,0x41,0x51,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x41,0x3E,
-	0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x43,0x61,0x6E,0x20,
-	0x49,0x20,0x6D,0x61,0x6B,0x65,0x20,0x66,0x75,0x6C,0x6C,0x73,
-	0x63,0x72,0x65,0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x73,
-	0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x6F,0x75,0x74,0x20,0x74,
-	0x68,0x65,0x20,0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x63,0x72,
-	0x65,0x65,0x6E,0x3F,0x3A,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,
-	0x3A,0x20,0x45,0x6E,0x61,0x62,0x6C,0x65,0x20,0x22,0x50,0x69,
-	0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x22,0x20,
+	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0E,0x40,0x4C,
+	0x50,0x72,0x6F,0x62,0x6C,0x65,0x6D,0x73,0x2F,0x46,0x41,0x51,
+	0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x41,0x3E,0x40,0x43,0x30,
+	0x30,0x31,0x51,0x3A,0x20,0x43,0x61,0x6E,0x20,0x49,0x20,0x6D,
+	0x61,0x6B,0x65,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,
+	0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x73,0x74,0x72,0x65,
+	0x74,0x63,0x68,0x20,0x6F,0x75,0x74,0x20,0x74,0x68,0x65,0x20,
+	0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,
+	0x3F,0x3A,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x45,
+	0x6E,0x61,0x62,0x6C,0x65,0x20,0x22,0x50,0x69,0x78,0x65,0x6C,
+	0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x22,0x20,0x69,0x6E,0x20,
+	0x43,0x6F,0x6E,0x66,0x69,0x67,0x20,0x2D,0x3E,0x20,0x4D,0x69,
+	0x73,0x63,0x65,0x6C,0x6C,0x61,0x6E,0x65,0x6F,0x75,0x73,0x2E,
+	0x4D,0x3E,0x40,0x58,0x30,0x33,0x35,0x49,0x74,0x20,0x77,0x6F,
+	0x6E,0x27,0x74,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x70,0x72,0x65,
+	0x74,0x74,0x79,0x2C,0x20,0x62,0x75,0x74,0x20,0x74,0x6F,0x20,
+	0x73,0x6F,0x6D,0x65,0x20,0x70,0x65,0x6F,0x70,0x6C,0x65,0x20,
+	0x69,0x74,0x27,0x73,0x20,0x6D,0x75,0x63,0x68,0x20,0x62,0x65,
+	0x74,0x74,0x65,0x72,0x20,0x74,0x68,0x61,0x6E,0x20,0x6E,0x6F,
+	0x74,0x68,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,
+	0x30,0x27,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x49,
+	0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x75,0x73,0x65,0x20,0x41,
+	0x4C,0x54,0x2B,0x46,0x34,0x20,0x61,0x6E,0x64,0x20,0x41,0x4C,
+	0x54,0x2B,0x46,0x35,0x21,0x4E,0x3E,0x40,0x43,0x30,0x30,0x32,
+	0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,0x3A,0x20,
+	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x68,0x61,0x76,0x65,0x20,
+	0x47,0x65,0x46,0x6F,0x72,0x63,0x65,0x20,0x45,0x78,0x70,0x65,
+	0x72,0x69,0x65,0x6E,0x63,0x65,0x20,0x69,0x6E,0x73,0x74,0x61,
+	0x6C,0x6C,0x65,0x64,0x2C,0x20,0x79,0x6F,0x75,0x20,0x6E,0x65,
+	0x65,0x64,0x20,0x74,0x6F,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,
+	0x2B,0x3E,0x40,0x58,0x30,0x33,0x35,0x74,0x68,0x65,0x20,0x6B,
+	0x65,0x79,0x62,0x69,0x6E,0x64,0x69,0x6E,0x67,0x73,0x20,0x69,
+	0x6E,0x20,0x69,0x74,0x73,0x20,0x73,0x65,0x74,0x74,0x69,0x6E,
+	0x67,0x73,0x20,0x70,0x61,0x67,0x65,0x2E,0x56,0x6D,0x61,0x63,
+	0x4F,0x53,0x2F,0x4F,0x53,0x20,0x58,0x3A,0x20,0x43,0x68,0x61,
+	0x6E,0x67,0x65,0x20,0x41,0x4C,0x54,0x2B,0x46,0x34,0x2F,0x41,
+	0x4C,0x54,0x2B,0x46,0x35,0x20,0x6B,0x65,0x79,0x73,0x20,0x69,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,0x74,0x6F,0x20,
+	0x73,0x6F,0x6D,0x65,0x74,0x68,0x69,0x6E,0x67,0x20,0x65,0x6C,
+	0x73,0x65,0x2E,0x20,0x41,0x6C,0x73,0x6F,0x20,0x66,0x6F,0x72,
+	0x20,0x47,0x4E,0x55,0x2F,0x4C,0x69,0x6E,0x75,0x78,0x2E,0x06,
+	0x3E,0x40,0x58,0x30,0x32,0x30,0x2B,0x3E,0x40,0x43,0x30,0x30,
+	0x31,0x51,0x3A,0x20,0x54,0x68,0x65,0x20,0x6D,0x6F,0x75,0x73,
+	0x65,0x20,0x63,0x75,0x72,0x73,0x6F,0x72,0x20,0x69,0x73,0x20,
+	0x64,0x65,0x6C,0x61,0x79,0x65,0x64,0x2F,0x6C,0x61,0x67,0x67,
+	0x79,0x21,0x44,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,
+	0x4D,0x61,0x6B,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x22,0x53,
+	0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x6D,0x6F,0x75,0x73,
+	0x65,0x22,0x20,0x69,0x73,0x20,0x64,0x69,0x73,0x61,0x62,0x6C,
+	0x65,0x64,0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,
+	0x20,0x2D,0x3E,0x20,0x4C,0x61,0x79,0x6F,0x75,0x74,0x2E,0x4B,
+	0x3E,0x40,0x58,0x30,0x33,0x35,0x41,0x6C,0x74,0x65,0x72,0x6E,
+	0x61,0x74,0x69,0x76,0x65,0x6C,0x79,0x2C,0x20,0x79,0x6F,0x75,
+	0x20,0x63,0x61,0x6E,0x20,0x65,0x6E,0x61,0x62,0x6C,0x65,0x20,
+	0x22,0x56,0x53,0x79,0x6E,0x63,0x20,0x6F,0x66,0x66,0x22,0x20,
 	0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,0x20,0x2D,0x3E,
 	0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,0x6E,0x65,0x6F,
-	0x75,0x73,0x2E,0x4D,0x3E,0x40,0x58,0x30,0x33,0x35,0x49,0x74,
-	0x20,0x77,0x6F,0x6E,0x27,0x74,0x20,0x6C,0x6F,0x6F,0x6B,0x20,
-	0x70,0x72,0x65,0x74,0x74,0x79,0x2C,0x20,0x62,0x75,0x74,0x20,
-	0x74,0x6F,0x20,0x73,0x6F,0x6D,0x65,0x20,0x70,0x65,0x6F,0x70,
-	0x6C,0x65,0x20,0x69,0x74,0x27,0x73,0x20,0x6D,0x75,0x63,0x68,
-	0x20,0x62,0x65,0x74,0x74,0x65,0x72,0x20,0x74,0x68,0x61,0x6E,
-	0x20,0x6E,0x6F,0x74,0x68,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,
-	0x58,0x30,0x32,0x30,0x27,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,
-	0x3A,0x20,0x49,0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x75,0x73,
-	0x65,0x20,0x41,0x4C,0x54,0x2B,0x46,0x34,0x20,0x61,0x6E,0x64,
-	0x20,0x41,0x4C,0x54,0x2B,0x46,0x35,0x21,0x4E,0x3E,0x40,0x43,
-	0x30,0x30,0x32,0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,
-	0x73,0x3A,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x68,0x61,
-	0x76,0x65,0x20,0x47,0x65,0x46,0x6F,0x72,0x63,0x65,0x20,0x45,
-	0x78,0x70,0x65,0x72,0x69,0x65,0x6E,0x63,0x65,0x20,0x69,0x6E,
-	0x73,0x74,0x61,0x6C,0x6C,0x65,0x64,0x2C,0x20,0x79,0x6F,0x75,
-	0x20,0x6E,0x65,0x65,0x64,0x20,0x74,0x6F,0x20,0x63,0x68,0x61,
-	0x6E,0x67,0x65,0x2B,0x3E,0x40,0x58,0x30,0x33,0x35,0x74,0x68,
-	0x65,0x20,0x6B,0x65,0x79,0x62,0x69,0x6E,0x64,0x69,0x6E,0x67,
-	0x73,0x20,0x69,0x6E,0x20,0x69,0x74,0x73,0x20,0x73,0x65,0x74,
-	0x74,0x69,0x6E,0x67,0x73,0x20,0x70,0x61,0x67,0x65,0x2E,0x56,
-	0x6D,0x61,0x63,0x4F,0x53,0x2F,0x4F,0x53,0x20,0x58,0x3A,0x20,
-	0x43,0x68,0x61,0x6E,0x67,0x65,0x20,0x41,0x4C,0x54,0x2B,0x46,
-	0x34,0x2F,0x41,0x4C,0x54,0x2B,0x46,0x35,0x20,0x6B,0x65,0x79,
-	0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,
-	0x74,0x6F,0x20,0x73,0x6F,0x6D,0x65,0x74,0x68,0x69,0x6E,0x67,
-	0x20,0x65,0x6C,0x73,0x65,0x2E,0x20,0x41,0x6C,0x73,0x6F,0x20,
-	0x66,0x6F,0x72,0x20,0x47,0x4E,0x55,0x2F,0x4C,0x69,0x6E,0x75,
-	0x78,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x2B,0x3E,0x40,
-	0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x54,0x68,0x65,0x20,0x6D,
-	0x6F,0x75,0x73,0x65,0x20,0x63,0x75,0x72,0x73,0x6F,0x72,0x20,
-	0x69,0x73,0x20,0x64,0x65,0x6C,0x61,0x79,0x65,0x64,0x2F,0x6C,
-	0x61,0x67,0x67,0x79,0x21,0x44,0x3E,0x40,0x43,0x30,0x30,0x32,
-	0x41,0x3A,0x20,0x4D,0x61,0x6B,0x65,0x20,0x73,0x75,0x72,0x65,
-	0x20,0x22,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x6D,
-	0x6F,0x75,0x73,0x65,0x22,0x20,0x69,0x73,0x20,0x64,0x69,0x73,
-	0x61,0x62,0x6C,0x65,0x64,0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,
-	0x66,0x69,0x67,0x20,0x2D,0x3E,0x20,0x4C,0x61,0x79,0x6F,0x75,
-	0x74,0x2E,0x4B,0x3E,0x40,0x58,0x30,0x33,0x35,0x41,0x6C,0x74,
-	0x65,0x72,0x6E,0x61,0x74,0x69,0x76,0x65,0x6C,0x79,0x2C,0x20,
-	0x79,0x6F,0x75,0x20,0x63,0x61,0x6E,0x20,0x65,0x6E,0x61,0x62,
-	0x6C,0x65,0x20,0x22,0x56,0x53,0x79,0x6E,0x63,0x20,0x6F,0x66,
-	0x66,0x22,0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,
-	0x20,0x2D,0x3E,0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,
-	0x6E,0x65,0x6F,0x75,0x73,0x2E,0x46,0x3E,0x54,0x68,0x69,0x73,
-	0x20,0x68,0x6F,0x77,0x65,0x76,0x65,0x72,0x2C,0x20,0x77,0x69,
-	0x6C,0x6C,0x20,0x69,0x6E,0x74,0x72,0x6F,0x64,0x75,0x63,0x65,
-	0x20,0x73,0x74,0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x20,
-	0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,
-	0x72,0x65,0x6E,0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x72,0x61,
-	0x74,0x65,0x20,0x69,0x73,0x22,0x3E,0x6E,0x6F,0x74,0x20,0x65,
-	0x78,0x61,0x63,0x74,0x20,0x74,0x6F,0x20,0x79,0x6F,0x75,0x72,
-	0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x20,0x72,
-	0x61,0x74,0x65,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x33,
-	0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x57,0x69,0x6C,
-	0x6C,0x20,0x79,0x6F,0x75,0x20,0x69,0x6D,0x70,0x6C,0x65,0x6D,
-	0x65,0x6E,0x74,0x20,0x4D,0x49,0x44,0x49,0x20,0x6F,0x75,0x74,
-	0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x61,0x6C,0x69,
-	0x74,0x79,0x3F,0x4D,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,
-	0x20,0x4E,0x6F,0x2C,0x20,0x73,0x6F,0x72,0x72,0x79,0x2E,0x20,
-	0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x76,0x65,0x72,0x79,
-	0x20,0x64,0x69,0x66,0x66,0x69,0x63,0x75,0x6C,0x74,0x20,0x74,
-	0x6F,0x20,0x69,0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x20,
-	0x63,0x6F,0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x77,0x68,
-	0x65,0x6E,0x20,0x68,0x61,0x76,0x69,0x6E,0x67,0x3C,0x3E,0x40,
-	0x58,0x30,0x33,0x35,0x68,0x69,0x67,0x68,0x65,0x72,0x20,0x61,
-	0x75,0x64,0x69,0x6F,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,
-	0x73,0x69,0x7A,0x65,0x73,0x20,0x28,0x62,0x75,0x66,0x66,0x65,
-	0x72,0x65,0x64,0x20,0x72,0x65,0x70,0x6C,0x61,0x79,0x65,0x72,
-	0x20,0x74,0x69,0x63,0x6B,0x73,0x29,0x2E,0x2E,0x2E,0x06,0x3E,
-	0x40,0x58,0x30,0x32,0x30,0x30,0x3E,0x40,0x43,0x30,0x30,0x31,
-	0x51,0x3A,0x20,0x57,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,
-	0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,
-	0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x73,
-	0x74,0x6F,0x72,0x65,0x64,0x3F,0x3F,0x3E,0x40,0x43,0x30,0x30,
-	0x32,0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,0x3A,
-	0x20,0x5C,0x55,0x73,0x65,0x72,0x73,0x5C,0x55,0x53,0x45,0x52,
-	0x5C,0x41,0x70,0x70,0x44,0x61,0x74,0x61,0x5C,0x52,0x6F,0x61,
-	0x6D,0x69,0x6E,0x67,0x5C,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,
-	0x6E,0x65,0x5C,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x45,0x3E,
-	0x40,0x58,0x30,0x33,0x35,0x4F,0x53,0x20,0x58,0x3A,0x20,0x2F,
-	0x55,0x73,0x65,0x72,0x73,0x2F,0x55,0x53,0x45,0x52,0x2F,0x4C,
-	0x69,0x62,0x72,0x61,0x72,0x79,0x2F,0x41,0x70,0x70,0x6C,0x69,
-	0x63,0x61,0x74,0x69,0x6F,0x6E,0x20,0x53,0x75,0x70,0x70,0x6F,
-	0x72,0x74,0x2F,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,
-	0x2F,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x2F,0x47,0x4E,0x55,
-	0x2F,0x4C,0x69,0x6E,0x75,0x78,0x3A,0x20,0x2F,0x68,0x6F,0x6D,
-	0x65,0x2F,0x55,0x53,0x45,0x52,0x2F,0x2E,0x63,0x6F,0x6E,0x66,
-	0x69,0x67,0x2F,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,
-	0x2F,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x01,0x3E,0x48,0x49,
-	0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x73,0x74,
-	0x6F,0x72,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,
-	0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x64,0x69,0x72,0x65,
-	0x63,0x74,0x6F,0x72,0x79,0x20,0x69,0x66,0x20,0x74,0x68,0x65,
-	0x20,0x70,0x61,0x74,0x68,0x20,0x63,0x6F,0x75,0x6C,0x64,0x6E,
-	0x27,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,0x4D,
-	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x70,0x75,0x74,0x20,0x74,
-	0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,
-	0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x69,0x6E,
-	0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
-	0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x2C,0x20,
-	0x69,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x61,0x64,
-	0x20,0x74,0x68,0x61,0x74,0x4A,0x6F,0x6E,0x65,0x20,0x61,0x6E,
-	0x64,0x20,0x6E,0x6F,0x74,0x20,0x61,0x74,0x74,0x65,0x6D,0x70,
-	0x74,0x20,0x74,0x6F,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,
-	0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,0x64,0x69,0x72,0x73,0x20,
-	0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,0x75,
-	0x73,0x65,0x72,0x2E,0x20,0x28,0x70,0x6F,0x72,0x74,0x61,0x62,
-	0x6C,0x65,0x20,0x6D,0x6F,0x64,0x65,0x29,0x06,0x3E,0x40,0x58,
-	0x30,0x32,0x30,0x42,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,
-	0x20,0x43,0x61,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6C,0x6F,
-	0x6E,0x65,0x20,0x72,0x65,0x61,0x64,0x20,0x46,0x54,0x32,0x2E,
-	0x43,0x46,0x47,0x20,0x66,0x72,0x6F,0x6D,0x20,0x72,0x65,0x61,
-	0x6C,0x20,0x46,0x54,0x32,0x2C,0x20,0x61,0x6E,0x64,0x20,0x76,
-	0x69,0x63,0x65,0x20,0x76,0x65,0x72,0x73,0x61,0x3F,0x4C,0x3E,
-	0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x59,0x65,0x73,0x2C,
-	0x20,0x69,0x74,0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x77,
-	0x6F,0x72,0x6B,0x20,0x6A,0x75,0x73,0x74,0x20,0x66,0x69,0x6E,
-	0x65,0x2E,0x20,0x50,0x75,0x74,0x20,0x69,0x74,0x20,0x69,0x6E,
-	0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,
-	0x72,0x79,0x20,0x73,0x68,0x6F,0x77,0x6E,0x20,0x61,0x62,0x6F,
-	0x76,0x65,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x52,0x3E,
-	0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x53,0x6D,0x70,0x2E,
-	0x20,0x45,0x64,0x2E,0x3A,0x20,0x57,0x68,0x69,0x6C,0x65,0x20,
-	0x7A,0x6F,0x6F,0x6D,0x69,0x6E,0x67,0x20,0x69,0x6E,0x2C,0x20,
-	0x49,0x20,0x73,0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,0x20,
-	0x63,0x61,0x6E,0x27,0x74,0x20,0x6D,0x61,0x72,0x6B,0x20,0x74,
-	0x68,0x65,0x20,0x6C,0x61,0x73,0x74,0x20,0x73,0x61,0x6D,0x70,
-	0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x21,0x47,0x3E,0x40,
-	0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x54,0x68,0x69,0x73,0x20,
-	0x69,0x73,0x20,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x20,0x54,
-	0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x20,0x6C,0x69,0x6D,
-	0x69,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x69,0x6E,0x20,0x74,
-	0x68,0x65,0x20,0x6E,0x61,0x74,0x75,0x72,0x65,0x20,0x6F,0x66,
-	0x20,0x73,0x63,0x61,0x6C,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,
-	0x58,0x30,0x32,0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,
-	0x3A,0x20,0x49,0x20,0x66,0x6F,0x75,0x6E,0x64,0x20,0x61,0x20,
-	0x62,0x75,0x67,0x21,0x4B,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,
-	0x3A,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x73,0x65,0x6E,
-	0x64,0x20,0x61,0x20,0x6D,0x61,0x69,0x6C,0x20,0x74,0x6F,0x20,
-	0x6F,0x6C,0x61,0x76,0x2E,0x73,0x6F,0x72,0x65,0x6E,0x73,0x65,
-	0x6E,0x40,0x6C,0x69,0x76,0x65,0x2E,0x6E,0x6F,0x20,0x61,0x6E,
-	0x64,0x20,0x74,0x72,0x79,0x20,0x74,0x6F,0x20,0x65,0x78,0x70,
-	0x6C,0x61,0x69,0x6E,0x20,0x69,0x74,0x2E,0x00,0x03,0x45,0x4E,
-	0x44,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x75,0x73,0x2E,0x46,0x3E,0x54,0x68,0x69,0x73,0x20,0x68,0x6F,
+	0x77,0x65,0x76,0x65,0x72,0x2C,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x69,0x6E,0x74,0x72,0x6F,0x64,0x75,0x63,0x65,0x20,0x73,0x74,
+	0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x20,0x62,0x65,0x63,
+	0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x6E,
+	0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x72,0x61,0x74,0x65,0x20,
+	0x69,0x73,0x22,0x3E,0x6E,0x6F,0x74,0x20,0x65,0x78,0x61,0x63,
+	0x74,0x20,0x74,0x6F,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,
+	0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x20,0x72,0x61,0x74,0x65,
+	0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x33,0x3E,0x40,0x43,
+	0x30,0x30,0x31,0x51,0x3A,0x20,0x57,0x69,0x6C,0x6C,0x20,0x79,
+	0x6F,0x75,0x20,0x69,0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,
+	0x20,0x4D,0x49,0x44,0x49,0x20,0x6F,0x75,0x74,0x20,0x66,0x75,
+	0x6E,0x63,0x74,0x69,0x6F,0x6E,0x61,0x6C,0x69,0x74,0x79,0x3F,
+	0x4D,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x4E,0x6F,
+	0x2C,0x20,0x73,0x6F,0x72,0x72,0x79,0x2E,0x20,0x54,0x68,0x69,
+	0x73,0x20,0x69,0x73,0x20,0x76,0x65,0x72,0x79,0x20,0x64,0x69,
+	0x66,0x66,0x69,0x63,0x75,0x6C,0x74,0x20,0x74,0x6F,0x20,0x69,
+	0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x20,0x63,0x6F,0x72,
+	0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x77,0x68,0x65,0x6E,0x20,
+	0x68,0x61,0x76,0x69,0x6E,0x67,0x3C,0x3E,0x40,0x58,0x30,0x33,
+	0x35,0x68,0x69,0x67,0x68,0x65,0x72,0x20,0x61,0x75,0x64,0x69,
+	0x6F,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x73,0x69,0x7A,
+	0x65,0x73,0x20,0x28,0x62,0x75,0x66,0x66,0x65,0x72,0x65,0x64,
+	0x20,0x72,0x65,0x70,0x6C,0x61,0x79,0x65,0x72,0x20,0x74,0x69,
+	0x63,0x6B,0x73,0x29,0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,0x30,
+	0x32,0x30,0x30,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,
+	0x57,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x74,0x68,0x65,
+	0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,
+	0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x73,0x74,0x6F,0x72,
+	0x65,0x64,0x3F,0x3F,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,
+	0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,0x3A,0x20,0x5C,0x55,
+	0x73,0x65,0x72,0x73,0x5C,0x55,0x53,0x45,0x52,0x5C,0x41,0x70,
+	0x70,0x44,0x61,0x74,0x61,0x5C,0x52,0x6F,0x61,0x6D,0x69,0x6E,
+	0x67,0x5C,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x5C,
+	0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x45,0x3E,0x40,0x58,0x30,
+	0x33,0x35,0x4F,0x53,0x20,0x58,0x3A,0x20,0x2F,0x55,0x73,0x65,
+	0x72,0x73,0x2F,0x55,0x53,0x45,0x52,0x2F,0x4C,0x69,0x62,0x72,
+	0x61,0x72,0x79,0x2F,0x41,0x70,0x70,0x6C,0x69,0x63,0x61,0x74,
+	0x69,0x6F,0x6E,0x20,0x53,0x75,0x70,0x70,0x6F,0x72,0x74,0x2F,
+	0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x2F,0x46,0x54,
+	0x32,0x2E,0x43,0x46,0x47,0x2F,0x47,0x4E,0x55,0x2F,0x4C,0x69,
+	0x6E,0x75,0x78,0x3A,0x20,0x2F,0x68,0x6F,0x6D,0x65,0x2F,0x55,
+	0x53,0x45,0x52,0x2F,0x2E,0x63,0x6F,0x6E,0x66,0x69,0x67,0x2F,
+	0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x2F,0x46,0x54,
+	0x32,0x2E,0x43,0x46,0x47,0x01,0x3E,0x48,0x49,0x74,0x20,0x77,
+	0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x73,0x74,0x6F,0x72,0x65,
+	0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,
+	0x67,0x72,0x61,0x6D,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,
+	0x72,0x79,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x70,0x61,
+	0x74,0x68,0x20,0x63,0x6F,0x75,0x6C,0x64,0x6E,0x27,0x74,0x20,
+	0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,0x4D,0x49,0x66,0x20,
+	0x79,0x6F,0x75,0x20,0x70,0x75,0x74,0x20,0x74,0x68,0x65,0x20,
+	0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,
+	0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x64,0x69,
+	0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x2C,0x20,0x69,0x74,0x20,
+	0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x61,0x64,0x20,0x74,0x68,
+	0x61,0x74,0x4A,0x6F,0x6E,0x65,0x20,0x61,0x6E,0x64,0x20,0x6E,
+	0x6F,0x74,0x20,0x61,0x74,0x74,0x65,0x6D,0x70,0x74,0x20,0x74,
+	0x6F,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x63,0x6F,0x6E,
+	0x66,0x69,0x67,0x20,0x64,0x69,0x72,0x73,0x20,0x66,0x6F,0x72,
+	0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,0x75,0x73,0x65,0x72,
+	0x2E,0x20,0x28,0x70,0x6F,0x72,0x74,0x61,0x62,0x6C,0x65,0x20,
+	0x6D,0x6F,0x64,0x65,0x29,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,
+	0x42,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x43,0x61,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x20,
+	0x72,0x65,0x61,0x64,0x20,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,
+	0x20,0x66,0x72,0x6F,0x6D,0x20,0x72,0x65,0x61,0x6C,0x20,0x46,
+	0x54,0x32,0x2C,0x20,0x61,0x6E,0x64,0x20,0x76,0x69,0x63,0x65,
+	0x20,0x76,0x65,0x72,0x73,0x61,0x3F,0x4C,0x3E,0x40,0x43,0x30,
+	0x30,0x32,0x41,0x3A,0x20,0x59,0x65,0x73,0x2C,0x20,0x69,0x74,
+	0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x77,0x6F,0x72,0x6B,
+	0x20,0x6A,0x75,0x73,0x74,0x20,0x66,0x69,0x6E,0x65,0x2E,0x20,
+	0x50,0x75,0x74,0x20,0x69,0x74,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x20,
+	0x73,0x68,0x6F,0x77,0x6E,0x20,0x61,0x62,0x6F,0x76,0x65,0x2E,
+	0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x52,0x3E,0x40,0x43,0x30,
+	0x30,0x31,0x51,0x3A,0x20,0x53,0x6D,0x70,0x2E,0x20,0x45,0x64,
+	0x2E,0x3A,0x20,0x57,0x68,0x69,0x6C,0x65,0x20,0x7A,0x6F,0x6F,
+	0x6D,0x69,0x6E,0x67,0x20,0x69,0x6E,0x2C,0x20,0x49,0x20,0x73,
+	0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,0x20,0x63,0x61,0x6E,
+	0x27,0x74,0x20,0x6D,0x61,0x72,0x6B,0x20,0x74,0x68,0x65,0x20,
+	0x6C,0x61,0x73,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,
+	0x70,0x6F,0x69,0x6E,0x74,0x21,0x47,0x3E,0x40,0x43,0x30,0x30,
+	0x32,0x41,0x3A,0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,
+	0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x20,0x54,0x68,0x69,0x73,
+	0x20,0x69,0x73,0x20,0x61,0x20,0x6C,0x69,0x6D,0x69,0x74,0x61,
+	0x74,0x69,0x6F,0x6E,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,
+	0x6E,0x61,0x74,0x75,0x72,0x65,0x20,0x6F,0x66,0x20,0x73,0x63,
+	0x61,0x6C,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,
+	0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x49,
+	0x20,0x66,0x6F,0x75,0x6E,0x64,0x20,0x61,0x20,0x62,0x75,0x67,
+	0x21,0x4B,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x50,
+	0x6C,0x65,0x61,0x73,0x65,0x20,0x73,0x65,0x6E,0x64,0x20,0x61,
+	0x20,0x6D,0x61,0x69,0x6C,0x20,0x74,0x6F,0x20,0x6F,0x6C,0x61,
+	0x76,0x2E,0x73,0x6F,0x72,0x65,0x6E,0x73,0x65,0x6E,0x40,0x6C,
+	0x69,0x76,0x65,0x2E,0x6E,0x6F,0x20,0x61,0x6E,0x64,0x20,0x74,
+	0x72,0x79,0x20,0x74,0x6F,0x20,0x65,0x78,0x70,0x6C,0x61,0x69,
+	0x6E,0x20,0x69,0x74,0x2E,0x00,0x03,0x45,0x4E,0x44,0x4C,0x3B,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0C,
-	0x40,0x4C,0x4B,0x6E,0x6F,0x77,0x6E,0x20,0x62,0x75,0x67,0x73,
-	0x06,0x3E,0x40,0x58,0x30,0x31,0x30,0x14,0x3E,0x40,0x43,0x30,
-	0x30,0x31,0x53,0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,0x69,
-	0x74,0x6F,0x72,0x3A,0x06,0x3E,0x40,0x43,0x30,0x30,0x32,0x4E,
-	0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x57,0x68,0x65,0x6E,
-	0x20,0x61,0x20,0x6C,0x6F,0x6F,0x70,0x65,0x64,0x20,0x73,0x61,
-	0x6D,0x70,0x6C,0x65,0x20,0x69,0x73,0x20,0x7A,0x6F,0x6F,0x6D,
-	0x65,0x64,0x20,0x6F,0x75,0x74,0x20,0x69,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,0x69,
-	0x74,0x6F,0x72,0x2C,0x20,0x79,0x6F,0x75,0x20,0x63,0x6F,0x75,
-	0x6C,0x64,0x20,0x73,0x65,0x65,0x4D,0x3E,0x40,0x58,0x30,0x32,
-	0x31,0x75,0x6E,0x77,0x61,0x6E,0x74,0x65,0x64,0x20,0x73,0x61,
-	0x6D,0x70,0x6C,0x65,0x20,0x64,0x61,0x74,0x61,0x20,0x61,0x74,
-	0x20,0x74,0x68,0x65,0x20,0x6C,0x6F,0x6F,0x70,0x2D,0x65,0x6E,
-	0x64,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x20,0x54,0x68,0x69,
-	0x73,0x20,0x69,0x73,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,
-	0x20,0x6F,0x66,0x20,0x61,0x20,0x6B,0x6C,0x75,0x64,0x67,0x65,
-	0x4B,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x73,
-	0x61,0x6D,0x70,0x6C,0x69,0x6E,0x67,0x20,0x69,0x6E,0x74,0x65,
-	0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,0x6F,
-	0x20,0x77,0x6F,0x72,0x6B,0x20,0x66,0x61,0x73,0x74,0x65,0x72,
-	0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,
-	0x6F,0x20,0x6D,0x69,0x78,0x65,0x72,0x2C,0x20,0x61,0x6E,0x64,
-	0x20,0x74,0x68,0x65,0x4B,0x6F,0x72,0x69,0x67,0x69,0x6E,0x61,
-	0x6C,0x20,0x46,0x54,0x32,0x20,0x68,0x61,0x73,0x20,0x74,0x68,
-	0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x70,0x72,0x6F,0x62,0x6C,
-	0x65,0x6D,0x2E,0x20,0x49,0x20,0x68,0x61,0x76,0x65,0x20,0x6D,
-	0x61,0x64,0x65,0x20,0x69,0x74,0x20,0x73,0x6F,0x20,0x74,0x68,
-	0x61,0x74,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x20,0x7A,0x6F,
-	0x6F,0x6D,0x20,0x69,0x6E,0x20,0x74,0x6F,0x3B,0x73,0x65,0x65,
-	0x20,0x74,0x68,0x65,0x20,0x69,0x6E,0x64,0x69,0x76,0x69,0x64,
-	0x75,0x61,0x6C,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x70,
-	0x6F,0x69,0x6E,0x74,0x73,0x2C,0x20,0x69,0x74,0x20,0x77,0x69,
-	0x6C,0x6C,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x6C,0x69,0x6B,0x65,
-	0x20,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x06,0x3E,0x40,0x58,
-	0x30,0x31,0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,0x4D,0x6F,
-	0x75,0x73,0x65,0x20,0x2F,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,
-	0x72,0x64,0x3A,0x01,0x3E,0x43,0x3E,0x40,0x43,0x30,0x30,0x32,
-	0x2D,0x20,0x4C,0x69,0x6E,0x75,0x78,0x3A,0x20,0x54,0x68,0x65,
-	0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x63,0x75,0x72,0x73,0x6F,
-	0x72,0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x63,
-	0x61,0x6E,0x20,0x62,0x65,0x20,0x67,0x6C,0x69,0x74,0x63,0x68,
-	0x79,0x20,0x61,0x74,0x20,0x74,0x69,0x6D,0x65,0x73,0x2E,0x2E,
-	0x2E,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,0x4B,0x3E,0x40,0x43,
-	0x30,0x30,0x32,0x2D,0x20,0x54,0x68,0x65,0x20,0x22,0x63,0x6C,
-	0x65,0x61,0x72,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x22,0x20,
-	0x73,0x68,0x6F,0x72,0x74,0x63,0x75,0x74,0x20,0x28,0x73,0x68,
-	0x69,0x66,0x74,0x20,0x2B,0x20,0x6E,0x75,0x6D,0x2D,0x70,0x61,
-	0x64,0x20,0x44,0x65,0x6C,0x2F,0x27,0x2C,0x27,0x29,0x20,0x6F,
-	0x6E,0x6C,0x79,0x20,0x77,0x6F,0x72,0x6B,0x73,0x20,0x69,0x66,
-	0x37,0x3E,0x40,0x58,0x30,0x32,0x31,0x6E,0x75,0x6D,0x20,0x6C,
-	0x6F,0x63,0x6B,0x20,0x69,0x73,0x20,0x6F,0x66,0x66,0x2E,0x20,
-	0x54,0x68,0x65,0x72,0x65,0x27,0x73,0x20,0x6E,0x6F,0x20,0x77,
-	0x61,0x79,0x20,0x49,0x20,0x63,0x61,0x6E,0x20,0x66,0x69,0x78,
-	0x20,0x74,0x68,0x69,0x73,0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,
-	0x30,0x31,0x30,0x0C,0x3E,0x40,0x43,0x30,0x30,0x31,0x56,0x69,
-	0x64,0x65,0x6F,0x3A,0x06,0x3E,0x40,0x43,0x30,0x30,0x32,0x50,
-	0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x46,0x75,0x6C,0x6C,
-	0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,
-	0x63,0x61,0x6E,0x20,0x62,0x65,0x20,0x75,0x6E,0x62,0x65,0x61,
-	0x72,0x61,0x62,0x6C,0x79,0x20,0x73,0x6C,0x6F,0x77,0x20,0x6F,
-	0x6E,0x20,0x61,0x20,0x52,0x61,0x73,0x70,0x62,0x65,0x72,0x72,
-	0x79,0x20,0x50,0x69,0x20,0x28,0x65,0x76,0x65,0x6E,0x20,0x61,
-	0x6E,0x20,0x52,0x50,0x69,0x20,0x34,0x29,0x01,0x3E,0x4A,0x3E,
-	0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x54,0x68,0x65,0x20,0x73,
-	0x63,0x6F,0x70,0x65,0x73,0x20,0x63,0x61,0x6E,0x20,0x6D,0x69,
-	0x6C,0x64,0x6C,0x79,0x20,0x66,0x6C,0x69,0x63,0x6B,0x65,0x72,
-	0x20,0x64,0x65,0x70,0x65,0x6E,0x64,0x69,0x6E,0x67,0x20,0x6F,
-	0x6E,0x20,0x74,0x68,0x65,0x20,0x77,0x61,0x76,0x65,0x66,0x6F,
-	0x72,0x6D,0x20,0x61,0x6E,0x64,0x20,0x70,0x69,0x74,0x63,0x68,
-	0x2E,0x4D,0x3E,0x40,0x58,0x30,0x32,0x31,0x54,0x68,0x69,0x73,
-	0x20,0x69,0x73,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,
-	0x74,0x68,0x65,0x69,0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,
-	0x6E,0x63,0x79,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,
-	0x6C,0x6F,0x63,0x6B,0x65,0x64,0x20,0x74,0x6F,0x20,0x65,0x78,
-	0x61,0x63,0x74,0x6C,0x79,0x20,0x74,0x68,0x65,0x20,0x73,0x61,
-	0x6D,0x65,0x20,0x72,0x61,0x74,0x65,0x4D,0x3E,0x61,0x74,0x20,
-	0x77,0x68,0x69,0x63,0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x63,
-	0x6F,0x70,0x65,0x73,0x20,0x61,0x72,0x65,0x20,0x72,0x65,0x6E,
-	0x64,0x65,0x72,0x65,0x64,0x2E,0x20,0x49,0x74,0x27,0x73,0x20,
-	0x63,0x6C,0x6F,0x73,0x65,0x2C,0x20,0x77,0x68,0x69,0x63,0x68,
-	0x20,0x63,0x61,0x75,0x73,0x65,0x73,0x20,0x61,0x20,0x66,0x6C,
-	0x69,0x63,0x6B,0x65,0x72,0x20,0x65,0x66,0x66,0x65,0x63,0x74,
-	0x2E,0x01,0x3E,0x52,0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,
-	0x4E,0x6F,0x74,0x20,0x61,0x20,0x62,0x75,0x67,0x2C,0x20,0x62,
-	0x75,0x74,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,
-	0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x20,0x72,0x65,0x66,
-	0x72,0x65,0x73,0x68,0x20,0x72,0x61,0x74,0x65,0x20,0x69,0x73,
-	0x20,0x6E,0x6F,0x74,0x20,0x73,0x65,0x74,0x20,0x74,0x6F,0x20,
-	0x36,0x30,0x48,0x7A,0x20,0x28,0x6F,0x72,0x20,0x35,0x39,0x48,
-	0x7A,0x29,0x4F,0x3E,0x40,0x58,0x30,0x32,0x31,0x79,0x6F,0x75,
-	0x20,0x6D,0x61,0x79,0x20,0x65,0x78,0x70,0x65,0x72,0x69,0x65,
-	0x6E,0x63,0x65,0x20,0x76,0x69,0x73,0x75,0x61,0x6C,0x20,0x73,
-	0x74,0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x20,0x62,0x65,
-	0x63,0x61,0x75,0x73,0x65,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,
-	0x77,0x69,0x6C,0x6C,0x20,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,
-	0x75,0x73,0x65,0x64,0x20,0x74,0x68,0x65,0x6E,0x2E,0x49,0x49,
-	0x20,0x68,0x69,0x67,0x68,0x6C,0x79,0x20,0x72,0x65,0x63,0x6F,
-	0x6D,0x6D,0x65,0x6E,0x64,0x20,0x72,0x75,0x6E,0x6E,0x69,0x6E,
-	0x67,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,
-	0x6F,0x72,0x20,0x61,0x74,0x20,0x36,0x30,0x48,0x7A,0x20,0x69,
-	0x66,0x20,0x79,0x6F,0x75,0x27,0x72,0x65,0x20,0x61,0x20,0x68,
-	0x61,0x72,0x64,0x63,0x6F,0x72,0x65,0x20,0x75,0x73,0x65,0x72,
-	0x10,0x6F,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,
-	0x67,0x72,0x61,0x6D,0x2E,0x00,0x03,0x45,0x4E,0x44
+	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0C,0x40,0x4C,0x4B,
+	0x6E,0x6F,0x77,0x6E,0x20,0x62,0x75,0x67,0x73,0x06,0x3E,0x40,
+	0x58,0x30,0x31,0x30,0x14,0x3E,0x40,0x43,0x30,0x30,0x31,0x53,
+	0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,0x69,0x74,0x6F,0x72,
+	0x3A,0x06,0x3E,0x40,0x43,0x30,0x30,0x32,0x4E,0x3E,0x40,0x58,
+	0x30,0x31,0x30,0x2D,0x20,0x57,0x68,0x65,0x6E,0x20,0x61,0x20,
+	0x6C,0x6F,0x6F,0x70,0x65,0x64,0x20,0x73,0x61,0x6D,0x70,0x6C,
+	0x65,0x20,0x69,0x73,0x20,0x7A,0x6F,0x6F,0x6D,0x65,0x64,0x20,
+	0x6F,0x75,0x74,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x73,
+	0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,0x69,0x74,0x6F,0x72,
+	0x2C,0x20,0x79,0x6F,0x75,0x20,0x63,0x6F,0x75,0x6C,0x64,0x20,
+	0x73,0x65,0x65,0x4D,0x3E,0x40,0x58,0x30,0x32,0x31,0x75,0x6E,
+	0x77,0x61,0x6E,0x74,0x65,0x64,0x20,0x73,0x61,0x6D,0x70,0x6C,
+	0x65,0x20,0x64,0x61,0x74,0x61,0x20,0x61,0x74,0x20,0x74,0x68,
+	0x65,0x20,0x6C,0x6F,0x6F,0x70,0x2D,0x65,0x6E,0x64,0x20,0x70,
+	0x6F,0x69,0x6E,0x74,0x2E,0x20,0x54,0x68,0x69,0x73,0x20,0x69,
+	0x73,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x6F,0x66,
+	0x20,0x61,0x20,0x6B,0x6C,0x75,0x64,0x67,0x65,0x4B,0x66,0x6F,
+	0x72,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x73,0x61,0x6D,0x70,
+	0x6C,0x69,0x6E,0x67,0x20,0x69,0x6E,0x74,0x65,0x72,0x70,0x6F,
+	0x6C,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,0x6F,0x20,0x77,0x6F,
+	0x72,0x6B,0x20,0x66,0x61,0x73,0x74,0x65,0x72,0x20,0x69,0x6E,
+	0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,0x6F,0x20,0x6D,
+	0x69,0x78,0x65,0x72,0x2C,0x20,0x61,0x6E,0x64,0x20,0x74,0x68,
+	0x65,0x4B,0x6F,0x72,0x69,0x67,0x69,0x6E,0x61,0x6C,0x20,0x46,
+	0x54,0x32,0x20,0x68,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x73,
+	0x61,0x6D,0x65,0x20,0x70,0x72,0x6F,0x62,0x6C,0x65,0x6D,0x2E,
+	0x20,0x49,0x20,0x68,0x61,0x76,0x65,0x20,0x6D,0x61,0x64,0x65,
+	0x20,0x69,0x74,0x20,0x73,0x6F,0x20,0x74,0x68,0x61,0x74,0x20,
+	0x69,0x66,0x20,0x79,0x6F,0x75,0x20,0x7A,0x6F,0x6F,0x6D,0x20,
+	0x69,0x6E,0x20,0x74,0x6F,0x3B,0x73,0x65,0x65,0x20,0x74,0x68,
+	0x65,0x20,0x69,0x6E,0x64,0x69,0x76,0x69,0x64,0x75,0x61,0x6C,
+	0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,
+	0x74,0x73,0x2C,0x20,0x69,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x6C,0x6F,0x6F,0x6B,0x20,0x6C,0x69,0x6B,0x65,0x20,0x6E,0x6F,
+	0x72,0x6D,0x61,0x6C,0x2E,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,
+	0x17,0x3E,0x40,0x43,0x30,0x30,0x31,0x4D,0x6F,0x75,0x73,0x65,
+	0x20,0x2F,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x3A,
+	0x01,0x3E,0x43,0x3E,0x40,0x43,0x30,0x30,0x32,0x2D,0x20,0x4C,
+	0x69,0x6E,0x75,0x78,0x3A,0x20,0x54,0x68,0x65,0x20,0x6D,0x6F,
+	0x75,0x73,0x65,0x20,0x63,0x75,0x72,0x73,0x6F,0x72,0x20,0x67,
+	0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x63,0x61,0x6E,0x20,
+	0x62,0x65,0x20,0x67,0x6C,0x69,0x74,0x63,0x68,0x79,0x20,0x61,
+	0x74,0x20,0x74,0x69,0x6D,0x65,0x73,0x2E,0x2E,0x2E,0x06,0x3E,
+	0x40,0x58,0x30,0x31,0x30,0x4B,0x3E,0x40,0x43,0x30,0x30,0x32,
+	0x2D,0x20,0x54,0x68,0x65,0x20,0x22,0x63,0x6C,0x65,0x61,0x72,
+	0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x22,0x20,0x73,0x68,0x6F,
+	0x72,0x74,0x63,0x75,0x74,0x20,0x28,0x73,0x68,0x69,0x66,0x74,
+	0x20,0x2B,0x20,0x6E,0x75,0x6D,0x2D,0x70,0x61,0x64,0x20,0x44,
+	0x65,0x6C,0x2F,0x27,0x2C,0x27,0x29,0x20,0x6F,0x6E,0x6C,0x79,
+	0x20,0x77,0x6F,0x72,0x6B,0x73,0x20,0x69,0x66,0x37,0x3E,0x40,
+	0x58,0x30,0x32,0x31,0x6E,0x75,0x6D,0x20,0x6C,0x6F,0x63,0x6B,
+	0x20,0x69,0x73,0x20,0x6F,0x66,0x66,0x2E,0x20,0x54,0x68,0x65,
+	0x72,0x65,0x27,0x73,0x20,0x6E,0x6F,0x20,0x77,0x61,0x79,0x20,
+	0x49,0x20,0x63,0x61,0x6E,0x20,0x66,0x69,0x78,0x20,0x74,0x68,
+	0x69,0x73,0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,
+	0x0C,0x3E,0x40,0x43,0x30,0x30,0x31,0x56,0x69,0x64,0x65,0x6F,
+	0x3A,0x06,0x3E,0x40,0x43,0x30,0x30,0x32,0x50,0x3E,0x40,0x58,
+	0x30,0x31,0x30,0x2D,0x20,0x46,0x75,0x6C,0x6C,0x73,0x63,0x72,
+	0x65,0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x63,0x61,0x6E,
+	0x20,0x62,0x65,0x20,0x75,0x6E,0x62,0x65,0x61,0x72,0x61,0x62,
+	0x6C,0x79,0x20,0x73,0x6C,0x6F,0x77,0x20,0x6F,0x6E,0x20,0x61,
+	0x20,0x52,0x61,0x73,0x70,0x62,0x65,0x72,0x72,0x79,0x20,0x50,
+	0x69,0x20,0x28,0x65,0x76,0x65,0x6E,0x20,0x61,0x6E,0x20,0x52,
+	0x50,0x69,0x20,0x34,0x29,0x01,0x3E,0x4A,0x3E,0x40,0x58,0x30,
+	0x31,0x30,0x2D,0x20,0x54,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,
+	0x65,0x73,0x20,0x63,0x61,0x6E,0x20,0x6D,0x69,0x6C,0x64,0x6C,
+	0x79,0x20,0x66,0x6C,0x69,0x63,0x6B,0x65,0x72,0x20,0x64,0x65,
+	0x70,0x65,0x6E,0x64,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x20,0x74,
+	0x68,0x65,0x20,0x77,0x61,0x76,0x65,0x66,0x6F,0x72,0x6D,0x20,
+	0x61,0x6E,0x64,0x20,0x70,0x69,0x74,0x63,0x68,0x2E,0x4D,0x3E,
+	0x40,0x58,0x30,0x32,0x31,0x54,0x68,0x69,0x73,0x20,0x69,0x73,
+	0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,
+	0x69,0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,
+	0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,0x6C,0x6F,0x63,
+	0x6B,0x65,0x64,0x20,0x74,0x6F,0x20,0x65,0x78,0x61,0x63,0x74,
+	0x6C,0x79,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,
+	0x72,0x61,0x74,0x65,0x4D,0x3E,0x61,0x74,0x20,0x77,0x68,0x69,
+	0x63,0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,0x65,
+	0x73,0x20,0x61,0x72,0x65,0x20,0x72,0x65,0x6E,0x64,0x65,0x72,
+	0x65,0x64,0x2E,0x20,0x49,0x74,0x27,0x73,0x20,0x63,0x6C,0x6F,
+	0x73,0x65,0x2C,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x63,0x61,
+	0x75,0x73,0x65,0x73,0x20,0x61,0x20,0x66,0x6C,0x69,0x63,0x6B,
+	0x65,0x72,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2E,0x01,0x3E,
+	0x52,0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x4E,0x6F,0x74,
+	0x20,0x61,0x20,0x62,0x75,0x67,0x2C,0x20,0x62,0x75,0x74,0x20,
+	0x69,0x66,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,
+	0x74,0x6F,0x72,0x27,0x73,0x20,0x72,0x65,0x66,0x72,0x65,0x73,
+	0x68,0x20,0x72,0x61,0x74,0x65,0x20,0x69,0x73,0x20,0x6E,0x6F,
+	0x74,0x20,0x73,0x65,0x74,0x20,0x74,0x6F,0x20,0x36,0x30,0x48,
+	0x7A,0x20,0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,0x4F,
+	0x3E,0x40,0x58,0x30,0x32,0x31,0x79,0x6F,0x75,0x20,0x6D,0x61,
+	0x79,0x20,0x65,0x78,0x70,0x65,0x72,0x69,0x65,0x6E,0x63,0x65,
+	0x20,0x76,0x69,0x73,0x75,0x61,0x6C,0x20,0x73,0x74,0x75,0x74,
+	0x74,0x65,0x72,0x69,0x6E,0x67,0x20,0x62,0x65,0x63,0x61,0x75,
+	0x73,0x65,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x77,0x69,0x6C,
+	0x6C,0x20,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,
+	0x64,0x20,0x74,0x68,0x65,0x6E,0x2E,0x49,0x49,0x20,0x68,0x69,
+	0x67,0x68,0x6C,0x79,0x20,0x72,0x65,0x63,0x6F,0x6D,0x6D,0x65,
+	0x6E,0x64,0x20,0x72,0x75,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x79,
+	0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x20,
+	0x61,0x74,0x20,0x36,0x30,0x48,0x7A,0x20,0x69,0x66,0x20,0x79,
+	0x6F,0x75,0x27,0x72,0x65,0x20,0x61,0x20,0x68,0x61,0x72,0x64,
+	0x63,0x6F,0x72,0x65,0x20,0x75,0x73,0x65,0x72,0x10,0x6F,0x66,
+	0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,
+	0x6D,0x2E,0x00,0x03,0x45,0x4E,0x44
 };
 
 #endif
--- /dev/null
+++ b/src/mixer/ft2_center_mix.c
@@ -1,0 +1,1426 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include "ft2_mix_macros.h"
+#include "ft2_intrp_table.h"
+
+/* Check out ft2_mix.c for comments on how this works.
+** These are duplicates for center-mixing (slightly faster when it can be used).
+*/
+
+/* ----------------------------------------------------------------------- */
+/*                      8-BIT CENTER MIXING ROUTINES                       */
+/* ----------------------------------------------------------------------- */
+
+void centerMix8bNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+
+
+/* ----------------------------------------------------------------------- */
+/*                      16-BIT CENTER MIXING ROUTINES                      */
+/* ----------------------------------------------------------------------- */
+
+void centerMix16bNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+	
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_LVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_MONO_INTRP
+			VOLUME_RAMPING_MONO
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
--- /dev/null
+++ b/src/mixer/ft2_center_mix.h
@@ -1,0 +1,29 @@
+#pragma once
+
+#include <stdint.h>
+#include "../ft2_audio.h"
+
+void centerMix8bNoLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bBidiLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bNoLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bNoLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bBidiLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bNoLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampNoLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bRampLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bRampBidiLoop(voice_t *v, uint32_t numSamples);
+void centerMix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampNoLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bRampLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bRampBidiLoop(voice_t *v, uint32_t numSamples);
+void centerMix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples);
--- /dev/null
+++ b/src/mixer/ft2_intrp_table.c
@@ -1,0 +1,1302 @@
+#include <stdint.h>
+#include "ft2_intrp_table.h"
+
+// 4-tap cubic spline table
+
+#if defined __amd64__ || defined _WIN64
+
+// 15-bit precision, 4096 phases
+
+const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES] =
+{
+	    0, 32767,     0,     0,    -4, 32767,     4,     0,    -8, 32767,     8,     0,   -12, 32767,    12,     0,
+	  -16, 32767,    16,     0,   -20, 32767,    20,     0,   -24, 32767,    24,     0,   -28, 32767,    28,     0,
+	  -32, 32767,    32,     0,   -36, 32767,    36,     0,   -40, 32767,    40,     0,   -44, 32767,    44,     0,
+	  -48, 32767,    49,     0,   -52, 32767,    53,     0,   -56, 32767,    57,     0,   -60, 32767,    61,     0,
+	  -64, 32767,    65,     0,   -67, 32766,    69,     0,   -71, 32766,    73,     0,   -75, 32766,    77,     0,
+	  -79, 32765,    82,     0,   -83, 32765,    86,     0,   -87, 32765,    90,     0,   -91, 32766,    94,    -1,
+	  -95, 32766,    98,    -1,   -99, 32766,   102,    -1,  -103, 32765,   107,    -1,  -107, 32765,   111,    -1,
+	 -110, 32764,   115,    -1,  -114, 32764,   119,    -1,  -118, 32764,   123,    -1,  -122, 32763,   128,    -1,
+	 -126, 32763,   132,    -1,  -130, 32763,   136,    -1,  -134, 32763,   140,    -1,  -138, 32762,   145,    -1,
+	 -141, 32761,   149,    -1,  -145, 32761,   153,    -1,  -149, 32760,   158,    -1,  -153, 32760,   162,    -1,
+	 -157, 32761,   166,    -2,  -161, 32760,   171,    -2,  -165, 32760,   175,    -2,  -168, 32759,   179,    -2,
+	 -172, 32758,   184,    -2,  -176, 32758,   188,    -2,  -180, 32758,   192,    -2,  -184, 32757,   197,    -2,
+	 -188, 32757,   201,    -2,  -191, 32756,   205,    -2,  -195, 32755,   210,    -2,  -199, 32756,   214,    -3,
+	 -203, 32756,   218,    -3,  -207, 32755,   223,    -3,  -210, 32754,   227,    -3,  -214, 32753,   232,    -3,
+	 -218, 32753,   236,    -3,  -222, 32752,   241,    -3,  -225, 32751,   245,    -3,  -229, 32751,   249,    -3,
+	 -233, 32750,   254,    -3,  -237, 32751,   258,    -4,  -241, 32750,   263,    -4,  -244, 32749,   267,    -4,
+	 -248, 32748,   272,    -4,  -252, 32748,   276,    -4,  -256, 32747,   281,    -4,  -259, 32746,   285,    -4,
+	 -263, 32745,   290,    -4,  -267, 32746,   294,    -5,  -271, 32745,   299,    -5,  -274, 32744,   303,    -5,
+	 -278, 32743,   308,    -5,  -282, 32742,   313,    -5,  -285, 32741,   317,    -5,  -289, 32740,   322,    -5,
+	 -293, 32741,   326,    -6,  -297, 32740,   331,    -6,  -300, 32739,   335,    -6,  -304, 32738,   340,    -6,
+	 -308, 32737,   345,    -6,  -311, 32736,   349,    -6,  -315, 32735,   354,    -6,  -319, 32735,   359,    -7,
+	 -322, 32734,   363,    -7,  -326, 32733,   368,    -7,  -330, 32733,   372,    -7,  -333, 32731,   377,    -7,
+	 -337, 32730,   382,    -7,  -341, 32731,   386,    -8,  -344, 32729,   391,    -8,  -348, 32728,   396,    -8,
+	 -352, 32727,   401,    -8,  -355, 32726,   405,    -8,  -359, 32725,   410,    -8,  -363, 32725,   415,    -9,
+	 -366, 32724,   419,    -9,  -370, 32723,   424,    -9,  -373, 32721,   429,    -9,  -377, 32720,   434,    -9,
+	 -381, 32721,   438,   -10,  -384, 32719,   443,   -10,  -388, 32718,   448,   -10,  -392, 32717,   453,   -10,
+	 -395, 32716,   457,   -10,  -399, 32715,   462,   -10,  -402, 32714,   467,   -11,  -406, 32713,   472,   -11,
+	 -410, 32712,   477,   -11,  -413, 32711,   481,   -11,  -417, 32710,   486,   -11,  -420, 32709,   491,   -12,
+	 -424, 32708,   496,   -12,  -427, 32706,   501,   -12,  -431, 32705,   506,   -12,  -435, 32705,   511,   -13,
+	 -438, 32704,   515,   -13,  -442, 32703,   520,   -13,  -445, 32701,   525,   -13,  -449, 32700,   530,   -13,
+	 -452, 32699,   535,   -14,  -456, 32698,   540,   -14,  -459, 32696,   545,   -14,  -463, 32695,   550,   -14,
+	 -466, 32694,   555,   -15,  -470, 32693,   560,   -15,  -473, 32691,   565,   -15,  -477, 32690,   570,   -15,
+	 -481, 32690,   575,   -16,  -484, 32689,   579,   -16,  -488, 32688,   584,   -16,  -491, 32686,   589,   -16,
+	 -495, 32685,   594,   -16,  -498, 32684,   599,   -17,  -502, 32683,   604,   -17,  -505, 32681,   609,   -17,
+	 -508, 32679,   614,   -17,  -512, 32679,   619,   -18,  -515, 32676,   625,   -18,  -519, 32675,   630,   -18,
+	 -522, 32673,   635,   -18,  -526, 32673,   640,   -19,  -529, 32671,   645,   -19,  -533, 32670,   650,   -19,
+	 -536, 32669,   655,   -20,  -540, 32668,   660,   -20,  -543, 32666,   665,   -20,  -547, 32665,   670,   -20,
+	 -550, 32664,   675,   -21,  -553, 32662,   680,   -21,  -557, 32661,   685,   -21,  -560, 32658,   691,   -21,
+	 -564, 32658,   696,   -22,  -567, 32656,   701,   -22,  -571, 32655,   706,   -22,  -574, 32654,   711,   -23,
+	 -577, 32652,   716,   -23,  -581, 32650,   722,   -23,  -584, 32648,   727,   -23,  -588, 32648,   732,   -24,
+	 -591, 32646,   737,   -24,  -594, 32644,   742,   -24,  -598, 32644,   747,   -25,  -601, 32641,   753,   -25,
+	 -605, 32640,   758,   -25,  -608, 32639,   763,   -26,  -611, 32637,   768,   -26,  -615, 32635,   774,   -26,
+	 -618, 32633,   779,   -26,  -621, 32632,   784,   -27,  -625, 32631,   789,   -27,  -628, 32628,   795,   -27,
+	 -631, 32627,   800,   -28,  -635, 32626,   805,   -28,  -638, 32624,   810,   -28,  -641, 32622,   816,   -29,
+	 -645, 32621,   821,   -29,  -648, 32619,   826,   -29,  -651, 32617,   832,   -30,  -655, 32616,   837,   -30,
+	 -658, 32614,   842,   -30,  -661, 32612,   848,   -31,  -665, 32611,   853,   -31,  -668, 32609,   858,   -31,
+	 -671, 32607,   864,   -32,  -675, 32606,   869,   -32,  -678, 32603,   875,   -32,  -681, 32602,   880,   -33,
+	 -685, 32601,   885,   -33,  -688, 32598,   891,   -33,  -691, 32597,   896,   -34,  -694, 32594,   902,   -34,
+	 -698, 32593,   907,   -34,  -701, 32592,   912,   -35,  -704, 32589,   918,   -35,  -708, 32588,   923,   -35,
+	 -711, 32586,   929,   -36,  -714, 32584,   934,   -36,  -717, 32581,   940,   -36,  -721, 32581,   945,   -37,
+	 -724, 32578,   951,   -37,  -727, 32577,   956,   -38,  -730, 32575,   961,   -38,  -734, 32573,   967,   -38,
+	 -737, 32572,   972,   -39,  -740, 32569,   978,   -39,  -743, 32566,   984,   -39,  -746, 32565,   989,   -40,
+	 -750, 32563,   995,   -40,  -753, 32561,  1000,   -40,  -756, 32559,  1006,   -41,  -759, 32557,  1011,   -41,
+	 -762, 32555,  1017,   -42,  -766, 32554,  1022,   -42,  -769, 32551,  1028,   -42,  -772, 32550,  1033,   -43,
+	 -775, 32547,  1039,   -43,  -778, 32545,  1045,   -44,  -782, 32544,  1050,   -44,  -785, 32541,  1056,   -44,
+	 -788, 32540,  1061,   -45,  -791, 32537,  1067,   -45,  -794, 32535,  1073,   -46,  -798, 32534,  1078,   -46,
+	 -801, 32531,  1084,   -46,  -804, 32529,  1090,   -47,  -807, 32527,  1095,   -47,  -810, 32525,  1101,   -48,
+	 -813, 32522,  1107,   -48,  -816, 32520,  1112,   -48,  -820, 32519,  1118,   -49,  -823, 32516,  1124,   -49,
+	 -826, 32515,  1129,   -50,  -829, 32512,  1135,   -50,  -832, 32509,  1141,   -50,  -835, 32508,  1146,   -51,
+	 -838, 32505,  1152,   -51,  -841, 32503,  1158,   -52,  -845, 32501,  1164,   -52,  -848, 32500,  1169,   -53,
+	 -851, 32497,  1175,   -53,  -854, 32494,  1181,   -53,  -857, 32492,  1187,   -54,  -860, 32490,  1192,   -54,
+	 -863, 32488,  1198,   -55,  -866, 32485,  1204,   -55,  -869, 32483,  1210,   -56,  -872, 32480,  1216,   -56,
+	 -876, 32479,  1221,   -56,  -879, 32477,  1227,   -57,  -882, 32474,  1233,   -57,  -885, 32472,  1239,   -58,
+	 -888, 32469,  1245,   -58,  -891, 32468,  1250,   -59,  -894, 32465,  1256,   -59,  -897, 32463,  1262,   -60,
+	 -900, 32460,  1268,   -60,  -903, 32457,  1274,   -60,  -906, 32455,  1280,   -61,  -909, 32452,  1286,   -61,
+	 -912, 32451,  1291,   -62,  -915, 32448,  1297,   -62,  -918, 32446,  1303,   -63,  -921, 32443,  1309,   -63,
+	 -924, 32441,  1315,   -64,  -927, 32438,  1321,   -64,  -930, 32436,  1327,   -65,  -933, 32433,  1333,   -65,
+	 -936, 32431,  1339,   -66,  -939, 32428,  1345,   -66,  -942, 32425,  1351,   -66,  -945, 32423,  1357,   -67,
+	 -948, 32420,  1363,   -67,  -951, 32418,  1369,   -68,  -954, 32415,  1375,   -68,  -957, 32413,  1381,   -69,
+	 -960, 32410,  1387,   -69,  -963, 32408,  1393,   -70,  -966, 32405,  1399,   -70,  -969, 32403,  1405,   -71,
+	 -972, 32400,  1411,   -71,  -975, 32398,  1417,   -72,  -978, 32395,  1423,   -72,  -981, 32393,  1429,   -73,
+	 -984, 32390,  1435,   -73,  -987, 32388,  1441,   -74,  -990, 32385,  1447,   -74,  -993, 32383,  1453,   -75,
+	 -996, 32380,  1459,   -75,  -999, 32378,  1465,   -76, -1002, 32375,  1471,   -76, -1004, 32372,  1477,   -77,
+	-1007, 32369,  1483,   -77, -1010, 32367,  1489,   -78, -1013, 32364,  1495,   -78, -1016, 32361,  1502,   -79,
+	-1019, 32358,  1508,   -79, -1022, 32356,  1514,   -80, -1025, 32353,  1520,   -80, -1028, 32351,  1526,   -81,
+	-1031, 32348,  1532,   -81, -1034, 32346,  1538,   -82, -1036, 32341,  1545,   -82, -1039, 32339,  1551,   -83,
+	-1042, 32337,  1557,   -84, -1045, 32334,  1563,   -84, -1048, 32332,  1569,   -85, -1051, 32329,  1575,   -85,
+	-1054, 32326,  1582,   -86, -1057, 32323,  1588,   -86, -1059, 32320,  1594,   -87, -1062, 32317,  1600,   -87,
+	-1065, 32314,  1607,   -88, -1068, 32311,  1613,   -88, -1071, 32309,  1619,   -89, -1074, 32306,  1625,   -89,
+	-1076, 32303,  1631,   -90, -1079, 32300,  1638,   -91, -1082, 32297,  1644,   -91, -1085, 32295,  1650,   -92,
+	-1088, 32291,  1657,   -92, -1091, 32289,  1663,   -93, -1093, 32285,  1669,   -93, -1096, 32283,  1675,   -94,
+	-1099, 32279,  1682,   -94, -1102, 32277,  1688,   -95, -1105, 32275,  1694,   -96, -1107, 32270,  1701,   -96,
+	-1110, 32268,  1707,   -97, -1113, 32265,  1713,   -97, -1116, 32262,  1720,   -98, -1119, 32259,  1726,   -98,
+	-1121, 32256,  1732,   -99, -1124, 32252,  1739,   -99, -1127, 32250,  1745,  -100, -1130, 32248,  1751,  -101,
+	-1133, 32244,  1758,  -101, -1135, 32241,  1764,  -102, -1138, 32237,  1771,  -102, -1141, 32235,  1777,  -103,
+	-1144, 32233,  1783,  -104, -1146, 32228,  1790,  -104, -1149, 32226,  1796,  -105, -1152, 32222,  1803,  -105,
+	-1155, 32220,  1809,  -106, -1157, 32215,  1816,  -106, -1160, 32213,  1822,  -107, -1163, 32211,  1828,  -108,
+	-1166, 32207,  1835,  -108, -1168, 32204,  1841,  -109, -1171, 32200,  1848,  -109, -1174, 32198,  1854,  -110,
+	-1176, 32194,  1861,  -111, -1179, 32191,  1867,  -111, -1182, 32188,  1874,  -112, -1185, 32185,  1880,  -112,
+	-1187, 32181,  1887,  -113, -1190, 32179,  1893,  -114, -1193, 32175,  1900,  -114, -1195, 32172,  1906,  -115,
+	-1198, 32168,  1913,  -115, -1201, 32166,  1919,  -116, -1203, 32162,  1926,  -117, -1206, 32158,  1933,  -117,
+	-1209, 32156,  1939,  -118, -1211, 32152,  1946,  -119, -1214, 32149,  1952,  -119, -1217, 32146,  1959,  -120,
+	-1219, 32142,  1965,  -120, -1222, 32139,  1972,  -121, -1225, 32136,  1979,  -122, -1227, 32132,  1985,  -122,
+	-1230, 32129,  1992,  -123, -1233, 32126,  1998,  -123, -1235, 32122,  2005,  -124, -1238, 32119,  2012,  -125,
+	-1241, 32116,  2018,  -125, -1243, 32112,  2025,  -126, -1246, 32109,  2032,  -127, -1248, 32105,  2038,  -127,
+	-1251, 32102,  2045,  -128, -1254, 32100,  2051,  -129, -1256, 32095,  2058,  -129, -1259, 32092,  2065,  -130,
+	-1262, 32089,  2072,  -131, -1264, 32085,  2078,  -131, -1267, 32082,  2085,  -132, -1269, 32077,  2092,  -132,
+	-1272, 32075,  2098,  -133, -1274, 32071,  2105,  -134, -1277, 32067,  2112,  -134, -1280, 32065,  2118,  -135,
+	-1282, 32061,  2125,  -136, -1285, 32057,  2132,  -136, -1287, 32053,  2139,  -137, -1290, 32051,  2145,  -138,
+	-1293, 32047,  2152,  -138, -1295, 32043,  2159,  -139, -1298, 32040,  2166,  -140, -1300, 32036,  2172,  -140,
+	-1303, 32033,  2179,  -141, -1305, 32029,  2186,  -142, -1308, 32025,  2193,  -142, -1310, 32021,  2200,  -143,
+	-1313, 32019,  2206,  -144, -1315, 32014,  2213,  -144, -1318, 32011,  2220,  -145, -1321, 32008,  2227,  -146,
+	-1323, 32003,  2234,  -146, -1326, 32000,  2241,  -147, -1328, 31997,  2247,  -148, -1331, 31993,  2254,  -148,
+	-1333, 31989,  2261,  -149, -1336, 31986,  2268,  -150, -1338, 31981,  2275,  -150, -1341, 31978,  2282,  -151,
+	-1343, 31974,  2289,  -152, -1346, 31972,  2295,  -153, -1348, 31967,  2302,  -153, -1351, 31964,  2309,  -154,
+	-1353, 31960,  2316,  -155, -1356, 31956,  2323,  -155, -1358, 31952,  2330,  -156, -1361, 31949,  2337,  -157,
+	-1363, 31944,  2344,  -157, -1366, 31941,  2351,  -158, -1368, 31937,  2358,  -159, -1370, 31932,  2365,  -159,
+	-1373, 31930,  2371,  -160, -1375, 31926,  2378,  -161, -1378, 31923,  2385,  -162, -1380, 31918,  2392,  -162,
+	-1383, 31915,  2399,  -163, -1385, 31911,  2406,  -164, -1388, 31907,  2413,  -164, -1390, 31903,  2420,  -165,
+	-1392, 31899,  2427,  -166, -1395, 31896,  2434,  -167, -1397, 31891,  2441,  -167, -1400, 31888,  2448,  -168,
+	-1402, 31884,  2455,  -169, -1405, 31880,  2462,  -169, -1407, 31876,  2469,  -170, -1409, 31872,  2476,  -171,
+	-1412, 31869,  2483,  -172, -1414, 31863,  2491,  -172, -1417, 31860,  2498,  -173, -1419, 31856,  2505,  -174,
+	-1421, 31852,  2512,  -175, -1424, 31848,  2519,  -175, -1426, 31844,  2526,  -176, -1429, 31841,  2533,  -177,
+	-1431, 31836,  2540,  -177, -1433, 31832,  2547,  -178, -1436, 31829,  2554,  -179, -1438, 31825,  2561,  -180,
+	-1440, 31820,  2568,  -180, -1443, 31816,  2576,  -181, -1445, 31812,  2583,  -182, -1448, 31809,  2590,  -183,
+	-1450, 31804,  2597,  -183, -1452, 31800,  2604,  -184, -1455, 31797,  2611,  -185, -1457, 31793,  2618,  -186,
+	-1459, 31787,  2626,  -186, -1462, 31784,  2633,  -187, -1464, 31780,  2640,  -188, -1466, 31776,  2647,  -189,
+	-1469, 31772,  2654,  -189, -1471, 31768,  2661,  -190, -1473, 31763,  2669,  -191, -1476, 31760,  2676,  -192,
+	-1478, 31755,  2683,  -192, -1480, 31751,  2690,  -193, -1483, 31748,  2697,  -194, -1485, 31743,  2705,  -195,
+	-1487, 31739,  2712,  -196, -1489, 31734,  2719,  -196, -1492, 31731,  2726,  -197, -1494, 31726,  2734,  -198,
+	-1496, 31722,  2741,  -199, -1499, 31718,  2748,  -199, -1501, 31714,  2755,  -200, -1503, 31709,  2763,  -201,
+	-1506, 31706,  2770,  -202, -1508, 31702,  2777,  -203, -1510, 31696,  2785,  -203, -1512, 31692,  2792,  -204,
+	-1515, 31689,  2799,  -205, -1517, 31685,  2806,  -206, -1519, 31679,  2814,  -206, -1521, 31675,  2821,  -207,
+	-1524, 31672,  2828,  -208, -1526, 31667,  2836,  -209, -1528, 31663,  2843,  -210, -1530, 31658,  2850,  -210,
+	-1533, 31654,  2858,  -211, -1535, 31650,  2865,  -212, -1537, 31646,  2872,  -213, -1539, 31641,  2880,  -214,
+	-1542, 31637,  2887,  -214, -1544, 31632,  2895,  -215, -1546, 31628,  2902,  -216, -1548, 31624,  2909,  -217,
+	-1550, 31619,  2917,  -218, -1553, 31615,  2924,  -218, -1555, 31611,  2931,  -219, -1557, 31606,  2939,  -220,
+	-1559, 31602,  2946,  -221, -1561, 31597,  2954,  -222, -1564, 31593,  2961,  -222, -1566, 31588,  2969,  -223,
+	-1568, 31584,  2976,  -224, -1570, 31580,  2983,  -225, -1572, 31575,  2991,  -226, -1575, 31571,  2998,  -226,
+	-1577, 31566,  3006,  -227, -1579, 31562,  3013,  -228, -1581, 31557,  3021,  -229, -1583, 31553,  3028,  -230,
+	-1585, 31548,  3036,  -231, -1588, 31544,  3043,  -231, -1590, 31539,  3051,  -232, -1592, 31535,  3058,  -233,
+	-1594, 31530,  3066,  -234, -1596, 31526,  3073,  -235, -1598, 31520,  3081,  -235, -1600, 31516,  3088,  -236,
+	-1603, 31512,  3096,  -237, -1605, 31508,  3103,  -238, -1607, 31503,  3111,  -239, -1609, 31499,  3118,  -240,
+	-1611, 31493,  3126,  -240, -1613, 31489,  3133,  -241, -1615, 31484,  3141,  -242, -1617, 31479,  3149,  -243,
+	-1620, 31476,  3156,  -244, -1622, 31471,  3164,  -245, -1624, 31467,  3171,  -246, -1626, 31461,  3179,  -246,
+	-1628, 31457,  3186,  -247, -1630, 31452,  3194,  -248, -1632, 31447,  3202,  -249, -1634, 31443,  3209,  -250,
+	-1636, 31438,  3217,  -251, -1638, 31433,  3224,  -251, -1641, 31429,  3232,  -252, -1643, 31424,  3240,  -253,
+	-1645, 31420,  3247,  -254, -1647, 31415,  3255,  -255, -1649, 31410,  3263,  -256, -1651, 31406,  3270,  -257,
+	-1653, 31400,  3278,  -257, -1655, 31395,  3286,  -258, -1657, 31391,  3293,  -259, -1659, 31386,  3301,  -260,
+	-1661, 31381,  3309,  -261, -1663, 31377,  3316,  -262, -1665, 31372,  3324,  -263, -1667, 31367,  3332,  -264,
+	-1669, 31362,  3339,  -264, -1671, 31357,  3347,  -265, -1673, 31352,  3355,  -266, -1675, 31347,  3363,  -267,
+	-1677, 31343,  3370,  -268, -1680, 31339,  3378,  -269, -1682, 31334,  3386,  -270, -1684, 31329,  3393,  -270,
+	-1686, 31324,  3401,  -271, -1688, 31319,  3409,  -272, -1690, 31314,  3417,  -273, -1692, 31310,  3424,  -274,
+	-1694, 31305,  3432,  -275, -1696, 31300,  3440,  -276, -1698, 31295,  3448,  -277, -1700, 31290,  3456,  -278,
+	-1702, 31285,  3463,  -278, -1704, 31280,  3471,  -279, -1706, 31275,  3479,  -280, -1708, 31270,  3487,  -281,
+	-1709, 31264,  3495,  -282, -1711, 31260,  3502,  -283, -1713, 31255,  3510,  -284, -1715, 31250,  3518,  -285,
+	-1717, 31245,  3526,  -286, -1719, 31239,  3534,  -286, -1721, 31235,  3541,  -287, -1723, 31230,  3549,  -288,
+	-1725, 31225,  3557,  -289, -1727, 31220,  3565,  -290, -1729, 31215,  3573,  -291, -1731, 31210,  3581,  -292,
+	-1733, 31205,  3589,  -293, -1735, 31201,  3596,  -294, -1737, 31196,  3604,  -295, -1739, 31191,  3612,  -296,
+	-1741, 31185,  3620,  -296, -1743, 31180,  3628,  -297, -1745, 31175,  3636,  -298, -1746, 31169,  3644,  -299,
+	-1748, 31164,  3652,  -300, -1750, 31159,  3660,  -301, -1752, 31154,  3668,  -302, -1754, 31149,  3676,  -303,
+	-1756, 31145,  3683,  -304, -1758, 31140,  3691,  -305, -1760, 31135,  3699,  -306, -1762, 31129,  3707,  -306,
+	-1764, 31124,  3715,  -307, -1765, 31118,  3723,  -308, -1767, 31113,  3731,  -309, -1769, 31108,  3739,  -310,
+	-1771, 31103,  3747,  -311, -1773, 31098,  3755,  -312, -1775, 31093,  3763,  -313, -1777, 31088,  3771,  -314,
+	-1779, 31083,  3779,  -315, -1780, 31077,  3787,  -316, -1782, 31072,  3795,  -317, -1784, 31067,  3803,  -318,
+	-1786, 31062,  3811,  -319, -1788, 31057,  3819,  -320, -1790, 31051,  3827,  -320, -1792, 31046,  3835,  -321,
+	-1793, 31040,  3843,  -322, -1795, 31035,  3851,  -323, -1797, 31030,  3859,  -324, -1799, 31025,  3867,  -325,
+	-1801, 31020,  3875,  -326, -1803, 31015,  3883,  -327, -1804, 31008,  3892,  -328, -1806, 31003,  3900,  -329,
+	-1808, 30998,  3908,  -330, -1810, 30993,  3916,  -331, -1812, 30988,  3924,  -332, -1813, 30982,  3932,  -333,
+	-1815, 30977,  3940,  -334, -1817, 30972,  3948,  -335, -1819, 30967,  3956,  -336, -1821, 30962,  3964,  -337,
+	-1823, 30956,  3973,  -338, -1824, 30949,  3981,  -338, -1826, 30944,  3989,  -339, -1828, 30939,  3997,  -340,
+	-1830, 30934,  4005,  -341, -1831, 30928,  4013,  -342, -1833, 30923,  4021,  -343, -1835, 30918,  4029,  -344,
+	-1837, 30912,  4038,  -345, -1839, 30907,  4046,  -346, -1840, 30901,  4054,  -347, -1842, 30896,  4062,  -348,
+	-1844, 30891,  4070,  -349, -1846, 30885,  4079,  -350, -1847, 30879,  4087,  -351, -1849, 30874,  4095,  -352,
+	-1851, 30869,  4103,  -353, -1853, 30864,  4111,  -354, -1854, 30858,  4119,  -355, -1856, 30852,  4128,  -356,
+	-1858, 30847,  4136,  -357, -1859, 30841,  4144,  -358, -1861, 30836,  4152,  -359, -1863, 30830,  4161,  -360,
+	-1865, 30825,  4169,  -361, -1866, 30819,  4177,  -362, -1868, 30814,  4185,  -363, -1870, 30808,  4194,  -364,
+	-1872, 30803,  4202,  -365, -1873, 30797,  4210,  -366, -1875, 30792,  4218,  -367, -1877, 30786,  4227,  -368,
+	-1878, 30780,  4235,  -369, -1880, 30775,  4243,  -370, -1882, 30769,  4252,  -371, -1883, 30763,  4260,  -372,
+	-1885, 30758,  4268,  -373, -1887, 30753,  4276,  -374, -1888, 30746,  4285,  -375, -1890, 30741,  4293,  -376,
+	-1892, 30736,  4301,  -377, -1894, 30730,  4310,  -378, -1895, 30724,  4318,  -379, -1897, 30719,  4326,  -380,
+	-1899, 30713,  4335,  -381, -1900, 30707,  4343,  -382, -1902, 30702,  4351,  -383, -1903, 30695,  4360,  -384,
+	-1905, 30690,  4368,  -385, -1907, 30685,  4376,  -386, -1908, 30678,  4385,  -387, -1910, 30673,  4393,  -388,
+	-1912, 30667,  4402,  -389, -1913, 30661,  4410,  -390, -1915, 30656,  4418,  -391, -1917, 30650,  4427,  -392,
+	-1918, 30644,  4435,  -393, -1920, 30639,  4443,  -394, -1922, 30633,  4452,  -395, -1923, 30627,  4460,  -396,
+	-1925, 30621,  4469,  -397, -1926, 30615,  4477,  -398, -1928, 30609,  4486,  -399, -1930, 30604,  4494,  -400,
+	-1931, 30598,  4502,  -401, -1933, 30592,  4511,  -402, -1934, 30586,  4519,  -403, -1936, 30580,  4528,  -404,
+	-1938, 30575,  4536,  -405, -1939, 30568,  4545,  -406, -1941, 30563,  4553,  -407, -1942, 30556,  4562,  -408,
+	-1944, 30551,  4570,  -409, -1946, 30545,  4579,  -410, -1947, 30539,  4587,  -411, -1949, 30533,  4596,  -412,
+	-1950, 30527,  4604,  -413, -1952, 30521,  4613,  -414, -1953, 30515,  4621,  -415, -1955, 30509,  4630,  -416,
+	-1956, 30503,  4638,  -417, -1958, 30497,  4647,  -418, -1960, 30492,  4655,  -419, -1961, 30485,  4664,  -420,
+	-1963, 30480,  4672,  -421, -1964, 30473,  4681,  -422, -1966, 30468,  4689,  -423, -1967, 30462,  4698,  -425,
+	-1969, 30457,  4706,  -426, -1970, 30450,  4715,  -427, -1972, 30445,  4723,  -428, -1973, 30438,  4732,  -429,
+	-1975, 30432,  4741,  -430, -1977, 30427,  4749,  -431, -1978, 30420,  4758,  -432, -1980, 30415,  4766,  -433,
+	-1981, 30408,  4775,  -434, -1983, 30403,  4783,  -435, -1984, 30396,  4792,  -436, -1986, 30390,  4801,  -437,
+	-1987, 30384,  4809,  -438, -1989, 30378,  4818,  -439, -1990, 30372,  4826,  -440, -1992, 30366,  4835,  -441,
+	-1993, 30359,  4844,  -442, -1995, 30354,  4852,  -443, -1996, 30347,  4861,  -444, -1998, 30342,  4870,  -446,
+	-1999, 30336,  4878,  -447, -2000, 30329,  4887,  -448, -2002, 30323,  4896,  -449, -2003, 30317,  4904,  -450,
+	-2005, 30311,  4913,  -451, -2006, 30305,  4921,  -452, -2008, 30299,  4930,  -453, -2009, 30292,  4939,  -454,
+	-2011, 30286,  4948,  -455, -2012, 30280,  4956,  -456, -2014, 30274,  4965,  -457, -2015, 30267,  4974,  -458,
+	-2017, 30262,  4982,  -459, -2018, 30255,  4991,  -460, -2019, 30249,  5000,  -462, -2021, 30244,  5008,  -463,
+	-2022, 30237,  5017,  -464, -2024, 30231,  5026,  -465, -2025, 30224,  5035,  -466, -2027, 30219,  5043,  -467,
+	-2028, 30212,  5052,  -468, -2029, 30205,  5061,  -469, -2031, 30200,  5069,  -470, -2032, 30193,  5078,  -471,
+	-2034, 30187,  5087,  -472, -2035, 30180,  5096,  -473, -2036, 30174,  5104,  -474, -2038, 30169,  5113,  -476,
+	-2039, 30162,  5122,  -477, -2041, 30156,  5131,  -478, -2042, 30149,  5140,  -479, -2043, 30143,  5148,  -480,
+	-2045, 30137,  5157,  -481, -2046, 30130,  5166,  -482, -2048, 30124,  5175,  -483, -2049, 30117,  5184,  -484,
+	-2050, 30111,  5192,  -485, -2052, 30105,  5201,  -486, -2053, 30099,  5210,  -488, -2055, 30093,  5219,  -489,
+	-2056, 30086,  5228,  -490, -2057, 30080,  5236,  -491, -2059, 30074,  5245,  -492, -2060, 30067,  5254,  -493,
+	-2061, 30060,  5263,  -494, -2063, 30054,  5272,  -495, -2064, 30047,  5281,  -496, -2065, 30041,  5289,  -497,
+	-2067, 30036,  5298,  -499, -2068, 30029,  5307,  -500, -2069, 30022,  5316,  -501, -2071, 30016,  5325,  -502,
+	-2072, 30009,  5334,  -503, -2073, 30002,  5343,  -504, -2075, 29996,  5352,  -505, -2076, 29990,  5360,  -506,
+	-2077, 29983,  5369,  -507, -2079, 29977,  5378,  -508, -2080, 29971,  5387,  -510, -2081, 29964,  5396,  -511,
+	-2083, 29958,  5405,  -512, -2084, 29951,  5414,  -513, -2085, 29944,  5423,  -514, -2087, 29938,  5432,  -515,
+	-2088, 29931,  5441,  -516, -2089, 29924,  5450,  -517, -2090, 29918,  5458,  -518, -2092, 29913,  5467,  -520,
+	-2093, 29906,  5476,  -521, -2094, 29899,  5485,  -522, -2096, 29893,  5494,  -523, -2097, 29886,  5503,  -524,
+	-2098, 29879,  5512,  -525, -2099, 29872,  5521,  -526, -2101, 29866,  5530,  -527, -2102, 29860,  5539,  -529,
+	-2103, 29853,  5548,  -530, -2105, 29847,  5557,  -531, -2106, 29840,  5566,  -532, -2107, 29833,  5575,  -533,
+	-2108, 29826,  5584,  -534, -2110, 29820,  5593,  -535, -2111, 29813,  5602,  -536, -2112, 29807,  5611,  -538,
+	-2113, 29800,  5620,  -539, -2115, 29794,  5629,  -540, -2116, 29787,  5638,  -541, -2117, 29780,  5647,  -542,
+	-2118, 29773,  5656,  -543, -2120, 29767,  5665,  -544, -2121, 29760,  5674,  -545, -2122, 29754,  5683,  -547,
+	-2123, 29747,  5692,  -548, -2124, 29740,  5701,  -549, -2126, 29734,  5710,  -550, -2127, 29727,  5719,  -551,
+	-2128, 29719,  5729,  -552, -2129, 29712,  5738,  -553, -2130, 29706,  5747,  -555, -2132, 29700,  5756,  -556,
+	-2133, 29693,  5765,  -557, -2134, 29686,  5774,  -558, -2135, 29679,  5783,  -559, -2136, 29672,  5792,  -560,
+	-2138, 29666,  5801,  -561, -2139, 29660,  5810,  -563, -2140, 29653,  5819,  -564, -2141, 29645,  5829,  -565,
+	-2142, 29638,  5838,  -566, -2144, 29632,  5847,  -567, -2145, 29625,  5856,  -568, -2146, 29618,  5865,  -569,
+	-2147, 29612,  5874,  -571, -2148, 29605,  5883,  -572, -2149, 29598,  5892,  -573, -2151, 29591,  5902,  -574,
+	-2152, 29584,  5911,  -575, -2153, 29577,  5920,  -576, -2154, 29571,  5929,  -578, -2155, 29564,  5938,  -579,
+	-2156, 29557,  5947,  -580, -2158, 29551,  5956,  -581, -2159, 29543,  5966,  -582, -2160, 29536,  5975,  -583,
+	-2161, 29529,  5984,  -584, -2162, 29523,  5993,  -586, -2163, 29516,  6002,  -587, -2164, 29508,  6012,  -588,
+	-2165, 29501,  6021,  -589, -2167, 29495,  6030,  -590, -2168, 29488,  6039,  -591, -2169, 29482,  6048,  -593,
+	-2170, 29474,  6058,  -594, -2171, 29467,  6067,  -595, -2172, 29460,  6076,  -596, -2173, 29453,  6085,  -597,
+	-2174, 29446,  6094,  -598, -2176, 29440,  6104,  -600, -2177, 29433,  6113,  -601, -2178, 29426,  6122,  -602,
+	-2179, 29419,  6131,  -603, -2180, 29411,  6141,  -604, -2181, 29404,  6150,  -605, -2182, 29398,  6159,  -607,
+	-2183, 29391,  6168,  -608, -2184, 29383,  6178,  -609, -2185, 29376,  6187,  -610, -2186, 29369,  6196,  -611,
+	-2188, 29363,  6206,  -613, -2189, 29356,  6215,  -614, -2190, 29349,  6224,  -615, -2191, 29342,  6233,  -616,
+	-2192, 29334,  6243,  -617, -2193, 29327,  6252,  -618, -2194, 29321,  6261,  -620, -2195, 29313,  6271,  -621,
+	-2196, 29306,  6280,  -622, -2197, 29299,  6289,  -623, -2198, 29292,  6298,  -624, -2199, 29284,  6308,  -625,
+	-2200, 29278,  6317,  -627, -2201, 29271,  6326,  -628, -2202, 29263,  6336,  -629, -2203, 29256,  6345,  -630,
+	-2204, 29249,  6354,  -631, -2205, 29242,  6364,  -633, -2206, 29235,  6373,  -634, -2207, 29228,  6382,  -635,
+	-2208, 29220,  6392,  -636, -2209, 29213,  6401,  -637, -2211, 29207,  6411,  -639, -2212, 29200,  6420,  -640,
+	-2213, 29193,  6429,  -641, -2214, 29185,  6439,  -642, -2215, 29178,  6448,  -643, -2216, 29171,  6457,  -644,
+	-2217, 29164,  6467,  -646, -2218, 29157,  6476,  -647, -2219, 29149,  6486,  -648, -2220, 29142,  6495,  -649,
+	-2221, 29135,  6504,  -650, -2222, 29128,  6514,  -652, -2223, 29121,  6523,  -653, -2224, 29113,  6533,  -654,
+	-2224, 29105,  6542,  -655, -2225, 29098,  6551,  -656, -2226, 29091,  6561,  -658, -2227, 29084,  6570,  -659,
+	-2228, 29076,  6580,  -660, -2229, 29069,  6589,  -661, -2230, 29061,  6599,  -662, -2231, 29055,  6608,  -664,
+	-2232, 29048,  6617,  -665, -2233, 29040,  6627,  -666, -2234, 29033,  6636,  -667, -2235, 29025,  6646,  -668,
+	-2236, 29019,  6655,  -670, -2237, 29011,  6665,  -671, -2238, 29004,  6674,  -672, -2239, 28996,  6684,  -673,
+	-2240, 28990,  6693,  -675, -2241, 28982,  6703,  -676, -2242, 28975,  6712,  -677, -2243, 28967,  6722,  -678,
+	-2244, 28960,  6731,  -679, -2245, 28953,  6741,  -681, -2245, 28945,  6750,  -682, -2246, 28937,  6760,  -683,
+	-2247, 28930,  6769,  -684, -2248, 28922,  6779,  -685, -2249, 28916,  6788,  -687, -2250, 28908,  6798,  -688,
+	-2251, 28901,  6807,  -689, -2252, 28893,  6817,  -690, -2253, 28886,  6826,  -691, -2254, 28879,  6836,  -693,
+	-2255, 28872,  6845,  -694, -2255, 28863,  6855,  -695, -2256, 28856,  6864,  -696, -2257, 28849,  6874,  -698,
+	-2258, 28842,  6883,  -699, -2259, 28834,  6893,  -700, -2260, 28826,  6903,  -701, -2261, 28819,  6912,  -702,
+	-2262, 28812,  6922,  -704, -2263, 28805,  6931,  -705, -2263, 28796,  6941,  -706, -2264, 28789,  6950,  -707,
+	-2265, 28782,  6960,  -709, -2266, 28774,  6970,  -710, -2267, 28767,  6979,  -711, -2268, 28759,  6989,  -712,
+	-2269, 28752,  6998,  -713, -2269, 28744,  7008,  -715, -2270, 28736,  7018,  -716, -2271, 28729,  7027,  -717,
+	-2272, 28721,  7037,  -718, -2273, 28715,  7046,  -720, -2274, 28707,  7056,  -721, -2275, 28699,  7066,  -722,
+	-2275, 28691,  7075,  -723, -2276, 28684,  7085,  -725, -2277, 28676,  7095,  -726, -2278, 28669,  7104,  -727,
+	-2279, 28661,  7114,  -728, -2280, 28654,  7123,  -729, -2280, 28646,  7133,  -731, -2281, 28638,  7143,  -732,
+	-2282, 28631,  7152,  -733, -2283, 28623,  7162,  -734, -2284, 28616,  7172,  -736, -2284, 28608,  7181,  -737,
+	-2285, 28600,  7191,  -738, -2286, 28592,  7201,  -739, -2287, 28586,  7210,  -741, -2288, 28578,  7220,  -742,
+	-2289, 28570,  7230,  -743, -2289, 28562,  7239,  -744, -2290, 28555,  7249,  -746, -2291, 28547,  7259,  -747,
+	-2292, 28540,  7268,  -748, -2292, 28531,  7278,  -749, -2293, 28524,  7288,  -751, -2294, 28516,  7298,  -752,
+	-2295, 28509,  7307,  -753, -2296, 28501,  7317,  -754, -2296, 28493,  7327,  -756, -2297, 28486,  7336,  -757,
+	-2298, 28478,  7346,  -758, -2299, 28470,  7356,  -759, -2299, 28462,  7366,  -761, -2300, 28455,  7375,  -762,
+	-2301, 28447,  7385,  -763, -2302, 28439,  7395,  -764, -2302, 28431,  7405,  -766, -2303, 28424,  7414,  -767,
+	-2304, 28416,  7424,  -768, -2305, 28408,  7434,  -769, -2305, 28400,  7444,  -771, -2306, 28393,  7453,  -772,
+	-2307, 28385,  7463,  -773, -2308, 28377,  7473,  -774, -2308, 28369,  7483,  -776, -2309, 28362,  7492,  -777,
+	-2310, 28354,  7502,  -778, -2311, 28346,  7512,  -779, -2311, 28338,  7522,  -781, -2312, 28331,  7531,  -782,
+	-2313, 28323,  7541,  -783, -2314, 28315,  7551,  -784, -2314, 28307,  7561,  -786, -2315, 28299,  7571,  -787,
+	-2316, 28292,  7580,  -788, -2316, 28283,  7590,  -789, -2317, 28276,  7600,  -791, -2318, 28268,  7610,  -792,
+	-2319, 28260,  7620,  -793, -2319, 28252,  7629,  -794, -2320, 28245,  7639,  -796, -2321, 28237,  7649,  -797,
+	-2321, 28228,  7659,  -798, -2322, 28220,  7669,  -799, -2323, 28213,  7679,  -801, -2323, 28205,  7688,  -802,
+	-2324, 28197,  7698,  -803, -2325, 28189,  7708,  -804, -2325, 28181,  7718,  -806, -2326, 28173,  7728,  -807,
+	-2327, 28165,  7738,  -808, -2327, 28157,  7748,  -810, -2328, 28150,  7757,  -811, -2329, 28142,  7767,  -812,
+	-2329, 28133,  7777,  -813, -2330, 28126,  7787,  -815, -2331, 28118,  7797,  -816, -2331, 28109,  7807,  -817,
+	-2332, 28101,  7817,  -818, -2333, 28094,  7827,  -820, -2333, 28086,  7836,  -821, -2334, 28078,  7846,  -822,
+	-2335, 28070,  7856,  -823, -2335, 28062,  7866,  -825, -2336, 28054,  7876,  -826, -2337, 28046,  7886,  -827,
+	-2337, 28038,  7896,  -829, -2338, 28030,  7906,  -830, -2338, 28021,  7916,  -831, -2339, 28013,  7926,  -832,
+	-2340, 28006,  7936,  -834, -2340, 27998,  7945,  -835, -2341, 27990,  7955,  -836, -2342, 27982,  7965,  -837,
+	-2342, 27974,  7975,  -839, -2343, 27966,  7985,  -840, -2343, 27957,  7995,  -841, -2344, 27950,  8005,  -843,
+	-2345, 27942,  8015,  -844, -2345, 27933,  8025,  -845, -2346, 27925,  8035,  -846, -2346, 27917,  8045,  -848,
+	-2347, 27909,  8055,  -849, -2348, 27901,  8065,  -850, -2348, 27892,  8075,  -851, -2349, 27885,  8085,  -853,
+	-2349, 27876,  8095,  -854, -2350, 27868,  8105,  -855, -2351, 27861,  8115,  -857, -2351, 27852,  8125,  -858,
+	-2352, 27844,  8135,  -859, -2352, 27835,  8145,  -860, -2353, 27828,  8155,  -862, -2353, 27819,  8165,  -863,
+	-2354, 27811,  8175,  -864, -2355, 27804,  8185,  -866, -2355, 27795,  8195,  -867, -2356, 27787,  8205,  -868,
+	-2356, 27778,  8215,  -869, -2357, 27771,  8225,  -871, -2357, 27762,  8235,  -872, -2358, 27754,  8245,  -873,
+	-2359, 27747,  8255,  -875, -2359, 27738,  8265,  -876, -2360, 27730,  8275,  -877, -2360, 27721,  8285,  -878,
+	-2361, 27714,  8295,  -880, -2361, 27705,  8305,  -881, -2362, 27697,  8315,  -882, -2362, 27689,  8325,  -884,
+	-2363, 27681,  8335,  -885, -2363, 27672,  8345,  -886, -2364, 27664,  8355,  -887, -2364, 27656,  8365,  -889,
+	-2365, 27648,  8375,  -890, -2365, 27639,  8385,  -891, -2366, 27632,  8395,  -893, -2367, 27624,  8405,  -894,
+	-2367, 27615,  8415,  -895, -2368, 27607,  8425,  -896, -2368, 27598,  8436,  -898, -2369, 27590,  8446,  -899,
+	-2369, 27581,  8456,  -900, -2370, 27574,  8466,  -902, -2370, 27565,  8476,  -903, -2371, 27557,  8486,  -904,
+	-2371, 27549,  8496,  -906, -2372, 27541,  8506,  -907, -2372, 27532,  8516,  -908, -2373, 27524,  8526,  -909,
+	-2373, 27516,  8536,  -911, -2374, 27507,  8547,  -912, -2374, 27498,  8557,  -913, -2374, 27490,  8567,  -915,
+	-2375, 27482,  8577,  -916, -2375, 27473,  8587,  -917, -2376, 27466,  8597,  -919, -2376, 27457,  8607,  -920,
+	-2377, 27449,  8617,  -921, -2377, 27439,  8628,  -922, -2378, 27432,  8638,  -924, -2378, 27423,  8648,  -925,
+	-2379, 27415,  8658,  -926, -2379, 27407,  8668,  -928, -2380, 27399,  8678,  -929, -2380, 27390,  8688,  -930,
+	-2381, 27382,  8699,  -932, -2381, 27373,  8709,  -933, -2381, 27364,  8719,  -934, -2382, 27356,  8729,  -935,
+	-2382, 27348,  8739,  -937, -2383, 27340,  8749,  -938, -2383, 27331,  8759,  -939, -2384, 27323,  8770,  -941,
+	-2384, 27314,  8780,  -942, -2384, 27305,  8790,  -943, -2385, 27298,  8800,  -945, -2385, 27289,  8810,  -946,
+	-2386, 27280,  8821,  -947, -2386, 27271,  8831,  -948, -2387, 27264,  8841,  -950, -2387, 27255,  8851,  -951,
+	-2387, 27246,  8861,  -952, -2388, 27238,  8872,  -954, -2388, 27229,  8882,  -955, -2389, 27221,  8892,  -956,
+	-2389, 27213,  8902,  -958, -2389, 27204,  8912,  -959, -2390, 27195,  8923,  -960, -2390, 27186,  8933,  -961,
+	-2391, 27179,  8943,  -963, -2391, 27170,  8953,  -964, -2391, 27161,  8963,  -965, -2392, 27153,  8974,  -967,
+	-2392, 27144,  8984,  -968, -2393, 27136,  8994,  -969, -2393, 27128,  9004,  -971, -2393, 27118,  9015,  -972,
+	-2394, 27110,  9025,  -973, -2394, 27102,  9035,  -975, -2394, 27093,  9045,  -976, -2395, 27084,  9056,  -977,
+	-2395, 27076,  9066,  -979, -2396, 27068,  9076,  -980, -2396, 27059,  9086,  -981, -2396, 27049,  9097,  -982,
+	-2397, 27042,  9107,  -984, -2397, 27033,  9117,  -985, -2397, 27024,  9127,  -986, -2398, 27016,  9138,  -988,
+	-2398, 27007,  9148,  -989, -2398, 26998,  9158,  -990, -2399, 26991,  9168,  -992, -2399, 26981,  9179,  -993,
+	-2399, 26972,  9189,  -994, -2400, 26965,  9199,  -996, -2400, 26955,  9210,  -997, -2401, 26947,  9220,  -998,
+	-2401, 26939,  9230, -1000, -2401, 26930,  9240, -1001, -2402, 26921,  9251, -1002, -2402, 26912,  9261, -1003,
+	-2402, 26904,  9271, -1005, -2402, 26894,  9282, -1006, -2403, 26886,  9292, -1007, -2403, 26878,  9302, -1009,
+	-2403, 26868,  9313, -1010, -2404, 26860,  9323, -1011, -2404, 26852,  9333, -1013, -2404, 26842,  9344, -1014,
+	-2405, 26834,  9354, -1015, -2405, 26826,  9364, -1017, -2405, 26816,  9375, -1018, -2406, 26808,  9385, -1019,
+	-2406, 26800,  9395, -1021, -2406, 26790,  9406, -1022, -2406, 26781,  9416, -1023, -2407, 26774,  9426, -1025,
+	-2407, 26764,  9437, -1026, -2407, 26755,  9447, -1027, -2408, 26747,  9457, -1028, -2408, 26738,  9468, -1030,
+	-2408, 26729,  9478, -1031, -2409, 26721,  9488, -1032, -2409, 26712,  9499, -1034, -2409, 26703,  9509, -1035,
+	-2409, 26693,  9520, -1036, -2410, 26686,  9530, -1038, -2410, 26677,  9540, -1039, -2410, 26667,  9551, -1040,
+	-2410, 26659,  9561, -1042, -2411, 26651,  9571, -1043, -2411, 26641,  9582, -1044, -2411, 26633,  9592, -1046,
+	-2411, 26623,  9603, -1047, -2412, 26615,  9613, -1048, -2412, 26607,  9623, -1050, -2412, 26597,  9634, -1051,
+	-2412, 26588,  9644, -1052, -2413, 26581,  9654, -1054, -2413, 26571,  9665, -1055, -2413, 26562,  9675, -1056,
+	-2413, 26553,  9686, -1058, -2414, 26545,  9696, -1059, -2414, 26535,  9707, -1060, -2414, 26527,  9717, -1062,
+	-2414, 26518,  9727, -1063, -2415, 26509,  9738, -1064, -2415, 26501,  9748, -1066, -2415, 26491,  9759, -1067,
+	-2415, 26482,  9769, -1068, -2415, 26473,  9779, -1069, -2416, 26465,  9790, -1071, -2416, 26456,  9800, -1072,
+	-2416, 26446,  9811, -1073, -2416, 26438,  9821, -1075, -2417, 26429,  9832, -1076, -2417, 26420,  9842, -1077,
+	-2417, 26411,  9853, -1079, -2417, 26402,  9863, -1080, -2417, 26393,  9873, -1081, -2418, 26385,  9884, -1083,
+	-2418, 26376,  9894, -1084, -2418, 26366,  9905, -1085, -2418, 26358,  9915, -1087, -2418, 26348,  9926, -1088,
+	-2419, 26340,  9936, -1089, -2419, 26331,  9947, -1091, -2419, 26322,  9957, -1092, -2419, 26312,  9968, -1093,
+	-2419, 26304,  9978, -1095, -2419, 26294,  9989, -1096, -2420, 26286,  9999, -1097, -2420, 26277, 10010, -1099,
+	-2420, 26268, 10020, -1100, -2420, 26259, 10030, -1101, -2420, 26250, 10041, -1103, -2421, 26242, 10051, -1104,
+	-2421, 26232, 10062, -1105, -2421, 26224, 10072, -1107, -2421, 26214, 10083, -1108, -2421, 26205, 10093, -1109,
+	-2421, 26196, 10104, -1111, -2421, 26187, 10114, -1112, -2422, 26178, 10125, -1113, -2422, 26170, 10135, -1115,
+	-2422, 26160, 10146, -1116, -2422, 26151, 10156, -1117, -2422, 26142, 10167, -1119, -2422, 26132, 10178, -1120,
+	-2422, 26123, 10188, -1121, -2423, 26115, 10199, -1123, -2423, 26106, 10209, -1124, -2423, 26096, 10220, -1125,
+	-2423, 26088, 10230, -1127, -2423, 26078, 10241, -1128, -2423, 26069, 10251, -1129, -2423, 26060, 10262, -1131,
+	-2424, 26052, 10272, -1132, -2424, 26042, 10283, -1133, -2424, 26034, 10293, -1135, -2424, 26024, 10304, -1136,
+	-2424, 26015, 10314, -1137, -2424, 26006, 10325, -1139, -2424, 25996, 10336, -1140, -2424, 25987, 10346, -1141,
+	-2424, 25978, 10357, -1143, -2425, 25970, 10367, -1144, -2425, 25960, 10378, -1145, -2425, 25952, 10388, -1147,
+	-2425, 25942, 10399, -1148, -2425, 25933, 10409, -1149, -2425, 25924, 10420, -1151, -2425, 25914, 10431, -1152,
+	-2425, 25905, 10441, -1153, -2425, 25896, 10452, -1155, -2425, 25887, 10462, -1156, -2425, 25877, 10473, -1157,
+	-2426, 25870, 10483, -1159, -2426, 25860, 10494, -1160, -2426, 25850, 10505, -1161, -2426, 25842, 10515, -1163,
+	-2426, 25832, 10526, -1164, -2426, 25823, 10536, -1165, -2426, 25814, 10547, -1167, -2426, 25804, 10558, -1168,
+	-2426, 25795, 10568, -1169, -2426, 25786, 10579, -1171, -2426, 25777, 10589, -1172, -2426, 25767, 10600, -1173,
+	-2426, 25758, 10611, -1175, -2426, 25749, 10621, -1176, -2427, 25740, 10632, -1177, -2427, 25732, 10642, -1179,
+	-2427, 25722, 10653, -1180, -2427, 25712, 10664, -1181, -2427, 25704, 10674, -1183, -2427, 25694, 10685, -1184,
+	-2427, 25684, 10696, -1185, -2427, 25676, 10706, -1187, -2427, 25666, 10717, -1188, -2427, 25657, 10727, -1189,
+	-2427, 25648, 10738, -1191, -2427, 25638, 10749, -1192, -2427, 25629, 10759, -1193, -2427, 25620, 10770, -1195,
+	-2427, 25610, 10781, -1196, -2427, 25601, 10791, -1197, -2427, 25592, 10802, -1199, -2427, 25582, 10813, -1200,
+	-2427, 25573, 10823, -1201, -2427, 25564, 10834, -1203, -2427, 25555, 10844, -1204, -2427, 25545, 10855, -1205,
+	-2427, 25536, 10866, -1207, -2427, 25527, 10876, -1208, -2427, 25517, 10887, -1209, -2427, 25508, 10898, -1211,
+	-2427, 25499, 10908, -1212, -2427, 25489, 10919, -1213, -2427, 25480, 10930, -1215, -2427, 25471, 10940, -1216,
+	-2427, 25461, 10951, -1217, -2427, 25452, 10962, -1219, -2427, 25443, 10972, -1220, -2427, 25433, 10983, -1221,
+	-2427, 25424, 10994, -1223, -2427, 25414, 11005, -1224, -2427, 25405, 11015, -1225, -2427, 25396, 11026, -1227,
+	-2427, 25386, 11037, -1228, -2427, 25377, 11047, -1229, -2427, 25368, 11058, -1231, -2427, 25358, 11069, -1232,
+	-2427, 25349, 11079, -1233, -2427, 25340, 11090, -1235, -2427, 25330, 11101, -1236, -2427, 25321, 11111, -1237,
+	-2427, 25312, 11122, -1239, -2427, 25302, 11133, -1240, -2427, 25292, 11144, -1241, -2427, 25284, 11154, -1243,
+	-2427, 25274, 11165, -1244, -2427, 25264, 11176, -1245, -2427, 25256, 11186, -1247, -2427, 25246, 11197, -1248,
+	-2427, 25236, 11208, -1249, -2427, 25227, 11219, -1251, -2426, 25217, 11229, -1252, -2426, 25207, 11240, -1253,
+	-2426, 25198, 11251, -1255, -2426, 25189, 11261, -1256, -2426, 25179, 11272, -1257, -2426, 25170, 11283, -1259,
+	-2426, 25160, 11294, -1260, -2426, 25151, 11304, -1261, -2426, 25142, 11315, -1263, -2426, 25132, 11326, -1264,
+	-2426, 25122, 11337, -1265, -2426, 25114, 11347, -1267, -2426, 25104, 11358, -1268, -2426, 25094, 11369, -1269,
+	-2426, 25085, 11380, -1271, -2425, 25075, 11390, -1272, -2425, 25065, 11401, -1273, -2425, 25055, 11412, -1274,
+	-2425, 25047, 11422, -1276, -2425, 25037, 11433, -1277, -2425, 25027, 11444, -1278, -2425, 25018, 11455, -1280,
+	-2425, 25008, 11466, -1281, -2425, 24999, 11476, -1282, -2425, 24990, 11487, -1284, -2424, 24979, 11498, -1285,
+	-2424, 24969, 11509, -1286, -2424, 24961, 11519, -1288, -2424, 24951, 11530, -1289, -2424, 24941, 11541, -1290,
+	-2424, 24932, 11552, -1292, -2424, 24923, 11562, -1293, -2424, 24913, 11573, -1294, -2424, 24904, 11584, -1296,
+	-2423, 24893, 11595, -1297, -2423, 24883, 11606, -1298, -2423, 24875, 11616, -1300, -2423, 24865, 11627, -1301,
+	-2423, 24855, 11638, -1302, -2423, 24846, 11649, -1304, -2423, 24837, 11659, -1305, -2423, 24827, 11670, -1306,
+	-2422, 24817, 11681, -1308, -2422, 24807, 11692, -1309, -2422, 24797, 11703, -1310, -2422, 24789, 11713, -1312,
+	-2422, 24779, 11724, -1313, -2422, 24769, 11735, -1314, -2422, 24760, 11746, -1316, -2421, 24749, 11757, -1317,
+	-2421, 24740, 11767, -1318, -2421, 24731, 11778, -1320, -2421, 24721, 11789, -1321, -2421, 24711, 11800, -1322,
+	-2421, 24702, 11811, -1324, -2421, 24692, 11822, -1325, -2420, 24682, 11832, -1326, -2420, 24673, 11843, -1328,
+	-2420, 24663, 11854, -1329, -2420, 24653, 11865, -1330, -2420, 24644, 11876, -1332, -2420, 24635, 11886, -1333,
+	-2419, 24624, 11897, -1334, -2419, 24615, 11908, -1336, -2419, 24605, 11919, -1337, -2419, 24595, 11930, -1338,
+	-2419, 24586, 11941, -1340, -2419, 24577, 11951, -1341, -2418, 24566, 11962, -1342, -2418, 24557, 11973, -1344,
+	-2418, 24547, 11984, -1345, -2418, 24537, 11995, -1346, -2418, 24528, 12006, -1348, -2417, 24518, 12016, -1349,
+	-2417, 24508, 12027, -1350, -2417, 24499, 12038, -1352, -2417, 24489, 12049, -1353, -2417, 24479, 12060, -1354,
+	-2416, 24469, 12071, -1356, -2416, 24459, 12082, -1357, -2416, 24450, 12092, -1358, -2416, 24441, 12103, -1360,
+	-2416, 24431, 12114, -1361, -2415, 24420, 12125, -1362, -2415, 24411, 12136, -1364, -2415, 24401, 12147, -1365,
+	-2415, 24391, 12158, -1366, -2415, 24382, 12168, -1367, -2414, 24372, 12179, -1369, -2414, 24362, 12190, -1370,
+	-2414, 24352, 12201, -1371, -2414, 24343, 12212, -1373, -2413, 24332, 12223, -1374, -2413, 24322, 12234, -1375,
+	-2413, 24314, 12244, -1377, -2413, 24304, 12255, -1378, -2413, 24294, 12266, -1379, -2412, 24284, 12277, -1381,
+	-2412, 24274, 12288, -1382, -2412, 24264, 12299, -1383, -2412, 24255, 12310, -1385, -2411, 24244, 12321, -1386,
+	-2411, 24234, 12332, -1387, -2411, 24226, 12342, -1389, -2411, 24216, 12353, -1390, -2410, 24205, 12364, -1391,
+	-2410, 24196, 12375, -1393, -2410, 24186, 12386, -1394, -2410, 24176, 12397, -1395, -2409, 24166, 12408, -1397,
+	-2409, 24156, 12419, -1398, -2409, 24146, 12430, -1399, -2409, 24138, 12440, -1401, -2408, 24127, 12451, -1402,
+	-2408, 24117, 12462, -1403, -2408, 24107, 12473, -1404, -2408, 24098, 12484, -1406, -2407, 24087, 12495, -1407,
+	-2407, 24077, 12506, -1408, -2407, 24068, 12517, -1410, -2406, 24057, 12528, -1411, -2406, 24047, 12539, -1412,
+	-2406, 24039, 12549, -1414, -2406, 24029, 12560, -1415, -2405, 24018, 12571, -1416, -2405, 24009, 12582, -1418,
+	-2405, 23999, 12593, -1419, -2404, 23988, 12604, -1420, -2404, 23979, 12615, -1422, -2404, 23969, 12626, -1423,
+	-2404, 23959, 12637, -1424, -2403, 23949, 12648, -1426, -2403, 23939, 12659, -1427, -2403, 23929, 12670, -1428,
+	-2402, 23918, 12681, -1429, -2402, 23910, 12691, -1431, -2402, 23900, 12702, -1432, -2402, 23890, 12713, -1433,
+	-2401, 23880, 12724, -1435, -2401, 23870, 12735, -1436, -2401, 23860, 12746, -1437, -2400, 23850, 12757, -1439,
+	-2400, 23840, 12768, -1440, -2400, 23830, 12779, -1441, -2399, 23820, 12790, -1443, -2399, 23810, 12801, -1444,
+	-2399, 23800, 12812, -1445, -2398, 23790, 12823, -1447, -2398, 23780, 12834, -1448, -2398, 23770, 12845, -1449,
+	-2397, 23759, 12856, -1450, -2397, 23751, 12866, -1452, -2397, 23741, 12877, -1453, -2396, 23730, 12888, -1454,
+	-2396, 23721, 12899, -1456, -2396, 23711, 12910, -1457, -2395, 23700, 12921, -1458, -2395, 23691, 12932, -1460,
+	-2395, 23681, 12943, -1461, -2394, 23670, 12954, -1462, -2394, 23661, 12965, -1464, -2394, 23651, 12976, -1465,
+	-2393, 23640, 12987, -1466, -2393, 23631, 12998, -1468, -2393, 23621, 13009, -1469, -2392, 23610, 13020, -1470,
+	-2392, 23600, 13031, -1471, -2392, 23591, 13042, -1473, -2391, 23580, 13053, -1474, -2391, 23570, 13064, -1475,
+	-2391, 23561, 13075, -1477, -2390, 23550, 13086, -1478, -2390, 23540, 13097, -1479, -2389, 23530, 13108, -1481,
+	-2389, 23520, 13119, -1482, -2389, 23510, 13130, -1483, -2388, 23499, 13141, -1484, -2388, 23490, 13152, -1486,
+	-2388, 23480, 13163, -1487, -2387, 23470, 13173, -1488, -2387, 23461, 13184, -1490, -2387, 23451, 13195, -1491,
+	-2386, 23440, 13206, -1492, -2386, 23431, 13217, -1494, -2385, 23420, 13228, -1495, -2385, 23410, 13239, -1496,
+	-2385, 23400, 13250, -1497, -2384, 23390, 13261, -1499, -2384, 23380, 13272, -1500, -2383, 23369, 13283, -1501,
+	-2383, 23360, 13294, -1503, -2383, 23350, 13305, -1504, -2382, 23339, 13316, -1505, -2382, 23330, 13327, -1507,
+	-2381, 23319, 13338, -1508, -2381, 23309, 13349, -1509, -2381, 23299, 13360, -1510, -2380, 23289, 13371, -1512,
+	-2380, 23279, 13382, -1513, -2379, 23268, 13393, -1514, -2379, 23259, 13404, -1516, -2379, 23249, 13415, -1517,
+	-2378, 23238, 13426, -1518, -2378, 23229, 13437, -1520, -2377, 23218, 13448, -1521, -2377, 23208, 13459, -1522,
+	-2377, 23198, 13470, -1523, -2376, 23188, 13481, -1525, -2376, 23178, 13492, -1526, -2375, 23167, 13503, -1527,
+	-2375, 23158, 13514, -1529, -2374, 23147, 13525, -1530, -2374, 23137, 13536, -1531, -2374, 23127, 13547, -1532,
+	-2373, 23117, 13558, -1534, -2373, 23107, 13569, -1535, -2372, 23096, 13580, -1536, -2372, 23087, 13591, -1538,
+	-2371, 23076, 13602, -1539, -2371, 23066, 13613, -1540, -2371, 23057, 13624, -1542, -2370, 23045, 13636, -1543,
+	-2370, 23035, 13647, -1544, -2369, 23024, 13658, -1545, -2369, 23015, 13669, -1547, -2368, 23004, 13680, -1548,
+	-2368, 22994, 13691, -1549, -2367, 22984, 13702, -1551, -2367, 22974, 13713, -1552, -2367, 22964, 13724, -1553,
+	-2366, 22953, 13735, -1554, -2366, 22944, 13746, -1556, -2365, 22933, 13757, -1557, -2365, 22923, 13768, -1558,
+	-2364, 22913, 13779, -1560, -2364, 22903, 13790, -1561, -2363, 22892, 13801, -1562, -2363, 22882, 13812, -1563,
+	-2362, 22872, 13823, -1565, -2362, 22862, 13834, -1566, -2361, 22851, 13845, -1567, -2361, 22842, 13856, -1569,
+	-2360, 22831, 13867, -1570, -2360, 22821, 13878, -1571, -2359, 22810, 13889, -1572, -2359, 22801, 13900, -1574,
+	-2359, 22791, 13911, -1575, -2358, 22780, 13922, -1576, -2358, 22770, 13933, -1577, -2357, 22760, 13944, -1579,
+	-2357, 22750, 13955, -1580, -2356, 22738, 13967, -1581, -2356, 22729, 13978, -1583, -2355, 22718, 13989, -1584,
+	-2355, 22708, 14000, -1585, -2354, 22697, 14011, -1586, -2354, 22688, 14022, -1588, -2353, 22677, 14033, -1589,
+	-2353, 22667, 14044, -1590, -2352, 22657, 14055, -1592, -2352, 22647, 14066, -1593, -2351, 22636, 14077, -1594,
+	-2351, 22626, 14088, -1595, -2350, 22616, 14099, -1597, -2350, 22606, 14110, -1598, -2349, 22595, 14121, -1599,
+	-2349, 22585, 14132, -1600, -2348, 22575, 14143, -1602, -2348, 22565, 14154, -1603, -2347, 22554, 14165, -1604,
+	-2347, 22544, 14177, -1606, -2346, 22533, 14188, -1607, -2345, 22522, 14199, -1608, -2345, 22512, 14210, -1609,
+	-2344, 22502, 14221, -1611, -2344, 22492, 14232, -1612, -2343, 22481, 14243, -1613, -2343, 22471, 14254, -1614,
+	-2342, 22461, 14265, -1616, -2342, 22451, 14276, -1617, -2341, 22440, 14287, -1618, -2341, 22430, 14298, -1619,
+	-2340, 22420, 14309, -1621, -2340, 22410, 14320, -1622, -2339, 22399, 14331, -1623, -2339, 22389, 14342, -1624,
+	-2338, 22378, 14354, -1626, -2337, 22367, 14365, -1627, -2337, 22357, 14376, -1628, -2336, 22347, 14387, -1630,
+	-2336, 22337, 14398, -1631, -2335, 22326, 14409, -1632, -2335, 22316, 14420, -1633, -2334, 22306, 14431, -1635,
+	-2334, 22296, 14442, -1636, -2333, 22285, 14453, -1637, -2332, 22274, 14464, -1638, -2332, 22265, 14475, -1640,
+	-2331, 22254, 14486, -1641, -2331, 22244, 14497, -1642, -2330, 22232, 14509, -1643, -2330, 22223, 14520, -1645,
+	-2329, 22212, 14531, -1646, -2329, 22202, 14542, -1647, -2328, 22191, 14553, -1648, -2327, 22181, 14564, -1650,
+	-2327, 22171, 14575, -1651, -2326, 22160, 14586, -1652, -2326, 22150, 14597, -1653, -2325, 22140, 14608, -1655,
+	-2325, 22130, 14619, -1656, -2324, 22119, 14630, -1657, -2323, 22107, 14642, -1658, -2323, 22098, 14653, -1660,
+	-2322, 22087, 14664, -1661, -2322, 22077, 14675, -1662, -2321, 22066, 14686, -1663, -2320, 22056, 14697, -1665,
+	-2320, 22046, 14708, -1666, -2319, 22035, 14719, -1667, -2319, 22025, 14730, -1668, -2318, 22015, 14741, -1670,
+	-2317, 22004, 14752, -1671, -2317, 21994, 14763, -1672, -2316, 21982, 14775, -1673, -2316, 21973, 14786, -1675,
+	-2315, 21962, 14797, -1676, -2314, 21951, 14808, -1677, -2314, 21941, 14819, -1678, -2313, 21931, 14830, -1680,
+	-2313, 21921, 14841, -1681, -2312, 21910, 14852, -1682, -2311, 21899, 14863, -1683, -2311, 21890, 14874, -1685,
+	-2310, 21879, 14885, -1686, -2310, 21868, 14897, -1687, -2309, 21857, 14908, -1688, -2308, 21847, 14919, -1690,
+	-2308, 21837, 14930, -1691, -2307, 21826, 14941, -1692, -2306, 21815, 14952, -1693, -2306, 21805, 14963, -1694,
+	-2305, 21795, 14974, -1696, -2305, 21785, 14985, -1697, -2304, 21774, 14996, -1698, -2303, 21763, 15007, -1699,
+	-2303, 21753, 15019, -1701, -2302, 21742, 15030, -1702, -2301, 21731, 15041, -1703, -2301, 21721, 15052, -1704,
+	-2300, 21711, 15063, -1706, -2300, 21701, 15074, -1707, -2299, 21690, 15085, -1708, -2298, 21679, 15096, -1709,
+	-2298, 21669, 15107, -1710, -2297, 21659, 15118, -1712, -2296, 21647, 15130, -1713, -2296, 21637, 15141, -1714,
+	-2295, 21626, 15152, -1715, -2294, 21616, 15163, -1717, -2294, 21606, 15174, -1718, -2293, 21595, 15185, -1719,
+	-2292, 21584, 15196, -1720, -2292, 21575, 15207, -1722, -2291, 21564, 15218, -1723, -2290, 21553, 15229, -1724,
+	-2290, 21542, 15241, -1725, -2289, 21531, 15252, -1726, -2288, 21521, 15263, -1728, -2288, 21511, 15274, -1729,
+	-2287, 21500, 15285, -1730, -2286, 21489, 15296, -1731, -2286, 21480, 15307, -1733, -2285, 21469, 15318, -1734,
+	-2284, 21458, 15329, -1735, -2284, 21447, 15341, -1736, -2283, 21436, 15352, -1737, -2282, 21426, 15363, -1739,
+	-2282, 21416, 15374, -1740, -2281, 21405, 15385, -1741, -2280, 21394, 15396, -1742, -2280, 21384, 15407, -1743,
+	-2279, 21374, 15418, -1745, -2278, 21363, 15429, -1746, -2278, 21353, 15440, -1747, -2277, 21341, 15452, -1748,
+	-2276, 21331, 15463, -1750, -2276, 21321, 15474, -1751, -2275, 21310, 15485, -1752, -2274, 21299, 15496, -1753,
+	-2274, 21289, 15507, -1754, -2273, 21279, 15518, -1756, -2272, 21268, 15529, -1757, -2271, 21257, 15540, -1758,
+	-2271, 21246, 15552, -1759, -2270, 21235, 15563, -1760, -2269, 21225, 15574, -1762, -2269, 21215, 15585, -1763,
+	-2268, 21204, 15596, -1764, -2267, 21193, 15607, -1765, -2267, 21183, 15618, -1766, -2266, 21173, 15629, -1768,
+	-2265, 21162, 15640, -1769, -2264, 21150, 15652, -1770, -2264, 21140, 15663, -1771, -2263, 21129, 15674, -1772,
+	-2262, 21119, 15685, -1774, -2262, 21109, 15696, -1775, -2261, 21098, 15707, -1776, -2260, 21087, 15718, -1777,
+	-2259, 21076, 15729, -1778, -2259, 21067, 15740, -1780, -2258, 21055, 15752, -1781, -2257, 21044, 15763, -1782,
+	-2257, 21034, 15774, -1783, -2256, 21023, 15785, -1784, -2255, 21013, 15796, -1786, -2254, 21002, 15807, -1787,
+	-2254, 20992, 15818, -1788, -2253, 20981, 15829, -1789, -2252, 20970, 15840, -1790, -2251, 20959, 15852, -1792,
+	-2251, 20949, 15863, -1793, -2250, 20938, 15874, -1794, -2249, 20927, 15885, -1795, -2249, 20917, 15896, -1796,
+	-2248, 20906, 15907, -1797, -2247, 20896, 15918, -1799, -2246, 20885, 15929, -1800, -2246, 20875, 15940, -1801,
+	-2245, 20863, 15952, -1802, -2244, 20852, 15963, -1803, -2243, 20842, 15974, -1805, -2243, 20832, 15985, -1806,
+	-2242, 20821, 15996, -1807, -2241, 20810, 16007, -1808, -2240, 20799, 16018, -1809, -2240, 20789, 16029, -1810,
+	-2239, 20779, 16040, -1812, -2238, 20767, 16052, -1813, -2237, 20756, 16063, -1814, -2237, 20746, 16074, -1815,
+	-2236, 20735, 16085, -1816, -2235, 20725, 16096, -1818, -2234, 20714, 16107, -1819, -2233, 20703, 16118, -1820,
+	-2233, 20693, 16129, -1821, -2232, 20682, 16140, -1822, -2231, 20670, 16152, -1823, -2230, 20660, 16163, -1825,
+	-2230, 20650, 16174, -1826, -2229, 20639, 16185, -1827, -2228, 20628, 16196, -1828, -2227, 20617, 16207, -1829,
+	-2227, 20607, 16218, -1830, -2226, 20597, 16229, -1832, -2225, 20586, 16240, -1833, -2224, 20574, 16252, -1834,
+	-2223, 20563, 16263, -1835, -2223, 20553, 16274, -1836, -2222, 20542, 16285, -1837, -2221, 20532, 16296, -1839,
+	-2220, 20521, 16307, -1840, -2220, 20511, 16318, -1841, -2219, 20500, 16329, -1842, -2218, 20489, 16340, -1843,
+	-2217, 20478, 16351, -1844, -2216, 20466, 16363, -1845, -2216, 20457, 16374, -1847, -2215, 20446, 16385, -1848,
+	-2214, 20435, 16396, -1849, -2213, 20424, 16407, -1850, -2212, 20413, 16418, -1851, -2212, 20403, 16429, -1852,
+	-2211, 20393, 16440, -1854, -2210, 20382, 16451, -1855, -2209, 20370, 16463, -1856, -2208, 20359, 16474, -1857,
+	-2208, 20349, 16485, -1858, -2207, 20338, 16496, -1859, -2206, 20327, 16507, -1860, -2205, 20317, 16518, -1862,
+	-2204, 20306, 16529, -1863, -2204, 20296, 16540, -1864, -2203, 20285, 16551, -1865, -2202, 20273, 16563, -1866,
+	-2201, 20262, 16574, -1867, -2200, 20251, 16585, -1868, -2199, 20241, 16596, -1870, -2199, 20231, 16607, -1871,
+	-2198, 20220, 16618, -1872, -2197, 20209, 16629, -1873, -2196, 20198, 16640, -1874, -2195, 20187, 16651, -1875,
+	-2195, 20177, 16662, -1876, -2194, 20166, 16674, -1878, -2193, 20155, 16685, -1879, -2192, 20144, 16696, -1880,
+	-2191, 20133, 16707, -1881, -2190, 20122, 16718, -1882, -2190, 20112, 16729, -1883, -2189, 20101, 16740, -1884,
+	-2188, 20091, 16751, -1886, -2187, 20080, 16762, -1887, -2186, 20069, 16773, -1888, -2185, 20057, 16785, -1889,
+	-2185, 20047, 16796, -1890, -2184, 20036, 16807, -1891, -2183, 20025, 16818, -1892, -2182, 20014, 16829, -1893,
+	-2181, 20004, 16840, -1895, -2180, 19993, 16851, -1896, -2179, 19982, 16862, -1897, -2179, 19972, 16873, -1898,
+	-2178, 19961, 16884, -1899, -2177, 19950, 16895, -1900, -2176, 19938, 16907, -1901, -2175, 19927, 16918, -1902,
+	-2174, 19917, 16929, -1904, -2174, 19907, 16940, -1905, -2173, 19896, 16951, -1906, -2172, 19885, 16962, -1907,
+	-2171, 19874, 16973, -1908, -2170, 19863, 16984, -1909, -2169, 19852, 16995, -1910, -2168, 19841, 17006, -1911,
+	-2168, 19831, 17018, -1913, -2167, 19820, 17029, -1914, -2166, 19809, 17040, -1915, -2165, 19798, 17051, -1916,
+	-2164, 19787, 17062, -1917, -2163, 19776, 17073, -1918, -2162, 19765, 17084, -1919, -2161, 19754, 17095, -1920,
+	-2161, 19744, 17106, -1921, -2160, 19733, 17117, -1922, -2159, 19723, 17128, -1924, -2158, 19712, 17139, -1925,
+	-2157, 19700, 17151, -1926, -2156, 19689, 17162, -1927, -2155, 19678, 17173, -1928, -2154, 19667, 17184, -1929,
+	-2154, 19657, 17195, -1930, -2153, 19646, 17206, -1931, -2152, 19635, 17217, -1932, -2151, 19625, 17228, -1934,
+	-2150, 19614, 17239, -1935, -2149, 19603, 17250, -1936, -2148, 19592, 17261, -1937, -2147, 19581, 17272, -1938,
+	-2146, 19569, 17284, -1939, -2146, 19559, 17295, -1940, -2145, 19548, 17306, -1941, -2144, 19537, 17317, -1942,
+	-2143, 19526, 17328, -1943, -2142, 19515, 17339, -1944, -2141, 19505, 17350, -1946, -2140, 19494, 17361, -1947,
+	-2139, 19483, 17372, -1948, -2138, 19472, 17383, -1949, -2137, 19461, 17394, -1950, -2137, 19451, 17405, -1951,
+	-2136, 19440, 17416, -1952, -2135, 19429, 17427, -1953, -2134, 19417, 17439, -1954, -2133, 19406, 17450, -1955,
+	-2132, 19395, 17461, -1956, -2131, 19384, 17472, -1957, -2130, 19374, 17483, -1959, -2129, 19363, 17494, -1960,
+	-2128, 19352, 17505, -1961, -2127, 19341, 17516, -1962, -2127, 19331, 17527, -1963, -2126, 19320, 17538, -1964,
+	-2125, 19309, 17549, -1965, -2124, 19298, 17560, -1966, -2123, 19287, 17571, -1967, -2122, 19276, 17582, -1968,
+	-2121, 19265, 17593, -1969, -2120, 19253, 17605, -1970, -2119, 19242, 17616, -1971, -2118, 19231, 17627, -1972,
+	-2117, 19221, 17638, -1974, -2116, 19210, 17649, -1975, -2116, 19200, 17660, -1976, -2115, 19189, 17671, -1977,
+	-2114, 19178, 17682, -1978, -2113, 19167, 17693, -1979, -2112, 19156, 17704, -1980, -2111, 19145, 17715, -1981,
+	-2110, 19134, 17726, -1982, -2109, 19123, 17737, -1983, -2108, 19112, 17748, -1984, -2107, 19101, 17759, -1985,
+	-2106, 19090, 17770, -1986, -2105, 19079, 17781, -1987, -2104, 19068, 17792, -1988, -2103, 19056, 17804, -1989,
+	-2102, 19046, 17815, -1991, -2101, 19035, 17826, -1992, -2101, 19025, 17837, -1993, -2100, 19014, 17848, -1994,
+	-2099, 19003, 17859, -1995, -2098, 18992, 17870, -1996, -2097, 18981, 17881, -1997, -2096, 18970, 17892, -1998,
+	-2095, 18959, 17903, -1999, -2094, 18948, 17914, -2000, -2093, 18937, 17925, -2001, -2092, 18926, 17936, -2002,
+	-2091, 18915, 17947, -2003, -2090, 18904, 17958, -2004, -2089, 18893, 17969, -2005, -2088, 18882, 17980, -2006,
+	-2087, 18871, 17991, -2007, -2086, 18860, 18002, -2008, -2085, 18849, 18013, -2009, -2084, 18838, 18024, -2010,
+	-2083, 18827, 18035, -2011, -2082, 18816, 18046, -2012, -2081, 18805, 18057, -2013, -2080, 18794, 18068, -2014,
+	-2079, 18783, 18080, -2016, -2079, 18773, 18091, -2017, -2078, 18762, 18102, -2018, -2077, 18751, 18113, -2019,
+	-2076, 18740, 18124, -2020, -2075, 18729, 18135, -2021, -2074, 18718, 18146, -2022, -2073, 18707, 18157, -2023,
+	-2072, 18696, 18168, -2024, -2071, 18685, 18179, -2025, -2070, 18674, 18190, -2026, -2069, 18663, 18201, -2027,
+	-2068, 18652, 18212, -2028, -2067, 18641, 18223, -2029, -2066, 18630, 18234, -2030, -2065, 18619, 18245, -2031,
+	-2064, 18608, 18256, -2032, -2063, 18597, 18267, -2033, -2062, 18586, 18278, -2034, -2061, 18575, 18289, -2035,
+	-2060, 18564, 18300, -2036, -2059, 18553, 18311, -2037, -2058, 18542, 18322, -2038, -2057, 18531, 18333, -2039,
+	-2056, 18520, 18344, -2040, -2055, 18509, 18355, -2041, -2054, 18498, 18366, -2042, -2053, 18487, 18377, -2043,
+	-2052, 18476, 18388, -2044, -2051, 18465, 18399, -2045, -2050, 18454, 18410, -2046, -2049, 18443, 18421, -2047,
+	-2048, 18432, 18432, -2048, -2047, 18421, 18443, -2049, -2046, 18410, 18454, -2050, -2045, 18399, 18465, -2051,
+	-2044, 18388, 18476, -2052, -2043, 18377, 18487, -2053, -2042, 18366, 18498, -2054, -2041, 18355, 18509, -2055,
+	-2040, 18344, 18520, -2056, -2039, 18333, 18531, -2057, -2038, 18322, 18542, -2058, -2037, 18311, 18553, -2059,
+	-2036, 18300, 18564, -2060, -2035, 18289, 18575, -2061, -2034, 18278, 18586, -2062, -2033, 18267, 18597, -2063,
+	-2032, 18256, 18608, -2064, -2031, 18245, 18619, -2065, -2030, 18234, 18630, -2066, -2029, 18223, 18641, -2067,
+	-2028, 18212, 18652, -2068, -2027, 18201, 18663, -2069, -2026, 18190, 18674, -2070, -2025, 18179, 18685, -2071,
+	-2024, 18168, 18696, -2072, -2023, 18157, 18707, -2073, -2022, 18146, 18718, -2074, -2021, 18135, 18729, -2075,
+	-2020, 18124, 18740, -2076, -2019, 18113, 18751, -2077, -2018, 18102, 18762, -2078, -2017, 18091, 18773, -2079,
+	-2016, 18080, 18783, -2079, -2014, 18068, 18794, -2080, -2013, 18057, 18805, -2081, -2012, 18046, 18816, -2082,
+	-2011, 18035, 18827, -2083, -2010, 18024, 18838, -2084, -2009, 18013, 18849, -2085, -2008, 18002, 18860, -2086,
+	-2007, 17991, 18871, -2087, -2006, 17980, 18882, -2088, -2005, 17969, 18893, -2089, -2004, 17958, 18904, -2090,
+	-2003, 17947, 18915, -2091, -2002, 17936, 18926, -2092, -2001, 17925, 18937, -2093, -2000, 17914, 18948, -2094,
+	-1999, 17903, 18959, -2095, -1998, 17892, 18970, -2096, -1997, 17881, 18981, -2097, -1996, 17870, 18992, -2098,
+	-1995, 17859, 19003, -2099, -1994, 17848, 19014, -2100, -1993, 17837, 19025, -2101, -1992, 17826, 19035, -2101,
+	-1991, 17815, 19046, -2102, -1989, 17804, 19056, -2103, -1988, 17792, 19068, -2104, -1987, 17781, 19079, -2105,
+	-1986, 17770, 19090, -2106, -1985, 17759, 19101, -2107, -1984, 17748, 19112, -2108, -1983, 17737, 19123, -2109,
+	-1982, 17726, 19134, -2110, -1981, 17715, 19145, -2111, -1980, 17704, 19156, -2112, -1979, 17693, 19167, -2113,
+	-1978, 17682, 19178, -2114, -1977, 17671, 19189, -2115, -1976, 17660, 19200, -2116, -1975, 17649, 19210, -2116,
+	-1974, 17638, 19221, -2117, -1972, 17627, 19231, -2118, -1971, 17616, 19242, -2119, -1970, 17605, 19253, -2120,
+	-1969, 17593, 19265, -2121, -1968, 17582, 19276, -2122, -1967, 17571, 19287, -2123, -1966, 17560, 19298, -2124,
+	-1965, 17549, 19309, -2125, -1964, 17538, 19320, -2126, -1963, 17527, 19331, -2127, -1962, 17516, 19341, -2127,
+	-1961, 17505, 19352, -2128, -1960, 17494, 19363, -2129, -1959, 17483, 19374, -2130, -1957, 17472, 19384, -2131,
+	-1956, 17461, 19395, -2132, -1955, 17450, 19406, -2133, -1954, 17439, 19417, -2134, -1953, 17427, 19429, -2135,
+	-1952, 17416, 19440, -2136, -1951, 17405, 19451, -2137, -1950, 17394, 19461, -2137, -1949, 17383, 19472, -2138,
+	-1948, 17372, 19483, -2139, -1947, 17361, 19494, -2140, -1946, 17350, 19505, -2141, -1944, 17339, 19515, -2142,
+	-1943, 17328, 19526, -2143, -1942, 17317, 19537, -2144, -1941, 17306, 19548, -2145, -1940, 17295, 19559, -2146,
+	-1939, 17284, 19569, -2146, -1938, 17272, 19581, -2147, -1937, 17261, 19592, -2148, -1936, 17250, 19603, -2149,
+	-1935, 17239, 19614, -2150, -1934, 17228, 19625, -2151, -1932, 17217, 19635, -2152, -1931, 17206, 19646, -2153,
+	-1930, 17195, 19657, -2154, -1929, 17184, 19667, -2154, -1928, 17173, 19678, -2155, -1927, 17162, 19689, -2156,
+	-1926, 17151, 19700, -2157, -1925, 17139, 19712, -2158, -1924, 17128, 19723, -2159, -1922, 17117, 19733, -2160,
+	-1921, 17106, 19744, -2161, -1920, 17095, 19754, -2161, -1919, 17084, 19765, -2162, -1918, 17073, 19776, -2163,
+	-1917, 17062, 19787, -2164, -1916, 17051, 19798, -2165, -1915, 17040, 19809, -2166, -1914, 17029, 19820, -2167,
+	-1913, 17018, 19831, -2168, -1911, 17006, 19841, -2168, -1910, 16995, 19852, -2169, -1909, 16984, 19863, -2170,
+	-1908, 16973, 19874, -2171, -1907, 16962, 19885, -2172, -1906, 16951, 19896, -2173, -1905, 16940, 19907, -2174,
+	-1904, 16929, 19917, -2174, -1902, 16918, 19927, -2175, -1901, 16907, 19938, -2176, -1900, 16895, 19950, -2177,
+	-1899, 16884, 19961, -2178, -1898, 16873, 19972, -2179, -1897, 16862, 19982, -2179, -1896, 16851, 19993, -2180,
+	-1895, 16840, 20004, -2181, -1893, 16829, 20014, -2182, -1892, 16818, 20025, -2183, -1891, 16807, 20036, -2184,
+	-1890, 16796, 20047, -2185, -1889, 16785, 20057, -2185, -1888, 16773, 20069, -2186, -1887, 16762, 20080, -2187,
+	-1886, 16751, 20091, -2188, -1884, 16740, 20101, -2189, -1883, 16729, 20112, -2190, -1882, 16718, 20122, -2190,
+	-1881, 16707, 20133, -2191, -1880, 16696, 20144, -2192, -1879, 16685, 20155, -2193, -1878, 16674, 20166, -2194,
+	-1876, 16662, 20177, -2195, -1875, 16651, 20187, -2195, -1874, 16640, 20198, -2196, -1873, 16629, 20209, -2197,
+	-1872, 16618, 20220, -2198, -1871, 16607, 20231, -2199, -1870, 16596, 20241, -2199, -1868, 16585, 20251, -2200,
+	-1867, 16574, 20262, -2201, -1866, 16563, 20273, -2202, -1865, 16551, 20285, -2203, -1864, 16540, 20296, -2204,
+	-1863, 16529, 20306, -2204, -1862, 16518, 20317, -2205, -1860, 16507, 20327, -2206, -1859, 16496, 20338, -2207,
+	-1858, 16485, 20349, -2208, -1857, 16474, 20359, -2208, -1856, 16463, 20370, -2209, -1855, 16451, 20382, -2210,
+	-1854, 16440, 20393, -2211, -1852, 16429, 20403, -2212, -1851, 16418, 20413, -2212, -1850, 16407, 20424, -2213,
+	-1849, 16396, 20435, -2214, -1848, 16385, 20446, -2215, -1847, 16374, 20457, -2216, -1845, 16363, 20466, -2216,
+	-1844, 16351, 20478, -2217, -1843, 16340, 20489, -2218, -1842, 16329, 20500, -2219, -1841, 16318, 20511, -2220,
+	-1840, 16307, 20521, -2220, -1839, 16296, 20532, -2221, -1837, 16285, 20542, -2222, -1836, 16274, 20553, -2223,
+	-1835, 16263, 20563, -2223, -1834, 16252, 20574, -2224, -1833, 16240, 20586, -2225, -1832, 16229, 20597, -2226,
+	-1830, 16218, 20607, -2227, -1829, 16207, 20617, -2227, -1828, 16196, 20628, -2228, -1827, 16185, 20639, -2229,
+	-1826, 16174, 20650, -2230, -1825, 16163, 20660, -2230, -1823, 16152, 20670, -2231, -1822, 16140, 20682, -2232,
+	-1821, 16129, 20693, -2233, -1820, 16118, 20703, -2233, -1819, 16107, 20714, -2234, -1818, 16096, 20725, -2235,
+	-1816, 16085, 20735, -2236, -1815, 16074, 20746, -2237, -1814, 16063, 20756, -2237, -1813, 16052, 20767, -2238,
+	-1812, 16040, 20779, -2239, -1810, 16029, 20789, -2240, -1809, 16018, 20799, -2240, -1808, 16007, 20810, -2241,
+	-1807, 15996, 20821, -2242, -1806, 15985, 20832, -2243, -1805, 15974, 20842, -2243, -1803, 15963, 20852, -2244,
+	-1802, 15952, 20863, -2245, -1801, 15940, 20875, -2246, -1800, 15929, 20885, -2246, -1799, 15918, 20896, -2247,
+	-1797, 15907, 20906, -2248, -1796, 15896, 20917, -2249, -1795, 15885, 20927, -2249, -1794, 15874, 20938, -2250,
+	-1793, 15863, 20949, -2251, -1792, 15852, 20959, -2251, -1790, 15840, 20970, -2252, -1789, 15829, 20981, -2253,
+	-1788, 15818, 20992, -2254, -1787, 15807, 21002, -2254, -1786, 15796, 21013, -2255, -1784, 15785, 21023, -2256,
+	-1783, 15774, 21034, -2257, -1782, 15763, 21044, -2257, -1781, 15752, 21055, -2258, -1780, 15740, 21067, -2259,
+	-1778, 15729, 21076, -2259, -1777, 15718, 21087, -2260, -1776, 15707, 21098, -2261, -1775, 15696, 21109, -2262,
+	-1774, 15685, 21119, -2262, -1772, 15674, 21129, -2263, -1771, 15663, 21140, -2264, -1770, 15652, 21150, -2264,
+	-1769, 15640, 21162, -2265, -1768, 15629, 21173, -2266, -1766, 15618, 21183, -2267, -1765, 15607, 21193, -2267,
+	-1764, 15596, 21204, -2268, -1763, 15585, 21215, -2269, -1762, 15574, 21225, -2269, -1760, 15563, 21235, -2270,
+	-1759, 15552, 21246, -2271, -1758, 15540, 21257, -2271, -1757, 15529, 21268, -2272, -1756, 15518, 21279, -2273,
+	-1754, 15507, 21289, -2274, -1753, 15496, 21299, -2274, -1752, 15485, 21310, -2275, -1751, 15474, 21321, -2276,
+	-1750, 15463, 21331, -2276, -1748, 15452, 21341, -2277, -1747, 15440, 21353, -2278, -1746, 15429, 21363, -2278,
+	-1745, 15418, 21374, -2279, -1743, 15407, 21384, -2280, -1742, 15396, 21394, -2280, -1741, 15385, 21405, -2281,
+	-1740, 15374, 21416, -2282, -1739, 15363, 21426, -2282, -1737, 15352, 21436, -2283, -1736, 15341, 21447, -2284,
+	-1735, 15329, 21458, -2284, -1734, 15318, 21469, -2285, -1733, 15307, 21480, -2286, -1731, 15296, 21489, -2286,
+	-1730, 15285, 21500, -2287, -1729, 15274, 21511, -2288, -1728, 15263, 21521, -2288, -1726, 15252, 21531, -2289,
+	-1725, 15241, 21542, -2290, -1724, 15229, 21553, -2290, -1723, 15218, 21564, -2291, -1722, 15207, 21575, -2292,
+	-1720, 15196, 21584, -2292, -1719, 15185, 21595, -2293, -1718, 15174, 21606, -2294, -1717, 15163, 21616, -2294,
+	-1715, 15152, 21626, -2295, -1714, 15141, 21637, -2296, -1713, 15130, 21647, -2296, -1712, 15118, 21659, -2297,
+	-1710, 15107, 21669, -2298, -1709, 15096, 21679, -2298, -1708, 15085, 21690, -2299, -1707, 15074, 21701, -2300,
+	-1706, 15063, 21711, -2300, -1704, 15052, 21721, -2301, -1703, 15041, 21731, -2301, -1702, 15030, 21742, -2302,
+	-1701, 15019, 21753, -2303, -1699, 15007, 21763, -2303, -1698, 14996, 21774, -2304, -1697, 14985, 21785, -2305,
+	-1696, 14974, 21795, -2305, -1694, 14963, 21805, -2306, -1693, 14952, 21815, -2306, -1692, 14941, 21826, -2307,
+	-1691, 14930, 21837, -2308, -1690, 14919, 21847, -2308, -1688, 14908, 21857, -2309, -1687, 14897, 21868, -2310,
+	-1686, 14885, 21879, -2310, -1685, 14874, 21890, -2311, -1683, 14863, 21899, -2311, -1682, 14852, 21910, -2312,
+	-1681, 14841, 21921, -2313, -1680, 14830, 21931, -2313, -1678, 14819, 21941, -2314, -1677, 14808, 21951, -2314,
+	-1676, 14797, 21962, -2315, -1675, 14786, 21973, -2316, -1673, 14775, 21982, -2316, -1672, 14763, 21994, -2317,
+	-1671, 14752, 22004, -2317, -1670, 14741, 22015, -2318, -1668, 14730, 22025, -2319, -1667, 14719, 22035, -2319,
+	-1666, 14708, 22046, -2320, -1665, 14697, 22056, -2320, -1663, 14686, 22066, -2321, -1662, 14675, 22077, -2322,
+	-1661, 14664, 22087, -2322, -1660, 14653, 22098, -2323, -1658, 14642, 22107, -2323, -1657, 14630, 22119, -2324,
+	-1656, 14619, 22130, -2325, -1655, 14608, 22140, -2325, -1653, 14597, 22150, -2326, -1652, 14586, 22160, -2326,
+	-1651, 14575, 22171, -2327, -1650, 14564, 22181, -2327, -1648, 14553, 22191, -2328, -1647, 14542, 22202, -2329,
+	-1646, 14531, 22212, -2329, -1645, 14520, 22223, -2330, -1643, 14509, 22232, -2330, -1642, 14497, 22244, -2331,
+	-1641, 14486, 22254, -2331, -1640, 14475, 22265, -2332, -1638, 14464, 22274, -2332, -1637, 14453, 22285, -2333,
+	-1636, 14442, 22296, -2334, -1635, 14431, 22306, -2334, -1633, 14420, 22316, -2335, -1632, 14409, 22326, -2335,
+	-1631, 14398, 22337, -2336, -1630, 14387, 22347, -2336, -1628, 14376, 22357, -2337, -1627, 14365, 22367, -2337,
+	-1626, 14354, 22378, -2338, -1624, 14342, 22389, -2339, -1623, 14331, 22399, -2339, -1622, 14320, 22410, -2340,
+	-1621, 14309, 22420, -2340, -1619, 14298, 22430, -2341, -1618, 14287, 22440, -2341, -1617, 14276, 22451, -2342,
+	-1616, 14265, 22461, -2342, -1614, 14254, 22471, -2343, -1613, 14243, 22481, -2343, -1612, 14232, 22492, -2344,
+	-1611, 14221, 22502, -2344, -1609, 14210, 22512, -2345, -1608, 14199, 22522, -2345, -1607, 14188, 22533, -2346,
+	-1606, 14177, 22544, -2347, -1604, 14165, 22554, -2347, -1603, 14154, 22565, -2348, -1602, 14143, 22575, -2348,
+	-1600, 14132, 22585, -2349, -1599, 14121, 22595, -2349, -1598, 14110, 22606, -2350, -1597, 14099, 22616, -2350,
+	-1595, 14088, 22626, -2351, -1594, 14077, 22636, -2351, -1593, 14066, 22647, -2352, -1592, 14055, 22657, -2352,
+	-1590, 14044, 22667, -2353, -1589, 14033, 22677, -2353, -1588, 14022, 22688, -2354, -1586, 14011, 22697, -2354,
+	-1585, 14000, 22708, -2355, -1584, 13989, 22718, -2355, -1583, 13978, 22729, -2356, -1581, 13967, 22738, -2356,
+	-1580, 13955, 22750, -2357, -1579, 13944, 22760, -2357, -1577, 13933, 22770, -2358, -1576, 13922, 22780, -2358,
+	-1575, 13911, 22791, -2359, -1574, 13900, 22801, -2359, -1572, 13889, 22810, -2359, -1571, 13878, 22821, -2360,
+	-1570, 13867, 22831, -2360, -1569, 13856, 22842, -2361, -1567, 13845, 22851, -2361, -1566, 13834, 22862, -2362,
+	-1565, 13823, 22872, -2362, -1563, 13812, 22882, -2363, -1562, 13801, 22892, -2363, -1561, 13790, 22903, -2364,
+	-1560, 13779, 22913, -2364, -1558, 13768, 22923, -2365, -1557, 13757, 22933, -2365, -1556, 13746, 22944, -2366,
+	-1554, 13735, 22953, -2366, -1553, 13724, 22964, -2367, -1552, 13713, 22974, -2367, -1551, 13702, 22984, -2367,
+	-1549, 13691, 22994, -2368, -1548, 13680, 23004, -2368, -1547, 13669, 23015, -2369, -1545, 13658, 23024, -2369,
+	-1544, 13647, 23035, -2370, -1543, 13636, 23045, -2370, -1542, 13624, 23057, -2371, -1540, 13613, 23066, -2371,
+	-1539, 13602, 23076, -2371, -1538, 13591, 23087, -2372, -1536, 13580, 23096, -2372, -1535, 13569, 23107, -2373,
+	-1534, 13558, 23117, -2373, -1532, 13547, 23127, -2374, -1531, 13536, 23137, -2374, -1530, 13525, 23147, -2374,
+	-1529, 13514, 23158, -2375, -1527, 13503, 23167, -2375, -1526, 13492, 23178, -2376, -1525, 13481, 23188, -2376,
+	-1523, 13470, 23198, -2377, -1522, 13459, 23208, -2377, -1521, 13448, 23218, -2377, -1520, 13437, 23229, -2378,
+	-1518, 13426, 23238, -2378, -1517, 13415, 23249, -2379, -1516, 13404, 23259, -2379, -1514, 13393, 23268, -2379,
+	-1513, 13382, 23279, -2380, -1512, 13371, 23289, -2380, -1510, 13360, 23299, -2381, -1509, 13349, 23309, -2381,
+	-1508, 13338, 23319, -2381, -1507, 13327, 23330, -2382, -1505, 13316, 23339, -2382, -1504, 13305, 23350, -2383,
+	-1503, 13294, 23360, -2383, -1501, 13283, 23369, -2383, -1500, 13272, 23380, -2384, -1499, 13261, 23390, -2384,
+	-1497, 13250, 23400, -2385, -1496, 13239, 23410, -2385, -1495, 13228, 23420, -2385, -1494, 13217, 23431, -2386,
+	-1492, 13206, 23440, -2386, -1491, 13195, 23451, -2387, -1490, 13184, 23461, -2387, -1488, 13173, 23470, -2387,
+	-1487, 13163, 23480, -2388, -1486, 13152, 23490, -2388, -1484, 13141, 23499, -2388, -1483, 13130, 23510, -2389,
+	-1482, 13119, 23520, -2389, -1481, 13108, 23530, -2389, -1479, 13097, 23540, -2390, -1478, 13086, 23550, -2390,
+	-1477, 13075, 23561, -2391, -1475, 13064, 23570, -2391, -1474, 13053, 23580, -2391, -1473, 13042, 23591, -2392,
+	-1471, 13031, 23600, -2392, -1470, 13020, 23610, -2392, -1469, 13009, 23621, -2393, -1468, 12998, 23631, -2393,
+	-1466, 12987, 23640, -2393, -1465, 12976, 23651, -2394, -1464, 12965, 23661, -2394, -1462, 12954, 23670, -2394,
+	-1461, 12943, 23681, -2395, -1460, 12932, 23691, -2395, -1458, 12921, 23700, -2395, -1457, 12910, 23711, -2396,
+	-1456, 12899, 23721, -2396, -1454, 12888, 23730, -2396, -1453, 12877, 23741, -2397, -1452, 12866, 23751, -2397,
+	-1450, 12856, 23759, -2397, -1449, 12845, 23770, -2398, -1448, 12834, 23780, -2398, -1447, 12823, 23790, -2398,
+	-1445, 12812, 23800, -2399, -1444, 12801, 23810, -2399, -1443, 12790, 23820, -2399, -1441, 12779, 23830, -2400,
+	-1440, 12768, 23840, -2400, -1439, 12757, 23850, -2400, -1437, 12746, 23860, -2401, -1436, 12735, 23870, -2401,
+	-1435, 12724, 23880, -2401, -1433, 12713, 23890, -2402, -1432, 12702, 23900, -2402, -1431, 12691, 23910, -2402,
+	-1429, 12681, 23918, -2402, -1428, 12670, 23929, -2403, -1427, 12659, 23939, -2403, -1426, 12648, 23949, -2403,
+	-1424, 12637, 23959, -2404, -1423, 12626, 23969, -2404, -1422, 12615, 23979, -2404, -1420, 12604, 23988, -2404,
+	-1419, 12593, 23999, -2405, -1418, 12582, 24009, -2405, -1416, 12571, 24018, -2405, -1415, 12560, 24029, -2406,
+	-1414, 12549, 24039, -2406, -1412, 12539, 24047, -2406, -1411, 12528, 24057, -2406, -1410, 12517, 24068, -2407,
+	-1408, 12506, 24077, -2407, -1407, 12495, 24087, -2407, -1406, 12484, 24098, -2408, -1404, 12473, 24107, -2408,
+	-1403, 12462, 24117, -2408, -1402, 12451, 24127, -2408, -1401, 12440, 24138, -2409, -1399, 12430, 24146, -2409,
+	-1398, 12419, 24156, -2409, -1397, 12408, 24166, -2409, -1395, 12397, 24176, -2410, -1394, 12386, 24186, -2410,
+	-1393, 12375, 24196, -2410, -1391, 12364, 24205, -2410, -1390, 12353, 24216, -2411, -1389, 12342, 24226, -2411,
+	-1387, 12332, 24234, -2411, -1386, 12321, 24244, -2411, -1385, 12310, 24255, -2412, -1383, 12299, 24264, -2412,
+	-1382, 12288, 24274, -2412, -1381, 12277, 24284, -2412, -1379, 12266, 24294, -2413, -1378, 12255, 24304, -2413,
+	-1377, 12244, 24314, -2413, -1375, 12234, 24322, -2413, -1374, 12223, 24332, -2413, -1373, 12212, 24343, -2414,
+	-1371, 12201, 24352, -2414, -1370, 12190, 24362, -2414, -1369, 12179, 24372, -2414, -1367, 12168, 24382, -2415,
+	-1366, 12158, 24391, -2415, -1365, 12147, 24401, -2415, -1364, 12136, 24411, -2415, -1362, 12125, 24420, -2415,
+	-1361, 12114, 24431, -2416, -1360, 12103, 24441, -2416, -1358, 12092, 24450, -2416, -1357, 12082, 24459, -2416,
+	-1356, 12071, 24469, -2416, -1354, 12060, 24479, -2417, -1353, 12049, 24489, -2417, -1352, 12038, 24499, -2417,
+	-1350, 12027, 24508, -2417, -1349, 12016, 24518, -2417, -1348, 12006, 24528, -2418, -1346, 11995, 24537, -2418,
+	-1345, 11984, 24547, -2418, -1344, 11973, 24557, -2418, -1342, 11962, 24566, -2418, -1341, 11951, 24577, -2419,
+	-1340, 11941, 24586, -2419, -1338, 11930, 24595, -2419, -1337, 11919, 24605, -2419, -1336, 11908, 24615, -2419,
+	-1334, 11897, 24624, -2419, -1333, 11886, 24635, -2420, -1332, 11876, 24644, -2420, -1330, 11865, 24653, -2420,
+	-1329, 11854, 24663, -2420, -1328, 11843, 24673, -2420, -1326, 11832, 24682, -2420, -1325, 11822, 24692, -2421,
+	-1324, 11811, 24702, -2421, -1322, 11800, 24711, -2421, -1321, 11789, 24721, -2421, -1320, 11778, 24731, -2421,
+	-1318, 11767, 24740, -2421, -1317, 11757, 24749, -2421, -1316, 11746, 24760, -2422, -1314, 11735, 24769, -2422,
+	-1313, 11724, 24779, -2422, -1312, 11713, 24789, -2422, -1310, 11703, 24797, -2422, -1309, 11692, 24807, -2422,
+	-1308, 11681, 24817, -2422, -1306, 11670, 24827, -2423, -1305, 11659, 24837, -2423, -1304, 11649, 24846, -2423,
+	-1302, 11638, 24855, -2423, -1301, 11627, 24865, -2423, -1300, 11616, 24875, -2423, -1298, 11606, 24883, -2423,
+	-1297, 11595, 24893, -2423, -1296, 11584, 24904, -2424, -1294, 11573, 24913, -2424, -1293, 11562, 24923, -2424,
+	-1292, 11552, 24932, -2424, -1290, 11541, 24941, -2424, -1289, 11530, 24951, -2424, -1288, 11519, 24961, -2424,
+	-1286, 11509, 24969, -2424, -1285, 11498, 24979, -2424, -1284, 11487, 24990, -2425, -1282, 11476, 24999, -2425,
+	-1281, 11466, 25008, -2425, -1280, 11455, 25018, -2425, -1278, 11444, 25027, -2425, -1277, 11433, 25037, -2425,
+	-1276, 11422, 25047, -2425, -1274, 11412, 25055, -2425, -1273, 11401, 25065, -2425, -1272, 11390, 25075, -2425,
+	-1271, 11380, 25085, -2426, -1269, 11369, 25094, -2426, -1268, 11358, 25104, -2426, -1267, 11347, 25114, -2426,
+	-1265, 11337, 25122, -2426, -1264, 11326, 25132, -2426, -1263, 11315, 25142, -2426, -1261, 11304, 25151, -2426,
+	-1260, 11294, 25160, -2426, -1259, 11283, 25170, -2426, -1257, 11272, 25179, -2426, -1256, 11261, 25189, -2426,
+	-1255, 11251, 25198, -2426, -1253, 11240, 25207, -2426, -1252, 11229, 25217, -2426, -1251, 11219, 25227, -2427,
+	-1249, 11208, 25236, -2427, -1248, 11197, 25246, -2427, -1247, 11186, 25256, -2427, -1245, 11176, 25264, -2427,
+	-1244, 11165, 25274, -2427, -1243, 11154, 25284, -2427, -1241, 11144, 25292, -2427, -1240, 11133, 25302, -2427,
+	-1239, 11122, 25312, -2427, -1237, 11111, 25321, -2427, -1236, 11101, 25330, -2427, -1235, 11090, 25340, -2427,
+	-1233, 11079, 25349, -2427, -1232, 11069, 25358, -2427, -1231, 11058, 25368, -2427, -1229, 11047, 25377, -2427,
+	-1228, 11037, 25386, -2427, -1227, 11026, 25396, -2427, -1225, 11015, 25405, -2427, -1224, 11005, 25414, -2427,
+	-1223, 10994, 25424, -2427, -1221, 10983, 25433, -2427, -1220, 10972, 25443, -2427, -1219, 10962, 25452, -2427,
+	-1217, 10951, 25461, -2427, -1216, 10940, 25471, -2427, -1215, 10930, 25480, -2427, -1213, 10919, 25489, -2427,
+	-1212, 10908, 25499, -2427, -1211, 10898, 25508, -2427, -1209, 10887, 25517, -2427, -1208, 10876, 25527, -2427,
+	-1207, 10866, 25536, -2427, -1205, 10855, 25545, -2427, -1204, 10844, 25555, -2427, -1203, 10834, 25564, -2427,
+	-1201, 10823, 25573, -2427, -1200, 10813, 25582, -2427, -1199, 10802, 25592, -2427, -1197, 10791, 25601, -2427,
+	-1196, 10781, 25610, -2427, -1195, 10770, 25620, -2427, -1193, 10759, 25629, -2427, -1192, 10749, 25638, -2427,
+	-1191, 10738, 25648, -2427, -1189, 10727, 25657, -2427, -1188, 10717, 25666, -2427, -1187, 10706, 25676, -2427,
+	-1185, 10696, 25684, -2427, -1184, 10685, 25694, -2427, -1183, 10674, 25704, -2427, -1181, 10664, 25712, -2427,
+	-1180, 10653, 25722, -2427, -1179, 10642, 25732, -2427, -1177, 10632, 25740, -2427, -1176, 10621, 25749, -2426,
+	-1175, 10611, 25758, -2426, -1173, 10600, 25767, -2426, -1172, 10589, 25777, -2426, -1171, 10579, 25786, -2426,
+	-1169, 10568, 25795, -2426, -1168, 10558, 25804, -2426, -1167, 10547, 25814, -2426, -1165, 10536, 25823, -2426,
+	-1164, 10526, 25832, -2426, -1163, 10515, 25842, -2426, -1161, 10505, 25850, -2426, -1160, 10494, 25860, -2426,
+	-1159, 10483, 25870, -2426, -1157, 10473, 25877, -2425, -1156, 10462, 25887, -2425, -1155, 10452, 25896, -2425,
+	-1153, 10441, 25905, -2425, -1152, 10431, 25914, -2425, -1151, 10420, 25924, -2425, -1149, 10409, 25933, -2425,
+	-1148, 10399, 25942, -2425, -1147, 10388, 25952, -2425, -1145, 10378, 25960, -2425, -1144, 10367, 25970, -2425,
+	-1143, 10357, 25978, -2424, -1141, 10346, 25987, -2424, -1140, 10336, 25996, -2424, -1139, 10325, 26006, -2424,
+	-1137, 10314, 26015, -2424, -1136, 10304, 26024, -2424, -1135, 10293, 26034, -2424, -1133, 10283, 26042, -2424,
+	-1132, 10272, 26052, -2424, -1131, 10262, 26060, -2423, -1129, 10251, 26069, -2423, -1128, 10241, 26078, -2423,
+	-1127, 10230, 26088, -2423, -1125, 10220, 26096, -2423, -1124, 10209, 26106, -2423, -1123, 10199, 26115, -2423,
+	-1121, 10188, 26123, -2422, -1120, 10178, 26132, -2422, -1119, 10167, 26142, -2422, -1117, 10156, 26151, -2422,
+	-1116, 10146, 26160, -2422, -1115, 10135, 26170, -2422, -1113, 10125, 26178, -2422, -1112, 10114, 26187, -2421,
+	-1111, 10104, 26196, -2421, -1109, 10093, 26205, -2421, -1108, 10083, 26214, -2421, -1107, 10072, 26224, -2421,
+	-1105, 10062, 26232, -2421, -1104, 10051, 26242, -2421, -1103, 10041, 26250, -2420, -1101, 10030, 26259, -2420,
+	-1100, 10020, 26268, -2420, -1099, 10010, 26277, -2420, -1097,  9999, 26286, -2420, -1096,  9989, 26294, -2419,
+	-1095,  9978, 26304, -2419, -1093,  9968, 26312, -2419, -1092,  9957, 26322, -2419, -1091,  9947, 26331, -2419,
+	-1089,  9936, 26340, -2419, -1088,  9926, 26348, -2418, -1087,  9915, 26358, -2418, -1085,  9905, 26366, -2418,
+	-1084,  9894, 26376, -2418, -1083,  9884, 26385, -2418, -1081,  9873, 26393, -2417, -1080,  9863, 26402, -2417,
+	-1079,  9853, 26411, -2417, -1077,  9842, 26420, -2417, -1076,  9832, 26429, -2417, -1075,  9821, 26438, -2416,
+	-1073,  9811, 26446, -2416, -1072,  9800, 26456, -2416, -1071,  9790, 26465, -2416, -1069,  9779, 26473, -2415,
+	-1068,  9769, 26482, -2415, -1067,  9759, 26491, -2415, -1066,  9748, 26501, -2415, -1064,  9738, 26509, -2415,
+	-1063,  9727, 26518, -2414, -1062,  9717, 26527, -2414, -1060,  9707, 26535, -2414, -1059,  9696, 26545, -2414,
+	-1058,  9686, 26553, -2413, -1056,  9675, 26562, -2413, -1055,  9665, 26571, -2413, -1054,  9654, 26581, -2413,
+	-1052,  9644, 26588, -2412, -1051,  9634, 26597, -2412, -1050,  9623, 26607, -2412, -1048,  9613, 26615, -2412,
+	-1047,  9603, 26623, -2411, -1046,  9592, 26633, -2411, -1044,  9582, 26641, -2411, -1043,  9571, 26651, -2411,
+	-1042,  9561, 26659, -2410, -1040,  9551, 26667, -2410, -1039,  9540, 26677, -2410, -1038,  9530, 26686, -2410,
+	-1036,  9520, 26693, -2409, -1035,  9509, 26703, -2409, -1034,  9499, 26712, -2409, -1032,  9488, 26721, -2409,
+	-1031,  9478, 26729, -2408, -1030,  9468, 26738, -2408, -1028,  9457, 26747, -2408, -1027,  9447, 26755, -2407,
+	-1026,  9437, 26764, -2407, -1025,  9426, 26774, -2407, -1023,  9416, 26781, -2406, -1022,  9406, 26790, -2406,
+	-1021,  9395, 26800, -2406, -1019,  9385, 26808, -2406, -1018,  9375, 26816, -2405, -1017,  9364, 26826, -2405,
+	-1015,  9354, 26834, -2405, -1014,  9344, 26842, -2404, -1013,  9333, 26852, -2404, -1011,  9323, 26860, -2404,
+	-1010,  9313, 26868, -2403, -1009,  9302, 26878, -2403, -1007,  9292, 26886, -2403, -1006,  9282, 26894, -2402,
+	-1005,  9271, 26904, -2402, -1003,  9261, 26912, -2402, -1002,  9251, 26921, -2402, -1001,  9240, 26930, -2401,
+	-1000,  9230, 26939, -2401,  -998,  9220, 26947, -2401,  -997,  9210, 26955, -2400,  -996,  9199, 26965, -2400,
+	 -994,  9189, 26972, -2399,  -993,  9179, 26981, -2399,  -992,  9168, 26991, -2399,  -990,  9158, 26998, -2398,
+	 -989,  9148, 27007, -2398,  -988,  9138, 27016, -2398,  -986,  9127, 27024, -2397,  -985,  9117, 27033, -2397,
+	 -984,  9107, 27042, -2397,  -982,  9097, 27049, -2396,  -981,  9086, 27059, -2396,  -980,  9076, 27068, -2396,
+	 -979,  9066, 27076, -2395,  -977,  9056, 27084, -2395,  -976,  9045, 27093, -2394,  -975,  9035, 27102, -2394,
+	 -973,  9025, 27110, -2394,  -972,  9015, 27118, -2393,  -971,  9004, 27128, -2393,  -969,  8994, 27136, -2393,
+	 -968,  8984, 27144, -2392,  -967,  8974, 27153, -2392,  -965,  8963, 27161, -2391,  -964,  8953, 27170, -2391,
+	 -963,  8943, 27179, -2391,  -961,  8933, 27186, -2390,  -960,  8923, 27195, -2390,  -959,  8912, 27204, -2389,
+	 -958,  8902, 27213, -2389,  -956,  8892, 27221, -2389,  -955,  8882, 27229, -2388,  -954,  8872, 27238, -2388,
+	 -952,  8861, 27246, -2387,  -951,  8851, 27255, -2387,  -950,  8841, 27264, -2387,  -948,  8831, 27271, -2386,
+	 -947,  8821, 27280, -2386,  -946,  8810, 27289, -2385,  -945,  8800, 27298, -2385,  -943,  8790, 27305, -2384,
+	 -942,  8780, 27314, -2384,  -941,  8770, 27323, -2384,  -939,  8759, 27331, -2383,  -938,  8749, 27340, -2383,
+	 -937,  8739, 27348, -2382,  -935,  8729, 27356, -2382,  -934,  8719, 27364, -2381,  -933,  8709, 27373, -2381,
+	 -932,  8699, 27382, -2381,  -930,  8688, 27390, -2380,  -929,  8678, 27399, -2380,  -928,  8668, 27407, -2379,
+	 -926,  8658, 27415, -2379,  -925,  8648, 27423, -2378,  -924,  8638, 27432, -2378,  -922,  8628, 27439, -2377,
+	 -921,  8617, 27449, -2377,  -920,  8607, 27457, -2376,  -919,  8597, 27466, -2376,  -917,  8587, 27473, -2375,
+	 -916,  8577, 27482, -2375,  -915,  8567, 27490, -2374,  -913,  8557, 27498, -2374,  -912,  8547, 27507, -2374,
+	 -911,  8536, 27516, -2373,  -909,  8526, 27524, -2373,  -908,  8516, 27532, -2372,  -907,  8506, 27541, -2372,
+	 -906,  8496, 27549, -2371,  -904,  8486, 27557, -2371,  -903,  8476, 27565, -2370,  -902,  8466, 27574, -2370,
+	 -900,  8456, 27581, -2369,  -899,  8446, 27590, -2369,  -898,  8436, 27598, -2368,  -896,  8425, 27607, -2368,
+	 -895,  8415, 27615, -2367,  -894,  8405, 27624, -2367,  -893,  8395, 27632, -2366,  -891,  8385, 27639, -2365,
+	 -890,  8375, 27648, -2365,  -889,  8365, 27656, -2364,  -887,  8355, 27664, -2364,  -886,  8345, 27672, -2363,
+	 -885,  8335, 27681, -2363,  -884,  8325, 27689, -2362,  -882,  8315, 27697, -2362,  -881,  8305, 27705, -2361,
+	 -880,  8295, 27714, -2361,  -878,  8285, 27721, -2360,  -877,  8275, 27730, -2360,  -876,  8265, 27738, -2359,
+	 -875,  8255, 27747, -2359,  -873,  8245, 27754, -2358,  -872,  8235, 27762, -2357,  -871,  8225, 27771, -2357,
+	 -869,  8215, 27778, -2356,  -868,  8205, 27787, -2356,  -867,  8195, 27795, -2355,  -866,  8185, 27804, -2355,
+	 -864,  8175, 27811, -2354,  -863,  8165, 27819, -2353,  -862,  8155, 27828, -2353,  -860,  8145, 27835, -2352,
+	 -859,  8135, 27844, -2352,  -858,  8125, 27852, -2351,  -857,  8115, 27861, -2351,  -855,  8105, 27868, -2350,
+	 -854,  8095, 27876, -2349,  -853,  8085, 27885, -2349,  -851,  8075, 27892, -2348,  -850,  8065, 27901, -2348,
+	 -849,  8055, 27909, -2347,  -848,  8045, 27917, -2346,  -846,  8035, 27925, -2346,  -845,  8025, 27933, -2345,
+	 -844,  8015, 27942, -2345,  -843,  8005, 27950, -2344,  -841,  7995, 27957, -2343,  -840,  7985, 27966, -2343,
+	 -839,  7975, 27974, -2342,  -837,  7965, 27982, -2342,  -836,  7955, 27990, -2341,  -835,  7945, 27998, -2340,
+	 -834,  7936, 28006, -2340,  -832,  7926, 28013, -2339,  -831,  7916, 28021, -2338,  -830,  7906, 28030, -2338,
+	 -829,  7896, 28038, -2337,  -827,  7886, 28046, -2337,  -826,  7876, 28054, -2336,  -825,  7866, 28062, -2335,
+	 -823,  7856, 28070, -2335,  -822,  7846, 28078, -2334,  -821,  7836, 28086, -2333,  -820,  7827, 28094, -2333,
+	 -818,  7817, 28101, -2332,  -817,  7807, 28109, -2331,  -816,  7797, 28118, -2331,  -815,  7787, 28126, -2330,
+	 -813,  7777, 28133, -2329,  -812,  7767, 28142, -2329,  -811,  7757, 28150, -2328,  -810,  7748, 28157, -2327,
+	 -808,  7738, 28165, -2327,  -807,  7728, 28173, -2326,  -806,  7718, 28181, -2325,  -804,  7708, 28189, -2325,
+	 -803,  7698, 28197, -2324,  -802,  7688, 28205, -2323,  -801,  7679, 28213, -2323,  -799,  7669, 28220, -2322,
+	 -798,  7659, 28228, -2321,  -797,  7649, 28237, -2321,  -796,  7639, 28245, -2320,  -794,  7629, 28252, -2319,
+	 -793,  7620, 28260, -2319,  -792,  7610, 28268, -2318,  -791,  7600, 28276, -2317,  -789,  7590, 28283, -2316,
+	 -788,  7580, 28292, -2316,  -787,  7571, 28299, -2315,  -786,  7561, 28307, -2314,  -784,  7551, 28315, -2314,
+	 -783,  7541, 28323, -2313,  -782,  7531, 28331, -2312,  -781,  7522, 28338, -2311,  -779,  7512, 28346, -2311,
+	 -778,  7502, 28354, -2310,  -777,  7492, 28362, -2309,  -776,  7483, 28369, -2308,  -774,  7473, 28377, -2308,
+	 -773,  7463, 28385, -2307,  -772,  7453, 28393, -2306,  -771,  7444, 28400, -2305,  -769,  7434, 28408, -2305,
+	 -768,  7424, 28416, -2304,  -767,  7414, 28424, -2303,  -766,  7405, 28431, -2302,  -764,  7395, 28439, -2302,
+	 -763,  7385, 28447, -2301,  -762,  7375, 28455, -2300,  -761,  7366, 28462, -2299,  -759,  7356, 28470, -2299,
+	 -758,  7346, 28478, -2298,  -757,  7336, 28486, -2297,  -756,  7327, 28493, -2296,  -754,  7317, 28501, -2296,
+	 -753,  7307, 28509, -2295,  -752,  7298, 28516, -2294,  -751,  7288, 28524, -2293,  -749,  7278, 28531, -2292,
+	 -748,  7268, 28540, -2292,  -747,  7259, 28547, -2291,  -746,  7249, 28555, -2290,  -744,  7239, 28562, -2289,
+	 -743,  7230, 28570, -2289,  -742,  7220, 28578, -2288,  -741,  7210, 28586, -2287,  -739,  7201, 28592, -2286,
+	 -738,  7191, 28600, -2285,  -737,  7181, 28608, -2284,  -736,  7172, 28616, -2284,  -734,  7162, 28623, -2283,
+	 -733,  7152, 28631, -2282,  -732,  7143, 28638, -2281,  -731,  7133, 28646, -2280,  -729,  7123, 28654, -2280,
+	 -728,  7114, 28661, -2279,  -727,  7104, 28669, -2278,  -726,  7095, 28676, -2277,  -725,  7085, 28684, -2276,
+	 -723,  7075, 28691, -2275,  -722,  7066, 28699, -2275,  -721,  7056, 28707, -2274,  -720,  7046, 28715, -2273,
+	 -718,  7037, 28721, -2272,  -717,  7027, 28729, -2271,  -716,  7018, 28736, -2270,  -715,  7008, 28744, -2269,
+	 -713,  6998, 28752, -2269,  -712,  6989, 28759, -2268,  -711,  6979, 28767, -2267,  -710,  6970, 28774, -2266,
+	 -709,  6960, 28782, -2265,  -707,  6950, 28789, -2264,  -706,  6941, 28796, -2263,  -705,  6931, 28805, -2263,
+	 -704,  6922, 28812, -2262,  -702,  6912, 28819, -2261,  -701,  6903, 28826, -2260,  -700,  6893, 28834, -2259,
+	 -699,  6883, 28842, -2258,  -698,  6874, 28849, -2257,  -696,  6864, 28856, -2256,  -695,  6855, 28863, -2255,
+	 -694,  6845, 28872, -2255,  -693,  6836, 28879, -2254,  -691,  6826, 28886, -2253,  -690,  6817, 28893, -2252,
+	 -689,  6807, 28901, -2251,  -688,  6798, 28908, -2250,  -687,  6788, 28916, -2249,  -685,  6779, 28922, -2248,
+	 -684,  6769, 28930, -2247,  -683,  6760, 28937, -2246,  -682,  6750, 28945, -2245,  -681,  6741, 28953, -2245,
+	 -679,  6731, 28960, -2244,  -678,  6722, 28967, -2243,  -677,  6712, 28975, -2242,  -676,  6703, 28982, -2241,
+	 -675,  6693, 28990, -2240,  -673,  6684, 28996, -2239,  -672,  6674, 29004, -2238,  -671,  6665, 29011, -2237,
+	 -670,  6655, 29019, -2236,  -668,  6646, 29025, -2235,  -667,  6636, 29033, -2234,  -666,  6627, 29040, -2233,
+	 -665,  6617, 29048, -2232,  -664,  6608, 29055, -2231,  -662,  6599, 29061, -2230,  -661,  6589, 29069, -2229,
+	 -660,  6580, 29076, -2228,  -659,  6570, 29084, -2227,  -658,  6561, 29091, -2226,  -656,  6551, 29098, -2225,
+	 -655,  6542, 29105, -2224,  -654,  6533, 29113, -2224,  -653,  6523, 29121, -2223,  -652,  6514, 29128, -2222,
+	 -650,  6504, 29135, -2221,  -649,  6495, 29142, -2220,  -648,  6486, 29149, -2219,  -647,  6476, 29157, -2218,
+	 -646,  6467, 29164, -2217,  -644,  6457, 29171, -2216,  -643,  6448, 29178, -2215,  -642,  6439, 29185, -2214,
+	 -641,  6429, 29193, -2213,  -640,  6420, 29200, -2212,  -639,  6411, 29207, -2211,  -637,  6401, 29213, -2209,
+	 -636,  6392, 29220, -2208,  -635,  6382, 29228, -2207,  -634,  6373, 29235, -2206,  -633,  6364, 29242, -2205,
+	 -631,  6354, 29249, -2204,  -630,  6345, 29256, -2203,  -629,  6336, 29263, -2202,  -628,  6326, 29271, -2201,
+	 -627,  6317, 29278, -2200,  -625,  6308, 29284, -2199,  -624,  6298, 29292, -2198,  -623,  6289, 29299, -2197,
+	 -622,  6280, 29306, -2196,  -621,  6271, 29313, -2195,  -620,  6261, 29321, -2194,  -618,  6252, 29327, -2193,
+	 -617,  6243, 29334, -2192,  -616,  6233, 29342, -2191,  -615,  6224, 29349, -2190,  -614,  6215, 29356, -2189,
+	 -613,  6206, 29363, -2188,  -611,  6196, 29369, -2186,  -610,  6187, 29376, -2185,  -609,  6178, 29383, -2184,
+	 -608,  6168, 29391, -2183,  -607,  6159, 29398, -2182,  -605,  6150, 29404, -2181,  -604,  6141, 29411, -2180,
+	 -603,  6131, 29419, -2179,  -602,  6122, 29426, -2178,  -601,  6113, 29433, -2177,  -600,  6104, 29440, -2176,
+	 -598,  6094, 29446, -2174,  -597,  6085, 29453, -2173,  -596,  6076, 29460, -2172,  -595,  6067, 29467, -2171,
+	 -594,  6058, 29474, -2170,  -593,  6048, 29482, -2169,  -591,  6039, 29488, -2168,  -590,  6030, 29495, -2167,
+	 -589,  6021, 29501, -2165,  -588,  6012, 29508, -2164,  -587,  6002, 29516, -2163,  -586,  5993, 29523, -2162,
+	 -584,  5984, 29529, -2161,  -583,  5975, 29536, -2160,  -582,  5966, 29543, -2159,  -581,  5956, 29551, -2158,
+	 -580,  5947, 29557, -2156,  -579,  5938, 29564, -2155,  -578,  5929, 29571, -2154,  -576,  5920, 29577, -2153,
+	 -575,  5911, 29584, -2152,  -574,  5902, 29591, -2151,  -573,  5892, 29598, -2149,  -572,  5883, 29605, -2148,
+	 -571,  5874, 29612, -2147,  -569,  5865, 29618, -2146,  -568,  5856, 29625, -2145,  -567,  5847, 29632, -2144,
+	 -566,  5838, 29638, -2142,  -565,  5829, 29645, -2141,  -564,  5819, 29653, -2140,  -563,  5810, 29660, -2139,
+	 -561,  5801, 29666, -2138,  -560,  5792, 29672, -2136,  -559,  5783, 29679, -2135,  -558,  5774, 29686, -2134,
+	 -557,  5765, 29693, -2133,  -556,  5756, 29700, -2132,  -555,  5747, 29706, -2130,  -553,  5738, 29712, -2129,
+	 -552,  5729, 29719, -2128,  -551,  5719, 29727, -2127,  -550,  5710, 29734, -2126,  -549,  5701, 29740, -2124,
+	 -548,  5692, 29747, -2123,  -547,  5683, 29754, -2122,  -545,  5674, 29760, -2121,  -544,  5665, 29767, -2120,
+	 -543,  5656, 29773, -2118,  -542,  5647, 29780, -2117,  -541,  5638, 29787, -2116,  -540,  5629, 29794, -2115,
+	 -539,  5620, 29800, -2113,  -538,  5611, 29807, -2112,  -536,  5602, 29813, -2111,  -535,  5593, 29820, -2110,
+	 -534,  5584, 29826, -2108,  -533,  5575, 29833, -2107,  -532,  5566, 29840, -2106,  -531,  5557, 29847, -2105,
+	 -530,  5548, 29853, -2103,  -529,  5539, 29860, -2102,  -527,  5530, 29866, -2101,  -526,  5521, 29872, -2099,
+	 -525,  5512, 29879, -2098,  -524,  5503, 29886, -2097,  -523,  5494, 29893, -2096,  -522,  5485, 29899, -2094,
+	 -521,  5476, 29906, -2093,  -520,  5467, 29913, -2092,  -518,  5458, 29918, -2090,  -517,  5450, 29924, -2089,
+	 -516,  5441, 29931, -2088,  -515,  5432, 29938, -2087,  -514,  5423, 29944, -2085,  -513,  5414, 29951, -2084,
+	 -512,  5405, 29958, -2083,  -511,  5396, 29964, -2081,  -510,  5387, 29971, -2080,  -508,  5378, 29977, -2079,
+	 -507,  5369, 29983, -2077,  -506,  5360, 29990, -2076,  -505,  5352, 29996, -2075,  -504,  5343, 30002, -2073,
+	 -503,  5334, 30009, -2072,  -502,  5325, 30016, -2071,  -501,  5316, 30022, -2069,  -500,  5307, 30029, -2068,
+	 -499,  5298, 30036, -2067,  -497,  5289, 30041, -2065,  -496,  5281, 30047, -2064,  -495,  5272, 30054, -2063,
+	 -494,  5263, 30060, -2061,  -493,  5254, 30067, -2060,  -492,  5245, 30074, -2059,  -491,  5236, 30080, -2057,
+	 -490,  5228, 30086, -2056,  -489,  5219, 30093, -2055,  -488,  5210, 30099, -2053,  -486,  5201, 30105, -2052,
+	 -485,  5192, 30111, -2050,  -484,  5184, 30117, -2049,  -483,  5175, 30124, -2048,  -482,  5166, 30130, -2046,
+	 -481,  5157, 30137, -2045,  -480,  5148, 30143, -2043,  -479,  5140, 30149, -2042,  -478,  5131, 30156, -2041,
+	 -477,  5122, 30162, -2039,  -476,  5113, 30169, -2038,  -474,  5104, 30174, -2036,  -473,  5096, 30180, -2035,
+	 -472,  5087, 30187, -2034,  -471,  5078, 30193, -2032,  -470,  5069, 30200, -2031,  -469,  5061, 30205, -2029,
+	 -468,  5052, 30212, -2028,  -467,  5043, 30219, -2027,  -466,  5035, 30224, -2025,  -465,  5026, 30231, -2024,
+	 -464,  5017, 30237, -2022,  -463,  5008, 30244, -2021,  -462,  5000, 30249, -2019,  -460,  4991, 30255, -2018,
+	 -459,  4982, 30262, -2017,  -458,  4974, 30267, -2015,  -457,  4965, 30274, -2014,  -456,  4956, 30280, -2012,
+	 -455,  4948, 30286, -2011,  -454,  4939, 30292, -2009,  -453,  4930, 30299, -2008,  -452,  4921, 30305, -2006,
+	 -451,  4913, 30311, -2005,  -450,  4904, 30317, -2003,  -449,  4896, 30323, -2002,  -448,  4887, 30329, -2000,
+	 -447,  4878, 30336, -1999,  -446,  4870, 30342, -1998,  -444,  4861, 30347, -1996,  -443,  4852, 30354, -1995,
+	 -442,  4844, 30359, -1993,  -441,  4835, 30366, -1992,  -440,  4826, 30372, -1990,  -439,  4818, 30378, -1989,
+	 -438,  4809, 30384, -1987,  -437,  4801, 30390, -1986,  -436,  4792, 30396, -1984,  -435,  4783, 30403, -1983,
+	 -434,  4775, 30408, -1981,  -433,  4766, 30415, -1980,  -432,  4758, 30420, -1978,  -431,  4749, 30427, -1977,
+	 -430,  4741, 30432, -1975,  -429,  4732, 30438, -1973,  -428,  4723, 30445, -1972,  -427,  4715, 30450, -1970,
+	 -426,  4706, 30457, -1969,  -425,  4698, 30462, -1967,  -423,  4689, 30468, -1966,  -422,  4681, 30473, -1964,
+	 -421,  4672, 30480, -1963,  -420,  4664, 30485, -1961,  -419,  4655, 30492, -1960,  -418,  4647, 30497, -1958,
+	 -417,  4638, 30503, -1956,  -416,  4630, 30509, -1955,  -415,  4621, 30515, -1953,  -414,  4613, 30521, -1952,
+	 -413,  4604, 30527, -1950,  -412,  4596, 30533, -1949,  -411,  4587, 30539, -1947,  -410,  4579, 30545, -1946,
+	 -409,  4570, 30551, -1944,  -408,  4562, 30556, -1942,  -407,  4553, 30563, -1941,  -406,  4545, 30568, -1939,
+	 -405,  4536, 30575, -1938,  -404,  4528, 30580, -1936,  -403,  4519, 30586, -1934,  -402,  4511, 30592, -1933,
+	 -401,  4502, 30598, -1931,  -400,  4494, 30604, -1930,  -399,  4486, 30609, -1928,  -398,  4477, 30615, -1926,
+	 -397,  4469, 30621, -1925,  -396,  4460, 30627, -1923,  -395,  4452, 30633, -1922,  -394,  4443, 30639, -1920,
+	 -393,  4435, 30644, -1918,  -392,  4427, 30650, -1917,  -391,  4418, 30656, -1915,  -390,  4410, 30661, -1913,
+	 -389,  4402, 30667, -1912,  -388,  4393, 30673, -1910,  -387,  4385, 30678, -1908,  -386,  4376, 30685, -1907,
+	 -385,  4368, 30690, -1905,  -384,  4360, 30695, -1903,  -383,  4351, 30702, -1902,  -382,  4343, 30707, -1900,
+	 -381,  4335, 30713, -1899,  -380,  4326, 30719, -1897,  -379,  4318, 30724, -1895,  -378,  4310, 30730, -1894,
+	 -377,  4301, 30736, -1892,  -376,  4293, 30741, -1890,  -375,  4285, 30746, -1888,  -374,  4276, 30753, -1887,
+	 -373,  4268, 30758, -1885,  -372,  4260, 30763, -1883,  -371,  4252, 30769, -1882,  -370,  4243, 30775, -1880,
+	 -369,  4235, 30780, -1878,  -368,  4227, 30786, -1877,  -367,  4218, 30792, -1875,  -366,  4210, 30797, -1873,
+	 -365,  4202, 30803, -1872,  -364,  4194, 30808, -1870,  -363,  4185, 30814, -1868,  -362,  4177, 30819, -1866,
+	 -361,  4169, 30825, -1865,  -360,  4161, 30830, -1863,  -359,  4152, 30836, -1861,  -358,  4144, 30841, -1859,
+	 -357,  4136, 30847, -1858,  -356,  4128, 30852, -1856,  -355,  4119, 30858, -1854,  -354,  4111, 30864, -1853,
+	 -353,  4103, 30869, -1851,  -352,  4095, 30874, -1849,  -351,  4087, 30879, -1847,  -350,  4079, 30885, -1846,
+	 -349,  4070, 30891, -1844,  -348,  4062, 30896, -1842,  -347,  4054, 30901, -1840,  -346,  4046, 30907, -1839,
+	 -345,  4038, 30912, -1837,  -344,  4029, 30918, -1835,  -343,  4021, 30923, -1833,  -342,  4013, 30928, -1831,
+	 -341,  4005, 30934, -1830,  -340,  3997, 30939, -1828,  -339,  3989, 30944, -1826,  -338,  3981, 30949, -1824,
+	 -338,  3973, 30956, -1823,  -337,  3964, 30962, -1821,  -336,  3956, 30967, -1819,  -335,  3948, 30972, -1817,
+	 -334,  3940, 30977, -1815,  -333,  3932, 30982, -1813,  -332,  3924, 30988, -1812,  -331,  3916, 30993, -1810,
+	 -330,  3908, 30998, -1808,  -329,  3900, 31003, -1806,  -328,  3892, 31008, -1804,  -327,  3883, 31015, -1803,
+	 -326,  3875, 31020, -1801,  -325,  3867, 31025, -1799,  -324,  3859, 31030, -1797,  -323,  3851, 31035, -1795,
+	 -322,  3843, 31040, -1793,  -321,  3835, 31046, -1792,  -320,  3827, 31051, -1790,  -320,  3819, 31057, -1788,
+	 -319,  3811, 31062, -1786,  -318,  3803, 31067, -1784,  -317,  3795, 31072, -1782,  -316,  3787, 31077, -1780,
+	 -315,  3779, 31083, -1779,  -314,  3771, 31088, -1777,  -313,  3763, 31093, -1775,  -312,  3755, 31098, -1773,
+	 -311,  3747, 31103, -1771,  -310,  3739, 31108, -1769,  -309,  3731, 31113, -1767,  -308,  3723, 31118, -1765,
+	 -307,  3715, 31124, -1764,  -306,  3707, 31129, -1762,  -306,  3699, 31135, -1760,  -305,  3691, 31140, -1758,
+	 -304,  3683, 31145, -1756,  -303,  3676, 31149, -1754,  -302,  3668, 31154, -1752,  -301,  3660, 31159, -1750,
+	 -300,  3652, 31164, -1748,  -299,  3644, 31169, -1746,  -298,  3636, 31175, -1745,  -297,  3628, 31180, -1743,
+	 -296,  3620, 31185, -1741,  -296,  3612, 31191, -1739,  -295,  3604, 31196, -1737,  -294,  3596, 31201, -1735,
+	 -293,  3589, 31205, -1733,  -292,  3581, 31210, -1731,  -291,  3573, 31215, -1729,  -290,  3565, 31220, -1727,
+	 -289,  3557, 31225, -1725,  -288,  3549, 31230, -1723,  -287,  3541, 31235, -1721,  -286,  3534, 31239, -1719,
+	 -286,  3526, 31245, -1717,  -285,  3518, 31250, -1715,  -284,  3510, 31255, -1713,  -283,  3502, 31260, -1711,
+	 -282,  3495, 31264, -1709,  -281,  3487, 31270, -1708,  -280,  3479, 31275, -1706,  -279,  3471, 31280, -1704,
+	 -278,  3463, 31285, -1702,  -278,  3456, 31290, -1700,  -277,  3448, 31295, -1698,  -276,  3440, 31300, -1696,
+	 -275,  3432, 31305, -1694,  -274,  3424, 31310, -1692,  -273,  3417, 31314, -1690,  -272,  3409, 31319, -1688,
+	 -271,  3401, 31324, -1686,  -270,  3393, 31329, -1684,  -270,  3386, 31334, -1682,  -269,  3378, 31339, -1680,
+	 -268,  3370, 31343, -1677,  -267,  3363, 31347, -1675,  -266,  3355, 31352, -1673,  -265,  3347, 31357, -1671,
+	 -264,  3339, 31362, -1669,  -264,  3332, 31367, -1667,  -263,  3324, 31372, -1665,  -262,  3316, 31377, -1663,
+	 -261,  3309, 31381, -1661,  -260,  3301, 31386, -1659,  -259,  3293, 31391, -1657,  -258,  3286, 31395, -1655,
+	 -257,  3278, 31400, -1653,  -257,  3270, 31406, -1651,  -256,  3263, 31410, -1649,  -255,  3255, 31415, -1647,
+	 -254,  3247, 31420, -1645,  -253,  3240, 31424, -1643,  -252,  3232, 31429, -1641,  -251,  3224, 31433, -1638,
+	 -251,  3217, 31438, -1636,  -250,  3209, 31443, -1634,  -249,  3202, 31447, -1632,  -248,  3194, 31452, -1630,
+	 -247,  3186, 31457, -1628,  -246,  3179, 31461, -1626,  -246,  3171, 31467, -1624,  -245,  3164, 31471, -1622,
+	 -244,  3156, 31476, -1620,  -243,  3149, 31479, -1617,  -242,  3141, 31484, -1615,  -241,  3133, 31489, -1613,
+	 -240,  3126, 31493, -1611,  -240,  3118, 31499, -1609,  -239,  3111, 31503, -1607,  -238,  3103, 31508, -1605,
+	 -237,  3096, 31512, -1603,  -236,  3088, 31516, -1600,  -235,  3081, 31520, -1598,  -235,  3073, 31526, -1596,
+	 -234,  3066, 31530, -1594,  -233,  3058, 31535, -1592,  -232,  3051, 31539, -1590,  -231,  3043, 31544, -1588,
+	 -231,  3036, 31548, -1585,  -230,  3028, 31553, -1583,  -229,  3021, 31557, -1581,  -228,  3013, 31562, -1579,
+	 -227,  3006, 31566, -1577,  -226,  2998, 31571, -1575,  -226,  2991, 31575, -1572,  -225,  2983, 31580, -1570,
+	 -224,  2976, 31584, -1568,  -223,  2969, 31588, -1566,  -222,  2961, 31593, -1564,  -222,  2954, 31597, -1561,
+	 -221,  2946, 31602, -1559,  -220,  2939, 31606, -1557,  -219,  2931, 31611, -1555,  -218,  2924, 31615, -1553,
+	 -218,  2917, 31619, -1550,  -217,  2909, 31624, -1548,  -216,  2902, 31628, -1546,  -215,  2895, 31632, -1544,
+	 -214,  2887, 31637, -1542,  -214,  2880, 31641, -1539,  -213,  2872, 31646, -1537,  -212,  2865, 31650, -1535,
+	 -211,  2858, 31654, -1533,  -210,  2850, 31658, -1530,  -210,  2843, 31663, -1528,  -209,  2836, 31667, -1526,
+	 -208,  2828, 31672, -1524,  -207,  2821, 31675, -1521,  -206,  2814, 31679, -1519,  -206,  2806, 31685, -1517,
+	 -205,  2799, 31689, -1515,  -204,  2792, 31692, -1512,  -203,  2785, 31696, -1510,  -203,  2777, 31702, -1508,
+	 -202,  2770, 31706, -1506,  -201,  2763, 31709, -1503,  -200,  2755, 31714, -1501,  -199,  2748, 31718, -1499,
+	 -199,  2741, 31722, -1496,  -198,  2734, 31726, -1494,  -197,  2726, 31731, -1492,  -196,  2719, 31734, -1489,
+	 -196,  2712, 31739, -1487,  -195,  2705, 31743, -1485,  -194,  2697, 31748, -1483,  -193,  2690, 31751, -1480,
+	 -192,  2683, 31755, -1478,  -192,  2676, 31760, -1476,  -191,  2669, 31763, -1473,  -190,  2661, 31768, -1471,
+	 -189,  2654, 31772, -1469,  -189,  2647, 31776, -1466,  -188,  2640, 31780, -1464,  -187,  2633, 31784, -1462,
+	 -186,  2626, 31787, -1459,  -186,  2618, 31793, -1457,  -185,  2611, 31797, -1455,  -184,  2604, 31800, -1452,
+	 -183,  2597, 31804, -1450,  -183,  2590, 31809, -1448,  -182,  2583, 31812, -1445,  -181,  2576, 31816, -1443,
+	 -180,  2568, 31820, -1440,  -180,  2561, 31825, -1438,  -179,  2554, 31829, -1436,  -178,  2547, 31832, -1433,
+	 -177,  2540, 31836, -1431,  -177,  2533, 31841, -1429,  -176,  2526, 31844, -1426,  -175,  2519, 31848, -1424,
+	 -175,  2512, 31852, -1421,  -174,  2505, 31856, -1419,  -173,  2498, 31860, -1417,  -172,  2491, 31863, -1414,
+	 -172,  2483, 31869, -1412,  -171,  2476, 31872, -1409,  -170,  2469, 31876, -1407,  -169,  2462, 31880, -1405,
+	 -169,  2455, 31884, -1402,  -168,  2448, 31888, -1400,  -167,  2441, 31891, -1397,  -167,  2434, 31896, -1395,
+	 -166,  2427, 31899, -1392,  -165,  2420, 31903, -1390,  -164,  2413, 31907, -1388,  -164,  2406, 31911, -1385,
+	 -163,  2399, 31915, -1383,  -162,  2392, 31918, -1380,  -162,  2385, 31923, -1378,  -161,  2378, 31926, -1375,
+	 -160,  2371, 31930, -1373,  -159,  2365, 31932, -1370,  -159,  2358, 31937, -1368,  -158,  2351, 31941, -1366,
+	 -157,  2344, 31944, -1363,  -157,  2337, 31949, -1361,  -156,  2330, 31952, -1358,  -155,  2323, 31956, -1356,
+	 -155,  2316, 31960, -1353,  -154,  2309, 31964, -1351,  -153,  2302, 31967, -1348,  -153,  2295, 31972, -1346,
+	 -152,  2289, 31974, -1343,  -151,  2282, 31978, -1341,  -150,  2275, 31981, -1338,  -150,  2268, 31986, -1336,
+	 -149,  2261, 31989, -1333,  -148,  2254, 31993, -1331,  -148,  2247, 31997, -1328,  -147,  2241, 32000, -1326,
+	 -146,  2234, 32003, -1323,  -146,  2227, 32008, -1321,  -145,  2220, 32011, -1318,  -144,  2213, 32014, -1315,
+	 -144,  2206, 32019, -1313,  -143,  2200, 32021, -1310,  -142,  2193, 32025, -1308,  -142,  2186, 32029, -1305,
+	 -141,  2179, 32033, -1303,  -140,  2172, 32036, -1300,  -140,  2166, 32040, -1298,  -139,  2159, 32043, -1295,
+	 -138,  2152, 32047, -1293,  -138,  2145, 32051, -1290,  -137,  2139, 32053, -1287,  -136,  2132, 32057, -1285,
+	 -136,  2125, 32061, -1282,  -135,  2118, 32065, -1280,  -134,  2112, 32067, -1277,  -134,  2105, 32071, -1274,
+	 -133,  2098, 32075, -1272,  -132,  2092, 32077, -1269,  -132,  2085, 32082, -1267,  -131,  2078, 32085, -1264,
+	 -131,  2072, 32089, -1262,  -130,  2065, 32092, -1259,  -129,  2058, 32095, -1256,  -129,  2051, 32100, -1254,
+	 -128,  2045, 32102, -1251,  -127,  2038, 32105, -1248,  -127,  2032, 32109, -1246,  -126,  2025, 32112, -1243,
+	 -125,  2018, 32116, -1241,  -125,  2012, 32119, -1238,  -124,  2005, 32122, -1235,  -123,  1998, 32126, -1233,
+	 -123,  1992, 32129, -1230,  -122,  1985, 32132, -1227,  -122,  1979, 32136, -1225,  -121,  1972, 32139, -1222,
+	 -120,  1965, 32142, -1219,  -120,  1959, 32146, -1217,  -119,  1952, 32149, -1214,  -119,  1946, 32152, -1211,
+	 -118,  1939, 32156, -1209,  -117,  1933, 32158, -1206,  -117,  1926, 32162, -1203,  -116,  1919, 32166, -1201,
+	 -115,  1913, 32168, -1198,  -115,  1906, 32172, -1195,  -114,  1900, 32175, -1193,  -114,  1893, 32179, -1190,
+	 -113,  1887, 32181, -1187,  -112,  1880, 32185, -1185,  -112,  1874, 32188, -1182,  -111,  1867, 32191, -1179,
+	 -111,  1861, 32194, -1176,  -110,  1854, 32198, -1174,  -109,  1848, 32200, -1171,  -109,  1841, 32204, -1168,
+	 -108,  1835, 32207, -1166,  -108,  1828, 32211, -1163,  -107,  1822, 32213, -1160,  -106,  1816, 32215, -1157,
+	 -106,  1809, 32220, -1155,  -105,  1803, 32222, -1152,  -105,  1796, 32226, -1149,  -104,  1790, 32228, -1146,
+	 -104,  1783, 32233, -1144,  -103,  1777, 32235, -1141,  -102,  1771, 32237, -1138,  -102,  1764, 32241, -1135,
+	 -101,  1758, 32244, -1133,  -101,  1751, 32248, -1130,  -100,  1745, 32250, -1127,   -99,  1739, 32252, -1124,
+	  -99,  1732, 32256, -1121,   -98,  1726, 32259, -1119,   -98,  1720, 32262, -1116,   -97,  1713, 32265, -1113,
+	  -97,  1707, 32268, -1110,   -96,  1701, 32270, -1107,   -96,  1694, 32275, -1105,   -95,  1688, 32277, -1102,
+	  -94,  1682, 32279, -1099,   -94,  1675, 32283, -1096,   -93,  1669, 32285, -1093,   -93,  1663, 32289, -1091,
+	  -92,  1657, 32291, -1088,   -92,  1650, 32295, -1085,   -91,  1644, 32297, -1082,   -91,  1638, 32300, -1079,
+	  -90,  1631, 32303, -1076,   -89,  1625, 32306, -1074,   -89,  1619, 32309, -1071,   -88,  1613, 32311, -1068,
+	  -88,  1607, 32314, -1065,   -87,  1600, 32317, -1062,   -87,  1594, 32320, -1059,   -86,  1588, 32323, -1057,
+	  -86,  1582, 32326, -1054,   -85,  1575, 32329, -1051,   -85,  1569, 32332, -1048,   -84,  1563, 32334, -1045,
+	  -84,  1557, 32337, -1042,   -83,  1551, 32339, -1039,   -82,  1545, 32341, -1036,   -82,  1538, 32346, -1034,
+	  -81,  1532, 32348, -1031,   -81,  1526, 32351, -1028,   -80,  1520, 32353, -1025,   -80,  1514, 32356, -1022,
+	  -79,  1508, 32358, -1019,   -79,  1502, 32361, -1016,   -78,  1495, 32364, -1013,   -78,  1489, 32367, -1010,
+	  -77,  1483, 32369, -1007,   -77,  1477, 32372, -1004,   -76,  1471, 32375, -1002,   -76,  1465, 32378,  -999,
+	  -75,  1459, 32380,  -996,   -75,  1453, 32383,  -993,   -74,  1447, 32385,  -990,   -74,  1441, 32388,  -987,
+	  -73,  1435, 32390,  -984,   -73,  1429, 32393,  -981,   -72,  1423, 32395,  -978,   -72,  1417, 32398,  -975,
+	  -71,  1411, 32400,  -972,   -71,  1405, 32403,  -969,   -70,  1399, 32405,  -966,   -70,  1393, 32408,  -963,
+	  -69,  1387, 32410,  -960,   -69,  1381, 32413,  -957,   -68,  1375, 32415,  -954,   -68,  1369, 32418,  -951,
+	  -67,  1363, 32420,  -948,   -67,  1357, 32423,  -945,   -66,  1351, 32425,  -942,   -66,  1345, 32428,  -939,
+	  -66,  1339, 32431,  -936,   -65,  1333, 32433,  -933,   -65,  1327, 32436,  -930,   -64,  1321, 32438,  -927,
+	  -64,  1315, 32441,  -924,   -63,  1309, 32443,  -921,   -63,  1303, 32446,  -918,   -62,  1297, 32448,  -915,
+	  -62,  1291, 32451,  -912,   -61,  1286, 32452,  -909,   -61,  1280, 32455,  -906,   -60,  1274, 32457,  -903,
+	  -60,  1268, 32460,  -900,   -60,  1262, 32463,  -897,   -59,  1256, 32465,  -894,   -59,  1250, 32468,  -891,
+	  -58,  1245, 32469,  -888,   -58,  1239, 32472,  -885,   -57,  1233, 32474,  -882,   -57,  1227, 32477,  -879,
+	  -56,  1221, 32479,  -876,   -56,  1216, 32480,  -872,   -56,  1210, 32483,  -869,   -55,  1204, 32485,  -866,
+	  -55,  1198, 32488,  -863,   -54,  1192, 32490,  -860,   -54,  1187, 32492,  -857,   -53,  1181, 32494,  -854,
+	  -53,  1175, 32497,  -851,   -53,  1169, 32500,  -848,   -52,  1164, 32501,  -845,   -52,  1158, 32503,  -841,
+	  -51,  1152, 32505,  -838,   -51,  1146, 32508,  -835,   -50,  1141, 32509,  -832,   -50,  1135, 32512,  -829,
+	  -50,  1129, 32515,  -826,   -49,  1124, 32516,  -823,   -49,  1118, 32519,  -820,   -48,  1112, 32520,  -816,
+	  -48,  1107, 32522,  -813,   -48,  1101, 32525,  -810,   -47,  1095, 32527,  -807,   -47,  1090, 32529,  -804,
+	  -46,  1084, 32531,  -801,   -46,  1078, 32534,  -798,   -46,  1073, 32535,  -794,   -45,  1067, 32537,  -791,
+	  -45,  1061, 32540,  -788,   -44,  1056, 32541,  -785,   -44,  1050, 32544,  -782,   -44,  1045, 32545,  -778,
+	  -43,  1039, 32547,  -775,   -43,  1033, 32550,  -772,   -42,  1028, 32551,  -769,   -42,  1022, 32554,  -766,
+	  -42,  1017, 32555,  -762,   -41,  1011, 32557,  -759,   -41,  1006, 32559,  -756,   -40,  1000, 32561,  -753,
+	  -40,   995, 32563,  -750,   -40,   989, 32565,  -746,   -39,   984, 32566,  -743,   -39,   978, 32569,  -740,
+	  -39,   972, 32572,  -737,   -38,   967, 32573,  -734,   -38,   961, 32575,  -730,   -38,   956, 32577,  -727,
+	  -37,   951, 32578,  -724,   -37,   945, 32581,  -721,   -36,   940, 32581,  -717,   -36,   934, 32584,  -714,
+	  -36,   929, 32586,  -711,   -35,   923, 32588,  -708,   -35,   918, 32589,  -704,   -35,   912, 32592,  -701,
+	  -34,   907, 32593,  -698,   -34,   902, 32594,  -694,   -34,   896, 32597,  -691,   -33,   891, 32598,  -688,
+	  -33,   885, 32601,  -685,   -33,   880, 32602,  -681,   -32,   875, 32603,  -678,   -32,   869, 32606,  -675,
+	  -32,   864, 32607,  -671,   -31,   858, 32609,  -668,   -31,   853, 32611,  -665,   -31,   848, 32612,  -661,
+	  -30,   842, 32614,  -658,   -30,   837, 32616,  -655,   -30,   832, 32617,  -651,   -29,   826, 32619,  -648,
+	  -29,   821, 32621,  -645,   -29,   816, 32622,  -641,   -28,   810, 32624,  -638,   -28,   805, 32626,  -635,
+	  -28,   800, 32627,  -631,   -27,   795, 32628,  -628,   -27,   789, 32631,  -625,   -27,   784, 32632,  -621,
+	  -26,   779, 32633,  -618,   -26,   774, 32635,  -615,   -26,   768, 32637,  -611,   -26,   763, 32639,  -608,
+	  -25,   758, 32640,  -605,   -25,   753, 32641,  -601,   -25,   747, 32644,  -598,   -24,   742, 32644,  -594,
+	  -24,   737, 32646,  -591,   -24,   732, 32648,  -588,   -23,   727, 32648,  -584,   -23,   722, 32650,  -581,
+	  -23,   716, 32652,  -577,   -23,   711, 32654,  -574,   -22,   706, 32655,  -571,   -22,   701, 32656,  -567,
+	  -22,   696, 32658,  -564,   -21,   691, 32658,  -560,   -21,   685, 32661,  -557,   -21,   680, 32662,  -553,
+	  -21,   675, 32664,  -550,   -20,   670, 32665,  -547,   -20,   665, 32666,  -543,   -20,   660, 32668,  -540,
+	  -20,   655, 32669,  -536,   -19,   650, 32670,  -533,   -19,   645, 32671,  -529,   -19,   640, 32673,  -526,
+	  -18,   635, 32673,  -522,   -18,   630, 32675,  -519,   -18,   625, 32676,  -515,   -18,   619, 32679,  -512,
+	  -17,   614, 32679,  -508,   -17,   609, 32681,  -505,   -17,   604, 32683,  -502,   -17,   599, 32684,  -498,
+	  -16,   594, 32685,  -495,   -16,   589, 32686,  -491,   -16,   584, 32688,  -488,   -16,   579, 32689,  -484,
+	  -16,   575, 32690,  -481,   -15,   570, 32690,  -477,   -15,   565, 32691,  -473,   -15,   560, 32693,  -470,
+	  -15,   555, 32694,  -466,   -14,   550, 32695,  -463,   -14,   545, 32696,  -459,   -14,   540, 32698,  -456,
+	  -14,   535, 32699,  -452,   -13,   530, 32700,  -449,   -13,   525, 32701,  -445,   -13,   520, 32703,  -442,
+	  -13,   515, 32704,  -438,   -13,   511, 32705,  -435,   -12,   506, 32705,  -431,   -12,   501, 32706,  -427,
+	  -12,   496, 32708,  -424,   -12,   491, 32709,  -420,   -11,   486, 32710,  -417,   -11,   481, 32711,  -413,
+	  -11,   477, 32712,  -410,   -11,   472, 32713,  -406,   -11,   467, 32714,  -402,   -10,   462, 32715,  -399,
+	  -10,   457, 32716,  -395,   -10,   453, 32717,  -392,   -10,   448, 32718,  -388,   -10,   443, 32719,  -384,
+	  -10,   438, 32721,  -381,    -9,   434, 32720,  -377,    -9,   429, 32721,  -373,    -9,   424, 32723,  -370,
+	   -9,   419, 32724,  -366,    -9,   415, 32725,  -363,    -8,   410, 32725,  -359,    -8,   405, 32726,  -355,
+	   -8,   401, 32727,  -352,    -8,   396, 32728,  -348,    -8,   391, 32729,  -344,    -8,   386, 32731,  -341,
+	   -7,   382, 32730,  -337,    -7,   377, 32731,  -333,    -7,   372, 32733,  -330,    -7,   368, 32733,  -326,
+	   -7,   363, 32734,  -322,    -7,   359, 32735,  -319,    -6,   354, 32735,  -315,    -6,   349, 32736,  -311,
+	   -6,   345, 32737,  -308,    -6,   340, 32738,  -304,    -6,   335, 32739,  -300,    -6,   331, 32740,  -297,
+	   -6,   326, 32741,  -293,    -5,   322, 32740,  -289,    -5,   317, 32741,  -285,    -5,   313, 32742,  -282,
+	   -5,   308, 32743,  -278,    -5,   303, 32744,  -274,    -5,   299, 32745,  -271,    -5,   294, 32746,  -267,
+	   -4,   290, 32745,  -263,    -4,   285, 32746,  -259,    -4,   281, 32747,  -256,    -4,   276, 32748,  -252,
+	   -4,   272, 32748,  -248,    -4,   267, 32749,  -244,    -4,   263, 32750,  -241,    -4,   258, 32751,  -237,
+	   -3,   254, 32750,  -233,    -3,   249, 32751,  -229,    -3,   245, 32751,  -225,    -3,   241, 32752,  -222,
+	   -3,   236, 32753,  -218,    -3,   232, 32753,  -214,    -3,   227, 32754,  -210,    -3,   223, 32755,  -207,
+	   -3,   218, 32756,  -203,    -3,   214, 32756,  -199,    -2,   210, 32755,  -195,    -2,   205, 32756,  -191,
+	   -2,   201, 32757,  -188,    -2,   197, 32757,  -184,    -2,   192, 32758,  -180,    -2,   188, 32758,  -176,
+	   -2,   184, 32758,  -172,    -2,   179, 32759,  -168,    -2,   175, 32760,  -165,    -2,   171, 32760,  -161,
+	   -2,   166, 32761,  -157,    -1,   162, 32760,  -153,    -1,   158, 32760,  -149,    -1,   153, 32761,  -145,
+	   -1,   149, 32761,  -141,    -1,   145, 32762,  -138,    -1,   140, 32763,  -134,    -1,   136, 32763,  -130,
+	   -1,   132, 32763,  -126,    -1,   128, 32763,  -122,    -1,   123, 32764,  -118,    -1,   119, 32764,  -114,
+	   -1,   115, 32764,  -110,    -1,   111, 32765,  -107,    -1,   107, 32765,  -103,    -1,   102, 32766,   -99,
+	   -1,    98, 32766,   -95,    -1,    94, 32766,   -91,     0,    90, 32765,   -87,     0,    86, 32765,   -83,
+	    0,    82, 32765,   -79,     0,    77, 32766,   -75,     0,    73, 32766,   -71,     0,    69, 32766,   -67,
+	    0,    65, 32767,   -64,     0,    61, 32767,   -60,     0,    57, 32767,   -56,     0,    53, 32767,   -52,
+	    0,    49, 32767,   -48,     0,    44, 32767,   -44,     0,    40, 32767,   -40,     0,    36, 32767,   -36,
+	    0,    32, 32767,   -32,     0,    28, 32767,   -28,     0,    24, 32767,   -24,     0,    20, 32767,   -20,
+	    0,    16, 32767,   -16,     0,    12, 32767,   -12,     0,     8, 32767,    -8,     0,     4, 32767,    -4
+};
+
+#else
+
+// for non-x86_64 CPUs: 15-bit precision, 1024 phases (less hard on the CPU cache)
+
+const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES] =
+{
+	    0, 32767,     0,     0,   -16, 32767,    16,     0,   -32, 32767,    32,     0,   -48, 32767,    49,     0,
+	  -64, 32767,    65,     0,   -79, 32765,    82,     0,   -95, 32766,    98,    -1,  -110, 32764,   115,    -1,
+	 -126, 32763,   132,    -1,  -141, 32761,   149,    -1,  -157, 32761,   166,    -2,  -172, 32758,   184,    -2,
+	 -188, 32757,   201,    -2,  -203, 32756,   218,    -3,  -218, 32753,   236,    -3,  -233, 32750,   254,    -3,
+	 -248, 32748,   272,    -4,  -263, 32745,   290,    -4,  -278, 32743,   308,    -5,  -293, 32741,   326,    -6,
+	 -308, 32737,   345,    -6,  -322, 32734,   363,    -7,  -337, 32730,   382,    -7,  -352, 32727,   401,    -8,
+	 -366, 32724,   419,    -9,  -381, 32721,   438,   -10,  -395, 32716,   457,   -10,  -410, 32712,   477,   -11,
+	 -424, 32708,   496,   -12,  -438, 32704,   515,   -13,  -452, 32699,   535,   -14,  -466, 32694,   555,   -15,
+	 -481, 32690,   575,   -16,  -495, 32685,   594,   -16,  -508, 32679,   614,   -17,  -522, 32673,   635,   -18,
+	 -536, 32669,   655,   -20,  -550, 32664,   675,   -21,  -564, 32658,   696,   -22,  -577, 32652,   716,   -23,
+	 -591, 32646,   737,   -24,  -605, 32640,   758,   -25,  -618, 32633,   779,   -26,  -631, 32627,   800,   -28,
+	 -645, 32621,   821,   -29,  -658, 32614,   842,   -30,  -671, 32607,   864,   -32,  -685, 32601,   885,   -33,
+	 -698, 32593,   907,   -34,  -711, 32586,   929,   -36,  -724, 32578,   951,   -37,  -737, 32572,   972,   -39,
+	 -750, 32563,   995,   -40,  -762, 32555,  1017,   -42,  -775, 32547,  1039,   -43,  -788, 32540,  1061,   -45,
+	 -801, 32531,  1084,   -46,  -813, 32522,  1107,   -48,  -826, 32515,  1129,   -50,  -838, 32505,  1152,   -51,
+	 -851, 32497,  1175,   -53,  -863, 32488,  1198,   -55,  -876, 32479,  1221,   -56,  -888, 32469,  1245,   -58,
+	 -900, 32460,  1268,   -60,  -912, 32451,  1291,   -62,  -924, 32441,  1315,   -64,  -936, 32431,  1339,   -66,
+	 -948, 32420,  1363,   -67,  -960, 32410,  1387,   -69,  -972, 32400,  1411,   -71,  -984, 32390,  1435,   -73,
+	 -996, 32380,  1459,   -75, -1007, 32369,  1483,   -77, -1019, 32358,  1508,   -79, -1031, 32348,  1532,   -81,
+	-1042, 32337,  1557,   -84, -1054, 32326,  1582,   -86, -1065, 32314,  1607,   -88, -1076, 32303,  1631,   -90,
+	-1088, 32291,  1657,   -92, -1099, 32279,  1682,   -94, -1110, 32268,  1707,   -97, -1121, 32256,  1732,   -99,
+	-1133, 32244,  1758,  -101, -1144, 32233,  1783,  -104, -1155, 32220,  1809,  -106, -1166, 32207,  1835,  -108,
+	-1176, 32194,  1861,  -111, -1187, 32181,  1887,  -113, -1198, 32168,  1913,  -115, -1209, 32156,  1939,  -118,
+	-1219, 32142,  1965,  -120, -1230, 32129,  1992,  -123, -1241, 32116,  2018,  -125, -1251, 32102,  2045,  -128,
+	-1262, 32089,  2072,  -131, -1272, 32075,  2098,  -133, -1282, 32061,  2125,  -136, -1293, 32047,  2152,  -138,
+	-1303, 32033,  2179,  -141, -1313, 32019,  2206,  -144, -1323, 32003,  2234,  -146, -1333, 31989,  2261,  -149,
+	-1343, 31974,  2289,  -152, -1353, 31960,  2316,  -155, -1363, 31944,  2344,  -157, -1373, 31930,  2371,  -160,
+	-1383, 31915,  2399,  -163, -1392, 31899,  2427,  -166, -1402, 31884,  2455,  -169, -1412, 31869,  2483,  -172,
+	-1421, 31852,  2512,  -175, -1431, 31836,  2540,  -177, -1440, 31820,  2568,  -180, -1450, 31804,  2597,  -183,
+	-1459, 31787,  2626,  -186, -1469, 31772,  2654,  -189, -1478, 31755,  2683,  -192, -1487, 31739,  2712,  -196,
+	-1496, 31722,  2741,  -199, -1506, 31706,  2770,  -202, -1515, 31689,  2799,  -205, -1524, 31672,  2828,  -208,
+	-1533, 31654,  2858,  -211, -1542, 31637,  2887,  -214, -1550, 31619,  2917,  -218, -1559, 31602,  2946,  -221,
+	-1568, 31584,  2976,  -224, -1577, 31566,  3006,  -227, -1585, 31548,  3036,  -231, -1594, 31530,  3066,  -234,
+	-1603, 31512,  3096,  -237, -1611, 31493,  3126,  -240, -1620, 31476,  3156,  -244, -1628, 31457,  3186,  -247,
+	-1636, 31438,  3217,  -251, -1645, 31420,  3247,  -254, -1653, 31400,  3278,  -257, -1661, 31381,  3309,  -261,
+	-1669, 31362,  3339,  -264, -1677, 31343,  3370,  -268, -1686, 31324,  3401,  -271, -1694, 31305,  3432,  -275,
+	-1702, 31285,  3463,  -278, -1709, 31264,  3495,  -282, -1717, 31245,  3526,  -286, -1725, 31225,  3557,  -289,
+	-1733, 31205,  3589,  -293, -1741, 31185,  3620,  -296, -1748, 31164,  3652,  -300, -1756, 31145,  3683,  -304,
+	-1764, 31124,  3715,  -307, -1771, 31103,  3747,  -311, -1779, 31083,  3779,  -315, -1786, 31062,  3811,  -319,
+	-1793, 31040,  3843,  -322, -1801, 31020,  3875,  -326, -1808, 30998,  3908,  -330, -1815, 30977,  3940,  -334,
+	-1823, 30956,  3973,  -338, -1830, 30934,  4005,  -341, -1837, 30912,  4038,  -345, -1844, 30891,  4070,  -349,
+	-1851, 30869,  4103,  -353, -1858, 30847,  4136,  -357, -1865, 30825,  4169,  -361, -1872, 30803,  4202,  -365,
+	-1878, 30780,  4235,  -369, -1885, 30758,  4268,  -373, -1892, 30736,  4301,  -377, -1899, 30713,  4335,  -381,
+	-1905, 30690,  4368,  -385, -1912, 30667,  4402,  -389, -1918, 30644,  4435,  -393, -1925, 30621,  4469,  -397,
+	-1931, 30598,  4502,  -401, -1938, 30575,  4536,  -405, -1944, 30551,  4570,  -409, -1950, 30527,  4604,  -413,
+	-1956, 30503,  4638,  -417, -1963, 30480,  4672,  -421, -1969, 30457,  4706,  -426, -1975, 30432,  4741,  -430,
+	-1981, 30408,  4775,  -434, -1987, 30384,  4809,  -438, -1993, 30359,  4844,  -442, -1999, 30336,  4878,  -447,
+	-2005, 30311,  4913,  -451, -2011, 30286,  4948,  -455, -2017, 30262,  4982,  -459, -2022, 30237,  5017,  -464,
+	-2028, 30212,  5052,  -468, -2034, 30187,  5087,  -472, -2039, 30162,  5122,  -477, -2045, 30137,  5157,  -481,
+	-2050, 30111,  5192,  -485, -2056, 30086,  5228,  -490, -2061, 30060,  5263,  -494, -2067, 30036,  5298,  -499,
+	-2072, 30009,  5334,  -503, -2077, 29983,  5369,  -507, -2083, 29958,  5405,  -512, -2088, 29931,  5441,  -516,
+	-2093, 29906,  5476,  -521, -2098, 29879,  5512,  -525, -2103, 29853,  5548,  -530, -2108, 29826,  5584,  -534,
+	-2113, 29800,  5620,  -539, -2118, 29773,  5656,  -543, -2123, 29747,  5692,  -548, -2128, 29719,  5729,  -552,
+	-2133, 29693,  5765,  -557, -2138, 29666,  5801,  -561, -2142, 29638,  5838,  -566, -2147, 29612,  5874,  -571,
+	-2152, 29584,  5911,  -575, -2156, 29557,  5947,  -580, -2161, 29529,  5984,  -584, -2165, 29501,  6021,  -589,
+	-2170, 29474,  6058,  -594, -2174, 29446,  6094,  -598, -2179, 29419,  6131,  -603, -2183, 29391,  6168,  -608,
+	-2188, 29363,  6206,  -613, -2192, 29334,  6243,  -617, -2196, 29306,  6280,  -622, -2200, 29278,  6317,  -627,
+	-2204, 29249,  6354,  -631, -2208, 29220,  6392,  -636, -2213, 29193,  6429,  -641, -2217, 29164,  6467,  -646,
+	-2221, 29135,  6504,  -650, -2224, 29105,  6542,  -655, -2228, 29076,  6580,  -660, -2232, 29048,  6617,  -665,
+	-2236, 29019,  6655,  -670, -2240, 28990,  6693,  -675, -2244, 28960,  6731,  -679, -2247, 28930,  6769,  -684,
+	-2251, 28901,  6807,  -689, -2255, 28872,  6845,  -694, -2258, 28842,  6883,  -699, -2262, 28812,  6922,  -704,
+	-2265, 28782,  6960,  -709, -2269, 28752,  6998,  -713, -2272, 28721,  7037,  -718, -2275, 28691,  7075,  -723,
+	-2279, 28661,  7114,  -728, -2282, 28631,  7152,  -733, -2285, 28600,  7191,  -738, -2289, 28570,  7230,  -743,
+	-2292, 28540,  7268,  -748, -2295, 28509,  7307,  -753, -2298, 28478,  7346,  -758, -2301, 28447,  7385,  -763,
+	-2304, 28416,  7424,  -768, -2307, 28385,  7463,  -773, -2310, 28354,  7502,  -778, -2313, 28323,  7541,  -783,
+	-2316, 28292,  7580,  -788, -2319, 28260,  7620,  -793, -2321, 28228,  7659,  -798, -2324, 28197,  7698,  -803,
+	-2327, 28165,  7738,  -808, -2329, 28133,  7777,  -813, -2332, 28101,  7817,  -818, -2335, 28070,  7856,  -823,
+	-2337, 28038,  7896,  -829, -2340, 28006,  7936,  -834, -2342, 27974,  7975,  -839, -2345, 27942,  8015,  -844,
+	-2347, 27909,  8055,  -849, -2349, 27876,  8095,  -854, -2352, 27844,  8135,  -859, -2354, 27811,  8175,  -864,
+	-2356, 27778,  8215,  -869, -2359, 27747,  8255,  -875, -2361, 27714,  8295,  -880, -2363, 27681,  8335,  -885,
+	-2365, 27648,  8375,  -890, -2367, 27615,  8415,  -895, -2369, 27581,  8456,  -900, -2371, 27549,  8496,  -906,
+	-2373, 27516,  8536,  -911, -2375, 27482,  8577,  -916, -2377, 27449,  8617,  -921, -2379, 27415,  8658,  -926,
+	-2381, 27382,  8699,  -932, -2382, 27348,  8739,  -937, -2384, 27314,  8780,  -942, -2386, 27280,  8821,  -947,
+	-2387, 27246,  8861,  -952, -2389, 27213,  8902,  -958, -2391, 27179,  8943,  -963, -2392, 27144,  8984,  -968,
+	-2394, 27110,  9025,  -973, -2395, 27076,  9066,  -979, -2397, 27042,  9107,  -984, -2398, 27007,  9148,  -989,
+	-2399, 26972,  9189,  -994, -2401, 26939,  9230, -1000, -2402, 26904,  9271, -1005, -2403, 26868,  9313, -1010,
+	-2405, 26834,  9354, -1015, -2406, 26800,  9395, -1021, -2407, 26764,  9437, -1026, -2408, 26729,  9478, -1031,
+	-2409, 26693,  9520, -1036, -2410, 26659,  9561, -1042, -2411, 26623,  9603, -1047, -2412, 26588,  9644, -1052,
+	-2413, 26553,  9686, -1058, -2414, 26518,  9727, -1063, -2415, 26482,  9769, -1068, -2416, 26446,  9811, -1073,
+	-2417, 26411,  9853, -1079, -2418, 26376,  9894, -1084, -2419, 26340,  9936, -1089, -2419, 26304,  9978, -1095,
+	-2420, 26268, 10020, -1100, -2421, 26232, 10062, -1105, -2421, 26196, 10104, -1111, -2422, 26160, 10146, -1116,
+	-2422, 26123, 10188, -1121, -2423, 26088, 10230, -1127, -2424, 26052, 10272, -1132, -2424, 26015, 10314, -1137,
+	-2424, 25978, 10357, -1143, -2425, 25942, 10399, -1148, -2425, 25905, 10441, -1153, -2426, 25870, 10483, -1159,
+	-2426, 25832, 10526, -1164, -2426, 25795, 10568, -1169, -2426, 25758, 10611, -1175, -2427, 25722, 10653, -1180,
+	-2427, 25684, 10696, -1185, -2427, 25648, 10738, -1191, -2427, 25610, 10781, -1196, -2427, 25573, 10823, -1201,
+	-2427, 25536, 10866, -1207, -2427, 25499, 10908, -1212, -2427, 25461, 10951, -1217, -2427, 25424, 10994, -1223,
+	-2427, 25386, 11037, -1228, -2427, 25349, 11079, -1233, -2427, 25312, 11122, -1239, -2427, 25274, 11165, -1244,
+	-2427, 25236, 11208, -1249, -2426, 25198, 11251, -1255, -2426, 25160, 11294, -1260, -2426, 25122, 11337, -1265,
+	-2426, 25085, 11380, -1271, -2425, 25047, 11422, -1276, -2425, 25008, 11466, -1281, -2424, 24969, 11509, -1286,
+	-2424, 24932, 11552, -1292, -2423, 24893, 11595, -1297, -2423, 24855, 11638, -1302, -2422, 24817, 11681, -1308,
+	-2422, 24779, 11724, -1313, -2421, 24740, 11767, -1318, -2421, 24702, 11811, -1324, -2420, 24663, 11854, -1329,
+	-2419, 24624, 11897, -1334, -2419, 24586, 11941, -1340, -2418, 24547, 11984, -1345, -2417, 24508, 12027, -1350,
+	-2416, 24469, 12071, -1356, -2416, 24431, 12114, -1361, -2415, 24391, 12158, -1366, -2414, 24352, 12201, -1371,
+	-2413, 24314, 12244, -1377, -2412, 24274, 12288, -1382, -2411, 24234, 12332, -1387, -2410, 24196, 12375, -1393,
+	-2409, 24156, 12419, -1398, -2408, 24117, 12462, -1403, -2407, 24077, 12506, -1408, -2406, 24039, 12549, -1414,
+	-2405, 23999, 12593, -1419, -2404, 23959, 12637, -1424, -2402, 23918, 12681, -1429, -2401, 23880, 12724, -1435,
+	-2400, 23840, 12768, -1440, -2399, 23800, 12812, -1445, -2397, 23759, 12856, -1450, -2396, 23721, 12899, -1456,
+	-2395, 23681, 12943, -1461, -2393, 23640, 12987, -1466, -2392, 23600, 13031, -1471, -2391, 23561, 13075, -1477,
+	-2389, 23520, 13119, -1482, -2388, 23480, 13163, -1487, -2386, 23440, 13206, -1492, -2385, 23400, 13250, -1497,
+	-2383, 23360, 13294, -1503, -2381, 23319, 13338, -1508, -2380, 23279, 13382, -1513, -2378, 23238, 13426, -1518,
+	-2377, 23198, 13470, -1523, -2375, 23158, 13514, -1529, -2373, 23117, 13558, -1534, -2371, 23076, 13602, -1539,
+	-2370, 23035, 13647, -1544, -2368, 22994, 13691, -1549, -2366, 22953, 13735, -1554, -2364, 22913, 13779, -1560,
+	-2362, 22872, 13823, -1565, -2360, 22831, 13867, -1570, -2359, 22791, 13911, -1575, -2357, 22750, 13955, -1580,
+	-2355, 22708, 14000, -1585, -2353, 22667, 14044, -1590, -2351, 22626, 14088, -1595, -2349, 22585, 14132, -1600,
+	-2347, 22544, 14177, -1606, -2344, 22502, 14221, -1611, -2342, 22461, 14265, -1616, -2340, 22420, 14309, -1621,
+	-2338, 22378, 14354, -1626, -2336, 22337, 14398, -1631, -2334, 22296, 14442, -1636, -2331, 22254, 14486, -1641,
+	-2329, 22212, 14531, -1646, -2327, 22171, 14575, -1651, -2325, 22130, 14619, -1656, -2322, 22087, 14664, -1661,
+	-2320, 22046, 14708, -1666, -2317, 22004, 14752, -1671, -2315, 21962, 14797, -1676, -2313, 21921, 14841, -1681,
+	-2310, 21879, 14885, -1686, -2308, 21837, 14930, -1691, -2305, 21795, 14974, -1696, -2303, 21753, 15019, -1701,
+	-2300, 21711, 15063, -1706, -2298, 21669, 15107, -1710, -2295, 21626, 15152, -1715, -2292, 21584, 15196, -1720,
+	-2290, 21542, 15241, -1725, -2287, 21500, 15285, -1730, -2284, 21458, 15329, -1735, -2282, 21416, 15374, -1740,
+	-2279, 21374, 15418, -1745, -2276, 21331, 15463, -1750, -2274, 21289, 15507, -1754, -2271, 21246, 15552, -1759,
+	-2268, 21204, 15596, -1764, -2265, 21162, 15640, -1769, -2262, 21119, 15685, -1774, -2259, 21076, 15729, -1778,
+	-2257, 21034, 15774, -1783, -2254, 20992, 15818, -1788, -2251, 20949, 15863, -1793, -2248, 20906, 15907, -1797,
+	-2245, 20863, 15952, -1802, -2242, 20821, 15996, -1807, -2239, 20779, 16040, -1812, -2236, 20735, 16085, -1816,
+	-2233, 20693, 16129, -1821, -2230, 20650, 16174, -1826, -2227, 20607, 16218, -1830, -2223, 20563, 16263, -1835,
+	-2220, 20521, 16307, -1840, -2217, 20478, 16351, -1844, -2214, 20435, 16396, -1849, -2211, 20393, 16440, -1854,
+	-2208, 20349, 16485, -1858, -2204, 20306, 16529, -1863, -2201, 20262, 16574, -1867, -2198, 20220, 16618, -1872,
+	-2195, 20177, 16662, -1876, -2191, 20133, 16707, -1881, -2188, 20091, 16751, -1886, -2185, 20047, 16796, -1890,
+	-2181, 20004, 16840, -1895, -2178, 19961, 16884, -1899, -2174, 19917, 16929, -1904, -2171, 19874, 16973, -1908,
+	-2168, 19831, 17018, -1913, -2164, 19787, 17062, -1917, -2161, 19744, 17106, -1921, -2157, 19700, 17151, -1926,
+	-2154, 19657, 17195, -1930, -2150, 19614, 17239, -1935, -2146, 19569, 17284, -1939, -2143, 19526, 17328, -1943,
+	-2139, 19483, 17372, -1948, -2136, 19440, 17416, -1952, -2132, 19395, 17461, -1956, -2128, 19352, 17505, -1961,
+	-2125, 19309, 17549, -1965, -2121, 19265, 17593, -1969, -2117, 19221, 17638, -1974, -2114, 19178, 17682, -1978,
+	-2110, 19134, 17726, -1982, -2106, 19090, 17770, -1986, -2102, 19046, 17815, -1991, -2099, 19003, 17859, -1995,
+	-2095, 18959, 17903, -1999, -2091, 18915, 17947, -2003, -2087, 18871, 17991, -2007, -2083, 18827, 18035, -2011,
+	-2079, 18783, 18080, -2016, -2076, 18740, 18124, -2020, -2072, 18696, 18168, -2024, -2068, 18652, 18212, -2028,
+	-2064, 18608, 18256, -2032, -2060, 18564, 18300, -2036, -2056, 18520, 18344, -2040, -2052, 18476, 18388, -2044,
+	-2048, 18432, 18432, -2048, -2044, 18388, 18476, -2052, -2040, 18344, 18520, -2056, -2036, 18300, 18564, -2060,
+	-2032, 18256, 18608, -2064, -2028, 18212, 18652, -2068, -2024, 18168, 18696, -2072, -2020, 18124, 18740, -2076,
+	-2016, 18080, 18783, -2079, -2011, 18035, 18827, -2083, -2007, 17991, 18871, -2087, -2003, 17947, 18915, -2091,
+	-1999, 17903, 18959, -2095, -1995, 17859, 19003, -2099, -1991, 17815, 19046, -2102, -1986, 17770, 19090, -2106,
+	-1982, 17726, 19134, -2110, -1978, 17682, 19178, -2114, -1974, 17638, 19221, -2117, -1969, 17593, 19265, -2121,
+	-1965, 17549, 19309, -2125, -1961, 17505, 19352, -2128, -1956, 17461, 19395, -2132, -1952, 17416, 19440, -2136,
+	-1948, 17372, 19483, -2139, -1943, 17328, 19526, -2143, -1939, 17284, 19569, -2146, -1935, 17239, 19614, -2150,
+	-1930, 17195, 19657, -2154, -1926, 17151, 19700, -2157, -1921, 17106, 19744, -2161, -1917, 17062, 19787, -2164,
+	-1913, 17018, 19831, -2168, -1908, 16973, 19874, -2171, -1904, 16929, 19917, -2174, -1899, 16884, 19961, -2178,
+	-1895, 16840, 20004, -2181, -1890, 16796, 20047, -2185, -1886, 16751, 20091, -2188, -1881, 16707, 20133, -2191,
+	-1876, 16662, 20177, -2195, -1872, 16618, 20220, -2198, -1867, 16574, 20262, -2201, -1863, 16529, 20306, -2204,
+	-1858, 16485, 20349, -2208, -1854, 16440, 20393, -2211, -1849, 16396, 20435, -2214, -1844, 16351, 20478, -2217,
+	-1840, 16307, 20521, -2220, -1835, 16263, 20563, -2223, -1830, 16218, 20607, -2227, -1826, 16174, 20650, -2230,
+	-1821, 16129, 20693, -2233, -1816, 16085, 20735, -2236, -1812, 16040, 20779, -2239, -1807, 15996, 20821, -2242,
+	-1802, 15952, 20863, -2245, -1797, 15907, 20906, -2248, -1793, 15863, 20949, -2251, -1788, 15818, 20992, -2254,
+	-1783, 15774, 21034, -2257, -1778, 15729, 21076, -2259, -1774, 15685, 21119, -2262, -1769, 15640, 21162, -2265,
+	-1764, 15596, 21204, -2268, -1759, 15552, 21246, -2271, -1754, 15507, 21289, -2274, -1750, 15463, 21331, -2276,
+	-1745, 15418, 21374, -2279, -1740, 15374, 21416, -2282, -1735, 15329, 21458, -2284, -1730, 15285, 21500, -2287,
+	-1725, 15241, 21542, -2290, -1720, 15196, 21584, -2292, -1715, 15152, 21626, -2295, -1710, 15107, 21669, -2298,
+	-1706, 15063, 21711, -2300, -1701, 15019, 21753, -2303, -1696, 14974, 21795, -2305, -1691, 14930, 21837, -2308,
+	-1686, 14885, 21879, -2310, -1681, 14841, 21921, -2313, -1676, 14797, 21962, -2315, -1671, 14752, 22004, -2317,
+	-1666, 14708, 22046, -2320, -1661, 14664, 22087, -2322, -1656, 14619, 22130, -2325, -1651, 14575, 22171, -2327,
+	-1646, 14531, 22212, -2329, -1641, 14486, 22254, -2331, -1636, 14442, 22296, -2334, -1631, 14398, 22337, -2336,
+	-1626, 14354, 22378, -2338, -1621, 14309, 22420, -2340, -1616, 14265, 22461, -2342, -1611, 14221, 22502, -2344,
+	-1606, 14177, 22544, -2347, -1600, 14132, 22585, -2349, -1595, 14088, 22626, -2351, -1590, 14044, 22667, -2353,
+	-1585, 14000, 22708, -2355, -1580, 13955, 22750, -2357, -1575, 13911, 22791, -2359, -1570, 13867, 22831, -2360,
+	-1565, 13823, 22872, -2362, -1560, 13779, 22913, -2364, -1554, 13735, 22953, -2366, -1549, 13691, 22994, -2368,
+	-1544, 13647, 23035, -2370, -1539, 13602, 23076, -2371, -1534, 13558, 23117, -2373, -1529, 13514, 23158, -2375,
+	-1523, 13470, 23198, -2377, -1518, 13426, 23238, -2378, -1513, 13382, 23279, -2380, -1508, 13338, 23319, -2381,
+	-1503, 13294, 23360, -2383, -1497, 13250, 23400, -2385, -1492, 13206, 23440, -2386, -1487, 13163, 23480, -2388,
+	-1482, 13119, 23520, -2389, -1477, 13075, 23561, -2391, -1471, 13031, 23600, -2392, -1466, 12987, 23640, -2393,
+	-1461, 12943, 23681, -2395, -1456, 12899, 23721, -2396, -1450, 12856, 23759, -2397, -1445, 12812, 23800, -2399,
+	-1440, 12768, 23840, -2400, -1435, 12724, 23880, -2401, -1429, 12681, 23918, -2402, -1424, 12637, 23959, -2404,
+	-1419, 12593, 23999, -2405, -1414, 12549, 24039, -2406, -1408, 12506, 24077, -2407, -1403, 12462, 24117, -2408,
+	-1398, 12419, 24156, -2409, -1393, 12375, 24196, -2410, -1387, 12332, 24234, -2411, -1382, 12288, 24274, -2412,
+	-1377, 12244, 24314, -2413, -1371, 12201, 24352, -2414, -1366, 12158, 24391, -2415, -1361, 12114, 24431, -2416,
+	-1356, 12071, 24469, -2416, -1350, 12027, 24508, -2417, -1345, 11984, 24547, -2418, -1340, 11941, 24586, -2419,
+	-1334, 11897, 24624, -2419, -1329, 11854, 24663, -2420, -1324, 11811, 24702, -2421, -1318, 11767, 24740, -2421,
+	-1313, 11724, 24779, -2422, -1308, 11681, 24817, -2422, -1302, 11638, 24855, -2423, -1297, 11595, 24893, -2423,
+	-1292, 11552, 24932, -2424, -1286, 11509, 24969, -2424, -1281, 11466, 25008, -2425, -1276, 11422, 25047, -2425,
+	-1271, 11380, 25085, -2426, -1265, 11337, 25122, -2426, -1260, 11294, 25160, -2426, -1255, 11251, 25198, -2426,
+	-1249, 11208, 25236, -2427, -1244, 11165, 25274, -2427, -1239, 11122, 25312, -2427, -1233, 11079, 25349, -2427,
+	-1228, 11037, 25386, -2427, -1223, 10994, 25424, -2427, -1217, 10951, 25461, -2427, -1212, 10908, 25499, -2427,
+	-1207, 10866, 25536, -2427, -1201, 10823, 25573, -2427, -1196, 10781, 25610, -2427, -1191, 10738, 25648, -2427,
+	-1185, 10696, 25684, -2427, -1180, 10653, 25722, -2427, -1175, 10611, 25758, -2426, -1169, 10568, 25795, -2426,
+	-1164, 10526, 25832, -2426, -1159, 10483, 25870, -2426, -1153, 10441, 25905, -2425, -1148, 10399, 25942, -2425,
+	-1143, 10357, 25978, -2424, -1137, 10314, 26015, -2424, -1132, 10272, 26052, -2424, -1127, 10230, 26088, -2423,
+	-1121, 10188, 26123, -2422, -1116, 10146, 26160, -2422, -1111, 10104, 26196, -2421, -1105, 10062, 26232, -2421,
+	-1100, 10020, 26268, -2420, -1095,  9978, 26304, -2419, -1089,  9936, 26340, -2419, -1084,  9894, 26376, -2418,
+	-1079,  9853, 26411, -2417, -1073,  9811, 26446, -2416, -1068,  9769, 26482, -2415, -1063,  9727, 26518, -2414,
+	-1058,  9686, 26553, -2413, -1052,  9644, 26588, -2412, -1047,  9603, 26623, -2411, -1042,  9561, 26659, -2410,
+	-1036,  9520, 26693, -2409, -1031,  9478, 26729, -2408, -1026,  9437, 26764, -2407, -1021,  9395, 26800, -2406,
+	-1015,  9354, 26834, -2405, -1010,  9313, 26868, -2403, -1005,  9271, 26904, -2402, -1000,  9230, 26939, -2401,
+	 -994,  9189, 26972, -2399,  -989,  9148, 27007, -2398,  -984,  9107, 27042, -2397,  -979,  9066, 27076, -2395,
+	 -973,  9025, 27110, -2394,  -968,  8984, 27144, -2392,  -963,  8943, 27179, -2391,  -958,  8902, 27213, -2389,
+	 -952,  8861, 27246, -2387,  -947,  8821, 27280, -2386,  -942,  8780, 27314, -2384,  -937,  8739, 27348, -2382,
+	 -932,  8699, 27382, -2381,  -926,  8658, 27415, -2379,  -921,  8617, 27449, -2377,  -916,  8577, 27482, -2375,
+	 -911,  8536, 27516, -2373,  -906,  8496, 27549, -2371,  -900,  8456, 27581, -2369,  -895,  8415, 27615, -2367,
+	 -890,  8375, 27648, -2365,  -885,  8335, 27681, -2363,  -880,  8295, 27714, -2361,  -875,  8255, 27747, -2359,
+	 -869,  8215, 27778, -2356,  -864,  8175, 27811, -2354,  -859,  8135, 27844, -2352,  -854,  8095, 27876, -2349,
+	 -849,  8055, 27909, -2347,  -844,  8015, 27942, -2345,  -839,  7975, 27974, -2342,  -834,  7936, 28006, -2340,
+	 -829,  7896, 28038, -2337,  -823,  7856, 28070, -2335,  -818,  7817, 28101, -2332,  -813,  7777, 28133, -2329,
+	 -808,  7738, 28165, -2327,  -803,  7698, 28197, -2324,  -798,  7659, 28228, -2321,  -793,  7620, 28260, -2319,
+	 -788,  7580, 28292, -2316,  -783,  7541, 28323, -2313,  -778,  7502, 28354, -2310,  -773,  7463, 28385, -2307,
+	 -768,  7424, 28416, -2304,  -763,  7385, 28447, -2301,  -758,  7346, 28478, -2298,  -753,  7307, 28509, -2295,
+	 -748,  7268, 28540, -2292,  -743,  7230, 28570, -2289,  -738,  7191, 28600, -2285,  -733,  7152, 28631, -2282,
+	 -728,  7114, 28661, -2279,  -723,  7075, 28691, -2275,  -718,  7037, 28721, -2272,  -713,  6998, 28752, -2269,
+	 -709,  6960, 28782, -2265,  -704,  6922, 28812, -2262,  -699,  6883, 28842, -2258,  -694,  6845, 28872, -2255,
+	 -689,  6807, 28901, -2251,  -684,  6769, 28930, -2247,  -679,  6731, 28960, -2244,  -675,  6693, 28990, -2240,
+	 -670,  6655, 29019, -2236,  -665,  6617, 29048, -2232,  -660,  6580, 29076, -2228,  -655,  6542, 29105, -2224,
+	 -650,  6504, 29135, -2221,  -646,  6467, 29164, -2217,  -641,  6429, 29193, -2213,  -636,  6392, 29220, -2208,
+	 -631,  6354, 29249, -2204,  -627,  6317, 29278, -2200,  -622,  6280, 29306, -2196,  -617,  6243, 29334, -2192,
+	 -613,  6206, 29363, -2188,  -608,  6168, 29391, -2183,  -603,  6131, 29419, -2179,  -598,  6094, 29446, -2174,
+	 -594,  6058, 29474, -2170,  -589,  6021, 29501, -2165,  -584,  5984, 29529, -2161,  -580,  5947, 29557, -2156,
+	 -575,  5911, 29584, -2152,  -571,  5874, 29612, -2147,  -566,  5838, 29638, -2142,  -561,  5801, 29666, -2138,
+	 -557,  5765, 29693, -2133,  -552,  5729, 29719, -2128,  -548,  5692, 29747, -2123,  -543,  5656, 29773, -2118,
+	 -539,  5620, 29800, -2113,  -534,  5584, 29826, -2108,  -530,  5548, 29853, -2103,  -525,  5512, 29879, -2098,
+	 -521,  5476, 29906, -2093,  -516,  5441, 29931, -2088,  -512,  5405, 29958, -2083,  -507,  5369, 29983, -2077,
+	 -503,  5334, 30009, -2072,  -499,  5298, 30036, -2067,  -494,  5263, 30060, -2061,  -490,  5228, 30086, -2056,
+	 -485,  5192, 30111, -2050,  -481,  5157, 30137, -2045,  -477,  5122, 30162, -2039,  -472,  5087, 30187, -2034,
+	 -468,  5052, 30212, -2028,  -464,  5017, 30237, -2022,  -459,  4982, 30262, -2017,  -455,  4948, 30286, -2011,
+	 -451,  4913, 30311, -2005,  -447,  4878, 30336, -1999,  -442,  4844, 30359, -1993,  -438,  4809, 30384, -1987,
+	 -434,  4775, 30408, -1981,  -430,  4741, 30432, -1975,  -426,  4706, 30457, -1969,  -421,  4672, 30480, -1963,
+	 -417,  4638, 30503, -1956,  -413,  4604, 30527, -1950,  -409,  4570, 30551, -1944,  -405,  4536, 30575, -1938,
+	 -401,  4502, 30598, -1931,  -397,  4469, 30621, -1925,  -393,  4435, 30644, -1918,  -389,  4402, 30667, -1912,
+	 -385,  4368, 30690, -1905,  -381,  4335, 30713, -1899,  -377,  4301, 30736, -1892,  -373,  4268, 30758, -1885,
+	 -369,  4235, 30780, -1878,  -365,  4202, 30803, -1872,  -361,  4169, 30825, -1865,  -357,  4136, 30847, -1858,
+	 -353,  4103, 30869, -1851,  -349,  4070, 30891, -1844,  -345,  4038, 30912, -1837,  -341,  4005, 30934, -1830,
+	 -338,  3973, 30956, -1823,  -334,  3940, 30977, -1815,  -330,  3908, 30998, -1808,  -326,  3875, 31020, -1801,
+	 -322,  3843, 31040, -1793,  -319,  3811, 31062, -1786,  -315,  3779, 31083, -1779,  -311,  3747, 31103, -1771,
+	 -307,  3715, 31124, -1764,  -304,  3683, 31145, -1756,  -300,  3652, 31164, -1748,  -296,  3620, 31185, -1741,
+	 -293,  3589, 31205, -1733,  -289,  3557, 31225, -1725,  -286,  3526, 31245, -1717,  -282,  3495, 31264, -1709,
+	 -278,  3463, 31285, -1702,  -275,  3432, 31305, -1694,  -271,  3401, 31324, -1686,  -268,  3370, 31343, -1677,
+	 -264,  3339, 31362, -1669,  -261,  3309, 31381, -1661,  -257,  3278, 31400, -1653,  -254,  3247, 31420, -1645,
+	 -251,  3217, 31438, -1636,  -247,  3186, 31457, -1628,  -244,  3156, 31476, -1620,  -240,  3126, 31493, -1611,
+	 -237,  3096, 31512, -1603,  -234,  3066, 31530, -1594,  -231,  3036, 31548, -1585,  -227,  3006, 31566, -1577,
+	 -224,  2976, 31584, -1568,  -221,  2946, 31602, -1559,  -218,  2917, 31619, -1550,  -214,  2887, 31637, -1542,
+	 -211,  2858, 31654, -1533,  -208,  2828, 31672, -1524,  -205,  2799, 31689, -1515,  -202,  2770, 31706, -1506,
+	 -199,  2741, 31722, -1496,  -196,  2712, 31739, -1487,  -192,  2683, 31755, -1478,  -189,  2654, 31772, -1469,
+	 -186,  2626, 31787, -1459,  -183,  2597, 31804, -1450,  -180,  2568, 31820, -1440,  -177,  2540, 31836, -1431,
+	 -175,  2512, 31852, -1421,  -172,  2483, 31869, -1412,  -169,  2455, 31884, -1402,  -166,  2427, 31899, -1392,
+	 -163,  2399, 31915, -1383,  -160,  2371, 31930, -1373,  -157,  2344, 31944, -1363,  -155,  2316, 31960, -1353,
+	 -152,  2289, 31974, -1343,  -149,  2261, 31989, -1333,  -146,  2234, 32003, -1323,  -144,  2206, 32019, -1313,
+	 -141,  2179, 32033, -1303,  -138,  2152, 32047, -1293,  -136,  2125, 32061, -1282,  -133,  2098, 32075, -1272,
+	 -131,  2072, 32089, -1262,  -128,  2045, 32102, -1251,  -125,  2018, 32116, -1241,  -123,  1992, 32129, -1230,
+	 -120,  1965, 32142, -1219,  -118,  1939, 32156, -1209,  -115,  1913, 32168, -1198,  -113,  1887, 32181, -1187,
+	 -111,  1861, 32194, -1176,  -108,  1835, 32207, -1166,  -106,  1809, 32220, -1155,  -104,  1783, 32233, -1144,
+	 -101,  1758, 32244, -1133,   -99,  1732, 32256, -1121,   -97,  1707, 32268, -1110,   -94,  1682, 32279, -1099,
+	  -92,  1657, 32291, -1088,   -90,  1631, 32303, -1076,   -88,  1607, 32314, -1065,   -86,  1582, 32326, -1054,
+	  -84,  1557, 32337, -1042,   -81,  1532, 32348, -1031,   -79,  1508, 32358, -1019,   -77,  1483, 32369, -1007,
+	  -75,  1459, 32380,  -996,   -73,  1435, 32390,  -984,   -71,  1411, 32400,  -972,   -69,  1387, 32410,  -960,
+	  -67,  1363, 32420,  -948,   -66,  1339, 32431,  -936,   -64,  1315, 32441,  -924,   -62,  1291, 32451,  -912,
+	  -60,  1268, 32460,  -900,   -58,  1245, 32469,  -888,   -56,  1221, 32479,  -876,   -55,  1198, 32488,  -863,
+	  -53,  1175, 32497,  -851,   -51,  1152, 32505,  -838,   -50,  1129, 32515,  -826,   -48,  1107, 32522,  -813,
+	  -46,  1084, 32531,  -801,   -45,  1061, 32540,  -788,   -43,  1039, 32547,  -775,   -42,  1017, 32555,  -762,
+	  -40,   995, 32563,  -750,   -39,   972, 32572,  -737,   -37,   951, 32578,  -724,   -36,   929, 32586,  -711,
+	  -34,   907, 32593,  -698,   -33,   885, 32601,  -685,   -32,   864, 32607,  -671,   -30,   842, 32614,  -658,
+	  -29,   821, 32621,  -645,   -28,   800, 32627,  -631,   -26,   779, 32633,  -618,   -25,   758, 32640,  -605,
+	  -24,   737, 32646,  -591,   -23,   716, 32652,  -577,   -22,   696, 32658,  -564,   -21,   675, 32664,  -550,
+	  -20,   655, 32669,  -536,   -18,   635, 32673,  -522,   -17,   614, 32679,  -508,   -16,   594, 32685,  -495,
+	  -16,   575, 32690,  -481,   -15,   555, 32694,  -466,   -14,   535, 32699,  -452,   -13,   515, 32704,  -438,
+	  -12,   496, 32708,  -424,   -11,   477, 32712,  -410,   -10,   457, 32716,  -395,   -10,   438, 32721,  -381,
+	   -9,   419, 32724,  -366,    -8,   401, 32727,  -352,    -7,   382, 32730,  -337,    -7,   363, 32734,  -322,
+	   -6,   345, 32737,  -308,    -6,   326, 32741,  -293,    -5,   308, 32743,  -278,    -4,   290, 32745,  -263,
+	   -4,   272, 32748,  -248,    -3,   254, 32750,  -233,    -3,   236, 32753,  -218,    -3,   218, 32756,  -203,
+	   -2,   201, 32757,  -188,    -2,   184, 32758,  -172,    -2,   166, 32761,  -157,    -1,   149, 32761,  -141,
+	   -1,   132, 32763,  -126,    -1,   115, 32764,  -110,    -1,    98, 32766,   -95,     0,    82, 32765,   -79,
+	    0,    65, 32767,   -64,     0,    49, 32767,   -48,     0,    32, 32767,   -32,     0,    16, 32767,   -16
+};
+
+#endif
--- /dev/null
+++ b/src/mixer/ft2_intrp_table.h
@@ -1,0 +1,27 @@
+#pragma once
+
+#include <stdint.h>
+#include "../ft2_audio.h"
+
+#define CUBIC_WIDTH 4 /* number of taps */
+#define CUBIC_WIDTH_BITS 2
+
+#if defined __amd64__ || defined _WIN64
+
+// 15-bit precision, 4096 phases
+#define CUBIC_PHASES 4096
+#define CUBIC_PHASES_BITS 12
+
+#else
+
+// for non-x86_64 CPUs: 15-bit precision, 1024 phases (less hard on the CPU cache)
+#define CUBIC_PHASES 1024
+#define CUBIC_PHASES_BITS 10
+
+#endif
+
+#define CUBIC_FSHIFT (MIXER_FRAC_BITS-(CUBIC_PHASES_BITS+CUBIC_WIDTH_BITS))
+#define CUBIC_FMASK ((CUBIC_WIDTH*CUBIC_PHASES)-CUBIC_WIDTH)
+#define CUBIC_QUANTSHIFT 15
+
+extern const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES];
--- /dev/null
+++ b/src/mixer/ft2_mix.c
@@ -1,0 +1,1508 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include "ft2_mix.h"
+#include "ft2_mix_macros.h"
+#include "ft2_intrp_table.h"
+#include "ft2_center_mix.h"
+
+/*
+** --------------------- 32-bit fixed-point audio channel mixer ---------------------
+**              (Note: Mixing macros can be found in ft2_mix_macros.h)
+**
+** 8bitbubsy: This is mostly ported from the i386-asm 32-bit mixer that was introduced
+** in FT2.08 (MS-DOS). It has been changed and improved quite a bit, though...
+** Instead of 2-tap linear interpolation, it has 4-tap cubic spline interpolation.
+** For x86_64: Fixed-point precision is 32.32 instead of 16.16
+**
+** This file has separate routines for EVERY possible sampling variation:
+** Interpolation on/off, volume ramping on/off, 8-bit, 16-bit, no loop, loop, pingpong.
+** (24 mixing routines in total)
+**
+** Every voice has a function pointer set to the according mixing routine on sample
+** trigger (from replayer, but set in audio thread), using a function pointer look-up
+** table. All voices & pointers are always thread-safely cleared when changing any
+** of the above attributes from the GUI, to prevent possible thread-related issues.
+**
+** There's one problem with the 4-tap cubic spline resampling interpolation...
+** On looped samples where loopStart>0, the splines are not correct when reading
+** from the loopStart (or +1?) sample point. The difference in audio is very minor,
+** so it's not a big problem. It just has to stay like this the way the mixer works.
+** In cases where loopStart=0, the sample before index 0 (yes, we allocate enough
+** data and pre-increment main pointer to support negative look-up), is already
+** pre-fixed so that the splines will be correct.
+** ----------------------------------------------------------------------------------
+*/
+
+/* ----------------------------------------------------------------------- */
+/*                          8-BIT MIXING ROUTINES                          */
+/* ----------------------------------------------------------------------- */
+
+static void mix8bNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+			RENDER_8BIT_SMP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_8BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+	
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+
+
+/* ----------------------------------------------------------------------- */
+/*                          16-BIT MIXING ROUTINES                         */
+/* ----------------------------------------------------------------------- */
+
+static void mix16bNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+			RENDER_16BIT_SMP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampNoLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampBidiLoop(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *CDA_LinearAdr, *CDA_LinAdrRev, *smpPtr;
+	int32_t realPos, sample, sample2, sample3, sample4, *audioMixL, *audioMixR;
+	int32_t CDA_LVolIP, CDA_RVolIP, CDA_LVol, CDA_RVol;
+	uint32_t i, samplesToMix, CDA_BytesLeft;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos, delta;
+#else
+	uint32_t pos, delta;
+#endif
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16_BIDI
+
+	CDA_BytesLeft = numSamples;
+	while (CDA_BytesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		CDA_BytesLeft -= samplesToMix;
+
+		START_BIDI
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		if (samplesToMix & 1)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		samplesToMix >>= 1;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+			RENDER_16BIT_SMP_INTRP
+			VOLUME_RAMPING
+			INC_POS_BIDI
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+// -----------------------------------------------------------------------
+
+const mixFunc mixFuncTab[48] =
+{
+	// normal mixing
+	(mixFunc)mix8bNoLoop,
+	(mixFunc)mix8bLoop,
+	(mixFunc)mix8bBidiLoop,
+	(mixFunc)mix8bNoLoopIntrp,
+	(mixFunc)mix8bLoopIntrp,
+	(mixFunc)mix8bBidiLoopIntrp,
+	(mixFunc)mix16bNoLoop,
+	(mixFunc)mix16bLoop,
+	(mixFunc)mix16bBidiLoop,
+	(mixFunc)mix16bNoLoopIntrp,
+	(mixFunc)mix16bLoopIntrp,
+	(mixFunc)mix16bBidiLoopIntrp,
+	(mixFunc)mix8bRampNoLoop,
+	(mixFunc)mix8bRampLoop,
+	(mixFunc)mix8bRampBidiLoop,
+	(mixFunc)mix8bRampNoLoopIntrp,
+	(mixFunc)mix8bRampLoopIntrp,
+	(mixFunc)mix8bRampBidiLoopIntrp,
+	(mixFunc)mix16bRampNoLoop,
+	(mixFunc)mix16bRampLoop,
+	(mixFunc)mix16bRampBidiLoop,
+	(mixFunc)mix16bRampNoLoopIntrp,
+	(mixFunc)mix16bRampLoopIntrp,
+	(mixFunc)mix16bRampBidiLoopIntrp,
+
+	// center mixing
+	(mixFunc)centerMix8bNoLoop,
+	(mixFunc)centerMix8bLoop,
+	(mixFunc)centerMix8bBidiLoop,
+	(mixFunc)centerMix8bNoLoopIntrp,
+	(mixFunc)centerMix8bLoopIntrp,
+	(mixFunc)centerMix8bBidiLoopIntrp,
+	(mixFunc)centerMix16bNoLoop,
+	(mixFunc)centerMix16bLoop,
+	(mixFunc)centerMix16bBidiLoop,
+	(mixFunc)centerMix16bNoLoopIntrp,
+	(mixFunc)centerMix16bLoopIntrp,
+	(mixFunc)centerMix16bBidiLoopIntrp,
+	(mixFunc)centerMix8bRampNoLoop,
+	(mixFunc)centerMix8bRampLoop,
+	(mixFunc)centerMix8bRampBidiLoop,
+	(mixFunc)centerMix8bRampNoLoopIntrp,
+	(mixFunc)centerMix8bRampLoopIntrp,
+	(mixFunc)centerMix8bRampBidiLoopIntrp,
+	(mixFunc)centerMix16bRampNoLoop,
+	(mixFunc)centerMix16bRampLoop,
+	(mixFunc)centerMix16bRampBidiLoop,
+	(mixFunc)centerMix16bRampNoLoopIntrp,
+	(mixFunc)centerMix16bRampLoopIntrp,
+	(mixFunc)centerMix16bRampBidiLoopIntrp
+};
--- /dev/null
+++ b/src/mixer/ft2_mix.h
@@ -1,0 +1,8 @@
+#pragma once
+
+#include <stdint.h>
+#include "../ft2_audio.h"
+
+typedef void (*mixFunc)(void *, int32_t);
+
+extern const mixFunc mixFuncTab[48]; // ft2_mix.c
--- /dev/null
+++ b/src/mixer/ft2_mix_macros.h
@@ -1,0 +1,368 @@
+#pragma once
+
+#include <assert.h>
+#include "../ft2_audio.h"
+
+/* ----------------------------------------------------------------------- */
+/*                          GENERAL MIXER MACROS                           */
+/* ----------------------------------------------------------------------- */
+
+#define GET_VOL \
+	const int32_t CDA_LVol = v->SLVol2; \
+	const int32_t CDA_RVol = v->SRVol2; \
+
+#define GET_VOL_MONO \
+	const int32_t CDA_LVol = v->SLVol2; \
+
+#define GET_VOL_RAMP \
+	CDA_LVol = v->SLVol2; \
+	CDA_RVol = v->SRVol2; \
+
+#define GET_VOL_MONO_RAMP \
+	CDA_LVol = v->SLVol2; \
+
+#define SET_VOL_BACK \
+	v->SLVol2 = CDA_LVol; \
+	v->SRVol2 = CDA_RVol; \
+
+#define SET_VOL_BACK_MONO \
+	v->SLVol2 = v->SRVol2 = CDA_LVol; \
+
+#if defined _WIN64 || defined __amd64__
+
+#define GET_MIXER_VARS \
+	const uint64_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#define GET_MIXER_VARS_RAMP \
+	const uint64_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	CDA_LVolIP = v->SLVolIP; \
+	CDA_RVolIP = v->SRVolIP; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#define GET_MIXER_VARS_MONO_RAMP \
+	const uint64_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	CDA_LVolIP = v->SLVolIP; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#else
+
+#define GET_MIXER_VARS \
+	const uint32_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#define GET_MIXER_VARS_RAMP \
+	const uint32_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	CDA_LVolIP = v->SLVolIP; \
+	CDA_RVolIP = v->SRVolIP; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#define GET_MIXER_VARS_MONO_RAMP \
+	const uint32_t SFrq = v->SFrq; \
+	audioMixL = audio.mixBufferL; \
+	audioMixR = audio.mixBufferR; \
+	CDA_LVolIP = v->SLVolIP; \
+	realPos = v->SPos; \
+	pos = v->SPosDec; \
+
+#endif
+
+#define SET_BASE8 \
+	CDA_LinearAdr = v->SBase8; \
+	smpPtr = CDA_LinearAdr + realPos; \
+
+#define SET_BASE16 \
+	CDA_LinearAdr = v->SBase16; \
+	smpPtr = CDA_LinearAdr + realPos; \
+
+#define SET_BASE8_BIDI \
+	CDA_LinearAdr = v->SBase8; \
+	CDA_LinAdrRev = v->SRevBase8; \
+
+#define SET_BASE16_BIDI \
+	CDA_LinearAdr = v->SBase16; \
+	CDA_LinAdrRev = v->SRevBase16; \
+
+#define INC_POS \
+	pos += SFrq; \
+	smpPtr += pos >> MIXER_FRAC_BITS; \
+	pos &= MIXER_FRAC_MASK; \
+
+#define INC_POS_BIDI \
+	pos += CDA_IPValL; \
+	smpPtr += pos >> MIXER_FRAC_BITS; \
+	smpPtr += CDA_IPValH; \
+	pos &= MIXER_FRAC_MASK; \
+
+#define SET_BACK_MIXER_POS \
+	v->SPosDec = pos; \
+	v->SPos = realPos; \
+
+/* ----------------------------------------------------------------------- */
+/*                          SAMPLE RENDERING MACROS                        */
+/* ----------------------------------------------------------------------- */
+
+#define VOLUME_RAMPING \
+	CDA_LVol += CDA_LVolIP; \
+	CDA_RVol += CDA_RVolIP; \
+
+#define VOLUME_RAMPING_MONO \
+	CDA_LVol += CDA_LVolIP; \
+
+// all the 64-bit MULs here convert to fast logic even on most 32-bit CPUs
+
+#define RENDER_8BIT_SMP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = *smpPtr << 20; \
+	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
+
+#define RENDER_8BIT_SMP_MONO \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = *smpPtr << 20; \
+	sample = ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixL++ += sample; \
+	*audioMixR++ += sample; \
+
+#define RENDER_16BIT_SMP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = *smpPtr << 12; \
+	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
+
+#define RENDER_16BIT_SMP_MONO \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = *smpPtr << 12; \
+	sample = ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixL++ += sample; \
+	*audioMixR++ += sample; \
+
+// 4-tap cubic spline interpolation
+
+// in: int32_t s0,s1,s2,s3 = -128..127 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
+#define INTERPOLATE8(s0, s1, s2, s3, f) \
+{ \
+	const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+	s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> (CUBIC_QUANTSHIFT-8); \
+} \
+
+// in: int32_t s0,s1,s2,s3 = -32768..32767 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
+#define INTERPOLATE16(s0, s1, s2, s3, f) \
+{ \
+	const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+	s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> CUBIC_QUANTSHIFT; \
+} \
+
+/* 8bitbubsy: It may look like we are potentially going out of bounds by looking up sample point
+** -1, 1 and 2, but the sample data is actually padded on both the left (negative) and right side,
+** where correct samples are stored according to loop mode (or no loop).
+**
+** The only issue is that the -1 look-up gets wrong information if loopStart>0 on looped-samples,
+** and the sample-position is at loopStart. The spline will get ever so slighty wrong because of this,
+** but it's barely audible anyway. Doing it elsewise would require a refactoring of how the audio mixer
+** works!
+*/
+
+#define RENDER_8BIT_SMP_INTRP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = smpPtr[-1]; \
+	sample2 = smpPtr[0]; \
+	sample3 = smpPtr[1]; \
+	sample4 = smpPtr[2]; \
+	INTERPOLATE8(sample, sample2, sample3, sample4, pos) \
+	sample <<= 12; \
+	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
+
+#define RENDER_8BIT_SMP_MONO_INTRP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = smpPtr[-1]; \
+	sample2 = smpPtr[0]; \
+	sample3 = smpPtr[1]; \
+	sample4 = smpPtr[2]; \
+	INTERPOLATE8(sample, sample2, sample3, sample4, pos) \
+	sample <<= 12; \
+	sample = ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixL++ += sample; \
+	*audioMixR++ += sample; \
+
+#define RENDER_16BIT_SMP_INTRP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = smpPtr[-1]; \
+	sample2 = smpPtr[0]; \
+	sample3 = smpPtr[1]; \
+	sample4 = smpPtr[2]; \
+	INTERPOLATE16(sample, sample2, sample3, sample4, pos) \
+	sample <<= 12; \
+	*audioMixL++ += ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixR++ += ((int64_t)sample * CDA_RVol) >> 32; \
+
+#define RENDER_16BIT_SMP_MONO_INTRP \
+	assert(smpPtr >= CDA_LinearAdr && smpPtr < CDA_LinearAdr+v->SLen); \
+	sample = smpPtr[-1]; \
+	sample2 = smpPtr[0]; \
+	sample3 = smpPtr[1]; \
+	sample4 = smpPtr[2]; \
+	INTERPOLATE16(sample, sample2, sample3, sample4, pos) \
+	sample <<= 12; \
+	sample = ((int64_t)sample * CDA_LVol) >> 32; \
+	*audioMixL++ += sample; \
+	*audioMixR++ += sample; \
+
+/* ----------------------------------------------------------------------- */
+/*                      SAMPLES-TO-MIX LIMITING MACROS                     */
+/* ----------------------------------------------------------------------- */
+
+#if defined _WIN64 || defined __amd64__
+
+#define LIMIT_MIX_NUM \
+	i = (v->SLen - 1) - realPos; \
+	if (i > 65535) \
+		i = 65535; \
+	\
+	i = (i << 16) | ((uint32_t)(pos >> 16) ^ 0xFFFF); \
+	samplesToMix = ((int64_t)i * v->SFrqRev) >> 32; \
+	samplesToMix++; \
+	\
+	if (samplesToMix > CDA_BytesLeft) \
+		samplesToMix = CDA_BytesLeft; \
+
+#define START_BIDI \
+	if (v->backwards) \
+	{ \
+		delta = 0 - SFrq; \
+		assert(realPos >= v->SRepS && realPos < v->SLen); \
+		realPos = ~realPos; \
+		smpPtr = CDA_LinAdrRev + realPos; \
+		pos ^= MIXER_FRAC_MASK; \
+	} \
+	else \
+	{ \
+		delta = SFrq; \
+		assert(realPos >= 0 && realPos < v->SLen); \
+		smpPtr = CDA_LinearAdr + realPos; \
+	} \
+	\
+	const int32_t CDA_IPValH = (int64_t)delta >> MIXER_FRAC_BITS; \
+	const uint32_t CDA_IPValL = delta & MIXER_FRAC_MASK; \
+
+#else
+
+#define LIMIT_MIX_NUM \
+	i = (v->SLen - 1) - realPos; \
+	if (i > (1UL << (32-MIXER_FRAC_BITS))-1) \
+		i = (1UL << (32-MIXER_FRAC_BITS))-1; \
+	\
+	i = (i << MIXER_FRAC_BITS) | (pos ^ MIXER_FRAC_MASK); \
+	samplesToMix = ((int64_t)i * v->SFrqRev) >> 32; \
+	samplesToMix++; \
+	\
+	if (samplesToMix > CDA_BytesLeft) \
+		samplesToMix = CDA_BytesLeft; \
+
+#define START_BIDI \
+	if (v->backwards) \
+	{ \
+		delta = 0 - SFrq; \
+		assert(realPos >= v->SRepS && realPos < v->SLen); \
+		realPos = ~realPos; \
+		smpPtr = CDA_LinAdrRev + realPos; \
+		pos ^= MIXER_FRAC_MASK; \
+	} \
+	else \
+	{ \
+		delta = SFrq; \
+		assert(realPos >= 0 && realPos < v->SLen); \
+		smpPtr = CDA_LinearAdr + realPos; \
+	} \
+	\
+	const int32_t CDA_IPValH = (int32_t)delta >> MIXER_FRAC_BITS; \
+	const uint32_t CDA_IPValL = delta & MIXER_FRAC_MASK; \
+
+#endif
+
+#define LIMIT_MIX_NUM_RAMP \
+	if (v->SVolIPLen == 0) \
+	{ \
+		CDA_LVolIP = 0; \
+		CDA_RVolIP = 0; \
+		\
+		if (v->isFadeOutVoice) \
+		{ \
+			v->active = false; /* volume ramp fadeout-voice is done, shut it down */ \
+			return; \
+		} \
+	} \
+	else \
+	{ \
+		if (samplesToMix > v->SVolIPLen) \
+			samplesToMix = v->SVolIPLen; \
+		\
+		v->SVolIPLen -= samplesToMix; \
+	} \
+
+#define LIMIT_MIX_NUM_MONO_RAMP \
+	if (v->SVolIPLen == 0) \
+	{ \
+		CDA_LVolIP = 0; \
+		if (v->isFadeOutVoice) \
+		{ \
+			v->active = false; /* volume ramp fadeout-voice is done, shut it down */ \
+			return; \
+		} \
+	} \
+	else \
+	{ \
+		if (samplesToMix > v->SVolIPLen) \
+			samplesToMix = v->SVolIPLen; \
+		\
+		v->SVolIPLen -= samplesToMix; \
+	} \
+
+#define HANDLE_SAMPLE_END \
+	realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
+	if (realPos >= v->SLen) \
+	{ \
+		v->active = false; \
+		return; \
+	} \
+
+#define WRAP_LOOP \
+	realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
+	while (realPos >= v->SLen) \
+		realPos -= v->SRepL; \
+	smpPtr = CDA_LinearAdr + realPos; \
+
+#define WRAP_BIDI_LOOP \
+	while (realPos >= v->SLen) \
+	{ \
+		realPos -= v->SRepL; \
+		v->backwards ^= 1; \
+	} \
+
+#define END_BIDI \
+	if (v->backwards) \
+	{ \
+		pos ^= MIXER_FRAC_MASK; \
+		realPos = ~(int32_t)(smpPtr - CDA_LinAdrRev); \
+	} \
+	else \
+	{ \
+		realPos = (int32_t)(smpPtr - CDA_LinearAdr); \
+	} \
+
--- /dev/null
+++ b/src/mixer/ft2_silence_mix.c
@@ -1,0 +1,31 @@
+#include <stdint.h>
+#include "../ft2_audio.h"
+#include "ft2_silence_mix.h"
+
+void silenceMixRoutine(voice_t *v, int32_t numSamples)
+{
+	int32_t realPos;
+#if defined _WIN64 || defined __amd64__
+	uint64_t pos;
+#else
+	uint32_t pos;
+#endif
+
+	SILENCE_MIX_INC_POS
+
+	if (v->SLoopType == 0)
+	{
+		SILENCE_MIX_NO_LOOP
+	}
+	else if (v->SLoopType == 1)
+	{
+		SILENCE_MIX_LOOP
+	}
+	else
+	{
+		SILENCE_MIX_BIDI_LOOP
+	}
+
+	v->SPosDec = pos;
+	v->SPos = realPos;
+}
--- /dev/null
+++ b/src/mixer/ft2_silence_mix.h
@@ -1,0 +1,75 @@
+#pragma once
+
+#include <stdint.h>
+#include <assert.h>
+#include "../ft2_audio.h"
+
+#define SILENCE_MIX_NO_LOOP \
+	if (realPos >= v->SLen) \
+	{ \
+		v->active = false; /* shut down voice */ \
+		return; \
+	} \
+
+#if defined _WIN64 || defined __amd64__
+
+#define SILENCE_MIX_INC_POS \
+	const uint64_t newPos = v->SFrq * (uint64_t)numSamples; \
+	const uint32_t addPos = (uint32_t)(newPos >> MIXER_FRAC_BITS); \
+	uint64_t addFrac = newPos & MIXER_FRAC_MASK; \
+	\
+	addFrac += v->SPosDec; \
+	realPos = v->SPos + addPos + (uint32_t)(addFrac >> MIXER_FRAC_BITS); \
+	pos = addFrac & MIXER_FRAC_MASK; \
+
+
+#define SILENCE_MIX_LOOP \
+	if (realPos >= v->SLen) \
+	{ \
+		if (v->SRepL >= 2) \
+			realPos = v->SRepS + ((realPos - v->SLen) % v->SRepL); \
+		else \
+			realPos = v->SRepS; \
+	} \
+
+#define SILENCE_MIX_BIDI_LOOP \
+	if (realPos >= v->SLen) \
+	{ \
+		if (v->SRepL >= 2) \
+		{ \
+			const int32_t overflow = realPos - v->SLen; \
+			const int32_t cycles = overflow / v->SRepL; \
+			const int32_t phase = overflow % v->SRepL; \
+			\
+			realPos = v->SRepS + phase; \
+			v->backwards ^= !(cycles & 1); \
+		} \
+		else \
+		{ \
+			realPos = v->SRepS; \
+		} \
+	} \
+
+#else
+
+#define SILENCE_MIX_INC_POS \
+	assert(numSamples <= 65536); \
+	\
+	pos = v->SPosDec + ((v->SFrq & 0xFFFF) * numSamples); \
+	realPos = v->SPos + ((v->SFrq >> 16) * numSamples) + (pos >> 16); \
+	pos &= 0xFFFF; \
+
+#define SILENCE_MIX_LOOP \
+	while (realPos >= v->SLen) \
+		realPos -= v->SRepL; \
+
+#define SILENCE_MIX_BIDI_LOOP \
+	while (realPos >= v->SLen) \
+	{ \
+		realPos -= v->SRepL; \
+		v->backwards ^= 1; \
+	} \
+
+#endif
+
+void silenceMixRoutine(voice_t *v, int32_t numSamples);
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj
@@ -311,11 +311,9 @@
     <ClCompile Include="..\..\src\ft2_gui.c" />
     <ClCompile Include="..\..\src\ft2_help.c" />
     <ClCompile Include="..\..\src\ft2_inst_ed.c" />
-    <ClCompile Include="..\..\src\ft2_intrp_table.c" />
     <ClCompile Include="..\..\src\ft2_keyboard.c" />
     <ClCompile Include="..\..\src\ft2_main.c" />
     <ClCompile Include="..\..\src\ft2_midi.c" />
-    <ClCompile Include="..\..\src\ft2_mix.c" />
     <ClCompile Include="..\..\src\ft2_module_loader.c" />
     <ClCompile Include="..\..\src\ft2_module_saver.c" />
     <ClCompile Include="..\..\src\ft2_mouse.c" />
@@ -351,6 +349,10 @@
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c" />
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_looppins.c" />
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c" />
+    <ClCompile Include="..\..\src\mixer\ft2_intrp_table.c" />
+    <ClCompile Include="..\..\src\mixer\ft2_mix.c" />
+    <ClCompile Include="..\..\src\mixer\ft2_center_mix.c" />
+    <ClCompile Include="..\..\src\mixer\ft2_silence_mix.c" />
     <ClCompile Include="..\..\src\rtmidi\RtMidi.cpp">
       <ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Sync</ExceptionHandling>
       <ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Sync</ExceptionHandling>
@@ -383,11 +385,8 @@
     <ClInclude Include="..\..\src\ft2_header.h" />
     <ClInclude Include="..\..\src\ft2_help.h" />
     <ClInclude Include="..\..\src\ft2_inst_ed.h" />
-    <ClInclude Include="..\..\src\ft2_intrp_table.h" />
     <ClInclude Include="..\..\src\ft2_keyboard.h" />
     <ClInclude Include="..\..\src\ft2_midi.h" />
-    <ClInclude Include="..\..\src\ft2_mix.h" />
-    <ClInclude Include="..\..\src\ft2_mix_macros.h" />
     <ClInclude Include="..\..\src\ft2_module_loader.h" />
     <ClInclude Include="..\..\src\ft2_module_saver.h" />
     <ClInclude Include="..\..\src\ft2_mouse.h" />
@@ -414,6 +413,11 @@
     <ClInclude Include="..\..\src\ft2_unicode.h" />
     <ClInclude Include="..\..\src\ft2_video.h" />
     <ClInclude Include="..\..\src\ft2_wav_renderer.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_intrp_table.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_mix.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_mix_macros.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_center_mix.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_silence_mix.h" />
     <ClInclude Include="..\..\src\rtmidi\RtMidi.h" />
     <ClInclude Include="..\..\src\rtmidi\rtmidi_c.h" />
   </ItemGroup>
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
@@ -13,11 +13,9 @@
     <ClCompile Include="..\..\src\ft2_gui.c" />
     <ClCompile Include="..\..\src\ft2_help.c" />
     <ClCompile Include="..\..\src\ft2_inst_ed.c" />
-    <ClCompile Include="..\..\src\ft2_intrp_table.c" />
     <ClCompile Include="..\..\src\ft2_keyboard.c" />
     <ClCompile Include="..\..\src\ft2_main.c" />
     <ClCompile Include="..\..\src\ft2_midi.c" />
-    <ClCompile Include="..\..\src\ft2_mix.c" />
     <ClCompile Include="..\..\src\ft2_module_loader.c" />
     <ClCompile Include="..\..\src\ft2_module_saver.c" />
     <ClCompile Include="..\..\src\ft2_mouse.c" />
@@ -77,6 +75,18 @@
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c">
       <Filter>graphics</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\mixer\ft2_mix.c">
+      <Filter>mixer</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\mixer\ft2_intrp_table.c">
+      <Filter>mixer</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\mixer\ft2_center_mix.c">
+      <Filter>mixer</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\mixer\ft2_silence_mix.c">
+      <Filter>mixer</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\rtmidi\RtMidi.h">
@@ -127,9 +137,6 @@
     <ClInclude Include="..\..\src\ft2_inst_ed.h">
       <Filter>headers</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\ft2_intrp_table.h">
-      <Filter>headers</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\ft2_keyboard.h">
       <Filter>headers</Filter>
     </ClInclude>
@@ -136,12 +143,6 @@
     <ClInclude Include="..\..\src\ft2_midi.h">
       <Filter>headers</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\ft2_mix.h">
-      <Filter>headers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\ft2_mix_macros.h">
-      <Filter>headers</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\ft2_module_loader.h">
       <Filter>headers</Filter>
     </ClInclude>
@@ -220,6 +221,21 @@
     <ClInclude Include="..\..\src\ft2_wav_renderer.h">
       <Filter>headers</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\mixer\ft2_mix.h">
+      <Filter>mixer</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\mixer\ft2_mix_macros.h">
+      <Filter>mixer</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\mixer\ft2_intrp_table.h">
+      <Filter>mixer</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\mixer\ft2_center_mix.h">
+      <Filter>mixer</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\mixer\ft2_silence_mix.h">
+      <Filter>mixer</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <Filter Include="headers">
@@ -230,6 +246,9 @@
     </Filter>
     <Filter Include="rtmidi">
       <UniqueIdentifier>{95e882a1-e589-4684-a3cb-48e0a1d073aa}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="mixer">
+      <UniqueIdentifier>{5c40c417-c4bb-4cf2-b71b-c557bf0a86cd}</UniqueIdentifier>
     </Filter>
   </ItemGroup>
   <ItemGroup>