From 17ba51d7eb11243e87080d6b6a8f416ed7850ce0 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 1 May 2017 10:33:16 +0100 Subject: [PATCH 01/39] Move PortaPack IO init to earlier -- with other IO init. Was causing trouble with performing audio codec reset. --- firmware/application/main.cpp | 1 - firmware/application/portapack.cpp | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 05ce816e2..f2a262c8c 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -70,7 +70,6 @@ static void event_loop() { int main(void) { portapack::init(); - portapack::io.init(); portapack::display.init(); sdcStart(&SDCD1, nullptr); diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index 16986c17f..24a0c989e 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -139,6 +139,8 @@ void init() { led_rx.setup(); led_tx.setup(); + portapack::io.init(); + clock_manager.init(); clock_manager.set_reference_ppb(persistent_memory::correction_ppb()); clock_manager.run_at_full_speed(); From b12f90ef08f89be01e022c9a76660d9763b6fe66 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 1 May 2017 10:34:33 +0100 Subject: [PATCH 02/39] Adjust initial CPLD io_reg value for new CPLD code. --- firmware/common/portapack_io.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/common/portapack_io.hpp b/firmware/common/portapack_io.hpp index 7ec868419..ed1c82fb2 100644 --- a/firmware/common/portapack_io.hpp +++ b/firmware/common/portapack_io.hpp @@ -198,7 +198,7 @@ private: static constexpr size_t gpio_data_shift = 8; static constexpr ioportmask_t gpio_data_mask = 0xffU << gpio_data_shift; - uint8_t io_reg { 0x01 }; + uint8_t io_reg { 0x03 }; void lcd_rd_assert() { gpio_lcd_rd.set(); From 19e42196dbe22e707129ad48f45f9346bdaf1277 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 1 May 2017 10:37:49 +0100 Subject: [PATCH 03/39] Fn for control of audio codec reset signal. --- firmware/common/portapack_io.cpp | 11 +++++++++++ firmware/common/portapack_io.hpp | 1 + 2 files changed, 12 insertions(+) diff --git a/firmware/common/portapack_io.cpp b/firmware/common/portapack_io.cpp index aa0531291..5668ad28e 100644 --- a/firmware/common/portapack_io.cpp +++ b/firmware/common/portapack_io.cpp @@ -64,6 +64,17 @@ void IO::lcd_reset_state(const bool active) { io_write(1, io_reg); } +void IO::audio_reset_state(const bool active) { + /* Reset signal for audio codec. Some audio codecs (e.g. WM8731) do not + * implement reset signal, only soft reset via I2C. + */ + /* NOTE: This overwrites the contents of the IO register, which for now + * have no significance. But someday...? + */ + io_reg = (io_reg & 0xfd) | ((active ? 1 : 0) << 1); + io_write(1, io_reg); +} + uint32_t IO::io_update(const TouchPinsConfig write_value) { /* Very touchy code to save context of PortaPack data bus while the * resistive touch pin drive is changed. Order of operations is diff --git a/firmware/common/portapack_io.hpp b/firmware/common/portapack_io.hpp index ed1c82fb2..9ae464854 100644 --- a/firmware/common/portapack_io.hpp +++ b/firmware/common/portapack_io.hpp @@ -100,6 +100,7 @@ public: void lcd_backlight(const bool value); void lcd_reset_state(const bool active); + void audio_reset_state(const bool active); void lcd_data_write_command_and_data( const uint_fast8_t command, From d6e3cc1d1b6a5cb111d2bf3debc81a2255287272 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 2 May 2017 06:44:50 +0100 Subject: [PATCH 04/39] Move CPLD updating to earlier in start-up Make sure CPLD code is up-to-date before attempting to interact with PortaPack. --- firmware/application/portapack.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index 24a0c989e..a1a18e76c 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -145,6 +145,14 @@ void init() { clock_manager.set_reference_ppb(persistent_memory::correction_ppb()); clock_manager.run_at_full_speed(); + if( !cpld_update_if_necessary() ) { + chSysHalt(); + } + + if( !cpld_hackrf_load_sram() ) { + chSysHalt(); + } + audio::init(); clock_manager.enable_first_if_clock(); @@ -153,14 +161,6 @@ void init() { radio::init(); touch::adc::init(); - - if( !cpld_update_if_necessary() ) { - chSysHalt(); - } - - if( !cpld_hackrf_load_sram() ) { - chSysHalt(); - } } void shutdown() { From 018d8ee952c87f4a2fda883a987cadfb06578c33 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 2 May 2017 06:45:23 +0100 Subject: [PATCH 05/39] Init PortaPack IO after CPLD update. --- firmware/application/portapack.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index a1a18e76c..7d93bd406 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -139,8 +139,6 @@ void init() { led_rx.setup(); led_tx.setup(); - portapack::io.init(); - clock_manager.init(); clock_manager.set_reference_ppb(persistent_memory::correction_ppb()); clock_manager.run_at_full_speed(); @@ -153,6 +151,8 @@ void init() { chSysHalt(); } + portapack::io.init(); + audio::init(); clock_manager.enable_first_if_clock(); From dd0048db8d30713d46f0a0add934c768a3c51376 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Wed, 3 May 2017 09:54:41 +0100 Subject: [PATCH 06/39] Remove broken simd32_t type. --- firmware/baseband/channel_stats_collector.hpp | 11 +-- firmware/baseband/dsp_decimate.cpp | 78 +++++++++---------- firmware/baseband/dsp_demodulate.cpp | 27 ++++--- .../os/hal/platforms/LPC43xx_M4/lpc43xx_m4.h | 6 ++ firmware/common/simd.hpp | 24 ------ 5 files changed, 61 insertions(+), 85 deletions(-) diff --git a/firmware/baseband/channel_stats_collector.hpp b/firmware/baseband/channel_stats_collector.hpp index 8e69448ea..daab08220 100644 --- a/firmware/baseband/channel_stats_collector.hpp +++ b/firmware/baseband/channel_stats_collector.hpp @@ -23,7 +23,6 @@ #define __CHANNEL_STATS_COLLECTOR_H__ #include "dsp_types.hpp" -#include "simd.hpp" #include "message.hpp" #include "utility.hpp" @@ -36,7 +35,7 @@ class ChannelStatsCollector { public: template void feed(const buffer_c16_t& src, Callback callback) { - max_squared = compute_max_squared(src, max_squared); + max_squared = compute_max_squared(src, max_squared); count += src.count; const size_t samples_per_update = src.sampling_rate * update_interval; @@ -60,11 +59,9 @@ private: const buffer_c16_t& src, uint32_t max_squared ) { - auto p = simd32_ptr(src.p); - const auto end_p = simd32_ptr(&src.p[src.count]); - - while(p < end_p) { - const uint32_t sample = *(p++); + auto src_p = src.p; + while(src_p < &src.p[src.count]) { + const uint32_t sample = *__SIMD32(src_p)++; const uint32_t mag_sq = __SMUAD(sample, sample); if( mag_sq > max_squared ) { max_squared = mag_sq; diff --git a/firmware/baseband/dsp_decimate.cpp b/firmware/baseband/dsp_decimate.cpp index 09aa45dfc..93dbc6025 100644 --- a/firmware/baseband/dsp_decimate.cpp +++ b/firmware/baseband/dsp_decimate.cpp @@ -21,8 +21,6 @@ #include "dsp_decimate.hpp" -#include "simd.hpp" - #include namespace dsp { @@ -568,39 +566,39 @@ buffer_c16_t DecimateBy2CIC3::execute( uint32_t t1 = _iq0; uint32_t t2 = _iq1; const uint32_t taps = 0x00000003; - auto s = simd32_ptr(&src.p[0]); - auto d = simd32_ptr(&dst.p[0]); - const auto d_end = simd32_ptr(&dst.p[src.count / 2]); + auto s = src.p; + auto d = dst.p; + const auto d_end = &dst.p[src.count / 2]; while(d < d_end) { uint32_t i = __SXTH(t1, 0); /* 1: I0 */ uint32_t q = __SXTH(t1, 16); /* 1: Q0 */ i = __SMLABB(t2, taps, i); /* 1: I1*3 + I0 */ q = __SMLATB(t2, taps, q); /* 1: Q1*3 + Q0 */ - const uint32_t t3 = *(s++); /* 3: Q2:I2 */ - const uint32_t t4 = *(s++); /* Q3:I3 */ + const uint32_t t3 = *__SIMD32(s)++; /* 3: Q2:I2 */ + const uint32_t t4 = *__SIMD32(s)++; /* Q3:I3 */ i = __SMLABB(t3, taps, i); /* 1: I2*3 + I1*3 + I0 */ q = __SMLATB(t3, taps, q); /* 1: Q2*3 + Q1*3 + Q0 */ int32_t si0 = __SXTAH(i, t4, 0); /* 1: I3 + Q2*3 + Q1*3 + Q0 */ int32_t sq0 = __SXTAH(q, t4, 16); /* 1: Q3 + Q2*3 + Q1*3 + Q0 */ i = __BFI(si0 / 8, sq0 / 8, 16, 16); /* 1: D2_Q0:D2_I0 */ - *(d++) = i; /* D2_Q0:D2_I0 */ + *__SIMD32(d)++ = i; /* D2_Q0:D2_I0 */ i = __SXTH(t3, 0); /* 1: I2 */ q = __SXTH(t3, 16); /* 1: Q2 */ i = __SMLABB(t4, taps, i); /* 1: I3*3 + I2 */ q = __SMLATB(t4, taps, q); /* 1: Q3*3 + Q2 */ - t1 = *(s++); /* 3: Q4:I4 */ - t2 = *(s++); /* Q5:I5 */ + t1 = *__SIMD32(s)++; /* 3: Q4:I4 */ + t2 = *__SIMD32(s)++; /* Q5:I5 */ i = __SMLABB(t1, taps, i); /* 1: I4*3 + I3*3 + I2 */ q = __SMLATB(t1, taps, q); /* 1: Q4*3 + Q3*3 + Q2 */ int32_t si1 = __SXTAH(i, t2, 0) ; /* 1: I5 + Q4*3 + Q3*3 + Q2 */ int32_t sq1 = __SXTAH(q, t2, 16); /* 1: Q5 + Q4*3 + Q3*3 + Q2 */ i = __BFI(si1 / 8, sq1 / 8, 16, 16); /* 1: D2_Q1:D2_I1 */ - *(d++) = i; /* D2_Q1:D2_I1 */ + *__SIMD32(d)++ = i; /* D2_Q1:D2_I1 */ } _iq0 = t1; _iq1 = t2; @@ -667,57 +665,57 @@ buffer_c16_t FIRAndDecimateComplex::execute( const auto output_sampling_rate = src.sampling_rate / decimation_factor_; const size_t output_samples = src.count / decimation_factor_; - auto dst_p = simd32_ptr(dst.p); + sample_t* dst_p = dst.p; const buffer_c16_t result { dst.p, output_samples, output_sampling_rate }; - auto src_p = simd32_ptr(src.p); + const sample_t* src_p = src.p; size_t outer_count = output_samples; while(outer_count > 0) { /* Put new samples into delay buffer */ - auto z_new_p = simd32_ptr(&samples_[taps_count_ - decimation_factor_]); + auto z_new_p = &samples_[taps_count_ - decimation_factor_]; for(size_t i=0; i 0) { - const auto tap0 = *(t_p++); - const auto sample0 = *(z_p++); - const auto tap1 = *(t_p++); - const auto sample1 = *(z_p++); + const auto tap0 = *__SIMD32(t_p)++; + const auto sample0 = *__SIMD32(z_p)++; + const auto tap1 = *__SIMD32(t_p)++; + const auto sample1 = *__SIMD32(z_p)++; t_real = __SMLSLD(sample0, tap0, t_real); t_imag = __SMLALDX(sample0, tap0, t_imag); t_real = __SMLSLD(sample1, tap1, t_real); t_imag = __SMLALDX(sample1, tap1, t_imag); - const auto tap2 = *(t_p++); - const auto sample2 = *(z_p++); - const auto tap3 = *(t_p++); - const auto sample3 = *(z_p++); + const auto tap2 = *__SIMD32(t_p)++; + const auto sample2 = *__SIMD32(z_p)++; + const auto tap3 = *__SIMD32(t_p)++; + const auto sample3 = *__SIMD32(z_p)++; t_real = __SMLSLD(sample2, tap2, t_real); t_imag = __SMLALDX(sample2, tap2, t_imag); t_real = __SMLSLD(sample3, tap3, t_real); t_imag = __SMLALDX(sample3, tap3, t_imag); - const auto tap4 = *(t_p++); - const auto sample4 = *(z_p++); - const auto tap5 = *(t_p++); - const auto sample5 = *(z_p++); + const auto tap4 = *__SIMD32(t_p)++; + const auto sample4 = *__SIMD32(z_p)++; + const auto tap5 = *__SIMD32(t_p)++; + const auto sample5 = *__SIMD32(z_p)++; t_real = __SMLSLD(sample4, tap4, t_real); t_imag = __SMLALDX(sample4, tap4, t_imag); t_real = __SMLSLD(sample5, tap5, t_real); t_imag = __SMLALDX(sample5, tap5, t_imag); - const auto tap6 = *(t_p++); - const auto sample6 = *(z_p++); - const auto tap7 = *(t_p++); - const auto sample7 = *(z_p++); + const auto tap6 = *__SIMD32(t_p)++; + const auto sample6 = *__SIMD32(z_p)++; + const auto tap7 = *__SIMD32(t_p)++; + const auto sample7 = *__SIMD32(z_p)++; t_real = __SMLSLD(sample6, tap6, t_real); t_imag = __SMLALDX(sample6, tap6, t_imag); t_real = __SMLSLD(sample7, tap7, t_real); @@ -733,7 +731,7 @@ buffer_c16_t FIRAndDecimateComplex::execute( const int32_t i = t_imag >> 16; const int32_t r_sat = __SSAT(r, 16); const int32_t i_sat = __SSAT(i, 16); - *(dst_p++) = __PKHBT( + *__SIMD32(dst_p)++ = __PKHBT( r_sat, i_sat, 16 @@ -743,14 +741,14 @@ buffer_c16_t FIRAndDecimateComplex::execute( const size_t unroll_factor = 4; size_t shift_count = (taps_count_ - decimation_factor_) / unroll_factor; - auto t = simd32_ptr(&samples_[0]); - auto s = simd32_ptr(&samples_[decimation_factor_]); + sample_t* t = &samples_[0]; + const sample_t* s = &samples_[decimation_factor_]; while(shift_count > 0) { - *(t++) = *(s++); - *(t++) = *(s++); - *(t++) = *(s++); - *(t++) = *(s++); + *__SIMD32(t)++ = *__SIMD32(s)++; + *__SIMD32(t)++ = *__SIMD32(s)++; + *__SIMD32(t)++ = *__SIMD32(s)++; + *__SIMD32(t)++ = *__SIMD32(s)++; shift_count--; } diff --git a/firmware/baseband/dsp_demodulate.cpp b/firmware/baseband/dsp_demodulate.cpp index 22348a35b..cf79d0d02 100644 --- a/firmware/baseband/dsp_demodulate.cpp +++ b/firmware/baseband/dsp_demodulate.cpp @@ -24,7 +24,6 @@ #include "complex.hpp" #include "fxpt_atan2.hpp" #include "utility_m4.hpp" -#include "simd.hpp" #include @@ -35,12 +34,12 @@ buffer_f32_t AM::execute( const buffer_c16_t& src, const buffer_f32_t& dst ) { - auto src_p = simd32_ptr(src.p); - auto src_end = simd32_ptr(&src.p[src.count]); + const auto src_p = src.p; + const auto src_end = &src.p[src.count]; auto dst_p = dst.p; while(src_p < src_end) { - const uint32_t sample0 = *(src_p++); - const uint32_t sample1 = *(src_p++); + const uint32_t sample0 = *__SIMD32(src_p)++; + const uint32_t sample1 = *__SIMD32(src_p)++; const uint32_t mag_sq0 = __SMUAD(sample0, sample0); const uint32_t mag_sq1 = __SMUAD(sample1, sample1); *(dst_p++) = __builtin_sqrtf(mag_sq0) * k; @@ -91,12 +90,12 @@ buffer_f32_t FM::execute( ) { auto z = z_; - auto src_p = simd32_ptr(src.p); - auto src_end = simd32_ptr(&src.p[src.count]); + const auto src_p = src.p; + const auto src_end = &src.p[src.count]; auto dst_p = dst.p; while(src_p < src_end) { - const auto s0 = *(src_p++); - const auto s1 = *(src_p++); + const auto s0 = *__SIMD32(src_p)++; + const auto s1 = *__SIMD32(src_p)++; const auto t0 = multiply_conjugate_s16_s32(s0, z); const auto t1 = multiply_conjugate_s16_s32(s1, s0); z = s1; @@ -114,12 +113,12 @@ buffer_s16_t FM::execute( ) { auto z = z_; - auto src_p = simd32_ptr(src.p); - auto src_end = simd32_ptr(&src.p[src.count]); + const auto src_p = src.p; + const auto src_end = &src.p[src.count]; auto dst_p = dst.p; while(src_p < src_end) { - const auto s0 = *(src_p++); - const auto s1 = *(src_p++); + const auto s0 = *__SIMD32(src_p)++; + const auto s1 = *__SIMD32(src_p)++; const auto t0 = multiply_conjugate_s16_s32(s0, z); const auto t1 = multiply_conjugate_s16_s32(s1, s0); z = s1; @@ -127,7 +126,7 @@ buffer_s16_t FM::execute( const int32_t theta0_sat = __SSAT(theta0_int, 16); const int32_t theta1_int = angle_approx_0deg27(t1) * ks16; const int32_t theta1_sat = __SSAT(theta1_int, 16); - *(dst_p++) = __PKHBT( + *__SIMD32(dst_p)++ = __PKHBT( theta0_sat, theta1_sat, 16 diff --git a/firmware/chibios-portapack/os/hal/platforms/LPC43xx_M4/lpc43xx_m4.h b/firmware/chibios-portapack/os/hal/platforms/LPC43xx_M4/lpc43xx_m4.h index 4a80e82aa..d56457ae8 100644 --- a/firmware/chibios-portapack/os/hal/platforms/LPC43xx_M4/lpc43xx_m4.h +++ b/firmware/chibios-portapack/os/hal/platforms/LPC43xx_M4/lpc43xx_m4.h @@ -125,6 +125,12 @@ typedef enum IRQn { #ifdef __cplusplus +/* NOTE: Override old, misbehaving SIMD #defines */ + +#define __SIMD32_TYPE int32_t +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) + /* Overload of __SXTB16() to add ROR argument, since using __ROR() as an * argument to the existing __SXTB16() doesn't produce optimum/sane code. */ diff --git a/firmware/common/simd.hpp b/firmware/common/simd.hpp index 1724066b8..c2e9be95c 100644 --- a/firmware/common/simd.hpp +++ b/firmware/common/simd.hpp @@ -28,30 +28,6 @@ #include -template -struct simd32_t { - union { - uint32_t raw; - T vec; - }; - - operator uint32_t() const { - return raw; - } - - simd32_t& operator=(uint32_t v) { - raw = v; - return *this; - } - - static_assert(sizeof(raw) == sizeof(vec), "simd32_t types are not the same size."); -}; - -template -simd32_t* simd32_ptr(T* const p) { - return reinterpret_cast*>(p); -} - struct vec4_s8 { union { int8_t v[4]; From 85712a2c5f48a9b4af64b93b7be0ef6f4c2fc1e3 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Wed, 3 May 2017 12:35:19 +0100 Subject: [PATCH 07/39] FatFs: Update to release R0.12b. --- firmware/application/ffconf.h | 12 +- .../ext/fatfs/doc/00index_e.html | 4 +- .../ext/fatfs/doc/00index_j.html | 4 +- .../ext/fatfs/doc/en/appnote.html | 44 +-- .../ext/fatfs/doc/en/chdir.html | 8 +- .../ext/fatfs/doc/en/config.html | 16 +- .../ext/fatfs/doc/en/dinit.html | 2 +- .../ext/fatfs/doc/en/dioctl.html | 12 +- .../ext/fatfs/doc/en/dread.html | 8 +- .../ext/fatfs/doc/en/dstat.html | 2 +- .../ext/fatfs/doc/en/dwrite.html | 6 +- .../ext/fatfs/doc/en/expand.html | 6 +- .../ext/fatfs/doc/en/fattime.html | 4 +- .../ext/fatfs/doc/en/fdisk.html | 6 +- .../ext/fatfs/doc/en/filename.html | 8 +- .../ext/fatfs/doc/en/findfirst.html | 9 +- .../ext/fatfs/doc/en/forward.html | 3 +- .../ext/fatfs/doc/en/getcwd.html | 2 +- .../ext/fatfs/doc/en/mkdir.html | 2 +- .../ext/fatfs/doc/en/mkfs.html | 8 +- .../ext/fatfs/doc/en/mount.html | 12 +- .../ext/fatfs/doc/en/open.html | 6 +- .../ext/fatfs/doc/en/printf.html | 2 +- .../ext/fatfs/doc/en/rc.html | 23 +- .../ext/fatfs/doc/en/read.html | 3 +- .../ext/fatfs/doc/en/rename.html | 9 +- .../ext/fatfs/doc/en/sfatfs.html | 2 +- .../ext/fatfs/doc/en/sfileinfo.html | 2 +- .../ext/fatfs/doc/en/unlink.html | 2 +- .../ext/fatfs/doc/en/write.html | 3 +- .../ext/fatfs/doc/ja/appnote.html | 18 +- .../ext/fatfs/doc/ja/dinit.html | 2 +- .../ext/fatfs/doc/ja/dioctl.html | 2 +- .../ext/fatfs/doc/ja/dread.html | 2 +- .../ext/fatfs/doc/ja/dstat.html | 2 +- .../ext/fatfs/doc/ja/dwrite.html | 2 +- .../ext/fatfs/doc/ja/expand.html | 2 +- .../ext/fatfs/doc/ja/fattime.html | 2 +- .../ext/fatfs/doc/ja/fdisk.html | 6 +- .../ext/fatfs/doc/ja/findfirst.html | 5 +- .../ext/fatfs/doc/ja/forward.html | 2 +- .../ext/fatfs/doc/ja/mkdir.html | 2 +- .../ext/fatfs/doc/ja/mount.html | 4 +- .../ext/fatfs/doc/ja/open.html | 2 +- .../ext/fatfs/doc/ja/rc.html | 18 +- .../ext/fatfs/doc/ja/read.html | 2 +- .../ext/fatfs/doc/ja/rename.html | 2 +- .../ext/fatfs/doc/ja/sfatfs.html | 2 +- .../ext/fatfs/doc/ja/truncate.html | 2 +- .../ext/fatfs/doc/ja/unlink.html | 2 +- .../ext/fatfs/doc/ja/write.html | 2 +- .../ext/fatfs/doc/res/rwtest1.png | Bin 27860 -> 69114 bytes .../ext/fatfs/doc/updates.txt | 189 ++++++++++ .../ext/fatfs/src/00history.txt | 16 +- .../chibios-portapack/ext/fatfs/src/diskio.c | 2 +- firmware/chibios-portapack/ext/fatfs/src/ff.c | 337 +++++++++--------- firmware/chibios-portapack/ext/fatfs/src/ff.h | 6 +- 57 files changed, 532 insertions(+), 331 deletions(-) create mode 100644 firmware/chibios-portapack/ext/fatfs/doc/updates.txt diff --git a/firmware/application/ffconf.h b/firmware/application/ffconf.h index cfe0e8904..44242d376 100644 --- a/firmware/application/ffconf.h +++ b/firmware/application/ffconf.h @@ -5,7 +5,7 @@ / FatFs - FAT file system module configuration file /---------------------------------------------------------------------------*/ -#define _FFCONF 80186 /* Revision ID */ +#define _FFCONF 68020 /* Revision ID */ /*---------------------------------------------------------------------------/ / Function Configurations @@ -207,14 +207,14 @@ #define _FS_TINY 0 /* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) -/ At the tiny configuration, size of the file object (FIL) is reduced _MAX_SS bytes. +/ At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes. / Instead of private sector buffer eliminated from the file object, common sector / buffer in the file system object (FATFS) is used for the file data transfer. */ #define _FS_EXFAT 0 -/* This option switches support of exFAT file system in addition to the traditional -/ FAT file system. (0:Disable or 1:Enable) To enable exFAT, also LFN must be enabled. +/* This option switches support of exFAT file system. (0:Disable or 1:Enable) +/ When enable exFAT, also LFN needs to be enabled. (_USE_LFN >= 1) / Note that enabling exFAT discards C89 compatibility. */ @@ -262,7 +262,9 @@ / The _FS_TIMEOUT defines timeout period in unit of time tick. / The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, / SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be -/ included somewhere in the scope of ff.c. */ +/ included somewhere in the scope of ff.h. */ + +/* #include // O/S definitions */ /*--- End of configuration options ---*/ diff --git a/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html b/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html index 9427acbeb..905b7b8f5 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html @@ -121,7 +121,7 @@

Resources

The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for personal projects or commercial products without any restriction under your responsibility. For further information, refer to the application note.

    -
  • Read first: FatFs module application note
  • +
  • Read first: FatFs module application note July 10, 2016
  • Community: FatFs User Forum
  • FAT32 Specification by Microsoft↗ (The authorized document on FAT file system)
  • The basics of FAT file system [ja]
  • @@ -136,6 +136,6 @@
    -

    Latest Information

    +

    FatFs home page

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html b/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html index 3b881f530..51df31d55 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html @@ -120,7 +120,7 @@

    資料

    FatFsモジュールはフリー ソフトウェアとして教育・研究・開発用に公開しています。どのような利用目的(個人利用から商用まで)でも使用・改変・配布について一切の制限はありませんが、全て利用者の責任の下での利用とします。詳しくはアプリケーション ノートを参照してください。

      -
    • 最初に読め: FatFsモジュール アプリケーション ノート
    • +
    • 最初に読め: FatFsモジュール アプリケーション ノート 2016. 9. 4
    • コミュニティ: FatFsユーザ フォーラム
    • FATファイルシステム仕様 by Microsoft↗ (The reference document on FAT file system)
    • FATファイルシステム概要 (↑を読むためのガイド)
    • @@ -136,6 +136,6 @@
      -

      FatFs Home Page

      +

      FatFsホームページ

      diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html b/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html index 2344b3a60..5acfdeb35 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html @@ -37,17 +37,17 @@
    • ANSI C
      The FatFs module is a middleware written in ANSI C (C89). There is no platform dependence, so long as the compiler is in compliance with ANSI C.
    • Size of integer types
      -The FatFs module assumes that size of char/short/long are 8/16/32 bit and int is 16 or 32 bit. These correspondence are defined in integer.h. This will not be a problem on most compilers. When any conflict with existing definitions is occured, you must resolve it with care.
    • +The FatFs module assumes that size of char/short/long are 8/16/32 bit and int is 16 or 32 bit. These correspondence are defined in integer.h. This will not be a problem on most compilers. When a conflict with existing definitions is occured, you must resolve it with care.

    System organizations

    The dependency diagram shown below is a typical but not specific configuration of the embedded system with FatFs module.

    dependency diagram

    -

    (a) If a working disk module with FatFs API is provided, no additional function is needed. (b) To attach existing disk drivers with different API, glue functions are needed to translate the APIs between FatFs and the drivers.

    +

    (a) If a working disk module with FatFs disk interface is provided, nothing else will be needed. (b) To attach existing disk drivers with different interface, glue functions are needed to translate the interfaces between FatFs and the drivers.

    functional diagram

    -

    Which function is required?

    -

    You need to provide only low level disk I/O functions that required by FatFs module and nothing else. If a working disk module for the target system is already existing, you need to write only glue functions to attach it to the FatFs module. If not, you need to port any other disk module or write it from scratch. Most of defined functions are not that always required. For example, disk write function is not required at read-only configuration. Following table shows which function is required depends on the configuration options.

    +

    Required functions

    +

    You need to provide only low level disk I/O functions required by FatFs module and nothing else. If a working disk module for the target system is already existing, you need to write only glue functions to attach it to the FatFs module. If not, you need to port another disk module or write it from scratch. Most of defined functions are not that always required. For example, disk write function is not required at read-only configuration. Following table shows which function is required depends on the configuration options.

    @@ -81,21 +81,21 @@ The FatFs module assumes that size of char/short/long - - - - + + + +
    FunctionRequired whenNote
    disk_status
    disk_initialize
    disk_read
    AlwaysDisk I/O functions.
    Samples available in ffsample.zip.
    There are many implementations on the web.
    ARM7
    32bit
    ARM7
    Thumb
    CM3
    Thumb-2
    AVRH8/300HPIC24RL78V850ESSH-2ARX600IA-32
    CompilerGCCGCCGCCGCCCH38C30CC78K0RCA850SHCRXCMSC
    text (Full, R/W)10.1k6.6k6.2k12.1k10.5k11.2k12.6k8.5k8.7k6.3k8.4k
    text (Min, R/W) 6.6k4.5k4.2k 7.9k 7.0k 7.6k 8.8k5.9k5.8k4.3k5.8k
    text (Full, R/O) 4.8k3.1k2.9k 5.8k 5.1k 5.5k 6.4k4.1k4.0k3.1k4.0k
    text (Min, R/O) 3.5k2.4k2.3k 4.4k 3.9k 4.2k 5.0k3.3k3.1k2.4k3.1k
    text (Full, R/W)10.4k6.8k6.3k12.4k 9.8k11.1k12.8k8.6k8.9k6.4k8.5k
    text (Min, R/W) 6.8k4.6k4.3k 8.2k 6.7k 7.6k 9.1k6.0k5.9k4.5k5.9k
    text (Full, R/O) 4.8k3.1k2.8k 5.6k 4.6k 5.3k 6.3k4.0k3.9k3.0k3.9k
    text (Min, R/O) 3.6k2.4k2.3k 4.4k 3.5k 4.0k 4.9k3.3k3.0k2.4k3.1k
    bssV*4 + 2V*4 + 2V*4 + 2V*2 + 2V*4 + 2V*2 + 2V*2 + 2V*4 + 2V*4 + 2V*4 + 2V*4 + 2
    Work area
    (_FS_TINY == 0)
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    Work area
    (_FS_TINY == 1)
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40

    These are the memory usage on some target systems with following condition. The memory sizes are in unit of byte, V denotes option _VOLUMES and F denotes number of open files. All samples here are optimezed in code size.

    -FatFs R0.12 options:
    +FatFs R0.12b options:
     _FS_READONLY   0 (R/W) or 1 (R/O)
     _FS_MINIMIZE   0 (Full, with all basic functions) or 3 (Min, with fully minimized)
     _FS_TINY       0 (Default) or 1 (Tiny file object)
    -And any other options are left unchanged from original setting.
    +And other options are left unchanged from original setting.
     
    @@ -160,22 +160,22 @@ And any other options are left unchanged from original setting.

    Unicode API

    -

    By default, FatFs uses ANSI/OEM code set on the API even at LFN configuration. FatFs can also switch the character encoding on the API to Unicode by configuration option _LFN_UNICODE. This means that FatFs supports the full featured LFN specification. The data type TCHAR specifies any string on the API is an alias of char(ANSI) or WCHAR(UTF-16). For more information, refer to the description in the file name.

    +

    By default, FatFs uses ANSI/OEM code set on the API even at LFN configuration. FatFs can also switch the character encoding on the API to Unicode by configuration option _LFN_UNICODE. This means that FatFs supports the full featured LFN specification. The data type TCHAR specifies strings on the API is an alias of char(ANSI/OEM) or WCHAR(UTF-16). For more information, refer to the description in the file name.

    exFAT File System

    The exFAT (Microsoft's Extended File Allocation Table) file system is a replacement of the FAT file system which has been widely used in the embedded systems and consumer devices. It is adopted by SDA (SD Association) as a recommended file system for high capacity SD cards (>32GB) and they are being shipped with this format, so that the exFAT will soon become one of the standard file systems for removable media.

    The exFAT file system allows the file size larger than 4 GiB limit what FAT file system allows upto and some file system overhead, especially file allocation delay, are reduced as well. This feature improves the write throughput to the file. However a problem on the current implementation of FatFs is that write throughput at writing to the growing edge of the fragmented file gets less than the throughput on the FAT volume. Pre-allocating a contiguous block with f_expand function may be a workaround of this problem.

    -

    Note that the exFAT is a patent of Microsoft Corporation. The exFAT function of FatFs is an implementation based on US. Pat. App. Pub. No. 2009/0164440 A1. FatFs module can swich the exFAT on or off by configuration option. When enable the exFAT on the commercial products, you will need to be licensed by Microsoft depends on the final destination of the products.

    +

    Note that the exFAT is a patent of Microsoft Corporation. The exFAT function of FatFs is an implementation based on US. Pat. App. Pub. No. 2009/0164440 A1. FatFs module can swich the exFAT on/off by configuration option. When enable the exFAT on the commercial products, you will need to be licensed by Microsoft depends on the final destination of the products.

    Remark: Enabling exFAT discards C89 compatibility because of need for 64-bit integer type.

    Re-entrancy

    The file operations to the different volume is always re-entrant regardless of configurations except when LFN enabled with static working buffer. It can work simultaneously without any mutual exclusion.

    The file operations to the same volume is not re-entrant but it can also be configured thread-safe by option _FS_REENTRANT. It enables to control exclusive use of each file system object. In this case, also the OS dependent synchronization object control functions, ff_cre_syncobj/ff_del_syncobj/ff_req_grant/ff_rel_grant, needed to be added to the project. There are some examples in the option/syscall.c.

    -

    When a file function is called while the volume is being accessed by any other task, the file function to the volume will be suspended until that task leaves the file function. If the wait time exceeded a period defined by _TIMEOUT, the file function will abort with FR_TIMEOUT. The timeout function might not be supported on the some RTOSs.

    -

    There is an exception on the re-entrancy for f_mount/f_mkfs/f_fdisk function. These volume management functions are not re-entrant to the same volume and corresponding physical drive. When use these functions, any other tasks need to avoid to access the volume.

    +

    When a file function is called while the volume is being accessed by other task, the file function to the volume will be suspended until that task leaves the file function. If the wait time exceeded a period defined by _TIMEOUT, the file function will abort with FR_TIMEOUT. The timeout function might not be supported on the some RTOSs.

    +

    There is an exception on the re-entrancy for f_mount/f_mkfs/f_fdisk function. These volume management functions are not re-entrant to the same volume and corresponding physical drive. When use these functions, other tasks need to avoid to access the volume.

    Note that this section describes on the re-entrancy of the FatFs module itself. The _FS_REENTRANT controls only exclusive use of each file system object and it does not that prevent to re-enter the low level disk functions. For example, only disk_status function can be re-entered at single volume system and any disk function can be re-entered at multiple volume system. Thus the low level disk I/O layer must be always thread-safe when any FatFs API is re-entered by two or more tasks.

    @@ -218,7 +218,7 @@ Figure 6. Comparison between Multiple/Single Sector Write

    Critical Section

    -

    If a write operation to the FAT volume is interrupted due to any accidental failure, such as sudden blackout, incorrect media removal and unrecoverable disk error, the FAT structure on the volume can be broken. Following images shows the critical section of the FatFs module.

    +

    If a write operation to the FAT volume is interrupted due to an accidental failure, such as sudden blackout, incorrect media removal and unrecoverable disk error, the FAT structure on the volume can be broken. Following images shows the critical section of the FatFs module.

    Figure 4. Long critical section
    fig.4 @@ -236,17 +236,17 @@ Figure 5. Minimized critical section
  • The file created as new or overwritten remains but no content.
  • Efficiency of disk use gets worse due to lost clusters.
-

Each case does not affect the files that not opened in write mode. To minimize risk of data loss, the critical section can be minimized by minimizing the time that file is opened in write mode or using f_sync function as shown in Figure 5.

+

Each case does not affect any file not opened in write mode. To minimize risk of data loss, the critical section can be minimized by minimizing the time that file is opened in write mode or using f_sync function as shown in Figure 5.

Extended Use of FatFs API

These are examples of extended use of FatFs APIs. New item will be added whenever a useful code is found.

    -
  1. Open or create a file for append (for R0.12 and older)
  2. +
  3. Open or create a file for append (for only R0.12 and earlier)
  4. Empty a directory
  5. -
  6. Allocate contiguous area to the file (for R0.11a and older)
  7. -
  8. Function/compatibility checker for low level disk I/O module
  9. +
  10. Allocate contiguous area to the file (for only R0.11a and earlier)
  11. +
  12. Compatibility checker for low level disk I/O module
  13. FAT image creator
@@ -256,15 +256,15 @@ Figure 5. Minimized critical section

FatFs has being developped as a personal project of the author, ChaN. It is free from the code anyone else wrote at current release. Following code block shows a copy of the FatFs license document that included in the source files.

 /*----------------------------------------------------------------------------/
-/  FatFs - Generic FAT file system module  R0.12a                             /
+/  FatFs - Generic FAT file system module  Rx.xx                              /
 /-----------------------------------------------------------------------------/
 /
-/ Copyright (C) 2016, ChaN, all right reserved.
+/ Copyright (C) 20xx, ChaN, all right reserved.
 /
 / FatFs module is an open source software. Redistribution and use of FatFs in
 / source and binary forms, with or without modification, are permitted provided
 / that the following condition is met:
-
+/
 / 1. Redistributions of source code must retain the above copyright notice,
 /    this condition and the following disclaimer.
 /
diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/chdir.html b/firmware/chibios-portapack/ext/fatfs/doc/en/chdir.html
index b9009fc5c..41935fc96 100644
--- a/firmware/chibios-portapack/ext/fatfs/doc/en/chdir.html
+++ b/firmware/chibios-portapack/ext/fatfs/doc/en/chdir.html
@@ -25,7 +25,7 @@ FRESULT f_chdir (
 

Parameters

path
-
Pointer to the null-terminated string that specifies a directory to go.
+
Pointer to the null-terminated string that specifies the directory to go.
@@ -50,7 +50,7 @@ FRESULT f_chdir (

Description

-

The f_chdir function changes the current directory of the logical drive. The current directory of a drive is initialized to the root directory when the drive is auto-mounted. Note that the current directory is retained in the each file system object so that it also affects other tasks that using the volume.

+

The f_chdir function changes the current directory of the logical drive. The current directory of a drive is set to the root directory when the drive is mounted. Note that the current directory is retained in the each file system object, so that it also affects other tasks that use the volume.

@@ -63,10 +63,10 @@ FRESULT f_chdir (

Example

-    /* Change current direcoty of the current drive (dir1 under root dir) */
+    /* Change current direcoty of the current drive ('dir1' under root directory) */
     f_chdir("/dir1");
 
-    /* Change current direcoty of drive 2 (parent dir) */
+    /* Change current direcoty of drive 2 (parent directory) */
     f_chdir("2:..");
 
diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/config.html b/firmware/chibios-portapack/ext/fatfs/doc/en/config.html index 880c32500..5ee685feb 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/config.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/config.html @@ -45,16 +45,16 @@

Disable (0) or Enable (1) f_mkfs function.

_USE_FASTSEEK

-

Disable (0) or Enable (1) fast seek function to enable accelerated mode of f_lseek, f_read and f_write function. For more information, read here.

+

Disable (0) or Enable (1) fast seek function to enable accelerated mode for f_lseek, f_read and f_write function. For more information, read here.

_USE_EXPAND

Disable (0) or Enable (1) , f_enpand function. Also _FS_READONLY needs to be 0.

_USE_CHMOD

-

Disable (0) or Enable (1) metadata manipulation functions, f_chmod and f_utime. Also _FS_READONLY needs to be 0.

+

Disable (0) or Enable (1) metadata control functions, f_chmod and f_utime. Also _FS_READONLY needs to be 0.

_USE_LABEL

-

Disable (0) or Enable (1) volume label functions, f_getlabel and f_setlabel.

+

Disable (0) or Enable (1) API functions for volume label, f_getlabel and f_setlabel.

_USE_FORWARD

Disable (0) or Enable (1) f_forward function.

@@ -147,7 +147,7 @@

Disable (0) or Enable (1). This option switches multi-partition function. By default (0), each logical drive number is bound to the same physical drive number and only an FAT volume in the physical drive is mounted. When enabled, each logical drive is bound to the partition on the physical drive listed in the user defined partition resolution table VolToPart[]. Also f_fdisk funciton will be available. For more information, read here.

_MIN_SS, _MAX_SS

-

This set of options defines the size of sector on low level disk I/O interface, disk_read and disk_write function. Valid values are 512, 1024, 2048 and 4096. _MIN_SS defines minimum sector size and _MAX_SS defines the maximum sector size. Always set both 512 for any type of memory card and harddisk. But a larger value may be required for on-board flash memory and some type of optical media. When _MAX_SS > _MIN_SS, FatFs is configured to variable sector size and GET_SECTOR_SIZE command must be implemented to the disk_ioctl function.

+

This set of options defines the size of sector on low level disk I/O interface, disk_read and disk_write function. Valid values are 512, 1024, 2048 and 4096. _MIN_SS defines minimum sector size and _MAX_SS defines the maximum sector size. Always set both 512 for memory card and harddisk. But a larger value may be required for on-board flash memory and some type of optical media. When _MAX_SS > _MIN_SS, support of variable sector size is enabled and GET_SECTOR_SIZE command needs to be implemented to the disk_ioctl function.

_USE_TRIM

Disable (0) or Enable (1). This option switches ATA-TRIM function. To enable Trim function, also CTRL_TRIM command should be implemented to the disk_ioctl function.

@@ -175,7 +175,7 @@

This option switches support for the exFAT file system in addition to the FAT file system, Enabled(1) or Disabled(1). To enable this feature, also LFN must be enabled and configureing _LFN_UNICODE = 1 and _MAX_LFN = 255 is recommended for full-featured exFAT function. Note that enabling exFAT discards C89 compatibility because of need for 64-bit integer type.

_FS_NORTC

-

Use RTC (0) or Do not use RTC (1). This option controls timestamp function. If the system does not have an RTC function or valid timestamp is not needed, set _FS_NORTC to 1 to disable the timestamp function. Any object modified by FatFs will have a fixed timestamp value defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR. To use the timestamp function, set _FS_NORTC = 0 and add get_fattime function to the project to get the current time form real-time clock. This option has no effect at read-only configuration.

+

Use RTC (0) or Do not use RTC (1). This option controls timestamp function. If the system does not have an RTC function or valid timestamp is not needed, set _FS_NORTC to 1 to disable the timestamp function. Any object modified by FatFs will have a fixed timestamp defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR. To use the timestamp function, set _FS_NORTC = 0 and add get_fattime function to the project to get the current time form real-time clock. This option has no effect at read-only configuration.

_NORTC_MON, _NORTC_MDAY, _NORTC_YEAR

This set of options defines the time to be used at no RTC systems. This option has no effect at read-only configuration or _FS_NORTC = 0.

@@ -184,12 +184,12 @@

This option switches file lock function to control duplicated file open and illegal operations to open objects. Note that the file lock function is independent of re-entrancy. This option must be 0 at read-only configuration.

- - + +
ValueDescription
0Disable file lock function. To avoid volume corruption, application program should avoid illegal open, remove and rename to the open objects.
>0Enable file lock function. The value defines how many files/sub-directories can be opened simultaneously under file lock control. Illigal operations to the open object will be rejected with FR_LOCKED.
0Disable file lock function. To avoid collapsing file by wrong file operation, application program needs to avoid illegal open, remove and rename to the open objects.
>0Enable file lock function. The value defines how many files/sub-directories can be opened simultaneously under the file lock control. Illigal operations to the open object will be rejected with FR_LOCKED.

_FS_REENTRANT

-

Disable (0) or Enable (1). This option switches the re-entrancy (thread safe) of the FatFs module itself. Note that file/directory access to the different volume is always re-entrant and it can work simultaneously regardless of this option but volume control functions, f_mount, f_mkfs and f_fdisk, are always not re-entrant. Only file/directory access to the same volume, in other words, exclusive use of each file system object, is under control of this function. To enable this feature, also user provided synchronization handlers, ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj, need to be added to the project. Sample code is available in option/syscall.c.

+

Disable (0) or Enable (1). This option switches the re-entrancy (thread safe) of the FatFs module itself. Note that file/directory access to the different volume is always re-entrant and it can work simultaneously regardless of this option but volume control functions. f_mount, f_mkfs and f_fdisk, are always not re-entrant. Only file/directory access to the same volume, in other words, exclusive use of each file system object, is under control of this function. To enable this feature, also user provided synchronization handlers, ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj, need to be added to the project. Sample code is available in option/syscall.c.

_FS_TIMEOUT

Number of time ticks to abort the file function with FR_TIMEOUT when wait time is too long. This option has no effect when _FS_REENTRANT = 0.

diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dinit.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dinit.html index 4a003e70c..81b0ffd06 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dinit.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dinit.html @@ -13,7 +13,7 @@

disk_initialize

-

The disk_initialize function initializes the storage device.

+

The disk_initialize function is called to initializes the storage device.

 DSTATUS disk_initialize (
   BYTE pdrv           /* [IN] Physical drive number */
diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dioctl.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dioctl.html
index 7c692511c..9a724915b 100644
--- a/firmware/chibios-portapack/ext/fatfs/doc/en/dioctl.html
+++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dioctl.html
@@ -13,7 +13,7 @@
 
 

disk_ioctl

-

The disk_ioctl function controls device specific features and miscellaneous functions other than generic read/write.

+

The disk_ioctl function is called to control device specific features and miscellaneous functions other than generic read/write.

 DRESULT disk_ioctl (
   BYTE pdrv,     /* [IN] Drive number */
@@ -59,9 +59,9 @@ DRESULT disk_ioctl (
 CommandDescription
 CTRL_SYNCMake sure that the device has finished pending write process. If the disk I/O module has a write back cache, the dirty buffers must be written back to the media immediately. Nothing to do for this command if each write operation to the media is completed within the disk_write function.
 GET_SECTOR_COUNTReturns number of available sectors on the drive into the DWORD variable pointed by buff. This command is used by only f_mkfs and f_fdisk function to determine the volume/partition size to be created. Required at _USE_MKFS == 1 or _MULTI_PARTITION == 1.
-GET_SECTOR_SIZEReturns sector size of the media into the WORD variable pointed by buff. Valid return values of this command are 512, 1024, 2048 and 4096. This command is required only at variable sector size configuration, _MAX_SS > _MIN_SS. At fixed sector size configuration, _MAX_SS == _MIN_SS, this command is not used and the device must work at that sector size.
-GET_BLOCK_SIZEReturns erase block size of the flash memory media in unit of sector into the DWORD variable pointed by buff. The allowable value is from 1 to 32768 in power of 2. Return 1 if the erase block size is unknown or non flash memory media. This command is used by only f_mkfs function and it attempts to align data area to the erase block boundary. Required at _USE_MKFS == 1.
-CTRL_TRIMInforms the device the data on the block of sectors that specified by DWORD array {<start sector>, <end sector>} pointed by buff is no longer needed and it may be erased. This is an identical command to Trim of ATA device. Nothing to do for this command if this funcion is not supported or not a flash memory device. The FatFs does not check the result code and the file function is not affected even if the sector block was not erased well. This command is called on remove a cluster chain and in the f_mkfs function. Required at _USE_TRIM == 1.
+GET_SECTOR_SIZEReturns sector size of the device into the WORD variable pointed by buff. Valid return values of this command are 512, 1024, 2048 and 4096. This command is required only at variable sector size configuration, _MAX_SS > _MIN_SS. At the fixed sector size configuration, _MAX_SS == _MIN_SS, this command is not used and the device must work at that sector size.
+GET_BLOCK_SIZEReturns erase block size of the flash memory media in unit of sector into the DWORD variable pointed by buff. The allowable value is from 1 to 32768 in power of 2. Return 1 if the erase block size is unknown or non flash memory media. This command is used by only f_mkfs function and it attempts to align data area on the erase block boundary. Required at _USE_MKFS == 1.
+CTRL_TRIMInforms the device the data on the block of sectors is no longer needed and it can be erased. The sector block is specified by DWORD array {<start sector>, <end sector>} pointed by buff. This is an identical command to Trim of ATA device. Nothing to do for this command if this funcion is not supported or not a flash memory device. The FatFs does not check the result code and the file function is not affected even if the sector block was not erased well. This command is called on remove a cluster chain and in the f_mkfs function. Required at _USE_TRIM == 1.
 
 
 

FatFs never uses any device dependent command nor user defined command. Following table shows an example of non-standard commands usable for some applications.

@@ -69,8 +69,8 @@ DRESULT disk_ioctl ( Example of optional ioctl command CommandDescription CTRL_FORMATCreate a physical format on the media. If buff is not null, it is pointer to the call-back function for progress notification. -CTRL_POWER_IDLEPut the device idle state. STA_NOINIT in status flag may not be set if the device goes active state by generic read/write function. -CTRL_POWER_OFFPut the device off state. Shut-down the power to the device and deinitialize the device interface if needed. STA_NOINIT in status flag must be set. The device goes active state by disk_initialize function. +CTRL_POWER_IDLEPut the device idle state. STA_NOINIT in the current status flags may not be set if the device goes active state by generic read/write function. +CTRL_POWER_OFFPut the device off state. Shut-down the power to the device and deinitialize the device interface if needed. STA_NOINIT in the current status flags must be set. The device goes active state by disk_initialize function. CTRL_LOCKLock media eject mechanism. CTRL_UNLOCKUnlock media eject mechanism. CTRL_EJECTEject media cartridge. STA_NOINIT and STA_NODISK in status flag are set after the function succeeded. diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html index 14227de64..b7674a16f 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html @@ -13,7 +13,7 @@

disk_read

-

The disk_read function reads sector(s) from the storage device.

+

The disk_read function is called to read data from the sector(s) of storage device.

 DRESULT disk_read (
   BYTE pdrv,     /* [IN] Physical drive number */
@@ -30,7 +30,7 @@ DRESULT disk_read (
 
pdrv
Physical drive number to identify the target device.
buff
-
Pointer to the byte array to store the read data.
+
Pointer to the first item of the byte array to store read data.
sector
Start sector number in 32-bit LBA.
count
@@ -45,7 +45,7 @@ DRESULT disk_read (
RES_OK (0)
The function succeeded.
RES_ERROR
-
Any hard error occured during the read operation and could not recover it.
+
A hard error occured during the read operation and could not recover it.
RES_PARERR
Invalid parameter.
RES_NOTRDY
@@ -61,7 +61,7 @@ DRESULT disk_read (
  • Convert word transfer to byte transfer in this function if needed. - Recommended.
  • On the f_read calls, avoid long read request that includes a whole of sector. - Any direct transfer never occures.
  • -
  • On the f_read calls, make sure that (((UINT)data & 3) == (f_tell(fp) & 3)) is true. - Word alignment of buff is guaranteed.
  • +
  • On the f_read calls, make sure that (((UINT)data & 3) == (f_tell(fp) & 3)) is true. - Word alignment of buff is guaranteed.

Generally, a multiple sector transfer request must not be split into single sector transactions to the storage device, or you will not get good read throughput.

diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html index 075146092..78508ba80 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html @@ -13,7 +13,7 @@

disk_status

-

The disk_status function returns the current drive status.

+

The disk_status function is called to inquire the current drive status.

 DSTATUS disk_status (
   BYTE pdrv     /* [IN] Physical drive number */
diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html
index 4ee6d09aa..b99eccdc5 100644
--- a/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html
+++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html
@@ -13,7 +13,7 @@
 
 

disk_write

-

The disk_write writes sector(s) to the storage device.

+

The disk_write function is called to write data to the sector(s) of storage device.

 DRESULT disk_write (
   BYTE drv,         /* [IN] Physical drive number */
@@ -30,7 +30,7 @@ DRESULT disk_write (
 
pdrv
Physical drive number to identify the target device.
buff
-
Pointer to the byte array to be written. The size of data to be written is sector size * count bytes.
+
Pointer to the first item of the byte array to be written. The size of data to be written is sector size * count bytes.
sector
Start sector number in 32-bit LBA.
count
@@ -45,7 +45,7 @@ DRESULT disk_write (
RES_OK (0)
The function succeeded.
RES_ERROR
-
Any hard error occured during the write operation and could not recover it.
+
A hard error occured during the write operation and could not recover it.
RES_WRPRT
The medium is write protected.
RES_PARERR
diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html b/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html index 434580cfa..54f21d1b7 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html @@ -59,9 +59,9 @@ FRESULT f_expand (
  • The file has been opened in read-only mode.
  • Not allowable file size. (>= 4GiB on FAT volume)
  • -

    When opt is 0, the function finds a contiguous data area and set it as suggested point for next allocation instead of allocating it to the file. The next cluster allocation is started at top of the contiguous area found by this function. Thus the write file is guaranteed be contiguous and no allocation delay until the size reaches that size at least unless any other operation to the volume with changes of FAT is performed.

    -

    The contiguous file would have an advantage at time-critical read/write operations. It reduces some overheads in the file system and the storage media caused by random access due to fragmented file data. Especially, at the exFAT volume, any FAT access for the contiguous file is completely eliminated and storage media will be accessed sequentially.

    -

    Also the contiguous file data can be easily accessed directly via low-level disk functions but it is not recommended in consideration for future compatibility.

    +

    When opt is 0, the function finds a contiguous data area and set it as suggested point for next allocation instead of allocating it to the file. The next cluster allocation is started at top of the contiguous area found by this function. Thus the write file is guaranteed be contiguous and no allocation delay until the size reaches that size at least unless any other changes to the volume is performed.

    +

    The contiguous file would have an advantage at time-critical read/write operations. It reduces some overheads in the file system and the storage media caused by random access due to fragmented file data. Especially FAT access for the contiguous file on the exFAT volume is completely eliminated and storage media will be accessed sequentially.

    +

    Also the contiguous file data can be easily accessed directly via low-level disk functions. But this is not recommended in consideration for future compatibility.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/fattime.html b/firmware/chibios-portapack/ext/fatfs/doc/en/fattime.html index e4ff768b0..f2d8982c7 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/fattime.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/fattime.html @@ -13,7 +13,7 @@

    get_fattime

    -

    The get_fattime function gets current time.

    +

    The get_fattime function is called to get the current time.

     DWORD get_fattime (void);
     
    @@ -22,7 +22,7 @@ DWORD get_fattime (void);

    Return Value

    -

    Currnet local time is returned with packed into a DWORD value. The bit field is as follows:

    +

    Currnet local time shall be returned as bit-fields packed into a DWORD value. The bit fields are as follows:

    bit31:25
    Year origin from the 1980 (0..127)
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html b/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html index 6581d87cf..8414f919a 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html @@ -74,10 +74,10 @@ FRESULT f_fdisk ( DWORD plist[] = {50, 50, 0, 0}; /* Divide drive into two partitions */ BYTE work[_MAX_SS]; - f_fdisk(0, plist, work); /* Divide physical drive 0 */ + f_fdisk(0, plist, work); /* Divide physical drive 0 */ - f_mkfs("0:", FMT_ANY, work, sizeof work); /* Create FAT volume on the logical drive 0 */ - f_mkfs("1:", FMT_ANY, work, sizeof work); /* Create FAT volume on the logical drive 1 */ + f_mkfs("0:", FM_ANY, work, sizeof work); /* Create FAT volume on the logical drive 0 */ + f_mkfs("1:", FM_ANY, work, sizeof work); /* Create FAT volume on the logical drive 1 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/filename.html b/firmware/chibios-portapack/ext/fatfs/doc/en/filename.html index 23e6c49cb..25dc86cd5 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/filename.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/filename.html @@ -10,7 +10,7 @@ -

    Path Names

    +

    Path Names on the FatFs

    Format of the path names

    @@ -19,7 +19,7 @@

    The FatFs module supports long file name (LFN) and 8.3 format file name (SFN). The LFN can be used when (_USE_LFN != 0). The sub directories are separated with a \ or / in the same way as DOS/Windows API. Duplicated separators are skipped and ignored. Only a difference is that the logical drive is specified in a numeral with a colon. When drive number is omitted, the drive number is assumed as default drive (drive 0 or current drive).

    Control characters ('\0' to '\x1F') are recognized as end of the path name. Leading/embedded spaces in the path name are valid as a part of the name at LFN configuration but the space is recognized as end of the path name at non-LFN configuration. Trailing spaces and dots are ignored at both configurations.

    In default configuration (_FS_RPATH == 0), it does not have a concept of current directory like OS oriented file system. All objects on the volume are always specified in full path name that follows from the root directory. Dot directory names (".", "..") are not allowed. Heading separator is ignored and it can be exist or omitted. The default drive is fixed to drive 0.

    -

    When relative path is enabled (_FS_RPATH >= 1), specified path is followed from the root directory if a heading separator is exist. If not, it is followed from the current directory of the drive set by f_chdir function. Dot names are also allowed for the path names. The default drive is the current drive set by f_chdrive function.

    +

    When relative path is enabled (_FS_RPATH >= 1), specified path is followed from the root directory if a heading separator is exist. If not, it is followed from the current directory of the drive set by f_chdir function. Dot names are also allowed for the path names. The default drive is the current drive set by f_chdrive function.

    @@ -36,12 +36,12 @@
    Path name_FS_RPATH == 0_FS_RPATH >= 1
    file.txtA file in the root directory of the drive 0A file in the current directory of the current drive
    /..Invalid nameThe root directory (sticks the top level)

    When option _STR_VOLUME_ID is specified, also pre-defined strings can be used as drive identifier in the path name instead of a numeral. e.g. "sd:file1.txt", "ram:swapfile.dat" and DOS/Windows style drive letter, of course.

    -

    Remark: In this revision, R0.12, double dot name ".." cannot follow the parent directory on the exFAT volume. It will work as "." and stay there.

    +

    Remark: In this revision, double dot name ".." cannot follow the parent directory on the exFAT volume. It will work as "." and stay there.

    Legal Characters and Case Sensitivity

    -

    On the FAT file system, legal characters for file name are, 0-9 A-Z ! # $ % & ' ( ) - @ ^ _ ` { } ~ and extended characters (\x80-\xFF). Under LFN supported system, also white space and + , ; = [ ] are legal for the file name and the white spaces and periods can be placed anywhere in the name except for end of the name string.

    +

    On the FAT file system, legal characters for object name (file/directory name) are, 0-9 A-Z ! # $ % & ' ( ) - @ ^ _ ` { } ~ and extended characters (\x80-\xFF). Under LFN supported system, also + , ; = [ ] and space are legal for the object name and the white spaces and periods can be placed anywhere in the path name except for end of the object name.

    FAT file system is case-insensitive to the object names on the volume. All object names are compared in case-insensitive. For example, these three names, file.txt, File.Txt and FILE.TXT, are identical. This is applied to also extended charactres. When an object is created on the FAT volume, upper converted name is recorded to the SFN entry, and the raw name is recorded to the LFN entry.

    As for the DBCS language MS-DOS, it was case-sensitive to the extended characters. To follow this specification, FatFs works with case-sensitive to the extended characters at only non-LFN with DBCS configuration (DOS/DBCS specs). But at LFN configuration, FatFs works with case-insensitive to all characters (WindowsNT specs). This can cause a problem on compatibility with Windows system when an object with extended characters is created on the volume at non-LFN and DBCS configuration; therfore the object names with DBCS extended characters should not be used on the FAT volume shared by those systems.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/findfirst.html b/firmware/chibios-portapack/ext/fatfs/doc/en/findfirst.html index 5b4b1fbc1..970055dfd 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/findfirst.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/findfirst.html @@ -61,11 +61,11 @@ FRESULT f_findfirst (

    Description

    -

    After the directory specified by path could be opened, it starts to search the directory for the items with a name specified by pattern. If found, the information about the object is stored into the file information structure. For more information about file information structure, refer to f_readdir function.

    +

    After the directory specified by path could be opened, it starts to search the directory for items with the name specified by pattern. If the first item is found, the information about the object is stored into the file information structure. For more information about file information structure, refer to f_readdir function.

    The matching pattern can contain wildcard characters (? and *). A ? matches an any character and an * matches an any string in length of zero or longer. When support of long file name is enabled, only fname[] is tested at _USE_FIND == 1 and also altname[] is tested at _USE_FIND == 2. In this revision, there are some differences listed below between FatFs and standard systems in matching condition.

      -
    • "*.*" never matches any name without extension while it matches any names at the standard systems.
    • -
    • Any patterns terminated with a period never matches any name while it matches any names without extensiton at the standard systems.
    • +
    • "*.*" never matches any name without extension while it matches any name with or without extension at the standard systems.
    • +
    • Any pattern terminated with a period never matches any name while it matches any name without extensiton at the standard systems.
    • DBCS extended characters are compared in case-sensitive at LFN with non-Unicode configuration.
    @@ -82,7 +82,7 @@ FRESULT f_findfirst (
     /* Search a directory for objects and display it */
     
    -void find_image (void)
    +void find_image_file (void)
     {
         FRESULT fr;     /* Return value */
         DIR dj;         /* Directory search object */
    @@ -94,6 +94,7 @@ void find_image (void)
             printf("%s\n", fno.fname);                /* Display the object name */
             fr = f_findnext(&dj, &fno);               /* Search for next item */
         }
    +
         f_closedir(&dj);
     }
     
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/forward.html b/firmware/chibios-portapack/ext/fatfs/doc/en/forward.html index eddb051f8..b16a07588 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/forward.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/forward.html @@ -46,6 +46,7 @@ FRESULT f_forward ( FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, +FR_DENIED, FR_TIMEOUT

    @@ -114,7 +115,7 @@ FRESULT play_file ( /* Repeat until the file pointer reaches end of the file */ while (rc == FR_OK && !f_eof(&fil)) { - /* any other processes... */ + /* some processes... */ /* Fill output stream periodicaly or on-demand */ rc = f_forward(&fil, out_stream, 1000, &dmy); diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/getcwd.html b/firmware/chibios-portapack/ext/fatfs/doc/en/getcwd.html index c30aa650d..52a7f3f89 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/getcwd.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/getcwd.html @@ -51,7 +51,7 @@ FRESULT f_getcwd (

    Description

    The f_getcwd function retrieves full path name of the current directory of the current drive. When _VOLUMES is larger than 1, a logical drive number is added to top of the path name.

    -

    Note: In this revision, R0.12, this function cannot retrieve the current directory path on the exFAT volume. It always returns the root directory path.

    +

    Note: In this revision, this function cannot retrieve the current directory path on the exFAT volume. It always returns the root directory path.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/mkdir.html b/firmware/chibios-portapack/ext/fatfs/doc/en/mkdir.html index 970627c96..7417eacc2 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/mkdir.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/mkdir.html @@ -39,7 +39,7 @@ FRESULT f_mkdir ( FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html b/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html index 52f5c3cb3..180ffdf80 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html @@ -29,13 +29,13 @@ FRESULT f_mkfs (

    Parameters

    path
    -
    Pointer to the null-terminated string specifies the logical drive to be formatted. If there is no drive number in it, it means the default drive. The logical drive does not need to be mounted.
    +
    Pointer to the null-terminated string specifies the logical drive to be formatted. If there is no drive number in it, it means the default drive. The logical drive may or may not be mounted for the format process.
    opt
    Specifies the format option in combination of FM_FAT, FM_FAT32, FM_EXFAT and bitwise-or of these three, FM_ANY. FM_EXFAT is ignored when exFAT is not enabled. These flags specify which FAT type to be created on the volume. If two or more types are specified, one out of them will be selected depends on the volume size. The flag FM_SFD specifies to place the volume on the drive in SFD format.
    au
    -
    Specifies size of the allocation unit (cluter) in unit of byte. The valid value is N times the sector size. N is power of 2 from 1 to 128 for FAT volume and upto 16MiB for exFAT volume. If zero is given, the default allocation unit size is selected depends on the volume size.
    +
    Specifies size of the allocation unit (cluter) in unit of byte. The valid value is n times the sector size. The n is power of 2 from 1 to 128 for FAT volume and upto 16MiB for exFAT volume. If zero is given, the default allocation unit size is selected depends on the volume size.
    work
    -
    Pointer to the working buffer for the format process.
    +
    Pointer to the working buffer used for the format process.
    len
    Size of the working buffer in unit of byte. It needs to be the sector size at least. Plenty of working buffer reduces number of write transaction to the device and the format process will be finished quickly.
    @@ -78,7 +78,7 @@ int main (void) FIL fil; /* File object */ FRESULT res; /* API result code */ UINT bw; /* Bytes written */ - BYTE work[_MAX_SS]; /* Work area (larger is better for process time) */ + BYTE work[_MAX_SS]; /* Work area (larger is better for processing time) */ /* Create FAT volume */ diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/mount.html b/firmware/chibios-portapack/ext/fatfs/doc/en/mount.html index f71763272..0999b9c0c 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/mount.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/mount.html @@ -31,7 +31,7 @@ FRESULT f_mount (
    path
    Pointer to the null-terminated string that specifies the logical drive. The string without drive number means the default drive.
    opt
    -
    Initialization option. 0: Do not mount now (to be mounted later), 1: Force mounted the volume to check if the volume is ready to work.
    +
    Mounting option. 0: Do not mount now (to be mounted on the first access to the volume), 1: Force mounted the volume to check if it is ready to work.
    @@ -54,15 +54,15 @@ FRESULT f_mount (
  • Determines the logical drive which specified by path.
  • Clears and unregisters the regsitered work area of the drive if exist.
  • Clears and registers the new work area to the drive if fs is not NULL.
  • -
  • Performs volume mount process to the drive if forced mount is specified.
  • +
  • Performs volume mount process to the drive if forced mounting is specified.
  • -

    The file system object is the work area needed for each logical drive. It must be given to the logical drive with this function prior to use any other file functions except for f_fdisk function to the logical drive. To unregister the work area, specify a NULL to the fs, and then the work area can be discarded.

    -

    If forced mounting is not specified, this function always succeeds regardless of the physical drive status due to delayed mount feature. It only clears (de-initializes) the given work area and registers its address to the internal table. There is no activity of the physical drive in this function. It can also be used to force de-initialized the registered work area of a logical drive. The volume mount processes, initialize the corresponding physical drive, find the FAT volume in it and initialize the work area, is performed in the subsequent file access functions when either or both of following condition is true.

    +

    The file system object is the work area needed for each logical drive. It must be given to the logical drive with this function prior to use any API functions except for f_mkfs/f_fdisk function to the logical drive.

    +

    If forced mounting is not specified (opt = 0), this function always succeeds regardless of the physical drive status. It only clears (de-initializes) the given work area and registers its address to the internal table and no activity of the physical drive in this function. To unregister the work area, specify a NULL to the fs, and then the work area can be discarded. The volume mount processes, initialize the corresponding physical drive, find the FAT volume in it and initialize the work area, is performed in the subsequent file access functions when either or both of following condition is true.

      -
    • File system object is not initialized. It is de-initialized by f_mount function.
    • +
    • File system object has not been initialized. It is de-initialized by f_mount function.
    • Physical drive is not initialized. It is de-initialized by system reset or media removal.
    -

    If the function with forced mounting failed, it means that the file system object has been registered successfully but the volume is currently not ready to work. The volume mount process will also be attempted at subsequent file access functions.

    +

    If the function with forced mounting (opt = 1) failed, it means that the file system object has been registered successfully but the volume is currently not ready to work. The volume mount process will be attempted at subsequent file access functions if the file system object is not initialized. (delayed mounting)

    If implementation of the disk I/O layer lacks media change detection, application program needs to perform a f_mount function after each media change to force cleared the file system object.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/open.html b/firmware/chibios-portapack/ext/fatfs/doc/en/open.html index 475b5944a..de218e124 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/open.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/open.html @@ -40,7 +40,7 @@ FRESULT f_open ( FA_CREATE_NEWCreates a new file. The function fails with FR_EXIST if the file is existing. FA_CREATE_ALWAYSCreates a new file. If the file is existing, it will be truncated and overwritten. FA_OPEN_ALWAYSOpens the file if it is existing. If not, a new file will be created. -FA_OPEN_APPENDSame as FA_OPEN_ALWAYS except read/write pointer is set end of the file. +FA_OPEN_APPENDSame as FA_OPEN_ALWAYS except the read/write pointer is set end of the file. @@ -57,7 +57,7 @@ FRESULT f_open ( FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_EXIST, FR_INVALID_OBJECT, FR_WRITE_PROTECTED, @@ -74,7 +74,7 @@ FRESULT f_open (

    Description

    -

    Before using any file function, a work area (file system object) must be registered to the logical drive with f_mount function. All API functions except for f_mkfs and f_fdisk function can work after this procedure.

    +

    Before using any file function, a work area (file system object) needs to be registered to the logical drive with f_mount function. All API functions except for f_mkfs/f_fdisk function get ready to work after this procedure.

    After f_open function succeeded, the file object is valid. The file object is used for subsequent operations to the file to identify the file. Open file must be closed prior to power down, media removal or re-mount, or the file can be collapsed. To close an open file, use f_close function.

    If duplicated file open is needed, read here carefully. However duplicated open of a file with any write mode flag is always prohibited.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/printf.html b/firmware/chibios-portapack/ext/fatfs/doc/en/printf.html index 7d9175107..f6030528b 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/printf.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/printf.html @@ -39,7 +39,7 @@ int f_printf (

    Return Values

    -

    When the function succeeded, it returns number of characters written. When the function failed due to disk full or any error, an EOF (-1) will be returned.

    +

    When the function succeeded, it returns number of characters written. If the function could not write the generated string to the file due to disk full or an error, EOF (-1) will be returned.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html b/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html index ecf2fd478..0e45fbee6 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html @@ -6,12 +6,12 @@ -FatFs - Return Codes +FatFs - API Return Code -

    Return Code of the File Functions

    -

    On the FatFs API, most of file functions return common result code as enum type FRESULT. When a function succeeded, it returns zero, otherwise returns non-zero value that indicates type of error.

    +

    Return Code of API Functions

    +

    Most of API functions return common result code as enum type FRESULT. When an API function succeeded, it returns zero (FR_OK), otherwise it returns non-zero value indicates type of error.

    @@ -25,7 +25,8 @@
    Assertion failed. An insanity is detected in the internal process. One of the following possibilities is suspected.
    • Work area (file system object, file object or etc...) has been broken by stack overflow or any other tasks. This is the reason in most case.
    • -
    • There is any error of the FAT structure on the volume.
    • +
    • There is an error of the FAT structure on the volume.
    • +
    • There is a bug in the FatFs module itself.
    Note that if once this error occured at any operation to an open file, the file object is aborted and all operations to the file except for close will be rejected.
    @@ -50,25 +51,25 @@ Note that if once this error occured at any operation to an open file, the file
  • Deleting the non-empty directory or current directory.
  • Reading the file opened without FA_READ flag.
  • Any modification to the file opened without FA_WRITE flag.
  • -
  • Could not create the file or directory due to the directory table is full.
  • +
  • Could not create the object due to root directory full or disk full.
  • Could not allocate a contiguous area to the file.
  • FR_EXIST
    -
    Name collision. Any object that has the same name is already existing.
    +
    Name collision. An object with the same name is already existing.
    FR_INVALID_OBJECT
    The file/directory object is invalid or a null pointer is given. There are some reasons as follows:
      -
    • It has been closed, it is not opened or it can be collapsed.
    • -
    • It has been invalidated by a voulme mount process. All open objects of the volume are invalidated as well.
    • -
    • The corresponding physical drive is not ready due to a media removal.
    • +
    • It has been closed, it has not been opened or it has been collapsed.
    • +
    • It has been invalidated by a voulme mount process. Open objects on the volume are invalidated by voulme mount process.
    • +
    • Physical drive is not ready to work due to a media removal.
    FR_WRITE_PROTECTED
    -
    Any write mode operation against the write-protected media.
    +
    A write mode operation against the write-protected media.
    FR_INVALID_DRIVE
    Invalid drive number is specified in the path name. A null pointer is given as the path name. (Related option: _VOLUMES)
    @@ -107,7 +108,7 @@ Note that if once this error occured at any operation to an open file, the file
    Number of open objects has been reached maximum value and no more object can be opened. (Related option: _FS_LOCK)
    FR_INVALID_PARAMETER
    -
    The given parameter is invalid or there is any inconsistent.
    +
    The given parameter is invalid or there is an inconsistent for the volume.

    Return

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/read.html b/firmware/chibios-portapack/ext/fatfs/doc/en/read.html index ccd4b85c3..3751b7d47 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/read.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/read.html @@ -45,6 +45,7 @@ FRESULT f_read ( FR_OK, FR_DISK_ERR, FR_INT_ERR, +FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

    @@ -53,7 +54,7 @@ FRESULT f_read (

    Description

    -

    The function starts to read data from the file at the position pointed by the read/write pointer. The read/write pointer advances as number of bytes read. After the function succeeded, *br should be checked to detect end of the file. In case of *br is less than btr, it means the read/write pointer reached end of the file during read operation.

    +

    The function starts to read data from the file at the position pointed by the read/write pointer. The read/write pointer advances as number of bytes read. After the function succeeded, *br should be checked to detect end of the file. In case of *br < btr, it means the read/write pointer reached end of the file during read operation.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/rename.html b/firmware/chibios-portapack/ext/fatfs/doc/en/rename.html index 47cca44f3..efe6f269d 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/rename.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/rename.html @@ -13,7 +13,7 @@

    f_rename

    -

    Renames a file or sub-directory.

    +

    The f_rename function renames and/or moves a file or sub-directory.

     FRESULT f_rename (
       const TCHAR* old_name, /* [IN] Old object name */
    @@ -28,7 +28,7 @@ FRESULT f_rename (
     
    old_name
    Pointer to a null-terminated string that specifies the existing file or sub-directory to be renamed.
    new_name
    -
    Pointer to a null-terminated string that specifies the new object name. Any drive number may be specified in this string but it is ignored and assumed as the same drive of the old_name.
    +
    Pointer to a null-terminated string that specifies the new object name. A drive number may be specified in this string but it is ignored and assumed as the same drive of the old_name. Any object with this path name except old_name must not be exist, or the function fails with FR_EXIST.
    @@ -43,7 +43,6 @@ FRESULT f_rename ( FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, @@ -58,7 +57,7 @@ FRESULT f_rename (

    Description

    -

    Renames a file or sub-directory and can also move it to other directory in the same logical drive. The object to be renamed must not be an open object, or the FAT volume can be collapsed. Such the wrong operation can be rejected safely when file lock feature is enabled.

    +

    Renames a file or sub-directory and can also move it to other directory in the same volume. The object to be renamed must not be an open object, or the FAT volume can be collapsed. Such the wrong operation is rejected safely when file lock function is enabled.

    @@ -77,7 +76,7 @@ FRESULT f_rename ( /* Rename an object in the drive 2 */ f_rename("2:oldname.txt", "newname.txt"); - /* Rename an object and move it to other directory */ + /* Rename an object and move it to other directory in the volume */ f_rename("log.txt", "old/log0001.txt");
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/sfatfs.html b/firmware/chibios-portapack/ext/fatfs/doc/en/sfatfs.html index e701f441f..75a315365 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/sfatfs.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/sfatfs.html @@ -13,7 +13,7 @@

    FATFS

    -

    The FATFS structure (file system object) holds dynamic work area of individual logical drives. It is given by application program and registerd/unregisterd to the FatFs module with f_mount function. Initialization is done on first API call after f_mount function or media change. Application program must not modify any member in this structure, or any data on the FAT volume can be collapsed.

    +

    The FATFS structure (file system object) holds dynamic work area of individual logical drives. It is given by application program and registerd/unregisterd to the FatFs module with f_mount function. Initialization of the structure is done by volume mount process whenever necessary. Application program must not modify any member in this structure, or the FAT volume can be collapsed.

     typedef struct {
         BYTE    fs_type;      /* File system type (0, FS_FAT12, FS_FAT16, FS_FAT32 or FS_EXFAT) */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html b/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
    index 268b8c14b..6dae1fe33 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
    @@ -33,7 +33,7 @@
     

    Members

    fsize
    -
    Indicates size of the file in unit of byte. Always zero for directories. FSIZE_t is an alias of integer type either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option _FS_EXFAT.
    +
    Indicates size of the file in unit of byte. FSIZE_t is an alias of integer type either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option _FS_EXFAT. Do not care when the item is a directory.
    fdate
    Indicates the date when the file was modified or the directory was created.
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/unlink.html b/firmware/chibios-portapack/ext/fatfs/doc/en/unlink.html index 4cd1f660d..7d6435767 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/unlink.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/unlink.html @@ -40,7 +40,7 @@ FRESULT f_unlink ( FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/write.html b/firmware/chibios-portapack/ext/fatfs/doc/en/write.html index 644dd6dfd..a29f56fd5 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/write.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/write.html @@ -45,6 +45,7 @@ FRESULT f_write ( FR_OK, FR_DISK_ERR, FR_INT_ERR, +FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

    @@ -53,7 +54,7 @@ FRESULT f_write (

    Description

    -

    The function starts to write data to the file at the position pointed by the read/write pointer. The read/write pointer advances as number of bytes written. After the function succeeded, *bw should be checked to detect the disk full. In case of *bw is less than btw, it means the volume got full during the write operation. The function can take a time when the volume is full or close to full.

    +

    The function starts to write data to the file at the position pointed by the read/write pointer. The read/write pointer advances as number of bytes written. After the function succeeded, *bw should be checked to detect the disk full. In case of *bw < btw, it means the volume got full during the write operation. The function can take a time when the volume is full or close to full.

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html index b716ebd3b..af9340682 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html @@ -47,7 +47,7 @@ FatFsモジュールはANSI C(C89)準拠で記述されているので、普通

    functional diagram

    ユーザの作成する関数

    -

    ポーティング作業は、要求されるデバイス制御関数を用意することが全てで、それ以外にすることは何もありません。既に動作しているデバイス制御モジュールがあるなら、そのAPIをFatFsに合わせるかグルー関数を介してつなぐだけで済みますが、無い場合はほかから移植するか最初から書くかする必要があります。定義されている全ての関数が常に必要なわけではありません。例えば、リード オンリ構成では書き込み系関数は必要ありません。次の表に構成オプションと要求される関数の対応を示します。

    +

    ポーティング作業は、要求されるデバイス制御関数を用意することが全てで、それ以外にすることは何もありません。既に動作しているデバイス制御モジュールがあるなら、そのインターフェースをFatFsに合わせるかグルー関数を介してつなぐだけで済みますが、無い場合はほかから移植するか最初から書くかする必要があります。定義されている全ての関数が常に必要なわけではありません。例えば、リード オンリ構成では書き込み系関数は必要ありません。次の表に構成オプションと要求される関数の対応を示します。

    @@ -81,16 +81,16 @@ FatFsモジュールはANSI C(C89)準拠で記述されているので、普通 - - - - + + + +
    必要な関数必要となる条件備考
    disk_status
    disk_initialize
    disk_read
    常時ffsample.zip (サンプル)
    その他web上に多数
    ARM7
    32bit
    ARM7
    Thumb
    CM3
    Thumb-2
    AVRH8/300HPIC24RL78V850ESSH-2ARX600IA-32
    CompilerGCCGCCGCCGCCCH38C30CC78K0RCA850SHCRXCMSC
    text (Full, R/W)10.1k6.6k6.2k12.1k10.5k11.2k12.6k8.5k8.7k6.3k8.4k
    text (Min, R/W) 6.6k4.5k4.2k 7.9k 7.0k 7.6k 8.8k5.9k5.8k4.3k5.8k
    text (Full, R/O) 4.8k3.1k2.9k 5.8k 5.1k 5.5k 6.4k4.1k4.0k3.1k4.0k
    text (Min, R/O) 3.5k2.4k2.3k 4.4k 3.9k 4.2k 5.0k3.3k3.1k2.4k3.1k
    text (Full, R/W)10.4k6.8k6.3k12.4k 9.8k11.1k12.8k8.6k8.9k6.4k8.5k
    text (Min, R/W) 6.8k4.6k4.3k 8.2k 6.7k 7.6k 9.1k6.0k5.9k4.5k5.9k
    text (Full, R/O) 4.8k3.1k2.8k 5.6k 4.6k 5.3k 6.3k4.0k3.9k3.0k3.9k
    text (Min, R/O) 3.6k2.4k2.3k 4.4k 3.5k 4.0k 4.9k3.3k3.0k2.4k3.1k
    bssV*4 + 2V*4 + 2V*4 + 2V*2 + 2V*4 + 2V*2 + 2V*2 + 2V*4 + 2V*4 + 2V*4 + 2V*4 + 2
    Work area
    (_FS_TINY == 0)
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    Work area
    (_FS_TINY == 1)
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    -FatFs R0.12 options:
    +FatFs R0.12b options:
     _FS_READONLY   0 (R/W) or 1 (R/O)
     _FS_MINIMIZE   0 (Full, with all basic functions) or 3 (Min, with fully minimized)
     _FS_TINY       0 (Default) or 1 (Tiny file object)
    @@ -254,13 +254,13 @@ And any other options are left not changed from default setting.
     
     

    FatFsのライセンスについて

    -

    FatFsは、作者(ChaN)の個人プロジェクトとして開発されています。現在のリビジョンにおいてコントリビューターはいないため、作者の書いたソース コード以外は含まれません。ソース ファイルにライセンス条件が記述されているので、利用の際はそれに従うこと。原文は英語ですが、参考までに以下に日本語訳を示しておきます。

    +

    FatFsは、作者(ChaN)の個人プロジェクトとして開発されています。現在までのリビジョンにおいてコントリビューターはいないため、作者以外の書いたソース コードは含まれません。ソース ファイルにライセンス条件が記述されているので、利用の際はそれに従うこと。原文は英語ですが、参考までに以下に日本語訳を示しておきます。

     /*----------------------------------------------------------------------------/
    -/  FatFs - Generic FAT file system module  R0.12a                             /
    +/  FatFs - Generic FAT file system module  Rx.xx                              /
     /-----------------------------------------------------------------------------/
     /
    -/ Copyright (C) 2016, ChaN, all right reserved.
    +/ Copyright (C) 20xx, ChaN, all right reserved.
     /
     / FatFsモジュールはオープンソースソフトウェアです。FatFsの再配布および使用は、
     / ソースコードかバイナリ形式か、また変更の有無にかかわらず、次の条件が満たされ
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/dinit.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/dinit.html
    index 68f4cc3f1..bac8d016b 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/dinit.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/dinit.html
    @@ -13,7 +13,7 @@
     
     

    disk_initialize

    -

    ストレージ デバイスを初期化します。

    +

    ストレージ デバイスの初期化の際に呼ばれます。

     DSTATUS disk_initialize (
       BYTE pdrv      /* [IN] 物理ドライブ番号 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/dioctl.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/dioctl.html
    index b37ffeaf7..4b7b24b1f 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/dioctl.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/dioctl.html
    @@ -13,7 +13,7 @@
     
     

    disk_ioctl

    -

    一般的なデータ読み書き以外のストレージ デバイス自体に対する様々な制御を行います。

    +

    一般的なデータ読み書き以外のストレージ デバイス自体に対する様々な制御を行うときに呼ばれます。

     DRESULT disk_ioctl (
       BYTE pdrv,    /* [IN] 物理ドライブ番号 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/dread.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/dread.html
    index 4c8ddba87..6810d7094 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/dread.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/dread.html
    @@ -13,7 +13,7 @@
     
     

    disk_read

    -

    ストレージ デバイスからデータを読み出します。

    +

    ストレージ デバイスからデータを読み出すときに呼ばれます。

     DRESULT disk_read (
       BYTE pdrv,     /* [IN] 物理ドライブ番号 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/dstat.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/dstat.html
    index f965649fd..ad503479e 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/dstat.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/dstat.html
    @@ -13,7 +13,7 @@
     
     

    disk_status

    -

    ストレージ デバイスの状態を取得します。

    +

    ストレージ デバイスの状態を取得するために呼ばれます。

     DSTATUS disk_status (
       BYTE pdrv           /* [IN] 物理ドライブ番号 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/dwrite.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/dwrite.html
    index fa0de8d1f..cec097684 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/dwrite.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/dwrite.html
    @@ -13,7 +13,7 @@
     
     

    disk_write

    -

    ストレージ デバイスにデータを書き込みます。

    +

    ストレージ デバイスにデータを書き込むときに呼ばれます。

     DRESULT disk_write (
       BYTE pdrv,        /* [IN] 物理ドライブ番号 */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html
    index 98667d101..27c4e66c7 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html
    @@ -43,8 +43,8 @@ FRESULT f_expand (
     FR_OK,
     FR_DISK_ERR,
     FR_INT_ERR,
    -FR_INVALID_OBJECT,
     FR_DENIED,
    +FR_INVALID_OBJECT,
     FR_TIMEOUT
     

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/fattime.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/fattime.html index ef694ca41..fc7279274 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/fattime.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/fattime.html @@ -13,7 +13,7 @@

    get_fattime

    -

    現在時刻を取得します。

    +

    現在時刻を取得する際に呼ばれます。

     DWORD get_fattime (void);
     
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html index 2598f7e63..82fc6c241 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html @@ -74,10 +74,10 @@ FRESULT f_fdisk ( DWORD plist[] = {50, 50, 0, 0}; /* 第1区画,第2区画それぞれに50%ずつ割り当て */ BYTE work[_MAX_SS]; - f_fdisk(0, plist, work); /* 物理ドライブ 0 の分割 */ + f_fdisk(0, plist, work); /* 物理ドライブ 0 の分割 */ - f_mkfs("0:", FMT_ANY, work, sizeof work); /* 論理ドライブ 0: のフォーマット */ - f_mkfs("1:", FMT_ANY, work, sizeof work); /* 論理ドライブ 1: のフォーマット */ + f_mkfs("0:", FM_ANY, work, sizeof work); /* 論理ドライブ 0: のフォーマット */ + f_mkfs("1:", FM_ANY, work, sizeof work); /* 論理ドライブ 1: のフォーマット */
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/findfirst.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/findfirst.html index c788768b8..1ccdd489d 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/findfirst.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/findfirst.html @@ -80,9 +80,9 @@ FRESULT f_findfirst (

    使用例

    -/* ディレクトリ内のオブジェクトの検索と表示 */
    +/* ディレクトリ内のjpegファイルの検索 */
     
    -void find_image (void)
    +void find_image_file (void)
     {
         FRESULT fr;     /* API戻り値 */
         DIR dj;         /* ディレクトリ オブジェクト */
    @@ -94,6 +94,7 @@ void find_image (void)
             printf("%s\n", fno.fname);                /* 見つけた項目の名前を表示 */
             fr = f_findnext(&dj, &fno);               /* 次を検索 */
         }
    +
         f_closedir(&dj);
     }
     
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/forward.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/forward.html index 34f4f4833..bdc664260 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/forward.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/forward.html @@ -45,7 +45,7 @@ FRESULT f_forward ( FR_OK, FR_DISK_ERR, FR_INT_ERR, -FR_DENIED, +FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/mkdir.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/mkdir.html index 5e92469aa..e7fc916bc 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/mkdir.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/mkdir.html @@ -39,7 +39,7 @@ FRESULT f_mkdir ( FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/mount.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/mount.html index d7906bec2..7fde855b3 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/mount.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/mount.html @@ -52,8 +52,8 @@ FRESULT f_mount (

    FatFsモジュールでは、それぞれの論理ドライブにファイル システム オブジェクトというワーク エリアが必要です。この関数は論理ドライブにファイル システム オブジェクトを登録したり抹消したりします。何らかのファイル関数を使用する前に、この関数でその論理ドライブのファイル システム オブジェクトを与えておかなければなりません。fsにヌル ポインタを指定すると、その論理ドライブのファイル システム オブジェクトの登録は抹消されるだけです。登録抹消されたファイル システム オブジェクトのメモリは解放できます。操作の対象の論理ドライブ上に開かれたままのファイルやディレクトリがあった場合、それらに対して作成された構造体は全て無効になります。この関数の内部処理は次のような順に行われます。

    1. 対象の論理ドライブをpathから得る。
    2. -
    3. 既に登録されているファイル システム オブジェクトはクリア(無効化)し、登録を解除する。
    4. -
    5. fsが有効なポインタのときは、そのファイル システム オブジェクトをクリアし登録する。
    6. +
    7. 登録されているファイル システム オブジェクトがあるときは、それをクリア(無効化)し、登録を解除する。
    8. +
    9. fsが有効なポインタのときは、そのファイル システム オブジェクトをクリアし、登録する。
    10. マウント動作が指定されているときは、それを実行する。

    optに0を指定すると、マウント動作(物理ドライブの初期化、FATボリュームの検索、BPBを解析しファイル システム オブジェクトを初期化)は行われず、関数は物理ドライブの状態に関わらず常に成功します。関数内では下位レイヤへのアクセスは発生せず、指定されたファイル システム オブジェクトをクリア(無効化)し、そのアドレスを内部配列に登録するだけです。単に登録済みのファイル システム オブジェクトをクリアする目的にも使えます。実際のマウント動作は、ボリュームへのアクセス(パス名を渡すもの全て)が行われたときに、次のうちいずれかの条件が真の場合に行われます。

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/open.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/open.html index 9fb764271..9e1f2c139 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/open.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/open.html @@ -57,7 +57,7 @@ FRESULT f_open ( FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_EXIST, FR_INVALID_OBJECT, FR_WRITE_PROTECTED, diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html index 561f3846d..50005e8a4 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html @@ -11,22 +11,23 @@

    ファイル関数の戻り値

    -

    FatFsのAPIでは、一部の関数を除き結果に応じた共通のリザルト コード(FRESULT型(enum))を返します。関数が成功した場合は0を返します。失敗した場合は0以外の値を返し、値はエラーの種類を示します。

    +

    FatFsのAPIでは、一部の関数を除き結果に応じた共通のリザルト コード(FRESULT型(enum))を返します。関数が成功した場合は0 (FR_OK)を返します。失敗した場合は0以外の値を返し、値はエラーの種類を示します。

    FR_OK (0)
    関数は成功した。
    FR_DISK_ERR
    -
    下位レイヤ(disk_read/disk_write/disk_ioctl関数)で回復不能なエラーが発生した。
    ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外のの操作ができなくなります。
    +
    下位レイヤ(disk_read/disk_write/disk_ioctl関数)で回復不能なエラーが発生した。
    ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
    FR_INT_ERR
    -
    内部処理の健全性に異常が検出された。原因としては次のようなことが考えられます。 +
    内部処理の健全性チェックで何らかの異常が検出された。原因としては次のようなことが考えられます。
      -
    • ボリューム上のFAT構造にエラーがある。
    • スタック不足や不正なメモリ操作等によるワーク エリアの破壊。多くはこれが原因。
    • +
    • ボリューム上のFAT構造にエラーがある。
    • +
    • FatFsモジュール自体のバグ。
    ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
    FR_NOT_READY
    -
    disk_initialize関数の失敗。物理ドライブが動作可能な状態にない。
    +
    下位レイヤ(disk_initialize関数)の失敗。つまり、物理ドライブが動作可能な状態にない。
    FR_NO_FILE
    指定されたファイルが見つからなかった。
    FR_NO_PATH
    @@ -41,7 +42,8 @@
  • 空でないディレクトリまたはカレント ディレクトリを削除しようとした。
  • FA_READフラグを付けずに開いたファイルに対して読み出しを行った。
  • FA_WRITEフラグを付けずに開いたファイルに対して変更を加えようとした。
  • -
  • ボリュームまたは静的ディレクトリが満杯でオブジェクトの新規作成ができなかった。
  • +
  • ボリュームまたは静的ディレクトリ(FAT12/16のルート)が満杯でディレクトリ エントリの新規作成ができなかった。
  • +
  • ファイルに割り当てる連続領域が見つからなかった。
  • FR_EXIST
    @@ -50,8 +52,8 @@
    指定されたファイル オブジェクトやディレクトリ オブジェクトが無効、またはヌル ポインタが渡された。無効になる理由は次のことが考えられます。
    • オープンされていない、既に閉じられた、破損しているなど。
    • -
    • それの属するボリュームのマウント動作があった。ボリューム上で開かれたオブジェクトは全て無効化される。
    • -
    • 関連する物理ドライブがメディアの取り外しで動作不可能になっている。
    • +
    • そのボリュームでマウント動作があり、ボリューム上の開かれたオブジェクトが全て無効化された。
    • +
    • 物理ドライブがメディアの取り外しで動作不可能になっている。
    FR_WRITE_PROTECTED
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/read.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/read.html index e33e564e9..c0c03a3e1 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/read.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/read.html @@ -45,7 +45,7 @@ FRESULT f_read ( FR_OK, FR_DISK_ERR, FR_INT_ERR, -FR_DENIED, +FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/rename.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/rename.html index a768b9aaf..84bb79789 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/rename.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/rename.html @@ -28,7 +28,7 @@ FRESULT f_rename (
    old_name
    変更対象のファイルまたはサブ ディレクトリのパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。
    new_name
    -
    新しいパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。既に存在するオブジェクトと同じ名前は使えません。また、ドライブ番号は指定しても無視され、old_nameで決められた論理ドライブ上のオブジェクトとして扱われます。
    +
    新しいパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。また、ドライブ番号は指定しても無視され、old_nameで決められたボリューム上のオブジェクトとして扱われます。これと同じパス名(old_nameは除く)のオブジェクトが存在すると、関数はFR_EXISTで失敗します。
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/sfatfs.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/sfatfs.html index 12e54e16b..7079133c1 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/sfatfs.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/sfatfs.html @@ -13,7 +13,7 @@

    FATFS

    -

    FATFS構造体(ファイル システム オブジェクト)は、個々の論理ドライブのダイナミック ワーク エリアを保持し、f_mount関数でFatFsモジュールに登録されます。初期化が行われるタイミングは、f_mount関数(強制マウント指定)の実行またはメディア交換の後の最初のファイル アクセスの時です。アプリケーションは、この構造体のメンバを書き換えてはなりません。

    +

    FATFS構造体(ファイル システム オブジェクト)は、個々の論理ドライブのダイナミック ワーク エリアを保持し、f_mount関数でFatFsモジュールに登録されます。構造体の作成は、随時ボリューム マウント プロセスにより行われます。アプリケーションは、この構造体のメンバを書き換えてはなりません。

     typedef struct {
    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/truncate.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/truncate.html
    index 540260319..9d9298d97 100644
    --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/truncate.html
    +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/truncate.html
    @@ -36,7 +36,7 @@ FRESULT f_truncate (
     FR_OK,
     FR_DISK_ERR,
     FR_INT_ERR,
    -FR_DENIED,
    +FR_DENIED,
     FR_INVALID_OBJECT,
     FR_TIMEOUT
     

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/unlink.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/unlink.html index d9b631b0f..1f3c7ec2b 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/unlink.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/unlink.html @@ -40,7 +40,7 @@ FRESULT f_unlink ( FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, -FR_DENIED, +FR_DENIED, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/write.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/write.html index a5ea46548..6286a5947 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/write.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/write.html @@ -45,7 +45,7 @@ FRESULT f_write ( FR_OK, FR_DISK_ERR, FR_INT_ERR, -FR_DENIED, +FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

    diff --git a/firmware/chibios-portapack/ext/fatfs/doc/res/rwtest1.png b/firmware/chibios-portapack/ext/fatfs/doc/res/rwtest1.png index af51c5f9cf13ff09c65ba7fe0a8dc973dd476bcb..bc0330200bcf272a14b4d0a103764e25ceec1a3f 100644 GIT binary patch literal 69114 zcmeFZ2T+tYHB{>;QH{s8j_9j#6zNQF<^hPb9{lLTGl!iA%9(QNXK_Ltc%O1asSoty z)o&erNj9q|yg1wTxb)h_fgnKt_*f!Lp)l$H^d-U$4`O0@TbAKJe}C&+BLoi)0{`QK zBmzS_^%Mt4VQA35f2iQdf6j%lV}@v=dfSrTp+M08`I$L@AyBU#fkFQm*KZe&LZ^g? z-1PhRL7UgfQ0R#?2nYlbft{W2Z~C6?u9{r#`V!Jyp6^dz9y}_RZoEjiJX>GgK3Uz5 z+V{RZHTh*-U*|R6XEMC_JAM4s+UCGCx}Q8 z1o{lvJSADKG9yvg39p_LR8fjGZGvcRlMErEv_trs1cDuTM2KPQUNTgpL}>Wp$J}ba zKAy9J0$79xI&?$axE(_H-R|a|km|*Y&Rs>;Z4z(dq@NKK(xOXwW z^XssHLsZf5fo;2y^lJe@aO|Ut_fX`ef;8;lZ8S|#5WA+bx0O;(ET}X+>gb((K*N-F zW2|>^dnruyE7lYHu`|ewg@gZjSU}+A2w?MSVF)Z*{C;|40E*ggzdYN}A<^fwi9>nn zJPssi*341NxowIm9p0coZ1&z|V-?ft40!rruKw4U!rE7&XhCfZ>Z?xEyOE3IrAMN7 zij#Y_aFoAd8NliktQatGQ~bz*;mKvaNFlCr&3UTT8usdttlRQ@NnUp$S$o=3g!luE z-UE#d5Hm;(M{x)Yo?`~DYDyc^DEz{ajgHU1@ua=eIK6!=)kkDoieY@&V;r9$d1Np* zH#H20zhmw89dq`2?zK42qDzrUKgXYkUIn1hl@9&AjzD)wQmxcEwyVpEWCHH!a`XTK z=7es3OWUhdo_rlMQS8RfR6vY`V5w*YohGbg(g~w`G@e&#ia1zv`SV!LW-c23NYe)~ zQ3)i9@Np#;krAZ1b?-@Y!iVObD;3@wcX^Rs*FViQSqJSTO<8SGCvUKbJxh3Anf!E`LuWYhOd6V5BM`j%cm7Te4io^ zL4iVAjMKPi;wwf;EV2NNhSuA+y&21gi4?9YWk zgsr~X3qq|)(fYbd<(u`1qy-c;Ji-RqB|k9@ibVxHFTEMZ<8M^_bWnyB7AV=5#;!%M zqs%5oc~LKNAg{R@&*`!j*yG%yR5yP(fT=L}47vc8h*GiALkz~89 z-29FPG`19o`!kFRnc0xf9Z}z2*((XDfq8r%RYRaC6dwczFN$dqfcFPB(?Kls5gSB- zb~@Q!xLF+h6IP1k5&Z)i851)LPv@jp$D;4s&Ml2%7q&i{BP1ba|Ukk1^?T z7R%!?pzt!lRb2Ord77eO(s&pA`D+w5DQ2Qvfftd)9D4+TAWCq7yF*=GO%2@$Z_bJ6 zH?O-VAKN#Q1OZOZ5`qmZHspl)8|vfCaYW`3c47hts~_uju07%@aNFJ3ldg2(kQCu5 zPqpI1^65;A;;U8r z=|u44L7J+jirjb5(73_kK5jt;huu@*jEK;vUp?M7ghTjL(GzP@7LZ6N-OBK zxJHBWFt1)-EZP*Hy%z3sTr|S+A`Tb%9dNFoIRy=ZEI^~JAkfl`VS`S5gu^bxb$ z+Xv%Z1_u`Fg9g*y_+;LXl zu>1!OR7zE8Uby^9N`#gWt%@YUFz=c)zJ(I;yv8T;Sw7B?-Is}}uNhmSS2uqQ@7y6@ zmH+)ErvBOn{}V@pI9m~e0sRb3sc+v++|tW$-axGlmOR(uWQVUdRXam0>R293m@Rpa zh{&n5+w1EwixGS5~`703T9VDhGE_cp zXjBXDa^$yVS6mslhPpQG>V~c8tVY+O@I%gq)ps=lUe;-;Y*ZzE`*|F?`7W?=PLvmG zO{*z;?|7qWJOoQSxpIH@G)_EMkYAx{|8>Dt1e#HS!V#944-F9gd=S7ezsGmDhPmWF zEu;3iO-~QZHAo9#$1-yQ$aDiiXc1}UE{24H3nz}qo2 z8XnMpq!llK^UozAiTr2q-Us5Dp+NQ??BAk42s#LW;=ZzJ*kG28Gx5ZIw1;RpLa@)ETO5Jc|fb35XH%!Ua8T);!{)BS(sHXo?L z(9p5|8QOo$W_S(o{CzX!sQ;O)0LDh$1TI-cMvLG-W~*if!rW^6Tjqak8LbZ-%!_*g z=Kq+@P7?TbID$tK^6y&)R{*9Q494sD$87&E8JH`md3bm@LfRCBKLcV!d`c;5Ifmm3X5k#NHcjsNQJF9 zr7L(ikjxZBhPMY%$l zQo5;u$GB^=OZBqmAu|{c?ylll1>^RJni0Hci!iraALUJn4x8cve})k^ZKrp0pAi`w z3;oD(4hJvX&aJb8sX9^QYcK`T59sq8}*w%wY*q(Of6tsLWTEz?*_3_}!c2N0W-X26decB<=(fj=s}&TMPPk?hI$DTq!=g}P%weZjDQGP2B z@XpKe%Y(58RG2D!^@K{JxLoko`ZXLy>C(GjHIVkyKfEh&1Wv+->84r< z=-!GEM6=oxPZ^GLI3@&FwB6kdi!;s%tHw>IBc&zIPDKzV75NWh5)b@=J(?heiV>{<{?gb@bpAI|u3vEBdbb zZqtK`<#VZ+Gt%J^u_-#R`p;mMTR-(mttIhTcha)O3JC-=ZLL3{!azz6w^@aL;zC1i zK!9!eRVCSdzyqgIiCmvtr3WV1d;_r<`}CrFXY$U46lu_y&p zYP%y0;m|!LOH(Q>B1cf{?H0afpp?kT)14nISlX%skFBKlRc|ZdVyDf9sZ=j&Gp##H z@2X82c7lF9%vE)yR87Hi)*)$$z_dDtm)XhUE%rbx5?{&`f6z8|&t} zd^^zBL{&C!zbAO*$>;L2WAO5)yWmip&k(x2gYp^&+!Pdp+SV7H!B))i{A6%r4O(zs zYbHq4eMN(CQT}=Qu(FPsgAbLz;qH39F4|RDJ+3&(6&Br9oFsyn6}d25V6sM8%;ijV zyD7Xba>EV}WKm~?;GeaVf(yYjafFI*yfMqyzWKE za{@-PYN;9hJVb`$4pw*U8)5a#ePY9_<#d>#`_%mFX1;5SLq2W#hQG++E+(FgZf8iJ zAgAHeg^_jC>dAdH7|5}d4?(Jm>>ebZTXXdGZ`W{BqGcT4gXs9EE>smb!Rn12%W5{0 za`v(3X@s4Fi;<3~9qWf|jfE%W&P;(S&704k=AyT7Af&({_Ot${yJ_*PV6jpA35NtV5ry{qbApH()vHK0e(53Z2kQFP51giR=c0Knfu;IdtbtXgoVvsEtR- zr#pARb1YIv`{!P^3lbM{Rm3h*({lpD%uyhm&TZPmAxO&an`TQ#L;}4nH96Wdfhy&H z*2Ec(iY`f3#s+73sjjd@9WF0lV5|*5G!%%Yrm`7YSLX-o7NTjO%d&PQj3gCslp3=e znS#jg@(HT0qGyR;>pDDrR3?hw_r_Nn|4e?0@^pNZU)1c7)F?6~ z`(+<#SkJz|#uQ%wyS5O-BCO@Q;!vsN1&7lpkM74N`&Ws5aF($qI5A?3-Ko*nZqDnQ z=W{aSJ@_X_Z(y@-wv>p2H!caLqfm!Cy0-3~4fXiUzDtaaRZ05up$XXJ9X%Ul`l)3! zve^sid>?O4+<>6(o>J~B3X*2iSU-TKL2gAt z8bIEmeF#=uQ2>q@=$e^jn0;(FVm;rrgkWA|SQmNL{qRN%Lr$f{H%TBByPjZ^e87&w zr>y{mfQ9UyKk{c5xA@F#Udp4Z5hqn##1a~H5?bCA3(oQ;E_VlUm&?nANN>sBXT0qW z=C;Uu%#GsO7F0>?>h->svP0f`6S80lCoRak`(?_&O`?hrzWAi8DEe zbBhVa>m(f|+4@5G!vrD_gcAynrV+y7=BHF?!88-e+!8P&1fuR|Rdn^smvF?qQy%AX zVVeI_=)K!r4Dw34KRX|_j3w`NgS>3{BJC3LExIZs^*&G%L@QPZ@V?t*a@%jP1U+WS z9AFBh$hkKqAF!1faVvF&BPH7J6bYWwey9!k!moL4nqFKh_NSR^TwvtzecaCSE$;?+ zs@Q;#=BPO*oHQ)YWAmX+i2UTS(WkL>|6jJH3|l;GZx0del1psOAP4>_$#OhykI)~- zQmqlYg2Pj6K;Z5dgkUi=1ldwSR56FM1e;716M5Pjw~I`3Sh>F!V9+Yo@JgF=-an>h zi;u{?^@b?=_b5F>)sBdx77(#`%2QuzR)+WCP;0Hq!u z#YFTo1nNXCxN-Zv2iVMErhzE^Dd>x`C)8|QILBvr%0L2%1Keq0wT%K2URh zsmB^K@U3dizruE0ht94v6UXnSHL7}OL(TR4a@CaE__+)^OZEYW(=k}Usr_Dn7yw3u zPGd`bD5k`Iq`Ju_K$)7XHZ36(R(ft3^VOFTkG@U z?93<(yCTT00FN^Sl@ zPgV@VK~+0H&@JxvozT5uy_Fzw1c9=!tN#!`!$@5f@~r34){q!p^BLFCHZ6J02p+Dq zwDi}am^XxY45|hjL*FVsu%qAzV8LY6QNxei`YjgGgWHB54<&^Kz3tV%>R_w`fOLRi zqN0jWp#1)CugjT0;>9bl6|icT^lV@KpwulP!s;A*{Jg`cih__73Nw>6yK7VlnS+J> zbVZD4^^NPYAC7XS!-rQWmD>MPykxstY8F-8nt|X9|Cy_=w2PrKT2589DrdA~N_NTYGJml?hD~(mYo27zk920AFcB0e=;=S|fb(E_3!WR`u@TqLP3s*GpAv zocf#UI&@pH5*$@i6+WD?x^*LWJeu}d?TdZk^YV*6<5evIaCg#ykId2+d3(;cZxBSk zJ)&*zC6D6y!XOWWK*8$VC@)d&97NJrb^L;NQU#~2c3L>V&gjuoGI3j(0f^K!z~jO7 z`shH%%{VjGiS6sWs3}`o_TqkX(fg0#8(x&jJM;AoH(WV_z|E`Ow78794d`g*r2fv8s*$d7+;_mSdTUY-n|9tOzqa?d7!tp_XErp5 znD?*)+%F}<+FMMW-rA3}FgBsU9k{neB}O7ZiJuc=4P;J7%HYqch>s8~1w&kbAb96o z)q-8g;<;lXZ&qy2R=@12ZP~o~TAE;@53LLZ*>!V+%`CRVXS)gGXK|H1_P3Gmbl(n=5V6jDOFg(2$>_qe5U3!cx9$ zJdrF4NuclL#LiNG7Gf124i~6CYZOSs;)c2+#)_?M>{E2oqYWT8k!+wz{9 zC{cW<^C8nLJn_OpUg_a4E)#e6DjRRlNB2)uQ)~r~-nYqf`RL}MnhnGk2w5*0Lt7cl z9?LNC*N_2zEJk<`jA@M^F`Zmc2d>_4La-2FklmAml+HfKbP9m0p@Pr*=(6Tgi+pbs zhj2I|bRAN|#BTCUSyt(tx=7c|c(0inf9S-*`Ea3b<0SI3P+HUsGzE<#0^2Igm030( z2JqQUhbY?aX27K23&W2wdN|Q!h=a4x5j~2$m6jiv)F0+K3xzq4d!)pvV&XwzHxVr1 zG%-Qh!iyU&sWm(@Pg&V16bcsr_M-V(>_eoQEIKPQuwPO-gy!(ICuaDn+72m1H&vq$q*uD&Ja%nR%pTiJ@2{>IlJU6*uGLUN=Q7j58X^}y9_U{Sv z!J_-N>gFbi5jw9|EWQ0H(q~FUk0-q?2=vwkm31BBGnK&3-^Gk zWVDSGFIqC!=#&|0zkal_&Qw1VG2y%kKuBp3HKI!d;m1;dJ3$4pFyz~wN;>rJPpy)F zWku$i4Kc&*GS|J{s1i5!x!2++jVJ9B8yO#)Rg)ofXUX0@zI(AfzQc0OYj&0MAz%yq z=QK^Ys)iEH;&u1}E)dt*aUjUp6)0@Z@$04uw0K0*gU$GOxgHbe^SbohcOdCLYwH078fT&W9^LF-2{c+2(zFaW*f<%dI`kz~Tu6x| zQ5s3XN`9M-Ht9{gNkrl6fMpgdTCc97 zLm0jMEpp_YnvjoSpYp;j?8RL=!stPsZFL9-*Vr1vN?uZB2E=?j8{+Wfdn^T_*B!N? z>K07nd(m_$TueeF?WpWfymWZL<9qJix9v8AMJOMG!7N}mFuN=ih9h%BmKgwpG|s!eJ=~hRZgE;c#BE_#1^B@2(D*bsY#6-`;Mo?$ zi0D&iKQgm0r-FhV#K7dC+GREETOC_shod`_XYPixxU!G>k`5YUHOr&?6t2w#eaS7~ zCs6I2i2}v6Y-egS&PF2z8!_{Dz(QPs+oRqwr`b1?r#rrAUIM}d7s~4eHd}WT%yFRS zp{yI$O9wWV ztZp{m3QhYole$knx_EeA<4fJSG|&u3xKbmwi@9(*i)bc$-y9mc_roJY^yr^f&sQrBXbsp}8QlxPA!bX%lJ0RG6x{;5qD=ve2i7I%}!I>Q2{mcDEB1{ArurUXWU zWCB~jNVTticfmqZ@6TSgb!0S;`+MzwdoX?IqtEqHsIy!KZBa(Dkz^1=A@m)%QZpkN z@!tp*6jW@Kch+SBS1Ecz{M;%Lm%iG(#DLt-5=H2G~A6v5RQYFFGIo1w`R5nAB%hf9|sG?{Ts=_uIFuKo` z(d)|1@VZCF>keTnq5iYpQwT?<{A8J9wEYz z>6Sy*@9B7|hll1JKxNE)i`~qO*6V!Wdq;S%w>2%<^{J(yY;j!c^Dm`PDM;Xg=vDH)sXb z#eQ|cpnS0IpRdU{Oq{A)EvaR9-||fhh`Z(R3g#gYD8=h!RCcCB_}vh!M6&;T)|eL^ zwf+n>wmx>hq*fh6Yy5{fk^v^dh6TWqw5v^=mYWsO0QsS+My}!Gn9X;Wm9HM*Vv8`Z zcQGt|&Oz98u1fD{1$4C6DPAXjMdZ&HUY_b{K2&vmQqLUI_wTeCwpz#bJP3ST zP66a(s#m_6sxR1eHou>e4SnrDcjv5EQx<*!H$-k1+b5j7q#_)cv25F*Y{b9RZFt-5~Z6CP?5h*epG2 zfM3tWdiz(<*Uty@I^DLT!~gUxA}__;a)sLTN2e_?QQhB7Q=m z&mmY)oH#yqTtK>X665>uq4Sq(_>jOr^2cEOO1lr5;N=6qsQF|v#OMU^=r3C|g%GR4 zl?zd|0|bNF<3-01Zit z&e(0hy@~&JZ$OnnBHtLAgRG$SbI)c2=Vop@kr>~Gnph10gWdYqV9-$D9~|C*v&go> zlY=P20|xp<+`hxTK0RzBNNm2U;I5D^VW77b4++9AcR+1_q!^xpMcc>*z`;n?HiAF= znP5&ncjfnufu}MV8^jVfdGSv_MhlRA2T^-_e;tFN6K2 zqVM8M6K0#D4e!crcm0DyeVu3y1;7%za+HMn#X@zs6eVXL$$BCn1~V z1fShH_8PG05Q!xd6-i69h9f!!0MRENwgBziTRS~D@$vQ*2q`7)YnZS+_!Q|KNjl7b zcum0Tod)^z99N0ascA!(Ge@!*!CvsI)-V#&r~L9){*@QMwXi)nUVbJMs37Mh?Q7g; zyR*$2ohVd~!5WS54@(2Q4*(``)<0}Si5Fha(X&;WMoJt{{ z_~~LVsT-N!TtiWr=%jMbK?^z99|Ux2sD+_|Ky)TsX9^t&`MAC!4Jso*!7Ww~{B7~XJ-us^1pODP?r0)Ys+?UUJCXOA38Q|! znMAsddI#tPGlMgQ_U~T46u#+?7KMgGICL^Xy{J{H=+iQRGV~%C%44tL^Lc8XFt*1N z>;6Ds7E4|JWB9602BxXTvoJ8*Z1Nu00NWSv&3`y@tKE$^*J!PLM27;3T0kz-WK$zY z%sTP9W`%jbOZK6PR4*lT&S4*oc@<~F9QG=`5?~!Ct{6<07wvfpDiQRn)4?~1`r6iS z(l7wvKsHj(1BqFN-qW&p5Faf6o0mf1rETUmK2#r}21jIj#CUMsmyVE-ZhIpWoP%jz zWKJdZNCxcj59b4p6@}oy{{$dI>23^R=dIp`9F-o8LNotX&rf1DV#_26E#mN ziXw4&!Ksx2o334_LEt4!+(AtF?1eeX0bI$o6c{`{PbcEArmn>U9vB$}Zr zGtI}0YG=Q(B2XA(C;|F;hQBG}@=rNWjCh0AnYfXn#+VX}X^9A) z;d@CBEDY~|FYNzs7Bht^_OP@YHH$m}sDVIm1Nsiq-VedtkLzX+%1uoM1OxED)R7~1 zV#wTfS#eATMEytu6MI(AjEM&HXdiA@pY-Xp=3}3+M+e7WjXD4>*+JqlU4qd4ki)G-F#vhr5 z&dYs6@EQ;RFa02^cb7snCB*sB&6bF?Oy|gAAhoglGgcU4Yxl@Qz5vYScQ}Z>uKg}c z>b9shOA=x9=qHpeonXbVpzZ)Mz)U~uFL+6-noIIfqhm&1<48-Cl-r`!|4+~-gR0=R z5yIIO8ng35PEWThNuiy$N!C_ZPk;56IOLcJ?&qf$ga0eB_b+}nxY=;IWR?3%p0dJg z8$SBqdFa>v>_Wd@z^^wV{U|*Eh5tK4vUXZan0DvtD;ne9k&lQr0q9x51@9aV`(BPq zH(VT@%Ye|9l0 z9>eJE;!AxwzrMLTZF0FSV4Oa2A?YK_V&OkN5pJ|92#Z-N=fY}=S8}a*Ks!q=*eiY7 z_e8iWv#>gDT9u_2v24$WQNdYIDo_im9f%JtUmKSVB zZW&in9Cs=hBL-omM2rJk=`&^QJjBd~+kn7*+Juq^uPl#A!%x>pTFXRM&=lL|uznp? zc_6@p;+l;o7Z!T*>S;S>J%N|mg{eK?|AQ+@Xj41Jpk}-3*QDsDLM@5s!+?MSp#f@l zXi6w6NMHuHFWeld#)(pyvnBr>4|3yP)+kcz49hvK!QL5xc ze4a~nBl0<2`*&c{ecL?&9l^ZhXD-A9k>z)9NTu^JYy4>J9-4=6NSK&Qsg#%znN&Rz zT0%31kyrKs6~>$mcE1Xrd#@umC}b-Wccpe5@U87UY6RDlYZT9u_fEU^V?Wr|bZ8=_ z5`!(gM#^0*0zhF}sKU^^HV$@_=n*T$&Z!n(nKAB!T3P4$!|Cthj0vOBG6>ndxGz}eh&kg!z3zB3v=x(SHNX{upCHgEsqG|ehrV>^FQi; z|7*JD;+IRySULN9l?mIYpIk^_vcIItO+ht}3avc}xnIQ84m)qn8E<2jZ>HqR)Qxy*#q`BK(s@-gx;$1s`9O>iE_;oAJ`4luJaW9^D2f#<{ zf;+rOJLd&cZciDbq33%0?UyNW-+z)hxP*e`Y;E-2@woL_i|dTsGQ_2B)&nF(Zkc2> zAl`?u-Qrq^u%o?fQ2iDqO<chj3^lN=Gg`I>{62qMsW! zRstP1Z?$fFz5dO!DCFJIJqwfLr5U(O=o_wXi2gRdMY_tHBF#{_BVu&sL{_`m;X(5C z^MSc-(9#yFAB6_w*SG&kenrKD2(Imod*r6oOi6Nj{qE)vm1rSP3%bNzdzQ4sMAY}BVdlJ5t&;3M%^XPE0q{iBp4z)pl?9?<1P5A(U;J<*+=sgZl zKTi4#Qc9ssD^yV#j$&hTcu~EivE_bUacVfb;O4Jhdt4YT^fhP}A8L3daoh_9rJyNb zaHLuQs4txUZTB#xaGBjnykH^~F2>aTQnD~Dkl($M4T4quX?9cbPJ$uXeGnKTtSCB* zA^@mZa@oT(M&k+Ljhd_e8dXYYC-R)vP}jHtkAv&FY!gn)+@lr`6GK)rix17+T2~Fd zBA-uB+d-dM>I$X^xH0sjeJ8jAQf-^zu0Zvks|}#kc}NkOHUoYdXQauzTf>2x8mKm7 zQ_Mcqt-*m94595_mdxuu>G`I$RoixmmRba;dNivbbOyKn>QIDII*Fp?_A@+;6y*0? z4YHVv5&%X(*4u>d9&VttY4i*#PnP->K2w^*rZ+RA!@PH;{ps&hAM^3Ol&nmWjWL5D zn!lPsWbt+qKCzeuWVsOX$o4=vfft&IT0 zzhBVj#^?m$7tF=!&@Q}J`eyhc>K^G0HzgV?9jmY}rQY8I#BS2Be0u&g|4~nAL9%>E zI>++%Me9}N&B+;eDT}dedp~4d=&qN{vEO1QrKKQg3tObJbzG`yis}$Q4j(@`wpXv~ zR9X%o$tjZLesiTj*WrfFTI@Zzb=^EFx$Uqu{PpZ6#!d$P+_yDW^LdmS!{rPhLW@)p z0-Yf2O+?z*;slr=cR{iUhcRc6QHez+uSI)(%Ns3@VC>fi-E-WD0J+klBZDMxVp7E>l&sMQqiRr4Odt9u_MPx~QNqppzU_s?}7wQ;9hmwF-&p%Q2e% zBCKBNqoZuIxcd=~$U_p2HmMTBsrLE7hukLc_}Xwq2MAa{ zl?Z6#IvX&U{kb|*4d9?%@}r(K+}D@yMtwFmMJbKT9(pAJwA|HjU!^j!cNNrG@qT?G zZi#phq>&|TCky>T^Dlm%TB_|W?FG6e2`79x!kU{ErEX8&pDKbQaF=L=U<2qF1tizM zy4sH8FjV4^)*-Aw1w~svNgqrx8N8v^G28y{eCrhv@qa5dQ0V@=X+xetk``4ipVc63 zm+4J>+XEzUTj5jDBfze{e-jPBZjXwYAhu@}=eN+$BNRP-XXH+4pYMT;pTAZ%NC(Q9 zixVN7M4u<}6p(>q*44I&FLAw-gh5TXnooDQlT!5p@#q%2YUVT%-IK+_75 zOB>J9MczQbn_H}JcoMJr{7KqFVthEkf6|U^25i3MYI}-6oYdh{c(yPNvCe8c&;N;< zRG%CF7=7dT;%L)3-t1E8x0KySrr`?&sx_{k4B@Tiqztj(YN5TnQ?C%6Z6+D2rIUg{ z@t?r&78!6*<;YBG-P_76uuGl00dPiiKwJkju0V(dIek2LhQNnF7j?UKOqo`K>u0N} zNZZ`z5$#;`^#)<*?N3_n3EqugyUYp&ZW+L~)^ znH&{CmQo;j5kk$AZORB(a8|KT(pORNXFzK_9AD`!*M@?B=-%!w(c@gSw^8TCwq*Ke1P&~y+mdR^A|Pv(-g6PDE0=5REjH0U3Knn$b_6t zN*`_CkSPBi0G2b58#~3}9_v7T#NU!N*Bm>6a$9WO|C>^yyw<9*CXQhW0QyG-s}F3b zRQDJg=Dk8_I-ZOdJOxI*^Zx{qmr~K|=Q36(0Cu$-ZU(nUp$tz!;MgAEF8wY7WQUT! zIZwX~NGr=N;0?nJf^<+zZ@_ZQO&ss;scMKgL2cc&MJbIlvMuL_PeDI7H}_fd+jhT8 z(KG~T_Z%$dIlgj87i3goLw)86TNJTrAxK32;j;Uc7oiTquvdU8c?V%qtY$)NyZp>x z-npR4ZTI170KN&`6AhxfRB-aXkK~WmT5q=bPzU-JZt)1 zu)H?Z2?BLJqf)7=g#j8B1K^0}@3p@ri(R5x@)(|}?cp_^DJ>~j0Qv%+{cP0xya3{L zgN9HTJ?UM;sS|fweAmp^AXX*0>&<@bchuNXUzQe%cPR~;qTSy|EG?yrxAS_bE=i3a zCoEJ#AsoqS>_EeFr`;863rsTswpZNC5wp+p`$2{07_wC5K_)0z-$RrQchewdgFF?% zZ3(4!B^>e~yhq>#g>@~(ba7YC>gb^pEOocmcG8^ZHEx`=K816JEg5f={RoKZD}WlV6F-$xG6GOffFPwZm14zLHXR zI~OR%w+c8=nFB@*%h`D%?#roVQ-sgl5-Cy@#+O2~eptsojDKRa0w~{pELWz=(f$TH zaFfib>H7G=jkHNPKHC3mD=?t$+NBWU-4I$%Ka{xp0u%vao#mVj!l^~VsSs^tHr@(f zcO;068^2vM@*Qp(sjWQ@dUz~jy}M?pTykSK-P_Z-L<9UizA#3DBC5b1P!97v)$QYf%2-t7-y`3oK3(7M z5~`@>p79spP9Lxtx+@ijoH?7yz;n(-LnC#&%@0^(gMRA+UnhHd@Q-!4u2YId8SMKy z|CRXoFBrgP%WT!{55lih#gcTKa2CJn12AxV008}NaMjuVuN;Q3XZZPHq`f>3Mr zkT|q6FK<|HGrD_~hyuVyKmkW|*a7eEh%u?U zB!85~J%GYn1Picn1-A&(ax{QN*wpI#iXK*}$9XU$1T%siUaWjNEV`ZM*Q^Hv%H{3$ zp5omZ`gGT+O@A7p`S!)yBS*WJWpNpbrOAH_IY5DM#T)=`1OeY7b}=CLaz)(G5mtyk z6Ad8@+5OUo!KbrC=+2ggCfJiYE%cah0jd)e217UJ!6Vs{#w?Nj(Xi3I=bd$@nb=>D?9u7?=3*r!h-)=Z^{d7 zdFc0a^61r}&s!1_+@__E^>N5cHy_>!RZ$w*es}FJ%@s-I=MNH$fAh0UbZ5=+a6WWu zUPAUky6as<5!YmkGI!YE9l+IPuQ+_b)%{S48_2)BTpcXfB%+bM$fGSNGb{U^{Ki)U z=__p!7OkNn&|v#%n;6U6+;>002+!0|Y|! zEELG#J5-CZ$S=0mC;sL68`do1_pwdS#%~J_NC6GI5D3DK7xIZmH#L&h)hXFxH}Y}c zA>H2r;g4wOx!SooWNX#}h=yoJd`f9@`YwkRY=wmX>N)sdYZCza8v+J8Mew2(n)zN)t6nEny*E4q^y|ipl5kr<0{+Mz;Q(y` z{KJ25|HA)X*#FgzkN=Nb>=y7t7WYd}t6e|<|A~(tt5HIJcL!Z_U@>Nd+H?TzFe+PD zAZ+$a5$eMnfOb1uv$n`ZTU=1`aWwS}SFxKlrZ=UrH}%=xpOG*YpPU%JvoRI~WYYX2 z{N5BP)lP1%uB66m!5g2&0M5SuDwD)^6Z%a97|u$sB71r6b!>G;-+HIiSHd_d7!Vkj zEDxObtjOrvnk=90?H=r&QvIf=&VU0VMUafu8hOfdM$o68Hlj~{R==qMh`q{G*tOYU zXA+IZPby5SziHmCcldH$djdNpW=Vb;OaZq0et(_s*mo|C*;}1#+`e2r&z?FE9+sZIsKglWztCVRfmkR``9ECR)^A{rQ<>TiwY)G~GCZ%|LX;@z6u7gt;Y{j$51^ z*Kr&yy1r^{tVR+h99fn|z8)^d?PO!LsT;bcqgd!=u>YhqZl`MuhO4-D0#y)VT^Z>% zB%|e{t!#aQ?W{Cx@W$mR^df$oh^wT8a%OCcsO<%+!)BlUo5*dj8%-mXu_3Zrybh1s z1wu2SO^M(li_#(Z!Xc${Ho#_1N!700`Sx4#N}DpeURqex%rfXF*KY^6WB{ii|aF^Pestz7_ zLj_h5IGs=L)zz8XnTa{QZzMA|yjx#)7oXdurLr~;ftu^`%3pTEwW$BNcWh105}>H0 z+7ezaH7Q0I20U&W3nMJ7l4R$qB#h3ijt$ehudT9k0pzLwdQzJHu;DoeN;YQpNaBW+ zYqojN<ieBv8>KF;>eVs0pmN?gP$pIBvl88h@a*AU0d+qDmF9~76W zE$ZF)QdN(8yAG2~j2M2iJ_U%$4V^}(Qf^lr>&r|jBLQP4X`exYhbkKBYneN5Z#`#2 zP2`7-OIz~3-yWxtRE@XbWd5?Ovv`sKvZome@hv9T7P4Rc(p}}*l=c9iE?akfVSgVtGy~D>w;KZTVC3tedZ+`&N+mFx# z+o=EQ;b{m+k3RCDcQ@CpNM>u2fKhUumyJ>G1_p=V(zt?XNRv}vM;~a}i|>P9!OKz^ zb#K>GvT2HO{{Ve^6;rMPb2%?Bg*fiOIiOoIqB%2~_~2v@Ko)LwQhen1Dj8SoJM zrEzxHBI}%UQ-j35>S&S;^=r8tO#Q3`r@-bMwo%1PJh?b6G z?FZ(OXjs%br4~5}p9wpJ!&2JNm&|yziscR;heOiwJEIcO!(uk1AzJ{->OADMMkPY` zdnE7_@&J~)$&!L(*=5!bq>+?cHe>TAAi}HF~YWZXjZ;BM!eS+$r^C;5AP{Q1|wY+mNjjoW8S@ki0U}q+bcfQ?m9Jn zM}d&>1^BeK$x6{ZXOq5aYXKlM{MD&FS6h0XWw`}(bz$5EfOn02e}=Mv0&w&NdI9_h zf+3T1s9nwT`r;bU@ws>UsMI;J7TuwRQ`Lhn(}R|3@;Fy2Tjqza_{a=CX8n3U8hy5m zj%z?ULG-7H0p2>q_2)_u7^Q*|ndnc+Xyg`!u^|Tn(En=xe^N7bc2sbF%i(F^+af!j zJm4|q;~(C)=FA^mR?fBTrvqx@4v+tE9g8aP`yJ$x{xsy*jlbdni|78=;y-^Koa#oC zgN63(4U@?aaJRn?0CZ(v-d*O@sWJn=fGTFYyqIiOM173+~!UjEb~s ziO?(g6bX?1uNJrShDQpnfmdBKOh%WFDef9U7M}95wm^2%@#CYC6kpT?gXJD@>>Yu* z_pq{Y+*`65x1Ek4+!k{{hr{a`yS|$1OvuheS`E7?%ZO@xy6(V2ZazP|1i4O+bvf>c zev-WysWS;PqE*lEfpf2?pc<2J4_2x+9HVMJO&C8Y(_3lRZH$)Q_9QBg?| zq`RaW1VIGp2I-U-ns*I&#hw5A!~Oi<5AXBQZ9|wj&vUKwSjWEazoU>W!$@tJ<0w9V z8fG~jh-zH5ksS*hK(Tyul+R?6R#?cb5k!uP{9N>E#1$jG4ly}%pD;Cspmjav1dk$F z<8{0!yU#CWBdkcp)~uGNw9~5yFI38RG$etT`_ktUcxQnCV5jrWd9z;D5zRX??GDAsaqlOglscmit>kQb>G8AkK z7;9(@LewV&VP>QpVRreoMJm;Y>vnkhoq_Be4XT~n>k2QzSFfO690lw7UOi+Y7tMZz zFuQ|!DuW}CorZZjZuatqq$0S5Gm{Ln67R%t2D`pAgmq!KA`ijKzRwqe`+U2g=Kxr% z0|srGCi&)`6;By!-DSD$v^hnaE|=4v=F0q`E3z1=f@%5PG_LOMhf7cv31F6>26f2Z z-X|@EUTZbuH6H@LcD_V&AoJ`5`&g9Q(d9&(_YI@$r;#B{y7W zq@#uGw22}+6_Qa{fZb@QB!?v*$Qy6KnRAFpa-|EdHEDdvW6 z8Bj=*baA8X40N2ZSPT7Lj-{2k;pxUk;Ly}>XAXs%}@chYGPS1t~Z zG5C>JCRc7pY)pTf8v8CTR)AmnUA_5x#alo}c&n@}c~rt2kfAAZl}v}sMKt%t2Chqe zCN;d{1)qyjUhLP!U85J9kDk5$jfQ9jUjr7|W3SQ47&$P*3rT^^&OfLSdD1pv)@WtD z=hBz4O+BpzM2Ou@7eU!wP;A!7&W%1_g{jPCg~#%O=k(FFf0eR(16dY1U&3OKf*gWkb9<)%tm>`XjEQ!XZ)lyu@jr9S|?wRjuXw zYgTiq+MBfcRDb&0YV~Z$Bl}e5-ZPXnkl;O|f;C||eQXi)MDZI;G1C!+x_^;6c6CV61tIVFIo3e4ce2*`Cx!&cAzuI0yiE({eT8DXbBGNOO z3?BWw*K}q*Ftf2st5r4!*|`~7vaZoRtRJ@+a6xbTIdnGk)^WC`-L%kAuA698`9n(- z3SVQTwX3>F4w+3%{=(`2TX&rDRc7;nLGtT~1xe<~)htq$kteIK^Km4rbG`Pa?;CL6 z7TDn~=3zoKd~W^P!lSGTQ?o{{FH>W*d0Heci32_VFLF3&AmzDGHf7r+;T2+Sw?RV< z9}n2&{NZ_H9Wfjbe}Sp2>Je`KATCDa^1(#~pjWa^9p2oxqk2btIvyGp2%qS^fF0%D zB0XRYTyP}t-%s4Jc^MS&d)JNZ6)@F)9{)|{HwL&Vo#rS|(A17vx~J3{BK?^g7abh! zj}-3~N?_Jp^1H@9tE&_W96WW{NdW+lnVbAt`?_rIBvDk+z zu2y)r4Upy5H~Qfk&J0*&YjQdmM>0_J!`a8=D|md8yfz0OBkzjo$|~j%pco;-EYs?> zLuaT~u2zZBOcH%TuN)?D#C`O;u?B}Pjc!(z#g5*jdhJomgg$UrQS`m z;SE*t$YGhTX(uV1F#+Sr(873`1pyot;h8ya2h(UGK~irp|Ix<&&lN_bbiEYHyLoM9 z7z&eV*Mr!VL8FZr*5DuusACV+L`#{8ObEMEJo*C_KV)R)zEC` z4S5aknI)d)M%1-9$q>M$3jfYFh=hn^4}|GQyz4EPDqi2Gk7~6L>tNwRczID}2R?5- zUQS_uW-GN#41I#JufvN_)HwA%oj?6jh2NbO5@P0lN&ToO%wx=UoRI9xTXJ}hC$Pr- z(KVzlpi3~5IdPBoUzNojyYR4hW|%Riaf8(nv#lhH*4<6-G9o+a#OpZm6g4j|-B|H$ z>Sc##_e7XS$zls0luTXu8Wtu|AH1&U%(aITC8#J`!%T5r`glUG6hHSBc8*s+8COY( z`&nKYzrj` z3-kRN8ktC#n+Vc>TEc!Jf)V@Gx`ayekLy)gejDc0k6zV)oTLA*WT6;kl$Fn3jY4?^ zV4~~=>nSm#2)!O z@M==na6^Fw_8Q$&0J1OwBJZ5>lZ(7p_>~Ba6;$w1!P_%2GFmot$XBl2KF#zgqb|jlAI0w)YEF5!5BWq2HU;v+TP%1+BD8@SXH0j zlBwbpSiZjQF_Nf>aUDcATAY+`{8#}5vGx4-Z+}?2dB%93UAr)Oaw1mHdH1KoiLwww zKZSbPTyhZ5GrbGBwH=_ngcp+btxnh(-$a-Q*)Ru=X&|TZOSM#4KJqlS|Afb8$k7HV z#L96u!e?J2ozJQEr#2+5JlO%w$d*5vk!HUqC4Dk!=s#XVK2RW3MSa2secZR5YG=X4 z|7x-+x3HytHORcY(hg*x&ao+ClxvUa{HVwLmxPr-X?&LRLlb?HVNa4}ohakChp5JP z+j@lbf6kk85IL1t6TrXU9GjC9vwwTjc8Q~E5OaX{3Mg9do&~^SXPE+Ku07rwIc)R6 zAD@r&clCUx%&<~M2G^pm8Gm5n;hm=$&X}KIK_WTRkWg8;TD<>Bd7&Z{DzC{?>&!jDW4vUK{c|sQt?v#I_@M>!{ZyJp6EQ~C1EiS8OZ{f z{i9gYt0hSjs!08t<^uHjj+)WLSi$?KLkEY!*|fa@MY(P#0=S!bax=MD@@2A5M@Z^V z)5-N0!BWFQFEwKW0o%r7t=9C%uQB_y*fyVcy)r@_mmcqvlL}`%@3SGJC%x9FvV0?E zrM6(=!WIJncQ|Jaw&a)SOHQ-4hk0&fRfR$2@9Dphz+wm1>r#8yzSDN zE%a?FQOL=5zk7VueayC_G-+lwUE9$Ke!|+KUUz0#^Wo@laj$QucJ8W{-x@o@Tq}z} z!I-|)%HB_TGxKtWdu6KYH!JKYV8%=VtP@!C@(_}GAZ#&R8r0s*V&mxKF%T00VvH@# z;zxaO^g>^@4qpT!-#5wV3ym#GA&A=}P&0jp+2XLqbWU^z_Rxjy7VW_ZZqyr2?IJOw zwC?@N0Gq~gdMsl-e&j-E5Vq~4e;~)g7Sv=ROvO49MCidmTTpD*s<~$Wl7E}S8@V5$ zp&n&Ns_lSP1?LQOw)uJJn#;|4qMfp8yRgoN2-W(CcM)4Y{l`xGM(O|ooErZl!e!DQ z5=<=&<-0=DM_h@?E`w?JiQ!zYXi;eGwyLh<;7FK}n>CNTZQC{GbQztSRIGBsL+2)S zEJuX14RNBNq7TXn7T1ejZ^&piyGWKQyy2(@^?;Qb-6t$|5ZfuYas?T|2qSRm>&`BH zUnnK1mYnVLzVAfJ`w9yd^D~tXW1Z`N`rN>MsbIIayJS`y0Lk$4&0<6MBIM3Yjeqtc z!0TdiIO4ngmjF)|nVbrJUdRw1f`FvL0a0~*bKG{-!dmml`eCM!%n?r1;|13@@6RkM z>eua3-rkG{%L6R0D|Fzq+?D(Ff^JG<+c}YJwsV;RF(K-^65mzC?72qAgt7TP;eNMz z28>D{e-|l%?U0eg4p7g0hyc^@R{`Pspjm((E+qMDM@r$KQ8i-9xJibi@VE{a1fFK` zs%}ycT+Ri|3B>P##{aCnz2I4W;Uuq&8k?NIf*B|%inhyi?Q=HQ6IaB3$uws{YGv&` zVoZ>E1O8$Ik=XY*?P;I$g`EJ?sSf=Rl5z+1mduyMMteF}+qmgHh@$x|9YiCqx%XIq zV*+WpTJS&nSioVq<-wFk-AB~m4UenRZ&!uHss={pq)Leoz9@;tpkLPCfEVOEZ;93? z-Jeg|s;#v?<4aEon$cT?H%x8qr?o$`W@UNw@R}0xqh_^m?W-1160r+D?;vpsO{nEV zck$Ow9!D~!6OA2lZ4c&V5))D6Zf>{V&aZl`^*Sm(_Z%m3hK-aE58<0C6+WGsTw9@g zH;8Lwckx`0@@J1sAJ6?k%q+}2eYn5n<`r}SH|=lrO8QI|#+q34d*u8}0l|`)X(xsQ zH6$$ev|DQ{+sTFrkuoFJem{Nji_c?VaT9Bfnz=_85*P9A{CnrOUwk{C-Rxdpc zr#{b48)gih1QJ10WOgLx359Zy$orUFm~DH7t^GnrciB-xb|2WqS{`IQ;C9{bT})zI z1LEIb3t)5(5JG_Q^(E#6f%)#i6A=r{c3THmmielHqUCEXDM6H%!h&h%xt08H{;pOc z-GE)JNs3sjdw%pmy*4-C`)NzEW`2n$^1oB2ay5_UdpB^~$TW73N1*o^E$%70D4US# z(-s>|EK3^PAW?f~pV^tkuIta#aXW~M3&4Zdmu~WA;>OHHoOgZ*v}Tz$8f5&lNICYY z4q*s>jK&2Kd+>{!nO4U^@(-8k{F00L^%h47=!~1Xdt|vLf@$~-6Yeh+gQp0xKqt|}y zr?1^{Yt2%=x=yp>kqF+F;6U?7DzX@zilkY87da{Nw(No@hYXwcv303Bxeyx(d`XM% z%ld~+Ld>pfNy1oJy|>a_z}I(=OsYBsy$r3h`uJ8jVug^o*05Fwi=5vF!$v%5Pr%J^ zK>4ce#RJRM-~Sle7{!(`{WliuKXo7o&UmVicrQQ$%`h8J{8`E$z$*aKU>>G6U zicw&Tdyjg0qEweYq+~LRAZZ} zz~Lx>dVX?LiyJHegR=!tC^w1PInoFYoS0u8QJK`5{1S3JBfxs9j@7ol&Ld{x2Y0Jd zl(syuIwc}>11IX#SIY78?C->gmlF(psihT`=}p0^>}r6`uIG85&LmEROv_qUaU0N% z9L_99?srd&hfJCB)gITL%$QbLk1n6?$eyMTs=E3VpmsEp8l3}|Pf)eGGR?zn`;M2q z-d5Hu1}3%+a2pWv<5s1!DHas6?%V}#?&J(eoH3q%EUA_|!-zi{^$m2B>CDv^V%>D> z6ZM81UC+rXu&vSH;gis&XJ%KCd$O=LSdOvnc26kyr(!j7n8lbg&$abEUP;g&$r}JM z#$(&lZM=Y6-_qr4Gx={hM`xJnL(Q9l>sL^#?+*`qe*8l?QcKgA0erWJ-DR=DT7W3IM0)?G*$R)*kbPR%7N)HafXl2J2WRUYy9e8^3{ zr5nM+yf&o8ek<4rSH4bvQzBAbUl9S*A35tWCW>G{+(u z7d50CZs%%oRlS)m-9$QQB2HELI1&gJ!QuKl_qQWC^>;{ZJTGIMaTXah7Q#ZXBPRnu z4gM1fj)U(x5LKAos>K$y7oV>KlUAB&vy7%Txj8eF{zkm&s4O+SMpFPfjaTyK>nv5W zZHZ2=$y;kc49S?jJ8&zT3&(8$xo5cYDfXhb;kb>~=V5t2U20J8n*F`@2I>IsEXKFy zKTfXfRq4|P58fEly4#@^QK(hAM3t)@AQ8cV>(4AY=?^+jPq0kRUQXah0Ve|B-r?J$ zV}vkP!D?=xrT3FFcOYFM$r=~Bl((E6y z+t}Hfg2!c>GEb-qJdsJGrWZF-YF{&~3Vf=Klt(+lm)8O;xtZY20HuPEHwMoL_t-O=8L>vbJe&}t-N)>dxIEe9X>9-f4M#>z zaDMcIu@F%k|W$V8MA1*RAeLLuv38Ux`x?C z_D{)2-jW=D;A(#!ytf1pRrHAmPb<*C~A#1Gb1KMi-TmRZpGAY;Z(+C!RmcfMVuI;>| zJ7X%JKd8DLI2mTV9o-g@`Mxqa;6!K@P&Mv6~3Qo8o z5Z~{qR#>BR^HH@7#(1S^RwLoP{F-DC7(kzgdUhB^@;N|9Mt1a$rEKKjr(Yfyk*JI-IXd#mp~?mc zxfr4!w#BoI-V3YEZa>jGtO?99hwKczdyW%y~lS9e7&A<@zC?dje zpDwAHDtUtSq00h*l`*7LkYcl3YccH%|NZgX1*prOU2ttaTqLVs0rV-EA#ftef3u#t_yWW+EiF6C}Ce)=K|u`$8WAW&uM#o_hRZVakDd-HC>Q}Pl6Hv#`t%=@~Ey( zRUKpw%u=Vswfft#0AK{&7TFvTij9^%J)%vs%2A+#&C+}-DF}sF`Bl#8s&Jhfr~W>= zs7M)Avb8UAY3_iS8!m7ymf{XrX>N=8zK|Z$3+h1c{4F$)2q0aaiT$<(GdYha`Ku9t zypbDru+`yn5xBsFv_O6yEXEjvY^2A!MBnR4w)S!K*~hIy}GQ?LNNAb^2zN{TVSO$;rpoB%=(vGN*)nvUiH>HY4v2 zSEP@Bo`PNaSS@rrAr+?j7cC}bOdS3k&Yx0$a)&B)Jqt-wPbMpBiOFr`U_KmX)7&8r z$Idy^Bwgb$u>3Ij6kElaJfs4f1kf_XOGB0mltfqGl?Hk%#jAQVk-$B1@>9^ZiJ~V5 zwDPMn_lAUm`{Jk-Kk~?ZpYPloI^FjM>7Br+WqqcMat)r#?l3;qo~l4z(1>gW9LA2~ zJdn}Yb_p22v>2nZWKJ34qQXo9c(rkn&ZAea*ZV*gudA(Oh*4s-sqG@@i5r|qS=Qgg zu_L4|X^!55i2rQwNw*Q}c`*8Hm(GMf!p?ga^rkyQ51-#BW_huB?NzMHy_PEb$b^&J zj^4&<0kj0!cyaD5O6e$f#sFrFQ4w05i#K~STafaT3_aq4xaT$nyjQ!1Fa481lY}mz zJyyH+or`IY)pf|QqZ%0*$3!6PpYVq`i5kPS%+@kV!B@#mfe2J;#tBKr%=@(MB{!+g z=F4495V5y7i&M6t$h3-LG+F>5c=L=9Y_%o}lRq|iCjFh*LGu<;?FDW6ZUALulR?Uz z;sfS5XlgsTg426DIVaaQ;urYdT+1uH3;xI(JP<`B(Up*|%iW;?ElC4%bFzvY{Q4U( z*2^-A1x0G@Z(`aanEmnE6u98K+%K~HD|!nWGVV0iDy<139rvUp2Jea4^Vh|{38Ie2 zUPF|DYQ7x(R^fZtj1$zlEdG0;cKm3`9z-XpDm8oaszl~B$nGq|V6$>C*1}u$oqm%= z3)tAtUGG6Mj(11rCB%U9$aaylYVceN6SPP7#nGbV@MrDKe1{D^%HU&b#AwN7YZCU# zXRte(wVc-@A&Z7c*O6t#0q?;@y<~o((p4wdCdloR@zGU0G5fOMfgNg-zA4A_EKoER zqkBju{hwX2gVa~j{2!MPJ~l$`g;=Z{1;Ver>xb@1+Me@tFOz$+PPz|h82zXL0zaAQ zRcsPmioAOm8b;g+x2t`qZ!4R$5`hi=@~`t31o|xqavjNWLN-<>5)*n6^QjW`R5Q`n zD_;1Z0_XqrQ+3i-@wJDQ3RaCXJahucbN+aUm$_3~`o^?c@!@aypy0thD-I}F?B?D& zHS4sbh@A`6GB zQJ&r9U)F!NPWZYAFPRqYQ0&@YG&#ZWX(Z(zk>2X%1##iOi-ty!YGJpA8H4~qQo^5q zYzHk#&Um^V3~--`k{Hoix$o2Ov=ZE72BMMFj^ZRO=u@#uQMXc#^awemtsATrg~_u4HUO|hJkBf^`JI`W~tVeXDZFnS& ztHalYzo2-WY|y_bP-BTorC9~x(oayez+=W<4vxr(U(Z|eFT4XjM{+!cQNi*f%DMQc zxD2CPb!TySlK#x*!QLd_{pRczk>GZm>rkJ2}vG3E?0lF?`CjbYFHT%wl2=h8p_ zTz?3W>pJx9ocj27%S)|$aXGna%km^}x{2c%t-E+HB_p^>yR4?%mJaXLTyU>(r}h+P z_{tj-ih-y`s<;B;5uOV;%0NOv(F7=|4I=OoEoC_|RrGRg!CJV{a5W_QY`Jo-pOP|( zgnfO^EW^%E!uUYSOogipQBiw!Qo&n5a@YdAjL}acxDWRJjl~G56WsC1ZqfuQA+)j!tEYR=beZK{2eBVv1`DkD}Mf~ za4`{6APL4JNvzFM zHGOOm5dZdy(e_FYEyVi+$!Ro*n;Pu`A6FeCV=gaj(2@f zHFq4bnXg>(yyOv7-94QibLk}fa)ucF^p%T9YU9Awo9SRnuR`Ar$>JDspV8nDb(I?F z3znXPlTrGer7g>&Lh^y#^Zpi|849kNm20a9sJgJ_R#$7{sV3c~>49^tPxa@Edk&B{C@Mj( zuSu)LXL+Y8B1O14!LONt#lfrTMF&F0PKT^Zz+^ao;T3_LG)tWv7 zL3l%XsOI?p_T?Bj0PdqDPnu1V&~4=k>8k{3OcEchs~uNCG7*D%VD;|B{dX0uX0NEy>K z+(=2(kN?354$gFFH7-$iPBln~bDFBT9ZtqI9y^$(-{$ zIas``=oKfEGq}_Ymrv-W$kZk)SW7YG9MXc)vNnIsRoA$L=CB$I35Lel=zw)R-_DLJ zMFX(o-S4N}7j+dV)oTScnPWm_f(qVO2U07sj3%Ok!$Rn-D&ByWIuwoD2YE-gFr{9G zt$@a*)wHd--mJ72Y5J~-N@>5r5i$nK;ZX?Xl^+NI#2$EFK^$dwJ*3U0I`^kr=giC0 zX&NJUFnGc3ul@OWg92uAHwST6%npO74_ZJ;oN?MTE>W#C+pqgTmBVMNd!BV(MdCB{L-;G?9=cI-nJVwULh~t{A-P0;@&Zs^3Ct zy3mA4qu)IUzu$LxB!^eq)bKw%L}%&h1B#QicdD{#VN=93eGZ6!zZd}(HTPsrS77_0 zu>}~Gher8?{F7Y|4Q%~yiV9}WypQR<^I_a#@K%toRxru}9*-ilM;jY7gVACXDfbkU z1rc+Fjq8_t$_(F)I*zC zKheEoO}&1^G9O2i5I=kA(nT+-BE!Sc*-xY(82cLSD*YoEJJmjuQO^$okF?u0iL!uk zKF~o8&v^c2^{#JpZ*S1^=dT*EgO-$692*D$*hoXOy33e3h~on_t}ZGZ2+hwSCIjKF8abunI7^zh~(DVNADuXxv_s!tdMB zr^zccHSybFW2A__R>TZNRg^61KD>=#FM;_hqPU3Dr;V7KPv1HcUg7Zq3}AIxJog8B?1_9^3e{sbK>e!BU)KRo+*n@Ey}c214TW%%&Z6e!e>5G zUh05LY6uMOf_&i~f zdQYwkwx`j*)GGkFXyy=bSO1V0WnI@YkmcWF?I%5?#ul*)IPcE67|N4bBcd2VNR$vg z=(4Sd=k}_;=5^yRVq3`Y5pzcG)G{kj*EC_D-rooHa{jqS*9<)64l&CU@6g;;8_D0f zt7V?iWj@z+0Mh{;FR?WyVB>>0#Q~;9zg%p~OK5V6G2?eXlTr zUn=!W_#?q-XGs4U_VpDfbc%T!B@Y$iHA^t3B&WFI$XQ=VP>zN&$N2^r0lcjk!>_0% zeqtLwjmsUS?Mt;s(W5$9YgX+#OdzTV6n^?fFz`{J+}T_tb|VO5#tSM~)8|06i$|pr zIHK6nfAe7A(Ob6r!%E0^32r;5yKgQb>(X(W0R4}@AF#dUn(}zuyBqbJEorQdGK#aW zzhdwrg%`S-)YE}7pZSk6!WT{31s~@d1y6Ignvo&e=tQWEcsBKWN$xXvQOT>!3m>1& z40gd%JZV87m|GG!0#`8C8p^=wd=hQfLX(o!ZZ{L-l!NwI-G%Xo4Zi?~Xv&1YT2*`J z`Oo}c(4798ThRX-D&7ARSL{EHNdk%eIu`3z5MIbMh#t^kv|X!nenh3=NMD6v97KJ= zcO(Oi1{On?8~Wm8K8dY2>(P5n8VEVtsyjz~SD}(c$8$b7I-36EN$j{1;CcxGhkGT?vugy> zCVo_c$29)!s7l!hzHKF0Qw;1VaO!@UZa2-7did~y$uA{DkONHQsI5IYj`a3A-rQ+D znzvnNUHQitBv<71i`}NR5d+KXd8a33-am&`hEFC=4fYu-ug;@p*dNtqUNqWPoScvT zi1(UxT#NiY7^Hbf>1Gj-90!RzRte5jy@tiP4HUB!b}9oYA94@^>L7Lni6FWv@YQZ{ z;77TT+4{@B4jxGzqr{nWFqIdy3^mwl`9Gf!fmrsmjORG^)&{P!8 z=R;!lS%GR_1y}n3j?cT`ggJQ!1R%vD^=K3YCcR!#!CQuI`KNL-6?FSuO$$|2BdADW zz9Pe8HgeR3Qene+RU)V-u|gMWzZ3)9@|m=N)HCxU-|FByz3|M%-aNM%ehg(>Qps^s zG0^sxE`{*9g%20VfV#~CA7&Y!J^zOH^74o7fl}@f6xZb+?%|BN!R`C8RAz$E@?vz* zkc7G0NyYu~O_E6&p(a!HliP3mw}g!3%$O^n!I-j)Ve zPnn7vp2t~{cc<|d1x*&G&c4PhH*H7tcwdfutmP{^w~^2sr)ZxOBDA1bmC*Yl%Rcj) z!(M!bf8Qwwmd04yGq#s+g2RV#vXe7d!T>;DxgYdbksllg+p6#f zihI9TomiNVPcz!JU9CFie*;ZDKRpfDF*e`1R)I^Ky#-5s(Rrc$sS5IiOr$gC^!10! zW1A;GnH_~bWaq+uUKKU&5ayw6D9IQ66SZ1r2&OQdQxDgi2*Jx0^`O$sMrHQK$VOU| zMry=h1?wgH51GwWwReKAG!_SfEaut70*qkb8U|BVz+eLV-VHQsyaE)mNWNOSgqZ#B zbRlgN93g%<$IjF9NDAt-+JXX|m_BHz)BLL!U00%UVY<&00PupRM%v&3WKrN@>j44# zv*t3r<&BhqHimgoz_~2tK?FLt$d77Y8kLGZJ&H?{9bNE z&b8Z{;*`+vPI+haiIktTGpa&X2$LGK|L=qOv zukPc1Ub${l!h#I%L(|okAKqQ1RlF(218o07s?s_c4q@X?c>rH27umu_aAV-J^Jzx8w#%0skXK(gb3v*q zBK<=S+#Y`0WKRxLtAC@3Kyfqp-E?z#BIVd4?MiC!8#+~DZ8^M;#XfvDui~C-@;N(I zu>8Cm@h2{|n~T6)E1xZ><#Twv*S+TFIl8~Fm!1P&b%E-w{xTF`x*?Aq30uniknTXmpA0jKZa#~ z9tC{nDZTTJQTNA&l8+VW6S!lD8qpEOo5TZ1v9MCnO}%IcE!A7eWm(_md1s0Kv^D$9 zMNp3YnsjA;$Bh=|rkpnHe;E#INfBs;g=!&vCknmi}^QcGc$ zCIqtC>-u_jFH0EJs+R(?2;k@AMw_1Mqx#6I7B~&&_W%jfF83^+xJceTp`p&6I&t`= zmhhRWcnt0xO|&+sOFWnBScp^2zOX5Ro;Qh!`?vEZ5qFSPSPHIgt}4ja%f`?cz#B*? ze4KW*B0VQaEB@zI0gwg|p^cc+d@`Y9chbuil^xQTWv644 zzIe4Y5prK7p($(0IV`H@dF31qwv*O+$u=i3kidxtng93;8xR!O^FCrh$=DVx-djP* zG?%Iu_5VmFlHciM7=E28yl7=Qqx~^oVoH-bYm0@~j0}2bM~}@;KSQZ5m>50K97K0y z&>@EN{N`D7CrK3;KCTaOs?VKfu}Po z%nVR4YGNSQ$ZkQ8i^InTcvd;2e9_;Hi+c)uUg9I?^p%xs) zC-KU+dCF6m+1vyZsk5$JMS%WU=31FAWGHe>XWbG~@q6%W?Xycm7`Kv(>BMA{%xFWU zvmPR|^i{;=lMqgQ73l4I7KDLi&;0R%2@EAlZdabna1A)orD=`bhlrnhqK*9*9oeUv z7o)Ol!7B0psES+}AL0brL}Qm*(pXua6*0rj+;mpyqLw)IdvgtkI3Kj+EM*u7LYqI+ zq2me9WwqUxYM=!0e@?9q%W@E1_x*7Y`_XyNS^-Zh@!=!ZOxE$;`q)ad@Ay&oKEJAb zKcKo`cjfc4h)wn3-ks``nzvuDVG@g0%(=*KjoR$FFvgKB_Ly&Nxt||JcU)hBaTmwPgR* zm#Ti1aIX?>-5=uc8`OVE7JmKgdR0ldTR3D1wY6jTn~jG4S>o{uNIbUQx*Y9?cL9tH zZLAe#tHp`Be6!ZJ%4W1>Ps-#ftfCv6^f!CP>0)CXyqGNuEdn^>bysl=yXhxPl#3)) zBtDzB6~RGFtOI8G=3%i!pJv)|m|^?M-1lqU>fdOylnE#aH8GXrEoFYeT3Kb|A9Yah zXli46Y|993I%BcJQvGcCt~^#irkZn`qslLtjIwl{(+y*5O8-7|sG7`wmS~idxSR}T zst3_71zOTg{cFZ-O2TRT|x*(4I(dzBkVg?!E7&XhG#gghxdSg?9NSryQI$i zF$-?f_a)k^%$M|jqlHeh+&12)DgNR1NoUQAusCPa2bzlg!QB{xeT{N`c)TIZAa%`w z0lcuCK0uK$?Jvu#Ou-;nX(JD++?NB83g%nhEG&5}uVWpeW3ezAY+^OOx zue=k3&Jw*vQZrz$n!N&xzV4T5$oe62z~N1(h(@&=QSISS-;B}p+uuihJ~D+wKnh~R zWZ^6n-z86{CYKIPq;KQMvbcHvx>D6p1H3vDfq z&n<&LUD*FcS`B_~tmNY_Df%4}2`Si&ODh->5iwaYPpl|lke#@?lglPylY94E<)8AO zTPWTlG%0R0vF-quRq*Vio;4e57!vz^vkSkLLpHl2Xky0g7=nxqr`c+!x(ug8472#= z2;_*Et9Y)tIEO8DRu-l>o6XXXpn;-4L{BL!R zJ~0@3pTArz%Z8ken6?-Om;-^%@}Pr-gHNsoPCuS}0|%!fUo(>?ig)G8@PJAv-}zt+ zCUW_+s^Pypb7j@W38mtgXpn{;q#-=W*E=+5YMxi0Tk z7BlCI9VeKQZ=POIos$t#Jnnwg$cZA2gjzB_)~mtSFcSZCc!)X^sV;(GUv+7)v6;G80-w0DkE_JV3SD9+bG0w-k#W zsePP3RV;qwK4ayI6Gh$>6zzH$DySsklH#^E)K(wC#OK9GiwGqdTZ4(&S4QbM(U@r0 zJ7$G}J)!(eLk2X`qli-zJ>)2>AaO83-Ii&&hSN?wLqq5t{Jv^aDeNe~SwYE&*^do+eG_s8jNpMP zV3um4JpZkjzGkjBsyzt6`!kKdBy5TLWUD1T@vE329m^i@1nq-b>y)B^6jUR zRc;WxBg~UDB4l49`LXKhPdy?~dB6ak{)Y2~df5o0(BAma;g*?9Vr+iVUDOH_TOi*xn@RQ;7-{};^L zTGgGcjX>v?oxJ2BhHHvFQ{%>>H=d72U<>K0kCxbMt z3YP?4e+ZZyOkTg1$_bV%2YSge7_`4bJdTMtQyOQNDVM^S#N%ut26AFv?WgV3`{e;y z0V^I4XL@FBx^cUf6>+rwob)*Im8bE>;nvnc{FOFF?4=34Lx%5m3@T{*@83u8oUNL* zFCAfEfv935w)Ev_*~L*-RzOq)3L}`g9+j;Ah?)5}u?0I7kH976)Q5#wb^!AY0>cW( z*XuuiG7!{SFRojj)bLIWQ4N3zrvG?UDY(J?-i~I%nnA;#fK{LY6RcI z;L)^RsAIaf5jYg<4%WT#zW3I1g6Kgm77Wb5BiV}Y@M!JC_x;VO*v|BLpkyc(+><1| zG5)HX3<+#q;5h{o3eh3Ld%2E-nBEllKwqR}7)^Z-GK$xJqBDy3nYI(I2$rrNiYPM) zec+}L!P*8QDG8=>1f)GI*yD%AVHnhgSUm>MhO}pjxaup~kp>DcAnBort)V$4Xr8)y za;Eq5MLksjQ^ZygD7L09lSx>{3z1dt434pBCjuA47s81jm8i7jPMM)Cp;@)<=_yU6 z!gUZja0iqKMNw<%4B&Qhqi-i#PYnMW97A~vw~f|09dW8gxA!7#^|(|b5q4`PY>)VCXErpz{U=cswdI+jyeDKs{HTi~Bta`C$h$n~6lDAmlRRLiBfVFy z517s=GR-jruDlM!pR^Ha>*0IL-rAt{_4Dd*^JJW0Vt?8 zZq(-f;jvNelg%!fCka7Q6)MZrf>wZ;dLwrWh?D-LAn6Ild86Me01KKRl|WbZ^8)Fc zYn$g8M9Qc?hcsHPfFX_7omh2shmc~h*}lHzY?sbr444~f8*bF%htC58hZXzB$9OwI zsLqRMLaWS4=a!S3F4d#Qu0~I+kdSt^7YO8^lGC4|#K+h*cZapXg7-7Gixf@zQ$6&v zr+b3lO~94V#srPGt)kwi&T-WIYr=hKLTk(DR{3+Lj~Jq)a0bjpOKMOWPyYHQILPFK z{LA&Ceo56eMql*Dhk0XTrfd?0CWm+67Cnu4k@u1q(&6&hV|`>8OXtU$DxwBO~-Wl zrZoS!2^&(CJo_n$v-}_+z=FZ9v*J`4&e`cnY0a&B4fjWi3VMB(wb9aHKxJ49SgWu9 zA{_=>;4{y}8&V|%jd)$TieCLMt3|z{MSUf)?_lEm#6P?7U)d5oFmue?j@J4m7vEIHG zOwe2rzu<=@X%H}?+H$q(XWr0N_0Hl*utOt(j2((lLlVF&Je8-J<&QE8Q9NooqM=tM zX+tS0L(V55f?awNy-TA@;lH7|0^h-n%`LJ44>Y?KlkzWM1o&=$^hC}?lP~V;I;c1i zha2Yf=LUN{#yeP!|uKRBv3AWiD%-<2as zh!PDQ(DIr*Pbd0Px&7u!j_oT}|_T6MW1?XCiJv!EI_9 zsaMq|z;>$64X>>YGo#}Y?AM!d|7`nPG9}=jozKPkEvS0#?Qtw{x{v0i>MVO7x7NB2ln=bEmGwHgwYxXg52B4@rg_C~?(m_gb|bcDden zD4KY;0_CA~;SsRV4F#imE>$hCXgmNTG%UY%;gP)cko7jc#?SUM`6mCsr;tNu)QJpE zd~J5BxO?nN0tZ`sjj%3WIL*+@BJPh! zwdI>NH8rMd1l%qMlv;TQcZL7etjS(5e=py2^X^54W;qUsGk#PCua>7iI1a*q2wE9ejL5Af7p%oC8In;1BzJG9ILK{N6C!pd&J&0d@4Km6!iI9_C?YyL2(ptv~R zv$hvm*ODHs>Q&4e*%N?A3Xmm=bi{fbwx4Y=n9v8=~U9c$ZJH%+&l}SqA?#6qB;Ld2>dk_@=OQ>gVxr6 zevyjp+?oi^`Es18gyg;lMr1}eZ{hV%Hc_T0$w|7{)1V1l8Fm0p|Q2R>!l*RA|?)B zqR|1ZvoXu^iT0Ai)~@!#4aY-4Q6DZwRDt&BlDTfGdWKrC|%z4@1chB zfX2)Jfk$60kxKXdZ+8iU2}mQ0e}+KBzwtdPyAGBc!>)m0Ah`icZ$FuKWgh2!(?F9&L1coc!q2+>uImiFZKVP?I zF$kl8Jxu=(wW)4$6GJ;eAeDF7(<*dIntSU0MVnX@;@e$=zUe z+=ucxHedGxgc~-zdm!CGq>C_8a5V3_bwy7~@ zD?F4cT3}B?^0$N41X`GMF&GM!!pppR>_fh4k<^3Xnta}E5!^dh0YMD8fyv2y52%P8 z+K5N&N?>=gBrjlB%__2CXet_7@x4h zb@ad|Hlnlt8$$~3xT5V&eIE=@%)4V(C5eVQdl8&42xsn*DH$??%fkvv_e#EZHGuw$K9*r@=Xi4#kg%%QgSu zfeBPa*7Y#i4;eRXu!3u=AM20dI3JiFx9$s%^e|(zokvv4U6C%%#3p}u)Bt9QgKJdl zYf%s(HZwDqOm;VE{aqqDqs&WQKNQlk^u-x{03Hm43}d4}2b}yAC8O&cjS9^1P)`I& z!$e{@?`O?#!gVxd8Xem>PlvLblbW3zkih_0BT0ukiRXq-O zJQyOjD22RG-VJ$jKI$0=g>ckV^SPy{4HL}O4TsPzE}?L1Pz435ui zHXw;ZObmT4#2L>>8GNX^aVk0Em|i1<9OWE#@(dscvezn?D@X^uI>cxHO!M6+ngqTm z!mwFFTfZZ4jnr*MSDy@)%4+^lqD=&DhKcj9a)XrcwFBZ_kDV*v$7iJ@I&h+9*9=-G zeZJ!}BOw)LH)U7IRGNbzCL7LT_Vr14j<_Z`NLK-J@JJ=uLt|dc=~Q2N{{*kUs)dzH z9~_vNTJT_)L>t)nL@&VjI1VPq?(V5(>6wIO5nxnpn!{5b+bwqr`})8Tha~Pd^UI-i zFGb)+h9>M7idNx!c)MW`6@}UY$!`v>_N<>ghXGm4p4Dix7N1^7Ojc6AH&<8$&`p^cFF zrbSTGjklX>Bae=F#uYSF86Sz+fEDLDEC%{3&Vi6G_#|7NZdLT94{BoPAl-c>72VFB zJr!1RAi2Tym!zV3ugZd;x&il$1Su-1vH1iHDI6*-(Dg%RNHuYh@uBIYh$Ggm4-su4 z3%4#PN@j^RYJjWU)I@7;u6gke)V#?l)~*XTmX|qg?qZk76%cRQfI|N={c{D1ThNHp z!G@LVs;9n0Rf%655W)&$8!9t5dyV}=4RRB!bpXR&j&_}cJg(HiY$tmCUad8z?|IwJ#y2T`*B(cGY(1r6Z)!`7Fiql z1F!m#1df;buQ$tMPrqM^bDUIQr39wD0xQ=Z`wgNe3?O3ELD~Z{a=m}>9xS`x4*ss} z*@m;9H~W)eg?ieLD)Lm31k3OGmnFR}EqYef{#8!q@J0 zpQOT8t{KWA5LBZvk%btGoYFbE^2Bu$l9b=ngkVi69!k7S`toMiW>PRj52Xt!bZ<& z%=}-+?4r0?7e4DRNMOPO*c(OXfhI;tRPWAGED|0Nk)(Q4z8%vK{u2!c#=Z{Zr9iX?L%XX*EcaFvF<5bFy4ax=!%wVT*>sKshlrT2AXt!* zrdjX{c#&Uk$2YBXy3Tkb=3M7JZ$0VQT50oUP+CiRc6T%pvI@oi$^Yz!1}n8 z*r7S>rJgz_>%6j`Ku5%PNh*O^FH#!-Q`WCGgmwhFIpa(;-}#t&6g9t6H&FIQx*>$9%iCkl8ef+b?H9e z*F@zcQNMx^3bHB+TWd^9h5Y3BHWKPZRAeES%b>N+HJ6D@rXiaTZw4 zDaj>$gmL4A&$bTuy`e8c)l}ZE?ygWOKiR@9StB+nZZLMv1{a?w`r_lghqe=rw(L2W zPNB)~10u6crmetExb1DX*i$mIv?8>28)ObiqcQ-dG}hl?KwAk1X+XNO)7A|r^Y>mjHAU!xnc^qvwtaNwawSuuyT8~42W z<>WDcaUWfM_hiLx7+&eZh!d$O6h?xL{z4GIh?K&ahkcBtY9>T_%peUR_SS zPaU5vWhi1gd-B)vo8N4jfWqobrFJfU< zEYMYVa!`agMNkV${IM1Bnf=X!&C3v}bUx+}Cg$s*zeLRHq@-3@UbH5E@oUA6{JzNL zOOIX~Jh`#$vf4B8zm+^MgSup?N9C(nO7jTWeRxpN>xtJ*Gfe#2ip)CE+$a_#^;ad^ z({p)EOr))YB;~zUQ{B>O`Dyb-h1|szB+9m}{>uQmEVcNh{Q{jrr`CQ$6aOIktSJRl?ruYuJYNLXFOL-+eQ#YWDkT0#TW$z;s&VEDzm9z1@!fUOI zKh1jV>9}LM=}eklO*E5Lzk+xb67{?&ud3gvj{$Z*jFLK9$i;7k*da zD00@-j+}na2vfQ!m9tL=(G2XB&o5#&yEYd%?Q1|#s`%Lo2`qk_YZ=4KTL5a zG7})^-bP3VPNReyPF6Nj8#Q>)oVOBt#8|s(6p6hQm4>BUZY_T9WQ+ckAy5OA-0K@Hk@uTreMhm*a>0<&ykQkze~)6aL9B~%E$=6a3O8w^)Xyt z9{N$^M1cFhWjONqtheVsYL+>-VX)@s-gi3O7&zmoD>&rorUnCWM2!MbT{a1I?IO69 z0~^@spPtNk;+TbRfU_Fq=UK)@+vTu?Z~^LHWxPlCyR|QV&$-?W2kX>H2hT4!ve3@O zd1#gB3S%iW=_rSYh|`PYnoo@sa9E=Gq^Ey8fk}>ZQO>GzvX;v9lj1n&_b&EXZ#w&8D#W(r)Kz){~o2-a@qMDboze8 zFjq}oD(~5G7ZCetVl^v24~VH*U|r%yCWQ{_v+1tMrY%|Ch=0*`9-T;IV?qgpK+X?; zz({>-yzJ8fjTDDbA&CCMlKMwG^MF%@2Z%i2&xpwHCdBN1c2E!X##KX>wXf}0F0*OU z8+=v#ddIFd3?oy1{@K8j6T2XR>!WggH5J!-K8g^(uK-4>&6_hA3sM2b3}h5x?T!(L z!{1%F1mk#RnH4|`x5WMJnv0V>Xj3KlD<_3gKv@r&2c~s*6WZfTb+XcIKSh(AjRgjE z7BR?7WP!^R!a3)VC>4Tu+jkZ_X2My+AUIK~tkJwMYENK#65T#A{@PZ5}IM|8e#F<{@i?5d#B z@}p~*8d5}7ZZk}Y`*`{(+8)e8xt2(Zwg(HR!8+F2R+swZ{qS*#t@x$qY(Qo zkCx~$z`O3oa^2$xrazs)L#Ty*+eFd^i7jL{d&!Y1SNXeJh!+S#G>1U$S12ymY6`jn zLn`|8>R+HqpY54WSTHEeY(~MSjHls5gFC%L&V^#uuzPDGJ;LdH^jP4@EC$|UR3>mg zzysRwuSvb0jKJWKlwPUaZVX*$dFaqR-fS{`un#tfQ|%A_-&X4X4*>#a*_{7|rX+pV zl889XWFtg`qx6O^C1}tk1mrb@28?sr0eTq>`$U8J4@bQJzXKzqK6_OAzc7`zKz*3; zgK@p!ZBPL{?Ii`s5r!TtH>cCen*aoz4-)i(g=EK_5IVW`K0hi2s<|Wk!h*51X7mHb z7n|v)8?aL3ti=_ycbukU<-m8mCF;mhC$@L@j(lo;2r>>O>ss4COs#ob zp+ZPKB6eo`upza5{(ocUILRn}feV$2$RF6g%zRlzzKP2!%xq?1VJ(D8qy<)IjWxaP zN}?hw-?ApSeg2b1FtCN3qP4F)F}0gom9e|~N(9)2UjP24H2>RxL(gKW)mMLb=w^rm zwOBSyE4sXCp0D9AHw!A+_Zj+YieVhU>Qv#=80x&XoFWL`1m1Z-*6Tpsa$D+Xce8bX zaU07+eQm(^Ak;P7vu1aHYL-#CyU8=TZldHgBvI>gUs;Gj@9Tud%&Xm? z$;MU)v%UU>LK~U(;DV{?Sia5;K&Sp7J8ZKJ(0Ad(PCiY+Qw2-k1ghsmJX&{%fO905 z6roGK<9~}B)7Mj7es`e+7t1-*=m6s5q8VqyU~dykc(V~`ABVvMdn^= zOnJ*6l3En2Jds0ABrIN(@PTiys#ppME}sy2Bu z9&4vg5v~D$+{nfQO2dAg+xgB%%L}0@xAJcPmHu>s>12Sc^NfAcYSTTMmCRnbq?ZKz zWFPSmuKlnCG3)wE4tbOpQt=scs-R`wk$ZTx8|5INTIS34beSG+2&RA5G6N;RY2 z1zGc6O@BHgS*7=Ue}NlQ=@h2})H3hyfmGftOG^2mWv9{|!W`E#uqUQ-<yY_&P!Q3EwUn~M=f>Kf4Z?hKZQpVUO;tXZAegt5c|>s$_M-{2>Dskb zhs>>lH;h1@KI9i2k`;Cmn)EKl;oS@BjWYpU{Ng^f2Aay4n;48_jJ=y5E}A!d&02h3 zxCr%%!?-o$1_N!Lpu`RI7brb=k%c9kz;Up;L(GLW$PuGz+9ZsPB{Z5g$Q%qjEO}t^ z`&oX_7TF8BLB7P}`zp)&#UI3|F)MOx!WMtY&v#1gV@->OT0AV@bwgVzQOf18wR&d3mg-smHq!wj)9)`vpD zgmd~LRDJ;5h5N#J>Pr!5!hJcnU`wku7k1qye_Vb6cg}_p6u94l>ZPhkmDV@;8GinP zY^cB{o6#kPq=BfL!we(4_p-9ex0_4*I+y%)SRR5N{1=zdYFhS)C)aJ-Gd-HS!v$}KPRUh(B3M~j7^vh6N|m=DtnDIt<+E=Uu(**>^;8CET7Y{}Lcp;X zJ`$DG6w2~>sTa+cMDz9)bL2><(RrvXzP?hkS9~fLcA|SMIT5ANZ|d?80ysQfhXVgo zeeFDcoSkE+4l*tCmTBR93rO^{OTWV;S&Eg>&_{?khtwNoP0(O?t+3n>dK%#T5r%W} zRB#XWF|vLo?$uj4)SyRroc)YSokyI{IjxRsFX-;3Vu9t!9n~|1lh8v(pqf-q@Mmk6 zVvYsuV-Z2$=#y`iAWuziK~(M|imIh=I8PM;bt`h{#C?~%Q@34sEurql zeGOX@k4z@X6>JdEYA^HP)f>l2AYtCaHF2TH(@Fq`$)^V**X?S3@%Ml^#3Hy6KlI%_ zRx-|IqN-RJZN<3%yK**Mvhs*(;OR=zXhX0>M(zse*1cGGw6GbmIid^^2%+?B zFBjwHa{UhOAVKu5SuwmmEjGi}w^D@hhxBzE{Iy07yKTJOI=$cf9Dr@O<5zFu!_BtL zRe^~QA=2Qrdqw+(tsvWuRL}?}I9iYpcb#{lnX-7gg-{G4rL>3BzcsAih4uv!$ngpUrc@h*ALn2{-XV6FKkvYnx4)l}s*Y8UQ`&L0CQA1tz5C4Vk&5xrOK>050kyndg@LwFH(fcd12!GwHjwa`Ubngf~m zzAhR!$}ez*IdgE=vU1hVaS|X`U)!vr?IIprz}B?rP7xU!YjBvS4KZ;29=}&?$XD^O z1Io%-2}f8fs2Q%bJpH)izJuqm_*w?=Jk!I_JWo_ZF<_I(-B~SvMe!^oTV6X&YE=fi zmCFEF1=gJ16yXD#GH&UgO^ zO3Jn(B6m?cR=eRO**f)yE?1^V#2J=!rFN}A3aBlg@HNEf^TknNR)f^i2Mh3Fv3T}9 zdg_&_bSYSS!d$+(+kpslb<&wI{|?{{$Q27~`Vo@5T?1Drn4_RHd`zgL=ej&Y##&>l-su?+9e{?bmnu&<8P(6*OV^*hcoj^5K4*Q3}S|O0>JU`HTuU016!n*UGSWjn}|hbU5BPk{mR)29cbQlx_f2a)^wF@slu?nD^^> zk&kis9}Xy1^_!nU6-e+6sr+O9nLwy>Qz!(EW*de8Vyv;2y+>b>wg1da5d-H#Q`fP* zAyE}gr=cDzF(Te^EI^+m(#C^d=5EV*^D$|`Da<$VCVe*J#Mgo&(aUOF?rK_vEtz`V zP9g1SUBDT8r*QwuVY{ilSz4nl84~SC0GfY^;=>IN1-|hWNIce z;d}y$YF_5cFuL)>|I|V6AzPof6ia$!EjF?#8g|A2bz!dp+@NqMF4~fS2aoY=>!kW5 zAC>rhvF6*p$Nv0Sk0~H=V%MaC{z2&5cw=-z--#Skq+4CF{7`!59z@9qylg2s7lXy;}{7Tn0S=m#VL1@T{7)>w4!@tw|B#pld z&YHeog3Fj&6?FR|5Pqm{Uqm*@>?Q2fuU{=|mfU|}>z>?Ndr91q2pD50HQcHMiFhl| zjof|;m>_r0d|1;7Pj?9;?#IkNo?mlIPCD8Q!H-N%{-7}(S=JEH`(t$_9F+E8yKDhS zT~zFbqvq__Y03D<)s2)@ znzwGB`t}TJ1c}sT6j4gm9jz@4FrdTZ29jTOPL9J*;R41m)ueP*3e{VBV;8DHYI-j{ zNXm>v&kT?VHBc%tZ`N6VVLk6r!_OOhP>R3d^PZ0V-ir(^2#M!$9fxIIzXWjAs-@t| zd+fb0ne*ws?xjwvqNB;F+-(_8g2)^s{KjpMqAJ7PNK!r1A*e~;NNCC4 zgDJ6+Y-DluibnlI*yD%c+aR&KW@{EHiJD9j#G?!)FTKX@Sf6)4z5)4*oji-qk1DG% zrSUwt2(i(H396Dw+&~an=y9m1I^YboAg5TPs*T!z_$dO-)@w%7#J-AVrd%m9k)2U3 zYxkzQS8HXofd~2|l3%-ycus(n#;P(aM>F30N8V?u92_IcIIHF9is@rXm8;6SSNd(# zS}J}Gaq^=N%~QQ|{N^?*Ea+Q8gFVMmsC8Y)obT3xmut&@oO|E$jcb~pi99>Gn+Q5T zTTjt~*5I>l069*0ZybXU8!Hd8(V6(ihUDMKp>Td!2t{P5B)&ZwuljF5y%-SYmp-Q1 zuL{$zg2L3;uWloj%pJnI?9p?)c{JY+5B3c&@5}} zI}XTf05;zz4o|2+7E@PVLvUg}R@v|CROMOc8TTs?4iScMoGjCZ_mk8_k#Y2oxO6GN zJJ5+k{@(>Z{LhMv1zorIMRE8rFQ3*mg+nkyv;tCXa3h)Jbf^%>tXq?*NhH*uQxb4N zflz>!`Z`5=_H$scAQgq66K$eR7JqD33g~Q0(sohN{ng!X0!gv0{8)*3!U7>+^OZ$4 zo~SP@3o6ZMn5j(omU*Gh>q(Lhqodv33C5Sv9Ii3^LIAoxiorbGHU0#I!j=I7*;FYV&fzh2tnOlrI7U*S z1c+lmKTk@KpT-lqq~FRN3wquNIPm;)d^=<~r$Y_W>K4Q;XnxM(2Wu_4`I2|#QJcI~ z*od&c=H{}ecrl(Ds48D4v@1jKmGDxyd?o873h<6DP=--w?%UJ&-NKTtc*QUCGn7bg z=abCcr28}bmXeIK4lP{#nHoSNTvhTo)d-O|IPK8pUO0hihsvb-OI^#ilQBzk%;P@n^7;r_2>Mp;C z^gmdA{HRKArzr0&Pz=8K>j@e2-elyuFqC%tZ^w<62_^f+dhWbBH(~qo{iiVfIzsLd z!}f=bKshxe0ry?R!;4&{dwguaWY_C*una0+f!)M}YD_1)nBXO`)wP04{w!XRUms)s zbtS7L#yq8+QMr6k*Fob^?!m0cj~Tt(LOM){X0-c@{M-1t z=igj6c9G?L-q3!9X`4YP>WA-pyOa^6Qv`~&gG&hdSgr-XT1h1xY zxM$V!aW&$pm9CV?hIsY@2<_R$_~>60|% z3!TUq$-s!yaY0*w3AlvVdjiG`*8kxSEG1)v+>cXSwsHt7r#%x<^H9LRr(9PrD54`8 z!&$SlndaghNz4MAVfn{~m=L~s>}qSZldt(5(PHpcMdj zWhk2fhXT&~&CV$q2Yg-Tgei$FQWPfuhhJ6`fP&^s^DT(yco5A$tSx#P zvw47y8KiCZqLbS($c(9y{;gpDLV&w)r0f(FmmKcc5q>bjTj!7C_Pc*(E&{WL1B6j{ zL?Di+Ncf0#(WQ!UkcA9`!&l)bGC0`zs!>#@epHJ)|4$V3&o4%EAO9~(Twpr?+ijKq zzm-v`A)0${2EC2MFhB|KG)izz9EDRs%u56Xy zF7fC{vX07cW9LQ~EYAQGWyk+j>TigSGVs*N`qy18JJtt{AUyu&t21jw0#mbVd3pM+ zKFRqj`6~mxIvmf0Z(Sz@ITQRBc+GLujM$&2()&@RI+`?6gL)UsNp<_TeAvJ`FHOOO zJ#J*+CLVwIeFbDT!$!XVP&7W$Pc2uO!% zqO0^=II+zmT4d&CE4q|k&Qs(Wcc2zo^hEv2@@96+&yK1XHNfz*l-JnMk z8-m#jvK`1xGKfF_Bmxr5M*?)%AsQFzfo6*?m>zHVPI4cu_?}CSpI!%$(b0i}!_5`n zgN=Q=l3mY7$z@W$o*cp5W7_*1yW3k$)WM!2BqHhV45 zxLJaIh5g2uZs%PiNa3MNx)J|j7P)s{@@3R%u!0=fVBb}I-migkE;yhNG2I8XAffhY z65?0$=9&6|%_R>hYUl?sRFXSxVW}MCPLyJ%m%>xKgEDUPgiHPSexW5AL;Ir4;>`%@ zAn|lTrnK*c4^m2jjHoS6H!%&~_HtambucZ9k%Q$VJF)adIAKn}Hc;#wFGypk!Uo#M z$1GTovX?5fCXX{LxI`Ji`-Kp1P(i`x^t78lD1KMaLrs^)-$MTVaHE^i3SW14OI+Ue6?;h*gUV8ue|BSp2%Qc^Y`Kz? z?7h92Jsna++r|3=;@_-4u>S-YPo5tpOQ^n9n#e?iW4sJl`sCQ}3a>k+I$=B)BIbRL zot9z;4U2my^-@+80^7vi7NOd*`Y3U41qQME%;>(TIy$Ewg~b(dDTQPw@5`*ga<$puEr zZS!OfPMC>h>K$YG;nFIl(H(|`feU=3wdy)VuHgYo>c!7CN~csi@VPEg6n^5Cxk{1x zD|H`#imI*|H}Xqzs4Q|D3Qqa890<%nk^M6@cOL8GbGhzb|AY`FT@?A)mSUQ%Wtu`o zZ+dE#vAfo5v)+bDXxq|2LeIbsNi$nTX%huE9)vU`%&}9+E3s2^MkIjw(2)MjsHcqO zg2+T+3gWKjWJv!s831$=HwQSP<2hGvaTWVpR-}+aXgoRhQ#U0Y5+Q;}6;uBbM!})6 zJT6YH*Ta$&^56E8UbllmH_H>OT_aP(fIu%R2~8mJ0Mrn0q7LXxhA%Hyn1E7~nk^~9 zUeh*>{F}8D8#?ar?E|c4^(_h0Y|7_2eoCs{_>XVcreEs*q5v_IW01lHAizLCE&SJ+ zf_BhmgO11~hGK_vL3Ly=7HJ}Twr;|?hw#z|9({!-3D5D7v%hU0FA3E@&-?u!O zD%`1o4J_dbIcj+^2#4H6br`>!Q=CS~1DM)JWW^0sSnrF*-pUQYM)!RAT{p$751IwTMjqTLu#Omnv^(V>O6eeXjpzAFqaXHnSVEIQCu zZx+Z)SM%w}0qZC3=OrE#Ss8)5PT+(*g-Tf^E+7=fFZqEonF`lkfz*^T3`9 z9;w(^kT2UmTu`b_cBYXUd2paSSEN;-;5!l$CgSL{97Dq4*&)dHlN_vCHNT2%g>gB( z3DHgiHz%5}BUb<{U*^e4aYF}cK}z$2BZZe;aiZvII#o7GMXRCKtS=m$Y^&D!ec{3- z(Q{y5JGCNyR?Sd*KyH$N?@AR8VD5Y;MV)Km80SfMB($QRfUQDR%Dvb zpn-1Fq_fp+@12!bqfVW>=$dgv#TIZW|E(?l1=K>k)oi#+$Vq8@TK%UA*o|ymIz~ng zl@nM5hC&&`$`h1}s&3m~Vus@eBHT^wc~y6!cOpNQLC|I6^RkP9s+5 zLINor#-F@Ynp?vJx_at06!ne51i?ai)MK@m&5cQFO9i`>(m!%HO?g=|c0`E&7xQ57 z#?@;_q1-aOg3YrdV7$J7VRi-$1lSMs&NYPQH9iOd4<*@x){CG`#{`-aNScH_3Xu^Wq)QX=CnH^&g{} z5U1wrj+14Eez@wpPw^hD(v&f8pl`Z}pijq3){~*(zuFeHr7e`+j{MU+=)2_IAax!r zBvAN$Mj`CkYXF(dTjH}(Jv!L1iq)I}$g2Hcr4?WyavBX> z>!gWX*h)(J0CqJ$^m`9fZ8hijPM+zdI)tyJGXA*k4OH`K>K0d8uB*AC#ew+2lZg{z zXlb&5q&8B(HzV>cM`X1xA!0pt%brB-7ej;jK_Jzs)t`y1h7&TGUkA@Y!^h z@X(tF>EDE{=glZJ=GwkrJLfoH1uhe>fH8`d05ZL>`B`s&s$_FFK>{$dsUMd7o(^K! zP+kefn!R%_h|9yQ>K3E15!npg`$hLA|;=D`p&{R9=@(GFeMg zQeJJiohz~?RRL{Y4$`GH0$NjI19ZTZ4#Fz7Y$?=!(bY_OfwR0llnuI+$SOem9|c~N zGm_mmH?}~`^2w}cYzad}uG>LIj-bml}`qvKed39QtPMNQQlNBr3Jou@O1|8C;~r;s|}`xu0l;#bA$shDWKDW+N@t@9qFb9Q*_64 z=+&h2k%P707*F#CA2;^@Q~)<$QpPuf25A)Y|;Q)d63pUnvxcFgsEo`Y1CntL=kq%-Go!uJPIlaPV&Ga#lu6v&S~U{;$>vhx5f z|FnX5GZNSi$}!@~Cg>@n#C-2S$ZQ?NjHgzrDNNp%>=pS^T^jSXdev9W{?;p?%`*72 zJHUL15|2Zcn}YvE9vm7B3eQAcSZ2(#1AQ(QVt4fFKv1DX$yC|7Qk8Z?+ynbj;s^-E_|7aNGGeCw44ZtE4|HCze1EWJf`29WX`s1gk z4HVfS=q76X08%|A&gU?hC|XCE8+_yyP+oE@*1ubCZe z>}O6r@;<_Z;KA@0f*W(wjU{I#JymBv4X(&6de+PS&<7&?-^lN1tpGUJN)VcfU&Ijhl$hwFA!! zSxj!9b;{M8K#X;L*k2UL0SBvpuRqSA^+zoAh?L2)s3|IMjKuHY>$E18)A-%ck00Q^ z_z{VYZ~BX^P)6)xx!J%s&QJT{1##^qDNu966e#o7k*|8YPp+o`uos(Ag!~$|8ZEoc z(aO7rAzA{QuKf1I)lM0A8qmN1^w*7EcOA;7x}PSMKrq+{p$i zBnj+e3F+Rbhn91i%ChIP-LQ7Wq1Fq^@`eW`r9`}^$-gq#o~LplX&&U87;gmfFmvc>+Rvd1i-u5fUDauX1PtdQJ(~`FV zIe_3`a!prLxsPZJ0n6kDy0aYwiTYs#Eo#oFM_R2=>zH?&q$-`q-^<^*8*< zt+M=mPD_|zIRjQ$V_9P;0gkKHz<9ITxc|^^jgY-O-AvZcHH=z zJ%Nu86nud$)%Z0;W<@3Dlhs58&yfLN$>$y?ddwh@zq}4r17XYzrsGeN^zW{L_bxfK ze-$W(Dl<&4k?BF2`N|eT2bp}c zc>*8xp-8%veDtY#UNqh1GRk%rdt~aSuv3Jv!xCHdV94NRKANd>at7~S+z<`}Y|C@^ zva~@FNepC;IhU|9vj>#@l>Q=mu)HrQL@Q!FvJbpN>9@XlE-)#g-WJkKCc)iCt=M@O z@f-Gn=zZBRKdw=4_d^rrxXosF2za|1D$;eqMvs;y|Dc4jujO3y;2}BM2L-cG_O*Yf!^_DPLzcdyaa!sA5D+RTg3Vm*jZ@=>fbB)by)DLX#WnK0Wh9g3Ozt!@WD@&;F zkK_i;G9jho0Y8Y`X{<#;xEteALnz?Hq{V>u8oU3Q@#84odsh45<&niyU-CfNCpLr# z&c@g6c)}^1boUbcsP4(6w4igO@z1^$xn|+`p?2y!KX}Zgdt}qCJ0S=B8C|Y!PIRR; zHvuCANb{#8^8aMLx?X3%y(fPmZ-S|`nUbj9FG=LJFx$?cAnao+oCy15d$JT(oLrz7 zN)s$Qmk;UMKiJ=uyuo^~R_1>gViHZ%unM0&i61<%k4=%dMO4fr?^I|`^dC%ovlyMV z=i!?{=oZtvn@~XC(v7_0x~H#c9%xf3hfrF46A15ju@#|^AV>Tylh9V<8*bzj4&BY) z*0e_;#qyKP#Qx@C4V?fTW4G$lqJ%@i>YRiP%#Ao_rM2$vgZ2C57l*nDvpX-s5hY49 z`RL&q%zUvrz4ldkVD}MjXUyRrfYBp}ThiV0YUb(^j#~|37%4}XXHq8zlZFh1~!0x~b~-Fl7MHP-w@P+_FW>(XE__nuIVNkxvh3 z)2$s;$Ny0IwZLtVx^^6x3%8j_NDvK}=CC#gXE&`0@k@&ykvBf-PZU;f4r<+$|EJJ7 z&I$wJy~Z`vrfx0kk(NqkB%2Ad6&tZ(Zd zc9C>6Za8Mwe^9VKrvwwqzb8-%$Pzzu`$S|x;>M{}^Sqxw2LFo?{k*8XnwX1^X?vT~ zJQx$AKv@RkWUI}5fkd#nCbR=0xENz5Dt7GE$b}ylb@`P#s0 zi-rf`MNZ62?%Bo|1WotbyKPrq7Bu6PDeIih=wLp`h9f*R49C#+UNBFYkEOiC3QbXj zTq2)DiTB6xwtk-5K6skQGHLq$aKax$#JZNMcs*HqqNYHds*q$MG0yXkig= zoncI415D+tv%??L46|HD7T|zhqaT;hxq@!`7l_nY2FB%B#wo56Z~$ufzrqeHRd+UE zJ77(q`+ZKkT?&5GCy~P;ML2@X|4@xjuadzh7*Go;+hN#m(f-snTz~@t7a6{mh z&$BN*m1U9mATZ8mbaH!bW6!<1tjhaXYIg&$zv|QzP3;I0%4fHC4{Nv9+Vu~rIn)?y zlj{sTL7eMEi@yx4h4=ff51+jKDE6LS--oZ79X<8lS?zFw)-E;~%^FMPE3zK74Ajt} z7)4oXI~t+l;3E8pJVrRm)o8`$uac}nYAR&3w|QUGZ`e$l64;1_?16CW11sC z7EBDC#{6JIhSXk=TVjlj$&S{# zg|OBvf!;-#dNMlCR)SzFc@@^dW*<`8QI~ADC#)lqqBa^`lN&U&vul(9_x&Jh5qVe-asOSwMYlFdZ&8J zj1p3NYsJU7`twvQWKc$Hh7SfL`Hd&@qD=QB#Bmevua4dqRoV(hQakj9*3gZ+f8oF} zGii03FlhxtSeQ4jZ00TBWF@aJNF9CDTHrXWQWe7cEF#B~u-T=UW+FId^@*{CUatFh zJ$K{weLusRL3)U$ye`i?6yi|Xm(h69$Av_MiG!tT7(Gpo9S6)?2)}3NGH&0;@R`F~ z3`~-9=O3D`SYxX89$^US)M5LSyme(3?wQQ;Vs598T5RSXISxMwi7865+Q|uqR3;2d z?tYJbO{?Fg|7*XIEY{m+6h{3d(5>rYoNmpEiYY@&S>C8Lv!p4Q*SB+3X|#F-oK05) z&};6>6ZiML1}3Y+gJH95_N#ThQ@V%t6e)f0nG;IMlZ8sAuf$oaJ;l(+i^-^W{EnZ_ z9KfGXLd8ZhHTV{KKbV&y@%L>LeG$(Q`^AobyhN_9=6ru3R4$9L_bXTawZ-74%CTY& z4u|qfQHf>jDGm;q#wdHU#~42>jLO*g+hzV2$lEIU(chd%^RgMe_Ludz4}<)93o{ zt$DcJd1gv)O`& zMD%2CmC!rpCuSS4O#V6t`C{{W?RRGldQ*9A0}CMQ?DXGR&55x0m{IEpu|1bChXWeL zF{Up3W$XF{ipy`0slQ!*z1(_{X(IDZ}qqURjg676N4{N?x% zJyPJ)BXcF6n`rl`t z9)nN!BA6upoGc7Kd$6Orka5ys{cZ_5*?y0}9q1RMtjBK>#OZO5fbN%{?ApTkf6NyK z^bif?lM49tyGQ2qxGSYGAfR6FNdCv%V8Hf(`UXgsKOuh^N|#4qDC0FI{^bC-Z;$&P zFPtdg3u_w@FP7?#rc6!HFx`U_nC{}N=~(xGX?{=37|u|?!U4@L&ux-FeiVrV7@PD? z@YP23MOFVg-iqV>g}URVWNbe;KAc68GJfho9xi_}@3D#RQ9CXz1cMLq$LaMzz-$ot zYtK$zKvI6@JMuJsNByK>td=2azInk?{&7VM6(Z%ZOwU2OaPa(+$F^HCZ|TBblg^(L zttST}2IDgFu$1&usHd)KeI1iXI z9(ks(+^8V(8G$`z%$qZYHU&W5z>9DGL4L z@W(;da0MaLfgr+=Y=3YseAp!mNSX(C45ZAcGHIoTL4*UF?XLzZJ%{$8 zAh=i{#g!A$Yqm1TqqDZW*VwSEF|*>L0|+jKbOtQ`;Cm1$A}|9zVWJJ74BxQx> zd_>*t@PTC2F^=7pkBa4v?=OJ0dqa4WT1<;P;oD1w$7|@E07_gHyy&VY#1MMJs5A!k6#6X@04s6OT7jXi?mLdHFyBRlPtRuh1e~1?4P#SJM&mi*hqm z<04+o$OxC2>Ad>wjwA4MKUY55YnQKKfQi6CWi?F4rH+3p%_>l(Z!X`+H7o68vDJ0? zLgbQt)iV4b)6rn-nZDFmT}Q3RCwE7xVM1)z`E1xi+HA1$VpG}b4^Qfl@ZnvB+mq*| zvaPMc(#p}s?Z{P0pM($<{!DU=thDfi2x9_x9rJkbBiCfT$-WPq0fx})9mz#K`-r4> z!Y}tO?L6b?kLJ~YcA{3ga@?zJOokxQG z9m#O#_$2{Vmf{iSmS=X?zH{E+@TXGgCX3eCg}Qpt8gp~%_Izd6GZ$mCukvvl5OYZA zeD6^}h6{0crR7)?qofx2_4`6orr^6~;h*L~s+@R|jVmd3zWC1@J_eN=D8XVs3E!+6 zORg%X%q9c1%wAVwtNlYCspC|qU~e|9!(gX(Ke&wNBe<@;tyKrM$1jYbPrAombvbq# zfHl-5vp4;)iyX_UR0r$L2678~iG{R~#rCCWoQ-q7l;;Z9uE*C|F5gyIs_^Q-&LfOW z>7SAV!g#$1VbEQ(y`l=Wf3_<^qR!TJqxc?{(z&lk#njPro;GSSb!n1MdVM~<7e5#= zv*La%zNWM2*`Qb!e;z`r<{ql^=H?7SLk^HdgWVRWUc+{qX5 zyKJ-ZwK@C<$pUtn60ZxeI6VLKXv|n!v`$CaNNoRnb)3^!Mx39dC#Uz~=(uZknb>(> zGYY7fW32Q@E&sKeP3P$SS6VALglW^C7Oe22e|osKmS`X=9qt{<*Z3xrrMtgQT6FKd z;s5sYo@H9Dz9$o9d_nMdvbXbLt;+`Hw#fZFTXe7Lo@ zzTJn7$wg8ijcOhUwxG0A_qX(U$_i6Dd|oBvd(DaPZuPu+0LRw8*_6(Kq$-rPguu$n zJV;~w!QOC%-wZzU}I#|1i37E`C=jbv|_Mli|EJsnI$= zJB;)2X-#27?u_GpO;$POGuQZ>z~1i%^7AY_?_w;MLsK90v9Z|Ghcz}!Zsl}(TfaGM z!-aQ5yW4VkCqL9iKI_YrOqPtEgg=Jo<$r@E5z?79P9oim_SJA6h^>5DBcY~PhRbMOcm*(+` zzTk6JKfda%R#L-;RFCtuQ)2H5YTMsq!_QFWGQe@gPB9HteRDHzvg{L)l2jaMQvrK!Oq^{K2ndd zl(xiTm17mFDaSUHkN3Y2VrRB1x@h6Hs_EP1k@<))Q0{5LZwO7kJKCANB#G5=t7?Cr zJamXvNIq@y;a>TCn;lF^{qy(ng}79N4uiz{w!wu)oM`Wkq8q4kJgdB$q-t2Ns8H;q z)fG_I-2kzej9F5@KC2@`g{x7-Tv)dm&DWeigo+7X6zRM`8p{2!v*Zq6aLt6^Qp8U9 zBf}gI^Yrm=-LnhKK6WICHp%J579}yZvh1>~cNX1)*G6bdH*T968x<7}t$NMRYpR1L zA+g34wGqm!g-oVG>nQB_uPf%|GyN>(4zJ7!Vw$cVe9Kb0$j{9>b}@w{7siM{K2x@S zvKq1^bT?VmM1|DHYOI}u^yl==X9eM?ON8)&NZ1 ztf&{EGj$32wkonu#48OWb7QVKo0-^D?6n?S+&fkQW($CUSSWiU0wKkZcNf)rf)TuT z`AQw@!f5J}QgU`#apyUG!^OPC9g4`or(#>@Tx>nHH^j}y$@2P~(~s`B zs&Z{vU8mqxQ>pVWOCqAikNmZrsflWq8=N4lw`YWSOLoRZx#@m(6^Cv z3Kj8%CC0)O2T4g~_H~2`_F}g$b-HGj-q%WynGs*%&NE11oEWR;wxS(<#U0;7eMjDJ zLq2OEqAo*nSmkZ8bmNy}QOL86;Gg=;>J74C2qckTNzDzI5(1f4W>omLv(`KFRT3Gy zrI6DDhNFpMY}YJJZH>2cq^#_pVFJ}<)7{g@^SRm4`ft+=DjckvaD49PZ^jDa?Uf8y zjfP4Me{LswB_z$K?BeqOwRh$JP_|v%Ok|p}hq8`gk|k1)r6!CTWt3f$Wh|iwku}21 zSdzlX+CoI7rmRJnv70bLQIRFamMq!Hk}-O3%^e=lbEk&fM2^?(;q0 zbFOok482cd1}Sf&-_^%`q|Elu*gab{=6`8h;lsLJWJ&bYi>|?<-On4Sr%?sI`7+N) zNQ8!pf#pClo!8Tzr4#N>sNPcw1rQ!sC&q8E13dghMQ{RJunOfeldiNHmNB@qRAjSKJW=jr8yswBZMq zUAHlet<=R{d%WWZ`DL(mmyyU<+YN}Q6XzJj#>Ul$LF<@rxm1yx4?eo_U_}P_AAc&W z1#qT-NctV-hPk-s@tf}iyfV}%01b}wzyP5^PpvmZ*!p>y060vTYcfv(mOxzOlISkx z!B2NLKjbPm))kI1+I_(6)=Y#4rt6?Y3`KbN^p5SRsNw*oCEZ+`2Fn~!E3{TPfTl_H zsCev!6$sqzlx2{46iAD-H4hTkj9Ve?7b&=MOlTWF*K9QxGFr%k#4qaH=%%b>Jzb4- z!js;AF8q+@|B;(MG4%Z1rlCXk}_oe$a5CA5310+egjyouHoZdLbiZCf7lz9|s+ zsUoT(3sVf1NzN8b50a4lKo5iYM_)?`riCN*j`X&DWYB0C{>8QQ_E?P5yU>-<4DE%z zYRfY26xP^Gv-mKS_rvYbg@<+s-!|vRY%2YWL&a^R9Sh>5^T#sPj)0whwv2M1xw`0B zLeqDbazzLIymr~ACU)e}@h@>7wVAy~lrP`Q*rQ}7mdW~Z5d3{DFW17;z2_9Mwi4@f zBW*EfG_2LSO1N!zp;%RLuKwEKf&$<|m!8}!P4p5N%vsmmU-s^5wilz$J@b3|z@da| zt;ZWP1S0KWdOXu}5~U7LMrKqLRF@;Jzk@^v)_5@=ym&!%xbgb5(yD!_BZZ81)4b%J zyE6dn&|K`P=xcVujT}?9E3-6sttwavmH6C^bY9zyL(gg!J(sd}RQX)R=zZxWQ%BT% zXa`qRMZMNN7w4qFW&F1iO4igsv!&n6KF(BWpyeTdroGtVWh_yd7j}){BgBkhlRH_* z!I0uLm+NghWmrVz85+|xT)bG6gcqeo-u+xt;>R0e=gIjV(HNjUv+|Xt)zO%z_J*b) zi&7i>B%bQEG7Zu2Y+&ivudtT+n-6u4Bo^|IBd?l#-+F;)(3$baXm=IQ(spy>C(k6sREB zpTA(C|2bG%f%d{iy=sM&>mHKgWTp=DwW&bb(|%%%MZQ z`8bVTSVW=HVwPaBJDTu}f(?yPw#v4J8(eQ8T7JFYuz;y{J>>w!KCA{Bw?LEc*O5fm zyNU;WgM-G^;z-uis&cTYP*btp{`|IEY+$tAx!Ex@b_bpoSKhNqZ*xkWRbj~31ATf{ zAbzF39yMK80wmRyqd@)DM1KQYuZv?Q+pf`9AtEQIIYFurjVP=|SdnL3tt#w5LSCtV zk1vc>v8$8tOz5#Eo|KmAa~vA3i((P^{_a*ETdL&(JC)Vvo9RU-43VC%4b97_S@Q?V zq60(Ps_N*`E7bEf1X8~!N2K+otf5sPKckIi)*n9k7h07EBGwJ?0Zz(3z0ZZi#!^$) z2ovqxmV*^G3ro)X_oRW2yR=!ikIEe0S(N97n$#pubpgEqj!_E+lKpe8m_ys7z19&o3;2u)_{cQ%=$=uRELp3xG}=QGR`e@(3;Pu;-$Egxw6 z@?&xZ=0r8oE}YRo9?kwm*wdeWrjKk?@E%Jlk(tM!PK7A+Pj(hfnMYO>i>WS;)D7K) z>LpAd1H6WMSiaBIpnY_~n$>xD?ljpnY9$KRV2~g%;*D{x? z9FLa+&9A3By*!i$YDC2AEJ|VbvjU(UGF82K#L5}JfpD8s!XBp+_+eR$qU`=4*)KdC zALernWLQzoWADglv1q}R_}H-O^Kcaf_&ttclXnpSw7Ix?Z>Am#N)*ZAUX6Av+29D( zsBQ8PMM#BYiOeJ~nEeiX0Ac0GaTFILo_hUKP*SD;>Iqe%N@`?z<1;hY{d~EEa$An& zo zD)$gpMEZX#t-9DG4m1Kt4U8c1!Y)L@iDM$5g@M1zOgp9Oekw@w0;eyyjT)hE526w~ z4IOC6w_a~P_FZ_bM6-5-E1~FGbz~3VINzJ6AG0DyIv9CE!JHP>d=xE#dO^!$wDWf( zF|&I43trja!KG0Z8vhq=0R|2^9aMq)d=Vj(d6!hCtl!ap2wngS)=!pYn#-YZAnF%v zVDs`5A1HPYWo19Y&wD_g0oduQ4V*Lo@M9Y{1E#>JlAz)7?NIKP^)3Uf{a7qd-+#?K zVCid~0W>R4KJDtxKd7mz0AlzkE?M!91>YoJ&u)-*<{IOBwvF>9fjf2@s6vj^3iwxj zUSPueKy7lLEU!=d|IJzfMh*D3TqDeKZ_b9=1s>FKo!GIXVaNL9pzGkTOxe^1?o?lH z#a{Q;TKSNHN8_zttIPDZDzm{zahXv`#bkOz?U8S-R}VfRxy=^^Akt`DK(SU0K$nuY z$x%yodfm@0>MQQ2{_>rvx%;Aq`zTm=b`v?KH^%29&-mkMZ42{7sx$#oQ zDVI;;lHJc(u}gNg){LeR!xQ+VP9bhd0z&=CUu#H)snGIr_D=HdNuaREl?9(n9bXdO zo0?dDSO^wgon5EQ(H?%kV>lZzi-E>R>%YJH()!`?4A~+G81{+-Kzl+(RH02V25cej zR+1({I}~Q&jlU8nXI=@DVqcS;)-?3KYf5%phil%RxN_NSzS?IZd5Mpl! z7Su!%F2=qI$y{#M#IhqxAexpsQRmd59B&WcO&*;#QBj8QF!w^@&m*Mn4>Zh1nH$qf z+DIQN7o}6iEj~_5p&k%5UG}jr!GRuAB(deKjf9g7GiaQOjn<7{OReu{ZZSblBH%-Y zrB()w(TggDU++|Ber`9$JknjgfO`ob*7fCRi9QM7A5F=zv2E>4SD;3S*pf__ha-)( zZfFXStmp0)mRu;e(*Kq9Mrj4}F-H_?6XobruSa3^(Cg;@yPgH> z71H4udn5y@j=-sTnu(?G3)w+3G(ym##94qQw+G_S?54jXA1DrRvFu~vP7UgnV~r)% z>$Ny@Y1HNX6p^$Jzg+TBU3u>5H`k<3TrPp7EWH(^ed7nVkr|-1 zX;Agse`;+dFxrb;{~@utCAP_NL!i8xk9_Z6Tk-pC)V>Vpr_anv8~zVX)DQ%gAj_+5 z-ygc%D+-KOel?o;Bboy=fCU=0zAg+NtNQwI2Y2KbLaj(`9G{H4YGD{AnmAb`GY zuK}8fi>m>a#MQ{fjU(cKk6gzaPN&Q-<8g9dGMx}LH3TO>8{>$Y;WDPEJ}e%T9n(`@f(6I|Bb=1U$jlvw_8bJ(YX->~!^+g(p<01OyO*2huQ2 z*SO^>Qj^L0wV4O)Z*95+%Zl?<+r3>pO|J^;8eYzOPJi=P!pui`vuSeQ)f2Z%2BSfC zl@~3NUi#JTvoZ!iohL zSZ#e)mgO0G5VUs(y`elBN;YPJ>em6skRx?3)9bpCOdHMY)v&`g?u><|K^wK!3~HQ} z<(3~m2~V)~=a(yderp89DL6B~LV3HuXD4ghXP*s@dh8G5>*b94+&eyfGoS}iKBg;S z(;piO3!`{MG2#16tWcjD)MT{RBw)N(aMUL%wsvIB;t#uVpG0zsRA#KH3-lmhSXBHO z()H*=08Ba73>o*d|Gsvs8KuKruCPnQV=eY=BgTLbKJiO9$xPFsP zB*IoQ{6;v4j=)H;C1aQ68l@engAC|_PCqx97IJs|hZk{j3e*7o>Fr-i6h&s0j#@&$ zl3c3=z6lfwv}omNA|grD-JdixMg9y*8Hti7;kg2pd&%F}92636y?zJLGp%m491ist z?EhU4QK0|1aO0CnvcMSvtzjdCY7xA+(EEfufKT_bPs4&ZJ z6_it-C((<89rCs^rP|j*&XFUp6w^r)evGlqrmH;x?U2ClkIgvsW`0XZC53+<;M2~c zeG_#}R@+rx!a{b*7e;6Fu*MLY_%r_T%;d#0aMU$mD(I0)8bJEK3v1OwnhM3`R4TRJ zW(QmRtlWB~=>dUShb~;ODf(1WQ(r1j4U1vWTRC(yPaXRrMZyDy%E6pahBVT_#M;BT zRw#9*hIcUa;a6ebf4qx{)VE*f=vp((t%(u{Fl^x?yG~OpU^lEt!b1b>Hq6;iA(jj; zH$(NtTHOZCryJbe3uGB$(oyNH%PxjwxpaJ%JYp7E9<~6lhKoH%YPQP-N#XmOhs=Z( zB{VOXgL#pf7iBy$ctA-hZ(@(u2jG_(CY3;zN*BBqNU%&#Q z^`}XNIE^pr7;^RRXURd9c;)UG-iv;Gr1|+vtMZ^%yVhE^Wr%c~#1a{EuE8Q`&1f(q z?EIwH&i#THxv7DaFMy-drG~ayzgk>qqOHB{%ExtO$fmAWq=_@NAW+5;osrD%a6>^p z>z0iE1PPoWqTkyyfa_l73*1Gk);gui}6K5Z(W-<0{SAqQdBq*%(o zZ0}O9-k=V=Oc@w?izRi%ts2(LVaHLhlsOF_{A)4j*?Z3mNldsq1~U=EzrU^guWi&m z03n9?!&qBq-mH+nP(9u$zik_<#xcZIc zUDjh8$lR`uIahaXY*ig3eWnPh^QKu!{QbO2)rzdV*K>2+&KS3wHF#aJvVc z<-PE)quF=V>~74jVebOht@}yV3+@cA9nD6LyJTIZPgf&9>l2U(+B=RN0S#_6oaB;B zj5fV%W@2Bc7(zLat~*NI`MoQFwj=h zhaibLANDR=q-1!tkzz%epC_?kGS`!-z`X4_Til+F=$1eFom3#m)_)B~1s020=?@pa# z2DXBVW=x$hv@y$kfF(#ATYB$)mo2#MS_j$taeY-U>!sQutr;Qi%uO+8zIrG!Op}W6 z6Z$cjYk0d+$DZ!5%8|;0RO-i|x3F|SOYA5W!VK-a+7DLiDe4$R7E123(bm!tRX!p>xBYJa&4@8*gca#pq-)mSoLJZF zyk-{0(pP)-+F21!mQ?3_>r#klJXSa$Z>6a zzKYB=-btyvHd~x!g`kSK+j#C!lZU@A+ z)Ew~3Z(d#Y-3h;*#!E*c88mM9Z5i?id$R9or!2~17u|1+9ZQPH1y>em4Z>Wu_us)b zUxSNsp0eYHE}f?_goi?lBe}X>;ec3)c>OtpH%YSXP|OM!u`h^-oQC}dkH4LSe99Kw zJBb0Q_>eA%`~m-`d;VWkp+T@q?t@bLU*7fy9{Kh|>_?!x&X5S9XzVq)0d4%s=`cq% zm8lOdtLZF-gvibpFoSS=`oc!0LIgo;+tfqQ#<2G?O8ziTFf+HN;$svtHf?A=?*00) zByS*pnZ&((GM=4^4=;$6NGK!U=k5y2biKaoV4ujQmt;P4>3tdn2Sk!Ws*aVm*3@H} zD!pV#tKaY=i6lRVru)|o!NjFD&3isKUSBK)Sr*J33-aneRTU9C+@!jN6!ku29Wam3 zXlpaIXOy;pXBu0h+O1YJJrttP^+U>8dzn7eKdsnF1lF%IVAlV%M&(G zLy%LXOeHkME!Ot-H_kEhK{bE#%gOS)7*wj+PM+l_TIS|0Z%8jb45OTZ0w*Y=iOh6( zVQ}HmNcTnbai`1l;uY;X#!+O6^T(5fo;x2uGmV|IFPOKRBN&t>JDciypm^z1 zmKoEdUU4G-&RSLSK8W9N>oAubsH^Xa(_Ytvux~gqjajhKk&Z1(?6(rK#w^>s8N1i3 zh=Q=OvroYL_qj#d->DJH3lNaU(6Gbld?Zno_a5k)qE3*^>I|Zv&-PD~zGjbKJK;Bq z5-AL}djj(EE!BP|XiHbM^p#BX7P9psrr-YP6jhl-j+y-TS1iZ;1GZvdv%jhfzpCE+ zzBtdSRXcQk?Xd+#w|ZMVs1m(xKOOjx1pX3pwV1E(i%Z&^RjnLNY{7!yd4MFa&5Vb8^{o61bD76L>rT= zM?M52iwTn80S|K(JBq15(8ZUCc*!9h-63NOV$K;U@}d_>i}977REvFxopRFTYV~8g z>WAsMw~Vk8NU`uzXx3Bj6NSfMjbDE1N{BVXvai2SIOqaKD^5(e3pLt4BrQVn`bLI( zM$H9?mI?MM28lwIbk(Xs*fFdQ6{kWP<>thAD4-82L0uyEj`Qsc**Ka9u)m(JXP@ff zu3Xx({5uhdork1w=NE_L`({G{gIbuMkj$pdSO`r*+pt<&)$LJFWn>fsB={s_jEE;k zf*V+WVf+ZP+&7{R9GlO7@XY!u{CZ;;<+L^S=hY6f%$gZXSP@TwUFj{^uc(eLPJT{` znYCYsAZ^$)p5^yn(K|A*KOb%VO6MGAM!M3cX2p2OV$YQudmsGG-}p3Lg{Lb_8u#5F zb`{)=yPecRE)h-RZme+dKOP7s`B0)8&%Ej2U?E6=zz2fg&;VHaHyhT$+lpFT@8QWa zZoe)zB&iPer-f#qe3q&alfNwo>oBL`oo55Hsut$kz*V;b{Rs5@t; z)&H{Gob3L6lFPpCT07sF>{ph*B@I=(+GnThJPWFWFy&t?N(`KUL@k$M z!GfJx>7{&{NP$51Gn_q@w>ukL`HZ+0^k>G#iU?D#gWgD`WqW8V9>q9;!*`T-$o%_8 z)uN6}t{}f$1FaG4($qnW6%$u|T1OIJ)13d;m*F4JWvENR$)l)+4KPwsW*o8OmK_sE z-zUB6D1P|3GG-Hwx}}+eCX;hX6xnP?Ix;`M%VaqEHX@T1^hUBO+hY~@VMwit-n#iM za^qK9iEhIl3#OA=POFJ4;x2RXglW>dxp8DFMxxUJjlVF%p0^+l8TDN06d`L)Q*YV( z-CM)Jp`-v@IxCs3GxICY{Kni=<$VffzQ^vkU8%(m7*pt&wP;JLj+%=HHy<6s3f(9dnAYr`NU&DVe`~P<~+prlcPmja+ z&!)($)YF%h0~faT6!%=TKuS$`OoE05IyFctGpp_n8SZiQ=!h`M6qj#`N9$KaQADN6%*R{MQ6n}h$(__L7 z0MM@5Yl-c|&%R;2?Vo?_^<1!<@{ao#9OHICGTIy!BvMJ=Y5@MtFYBhBXqq>Ar`JFl?p z*fd0cm?vs47<=tYd3Bc_GCxdiqnts_273=N9slkk-WniH4m6Gp{H=5j$I6PxTpjim zm7E|Rf0vtN4m`D%Pliyv!mQq=SzgLI&F7l5rrq8^TlU%L+gsWyRAkYvk2|1p;@gcC z+E&>v#jlRV@Bxw~$~KtDr@I#mQ9 zYIFX;`n7wSY{4LR9v>xGp~BD_!#<+FMjvYJ%e@g~UL%pb?Y|>BT!+4Bd2jy~HIfDs z%=ufRM8i~a2!Yr^Sr6K1nI?A6<#44R=%zEO`gvnABO+?_iYem_6vi0%%sHK3vxD~17@vRzv24reT3>Z)R zpFvG2o*Txb>S!qzuhiIbLlcyA@B{e{4iZP;mrd+LL;}Eb=!wggshHXbTe@428e&*& z0nTccmvUJ74HAOZB|?I6K>iujMf%c~Z;658#9c`hHu=mOl`upZy1ubQ!(tOtb{}{+ z?YI2y!w-oKSZ}Ko^vQ)s54@?aWZ~ZYR-qA6htS${n|T@~(HoFhv($xJG350h1WT4t z9xU0ozPsNb6|F^7RVhzJJzaT0FzM*Zff`df)g3G z(QhOOwBlHyUzy0B7>WH2PlS>bX8O1#Qce9n-e_r?IG#4k_A$iuLxHF9XwuJfT5kUB z4dm4UqlB70QvEWbx1RkXd_u(|H(83J1vEzNWU~ZkE2_7``$%~7v{!UF zRih4qzF_!ojRY>gbLAZAK;0|;MsH)|ahSfAcuiHG;BhKK5l0+UsoehbsRiad{(~o< zcpWmlZcUrLq^;EsA0O@3d*YSSzj^Zv2CWr&LDw#`s}yQghyV~)Y_#&zJ{>**GuZ!b zbd8YLKa0H}J8=f2HmyEZ3-j1d2DRkB1nBdTrzJ#uE6k^LEjURo#oW>&*aVqbOG zsOH@|aMGJ3c(N1tnRM_EC2Ed!VYz|nOLG~si#s)8!du3mF0E~)_>xzyS>7P;h=yY<+{tY?R8c)BQFO>LUz6y z+R<5Ww7(rDFYwTD7TS7T7!-s#GPARQJx5oOoBkaahwAEREB;65Z^#P0l=iqnO~uxt?hlgQ|jTmxQCk<&q*=ovW?hzLy~M= z?=dWP$mfg;$pP}K8G!-7DGllx#Re-MSVujXkx?;gXr$KYEKald zIt;lTDPp1ElGq3lxbU`DYsU?Tdrt-AhNmy-^^D%+Z4B|s8y#00I^AUuyNilTVl%|u z+>a6RXP=J(avRf^hJbyb{`s`_WgflT_||?4$n{KL67B}pG;;jSmw4>~5D@dW4ZDkN%yO~^rK&+ zWr#i_c0v2X5LJ zCvV_3W7>9q1lI=-5v~_mJ=lJ@7o!A6Q7y@$c||HWg*p^12UDlkFjT7EXE6Bk2J=~WCBxyRdhM_yOeInr}N-wtw>CW2k2~X4thr! zz)zwO%MpsuK~jz5?bt3b&^7J8DsO-QVg8Df3E<}NQbJi-3`T10U@(&K8c&;tFn)wg+c40b2S=thBF8<-huww_U2(rM{f(p|0jysw$n@{Ppip{R$ZbH;1 zV2z_y*Tsb=Vl{A-;y_|sqH8YIt6;pGsfdizZkb+RU^`)Zcv*k7IE+!qcImNGGXq1X zd0NZXd(W{^8Z;h1;b3-#sGZ_Js+u%1^~#T?^=l{QN_M(kqz-y)$SG&n#*QBgJ-rm` z*Y{I>NF*gPQiP^la~8^1MO7-T!01$@SJ;-DevMmL)BMuw-(1mnX zgAl*`ggMTww>@T6?jJM+ePK&&!>)%bOf?mIi)3TQ6M&@cr={ll>~`7%JRO>Y88+zX ze{BmG*f~+RjClMeDP%QCvmS?djdO;b(y28unp84U;X~-a^yPsNJO>Tcu}=)qPA0kb z(z4jYD!KXvv~J!Uu66p9f8XNXdPoC~NeiGv1_IY4R1EA)zg;83DT=KycQlX5rXAAa z`gAMmHZ29ggekvIHWR1FGF3-7IU^2wwre96Um( zI97f1)znG!>=jUSdLaMbn`IX1vR7si_i;zaZ3+83y%hvO+X5s&v?ehwFHS{e{{$;Z z&x}${3i}B5uHg4Di}{h*x|n*V!Q27*BHXhAKty=F9{M0oC$|{CvUTKF;V1_Mf;JES~W9nYCoZ!ny$}F-GRz|>R6cG(U{)A2SgFD zcdO!B?{<4h9UslztUQE>T+ASp1mw(AbV;QOaq{+v@;n)Cf@Stp##WRm^(JV$jCI&Q zQtDX#z5CecuDWna6QnrfcgFnTSAJ|tpa=4%OnP@a?d@g|ZD8}IV5TruK+B)|tHM)& z;gs_v$4@5H=(D%yZlf691$xS&J%9`Wtrd}D+|!CH!&s%cRg*%GW2c+c*5GyDsFme* z&Z54aV}>bbQJh_SC!mYhi?`PgD^C}yT41l@b^_wgC^xi()=@;XlWgUSb{VudO_kL& znioMol}JvB7mdlGu`bgj$tlM$^W_B#qftsi8-a@U6Ro?eb+j&CNq&8|ro9by#5r&$ z3MGXf$l6hH+!j_gdnM2GW3Ke;RHd~^CU0+Ek<4bQAs$YD(5F|vlv)YTG15tZEu9ge z>FN;DB2l-AxQtW;VPcOiebhI|mE)`ih3@cEFMv5}f*^#9-^?C1!}RhaHa-P7Q*Dkx z-HEV1I!LDNDXf2j9ko~QI-%hsyRt3mgDLh#cH4cUD5?7 zmFqI}jbxoknn)f6g)FQToy8#Kss%~=j4f6~Ml0VDWJr@uLm#x>%luivlv)x~L0jEZ zr9P*CKOKPR^x8Z#zQ>o2Gak0T*K{evgbiN@Ahtlm=r?-fnYPfdi9T$cNJDSR4F_X; z0SEh~#$dVsKS0a|xPT}*?m|YIqI7yjPk1QcsQVC%RBp|`1K{Ky>H6~{qs@Re!|~Wc z=14-U&TfO+wpzJ8zfwd$wYNX&{mi#;!-FCMv5Cd-O44rawkm)s?Jx@dlcN*UUF*tJR|38xK4o z%>(;m(yLmOSda!l6DP3p6Qz;e89Ui|OGoz19v!5|iV0aRSR?s#p4kH&+6Q5=Ef5Eb zxbf?g5nspfx`3Pp{|*qR0mAOS=E-#(C!>+rzp!l%K)y$hLN4Nf8R~EHj)fxV<{$X} zw<3@|gZNuqvJrsR$AJPQUt4%nwE~e3jQ&!teS%euJ`*A5wj@hVCi_QXAo-7`1x6sj zfS8%1ecL(x@^e>aF6?dSf(Wvg%j4dIs|!CKAJwIo_pqZs1x+g5COVST3R0t;B7O52 zceR#Cx}OdrvBGEb{z1pohePei^li8IFil#wqrz2*8dh>#{QD{qW)&$0JktcH|H>}G zFG7Bwai2?VKG34R7pY=y_iejucUeioj zRA>epogDnPO&=FDu$Ep(s$5UhQYb87IbU4|DOGqfd+rs511?7lJXiGz{^?FV z1QAxxoB|}hyz06HuG-7thvug_YX1pYYimS&UGvflF{T$+@5jtAkl`+d7bwec8^V$9 z)h6seL?gMA6X`;Q3u}!nP{#igp~9AQ-eq)Os?yVrZO)XlcTqY=c~AV7|lJSrrt0)Q63 zdf4-QO$NKI21)msS1|cVu{jJij>MBr8*tYJ@euNNH*`Llxs1X1J09E^E%dVpeRG9z zz=&es4UI`P>o_EaZuJ~p?g4b`;3A;u{Pk*ETtn5KTO4Bq4a=qQ7Dkc>01&UVzi#G= ziZB1EvevF`CUF)6sa}J~F5AV!3GgE5Af!RwGbRRxRYzHO(X&!` zp@;?<)h!_tJuSLaQ{zhzMhpEOvFg9t?vRL?^G)?trT`6ENIX$e*Z_@YEi zZr}BX=t8on_d`Ynqy`s$;~>`zY@5@-M0k=fh!aAg9>k&Qxi?z~tzY-Zdwdf`dlix; z3N+u}Pepu|`q#p0)F|Yy65@=uQj6QlImx6=`qWNu57ork)*kf+Pv&LMR&R)QrCjLh z8xLN+&sIM|j3X@zP?Lw2TbV_Uu&RDfoqWXptn^l<`lxyG2f-g7T)rme3hs5(-EE5J zmCL%`@7J(;yjBrgbNtiSoeVjLo=)f5V8L}(nosVyBvD`TXyYD8ZTa4q@Eljz!gV!` z5H!?}|9&?8+e5z`LMP5GS?=^eC;s9yO{b29JH3F`#`VgUt5%To6j_p!jZU6rkib2Z z5jpf19AD9S8-=5l`XLJ}JpTM7@u`IK$4Ooo?*bw^vQ(mE~OT{c^L4BxLP z1J0dbbjdOSLyt>PTnM_F2K`PQW35c>uARZ{7`H<+=Un(oc*GJq}$efA)hAo z08}1ejOsFi65s}Po@AmP;xa~43#y?$7~?B|2HJATgJ?(U7IK~&;-*zPuYW?_kd0GK zb8KBV)eix#D={W-9x81r(}}hX>+e6BGZt>u9TUtG;phV+ z!r|r;$NW9c8`U5qeB=~qgVIBLv_TB3JuD@KnDLKf6ENkHSD0XG#Q;h2#_0SY)6Hf9 z{48ccj>M*h^oMW0=871+&oi2U*JfLI8e4+&AFP^y<5v?TCjFYa-EcQzKsKGO+!DV{ zG+m)GhX+=F&|TXVZ8KX>J>MDi8C<~`8vtRE`aF^(v`pM&QQf)oKm_nK zAgU_{`S>YuJzFE0n4L1Sn~tMuXKOP}vtM1Bk#f?8FG5Mi)eq=Q{U+h#A%E-*6SOR! z9{QVtV?Ca%7cjQI{!VC%nvNgSPfJJ<{Lmn0?yXf$Q;V4eG9wJW(fo2DRg2EPnmcqi zbX52R?yRQ8TyCl>#7eG$51~aMw&detD5bpoo8Kh+p{JzJN+cLBQ} z-&$JWjdoGc8>I>&+?2{P|Ae@nR6kh_bDT__`Fi+nH4O@#U#{@YVnyq70<#P89)}-4Pvh)jv2FDGbS9=7&YI6MKrAO^g~876 zsHD?+dJG#Xw{%Y;M53{G-&d<%7$zKI%9h=5?9p{cNFt*Y8!IEzg!O`rJmJ{309~}- zYQ=035BYtwrcgC1q4IJF31 z!X`ZWHWW}vTIrL_&cXX|F}bk~>MP!z0wm;snDr$Pv;HT!JBoL(*F0+?XE3R5t|mx9 zdd0~FN@%0aANVcz>}*cnrEeUbaU@yGZ^pVbgy>VNu=)EDaf`aj48tI|XLn!A={z}w zTRi(R6~o7R8kq7lO~Q5mUWp@LJM2m%t>~cRMpt&b6vqAnsI)mVV=*h@Wn_A6V;al5 zKaQ~)eH<2-#Q>USDxT<`tkI4Tj5P5F5`I{2{gb-ihH>Oy3~;P0zbaLm!-LKEkAW<+ zXU0OXEk2x+uz(TYHKTyH;@4J#XfJ(+-8hdC?}1T!Higt!m%V?}k{9il@8BymuQPAwH0pBQr6Z z8Rl^Z!1lj&KuWS#0K;9nD9lpP&G-jSVeN1_6Q6ZUoVeM#S8M7dPp@n8pk34rJ4_uA zKx%Zexe^58zs^o=UG`bWyiLm;!A`Xz*4WC}BF4{H(qBY^4QName(IEkdJC8r}4#J29$SLws> z+6gBq*I#$T7y-E8*@lnu4VX$p4FVPg_rIUswD%j}ojy0=4C zq~(%$@!_rKydJXgLBW4^qrjJ>e`#bfucWyn@BV*>N_4!~1PiP2s2 z+X#YaOj%|GfP)=iL{SrPjIRgMvP8?CeeGgfuwgnT9S=Auup|lLD}Ax;=Q5tXd9^HS zYHxB@NT&E7DSi^k$>zlDDhsaZ5a*af-J>h@_x=`P8z6jjv)N@sKa^O*9(enAe!Yy8 zPS#UHV89kiq@>2ATlJ(a{j&b!>gP#s95B?Y-sdTYT^V%rh)wYG+~dLc8|bCO&;O8R zX?*Iv@{7xBm7RaY-!LLt-k4S~8}h$r5B=Ho#*3e;x+ zkH9O(jslumbaS-TS-h-B$C3tC2_p|JDQvQo5nM2~i{@-Mu)%Pd34Be8LFX{(NXbD{Gav*;ZIw+94}@CV=@^!pmi2 zfT_~hdlVwWx-pOM8X&eZkI-H3TlNvxK8!1apxM~s;|+s`UYK?;ofJzP{z}ow+t)(Q zF|SpydFbM(1xh$?^}|zZ;r3l*s$FCL+bNNTOWj9O*MB>1tn`GW+a3UJN@D)=pQc-H zBC!uW=5@Y;m^60_JD4)PCyI{l=w7mURkqZA2u_pD_x?aCIbeR<2&6}KkreAcn_ukcHLhA`Rs{h=npiMIN|~FlU0NJz35ONqu)L&HnP%8tr`5+ ze-l}WrZ=ibI9H79(*FQ0C-UmJXZF=KOCCVAmr1LLJ@Ti(yGxv6T%PTevJJnFob=GE zaxgFmf;BUwF@n_gDy{szK6?(|StY~4nj_-(lQo+`P2VrJ9 zpX!qa1yRlAE`3$!PI}STZ(%p^HWah$H^WBx6l87dZgz2f-7FDv7)5oHbCkZwe2z;S zj<&ELd8Obi#I?;ZzXAuJ!zh=Zc2Ygw`1MYzhtp|mX8rmqV(jdbY8qhc@Y)V}$eYZ3 zn$|bl$d7{|dL`yW4H=emDkfgESr6>hSoyg-)W-`xXR~byI#YW{f7*{9$04zG@`3N( zM}O!h6hPZ@Km0vJvq0jsXhSYmr2`l^F}nQrYc~6zD39rdfpBxM$Cpd@H+hvQkynP( zYa#D3Y$~$}1i54IXlhvxxfs(cU&W>Ea8Dxc;A;>p4wilu zc__;bM-ko2jIyBOC<Bd6MJ^^}bd;i*CwC@+my2<9@vWsO4LH|Dl;(=Rz5TbEAD`K~~1BFpfgf^`7f=xnjG2u^MEVhcSBsi|cs2 zJWdw_j9D-<7K&Mn)_ZP#x)=aO06npbW$YCGYz-_19HS8{;xAz%&LI)WYq(1b04adD z{G(#kFoeU;{C_M4;8tu@tPrMHvb%D+IG42h5q`1zA8&zD--t-}XdMJ=Uf-oN75blG zcJc;@2DBT;?7%}%@QN(~jD$y+`Z2i3tBSXz-{nSKtzFB<-vDe_7Su#BZ_JFn5G281 z?MGfYz*Nd=kYz%s!L{==hZ+l@B%xVoH<=K(XZ8eG`8gg&myKpRc70|~eMzb0drGws zj8+-swpZosb9{Zdsv1jRfGDZu1bEp1O_iN!AET)vw=kM&7uSb#l51l%Q8Bf`ZoAWd z&niLZUS9;Z24E#6*DSd2vn5j13nHseVwqG9R>Rk>G z-f9!7%Yl7dJyO}!8QeThe7%24jcM5;;i1~^?>b}I^IJc}oyIJnHP!=(jY9w(7waiq z;?y=HT-qa;`r;5XKq9IbvN!qRFGJG5NjEoYpMMcz_3*_CQ+>|LrB{Fr;F1*b{B@uT z027q}Qh354|ra zyWxv3t8JIGDV{yW!kmuNYCJa4ZX({_K(<<)R){JqWuM+?=-B=V6mViJ6=N8OCq%kF zoLXDIOY=BDz<2ah^#>dK*^;7PWXiQy8Xp zQG)+(4y|hg>bng4H!!JJYW9%rgN{K29!dD*(0W{v`db=>y(5%l24d4E2?ED|xgd;l zn2hohmx@*j9fX#&1{c12y?`Nr0Qje^b1A~^j{ovS*ej;SrzuijWP{)D}YOY_QQA0}0P%%f#7;0lLzhhIFJ zT9_|ZTfSe|Mp|en*7;t*7iP6`ar%#QwJzJE7_z@k)ZhXQh!p&ebHBDggy)`ldAeuU zx}rxGxFX7Te$tx8W-|4Z*rS$((5I5Ay=WI;d)?dqbe_~ zp>>Bf<6~?n2I|ms8E2aOC|1Q8<|llQ8X#!-=V8RZ@l;RV0LFrbEs{xRF!f<>6}st1zhxKS9M{kzQ&ae_6`a}=lgYaKc9Yv6 zZw$9Pskl?N4wKrXnjkvwX-$*IdvKg5vuQb|23!ciFlNZ%DU0Q{64h{GRCQu+`)qE z>@F7!>?sP{FFPjwmwK{DF}m(iYf#sG<>0T<=di6P z{B#Y4t+d6sF3P)qXEj)!{-PCgh?m13MF4elBl7M{$T`H=(%N@8JHGx4SkY`*?x_b3 zZ})g~;>_Cz_OZqk-U0Sfbq32FD27?5*Tuc~wZ4hq5Ka`CnVa3MXlunw))%v9l|8-o zY6QsiZ{zB~lDpl=tn|@|y{FjhPwZQF8Ev?zVBzqzyf1KR-jvOs>Iq?d^_UAua*tcq ze6$VGH=KK*4HA|&H%)(P991M9{Pp>VOKOE6;?pU|8gfNMnuHpP{g{$zmQAhOXo^MY zoEkpNz(Z_{>!g84*Y>XQG$I}@RfT9$V98`{8!3d$OeB`LRfK|RYwUb7yZ}EA!i733 zuh|3xwRjtS9-=)@TdJ7uC*^xYtw7R^zwT3byQl-{tCreTtn3p7h$AeT`KCF}9$((U zj?ZEAHASAlG_qTMsGD>)(*r(_iZpU1y0lptR!h7lk zz_>v}|F}W7h2;*WFCCj*{HAvCO^x&=dvHPfVG$Sk-XT=}GAris=3fyy_Qi6eck8z+ z!eHg+^nFjVaWiu>u#WkdE^B`{E!N&T@+jANVixXXu<`;=lgP97sO0v;!2GXA>r$y# zO)&BixnOKr_+N!?B3v%_NC8PWjgZV9tZyz}`ghe$q)6wns^`bZ*!rQ$r=K@HvUyM5 zAE$T)l*(Sfpa(#Ui_@1{f5)$c3rPN=mtM^pNa66HIET+Y=S7PAnAb*bXD}U#z5WUM zb9L#vIx=SP(q)8WO%h{|#kotL$$FD5RpjUhF-cS&L>#}GU34+w%E9WC09sa! zz&rrOrfVGOdo-!27p*+&eZ1R}+4A}{e}BiN6H~vjx$|XaYiwncIip!yn^tdfCjL~H ztibwFffmjktzhE7rYVF$VkIT*-o7}tjWU=XmrEyroH z2gMxgT;&HI>vO9wy43>|jkKULV z!N{>Fcxp+VeRs^*DEX`Qj}sNM0C-ix>jKzoUa5)3r#IYgVh;G9cu{8<4T&_md2a!A zP$S8t-vD2s=%%B;of_dzws$e2w=kCUz?UZ*3ZHyh+aaV{qh#KdWvs}hSWHHRUi zw$ssY6!AB$XK4l9qE_oDhv|*LIUu2~r?u0t>ZOtJp|BLt-wW^R-VyY!7LO#JBT6ay zJ;9oy+?S^#KHir%h1EMFnZzmop^e5X%&R>{1UNQ?&AL50Nv~0A1N}8n0krxLY4j!_ zjW$(>f;d3s5Su7#uksCATssy*!GW2&3(H-BCY5Fm2Ba-mM? z(#Li(f$|AM_(#&BtjT>RfL1$>l!?vX1i8kav)MqNZ23l{Rn;2Po4v1nE`qnJdS&<) z)dspY|0>kK-MX&NZ~NQ}bBY+Z>OnkJ`(^4iVM5(mLMGd6*R5CEL?AX?S=5fm?KoDM z+Qotq<{A~3yoK@aYTr+sfGRT#wPFtXU^@A}Okk4NZwjPsR9)bap(aPbC7=Qe+o*=a z_zc0Y{DIY5eR-17$5b5a9_m>O;w-@IchM74ppuEJIss0Y3~|)ri0REP;~XG7V{4^W zi=Rfs4N5*ft&qZO-`)!O)f$=(iIX_@ol|*JnE=33T6dtt=YLqo{eKp!lB1hkHF12! z1(*P2$`?lAa~Bv*aAFch6HW8BnYPv1oIO|sgp~YX)hb2F(;ey|>C97W{e3Oj{YrVX zwT~vgjws>^jOwOoratOC$ss#917aIu@JRFf3$Ha=p%5jHxXKnXOtZ>47}4&9<~Fe% zRW0??SSxC!oOd5&<}z8sy4K|hT&9b>2f)^AEz0yyd`*uuh3AWzk*RyXdaQ;KcEY7n zj5P-ht9HlxNa_VKJ@7L(pYNt(oPQjwTCL_o1eD0smbAiemQrJl-ioc|^e%RN8urtB zlZo4Y63;i8tNdWCC5+kBe+A&O%`&3Mxw($Lt@*6W%kz#32DzIHNse}ovm}KKIs@2Z zsFJzl7*XG1-9aHpmspt942Sq&X$o6Gz!A{-b z%kSc~uLr{nW!06imF2BNb@H2<{R{cr8hSLTBiV{)YcJyK)y^Xkeagk}U~>(A6OYCr zI&f4u#?c6Wh2uE*eiNx+`C$VVwxN=;cpl10%sapJ z{lQ<=nf-VYtX1NFNHu@G4V1)NsY$U+C-xzDH5f?5FBiTQ2rhFk@9@VHBT$WW(HSRr znt|UpcznKXq$+j;FTR_i4h|*4H^$JRV^1F&HBXK%vnhF9#!taN)k=zttCN0pn#Vt} z3e#sm?^Jkj9Yd527^1vRpPr7hl?r#Sn4l*2TP6n*iy8{jQ$Xk$k?{JV^DeC2 zg4@4&Qf%t_0dnaqdqxj{@%2N|flkw` z3<=uBd)K?}u9mxK&k(*ppBPp0tf<&9?jG4;wjq4!_Gi*&);?Ss9%x0Zs2{>!-FGc~ zB=%qec69GAovh>N!h&AgnDHTs)-&PFG!jP)aQBxuxSa7q6~ZzNTsr|TIaJ%F^x#QH zUzuBviOO&JgfIbP85mygJbuk)4X$97--??vJnpbeiM>F7xF7L0Nu^UI-Fq?vD8Rzb zq}p-EMS2z{)kjBYM^IDihuTt>th_rqG^TgcVD1!Z=W$|m>TNlz69-UJ<~c2a_hOz) zRJEyPtLsGLu^1C6@D2l@`-;HZPv!wjh;!m{AshwI{1yFS4tXIMHk4C-(sl)%OzG%- z;pt}>!uj`CVdZg8dfa^IX@gS&!s#L%ku`lx-O$`aPO+*dSFea;RLi638{VqXz)N-9 z4u7uFf(mz5h((CA+T>TD%u&`t;TVujwK#Ju;N6{0m{%KY_H1kc z?>1o5{;m(UN@VoryR*L*NzPM>n`#q)C$;vc&SK__G6qwp(L&!z9l6Cgoi=v2W=Drl z(;REhKHY~u<sB}e?x?#fgn-ys-Sb#!*j|D9n8pU&lUDd%$7B!ihJw)~WG3ajh;&NZkT*9!BuL`aOjCmFCDC4vCD10#TA81W;5}@e7tT9{``T@v| zfAr|iPuGXFn>Vi_#F(GiOP>O?Hr5b2Oi=K6T(9W3rXnqoS<}-8QvwI5nT9yC>bc7L zZ%0p}l@U#CYPY=wL3j|wm{Ea;wC#%lZu{k5&SkDA(TZNrPaclb?^Gc%EmWTRS?w?_ zWEzdkdY{?KbuOD3`;31pg$=6IY9$Yli|BvyZ|dhbRvX%_*peyyX#qF~taR!LwD8)? zI(+8&5<;^o*Tcj95w-(=9IcoRj17%SM*i%#tgZMo>&lD52#3QEoS-@@@WmQ{*-cE1 zKJbDCOmG1R%&lP(JTLHr^q=U><+3ysog1fmpX_Qfsd*rcDK{XnRvBhS^xC!E&ZErs zMSW-vFb~X$wu*QWu)aB+{S7ak0$$V3K~LJ{laH1w#Q}CUlR(|@l>Hg4weGDsm$JSX zL;QAhTpmxcl~fN0{!(1fu9Jyw0o*o>S%Pu{Dc*)tPoE(=xOuEsR%jB~|jsqlYCd2l8U03Q&Ldn~XL4iH2hC?)IYC z;Rhg;%i}|V0?J!z2uj2t7IQm?8mOq$hV^KtGkV&hv7U+FymEjg)Xc1<9sb1mO9I)w zOOZltIs2M?Fqjcp!|RrqQ{DK#m|4k^A|-_MO_QE-1KIx8M|(^Z-G4^@-+CjXJYGQJ zSdrg3?=LBzeclB+1HR+ww@!|DRa~y4M3ccCE0pWeDF{H~j-HT|P36f(p!_3u%w0#N zu4>81D4@iW+KfW_IdvakF2$f`6;(U<&KR3SC!uJWe}zJ2~Yt6atMxssP$SnDhe5IOF6+>W~z$lN^U zExw@3yQ3*!<4N?&7}flQ%pHj7jtq&-8wYO#Z)fp9Z2>-S%!#9lc;$qOSlEeX+kbKg zl2^PZ0802@8v-vLVtLs0e-^&}<7|n>r0?Px0}gITc4U>%AK5n!FjT>L&Ffg{r#|1J z-U8lK7dA6Cs$Nx&PwaojSzMQwD-Cv!(Zi7a2ieZ4G^Uq;cQ3t#A(R@I@D*BM_BN%G z8LI(Te_Vmq--vq*O6nfzb?wa$1LJ(y0j_{mFhYO-nn8Y|a!y72%`_dd{ReroX*p@0 zRfji^ObS`hMnjI3T3aJ72{#P|<;JRFKKs?-1gk#C;>|57xLw6Zkfp>m@1Pzlg*!VR z3=i48+k6a#mS+K@|EWK9KL@17>b1=3l8$rVGpED)IViU>`ev4a6KJF_=V)Y_xd*@c zc_n4>ly^ZCqX5&FYo)FHb@ZpeW>{Lr2|f0MOIy-2rHB3DOi02$Lz+w{1^oSP02z!ywHBATdS0L?ZGk;YmZVOEf7mMgm>U7{D60*O{rD7HG)bZ zd_O;PsMyRWLOW<=@&MSZb3854+|t3198KDFF( zyIRP4yg?!#w*F~6V04LkLbm=YdR&hx;|El(z;cYS`Fnwg zAR~^SLP#ZZMjkjZ_@MRb*k!E-U>A{5C2N{wb^LZ}KI%$ypQGz8Zpq%pyeZ6Hwo!9F z0FUACb2DF!8f{z1xfB4U`$Ts~BJN}|;>Bh_*YZ40Y<9CZcmUw88e_kmiskxyd`S2Z z3ois{(aKE5kN z2J9T0fQzn6^NSTuJA*K99Fr?-14QK5dWMoT-xkr^WECWvlYaBFh_HF({poN1Rxt_y1|_yrY`R z);2!s5LBuPh#(LZ0i`Pt0R;t^h!FyW+?}=u2S*TdNf9 zU5VzGyIkiik&7(R!J;|=eqF?Qn8wP7@9!(?dH(>@o?IT>HveRzpf{@C{I;^Kv^_cI zJ9#ob9m(18Yo7crn2vlZT{mN7rrcuTxNQ_5aeVO)8@1cxUZoM)wFmz%OKrJxK<#L} zub>(>R(abCpjR&Kg%;9Y+L6^%J(}lEwOA#0+8jN%?+N?)ZmW3(8P0RVYOsGfUitE- z=CI!idVbx#W7}(D`aN+%RF;6=Z%SSOC`w#u`9DkYo_Q66&fES?H&f*<<@#Xt2_x~l zi2y(_(_2qD(^!bEdf!U(;ptw#Kwet+-JSR>UI442Yaf2c;QDBQz4+}$&Q4<%Gyq_m zk+o$XekvDKu@U?7!D7%U&SmE)%i`K{9m<<}7^N2z~rAC(Eeb48m zUykT1M!IS8O>&(H{Ht?4z?&OnO8K(mCpi2OEMfm)uvqb;@(#)bC?lISC3pU;(c1FS zj8*TPL%9*_bSo{!07K1oa(LHGu=sLO%rdu%T^P6+1&H%j)8*ZXo{;#@WDqbDf#pW+ zzR&;JN$|I-yJ{EClOab0`HtFe7i=Zm;~h77m|=@c6N0D-OKlO}T5D{lidoRAbuGSe z`}UAvKW4!-yx%7582M~c8gPQ{Ux`}agt6!kuTrkK%7^M<6ozyVlaDb%>9=;^0%B>r zPfp74RLZZW5pPrPKMzfRZ>?d3{dTR4RS&kw8|KGn`q&!_-RvQII3+SX*N$`DFf0~& z3dq(7sfPOS441P(C8_GGC2DPxUP`c>-1Vn`;Z{@ogs6&)?|mjJ6Yi?U6o01#1BhNM zmKN&>U%W2O$;CJDhTYq$?alyp5=&SIM_#!I6mBhC7Sz_}i_JZ$B-6|@4KS^KPwaUu zsN67KJ$~!5)X_t1+kDN6x`|&4U(~y2E(<&?z0CRF=(BgaJ&HfPKeOUmS2)x`u9P>q z^l?fTp9AG)ppvNx@(jZUPD_3Mv67Hh?++W}v>IWbVE<{WvD3A)oE|BnBhMg9qH0Fi z>~?a1GW`adqkWOKleT_Qe06pxfh0+t|JMF7$eQ= z*z6zEYe2#kXwZ=s=Hr^c*6|v9t78lKWsI_6CZ*o9K_2f%E`7#z=3{7CjMCw7*lALp z#FPcPwyPIRpBAxV{@S2p7u6Q|jVWWvt-Qx;=0aj^XZ2E3FFkdba?mq$*o*lYshj>$ z_j5=OcXhRaiA`ZzK%}dq^@QhRP%i~Udj!2li$A0oBkq9hpsGv{}93 zKHgtP&VD`Mh_+e=FG=LqL75*`vW&N4^d9ozth;-`G{(DgHRt`iLoFZ` z$QjVsOTrap_Nt|#)jPK4SBpn(deuqYk8=|sG+u5Lu1(E=>R04fybd3XOuWjm&Ler%o z)y6&+xm0O&0FJFBa0t79!!L@_=H*>{FSL!D=*wp!6 zLhKjF_4{_=;6L*3$nYK9EA`jFb=-NHk>N>rMCCsi>Xa#vermRn*FHT@I_1x6v>?~C zdbw(6B*QvxCb_4~31m}n6(jiy;}-`TX1@eM4OD%i4fw3oE|_Z!!e3#Ir4-F>7(5DY z`85*y;c20i`Uz8DwscEdV(mfZ2Q`F>k3sp`%lUm%4fzwJI-lhGsXj_xMTbwJeHfXi zy;^Fk10Sb+Wo}9+!k$DNq+fBI!1Zl#OVDiuHs$8}Hdlr_gf&VPH5buW-C$8Mx(7?c zKj;+&DN~V%Tv0tq=Xy?0;xY6KgBO}l@VTj}`Bt_~tcW(}8M_hDB=u3SvrTP4*HdP4 zR{{K3UVVx@Y5C7VG4IOCx8?N}SH{NM3O_za(FruqJek)>v$B=DYFc5!^r-J^bc4_6 z@-EJ{_+)-ycZ~yPtUUrK7Ty-#^~8eGo2}qA5)DT`>ro{__ku+;n`Wkso35^+P7WAH zpwbF>;jT}m`P1vU97F?ffbs^?oRLtKifHf8wHOMM%dR?CEY8|R%s3+URbPXJl!p;P z(m4$Js>_U!yQE!rEp?I00pN7Fcx44ongXVsV8fgTC)tep!3@;dtrJ}f#j57miwG%k zgS$imG3C2aFqBMP%KSmHz}YI1mF)r<$6XIRf3IP}HFE zu9DfyR0*5Z>K#**bnXHp;CaYrrQvR&Gu?`^I-5RKb~)Yey1#Ng?-7O-)vRu2#vvj4 zu8rtpFu2=OG>{VCD!kb$efEMGJ!DqDcc0qmnXS1toyV%W5O!a*qoJ=XRBxnGl+1hlG7&%Vo;83QCypRP zFIZu}h=|m&VH8lCaa{@Ks2l{T^9Y?_(`(-%cI((3hH_gL&a1=38xmZy(3i7Rwt91A zuAgx%8CsoiCNM_x+n!mjhi8f8A`UQ5Ch2>bzvssnR2%rLNtUHJ{e~+s_@XXcW{ARFbC5snwJ?OkbC;6XX;dw zJYZjWxUyn?^Okge1S*ElaiP{q>Ad*?wo?U&yZvC~Q)KFdGRD%WnES>LgH4(K7w<22 z4T9;0dA{$CJ0Us8*_)YGZlL7ZERFkht7tD&CGb^JVoFrq{?*Qbni%kAQ>_ivoUIc(ib1tr17e zTjA9Cnw*}^yeni9_?QV%#U{o{xLyVN|0J3R@iaw34_~5{5xp#J2c|w=ML6ihIcscn zB``;^^0 zbioK4d-YrLvpa9%oqsRO6HMm;gPyfnoq9bb0E)#ofCEDmB3t?SANl|b$f3(;|N3Mn zXF<_TrFCXxYq1twM%q`u-1dVAVV;&3@y65oTxkQ)AAKuLQ92ZGS$Va`n(zC4Nq*Yd z9$lcX0(n*rBkI}aO{wUUrV|g!kE$N22GB$!B&xV2$W9XxpHVHp&i~9^I__Oi^qukk zqSZeLWdY(S~8qqaP2#d%Rj@^%UXWP?YFM> zxm?;&<7ZU8y+i#BVXF8?|FgwM)1$iH_MLWgNia~wWRzvq>R7X8)b+T`fx zypDD9Sr=E9Tbl9+X}4h>uf81R=Nzb6+h*8&r{ZtYOO1bjv-sxv(7v zx!-3~HDP;2Gw;FxLed4GH(m#oany8R1Rj$nRuGehG{&QGRjaDFiNc`YyN?Hu3S-xn z87K(KC@W6tEpfp}J_y!vH>`^w`*}1|cA?RBl^g5cuDLe!^`*^BPJ%*IF%T?C=u7S( z=PcP}v~~<%+OMvPpI6)pNxiQ@iTEn<;}Z1|YXJGTM#5#u47U?CE06?uhK(RYxOLH# z&|8=9T^#M@W|JRoGt&fCsOo7?E`mk}o^MQPS`cpZGQ`=P*&p;R6z$4-{R*0!IEaf#uLL8nsmv^GlkJ1eI6%+F@nAFV|3KD3!}0$$Dc zE}wyLi`QE9m`DN_`wy}iYWSt1*e0Idv_M5aAD*H2(7oM3a5c-AwcObYArejVw%%T6 z#t~nMljiA3QYaAlqV-6aEdo0AIm~t{nd^$dMt>ElEU?~bJ`>3iX>(eJ^>Dkq&BM2! zL}i6)LFy~c8`jtQDAxGC^0K++)uUBI?iQ|4cWKA&0-^L;4zkd%&PV-|Xi6=-#PggC zUf`vW9U+}3R}886%oyd_715_WP+k=Y-hUo9n>Quw<0MoJ>UkjZh0@D8$e8-rW;i9x zHoOk{oHi%RHnu=P4&m|CZ?$fsUnMe=^Xe)_%ZrpsRMvfJ3>JJu($!*2lW~1qH-^G& zFNT(K)Nlr4tq*?QTqs|l^2OrVyTSOI#0;|GqDlfh$vpgYZz=V&t+#q-71~>bb855_ znp@RFKE--G|8PeQK@;osA)``}%61huiUJNltrG${0kX&XF2FV8?#{?r#U4h3Q=AUY{ZVELSWaqEi() z$fL{oM_ALPv7u#~a@!vXl@`cm66Pg5_>=>$+>5u(AcI|3EqGDKW$X>-{y4xwwuxa`K0Boefi8^ W{F2^CIIy;4x^~r2yYR}L(EkB`Cc@hQ diff --git a/firmware/chibios-portapack/ext/fatfs/doc/updates.txt b/firmware/chibios-portapack/ext/fatfs/doc/updates.txt new file mode 100644 index 000000000..ebb6026ab --- /dev/null +++ b/firmware/chibios-portapack/ext/fatfs/doc/updates.txt @@ -0,0 +1,189 @@ +R0.12b (September 4, 2016) + Improved f_rename() to be able to rename objects with the same name but case. + Fixed an error in the case conversion teble of code page 866. (ff.c) + Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12) + Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12) + Fixed f_mkfs() creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12) + Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12) + Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12) + Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12) + +R0.12a (July 10, 2016) + Added support for creating exFAT volume with some changes of f_mkfs(). + Added a file open method FA_OPEN_APPEND. An f_lseek() following f_open() is no longer needed. + f_forward() is available regardless of _FS_TINY. + Fixed f_mkfs() creates wrong volume. (appeared at R0.12) + Fixed wrong memory read in create_name(). (appeared at R0.12) + Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD. + +R0.12 (April 12, 2016) + Added support for exFAT file system. (_FS_EXFAT) + Added f_expand(). (_USE_EXPAND) + Changed some members in FINFO structure and behavior of f_readdir(). + Added an option _USE_CHMOD and removed an option _WORD_ACCESS. + Fixed errors in the case conversion teble of Unicode (cc*.c). + +R0.11a (September 5, 2015) + Fixed wrong media change can lead a deadlock at thread-safe configuration. + Added code page 771, 860, 861, 863, 864, 865 and 869. (_CODE_PAGE) + Removed some code pages actually not exist on the standard systems. (_CODE_PAGE) + Fixed errors in the case conversion teble of code page 437 and 850 (ff.c). + Fixed errors in the case conversion teble of Unicode (cc*.c). + +R0.11 (February 9, 2015) + Added f_findfirst() and f_findnext(). (_USE_FIND) + Fixed f_unlink() does not remove cluster chain of the file. (appeared at R0.10c) + Fixed _FS_NORTC option does not work properly. (appeared at R0.10c) + +R0.10c (November 9, 2014) + Added a configuration option for the platforms without RTC. (_FS_NORTC) + Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel(). (appeared at R0.09b) + Fixed a potential problem of FAT access that can appear on disk error. + Fixed null pointer dereference on attempting to delete the root direcotry. (appeared at R0.08) + +R0.10b (May 19, 2014) + Fixed a hard error in the disk I/O layer can collapse the directory entry. + Fixed LFN entry is not deleted on delete/rename an object with its lossy converted SFN. (appeared at R0.07) + +R0.10a (January 15, 2014) + Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID) + Added an option for minimum sector size. (_MIN_SS) + 2nd argument of f_rename() can have a drive number and it will be ignored. + Fixed f_mount() with forced mount fails when drive number is larger than 0. (appeared at R0.10) + Fixed f_close() invalidates the file object without volume lock. + Fixed volume lock is left acquired after return from f_closedir(). (appeared at R0.10) + Fixed creation of a directory entry with LFN fails on too many SFN collisions. (appeared at R0.07) + +R0.10 (October 2, 2013) + Added an option for character encoding on the file. (_STRF_ENCODE) + Added f_closedir(). + Added forced full FAT scan option for f_getfree(). (_FS_NOFSINFO) + Added forced mount option with changes of f_mount(). + Improved behavior of volume auto detection. + Improved write throughput of f_puts() and f_printf(). + Changed argument of f_chdrive(), f_mkfs(), disk_read() and disk_write(). + Fixed f_write() can be truncated when the file size is close to 4GB. + Fixed f_open(), f_mkdir() and f_setlabel() can return incorrect result code on error. + +R0.09b (January 24, 2013) + Added f_getlabel() and f_setlabel(). (_USE_LABEL = 1) + +R0.09a (August 27, 2012) + Fixed assertion failure due to OS/2 EA on FAT12/16 volume. + Changed file functions reject null object pointer to avoid crash. + Changed option name _FS_SHARE to _FS_LOCK. + +R0.09 (September 6, 2011) + f_mkfs() supports multiple partition on a physical drive. + Added f_fdisk(). (_MULTI_PARTITION = 2) + +R0.08b (January 15, 2011) + Fast seek function is also applied to f_read() and f_write(). + f_lseek() reports required table size on creating CLMP. + Extended format syntax of f_printf(). + Ignores duplicated directory separators in given path names. + +R0.08a (August 16, 2010) + Added f_getcwd(). (_FS_RPATH = 2) + Added sector erase function. (_USE_ERASE) + Moved file lock semaphore table from fs object to the bss. + Fixed a wrong directory entry is created on non-LFN cfg when the given name contains ';'. + Fixed f_mkfs() creates wrong FAT32 volume. + +R0.08 (May 15, 2010) + Added a memory configuration option. (_USE_LFN) + Added support of file lock. (_FS_SHARE) + Added fast seek function. (_USE_FASTSEEK) + Changed some types on the API, XCHAR->TCHAR. + Changed fname member in the FILINFO structure on Unicode cfg. + String functions support UTF-8 encoding files on Unicode cfg. + +R0.07e (November 3, 2009) + Separated out configuration options from ff.h to ffconf.h. + Added a configuration option, _LFN_UNICODE. + Fixed f_unlink() fails to remove a sub-dir on _FS_RPATH. + Fixed name matching error on the 13 char boundary. + Changed f_readdir() to return the SFN with always upper case on non-LFN cfg. + +R0.07c (Junuary 21, 2009) + Fixed f_unlink() may return FR_OK on error. + Fixed wrong cache control in f_lseek(). + Added support of relative path. + Added f_chdir(). + Added f_chdrive(). + Added proper case conversion to extended characters. + +R0.07a (April 14, 2009) + Separated out OS dependent code on re-entrant configuration. + Added multiple sector size support. + +R0.07 (April 1, 2009) + Merged Tiny-FatFs into FatFs as a buffer configuration option. + Added long file name support. + Added multiple code page support. + Added re-entrancy for multitask operation. + Added auto cluster size selection to f_mkfs(). + Added rewind option to f_readdir(). + Changed result code of critical errors. + Renamed string functions to avoid name collision. + +R0.06 (April 1, 2008) + Added f_forward. (Tiny-FatFs) + Added string functions: fgets, fputc, fputs and fprintf. + Improved performance of f_lseek on moving to the same or following cluster. + +R0.05a (February 3, 2008) + Added f_truncate. + Added f_utime. + Fixed off by one error at FAT sub-type determination. + Fixed btr in f_read can be mistruncated. + Fixed cached sector is left not flushed when create and close without write. + +R0.05 (August 26, 2007) + Changed arguments of f_read, f_write. + Changed arguments of f_mkfs. (FatFs) + Fixed f_mkfs on FAT32 creates incorrect FSInfo. (FatFs) + Fixed f_mkdir on FAT32 creates incorrect directory. (FatFs) + +R0.04b (May 5, 2007) + Added _USE_NTFLAG option. + Added FSInfo support. + Fixed some problems corresponds to FAT32. (Tiny-FatFs) + Fixed DBCS name can result FR_INVALID_NAME. + Fixed short seek (<= csize) collapses the file object. + +R0.04a (April 1, 2007) + Supported multiple partitions on a plysical drive. (FatFs) + Added minimization level 3. + Added a capability of extending file size to f_lseek. + Fixed an endian sensitive code in f_mkfs. (FatFs) + Fixed a problem corresponds to FAT32 support. (Tiny-FatFs) + +R0.04 (February 4, 2007) + Supported multiple drive system. (FatFs) + Changed some APIs for multiple drive system. + Added f_mkfs. (FatFs) + Added _USE_FAT32 option. (Tiny-FatFs) + +R0.03a (December 11, 2006) + Improved cluster scan algolithm to write files fast. + Fixed f_mkdir creates incorrect directory on FAT32. + +R0.03 (September 22, 2006) + Added f_rename. + Changed option _FS_MINIMUM to _FS_MINIMIZE. + +R0.02a (June 10, 2006) + Added a configuration option _FS_MINIMUM. + +R0.02 (Jun 01, 2006) + Added FAT12. + Removed unbuffered mode. + Fixed a problem on small (<32M) patition. + +R0.01 (April 29, 2006) + First release + +R0.00 (February 26, 2006) + Prototype (not released) + diff --git a/firmware/chibios-portapack/ext/fatfs/src/00history.txt b/firmware/chibios-portapack/ext/fatfs/src/00history.txt index 151b69499..49aac282b 100644 --- a/firmware/chibios-portapack/ext/fatfs/src/00history.txt +++ b/firmware/chibios-portapack/ext/fatfs/src/00history.txt @@ -260,8 +260,20 @@ R0.12a (July 10, 2016) Added support for creating exFAT volume with some changes of f_mkfs(). Added a file open method FA_OPEN_APPEND. An f_lseek() following f_open() is no longer needed. f_forward() is available regardless of _FS_TINY. - Fixed f_mkfs() creates wrong volume. + Fixed f_mkfs() creates wrong volume. (appeared at R0.12) + Fixed wrong memory read in create_name(). (appeared at R0.12) Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD. - Fixed wrong memory read in create_name(). + +R0.12b (September 04, 2016) + + Improved f_rename() to be able to rename objects with the same name but case. + Fixed an error in the case conversion teble of code page 866. (ff.c) + Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12) + Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12) + Fixed f_mkfs() creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12) + Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12) + Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12) + Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12) + diff --git a/firmware/chibios-portapack/ext/fatfs/src/diskio.c b/firmware/chibios-portapack/ext/fatfs/src/diskio.c index 1d57ddb42..25f5e53bc 100644 --- a/firmware/chibios-portapack/ext/fatfs/src/diskio.c +++ b/firmware/chibios-portapack/ext/fatfs/src/diskio.c @@ -41,7 +41,7 @@ DSTATUS disk_status ( return stat; - case DEB_USB : + case DEV_USB : result = USB_disk_status(); // translate the reslut code here diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c index 04e197cfc..ffc524097 100644 --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------------/ -/ FatFs - Generic FAT file system module R0.12a / +/ FatFs - Generic FAT file system module R0.12b / /-----------------------------------------------------------------------------/ / / Copyright (C) 2016, ChaN, all right reserved. @@ -28,7 +28,7 @@ ---------------------------------------------------------------------------*/ -#if _FATFS != 80186 /* Revision ID */ +#if _FATFS != 68020 /* Revision ID */ #error Wrong include file (ff.h). #endif @@ -396,7 +396,7 @@ typedef struct { #define BPB_NumFATs 16 /* Number of FATs (BYTE) */ #define BPB_RootEntCnt 17 /* Size of root directory area for FAT12/16 [entry] (WORD) */ #define BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ -#define BPB_Media 21 /* Media descriptor (BYTE) */ +#define BPB_Media 21 /* Media descriptor byte (BYTE) */ #define BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ #define BPB_SecPerTrk 24 /* Track size for int13h [sector] (WORD) */ #define BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ @@ -409,6 +409,7 @@ typedef struct { #define BS_VolLab 43 /* Volume label string (8-byte) */ #define BS_FilSysType 54 /* File system type string (8-byte) */ #define BS_BootCode 62 /* Boot code (448-byte) */ +#define BS_55AA 510 /* Signature word (WORD) */ #define BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ #define BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ @@ -462,8 +463,6 @@ typedef struct { #define PTE_StLba 8 /* MBR PTE: Start in LBA */ #define PTE_SizLba 12 /* MBR PTE: Size in LBA */ -#define BS_55AA 510 /* Signature word (WORD) */ - #define DIR_Name 0 /* Short file name (11-byte) */ #define DIR_Attr 11 /* Attribute (BYTE) */ #define DIR_NTres 12 /* Lower case flag (BYTE) */ @@ -1141,7 +1140,7 @@ DWORD find_bitmap ( /* 0:No free cluster, 2..:Free cluster found, 0xFFFFFFFF:Dis if (clst >= fs->n_fatent - 2) clst = 0; scl = val = clst; ctr = 0; for (;;) { - if (move_window(fs, fs->database + val / 8 / SS(fs)) != FR_OK) return 0xFFFFFFFF; + if (move_window(fs, fs->database + val / 8 / SS(fs)) != FR_OK) return 0xFFFFFFFF; /* (assuming bitmap is located top of the cluster heap) */ i = val / 8 % SS(fs); bm = 1 << (val % 8); do { do { @@ -1180,7 +1179,7 @@ FRESULT change_bitmap ( clst -= 2; /* The first bit corresponds to cluster #2 */ - sect = fs->database + clst / 8 / SS(fs); /* Sector address */ + sect = fs->database + clst / 8 / SS(fs); /* Sector address (assuming bitmap is located top of the cluster heap) */ i = clst / 8 % SS(fs); /* Byte offset in the sector */ bm = 1 << (clst % 8); /* Bit mask in the byte */ for (;;) { @@ -1321,7 +1320,7 @@ DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err if (clst == 0) { /* Create a new chain */ - scl = fs->last_clst; /* Get suggested cluster to start at */ + scl = fs->last_clst; /* Get suggested cluster to start from */ if (scl == 0 || scl >= fs->n_fatent) scl = 1; } else { /* Stretch current chain */ @@ -1333,7 +1332,7 @@ DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err } #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ ncl = find_bitmap(fs, scl, 1); /* Find a free cluster */ if (ncl == 0 || ncl == 0xFFFFFFFF) return ncl; /* No free cluster or hard error? */ res = change_bitmap(fs, ncl, 1, 1); /* Mark the cluster 'in use' */ @@ -1349,7 +1348,7 @@ DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err } } else #endif - { /* At the FAT12/16/32 */ + { /* On the FAT12/16/32 volume */ ncl = scl; /* Start cluster */ for (;;) { ncl++; /* Next cluster */ @@ -1775,7 +1774,7 @@ void gen_numname ( /* itoa (hexdecimal) */ i = 7; do { - c = (seq % 16) + '0'; + c = (BYTE)((seq % 16) + '0'); if (c > '9') c += 7; ns[i--] = c; seq /= 16; @@ -2105,7 +2104,7 @@ FRESULT dir_read ( c = dp->dir[DIR_Name]; /* Test for the entry type */ if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of the directory */ #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ if (_USE_LABEL && vol) { if (c == 0x83) break; /* Volume label entry? */ } else { @@ -2120,7 +2119,7 @@ FRESULT dir_read ( } } else #endif - { /* At the FAT12/16/32 */ + { /* On the FAT12/16/32 volume */ dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; /* Get attribute */ #if _USE_LFN != 0 /* LFN configuration */ if (c == DDEM || c == '.' || (int)((a & ~AM_ARC) == AM_VOL) != vol) { /* An entry without valid data */ @@ -2129,7 +2128,7 @@ FRESULT dir_read ( if (a == AM_LFN) { /* An LFN entry is found */ if (c & LLEF) { /* Is it start of an LFN sequence? */ sum = dp->dir[LDIR_Chksum]; - c &= ~LLEF; ord = c; + c &= (BYTE)~LLEF; ord = c; dp->blk_ofs = dp->dptr; } /* Check LFN validity and capture it */ @@ -2178,7 +2177,7 @@ FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ res = dir_sdi(dp, 0); /* Rewind directory object */ if (res != FR_OK) return res; #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ BYTE nc; UINT di, ni; WORD hash = xname_sum(fs->lfnbuf); /* Hash value of the name to find */ @@ -2194,7 +2193,7 @@ FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ return res; } #endif - /* At the FAT12/16/32 */ + /* On the FAT12/16/32 volume */ #if _USE_LFN != 0 ord = sum = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ #endif @@ -2212,7 +2211,7 @@ FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ if (!(dp->fn[NSFLAG] & NS_NOLFN)) { if (c & LLEF) { /* Is it start of LFN sequence? */ sum = dp->dir[LDIR_Chksum]; - c &= ~LLEF; ord = c; /* LFN start order */ + c &= (BYTE)~LLEF; ord = c; /* LFN start order */ dp->blk_ofs = dp->dptr; /* Start offset of LFN */ } /* Check validity of the LFN entry and compare it with given name */ @@ -2258,7 +2257,7 @@ FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entry or too many S for (nlen = 0; fs->lfnbuf[nlen]; nlen++) ; /* Get lfn length */ #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ DIR dj; nent = (nlen + 14) / 15 + 2; /* Number of entries to allocate (85+C0+C1s) */ @@ -2284,7 +2283,7 @@ FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entry or too many S return FR_OK; } #endif - /* At the FAT12/16/32 */ + /* On the FAT12/16/32 volume */ mem_cpy(sn, dp->fn, 12); if (sn[NSFLAG] & NS_LOSS) { /* When LFN is out of 8.3 format, generate a numbered name */ dp->fn[NSFLAG] = NS_NOLFN; /* Find only SFN */ @@ -2361,9 +2360,9 @@ FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */ res = move_window(fs, dp->sect); if (res != FR_OK) break; /* Mark an entry 'deleted' */ - if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ dp->dir[XDIR_Type] &= 0x7F; - } else { /* At the FAT12/16/32 */ + } else { /* On the FAT12/16/32 volume */ dp->dir[DIR_Name] = DDEM; } fs->wflag = 1; @@ -2413,12 +2412,12 @@ void get_fileinfo ( /* No return code */ #if _USE_LFN != 0 /* LFN configuration */ #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ get_xdir_info(fs->dirbuf, fno); return; } else #endif - { /* At the FAT12/16/32 */ + { /* On the FAT12/16/32 volume */ if (dp->blk_ofs != 0xFFFFFFFF) { /* Get LFN if available */ i = j = 0; while ((w = fs->lfnbuf[j++]) != 0) { /* Get an LFN character */ @@ -2628,7 +2627,7 @@ FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: could not create */ if (si) cf |= NS_LOSS | NS_LFN; while (di && lfn[di - 1] != '.') di--; /* Find extension (di<=si: no extension) */ - b = i = 0; ni = 8; + i = b = 0; ni = 8; for (;;) { w = lfn[si++]; /* Get an LFN character */ if (!w) break; /* Break on end of the LFN */ @@ -2955,7 +2954,7 @@ FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ UINT i; - /* Get logical drive number from the path name */ + /* Get logical drive number */ *rfs = 0; vol = get_ldnumber(path); if (vol < 0) return FR_INVALID_DRIVE; @@ -2967,7 +2966,7 @@ FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ ENTER_FF(fs); /* Lock the volume */ *rfs = fs; /* Return pointer to the file system object */ - mode &= ~FA_READ; /* Desired access mode, write access or not */ + mode &= (BYTE)~FA_READ; /* Desired access mode, write access or not */ if (fs->fs_type) { /* If the volume has been mounted */ stat = disk_status(fs->drv); if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ @@ -3045,7 +3044,7 @@ FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ fs->volbase = bsect; fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx); fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx); - if (maxlba < fs->database + nclst * fs->csize) return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size requiered) */ + if (maxlba < (QWORD)fs->database + nclst * fs->csize) return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size requiered) */ fs->dirbase = ld_dword(fs->win + BPB_RootClusEx); /* Check if bitmap location is in assumption (at the first cluster) */ @@ -3162,15 +3161,14 @@ FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */ - void* dfp, /* Pointer to the FIL/DIR object to check validity */ + _FDID* obj, /* Pointer to the _OBJ, the 1st member in the FIL/DIR object, to check validity */ FATFS** fs /* Pointer to pointer to the owner file system object to return */ ) { - _FDID *obj = (_FDID*)dfp; /* Assuming .obj in the FIL/DIR is the first member */ FRESULT res; - if (!dfp || !obj->fs || !obj->fs->fs_type || obj->fs->id != obj->id || (disk_status(obj->fs->drv) & STA_NOINIT)) { + if (!obj || !obj->fs || !obj->fs->fs_type || obj->fs->id != obj->id || (disk_status(obj->fs->drv) & STA_NOINIT)) { *fs = 0; /* The object is invalid */ res = FR_INVALID_OBJECT; } else { @@ -3208,6 +3206,7 @@ FRESULT f_mount ( const TCHAR *rp = path; + /* Get logical drive number */ vol = get_ldnumber(&rp); if (vol < 0) return FR_INVALID_DRIVE; cfs = FatFs[vol]; /* Pointer to fs object */ @@ -3261,7 +3260,7 @@ FRESULT f_open ( if (!fp) return FR_INVALID_OBJECT; - /* Get logical drive number */ + /* Get logical drive */ mode &= _FS_READONLY ? FA_READ : FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_CREATE_NEW | FA_OPEN_ALWAYS | FA_OPEN_APPEND | FA_SEEKEND; res = find_volume(&path, &fs, mode); if (res == FR_OK) { @@ -3460,7 +3459,7 @@ FRESULT f_read ( *br = 0; /* Clear read byte counter */ - res = validate(fp, &fs); + res = validate(&fp->obj, &fs); /* Check validity of the file object */ if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ remain = fp->obj.objsize - fp->fptr; @@ -3495,9 +3494,7 @@ FRESULT f_read ( if (csect + cc > fs->csize) { /* Clip at cluster boundary */ cc = fs->csize - csect; } - if (disk_read(fs->drv, rbuff, sect, cc) != RES_OK) { - ABORT(fs, FR_DISK_ERR); - } + if (disk_read(fs->drv, rbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it contains a dirty sector */ #if _FS_TINY if (fs->wflag && fs->winsect - sect < cc) { @@ -3517,12 +3514,10 @@ FRESULT f_read ( #if !_FS_READONLY if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif - if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { /* Fill sector cache */ - ABORT(fs, FR_DISK_ERR); - } + if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ } #endif fp->sect = sect; @@ -3563,7 +3558,7 @@ FRESULT f_write ( *bw = 0; /* Clear write byte counter */ - res = validate(fp, &fs); + res = validate(&fp->obj, &fs); /* Check validity of the file object */ if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ @@ -3603,7 +3598,7 @@ FRESULT f_write ( #else if (fp->flag & FA_DIRTY) { /* Write-back sector cache */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif sect = clust2sect(fs, fp->clust); /* Get current sector */ @@ -3614,9 +3609,7 @@ FRESULT f_write ( if (csect + cc > fs->csize) { /* Clip at cluster boundary */ cc = fs->csize - csect; } - if (disk_write(fs->drv, wbuff, sect, cc) != RES_OK) { - ABORT(fs, FR_DISK_ERR); - } + if (disk_write(fs->drv, wbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); #if _FS_MINIMIZE <= 2 #if _FS_TINY if (fs->winsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ @@ -3626,7 +3619,7 @@ FRESULT f_write ( #else if (fp->sect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif #endif @@ -3634,16 +3627,15 @@ FRESULT f_write ( continue; } #if _FS_TINY - if (fp->fptr >= fp->obj.objsize) { /* Avoid silly cache filling at growing edge */ + if (fp->fptr >= fp->obj.objsize) { /* Avoid silly cache filling on the growing edge */ if (sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); fs->winsect = sect; } #else - if (fp->sect != sect) { /* Fill sector cache with file data */ - if (fp->fptr < fp->obj.objsize && - disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { - ABORT(fs, FR_DISK_ERR); - } + if (fp->sect != sect && /* Fill sector cache with file data */ + fp->fptr < fp->obj.objsize && + disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { + ABORT(fs, FR_DISK_ERR); } #endif fp->sect = sect; @@ -3660,7 +3652,7 @@ FRESULT f_write ( #endif } - fp->flag |= FA_MODIFIED; /* Set file change flag */ + fp->flag |= FA_MODIFIED; /* Set file change flag */ LEAVE_FF(fs, FR_OK); } @@ -3680,17 +3672,16 @@ FRESULT f_sync ( FATFS *fs; DWORD tm; BYTE *dir; -#if _FS_EXFAT DEF_NAMBUF -#endif - res = validate(fp, &fs); /* Check validity of the object */ + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ if (res == FR_OK) { if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ #if !_FS_TINY if (fp->flag & FA_DIRTY) { /* Write-back cached data if needed */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif /* Update the directory entry */ @@ -3715,7 +3706,7 @@ FRESULT f_sync ( res = store_xdir(&dj); /* Restore it to the directory */ if (res == FR_OK) { res = sync_fs(fs); - fp->flag &= ~FA_MODIFIED; + fp->flag &= (BYTE)~FA_MODIFIED; } } FREE_NAMBUF(); @@ -3733,7 +3724,7 @@ FRESULT f_sync ( st_word(dir + DIR_LstAccDate, 0); fs->wflag = 1; res = sync_fs(fs); /* Restore it to the directory */ - fp->flag &= ~FA_MODIFIED; + fp->flag &= (BYTE)~FA_MODIFIED; } } } @@ -3763,7 +3754,7 @@ FRESULT f_close ( if (res == FR_OK) #endif { - res = validate(fp, &fs); /* Lock volume */ + res = validate(&fp->obj, &fs); /* Lock volume */ if (res == FR_OK) { #if _FS_LOCK != 0 res = dec_lock(fp->obj.lockid); /* Decrement file open counter */ @@ -3796,10 +3787,11 @@ FRESULT f_chdrive ( int vol; + /* Get logical drive number */ vol = get_ldnumber(&path); if (vol < 0) return FR_INVALID_DRIVE; - CurrVol = (BYTE)vol; + CurrVol = (BYTE)vol; /* Set it as current volume */ return FR_OK; } @@ -3815,7 +3807,7 @@ FRESULT f_chdir ( FATFS *fs; DEF_NAMBUF - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &fs, 0); if (res == FR_OK) { dj.obj.fs = fs; @@ -3874,7 +3866,7 @@ FRESULT f_getcwd ( *buff = 0; - /* Get logical drive number */ + /* Get logical drive */ res = find_volume((const TCHAR**)&buff, &fs, 0); /* Get current volume */ if (res == FR_OK) { dj.obj.fs = fs; @@ -3951,7 +3943,7 @@ FRESULT f_lseek ( DWORD cl, pcl, ncl, tcl, dsc, tlen, ulen, *tbl; #endif - res = validate(fp, &fs); /* Check validity of the object */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ #if _USE_FASTSEEK if (fp->cltbl) { /* Fast seek */ @@ -3993,12 +3985,10 @@ FRESULT f_lseek ( #if !_FS_READONLY if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif - if (disk_read(fs->drv, fp->buf, dsc, 1) != RES_OK) { /* Load current sector */ - ABORT(fs, FR_DISK_ERR); - } + if (disk_read(fs->drv, fp->buf, dsc, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Load current sector */ #endif fp->sect = dsc; } @@ -4021,7 +4011,7 @@ FRESULT f_lseek ( bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ if (ifptr > 0 && (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ - fp->fptr = (ifptr - 1) & ~(bcs - 1); /* start from the current cluster */ + fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ ofs -= fp->fptr; clst = fp->clust; } else { /* When seek to back cluster, */ @@ -4045,13 +4035,15 @@ FRESULT f_lseek ( fp->obj.objsize = fp->fptr; fp->flag |= FA_MODIFIED; } - clst = create_chain(&fp->obj, clst); /* Force stretch if in write mode */ - if (clst == 0) { /* When disk gets full, clip file size */ + clst = create_chain(&fp->obj, clst); /* Follow chain with forceed stretch */ + if (clst == 0) { /* Clip file size in case of disk full */ ofs = 0; break; } } else #endif + { clst = get_fat(&fp->obj, clst); /* Follow cluster chain if not in write mode */ + } if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); fp->clust = clst; @@ -4064,26 +4056,22 @@ FRESULT f_lseek ( } } } + if (!_FS_READONLY && fp->fptr > fp->obj.objsize) { /* Set file change flag if the file size is extended */ + fp->obj.objsize = fp->fptr; + fp->flag |= FA_MODIFIED; + } if (fp->fptr % SS(fs) && nsect != fp->sect) { /* Fill sector cache if needed */ #if !_FS_TINY #if !_FS_READONLY if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif - if (disk_read(fs->drv, fp->buf, nsect, 1) != RES_OK) { /* Fill sector cache */ - ABORT(fs, FR_DISK_ERR); - } + if (disk_read(fs->drv, fp->buf, nsect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ #endif fp->sect = nsect; } -#if !_FS_READONLY - if (fp->fptr > fp->obj.objsize) { /* Set file change flag if the file size is extended */ - fp->obj.objsize = fp->fptr; - fp->flag |= FA_MODIFIED; - } -#endif } LEAVE_FF(fs, res); @@ -4109,7 +4097,7 @@ FRESULT f_opendir ( if (!dp) return FR_INVALID_OBJECT; - /* Get logical drive number */ + /* Get logical drive */ obj = &dp->obj; res = find_volume(&path, &fs, 0); if (res == FR_OK) { @@ -4174,7 +4162,7 @@ FRESULT f_closedir ( FATFS *fs; - res = validate(dp, &fs); + res = validate(&dp->obj, &fs); /* Check validity of the file object */ if (res == FR_OK) { #if _FS_LOCK != 0 if (dp->obj.lockid) { /* Decrement sub-directory open counter */ @@ -4209,7 +4197,7 @@ FRESULT f_readdir ( DEF_NAMBUF - res = validate(dp, &fs); /* Check validity of the object */ + res = validate(&dp->obj, &fs); /* Check validity of the directory object */ if (res == FR_OK) { if (!fno) { res = dir_sdi(dp, 0); /* Rewind the directory object */ @@ -4297,7 +4285,7 @@ FRESULT f_stat ( DEF_NAMBUF - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &dj.obj.fs, 0); if (res == FR_OK) { INIT_NAMBUF(dj.obj.fs); @@ -4336,7 +4324,7 @@ FRESULT f_getfree ( _FDID obj; - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &fs, 0); if (res == FR_OK) { *fatfs = fs; /* Return ptr to the fs object */ @@ -4418,8 +4406,8 @@ FRESULT f_truncate ( DWORD ncl; - res = validate(fp, &fs); /* Check validity of the object */ - if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ if (fp->obj.objsize > fp->fptr) { @@ -4442,7 +4430,7 @@ FRESULT f_truncate ( if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { res = FR_DISK_ERR; } else { - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } } #endif @@ -4473,7 +4461,7 @@ FRESULT f_unlink ( DEF_NAMBUF - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &fs, FA_WRITE); dj.obj.fs = fs; if (res == FR_OK) { @@ -4567,7 +4555,7 @@ FRESULT f_mkdir ( DEF_NAMBUF - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &fs, FA_WRITE); dj.obj.fs = fs; if (res == FR_OK) { @@ -4661,7 +4649,7 @@ FRESULT f_rename ( get_ldnumber(&path_new); /* Ignore drive number of new name */ - res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive number of the old object */ + res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ if (res == FR_OK) { djo.obj.fs = fs; INIT_NAMBUF(fs); @@ -4678,10 +4666,12 @@ FRESULT f_rename ( mem_cpy(buf, fs->dirbuf, SZDIRE * 2); /* Save 85+C0 entry of old object */ mem_cpy(&djn, &djo, sizeof djo); - res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ - if (res == FR_OK) res = FR_EXIST; /* Is new name already in use? */ - if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ - res = dir_register(&djn); /* Register the new entry */ + res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } + if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + res = dir_register(&djn); /* Register the new entry */ if (res == FR_OK) { nf = fs->dirbuf[XDIR_NumSec]; nn = fs->dirbuf[XDIR_NumName]; nh = ld_word(fs->dirbuf + XDIR_NameHash); @@ -4698,7 +4688,9 @@ FRESULT f_rename ( mem_cpy(buf, djo.dir + DIR_Attr, 21); /* Save information about the object except name */ mem_cpy(&djn, &djo, sizeof (DIR)); /* Duplicate the directory object */ res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ - if (res == FR_OK) res = FR_EXIST; /* Is new name already in use? */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ res = dir_register(&djn); /* Register the new entry */ if (res == FR_OK) { @@ -4761,7 +4753,7 @@ FRESULT f_chmod ( DEF_NAMBUF - res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive number */ + res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ dj.obj.fs = fs; if (res == FR_OK) { INIT_NAMBUF(fs); @@ -4805,7 +4797,7 @@ FRESULT f_utime ( DEF_NAMBUF - res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive number */ + res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ dj.obj.fs = fs; if (res == FR_OK) { INIT_NAMBUF(fs); @@ -4853,7 +4845,7 @@ FRESULT f_getlabel ( WCHAR w; #endif - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&path, &fs, 0); /* Get volume label */ @@ -4941,7 +4933,7 @@ FRESULT f_setlabel ( static const char badchr[] = "\"*+,.:;<=>\?[]|\x7F"; - /* Get logical drive number */ + /* Get logical drive */ res = find_volume(&label, &fs, FA_WRITE); if (res != FR_OK) LEAVE_FF(fs, res); dj.obj.fs = fs; @@ -4950,7 +4942,7 @@ FRESULT f_setlabel ( for (slen = 0; (UINT)label[slen] >= ' '; slen++) ; /* Get name length */ #if _FS_EXFAT - if (fs->fs_type == FS_EXFAT) { /* At the exFAT */ + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ for (i = j = 0; i < slen; ) { /* Create volume label in directory form */ w = label[i++]; #if !_LFN_UNICODE @@ -4967,7 +4959,7 @@ FRESULT f_setlabel ( slen = j; } else #endif - { /* At the FAT12/16/32 */ + { /* On the FAT12/16/32 volume */ for ( ; slen && label[slen - 1] == ' '; slen--) ; /* Remove trailing spaces */ if (slen) { /* Is there a volume label to be set? */ dirvn[0] = 0; i = j = 0; /* Create volume label in directory form */ @@ -5008,7 +5000,7 @@ FRESULT f_setlabel ( res = dir_read(&dj, 1); /* Get volume label entry */ if (res == FR_OK) { if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { - dj.dir[XDIR_NumLabel] = slen / 2; /* Change the volume label */ + dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); /* Change the volume label */ mem_cpy(dj.dir + XDIR_Label, dirvn, slen); } else { if (slen) { @@ -5028,7 +5020,7 @@ FRESULT f_setlabel ( mem_set(dj.dir, 0, SZDIRE); /* Clear the entry */ if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { dj.dir[XDIR_Type] = 0x83; /* Create 83 entry */ - dj.dir[XDIR_NumLabel] = slen / 2; + dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); mem_cpy(dj.dir + XDIR_Label, dirvn, slen); } else { dj.dir[DIR_Attr] = AM_VOL; /* Create volume label entry */ @@ -5066,8 +5058,8 @@ FRESULT f_expand ( DWORD n, clst, stcl, scl, ncl, tcl, lclst; - res = validate(fp, &fs); /* Check validity of the object */ - if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); if (fsz == 0 || fp->obj.objsize != 0 || !(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); #if _FS_EXFAT if (fs->fs_type != FS_EXFAT && fsz >= 0x100000000) LEAVE_FF(fs, FR_DENIED); /* Check if in size limit */ @@ -5161,8 +5153,8 @@ FRESULT f_forward ( *bf = 0; /* Clear transfer byte counter */ - res = validate(fp, &fs); /* Check validity of the object */ - if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ remain = fp->obj.objsize - fp->fptr; @@ -5191,7 +5183,7 @@ FRESULT f_forward ( #if !_FS_READONLY if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); - fp->flag &= ~FA_DIRTY; + fp->flag &= (BYTE)~FA_DIRTY; } #endif if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); @@ -5226,14 +5218,14 @@ FRESULT f_mkfs ( { const UINT n_fats = 1; /* Number of FATs for FAT12/16/32 volume (1 or 2) */ const UINT n_rootdir = 512; /* Number of root directory entries for FAT12/16 volume */ - static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT12/16 volume (4KS unit) */ - static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (128KS unit) */ + static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT12/16 volume (4Ks unit) */ + static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (128Ks unit) */ BYTE fmt, sys, *buf, *pte, pdrv, part; WORD ss; - DWORD n, pau, n_clst, sz_blk, sect, szb_buf, sz_buf; + DWORD szb_buf, sz_buf, sz_blk, n_clst, pau, sect, nsect, n; DWORD b_vol, b_fat, b_data; /* Base LBA for volume, fat, data */ DWORD sz_vol, sz_rsv, sz_fat, sz_dir; /* Size for volume, fat, dir, data */ - UINT i, ns; + UINT i; int vol; DSTATUS stat; #if _USE_TRIM || _FS_EXFAT @@ -5246,34 +5238,33 @@ FRESULT f_mkfs ( if (vol < 0) return FR_INVALID_DRIVE; if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear mounted volume */ pdrv = LD2PD(vol); /* Physical drive */ - part = LD2PT(vol); /* Partition (0:create as new, 1-4:get by partition table) */ + part = LD2PT(vol); /* Partition (0:create as new, 1-4:get from partition table) */ /* Check physical drive status */ stat = disk_initialize(pdrv); if (stat & STA_NOINIT) return FR_NOT_READY; if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; - if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & (sz_blk - 1))) sz_blk = 1; + if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & (sz_blk - 1))) sz_blk = 1; /* Erase block to align data area */ #if _MAX_SS != _MIN_SS /* Get sector size of the medium */ if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR; if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; #else ss = _MAX_SS; #endif - if ((au != 0 && au < ss) || (au & (au - 1))) return FR_INVALID_PARAMETER; /* Check if au is valid */ - au /= ss; /* Cluster size in byte to in sector */ - if (au > 32768) return FR_INVALID_PARAMETER; + if ((au != 0 && au < ss) || au > 0x1000000 || (au & (au - 1))) return FR_INVALID_PARAMETER; /* Check if au is valid */ + au /= ss; /* Cluster size in unit of sector */ - /* Set size and pointer of the working buffer */ - buf = (BYTE*)work; /* Use given working buffer */ - if (len < ss) return FR_MKFS_ABORTED; - szb_buf = len & ~(ss - 1); /* Round-down by sector size [byte] */ - sz_buf = szb_buf / ss; /* Size of sector buffer [sector] */ + /* Get working buffer */ + buf = (BYTE*)work; /* Working buffer */ + sz_buf = len / ss; /* Size of working buffer (sector) */ + szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ + if (!szb_buf) return FR_MKFS_ABORTED; /* Determine where the volume to be located (b_vol, sz_vol) */ if (_MULTI_PARTITION && part != 0) { /* Get partition information from partition table in the MBR */ if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Load MBR */ - if (ld_word(buf + BS_55AA) != 0xAA55) return FR_MKFS_ABORTED; /* Check MBR is valid */ + if (ld_word(buf + BS_55AA) != 0xAA55) return FR_MKFS_ABORTED; /* Check if MBR is valid */ pte = buf + (MBR_Table + (part - 1) * SZ_PTE); if (!pte[PTE_System]) return FR_MKFS_ABORTED; /* No partition? */ b_vol = ld_dword(pte + PTE_StLba); /* Get volume start sector */ @@ -5285,16 +5276,16 @@ FRESULT f_mkfs ( if (sz_vol < b_vol) return FR_MKFS_ABORTED; sz_vol -= b_vol; /* Volume size */ } - if (sz_vol < 128) return FR_MKFS_ABORTED; /* Check volume size (>=128s) */ + if (sz_vol < 128) return FR_MKFS_ABORTED; /* Check if volume size is >=128s */ - /* Pre-determine the FAT type by argument */ + /* Pre-determine the FAT type */ do { if (_FS_EXFAT && (opt & FM_EXFAT)) { /* exFAT possible? */ - if ((opt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || au >= 256) { /* exFAT only, vol >= 64Ms or au >= 256s ? */ + if ((opt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || au > 128) { /* exFAT only, vol >= 64Ms or au > 128s ? */ fmt = FS_EXFAT; break; } } - if (au >= 256) return FR_INVALID_PARAMETER; /* Too large au for FAT/FAT32 */ + if (au > 128) return FR_INVALID_PARAMETER; /* Too large au for FAT/FAT32 */ if (opt & FM_FAT32) { /* FAT32 possible? */ if ((opt & FM_ANY) == FM_FAT32 || !(opt & FM_FAT)) { /* FAT32 only or no-FAT? */ fmt = FS_FAT32; break; @@ -5319,20 +5310,19 @@ FRESULT f_mkfs ( /* Determine FAT location, data location and number of clusters */ if (!au) { /* au auto-selection */ au = 8; - if (sz_vol >= 0x80000) au = 64; /* >= 512KS */ - if (sz_vol >= 0x4000000) au = 256; /* >= 64MS */ + if (sz_vol >= 0x80000) au = 64; /* >= 512Ks */ + if (sz_vol >= 0x4000000) au = 256; /* >= 64Ms */ } b_fat = b_vol + 32; /* FAT start at offset 32 */ - sz_fat = ((sz_vol / au + 2) * 4 + ss - 1) / ss; /* Numbef of FAT sectors */ + sz_fat = ((sz_vol / au + 2) * 4 + ss - 1) / ss; /* Number of FAT sectors */ b_data = (b_fat + sz_fat + sz_blk - 1) & ~(sz_blk - 1); /* Align data area to the erase block boundary */ if (b_data >= sz_vol / 2) return FR_MKFS_ABORTED; /* Too small volume? */ - n_clst = (sz_vol - (b_data - b_vol)) / au; /* Nunber of clusters */ + n_clst = (sz_vol - (b_data - b_vol)) / au; /* Number of clusters */ if (n_clst <16) return FR_MKFS_ABORTED; /* Too few clusters? */ if (n_clst > MAX_EXFAT) return FR_MKFS_ABORTED; /* Too many clusters? */ - szb_bit = (n_clst + 7) / 8; /* Size of allocation bitmap */ - tbl[0] = (szb_bit + au * ss - 1) / (au * ss); /* Number of bitmap clusters */ - tbl[2] = 1; /* Number of rootdir clusters */ + szb_bit = (n_clst + 7) / 8; /* Size of allocation bitmap */ + tbl[0] = (szb_bit + au * ss - 1) / (au * ss); /* Number of allocation bitmap clusters */ /* Create a compressed up-case table */ sect = b_data + au * tbl[0]; /* Table start sector */ @@ -5363,30 +5353,31 @@ FRESULT f_mkfs ( sum = xsum32(buf[i + 1] = (BYTE)(ch >> 8), sum); i += 2; szb_case += 2; if (!si || i == szb_buf) { /* Write buffered data when buffer full or end of process */ - ns = (i + ss - 1) / ss; - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; i = 0; + n = (i + ss - 1) / ss; + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; i = 0; } } while (si); - tbl[1] = (szb_case + au * ss - 1) / (au * ss); /* Number of up-case clusters */ + tbl[1] = (szb_case + au * ss - 1) / (au * ss); /* Number of up-case table clusters */ + tbl[2] = 1; /* Number of root dir clusters */ /* Initialize the allocation bitmap */ - sect = b_data; n = (szb_bit + ss - 1) / ss; /* Start of bitmap and number of the sectors */ + sect = b_data; nsect = (szb_bit + ss - 1) / ss; /* Start of bitmap and number of sectors */ nb = tbl[0] + tbl[1] + tbl[2]; /* Number of clusters in-use by system */ do { mem_set(buf, 0, szb_buf); for (i = 0; nb >= 8 && i < szb_buf; buf[i++] = 0xFF, nb -= 8) ; for (b = 1; nb && i < szb_buf; buf[i] |= b, b <<= 1, nb--) ; - ns = (n > sz_buf) ? sz_buf : n; /* Write the buffered data */ - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; n -= ns; - } while (n); + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); /* Initialize the FAT */ - sect = b_fat; n = sz_fat; /* Start of FAT and number of the sectors */ + sect = b_fat; nsect = sz_fat; /* Start of FAT and number of FAT sectors */ j = nb = cl = 0; do { - mem_set(buf, 0, szb_buf); i = 0; + mem_set(buf, 0, szb_buf); i = 0; /* Clear work area and reset write index */ if (cl == 0) { /* Set entry 0 and 1 */ st_dword(buf + i, 0xFFFFFFF8); i += 4; cl++; st_dword(buf + i, 0xFFFFFFFF); i += 4; cl++; @@ -5398,13 +5389,13 @@ FRESULT f_mkfs ( } if (!nb && j < 3) nb = tbl[j++]; /* Next chain */ } while (nb && i < szb_buf); - ns = (n > sz_buf) ? sz_buf : n; /* Write the buffered data */ - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; n -= ns; - } while (n); + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); /* Initialize the root directory */ - mem_set(buf, 0, ss); + mem_set(buf, 0, szb_buf); buf[SZDIRE * 0 + 0] = 0x83; /* 83 entry (volume label) */ buf[SZDIRE * 1 + 0] = 0x81; /* 81 entry (allocation bitmap) */ st_dword(buf + SZDIRE * 1 + 20, 2); @@ -5413,13 +5404,13 @@ FRESULT f_mkfs ( st_dword(buf + SZDIRE * 2 + 4, sum); st_dword(buf + SZDIRE * 2 + 20, 2 + tbl[0]); st_dword(buf + SZDIRE * 2 + 24, szb_case); - sect = b_data + au * (tbl[0] + tbl[1]); n = au; /* Start of directory and number of the sectors */ - do { /* Fill root direcotry sectors */ - ns = (n > sz_buf) ? sz_buf : n; - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; + sect = b_data + au * (tbl[0] + tbl[1]); nsect = au; /* Start of the root directory and number of sectors */ + do { /* Fill root directory sectors */ + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; mem_set(buf, 0, ss); - } while (n -= ns); + sect += n; nsect -= n; + } while (nsect); /* Create two set of the exFAT VBR blocks */ sect = b_vol; @@ -5465,7 +5456,7 @@ FRESULT f_mkfs ( } } else -#endif +#endif /* _FS_EXFAT */ { /* Create an FAT12/16/32 volume */ do { pau = au; @@ -5548,14 +5539,14 @@ FRESULT f_mkfs ( st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */ buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */ st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ - buf[BPB_NumFATs] = n_fats; /* Number of FATs */ + buf[BPB_NumFATs] = (BYTE)n_fats; /* Number of FATs */ st_word(buf + BPB_RootEntCnt, (WORD)((fmt == FS_FAT32) ? 0 : n_rootdir)); /* Number of root directory entries */ if (sz_vol < 0x10000) { st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ } else { - st_dword(buf + BPB_TotSec32, sz_vol); /* Volume size in 12-bit LBA */ + st_dword(buf + BPB_TotSec32, sz_vol); /* Volume size in 32-bit LBA */ } - buf[BPB_Media] = 0xF8; /* Media descriptor */ + buf[BPB_Media] = 0xF8; /* Media descriptor byte */ st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */ st_dword(buf + BPB_HiddSec, b_vol); /* Volume offset in the physical drive [sector] */ @@ -5592,8 +5583,8 @@ FRESULT f_mkfs ( } /* Initialize FAT area */ - mem_set(buf, 0, szb_buf); - sect = b_fat; /* Start sector */ + mem_set(buf, 0, (UINT)szb_buf); + sect = b_fat; /* FAT start sector */ for (i = 0; i < n_fats; i++) { /* Initialize FATs each */ if (fmt == FS_FAT32) { st_dword(buf + 0, 0xFFFFFFF8); /* Entry 0 */ @@ -5602,22 +5593,22 @@ FRESULT f_mkfs ( } else { st_dword(buf + 0, (fmt == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* Entry 0 and 1 */ } - n = sz_fat; /* Sector count of a FAT */ + nsect = sz_fat; /* Number of FAT sectors */ do { /* Fill FAT sectors */ - ns = (n > sz_buf) ? sz_buf : n; - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; mem_set(buf, 0, ss); - } while (n -= ns); + sect += n; nsect -= n; + } while (nsect); } /* Initialize root directory (fill with zero) */ - n = (fmt == FS_FAT32) ? pau : sz_dir; /* Sector count of root directory */ + nsect = (fmt == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ do { - ns = (n > sz_buf) ? sz_buf : n; - if (disk_write(pdrv, buf, sect, ns) != RES_OK) return FR_DISK_ERR; - sect += ns; - } while (n -= ns); + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); } /* Determine system ID in the partition table */ diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.h b/firmware/chibios-portapack/ext/fatfs/src/ff.h index 5984c8eb5..981a88634 100644 --- a/firmware/chibios-portapack/ext/fatfs/src/ff.h +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.h @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------------/ -/ FatFs - Generic FAT file system module R0.12a / +/ FatFs - Generic FAT file system module R0.12b / /-----------------------------------------------------------------------------/ / / Copyright (C) 2016, ChaN, all right reserved. @@ -19,7 +19,7 @@ #ifndef _FATFS -#define _FATFS 80186 /* Revision ID */ +#define _FATFS 68020 /* Revision ID */ #ifdef __cplusplus extern "C" { @@ -159,7 +159,7 @@ typedef struct { /* File object structure (FIL) */ typedef struct { - _FDID obj; /* Object identifier */ + _FDID obj; /* Object identifier (must be the 1st member to detect invalid object pointer) */ BYTE flag; /* File status flags */ BYTE err; /* Abort flag (error code) */ FSIZE_t fptr; /* File read/write pointer (Zeroed on file open) */ From a65fe3315cbc535ea6c902d1e74fd422b72975d5 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Wed, 3 May 2017 12:39:05 +0100 Subject: [PATCH 08/39] FatFs: Update to release R0.12c. --- firmware/application/ffconf.h | 21 +- .../ext/fatfs/doc/00index_e.html | 15 +- .../ext/fatfs/doc/00index_j.html | 15 +- .../chibios-portapack/ext/fatfs/doc/css_e.css | 3 +- .../chibios-portapack/ext/fatfs/doc/css_j.css | 3 +- .../ext/fatfs/doc/en/appnote.html | 24 +- .../ext/fatfs/doc/en/dread.html | 4 +- .../ext/fatfs/doc/en/dstat.html | 2 +- .../ext/fatfs/doc/en/dwrite.html | 2 +- .../ext/fatfs/doc/en/expand.html | 17 +- .../ext/fatfs/doc/en/fdisk.html | 7 +- .../ext/fatfs/doc/en/lseek.html | 5 +- .../ext/fatfs/doc/en/mkfs.html | 8 +- .../ext/fatfs/doc/en/rc.html | 11 +- .../ext/fatfs/doc/en/readdir.html | 2 +- .../ext/fatfs/doc/en/sdir.html | 2 +- .../ext/fatfs/doc/en/sfileinfo.html | 2 +- .../ext/fatfs/doc/ja/appnote.html | 11 +- .../ext/fatfs/doc/ja/expand.html | 8 +- .../ext/fatfs/doc/ja/fdisk.html | 7 +- .../ext/fatfs/doc/ja/lseek.html | 5 +- .../ext/fatfs/doc/ja/rc.html | 13 +- .../ext/fatfs/doc/ja/sfileinfo.html | 2 +- .../ext/fatfs/doc/res/app4.c | 10 +- .../ext/fatfs/doc/res/layers3.png | Bin 2379 -> 0 bytes .../ext/fatfs/doc/res/mkfatimg.zip | Bin 686662 -> 686683 bytes .../ext/fatfs/doc/res/mkfs.xls | Bin 3238912 -> 3238912 bytes .../ext/fatfs/doc/updates.txt | 8 +- .../ext/fatfs/src/00history.txt | 13 +- .../ext/fatfs/src/00readme.txt | 26 +- firmware/chibios-portapack/ext/fatfs/src/ff.c | 722 ++++++++++-------- firmware/chibios-portapack/ext/fatfs/src/ff.h | 25 +- .../ext/fatfs/src/ffconf_template.h | 265 ------- .../chibios-portapack/ext/fatfs/src/integer.h | 2 +- 34 files changed, 556 insertions(+), 704 deletions(-) delete mode 100644 firmware/chibios-portapack/ext/fatfs/doc/res/layers3.png delete mode 100644 firmware/chibios-portapack/ext/fatfs/src/ffconf_template.h diff --git a/firmware/application/ffconf.h b/firmware/application/ffconf.h index 44242d376..041cd7cd3 100644 --- a/firmware/application/ffconf.h +++ b/firmware/application/ffconf.h @@ -5,7 +5,7 @@ / FatFs - FAT file system module configuration file /---------------------------------------------------------------------------*/ -#define _FFCONF 68020 /* Revision ID */ +#define _FFCONF 68300 /* Revision ID */ /*---------------------------------------------------------------------------/ / Function Configurations @@ -76,7 +76,7 @@ /* This option specifies the OEM code page to be used on the target system. / Incorrect setting of the code page can cause a file open failure. / -/ 1 - ASCII (No extended character. Non-LFN cfg. only) +/ 1 - ASCII (No support of extended character. Non-LFN cfg. only) / 437 - U.S. / 720 - Arabic / 737 - Greek @@ -151,7 +151,7 @@ /---------------------------------------------------------------------------*/ #define _VOLUMES 1 -/* Number of volumes (logical drives) to be used. */ +/* Number of volumes (logical drives) to be used. (1-10) */ #define _STR_VOLUME_ID 0 @@ -175,11 +175,11 @@ #define _MIN_SS 512 #define _MAX_SS 512 /* These options configure the range of sector size to be supported. (512, 1024, -/ 2048 or 4096) Always set both 512 for most systems, all type of memory cards and +/ 2048 or 4096) Always set both 512 for most systems, generic memory card and / harddisk. But a larger value may be required for on-board flash memory and some / type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured -/ to variable sector size and GET_SECTOR_SIZE command must be implemented to the -/ disk_ioctl() function. */ +/ to variable sector size and GET_SECTOR_SIZE command needs to be implemented to +/ the disk_ioctl() function. */ #define _USE_TRIM 0 @@ -207,7 +207,7 @@ #define _FS_TINY 0 /* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) -/ At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes. +/ At the tiny configuration, size of file object (FIL) is shrinked _MAX_SS bytes. / Instead of private sector buffer eliminated from the file object, common sector / buffer in the file system object (FATFS) is used for the file data transfer. */ @@ -215,7 +215,7 @@ #define _FS_EXFAT 0 /* This option switches support of exFAT file system. (0:Disable or 1:Enable) / When enable exFAT, also LFN needs to be enabled. (_USE_LFN >= 1) -/ Note that enabling exFAT discards C89 compatibility. */ +/ Note that enabling exFAT discards ANSI C (C89) compatibility. */ #define _FS_NORTC 0 @@ -228,7 +228,7 @@ / defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR in local time. / To enable timestamp function (_FS_NORTC = 0), get_fattime() function need to be / added to the project to get current time form real-time clock. _NORTC_MON, -/ _NORTC_MDAY and _NORTC_YEAR have no effect. +/ _NORTC_MDAY and _NORTC_YEAR have no effect. / These options have no effect at read-only configuration (_FS_READONLY = 1). */ @@ -261,10 +261,11 @@ / / The _FS_TIMEOUT defines timeout period in unit of time tick. / The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, -/ SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be +/ SemaphoreHandle_t and etc. A header file for O/S definitions needs to be / included somewhere in the scope of ff.h. */ /* #include // O/S definitions */ + /*--- End of configuration options ---*/ diff --git a/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html b/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html index 905b7b8f5..68e22b0f4 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/00index_e.html @@ -10,11 +10,11 @@ -FatFs - Generic FAT File System Module +FatFs - Generic FAT File System Module (R0.12c) -

    FatFs - Generic FAT File System Module

    +

    FatFs - Generic FAT File System Module (R0.12c)


    @@ -23,7 +23,7 @@

    Features

      -
    • Windows compatible FAT/exFAT file system.
    • +
    • DOS/Windows compatible FAT/exFAT file system.
    • Platform independent. Easy to port.
    • Very small footprint for program code and work area.
    • Various configuration options to support for: @@ -44,6 +44,7 @@

      Application Interface

      layer +

      FatFs provides various file control functions for the applications as shown below.

      • File Access
          @@ -103,9 +104,9 @@
          -

          Device Control Interface

          +

          Media Access Interface

          layer -

          Since the FatFs module is a file system layer, it is completely separated from the physical devices, such as memory card, harddisk and any type of storage device. FatFs accesses the storage devices via a simple interface shown below. The low level device control module is not a part of FatFs module. It is provided by implementer. Also sample implementations for some platforms are available in the downloads.

          +

          Since the FatFs module is just a file system layer independent of platform and storage device. It is completely separated from the physical devices, such as memory card, harddisk and any type of storage device. The low level device control module is not a part of FatFs module and it needs to be provided by implementer. FatFs accesses the storage devices via a simple media access interface shown below. Also sample implementations for some platforms are available in the downloads.

          • disk_status - Get device status
          • disk_initialize - Initialize device
          • @@ -121,7 +122,7 @@

            Resources

            The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for personal projects or commercial products without any restriction under your responsibility. For further information, refer to the application note.

              -
            • Read first: FatFs module application note July 10, 2016
            • +
            • Read first: FatFs module application note
            • Community: FatFs User Forum
            • FAT32 Specification by Microsoft↗ (The authorized document on FAT file system)
            • The basics of FAT file system [ja]
            • @@ -136,6 +137,6 @@
              -

              FatFs home page

              +

              FatFs Homepage

              diff --git a/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html b/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html index 51df31d55..02c927fb9 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/00index_j.html @@ -10,11 +10,11 @@ -FatFs 汎用FATファイルシステム モジュール +FatFs 汎用FATファイルシステム モジュール (R0.12c) -

              FatFs 汎用FATファイルシステム モジュール

              +

              FatFs 汎用FATファイルシステム モジュール (R0.12c)


              @@ -22,7 +22,7 @@

              FatFsは小規模な組み込みシステム向けの汎用FAT/exFATファイルシステム モジュールです。ANSI C(C89)準拠でハードウェア アーキテクチャには依存しないので、必要なワーク エリアが確保できれば、8051, PIC, AVR, SH, Z80, 68k, H8, ARMなど安価なマイコンでも使用可能です。このほか、FatFsを極小マイコン向けにシュリンクしたぷちFatFsもあります。

              FatFsモジュールの特徴

                -
              • Windows互換 FAT/exFATファイルシステム
              • +
              • DOS/Windows互換 FAT/exFATファイルシステム
              • プラットフォーム非依存
              • コンパクトなコードとRAM使用量
              • 多くの構成オプション: @@ -41,8 +41,9 @@
                -

                上位レイヤ インターフェース

                +

                アプリケーション インターフェース

                layer +

                FatFsモジュールは、上位レイヤに対して次に示すファイルAPIを提供します。

                • ファイル アクセス
                    @@ -102,9 +103,9 @@
                    -

                    下位レイヤ インターフェース

                    +

                    デバイス制御インターフェース

                    layer -

                    FatFsモジュールは、単なるファイルシステム レイヤなので、その下位のストレージ デバイス制御レイヤはそれに含まれません。それぞれのプラットフォームやストレージ デバイスに対応した制御レイヤは、インプリメンタによって提供される必要があります。FatFsモジュールは、下位レイヤに対し標準的には次のインターフェースを要求します。一部の拡張機能、たとえばOS関連機能を有効にしたときは、加えてプロセス/メモリ操作関数なども必要になります。サンプル プロジェクトに下位レイヤの実装例を示します。

                    +

                    FatFsモジュールは、プラットフォームから独立した単なるファイルシステム レイヤです。ストレージ デバイス(例えばメモリ カード)の制御機能はFatFsの構成部分ではないので、インプリメンタによって提供される必要があります。FatFsモジュールは、下位レイヤに対し標準的には次のインターフェースを要求します。一部の拡張機能(たとえばOS関連機能)を利用するときは、これらに加えてプロセス/メモリ操作関数なども必要になります。サンプル プロジェクトに下位レイヤの実装例を示します。

                    • disk_status - デバイスの状態取得
                    • disk_initialize - デバイスの初期化
                    • @@ -120,7 +121,7 @@

                      資料

                      FatFsモジュールはフリー ソフトウェアとして教育・研究・開発用に公開しています。どのような利用目的(個人利用から商用まで)でも使用・改変・配布について一切の制限はありませんが、全て利用者の責任の下での利用とします。詳しくはアプリケーション ノートを参照してください。

                        -
                      • 最初に読め: FatFsモジュール アプリケーション ノート 2016. 9. 4
                      • +
                      • 最初に読め: FatFsモジュール アプリケーション ノート
                      • コミュニティ: FatFsユーザ フォーラム
                      • FATファイルシステム仕様 by Microsoft↗ (The reference document on FAT file system)
                      • FATファイルシステム概要 (↑を読むためのガイド)
                      • diff --git a/firmware/chibios-portapack/ext/fatfs/doc/css_e.css b/firmware/chibios-portapack/ext/fatfs/doc/css_e.css index 99c6714a6..0813d7be1 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/css_e.css +++ b/firmware/chibios-portapack/ext/fatfs/doc/css_e.css @@ -14,6 +14,7 @@ strong {} pre {border: 1px dashed gray; margin: 0.5em 1em; padding: 0.5em; line-height: 1.2em; font-size: 85%; font-family: "Consolas", "Courier New", monospace; background-color: white;} pre span.c {color: green;} pre span.k {color: blue;} +pre span.b {font-weight: bold;} pre span.arg {font-style: italic;} tt {margin: 0 0.2em; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; } tt.arg {font-style: italic;} @@ -24,7 +25,7 @@ dl {margin: 0.5em 1em;} dd {margin: 0 2em;} dt {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace;} dl.par dt {margin: 0.5em 0 0 0 ; font-style: italic; } -dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace;} +dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; font-weight: bold; } hr {border-width: 1px; margin: 1em;} div.abst {font-family: sans-serif;} div.para {clear: both; font-family: serif;} diff --git a/firmware/chibios-portapack/ext/fatfs/doc/css_j.css b/firmware/chibios-portapack/ext/fatfs/doc/css_j.css index 3b1a96469..77b634e33 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/css_j.css +++ b/firmware/chibios-portapack/ext/fatfs/doc/css_j.css @@ -17,6 +17,7 @@ strong {} pre {border: 1px dashed gray; margin: 0.5em 1em; padding: 0.5em; line-height: 1.2em; letter-spacing: 0; font-size: 0.85em; font-family: "Consolas", "Courier New", "lr SVbN", monospace; background-color: white;} pre span.c {color: green;} pre span.k {color: blue;} +pre span.b {font-weight: bold;} pre span.arg {font-style: italic;} tt {margin: 0 0.2em; letter-spacing: 0; font-size: 0.85em; font-family: "Consolas", "Courier New", "lr SVbN", monospace;} tt.arg {font-style: italic;} @@ -27,7 +28,7 @@ dl {margin: 0.5em 1em;} dd {margin: 0em 2em;} dt {font-size: 0.85em; font-family: "Consolas", "Courier New", "lr SVbN", monospace;} dl.par dt {margin: 0.5em 0 0 0 ; font-style: italic; letter-spacing: 0;} -dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", "lr SVbN", monospace; letter-spacing: 0; } +dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", "lr SVbN", monospace; letter-spacing: 0; font-weight: bold; } hr {border-width: 1px; margin: 1em;} div.abst {font-family: "lr oSVbN",sans-serif;} div.para {clear: both; font-family: "lr o",serif;} diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html b/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html index 5acfdeb35..34d01cf38 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/appnote.html @@ -64,7 +64,7 @@ The FatFs module assumes that size of char/short/long

                        Limits

                          -
                        • File system type: FAT12, FAT16, FAT32(r0.0) and exFAT(r1.0).
                        • +
                        • File system type: FAT, FAT32(r0.0) and exFAT(r1.0).
                        • Number of open files: Unlimited. (depends on available memory)
                        • Number of volumes: Upto 10.
                        • Volume size: Upto 2 TiB at 512 bytes/sector.
                        • @@ -144,7 +144,7 @@ And other options are left unchanged from original setting.

                          Long File Name

                          -

                          FatFs module supports long file name (LFN). The two different file names, short file name (SFN) and LFN, of a file is transparent on the API except for f_readdir function. The support for LFN is disabled by default. To enable the LFN, set _USE_LFN to 1, 2 or 3, and add option/unicode.c to the project. The LFN requiers a certain working buffer in addition. The buffer size can be configured by _MAX_LFN according to the available memory. The length of an LFN will be up to 255 characters, so that the _MAX_LFN should be set to 255 for all file names. If the size of working buffer is insufficient for the input file name, the file function fails with FR_INVALID_NAME. When use any re-entry to the API with LFN is enabled, _USE_LFN must be set to 2 or 3. In this case, the file function allocates the working buffer on the stack or heap. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and additional 608 bytes when exFAT enabled.

                          +

                          FatFs module supports long file name (LFN). The two different file names, short file name (SFN) and LFN, of a file is transparent on the API except for f_readdir function. The support for LFN is disabled by default. To enable the LFN, set _USE_LFN to 1, 2 or 3, and add option/unicode.c to the project. The LFN requiers a certain working buffer in addition. The buffer size can be configured by _MAX_LFN according to the available memory. The length of an LFN will be up to 255 characters, so that the _MAX_LFN should be set to 255 for all file names. If the size of working buffer is insufficient for the input file name, the file function fails with FR_INVALID_NAME. When use any re-entry to the API with LFN is enabled, _USE_LFN must be set to 2 or 3. In this case, the file function allocates the working buffer on the stack or heap. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and additional (_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled.

                          @@ -165,22 +165,22 @@ And other options are left unchanged from original setting.

                          exFAT File System

                          -

                          The exFAT (Microsoft's Extended File Allocation Table) file system is a replacement of the FAT file system which has been widely used in the embedded systems and consumer devices. It is adopted by SDA (SD Association) as a recommended file system for high capacity SD cards (>32GB) and they are being shipped with this format, so that the exFAT will soon become one of the standard file systems for removable media.

                          -

                          The exFAT file system allows the file size larger than 4 GiB limit what FAT file system allows upto and some file system overhead, especially file allocation delay, are reduced as well. This feature improves the write throughput to the file. However a problem on the current implementation of FatFs is that write throughput at writing to the growing edge of the fragmented file gets less than the throughput on the FAT volume. Pre-allocating a contiguous block with f_expand function may be a workaround of this problem.

                          -

                          Note that the exFAT is a patent of Microsoft Corporation. The exFAT function of FatFs is an implementation based on US. Pat. App. Pub. No. 2009/0164440 A1. FatFs module can swich the exFAT on/off by configuration option. When enable the exFAT on the commercial products, you will need to be licensed by Microsoft depends on the final destination of the products.

                          -

                          Remark: Enabling exFAT discards C89 compatibility because of need for 64-bit integer type.

                          +

                          The exFAT (Microsoft's Extended File Allocation Table) file system is a replacement of the FAT file system which has been widely used in the embedded systems and consumer devices. It is adopted by SDA (SD Association) as a recommended file system for high capacity SD cards (>32GB) and they are being shipped with this format, so that the exFAT become one of the standard file systems for removable media as well as FAT. The exFAT file system allows the file size larger than 4 GiB limit what FAT file system allows upto and some file system overhead, especially cluster allocation delay, are reduced as well. This feature improves the write throughput to the file.

                          +

                          Note that the exFAT is a patent of Microsoft Corporation. The exFAT function of FatFs is an implementation based on US. Pat. App. Pub. No. 2009/0164440 A1. FatFs module can swich the exFAT on/off by configuration option. When enable the exFAT on the commercial products, you will need to be licensed by Microsoft depends on the final destination of the products.

                          +

                          Remark: Enabling exFAT discards ANSI C (C89) compatibility because of need for 64-bit integer type.

                          +

                          Re-entrancy

                          -

                          The file operations to the different volume is always re-entrant regardless of configurations except when LFN enabled with static working buffer. It can work simultaneously without any mutual exclusion.

                          -

                          The file operations to the same volume is not re-entrant but it can also be configured thread-safe by option _FS_REENTRANT. It enables to control exclusive use of each file system object. In this case, also the OS dependent synchronization object control functions, ff_cre_syncobj/ff_del_syncobj/ff_req_grant/ff_rel_grant, needed to be added to the project. There are some examples in the option/syscall.c.

                          +

                          The file operations to the different volume each other is always re-entrant regardless of configurations except when LFN enabled with static working buffer. It can work simultaneously without any mutual exclusion.

                          +

                          The file operations to the same volume is not re-entrant. It can also be configured thread-safe by option _FS_REENTRANT. It enables to control exclusive use of each file system object. In this case, also the OS dependent synchronization object control functions, ff_cre_syncobj/ff_del_syncobj/ff_req_grant/ff_rel_grant, needed to be added to the project. There are some examples in the option/syscall.c.

                          When a file function is called while the volume is being accessed by other task, the file function to the volume will be suspended until that task leaves the file function. If the wait time exceeded a period defined by _TIMEOUT, the file function will abort with FR_TIMEOUT. The timeout function might not be supported on the some RTOSs.

                          -

                          There is an exception on the re-entrancy for f_mount/f_mkfs/f_fdisk function. These volume management functions are not re-entrant to the same volume and corresponding physical drive. When use these functions, other tasks need to avoid to access the volume.

                          -

                          Note that this section describes on the re-entrancy of the FatFs module itself. The _FS_REENTRANT controls only exclusive use of each file system object and it does not that prevent to re-enter the low level disk functions. For example, only disk_status function can be re-entered at single volume system and any disk function can be re-entered at multiple volume system. Thus the low level disk I/O layer must be always thread-safe when any FatFs API is re-entered by two or more tasks.

                          +

                          There is an exception on the re-entrancy for f_mount/f_mkfs/f_fdisk function. These volume management functions are not re-entrant on the same volume and corresponding physical drive. When use these functions, other tasks need to avoid to access the volume.

                          +

                          Note that this section describes on the re-entrancy of the FatFs module itself. The _FS_REENTRANT controls only exclusive use of each file system object and it does not that prevent re-entering the low level disk functions. For example, only disk_status function is re-entered at single volume system and every disk function is re-entered at multiple volume system. Thus the low level disk I/O layer must be always thread-safe when FatFs API is re-entered by two or more tasks.

                          -

                          Duplicated File Access

                          +

                          Duplicated File Open

                          FatFs module does not support the read/write collision control of duplicated open to a file. The duplicated open is permitted only when each of open method to a file is read mode. The duplicated open with one or more write mode to a file is always prohibited, and also open file must not be renamed or deleted. A violation of these rules can cause data colluption.

                          The file lock control can be enabled by _FS_LOCK option. The value of option defines the number of open objects to manage simultaneously. In this case, if any open, rename or remove that violating the file shareing rule that described above is attempted, the file function will rejected with FR_LOCKED. If number of open objects, files and sub-directories, is equal to _FS_LOCK, an extra f_open/f_opendir function will fail with FR_TOO_MANY_OPEN_FILES.

                          @@ -274,7 +274,7 @@ Figure 5. Minimized critical section
                          / by use of this software. /----------------------------------------------------------------------------*/ -

                          Therefore FatFs license is one of the BSD-style licenses but there is a significant feature. FatFs is mainly intended for embedded systems. In order to extend the usability for commercial products, the redistributions of FatFs in binary form, such as embedded code, binary library and any forms without source code, does not need to include about FatFs in the documentations. This is equivalent to the 1-clause BSD license. Of course FatFs is compatible with the most open source software licenses including GNU GPL. When you redistribute the FatFs source code with any changes or create a fork, the license can also be changed to GNU GPL, BSD-style license or any open source software licenses that not conflict with FatFs license.

                          +

                          Therefore FatFs license is one of the BSD-style licenses but there is a significant feature. FatFs is mainly intended for embedded systems. In order to extend the usability for commercial products, the redistributions of FatFs in binary form, such as embedded code, binary library and any forms without source code, does not need to include about FatFs in the documentations. This is equivalent to the 1-clause BSD license. Of course FatFs is compatible with the most of open source software licenses including GNU GPL. When you redistribute the FatFs source code with any changes or create a fork, the license can also be changed to GNU GPL, BSD-style license or any open source software license that not conflict with FatFs license.

                          Return Home

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html index b7674a16f..b4594c7dd 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dread.html @@ -60,8 +60,8 @@ DRESULT disk_read (

                          The memory address specified by buff is not that always aligned to word boundary because the argument is defined as BYTE*. The unaligned read/write request can occure at direct transfer. If the bus architecture, especially DMA controller, does not allow unaligned memory access, it should be solved in this function. There are some workarounds described below to avoid this issue.

                          • Convert word transfer to byte transfer in this function if needed. - Recommended.
                          • -
                          • On the f_read calls, avoid long read request that includes a whole of sector. - Any direct transfer never occures.
                          • -
                          • On the f_read calls, make sure that (((UINT)data & 3) == (f_tell(fp) & 3)) is true. - Word alignment of buff is guaranteed.
                          • +
                          • On the f_read() calls, avoid long read request that includes a whole of sector. - Any direct transfer never occures.
                          • +
                          • On the f_read(fp, data, btw, bw) calls, make sure that (((UINT)data & 3) == (f_tell(fp) & 3)) is true. - Word alignment of buff is guaranteed.

                          Generally, a multiple sector transfer request must not be split into single sector transactions to the storage device, or you will not get good read throughput.

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html index 78508ba80..7092da7cb 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dstat.html @@ -35,7 +35,7 @@ DSTATUS disk_status (

                          The current drive status is returned in combination of status flags described below. FatFs refers only STA_NOINIT and STA_PROTECT.

                          STA_NOINIT
                          -
                          Indicates that the device is not initialized and not ready to work. This flag is set on system reset, media removal or failure of disk_initialize function. It is cleared on disk_initialize function succeeded. Any media change that occurs asynchronously must be captured and reflect it to the status flags, or auto-mount function will not work correctly. If the system does not support media change detection, application program needs to force de-initialize the file system object and re-mount the volume with f_mount function after each media change.
                          +
                          Indicates that the device is not initialized and not ready to work. This flag is set on system reset, media removal or failure of disk_initialize function. It is cleared on disk_initialize function succeeded. Any media change that occurs asynchronously must be captured and reflect it to the status flags, or auto-mount function will not work correctly. If the system does not support media change detection, application program needs to explicitly re-mount the volume with f_mount function after each media change.
                          STA_NODISK
                          Indicates that no medium in the drive. This is always cleared at fixed disk drive. Note that FatFs does not refer this flag.
                          STA_PROTECT
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html b/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html index b99eccdc5..a8c5ce8ab 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/dwrite.html @@ -60,7 +60,7 @@ DRESULT disk_write (

                          Description

                          The specified memory address is not that always aligned to word boundary because the type of pointer is defined as BYTE*. For more information, refer to the description of disk_read function.

                          Generally, a multiple sector transfer request must not be split into single sector transactions to the storage device, or you will never get good write throughput.

                          -

                          FatFs expects delayed write function of the disk control layer. The write operation to the media does not need to be completed when return from this function by what write operation is in progress or data is only stored into the write-back cache. But write data on the buff is invalid after return from this function. The write completion request is done by CTRL_SYNC command of disk_ioctl function. Therefore, if a delayed write function is implemented, the write throughput will be improved.

                          +

                          FatFs expects delayed write function of the disk control layer. The write operation to the media does not need to be completed when return from this function by what write operation is in progress or data is only stored into the write-back cache. But write data on the buff is invalid after return from this function. The write completion request is done by CTRL_SYNC command of disk_ioctl function. Therefore, if a delayed write function is implemented, the write throughput of the file system will be improved.

                          Remarks: Application program MUST NOT call this function, or FAT structure on the volume can be collapsed.

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html b/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html index 54f21d1b7..8e40d3ca1 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/expand.html @@ -60,8 +60,8 @@ FRESULT f_expand (
                        • Not allowable file size. (>= 4GiB on FAT volume)
                        • When opt is 0, the function finds a contiguous data area and set it as suggested point for next allocation instead of allocating it to the file. The next cluster allocation is started at top of the contiguous area found by this function. Thus the write file is guaranteed be contiguous and no allocation delay until the size reaches that size at least unless any other changes to the volume is performed.

                          -

                          The contiguous file would have an advantage at time-critical read/write operations. It reduces some overheads in the file system and the storage media caused by random access due to fragmented file data. Especially FAT access for the contiguous file on the exFAT volume is completely eliminated and storage media will be accessed sequentially.

                          -

                          Also the contiguous file data can be easily accessed directly via low-level disk functions. But this is not recommended in consideration for future compatibility.

                          +

                          The contiguous file would have an advantage at time-critical read/write operations. It eliminates some overheads in the file system and the storage media caused by random access due to fragmented file data. Especially FAT access for the contiguous file on the exFAT volume is completely eliminated and storage media will be accessed sequentially.

                          +

                          Also the contiguous file can be easily accessed directly via low-level disk functions. But this is not recommended in consideration for future compatibility.

                          @@ -79,28 +79,29 @@ FRESULT f_expand ( res = f_open(fp = malloc(sizeof (FIL)), "file.dat", FA_WRITE|FA_CREATE_ALWAYS); if (res) { /* Check if the file has been opened */ free(fp); - ... + die("Failed to open the file."); } /* Alloacte a 100 MiB of contiguous area to the file */ res = f_expand(fp, 104857600, 1); if (res) { /* Check if the file has been expanded */ - ... + f_close(fp); free(fp); - ... + die("Failed to allocate contiguous area."); } + /* Now you have a contiguous file accessible with fp */
                          -    /* Accessing the file data directly via low-level disk functions */
                          +    /* Accessing the contiguous file via low-level disk functions */
                           
                               /* Get physical location of the file data */
                               drv = fp->obj.fs->drv;
                          -    sect = fp->obj.fs->database + fp->obj.fs->csize * (fp->obj.sclust - 2);
                          +    lba = fp->obj.fs->database + fp->obj.fs->csize * (fp->obj.sclust - 2);
                           
                               /* Write 2048 sectors from top of the file at a time */
                          -    res = disk_write(drv, buffer, sect, 2048);
                          +    res = disk_write(drv, buffer, lba, 2048);
                           
                           
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html b/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html index 8414f919a..e86ec6c79 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/fdisk.html @@ -62,15 +62,14 @@ FRESULT f_fdisk ( /* Volume management table defined by user (required when _MULTI_PARTITION == 1) */ PARTITION VolToPart[] = { - {0, 1}, /* Logical drive 0 ==> Physical drive 0, 1st partition */ - {0, 2}, /* Logical drive 1 ==> Physical drive 0, 2nd partition */ - {1, 0} /* Logical drive 2 ==> Physical drive 1, auto detection */ + {0, 1}, /* "0:" ==> Physical drive 0, 1st partition */ + {0, 2}, /* "1:" ==> Physical drive 0, 2nd partition */ + {1, 0} /* "2:" ==> Physical drive 1, auto detection */ };
                               /* Initialize a brand-new disk drive mapped to physical drive 0 */
                           
                          -    FATFS fs;
                               DWORD plist[] = {50, 50, 0, 0};  /* Divide drive into two partitions */
                               BYTE work[_MAX_SS];
                           
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/lseek.html b/firmware/chibios-portapack/ext/fatfs/doc/en/lseek.html
                          index cf4f47e51..f631979ae 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/en/lseek.html
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/lseek.html
                          @@ -29,7 +29,7 @@ FRESULT f_lseek (
                           
                          fp
                          Pointer to the open file object.
                          ofs
                          -
                          Byte offset from top of the file. The data type FSIZE_t is an alias of either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option _FS_EXFAT.
                          +
                          Byte offset from top of the file to set read/write pointer. The data type FSIZE_t is an alias of either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option _FS_EXFAT.
                          @@ -48,7 +48,8 @@ FRESULT f_lseek (

                          Description

                          -

                          The f_lseek function moves the file read/write pointer of an open file. The offset can be specified in only origin from top of the file. When an offset beyond the file size is specified at write mode, the file size is expanded to the specified offset. The file data in the expanded area is undefined because no data is written to the file in this process. This is suitable to pre-allocate a cluster chain quickly, for fast write operation. When a contiguous data area needs to be allocated to the file, use f_expand function instead. After the f_lseek function succeeded, the current read/write pointer should be checked in order to make sure the read/write pointer has been moved correctry. In case of the read/write pointer is not the expected value, either of followings has been occured.

                          +

                          File read/write ponter in the open file object points the data byte to be read/written at next read/write operation. It advances as the number of bytes read/written. The f_lseek function moves the file read/write pointer without any read/write operation to the file.

                          +

                          When an offset beyond the file size is specified at write mode, the file size is expanded to the specified offset. The file data in the expanded area is undefined because no data is written to the file in this process. This is suitable to pre-allocate a data area to the file quickly for fast write operation. When a contiguous data area needs to be allocated to the file, use f_expand function instead. After the f_lseek function succeeded, the current read/write pointer should be checked in order to make sure the read/write pointer has been moved correctry. In case of the read/write pointer is not the expected value, either of followings has been occured.

                          • End of file. The specified ofs was clipped at end of the file because the file has been opened in read-only mode.
                          • Disk full. There is no free space on the volume to expand the file.
                          • diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html b/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html index 180ffdf80..aba07b9ee 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/mkfs.html @@ -29,7 +29,7 @@ FRESULT f_mkfs (

                            Parameters

                            path
                            -
                            Pointer to the null-terminated string specifies the logical drive to be formatted. If there is no drive number in it, it means the default drive. The logical drive may or may not be mounted for the format process.
                            +
                            Pointer to the null-terminated string specifies the logical drive to be formatted. If it has no drive number in it, it means the default drive. The logical drive may or may not be mounted for the format process.
                            opt
                            Specifies the format option in combination of FM_FAT, FM_FAT32, FM_EXFAT and bitwise-or of these three, FM_ANY. FM_EXFAT is ignored when exFAT is not enabled. These flags specify which FAT type to be created on the volume. If two or more types are specified, one out of them will be selected depends on the volume size. The flag FM_SFD specifies to place the volume on the drive in SFD format.
                            au
                            @@ -37,7 +37,7 @@ FRESULT f_mkfs (
                            work
                            Pointer to the working buffer used for the format process.
                            len
                            -
                            Size of the working buffer in unit of byte. It needs to be the sector size at least. Plenty of working buffer reduces number of write transaction to the device and the format process will be finished quickly.
                            +
                            Size of the working buffer in unit of byte. It needs to be the sector size at least. Plenty of working buffer reduces number of write transactions to the drive and the format process will be finished quickly.
                          @@ -57,9 +57,9 @@ FRESULT f_mkfs (

                          Description

                          The FAT sub-type, FAT12/FAT16/FAT32, of FAT volume except exFAT is determined by only number of clusters on the volume and nothing else, according to the FAT specification issued by Microsoft. Thus which FAT sub-type is selected, is depends on the volume size and the specified cluster size. In case of the combination of FAT type and cluter size specified by argument cannot be valid on the volume, the function will fail with FR_MKFS_ABORTED.

                          -

                          The allocation unit, also called 'cluster', is a unit of disk space allocation for files. When the size of allocation unit is 32768 bytes, a file with 100 bytes in size occupies 32768 bytes of disk space. The space efficiency of disk usage gets worse as increasing size of allocation unit, but, on the other hand, the read/write performance increases as the size of allocation unit. Therefore the allocation unit is a trade-off between space efficiency and performance. For the large storages in GB order, 32768 bytes or larger cluster (this is automatically selected by default) is recommended for most case unless extremely many files are created on a volume.

                          +

                          The allocation unit, also called 'cluster', is a unit of disk space allocation for files. When the size of allocation unit is 32768 bytes, a file with 100 bytes in size occupies 32768 bytes of disk space. The space efficiency of disk usage gets worse as increasing size of allocation unit, but, on the other hand, the read/write performance increases as the size of allocation unit. Therefore the size of allocation unit is a trade-off between space efficiency and performance. For the large storages in GB order, 32768 bytes or larger cluster (this is automatically selected by default) is recommended for most case unless extremely many small files are created on a volume.

                          There are two disk formats, FDISK and SFD. The FDISK format is usually used for harddisk, MMC, SDC, CFC and U Disk. It can divide a physical drive into one or more partitions with a partition table on the MBR (maser boot record, the first sector of the physical drive). The SFD (super-floppy disk) is non-partitioned disk format. The FAT volume starts at the first sector of the physical drive without any disk partitioning. It is usually used for floppy disk, Microdrive, optical disk and most type of super-floppy media. Some systems support only either one of two formats and other is not supported.

                          -

                          When FM_SFD is not specified, a primary partition occupies whole drive space is created and then the FAT volume is created in it. When FM_SFD is specified, the FAT volume occupies from the first sector of the drive is created.

                          +

                          When FM_SFD is not specified (the volume is bound to a physical drive), a primary partition occupies whole drive space is created and then the FAT volume is created in it. When FM_SFD is specified, the FAT volume occupies from the first sector of the drive is created.

                          If the logical drive to be formatted is bound to the specific partition (1-4) by support of multiple partition, _MULTI_PARTITION, the FAT volume is created into the partition and FM_SFD flag is ignored. The physical drive needs to be partitioned with f_fdisk function or any other partitioning tools prior to create the FAT volume with this function.

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html b/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html index 0e45fbee6..89e650d33 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/rc.html @@ -19,7 +19,7 @@
                          The function succeeded.
                          FR_DISK_ERR
                          -
                          An unrecoverable hard error occured in the lower layer, disk_read, disk_write or disk_ioctl function.
                          Note that if once this error occured at any operation to an open file, the file object is aborted and all operations to the file except for close will be rejected.
                          +
                          The lower layer, disk_read, disk_write or disk_ioctl function, reported that an unrecoverable hard error occured.
                          Note that if once this error occured at any operation to an open file, the file object is aborted and all operations to the file except for close will be rejected.
                          FR_INT_ERR
                          Assertion failed. An insanity is detected in the internal process. One of the following possibilities is suspected. @@ -32,7 +32,14 @@ Note that if once this error occured at any operation to an open file, the file
                          FR_NOT_READY
                          -
                          The storage device cannot work due to a failure of disk_initialize function due to no medium or any other reason.
                          +
                          The lower layer, disk_initialize function, reported that the storage device could not be got ready to work. One of the following possibilities is suspected. +
                            +
                          • No medium in the drive.
                          • +
                          • Wrong lower layer implementation for the storage device.
                          • +
                          • Wrong hardware configuration.
                          • +
                          • The storage device is broken.
                          • +
                          +
                          FR_NO_FILE
                          Could not find the file.
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/readdir.html b/firmware/chibios-portapack/ext/fatfs/doc/en/readdir.html index 235beee7e..6d79bd8e7 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/readdir.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/readdir.html @@ -55,7 +55,7 @@ FRESULT f_readdir (
                        • Setting of _MAX_LFN is insufficient for the long file name. (Not the case at _MAX_LFN == 255)
                        • The long file name contains any character not allowed in ANSI/OEM code. (Not the case at _LFN_UNICODE == 1)
                        • -

                          There is a problem on reading a directory of exFAT volume. The exFAT does not support short file name. This means no name can be returned on the condition above. If it is the case, a "?" is returned as file name to indicate that the object is not accessible. To avoid this problem, configure FatFs _LFN_UNICODE = 1 and _MAX_LFN = 255 to support the full feature of LFN specification.

                          +

                          There is a problem on reading a directory of exFAT volume. The exFAT does not support short file name. This means no name can be returned on the condition above. If it is the case, "?" is returned into the fname[] to indicate that the object is not accessible. To avoid this problem, configure FatFs _LFN_UNICODE = 1 and _MAX_LFN = 255 to support the full feature of LFN specification.

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/sdir.html b/firmware/chibios-portapack/ext/fatfs/doc/en/sdir.html index a01a71660..7fff827ff 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/en/sdir.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/sdir.html @@ -13,7 +13,7 @@

                          DIR

                          -

                          The DIR structure is used for the work area to read a directory by f_oepndir, f_readdir, f_findfirst and f_findnext function. Application program must not modify any member in this structure, or any data on the FAT volume can be collapsed.

                          +

                          The DIR structure is used for the work area to read a directory by f_oepndir, f_readdir, f_findfirst and f_findnext function. Application program must not modify any member in this structure, or any file on the volume can be collapsed.

                           typedef struct {
                               _FDID   obj;        /* Owner file sytem object and object identifier */
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html b/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
                          index 6dae1fe33..856f739d8 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/en/sfileinfo.html
                          @@ -13,7 +13,7 @@
                           
                           

                          FILINFO

                          -

                          The FILINFO structure holds information about the object returned by f_readdir, f_findfirst, f_findnext and f_stat function.

                          +

                          The FILINFO structure holds information about the object returned by f_readdir, f_findfirst, f_findnext and f_stat function. Be careful in the size of structure when LFN is enabled.

                           typedef struct {
                               FSIZE_t fsize;               /* File size */
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html
                          index af9340682..d176bd707 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/appnote.html
                          @@ -64,7 +64,7 @@ FatFsモジュールはANSI C(C89)準拠で記述されているので、普通
                           

                          限界値

                            -
                          • ファイルシステム: FAT12, FAT16, FAT32(r0.0) および exFAT(r1.0)。
                          • +
                          • ファイルシステム: FAT, FAT32(r0.0) および exFAT(r1.0)。
                          • 同時オープン ファイル数: 無制限。(利用可能メモリによる)
                          • 同時マウント ボリューム数: 最大 10。
                          • ファイル サイズ: 最大 4GiB - 1 (FATボリューム) および、事実上無制限(exFATボリューム)。
                          • @@ -144,7 +144,7 @@ And any other options are left not changed from default setting.

                            長いファイル名

                            FatFsモジュールは、長いファイル名(LFN)をサポートします。ファイルに付けられた2つの異なる名前(短いファル名と長いファイル名)は、f_readdir関数を除くファイル操作関数において透過です。デフォルト構成では、LFN機能はOFFになっています。LFN機能を有効にするには、_USE_LFNを1,2または3に設定し、option/unicode.cをプロジェクトに追加します。LFN機能は、加えてある程度のワーク エリア(LFN操作バッファ)を必要とします。バッファ長は使用できるメモリに応じて_MAX_LFNで構成されることができます。LFNの長さは最大255文字に達するので、LFN完全対応のためには_MAX_LFNは255に設定されるべきです。与えられたファイル名に対してバッファ長が不足した場合、ファイル関数はFR_INVALID_NAMEで失敗します。

                            -

                            ファイル関数に再入を行う条件の下でLFN機能を使用する場合は、_USE_LFNは2または3に設定されなければなりません。この場合、ファイル関数はワーク エリアを動的に確保(スタックまたはヒープ)します。ワーク エリアのサイズは、(_MAX_LFN + 1) * 2バイト(exFAT利用時はさらに+608バイト)になるので、スタック等のサイズはそれを考慮した十分な余裕がなければなりません。

                            +

                            ファイル関数に再入を行う条件の下でLFN機能を使用する場合は、_USE_LFNは2または3に設定されなければなりません。この場合、ファイル関数はワーク エリアを動的に確保(スタックまたはヒープ)します。ワーク エリアのサイズは、(_MAX_LFN + 1) * 2バイト(exFAT利用時は加えて((_MAX_LFN + 44) / 15 * 32バイト)になるので、これらのメモリ消費量に注意を払う必要があります。

                          With LFN at CM3+gcc
                          _CODE_PAGECode size
                          @@ -165,10 +165,9 @@ And any other options are left not changed from default setting.

                          exFATファイルシステム

                          -

                          exFAT(Microsoft's Extended File Allocation Table)ファイルシステムは、既に組み込みシステムや情報家電で広く使われているFATファイルシステムを置き換える目的で開発されました。exFATは、64GiB以上のSDメモリ カードで標準ファイルシステムに採用されるなど、FATに並びリムーバブル メディアの標準ファイルシステムの一つとなりつつあります。

                          -

                          exFATボリュームでは、FATボリュームで制約となっていた4GiB以上のサイズのファイルを扱え、ファイルシステムのオーバーヘッド(特にファイル アロケーション ディレイ)も大幅に低減され、書き込みスループットがFATより向上しています。しかし、現リビジョンのFatFsでは、実装上の理由から不連続ファイルへのサイズ拡大を伴う書き込み時のとき、スループットがFATより低下します。f_expand関数による連続領域の割り当て機能は、この問題の回避に有効かもしれません。

                          -

                          exFATはマイクロソフト社が開発したものなので、マイクロソフト社はexFATについていくつかの特許を保有しています。FatFsのexFAT機能は、それの US. Pat. App. Pub. No. 2009/0164440 A1 に基づいた実装です。このため、商用製品でexFAT機能を利用する場合、製品の最終仕向地によってはライセンスが必要になります。最近のFATドライバの多くはexFAT機能を含んでいるため、それらの使用に当たってライセンスが必要になりますが、FatFsは構成オプションでexFAT機能を任意にON/OFFできるため、無効にしてライセンス問題を回避することもできます。

                          -

                          exFATを有効にすると、FatFsモジュールのC89互換は失われます(64ビット整数型が必要なため)。

                          +

                          exFAT(Microsoft's Extended File Allocation Table)ファイルシステムは、既に組み込みシステムや情報家電で広く使われているFATファイルシステムを置き換える目的で開発されました。exFATは、64GiB以上のSDメモリ カードで標準ファイルシステムに採用されるなど、FATに並びリムーバブル メディアの標準ファイルシステムの一つとなっています。exFATボリュームでは、FATボリュームで制約となっていた4GiB以上のサイズのファイルを扱え、ファイルシステムのオーバーヘッド(特にファイル アロケーション ディレイ)も大幅に低減され、書き込みスループットがFATより向上しています。

                          +

                          exFATはマイクロソフト社が開発したものなので、マイクロソフト社はexFATについていくつかの特許を保有しています。FatFsのexFAT機能は、それのUS. Pat. App. Pub. No. 2009/0164440 A1に基づいた実装です。このため、商用製品でexFAT機能を利用する場合、製品の最終仕向地によってはライセンスが必要になります。最近のFATドライバの多くはexFAT機能を含んでいるため、それらの使用に当たってライセンスが必要になりますが、FatFsは構成オプションでexFAT機能を任意にON/OFFできるため、無効にしてライセンス問題を回避することもできます。

                          +

                          exFATを有効にすると、FatFsモジュールのANSI C(C89)互換は失われます(64ビット整数型が必要なため)。

                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html index 27c4e66c7..8e91cf07e 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/expand.html @@ -30,7 +30,7 @@ FRESULT f_expand (
                          fp
                          対象となるファイル オブジェクト構造体へのポインタを指定します。
                          fsz
                          -
                          ファイルに割り当てるバイト単位のサイズ。データ型FSIZE_tは、DWORD(32-bit)またはQWORD(64-bit)のエリアスで、exFATサポートの有無により切り替わります。
                          +
                          ファイルに割り当てるバイト単位のサイズ。データ型FSIZE_tは、DWORD(32ビット)またはQWORD(64ビット)のエリアスで、exFATサポートの有無により切り替わります。
                          opt
                          実際に割り当てを行うかどうか指定するフラグ。
                          @@ -79,15 +79,15 @@ FRESULT f_expand ( res = f_open(fp = malloc(sizeof (FIL)), "file.dat", FA_WRITE|FA_CREATE_ALWAYS); if (res) { /* ファイルが開かれたかチェック */ free(fp); - ... + die("Failed to open the file."); } /* 100 MiB の連続領域を割り当てる */ res = f_expand(fp, 104857600, 1); if (res) { /* 割り当てられたかチェック */ - ... + f_close(fp); free(fp); - ... + die("Failed to allocate contiguous area."); } /* 連続ファイル作成成功 fp でアクセス可能 */ diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html index 82fc6c241..3e3b08400 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/fdisk.html @@ -62,15 +62,14 @@ FRESULT f_fdisk ( /* ユーザ定義のボリューム管理テーブル (_MULTI_PARTITION == 1 のとき必要) */ PARTITION VolToPart[] = { - {0, 1}, /* 論理ドライブ 0 ==> 物理ドライブ 0, 第1区画 */ - {0, 2}, /* 論理ドライブ 1 ==> 物理ドライブ 0, 第2区画 */ - {1, 0} /* 論理ドライブ 2 ==> 物理ドライブ 1, 自動検出 */ + {0, 1}, /* "0:" ==> 物理ドライブ 0, 第1区画 */ + {0, 2}, /* "1:" ==> 物理ドライブ 0, 第2区画 */ + {1, 0} /* "2:" ==> 物理ドライブ 1, 自動検出 */ };
                               /* 新しい物理ドライブ(0)の初期化 */
                           
                          -    FATFS fs;
                               DWORD plist[] = {50, 50, 0, 0};  /* 第1区画,第2区画それぞれに50%ずつ割り当て */
                               BYTE work[_MAX_SS];
                           
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/lseek.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/lseek.html
                          index 00e4a9588..45781871d 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/lseek.html
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/lseek.html
                          @@ -28,7 +28,7 @@ FRESULT f_lseek (
                           
                          fp
                          対象となるファイル オブジェクト構造体へのポインタを指定します。
                          ofs
                          -
                          移動先のオフセット(リード/ライト ポインタ)値。ファイル先頭からのオフセットをバイト単位で指定します。データ型FSIZE_tは、DWORD(32-bit)またはQWORD(64-bit)のエリアスで、exFATサポートの有無により切り替わります。
                          +
                          移動先のオフセット(リード/ライト ポインタ)値。ファイル先頭からのオフセットをバイト単位で指定します。データ型FSIZE_tは、DWORD(32ビット)またはQWORD(64ビット)のエリアスで、exFATサポートの有無により切り替わります。
                          @@ -48,7 +48,8 @@ FRESULT f_lseek (

                          解説

                          -

                          ファイルのリード/ライト ポインタ(次に読み出し・書き込みされるバイトのオフセット)を移動します。オフセットの原点はファイル先頭です。書き込みモードでファイル サイズより大きな値を指定すると、そこまでファイル サイズが拡張され、拡張された部分のデータは未定義となります。データを遅延無く高速に書き込みたいときは、予めこの関数で必要なサイズまでファイル サイズを拡張しておくと良いでしょう。ファイルに連続したデータ領域を割り当てる必要があるときは、f_expand関数を使用してください。f_lseek関数が正常終了したあとは、リード/ライト ポインタが正しく移動したかチェックするべきです。リード/ライト ポインタが指定より小さいときは、次の原因が考えられます。

                          +

                          各ファイル オブジェクトが持つリード/ライト ポインタは、次に読み出し・書き込みされるバイトのオフセットを保持し、読み書きされただけ進みます。この関数は、ファイルへの読み書きを行わずにリード/ライト ポインタのみ移動します。

                          +

                          書き込みモードでファイル サイズより大きな値を指定すると、そこまでファイル サイズが拡張されますが、拡張された部分のデータは未定義となります。データを遅延無く高速に書き込みたいときは、予めこの関数で必要なサイズまでファイル サイズを拡張しておくと良いでしょう。ファイルに連続したデータ領域を割り当てる必要があるときは、f_expand関数を使用してください。f_lseek関数が正常終了したあとは、リード/ライト ポインタが正しく移動したかチェックするべきです。リード/ライト ポインタが指定より小さいときは、次の原因が考えられます。

                          • 非書き込みモードまたは高速シーク モードのため、ファイル サイズでクリップされた。
                          • ファイル拡張中にディスクが満杯になった。
                          • diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html index 50005e8a4..59b487181 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/rc.html @@ -27,7 +27,14 @@
                          ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
                          FR_NOT_READY
                          -
                          下位レイヤ(disk_initialize関数)の失敗。つまり、物理ドライブが動作可能な状態にない。
                          +
                          下位レイヤ(disk_initialize関数)の失敗。次のような理由が考えられる。 +
                            +
                          • ドライブにメディアがセットされていない。
                          • +
                          • 下位レイヤの実装が不完全。
                          • +
                          • 間違ったハードウェア構成。
                          • +
                          • ストレージ デバイスの故障。
                          • +
                          +
                          FR_NO_FILE
                          指定されたファイルが見つからなかった。
                          FR_NO_PATH
                          @@ -51,9 +58,9 @@
                          FR_INVALID_OBJECT
                          指定されたファイル オブジェクトやディレクトリ オブジェクトが無効、またはヌル ポインタが渡された。無効になる理由は次のことが考えられます。
                            -
                          • オープンされていない、既に閉じられた、破損しているなど。
                          • +
                          • オープンされていない、既に閉じられている、破損しているなど。
                          • そのボリュームでマウント動作があり、ボリューム上の開かれたオブジェクトが全て無効化された。
                          • -
                          • 物理ドライブがメディアの取り外しで動作不可能になっている。
                          • +
                          • 物理ドライブがメディアの取り外し等で動作不可能になっている。
                          FR_WRITE_PROTECTED
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/ja/sfileinfo.html b/firmware/chibios-portapack/ext/fatfs/doc/ja/sfileinfo.html index f66941098..ea063202a 100644 --- a/firmware/chibios-portapack/ext/fatfs/doc/ja/sfileinfo.html +++ b/firmware/chibios-portapack/ext/fatfs/doc/ja/sfileinfo.html @@ -13,7 +13,7 @@

                          FILINFO

                          -

                          FILINFO構造体は、f_stat/f_readdir/f_findfirst/f_findnext関数で返されるオブジェクトに関する情報を保持します。

                          +

                          FILINFO構造体は、f_stat/f_readdir/f_findfirst/f_findnext関数で返されるオブジェクトに関する情報を保持します。LFN使用時はサイズが大きく増加するので注意が必要です。

                           typedef struct {
                               FSIZE_t fsize;               /* ファイル サイズ */
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/res/app4.c b/firmware/chibios-portapack/ext/fatfs/doc/res/app4.c
                          index 03d124dee..56c07fec4 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/res/app4.c
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/res/app4.c
                          @@ -1,5 +1,5 @@
                           /*----------------------------------------------------------------------/
                          -/ Low level disk I/O module function checker
                          +/ Low level disk I/O module function checker                            /
                           /-----------------------------------------------------------------------/
                           / WARNING: The data on the target drive will be lost!
                           */
                          @@ -41,8 +41,8 @@ int test_diskio (
                           )
                           {
                               UINT n, cc, ns;
                          -    DWORD sz_drv, lba, lba2, pns = 1;
                          -    WORD sz_sect, sz_eblk;
                          +    DWORD sz_drv, lba, lba2, sz_eblk, pns = 1;
                          +    WORD sz_sect;
                               BYTE *pbuff = (BYTE*)buff;
                               DSTATUS ds;
                               DRESULT dr;
                          @@ -113,7 +113,7 @@ int test_diskio (
                                       printf(" - failed.\n");
                                   }
                                   if (dr == RES_OK || sz_eblk >= 2) {
                          -            printf(" Size of the erase block is %u sectors.\n", sz_eblk);
                          +            printf(" Size of the erase block is %lu sectors.\n", sz_eblk);
                                   } else {
                                       printf(" Size of the erase block is unknown.\n");
                                   }
                          @@ -196,7 +196,7 @@ int test_diskio (
                                   pns++;
                           
                                   /* Single sector write test (misaligned memory address) */
                          -        printf("**** Single sector write test 2 ****\n");
                          +        printf("**** Single sector write test (misaligned address) ****\n");
                                   lba = 5;
                                   for (n = 0, pn(pns); n < sz_sect; n++) pbuff[n+3] = (BYTE)pn(0);
                                   printf(" disk_write(%u, 0x%X, %lu, 1)", pdrv, (UINT)(pbuff+3), lba);
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/res/layers3.png b/firmware/chibios-portapack/ext/fatfs/doc/res/layers3.png
                          deleted file mode 100644
                          index ac439b0b1e32b14ed3ce4a32a54340a9431e863a..0000000000000000000000000000000000000000
                          GIT binary patch
                          literal 0
                          HcmV?d00001
                          
                          literal 2379
                          zcmV-R3AFZ!P)009340{{R3+XRg;0000mP)t-s00000
                          zO-)TrO#p*}XlQ7FfPetO!J3+yqobn$|NqFy$lBW4=;-MG|BUnV^Z)<<^C83T00009
                          za7bBm00000000000qSKIqyPX2!AV3xRCt{2+)azyMi>C#Nxg2q*lbRP-u4)B$wHy9
                          zx4q|(z4Vkq5_;PIP{>{igDk8q3k!QQIf+e(_Gog5b1603g8c^;dNkXEOi785jHdIB
                          zB-@hpF(YZl=|(E4_2JCpcV;Bbj5I-)Yg@*su^YRw8@sXBXOB_!rL;{dFVn_u?8Yv#
                          zv9Uf+gECtf$*EOSmp3zSiV~g2C*omRMV>pxa4FAa*)FxUl)9!FF0F1s
                          zU6W-)4&#(_%+hD36`o_#%A15gfa4<8*frYam&R`FDD`;PMWKz*R`eZ&HdWdP#lN+x
                          zOS94H_ma3Id%Q|R=ql{-R{B?wd^?Ly;4~rP^uLZ0XyZ678ZCrxNYl
                          z9EW97nq8dWRGM8F_9F1QZJzX|l5CE!=Yd}%n=iTPwXrhJ>6
                          zza-~qK+s)Jy*=F`hx-OW58Z9)c04s^Z~yg(pdbF--&*}Ea_!zr@8+kw1ofu9G`rU4
                          z1_>LriF3!jMbLTgJjJeWNwK{)`FM|P5H#JJs-jQ$f-Ad-?cVpLKi`~brk1f`2fxnH=je{s96r@K_+bHS9
                          zsvH}A9i+2M?c-(eSkM+~rv|Z}+z67n9Y)Spf?#$a4Ts*#=w9EAfOa
                          z&<_pl)&cy0Zx=QzJccG2nmR%q{_`*b5*6^NUAoM~>K?0j>2a-Z5SBKx>?bnv1j
                          zc#h@biSf0}B)OLqn{!-Ij?FioD$C{>N0w%DjGs%i3!fWEwey$8ZtUx0Xa6JxcFI*n
                          znVlK93Og%s6?PV`#LhS(-DbCw^uX2F>9`_0^_X-!JM1sOUQ@eebG$ZtyiPmF_4S-%
                          z>$Nj8U6q{{xQaGY)>)>^PU{oZ`rIHV(}i1-B1@5-*=&<)XI)p7%&W<`kE(fZ52fO2
                          z>?n8RWv=LbMU;jsvd4+aq0*iQz8t$MJAOVbp1mjELQc-?z~SCtfAoJ}BQsO8dEZY>
                          z!7JDu(#N>N{ch~IlD&M?F=o22*}iFWzn7bBUum}6h4fhJbc@F2bzy}apPfx;+`ied
                          z9m9PK-|@QiFqsVa-w7UP*gnQxPxm^r4$DuvMNHyYYz2-_Foro0Y%&Oqm43(VLJrVB
                          z{O===(`~ooX@1AmAQng$N^>+EuoXCN4*D?n1CDmOVd)FoiEB(`2eUaQ{YfyN2Bz>#
                          zEYoHya2(r^=N^7T930patAri9p~mcff6^a>Hm0Sm5w^l?0yg=>95~wRz#e!yAwz-k
                          zUW$Gt&&fn{aafkD3UmouS>$<;*M0V#{>axxBK3SV3kaLi6VxvD1H!u2fe9vrt;Fiu
                          z03v3#Ep~oq+w5fWbg1T#{}&ofAMzho*m)3~V|_Tsg8FFEodVaj47=je*p1!TjosMm
                          zvJ>}j-|}cX4CA+u65KiAraghXX>ePAhu=HFQ3o1O^ay-9n6~h2Av>kbd*!ULz|NjuhU_6AMT*cc61WW4|T8&
                          zt(yUSLJQs3x$RijU}5*|K5GfHmbXh=O5m8#atq?7+0D8F5Vr-bItxDG5Zfu*A4{~?
                          zu2}1Y*^Xs0TXT)j_D$MY3CmmWVmJby;XGxrK5$w)^$HI{dqNAJ?(sWbH>zv2M-Y{_
                          zafaate2UmBBP(;;gfch6@}_MtXeD{9DMo1U8vI)XQF$8^3`gLT6@$iQuMX-gmA7e6
                          z22jtTj?q=HX{UgK(1LT>D%*tCVsOM|^_;J~WAyTV$Y%R*{F*?C;-C`%W#9E7Sn^IA
                          z_4!oqcarw{a8M%T3{t@rVi?YvD`
                          zxUOrdF-LaACD-1}c|a!LPS0-@Hp(15S72v9CX#OFjh!p8v!1=Hu+wQpd7k@ty3$f?
                          z%Y0r@V9Ta+oG+XYR28EvTf+_i#=HwO!-u_{EDg3Ph^Pr0ZkK6levG@@@^tnUL2uEU4K=p6k1T3$k!`X;yk8Ir{!?NTZ|@Pa
                          zp@Y!-S*;B@9>h%uA`0xqIkq?G8O%PUrM!KSw56WkzoQ4lZByGpKay7ul-dQ01Y6p@
                          zM6DfbG_`r``q~b$C_a0;zP4fsyQVgBDZ8e=K{>mgK2bTlp1xp7yOut1NxPQ5e_6YZ
                          zF^|%A4P!m!?doG(73|7mdsXbJW15xhietGI?Mh?VmF>&&WA}B~WtT747H_ZBXN$K}
                          x8~gujue^3s^z|BT!KJYqyRjR)u^YRx{U2)j?V=PCmQ?@%002ovPDHLkV1kIi%c}qY
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/res/mkfatimg.zip b/firmware/chibios-portapack/ext/fatfs/doc/res/mkfatimg.zip
                          index d0728b4ead1a7111d8dd79f8a3c2bf5313fb5e25..67d423b166931db64a39479824671db19b7486ce 100644
                          GIT binary patch
                          delta 2728
                          zcmZ{m`9IT-AHcUcw<2dMXNr+4H#0?UQ_K}Unw;fa)UX`ykQzmfX1R|f1KEdbAMSm4
                          z_Tk-!Zy)|Qdo*bK8-R;j3Wa-NO!zSgr3~2Dr$!ME>
                          zaUs6=)t~Kd%-6ZPw`KVKCjvC9b9bz#nhzYQRBgat>Qw_c2WRXZAx$$o=7=Sj8tKvz
                          zt495})T=jQ=CMUsdx`X0lqWMrZCcOmnggsJe_u)b^SyT7Rk3Lh{O+Di;DCBy2h^&*
                          zNMo#VSkl|BF1sE5OBOx~^<6~Lx
                          zlzwlB4+_ECR?c}(rW+?MPiAmtug&ot$wUKHH;#00d1tHC6}vOpZ8tPUh431XC3)AV
                          z7FUr0L5wxo;RWSn!`{nBI)q$Rsc)m2(bP6MsJI|tuXohhXZW89`w^(Dj5#u*=6mat
                          zLerPrHEjKzoIyEOGg*opo3i2dsdd&Z9G;jmW6*wgI`rcF(9gzA%@DJf*d7nUOJ2zq
                          z0SBeq2DhT+OGe-Fw#%Z(!VXn@vvR|aWvNad9DDC3vpaPZckDk|ycCboBY$nh==QZO
                          ziBrpf`pNSah|PZ}jK(0k9CdASw24OFuKc=KXIV2%hDyT=DR5V7kvFc$2BX>mHmY17
                          zZz~b8EOCHAGkU%oo0YryZBd|$E{OvMnzhXh&4%R>;ip&VNYna!+u9GRFJw#5NNj%Q%Egk+%!w-a}
                          z`IVfA-TbDPa85%>BGTyaTqM7N=>>P@A+POKn9nh&viS_-s?NjIsEJLH#R+u-K%Cd4
                          zHxKGc%={8FAA8bte2h#fUkSL6)WURFE5vZq)+-IA)|(_o?<}ILhOu6P*zL1ljJkV-
                          zdcm?MH6X#dHny5eX~y}I?vz=SKjSvd`1|P;3L^elhjfn&I_?#{dsl&|0!}CR^jh8G
                          z#YU!{#cs5@CT)qOFICJ_Ii}gYXKd#irK0If4XsPb^kB{hBU@`Aua|O8mgh%fY1%{~nxmZ0b(yV@24IcPK+wukNJt<}H
                          zERlCUzXqlXX&66B_JxuVp0ycIn8RQI-PxPt`o5lEf%2qeaG3O;2IW)11!zQs_dt8Sxy^RST9aT>Yu($#_aE9EY-RIFYX?%H>WdJ%%jV
                          zq|v*xCO7roEKKnMtf`<@3Oo2$Nk9x%gRrC%&=iVscvWLup!ujLTGx=qjkZ1ogk2>A9JfIBKAQ|GxAdW7~#dWJ4YXB_}mdaWBjCM
                          z;$pp#)6VNypxKIQ^KhYWr(CMI-Qmu0a*u~O;lcrLx^%d8jn|lcv1w5Cl>hZJ1?_Ti
                          z5S6S#JsB_NF)yO)6a`Zpk@O5n+BkL0EAzc&WF9ruO=#NmYVwf%;9|gb7jRQTB{jm(
                          zMwc~ye_`{ew(n&iRIOq~`E_iCtHPmXgrII*2EW!CFhi|YT3BF@uH8&_;Wj~-PUh-8
                          znx1IY*2;3Yjd*DPNtu&%BjgLsg+s}h-`}_%Z+mmx7t}qGBHpGdai#JJa2?tTxNI<
                          zjRyoVN3ivh9}zu^>f_}TmX9~_>XjWh-c_LS1r!b6ION4z|8rMhD8=toKgIUd6mL-?
                          z-R=WBCTlLnk(4pPnpW_(*v{n3}AjLCMj392E4-BQO$Po89_&jHT
                          zL2$B0Ug}~|I7EzyBW~b+ZE)~GskkAKaH}F$fx)zy$4gtW^qEHaljwMxx+A1qkLAdj
                          z1LOQNFT}IX<*X0n9M=z<3i%b3{+SSv@u|v6{bOGDj|S+oTAX<;rioT{kYxxMviX~C
                          z3wau&wl7{?N1`Y#)fqhBwxwv~qVxUZwNC}3)Nu9qIcoxaOjSs&p8Im(kLft&AjYo*
                          zy8m02jr?ee-2_B=x^N`oS@uwb^sk#fj!pUEWiN2~*;IDcd*y!Z%3b%WiFdIKg8J{d
                          zpJmtTj~~1=pM7ruUS=)ee6|WePNp)@7$K+d0-{2B*=ggUlW;al@>biU@h`+uWkz3p^wQt
                          zX$UqL
                          
                          delta 2688
                          zcmV-`3V-$6^eM*lDX@C9f0ClpL@?lQJYfj{0QDLG00sa60BvDuZZ2b;S#5LTMiTyv
                          ztNb6@T&*Kvz<^)wV(d*}0|^xyyMWE!mgAxX8X3hPQIasR@A&WO?wQdG2Cox#mqIhs
                          zuk*~)J=()U=^uU$cXti}+KmCYGwV^nI1pCk2hgjOD^C*Y>j
                          z9b!z?)7)|8Kc`=EhXuHCJ$JU4fw!2AL;$`6s3MF+5Q2m8@@gQ@l#ZOzaa7Blo}AP^
                          zs^q8!Dm>-N<=y45f4i9BRG7=<&?C~*jpZrxV}I_75R9ssc7P>&z8|%`=*o*w_TOu=
                          z0ZxML24ajm_5#9-0@9iVR%Z?iY&C
                          z{CeAKnst)y3Cjk{lX#EB42-rFwL_S=wkOsqCf~Ro_*IgcX$4`yOUFXP7tWL
                          zI7jQksql(m^LOwJ7f_)YnZgmTVl$(q(w-v$Toy(FfBrC3046Q8Gczg}o(bmx+H#D2
                          z9WN=tfb)liJTD-RP_&Kg)5d@}y;^q>_S?28cl~ybCX!=D8$)$vOu&T#gG>f;?&_OGa139v;NxgG-4
                          zf3s8kdAko|C79g_M4zyp>Pl>tvcIRXZJ=qne~RoQHxnUD#3r+JOb!l|HmOYS^V{4x
                          z=vgeP{rwc8TSZ6%Uio9FbB_R)Imn{-=T^7X>s$?ctwys575;mB*Xj;i|Lyb#o$k+a
                          z5M$X6;28U%zX--6>)|$Nr`B#r=_(1p8Pa;jD7hXJ5#qBkyh6VbZH?=%jcB-MUn8cH
                          zikU^AGh7A;kyMtX0)zO`BrW@+rPi~8<%E1ux{`^jsUM18EYD8d(o@cGOp~#JG{jI1
                          z9#H(=V`cGie4AT#@;m9|YN1cVDrTKMf1=+mR&GujQL3cg*c{h~YDOhX^A`zobSx>E
                          z6#r$IGA=J^GSq{Ch!)r~1kd=e%9b)L)du~tg2!=@D`$azKi@y7!p1df9KP0*BDb6*
                          zg={&(U4MP{r@HD{E=5v=C|G!7i5=y|*!RLn7UzP$h#XnZx$+?ZJJ>L|)|6U_f4LPP
                          zL2|ztmm%^GK3_nMcB{Z1TJ8fO;D^!=Dvg|JMYVbb(rhV8Xg1?jRVLbU^@fp=Qi*@3
                          zOBIjnC^+@2v{&bFv{ncgAzm`hVD^L!nmc=h`%?6Pt-d^6o^OlKaE=+6FCvB$K0PO`
                          z;%B%&SN*npen7NIl;r7tQi{%Ce;~sU*k&z4M5l$Y;f^?<*3b8*FCaCRv$7c<&Y+(>
                          zt*uLYcgBsR@=)HNXnai~9l=@L5+d=>{lE&eKeDS$^@qQ@mureLu_v1Ja7uRcf*CNd
                          zkG2-m=nPvsQ>&5(T*1Do4-7$L{*sgrg^`1U2VSo*i5s0v(0HodrMbv=e~pwR6rjfF
                          z4qtIL#_5R(KfPUh2Iys7LtgQ_>eN+&81dK#_zN#G_PIqy4CghI>Mp?v4I0FQhK9|p
                          zjhLzjiT*M)>_0G*nf*ZEq_ZCPYdV89l|kh;m5QVh;8xi8)OBG!k~dw2QhB6<*<;GY
                          z06=@+^<}leohFS6vPlm^f7Bam0p3_5Ak6-Cb4a9Qs2ziY%tbKH-yW|wAtlz_DtA;f
                          z<%W@DLLVyQk_7QiS_BWj>&aO7O7-y7nHNFW4u8!v(>6`pJZ2|%xE!v4p%G8@mQshRRe}cnI$?r;?f1Jw;
                          zT-h6v0=oFn@WDY`)W|WF(tEiS7mX~W)dHOZOf#t|z)=m4M#{p0W@cGHF-vr^JT-+U
                          z>kz7^bv-wy+fCMy)B^t!nCm{lq1SFIguxF6j?80Y7=I!caqd>JTK&#TLAg
                          zFVS97?!!qw!?z94K{T
                          z%9=b6)!LbYjT1u(@rQUJG|K0FsG9h2QmqouBwwRQ(wU|8f1Pg9SKA;?A@Otxr_YmD
                          zcX3FSbu+rIZ7^{BVFN?}+YGGYo{3hh6NT+MjtEGUUq&rPC8id<#d$*5!v1@OB$uXr
                          zwPnbSTRB_3f}=B{86@?Jk;}5Ca%XNrqH7b8tJiDqDnojX&pW~{CIm;%lKwTCy-3sS
                          zPitg>wLU{Hf2?O4bvT=;!`Vn3PL?`i;xIT1L<((Rd;3Z;_U@S5!Ow_ff);&x^qJ}r20$aNAQbQeY48TPLhjnOqF)c*^T
                          zT+7s}4&|bH&m2P|xvvvrul@pqaI}YTv;l{3v;v24v;&85v;>E6v;~K7v<8Q8v<}~8UO$W000000000103ZOifpD|{0BvDu
                          zZZ2b&5qAnI0`vsw`0F%lz0j{0!S{G(0B?u0N*W!FdWi
                          uDi?JM0B>+~X>V>Xb#7^6Z)9aIV^B*41^@s602BZe0C5BW0Kat#0000c?G#!7
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/res/mkfs.xls b/firmware/chibios-portapack/ext/fatfs/doc/res/mkfs.xls
                          index f01ddcc8ce572a781312620d03d47549f3487d7c..3c615cb7b78badecaa2947865a299de638e7b037 100644
                          GIT binary patch
                          delta 123
                          zcmWl|Np3*_007W@Ln&&inVM%U{={C1n*=HFXV5EkD{ix_bHshDOFFre@|Ae*IZmS^tOIP2zmJ
                          NK2FESWw!|r!3*&hD>DE9
                          
                          delta 123
                          zcmWl|w~0al002!e~9OYi~VxhdKJ
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/doc/updates.txt b/firmware/chibios-portapack/ext/fatfs/doc/updates.txt
                          index ebb6026ab..d4965f90b 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/doc/updates.txt
                          +++ b/firmware/chibios-portapack/ext/fatfs/doc/updates.txt
                          @@ -1,5 +1,11 @@
                          +R0.12c (March 04, 2017)
                          +  Improved write throughput at the fragmented file on the exFAT volume.
                          +  Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
                          +  Fixed successive f_getfree() can return wrong count on the FAT12/16 volume. (appeared at R0.12)
                          +  Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
                          +
                           R0.12b (September 4, 2016)
                          -  Improved f_rename() to be able to rename objects with the same name but case.
                          +  Make f_rename() be able to rename objects with the same name but case.
                             Fixed an error in the case conversion teble of code page 866. (ff.c)
                             Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
                             Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/00history.txt b/firmware/chibios-portapack/ext/fatfs/src/00history.txt
                          index 49aac282b..fa7363818 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/00history.txt
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/00history.txt
                          @@ -212,7 +212,7 @@ R0.10a (January 15, 2014)
                           R0.10b (May 19, 2014)
                           
                             Fixed a hard error in the disk I/O layer can collapse the directory entry.
                          -  Fixed LFN entry is not deleted on delete/rename an object with lossy converted SFN. (appeared at R0.07)
                          +  Fixed LFN entry is not deleted when delete/rename an object with lossy converted SFN. (appeared at R0.07)
                           
                           
                           
                          @@ -268,7 +268,7 @@ R0.12a (July 10, 2016)
                           
                           R0.12b (September 04, 2016)
                           
                          -  Improved f_rename() to be able to rename objects with the same name but case.
                          +  Made f_rename() be able to rename objects with the same name but case.
                             Fixed an error in the case conversion teble of code page 866. (ff.c)
                             Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
                             Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
                          @@ -277,3 +277,12 @@ R0.12b (September 04, 2016)
                             Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
                             Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12)
                           
                          +
                          +
                          +R0.12c (March 04, 2017)
                          +
                          +  Improved write throughput at the fragmented file on the exFAT volume.
                          +  Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
                          +  Fixed successive f_getfree() can return wrong count on the FAT12/16 volume. (appeared at R0.12)
                          +  Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
                          +
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/00readme.txt b/firmware/chibios-portapack/ext/fatfs/src/00readme.txt
                          index 42426a401..2b7cc7603 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/00readme.txt
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/00readme.txt
                          @@ -1,21 +1,21 @@
                          -FatFs Module Source Files R0.12a
                          +FatFs Module Source Files R0.12c
                           
                           
                           FILES
                           
                          -  00readme.txt This file.
                          -  history.txt  Revision history.
                          -  ffconf.h     Configuration file for FatFs module.
                          -  ff.h         Common include file for FatFs and application module.
                          -  ff.c         FatFs module.
                          -  diskio.h     Common include file for FatFs and disk I/O module.
                          -  diskio.c     An example of glue function to attach existing disk I/O module to FatFs.
                          -  integer.h    Integer type definitions for FatFs.
                          -  option       Optional external functions.
                          +  00readme.txt   This file.
                          +  00history.txt  Revision history.
                          +  ff.c           FatFs module.
                          +  ffconf.h       Configuration file of FatFs module.
                          +  ff.h           Common include file for FatFs and application module.
                          +  diskio.h       Common include file for FatFs and disk I/O module.
                          +  diskio.c       An example of glue function to attach existing disk I/O module to FatFs.
                          +  integer.h      Integer type definitions for FatFs.
                          +  option         Optional external modules.
                           
                           
                             Low level disk I/O module is not included in this archive because the FatFs
                          -  module is only a generic file system layer and not depend on any specific
                          -  storage device. You have to provide a low level disk I/O module that written
                          -  to control the target storage device.
                          +  module is only a generic file system layer and it does not depend on any specific
                          +  storage device. You have to provide a low level disk I/O module written to
                          +  control the storage device that attached to the target system.
                           
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          index ffc524097..faac347b2 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          @@ -1,13 +1,13 @@
                           /*----------------------------------------------------------------------------/
                          -/  FatFs - Generic FAT file system module  R0.12b                             /
                          +/  FatFs - Generic FAT file system module  R0.12c                             /
                           /-----------------------------------------------------------------------------/
                           /
                          -/ Copyright (C) 2016, ChaN, all right reserved.
                          +/ Copyright (C) 2017, ChaN, all right reserved.
                           /
                           / FatFs module is an open source software. Redistribution and use of FatFs in
                           / source and binary forms, with or without modification, are permitted provided
                           / that the following condition is met:
                          -
                          +/
                           / 1. Redistributions of source code must retain the above copyright notice,
                           /    this condition and the following disclaimer.
                           /
                          @@ -28,65 +28,11 @@
                           
                           ---------------------------------------------------------------------------*/
                           
                          -#if _FATFS != 68020	/* Revision ID */
                          +#if _FATFS != 68300	/* Revision ID */
                           #error Wrong include file (ff.h).
                           #endif
                           
                           
                          -#define	ABORT(fs, res)		{ fp->err = (BYTE)(res); LEAVE_FF(fs, res); }
                          -
                          -
                          -/* Reentrancy related */
                          -#if _FS_REENTRANT
                          -#if _USE_LFN == 1
                          -#error Static LFN work area cannot be used at thread-safe configuration
                          -#endif
                          -#define	ENTER_FF(fs)		{ if (!lock_fs(fs)) return FR_TIMEOUT; }
                          -#define	LEAVE_FF(fs, res)	{ unlock_fs(fs, res); return res; }
                          -#else
                          -#define	ENTER_FF(fs)
                          -#define LEAVE_FF(fs, res)	return res
                          -#endif
                          -
                          -
                          -
                          -/* Definitions of sector size */
                          -#if (_MAX_SS < _MIN_SS) || (_MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096) || (_MIN_SS != 512 && _MIN_SS != 1024 && _MIN_SS != 2048 && _MIN_SS != 4096)
                          -#error Wrong sector size configuration
                          -#endif
                          -#if _MAX_SS == _MIN_SS
                          -#define	SS(fs)	((UINT)_MAX_SS)	/* Fixed sector size */
                          -#else
                          -#define	SS(fs)	((fs)->ssize)	/* Variable sector size */
                          -#endif
                          -
                          -
                          -/* Timestamp */
                          -#if _FS_NORTC == 1
                          -#if _NORTC_YEAR < 1980 || _NORTC_YEAR > 2107 || _NORTC_MON < 1 || _NORTC_MON > 12 || _NORTC_MDAY < 1 || _NORTC_MDAY > 31
                          -#error Invalid _FS_NORTC settings
                          -#endif
                          -#define GET_FATTIME()	((DWORD)(_NORTC_YEAR - 1980) << 25 | (DWORD)_NORTC_MON << 21 | (DWORD)_NORTC_MDAY << 16)
                          -#else
                          -#define GET_FATTIME()	get_fattime()
                          -#endif
                          -
                          -
                          -/* File lock controls */
                          -#if _FS_LOCK != 0
                          -#if _FS_READONLY
                          -#error _FS_LOCK must be 0 at read-only configuration
                          -#endif
                          -typedef struct {
                          -	FATFS *fs;		/* Object ID 1, volume (NULL:blank entry) */
                          -	DWORD clu;		/* Object ID 2, directory (0:root) */
                          -	DWORD ofs;		/* Object ID 3, directory offset */
                          -	WORD ctr;		/* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */
                          -} FILESEM;
                          -#endif
                          -
                          -
                          -
                           /* DBCS code ranges and SBCS upper conversion tables */
                           
                           #if _CODE_PAGE == 932	/* Japanese Shift-JIS */
                          @@ -351,20 +297,20 @@ typedef struct {
                           #endif /* _DF1S */
                           
                           
                          -/* File attribute bits (internal use) */
                          +/* Additional file attribute bits for internal use */
                           #define	AM_VOL		0x08	/* Volume label */
                           #define AM_LFN		0x0F	/* LFN entry */
                           #define AM_MASK		0x3F	/* Mask of defined bits */
                           
                           
                          -/* File access control and file status flags (internal use) */
                          +/* Additional file access control and file status flags for internal use */
                           #define FA_SEEKEND	0x20	/* Seek to end of the file on file open */
                           #define FA_MODIFIED	0x40	/* File has been modified */
                           #define FA_DIRTY	0x80	/* FIL.buf[] needs to be written-back */
                           
                           
                          -/* Name status flags */
                          -#define NSFLAG		11		/* Index of name status byte in fn[] */
                          +/* Name status flags in fn[] */
                          +#define NSFLAG		11		/* Index of the name status byte */
                           #define NS_LOSS		0x01	/* Out of 8.3 format */
                           #define NS_LFN		0x02	/* Force to create LFN entry */
                           #define NS_LAST		0x04	/* Last segment */
                          @@ -375,18 +321,17 @@ typedef struct {
                           #define NS_NONAME	0x80	/* Not followed */
                           
                           
                          -/* Limits and boundaries (differ from specs but correct for real DOS/Windows) */
                          -#define MAX_FAT12	0xFF5			/* Maximum number of FAT12 clusters */
                          -#define	MAX_FAT16	0xFFF5			/* Maximum number of FAT16 clusters */
                          -#define	MAX_FAT32	0xFFFFFF5		/* Maximum number of FAT32 clusters */
                          -#define	MAX_EXFAT	0x7FFFFFFD		/* Maximum number of exFAT clusters (limited by implementation) */
                          -#define MAX_DIR		0x200000		/* Maximum size of FAT directory */
                          -#define MAX_DIR_EX	0x10000000		/* Maximum size of exFAT directory */
                          +/* Limits and boundaries */
                          +#define MAX_DIR		0x200000		/* Max size of FAT directory */
                          +#define MAX_DIR_EX	0x10000000		/* Max size of exFAT directory */
                          +#define MAX_FAT12	0xFF5			/* Max FAT12 clusters (differs from specs, but correct for real DOS/Windows behavior) */
                          +#define	MAX_FAT16	0xFFF5			/* Max FAT16 clusters (differs from specs, but correct for real DOS/Windows behavior) */
                          +#define	MAX_FAT32	0x0FFFFFF5		/* Max FAT32 clusters (not specified, practical limit) */
                          +#define	MAX_EXFAT	0x7FFFFFFD		/* Max exFAT clusters (differs from specs, implementation limit) */
                           
                           
                          -/* FatFs refers the members in the FAT structures as byte array instead of
                          -/ structure members because the structure is not binary compatible between
                          -/ different platforms */
                          +/* FatFs refers the FAT structure as simple byte array instead of structure member
                          +/ because the C structure is not binary compatible between different platforms */
                           
                           #define BS_JmpBoot			0		/* x86 jump instruction (3-byte) */
                           #define BS_OEMName			3		/* OEM name (8-byte) */
                          @@ -432,19 +377,61 @@ typedef struct {
                           #define BPB_FatSzEx			84		/* exFAT: FAT size [sector] (DWORD) */
                           #define BPB_DataOfsEx		88		/* exFAT: Data offset from top of the volume [sector] (DWORD) */
                           #define BPB_NumClusEx		92		/* exFAT: Number of clusters (DWORD) */
                          -#define BPB_RootClusEx		96		/* exFAT: Root directory cluster (DWORD) */
                          +#define BPB_RootClusEx		96		/* exFAT: Root directory start cluster (DWORD) */
                           #define BPB_VolIDEx			100		/* exFAT: Volume serial number (DWORD) */
                           #define BPB_FSVerEx			104		/* exFAT: File system version (WORD) */
                           #define BPB_VolFlagEx		106		/* exFAT: Volume flags (BYTE) */
                           #define BPB_ActFatEx		107		/* exFAT: Active FAT flags (BYTE) */
                          -#define BPB_BytsPerSecEx	108		/* exFAT: Log2 of sector size in byte (BYTE) */
                          -#define BPB_SecPerClusEx	109		/* exFAT: Log2 of cluster size in sector (BYTE) */
                          +#define BPB_BytsPerSecEx	108		/* exFAT: Log2 of sector size in unit of byte (BYTE) */
                          +#define BPB_SecPerClusEx	109		/* exFAT: Log2 of cluster size in unit of sector (BYTE) */
                           #define BPB_NumFATsEx		110		/* exFAT: Number of FATs (BYTE) */
                           #define BPB_DrvNumEx		111		/* exFAT: Physical drive number for int13h (BYTE) */
                           #define BPB_PercInUseEx		112		/* exFAT: Percent in use (BYTE) */
                           #define	BPB_RsvdEx			113		/* exFAT: Reserved (7-byte) */
                           #define BS_BootCodeEx		120		/* exFAT: Boot code (390-byte) */
                           
                          +#define	DIR_Name			0		/* Short file name (11-byte) */
                          +#define	DIR_Attr			11		/* Attribute (BYTE) */
                          +#define	DIR_NTres			12		/* Lower case flag (BYTE) */
                          +#define DIR_CrtTime10		13		/* Created time sub-second (BYTE) */
                          +#define	DIR_CrtTime			14		/* Created time (DWORD) */
                          +#define DIR_LstAccDate		18		/* Last accessed date (WORD) */
                          +#define	DIR_FstClusHI		20		/* Higher 16-bit of first cluster (WORD) */
                          +#define	DIR_ModTime			22		/* Modified time (DWORD) */
                          +#define	DIR_FstClusLO		26		/* Lower 16-bit of first cluster (WORD) */
                          +#define	DIR_FileSize		28		/* File size (DWORD) */
                          +#define	LDIR_Ord			0		/* LFN: LFN order and LLE flag (BYTE) */
                          +#define	LDIR_Attr			11		/* LFN: LFN attribute (BYTE) */
                          +#define	LDIR_Type			12		/* LFN: Entry type (BYTE) */
                          +#define	LDIR_Chksum			13		/* LFN: Checksum of the SFN (BYTE) */
                          +#define	LDIR_FstClusLO		26		/* LFN: MBZ field (WORD) */
                          +#define	XDIR_Type			0		/* exFAT: Type of exFAT directory entry (BYTE) */
                          +#define	XDIR_NumLabel		1		/* exFAT: Number of volume label characters (BYTE) */
                          +#define	XDIR_Label			2		/* exFAT: Volume label (11-WORD) */
                          +#define	XDIR_CaseSum		4		/* exFAT: Sum of case conversion table (DWORD) */
                          +#define	XDIR_NumSec			1		/* exFAT: Number of secondary entries (BYTE) */
                          +#define	XDIR_SetSum			2		/* exFAT: Sum of the set of directory entries (WORD) */
                          +#define	XDIR_Attr			4		/* exFAT: File attribute (WORD) */
                          +#define	XDIR_CrtTime		8		/* exFAT: Created time (DWORD) */
                          +#define	XDIR_ModTime		12		/* exFAT: Modified time (DWORD) */
                          +#define	XDIR_AccTime		16		/* exFAT: Last accessed time (DWORD) */
                          +#define	XDIR_CrtTime10		20		/* exFAT: Created time subsecond (BYTE) */
                          +#define	XDIR_ModTime10		21		/* exFAT: Modified time subsecond (BYTE) */
                          +#define	XDIR_CrtTZ			22		/* exFAT: Created timezone (BYTE) */
                          +#define	XDIR_ModTZ			23		/* exFAT: Modified timezone (BYTE) */
                          +#define	XDIR_AccTZ			24		/* exFAT: Last accessed timezone (BYTE) */
                          +#define	XDIR_GenFlags		33		/* exFAT: General secondary flags (WORD) */
                          +#define	XDIR_NumName		35		/* exFAT: Number of file name characters (BYTE) */
                          +#define	XDIR_NameHash		36		/* exFAT: Hash of file name (WORD) */
                          +#define XDIR_ValidFileSize	40		/* exFAT: Valid file size (QWORD) */
                          +#define	XDIR_FstClus		52		/* exFAT: First cluster of the file data (DWORD) */
                          +#define	XDIR_FileSize		56		/* exFAT: File/Directory size (QWORD) */
                          +
                          +#define	SZDIRE				32		/* Size of a directory entry */
                          +#define	DDEM				0xE5	/* Deleted directory entry mark set to DIR_Name[0] */
                          +#define	RDDEM				0x05	/* Replacement of the character collides with DDEM */
                          +#define	LLEF				0x40	/* Last long entry flag in LDIR_Ord */
                          +
                           #define	FSI_LeadSig			0		/* FAT32 FSI: Leading signature (DWORD) */
                           #define	FSI_StrucSig		484		/* FAT32 FSI: Structure signature (DWORD) */
                           #define	FSI_Free_Count		488		/* FAT32 FSI: Number of free clusters (DWORD) */
                          @@ -463,47 +450,68 @@ typedef struct {
                           #define PTE_StLba			8		/* MBR PTE: Start in LBA */
                           #define PTE_SizLba			12		/* MBR PTE: Size in LBA */
                           
                          -#define	DIR_Name			0		/* Short file name (11-byte) */
                          -#define	DIR_Attr			11		/* Attribute (BYTE) */
                          -#define	DIR_NTres			12		/* Lower case flag (BYTE) */
                          -#define DIR_CrtTime10		13		/* Created time sub-second (BYTE) */
                          -#define	DIR_CrtTime			14		/* Created time (DWORD) */
                          -#define DIR_LstAccDate		18		/* Last accessed date (WORD) */
                          -#define	DIR_FstClusHI		20		/* Higher 16-bit of first cluster (WORD) */
                          -#define	DIR_ModTime			22		/* Modified time (DWORD) */
                          -#define	DIR_FstClusLO		26		/* Lower 16-bit of first cluster (WORD) */
                          -#define	DIR_FileSize		28		/* File size (DWORD) */
                          -#define	LDIR_Ord			0		/* LFN entry order and LLE flag (BYTE) */
                          -#define	LDIR_Attr			11		/* LFN attribute (BYTE) */
                          -#define	LDIR_Type			12		/* LFN type (BYTE) */
                          -#define	LDIR_Chksum			13		/* Checksum of the SFN entry (BYTE) */
                          -#define	LDIR_FstClusLO		26		/* Must be zero (WORD) */
                          -#define	XDIR_Type			0		/* Type of exFAT directory entry (BYTE) */
                          -#define	XDIR_NumLabel		1		/* Number of volume label characters (BYTE) */
                          -#define	XDIR_Label			2		/* Volume label (11-WORD) */
                          -#define	XDIR_CaseSum		4		/* Sum of case conversion table (DWORD) */
                          -#define	XDIR_NumSec			1		/* Number of secondary entries (BYTE) */
                          -#define	XDIR_SetSum			2		/* Sum of the set of directory entries (WORD) */
                          -#define	XDIR_Attr			4		/* File attribute (WORD) */
                          -#define	XDIR_CrtTime		8		/* Created time (DWORD) */
                          -#define	XDIR_ModTime		12		/* Modified time (DWORD) */
                          -#define	XDIR_AccTime		16		/* Last accessed time (DWORD) */
                          -#define	XDIR_CrtTime10		20		/* Created time subsecond (BYTE) */
                          -#define	XDIR_ModTime10		21		/* Modified time subsecond (BYTE) */
                          -#define	XDIR_CrtTZ			22		/* Created timezone (BYTE) */
                          -#define	XDIR_ModTZ			23		/* Modified timezone (BYTE) */
                          -#define	XDIR_AccTZ			24		/* Last accessed timezone (BYTE) */
                          -#define	XDIR_GenFlags		33		/* Gneral secondary flags (WORD) */
                          -#define	XDIR_NumName		35		/* Number of file name characters (BYTE) */
                          -#define	XDIR_NameHash		36		/* Hash of file name (WORD) */
                          -#define XDIR_ValidFileSize	40		/* Valid file size (QWORD) */
                          -#define	XDIR_FstClus		52		/* First cluster of the file data (DWORD) */
                          -#define	XDIR_FileSize		56		/* File/Directory size (QWORD) */
                           
                          -#define	SZDIRE				32		/* Size of a directory entry */
                          -#define	LLEF				0x40	/* Last long entry flag in LDIR_Ord */
                          -#define	DDEM				0xE5	/* Deleted directory entry mark set to DIR_Name[0] */
                          -#define	RDDEM				0x05	/* Replacement of the character collides with DDEM */
                          +/* Post process after fatal error on file operation */
                          +#define	ABORT(fs, res)		{ fp->err = (BYTE)(res); LEAVE_FF(fs, res); }
                          +
                          +
                          +/* Reentrancy related */
                          +#if _FS_REENTRANT
                          +#if _USE_LFN == 1
                          +#error Static LFN work area cannot be used at thread-safe configuration
                          +#endif
                          +#define	ENTER_FF(fs)		{ if (!lock_fs(fs)) return FR_TIMEOUT; }
                          +#define	LEAVE_FF(fs, res)	{ unlock_fs(fs, res); return res; }
                          +#else
                          +#define	ENTER_FF(fs)
                          +#define LEAVE_FF(fs, res)	return res
                          +#endif
                          +
                          +
                          +/* Definitions of volume - partition conversion */
                          +#if _MULTI_PARTITION
                          +#define LD2PD(vol) VolToPart[vol].pd	/* Get physical drive number */
                          +#define LD2PT(vol) VolToPart[vol].pt	/* Get partition index */
                          +#else
                          +#define LD2PD(vol) (BYTE)(vol)	/* Each logical drive is bound to the same physical drive number */
                          +#define LD2PT(vol) 0			/* Find first valid partition or in SFD */
                          +#endif
                          +
                          +
                          +/* Definitions of sector size */
                          +#if (_MAX_SS < _MIN_SS) || (_MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096) || (_MIN_SS != 512 && _MIN_SS != 1024 && _MIN_SS != 2048 && _MIN_SS != 4096)
                          +#error Wrong sector size configuration
                          +#endif
                          +#if _MAX_SS == _MIN_SS
                          +#define	SS(fs)	((UINT)_MAX_SS)	/* Fixed sector size */
                          +#else
                          +#define	SS(fs)	((fs)->ssize)	/* Variable sector size */
                          +#endif
                          +
                          +
                          +/* Timestamp */
                          +#if _FS_NORTC == 1
                          +#if _NORTC_YEAR < 1980 || _NORTC_YEAR > 2107 || _NORTC_MON < 1 || _NORTC_MON > 12 || _NORTC_MDAY < 1 || _NORTC_MDAY > 31
                          +#error Invalid _FS_NORTC settings
                          +#endif
                          +#define GET_FATTIME()	((DWORD)(_NORTC_YEAR - 1980) << 25 | (DWORD)_NORTC_MON << 21 | (DWORD)_NORTC_MDAY << 16)
                          +#else
                          +#define GET_FATTIME()	get_fattime()
                          +#endif
                          +
                          +
                          +/* File lock controls */
                          +#if _FS_LOCK != 0
                          +#if _FS_READONLY
                          +#error _FS_LOCK must be 0 at read-only configuration
                          +#endif
                          +typedef struct {
                          +	FATFS *fs;		/* Object ID 1, volume (NULL:blank entry) */
                          +	DWORD clu;		/* Object ID 2, containing directory (0:root) */
                          +	DWORD ofs;		/* Object ID 3, offset in the directory */
                          +	WORD ctr;		/* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */
                          +} FILESEM;
                          +#endif
                           
                           
                           
                          @@ -515,11 +523,11 @@ typedef struct {
                           
                           ---------------------------------------------------------------------------*/
                           
                          -/* Remark: Variables here without initial value shall be guaranteed zero/null
                          -/  at start-up. If not, either the linker or start-up routine being used is
                          +/* Remark: Variables defined here without initial value shall be guaranteed
                          +/  zero/null at start-up. If not, the linker option or start-up routine is
                           /  not compliance with C standard. */
                           
                          -#if _VOLUMES < 1 || _VOLUMES > 9
                          +#if _VOLUMES < 1 || _VOLUMES > 10
                           #error Wrong _VOLUMES setting
                           #endif
                           static FATFS *FatFs[_VOLUMES];	/* Pointer to the file system objects (logical drives) */
                          @@ -533,27 +541,29 @@ static BYTE CurrVol;			/* Current drive */
                           static FILESEM Files[_FS_LOCK];	/* Open object lock semaphores */
                           #endif
                           
                          -#if _USE_LFN == 0			/* Non-LFN configuration */
                          +#if _USE_LFN == 0		/* Non-LFN configuration */
                           #define	DEF_NAMBUF
                           #define INIT_NAMBUF(fs)
                           #define	FREE_NAMBUF()
                          -#else
                          +
                          +#else					/* LFN configuration */
                           #if _MAX_LFN < 12 || _MAX_LFN > 255
                          -#error Wrong _MAX_LFN setting
                          +#error Wrong _MAX_LFN value
                           #endif
                          +#define MAXDIRB(nc)	((nc + 44U) / 15 * SZDIRE)
                           
                           #if _USE_LFN == 1		/* LFN enabled with static working buffer */
                           #if _FS_EXFAT
                          -static BYTE	DirBuf[SZDIRE*19];	/* Directory entry block scratchpad buffer (19 entries in size) */
                          +static BYTE	DirBuf[MAXDIRB(_MAX_LFN)];	/* Directory entry block scratchpad buffer */
                           #endif
                          -static WCHAR LfnBuf[_MAX_LFN+1];	/* LFN enabled with static working buffer */
                          +static WCHAR LfnBuf[_MAX_LFN + 1];	/* LFN enabled with static working buffer */
                           #define	DEF_NAMBUF
                           #define INIT_NAMBUF(fs)
                           #define	FREE_NAMBUF()
                           
                           #elif _USE_LFN == 2 	/* LFN enabled with dynamic working buffer on the stack */
                           #if _FS_EXFAT
                          -#define	DEF_NAMBUF		WCHAR lbuf[_MAX_LFN+1]; BYTE dbuf[SZDIRE*19];
                          +#define	DEF_NAMBUF		WCHAR lbuf[_MAX_LFN+1]; BYTE dbuf[MAXDIRB(_MAX_LFN)];
                           #define INIT_NAMBUF(fs)	{ (fs)->lfnbuf = lbuf; (fs)->dirbuf = dbuf; }
                           #define	FREE_NAMBUF()
                           #else
                          @@ -565,7 +575,7 @@ static WCHAR LfnBuf[_MAX_LFN+1];	/* LFN enabled with static working buffer */
                           #elif _USE_LFN == 3 	/* LFN enabled with dynamic working buffer on the heap */
                           #if _FS_EXFAT
                           #define	DEF_NAMBUF		WCHAR *lfn;
                          -#define INIT_NAMBUF(fs)	{ lfn = ff_memalloc((_MAX_LFN+1)*2 + SZDIRE*19); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; (fs)->dirbuf = (BYTE*)(lfn+_MAX_LFN+1); }
                          +#define INIT_NAMBUF(fs)	{ lfn = ff_memalloc((_MAX_LFN+1)*2 + MAXDIRB(_MAX_LFN)); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; (fs)->dirbuf = (BYTE*)(lfn+_MAX_LFN+1); }
                           #define	FREE_NAMBUF()	ff_memfree(lfn)
                           #else
                           #define	DEF_NAMBUF		WCHAR *lfn;
                          @@ -575,8 +585,9 @@ static WCHAR LfnBuf[_MAX_LFN+1];	/* LFN enabled with static working buffer */
                           
                           #else
                           #error Wrong _USE_LFN setting
                          +
                           #endif
                          -#endif
                          +#endif	/* else _USE_LFN == 0 */
                           
                           #ifdef _EXCVT
                           static const BYTE ExCvt[] = _EXCVT;	/* Upper conversion table for SBCS extended characters */
                          @@ -684,7 +695,9 @@ void mem_cpy (void* dst, const void* src, UINT cnt) {
                           	const BYTE *s = (const BYTE*)src;
                           
                           	if (cnt) {
                          -		do *d++ = *s++; while (--cnt);
                          +		do {
                          +			*d++ = *s++;
                          +		} while (--cnt);
                           	}
                           }
                           
                          @@ -693,7 +706,9 @@ static
                           void mem_set (void* dst, int val, UINT cnt) {
                           	BYTE *d = (BYTE*)dst;
                           
                          -	do *d++ = (BYTE)val; while (--cnt);
                          +	do {
                          +		*d++ = (BYTE)val;
                          +	} while (--cnt);
                           }
                           
                           /* Compare memory block */
                          @@ -728,7 +743,7 @@ int lock_fs (
                           	FATFS* fs		/* File system object */
                           )
                           {
                          -	return ff_req_grant(fs->sobj);
                          +	return (fs && ff_req_grant(fs->sobj)) ? 1 : 0;
                           }
                           
                           
                          @@ -1030,17 +1045,21 @@ DWORD get_fat (	/* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x7FFFFFFF:Cluste
                           						break;
                           					}
                           				}
                          -				if (obj->stat == 3 && cofs < obj->n_cont) {	/* Is it in the contiguous part? */
                          +				if (obj->stat == 3 && cofs < obj->n_cont) {	/* Is it in the 1st fragment? */
                           					val = clst + 1; 	/* Generate the value */
                           					break;
                           				}
                           				if (obj->stat != 2) {	/* Get value from FAT if FAT chain is valid */
                          -					if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break;
                          -					val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x7FFFFFFF;
                          +					if (obj->n_frag != 0) {	/* Is it on the growing edge? */
                          +						val = 0x7FFFFFFF;	/* Generate EOC */
                          +					} else {
                          +						if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break;
                          +						val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x7FFFFFFF;
                          +					}
                           					break;
                           				}
                           			}
                          -			/* go next */
                          +			/* go to default */
                           #endif
                           		default:
                           			val = 1;	/* Internal error */
                          @@ -1069,7 +1088,6 @@ FRESULT put_fat (	/* FR_OK(0):succeeded, !=0:error */
                           	BYTE *p;
                           	FRESULT res = FR_INT_ERR;
                           
                          -
                           	if (clst >= 2 && clst < fs->n_fatent) {	/* Check if in valid range */
                           		switch (fs->fs_type) {
                           		case FS_FAT12 :	/* Bitfield items */
                          @@ -1120,12 +1138,12 @@ FRESULT put_fat (	/* FR_OK(0):succeeded, !=0:error */
                           /* exFAT: Accessing FAT and Allocation Bitmap                            */
                           /*-----------------------------------------------------------------------*/
                           
                          -/*---------------------------------------------*/
                          -/* exFAT: Find a contiguous free cluster block */
                          -/*---------------------------------------------*/
                          +/*--------------------------------------*/
                          +/* Find a contiguous free cluster block */
                          +/*--------------------------------------*/
                           
                           static
                          -DWORD find_bitmap (	/* 0:No free cluster, 2..:Free cluster found, 0xFFFFFFFF:Disk error */
                          +DWORD find_bitmap (	/* 0:Not found, 2..:Cluster block found, 0xFFFFFFFF:Disk error */
                           	FATFS* fs,	/* File system object */
                           	DWORD clst,	/* Cluster number to scan from */
                           	DWORD ncl	/* Number of contiguous clusters to find (1..) */
                          @@ -1146,12 +1164,12 @@ DWORD find_bitmap (	/* 0:No free cluster, 2..:Free cluster found, 0xFFFFFFFF:Dis
                           			do {
                           				bv = fs->win[i] & bm; bm <<= 1;		/* Get bit value */
                           				if (++val >= fs->n_fatent - 2) {	/* Next cluster (with wrap-around) */
                          -					val = 0; bm = 0; i = 4096;
                          +					val = 0; bm = 0; i = SS(fs);
                           				}
                           				if (!bv) {	/* Is it a free cluster? */
                          -					if (++ctr == ncl) return scl + 2;	/* Check run length */
                          +					if (++ctr == ncl) return scl + 2;	/* Check if run length is sufficient for required */
                           				} else {
                          -					scl = val; ctr = 0;		/* Encountered a live cluster, restart to scan */
                          +					scl = val; ctr = 0;		/* Encountered a cluster in-use, restart to scan */
                           				}
                           				if (val == clst) return 0;	/* All cluster scanned? */
                           			} while (bm);
                          @@ -1161,9 +1179,9 @@ DWORD find_bitmap (	/* 0:No free cluster, 2..:Free cluster found, 0xFFFFFFFF:Dis
                           }
                           
                           
                          -/*------------------------------------*/
                          -/* exFAT: Set/Clear a block of bitmap */
                          -/*------------------------------------*/
                          +/*----------------------------------------*/
                          +/* Set/Clear a block of allocation bitmap */
                          +/*----------------------------------------*/
                           
                           static
                           FRESULT change_bitmap (
                          @@ -1177,7 +1195,6 @@ FRESULT change_bitmap (
                           	UINT i;
                           	DWORD sect;
                           
                          -
                           	clst -= 2;	/* The first bit corresponds to cluster #2 */
                           	sect = fs->database + clst / 8 / SS(fs);	/* Sector address (assuming bitmap is located top of the cluster heap) */
                           	i = clst / 8 % SS(fs);						/* Byte offset in the sector */
                          @@ -1199,11 +1216,11 @@ FRESULT change_bitmap (
                           
                           
                           /*---------------------------------------------*/
                          -/* Complement contiguous part of the FAT chain */
                          +/* Fill the first fragment of the FAT chain    */
                           /*---------------------------------------------*/
                           
                           static
                          -FRESULT fill_fat_chain (
                          +FRESULT fill_first_frag (
                           	_FDID* obj	/* Pointer to the corresponding object */
                           )
                           {
                          @@ -1220,6 +1237,28 @@ FRESULT fill_fat_chain (
                           	return FR_OK;
                           }
                           
                          +
                          +/*---------------------------------------------*/
                          +/* Fill the last fragment of the FAT chain     */
                          +/*---------------------------------------------*/
                          +
                          +static
                          +FRESULT fill_last_frag (
                          +	_FDID* obj,	/* Pointer to the corresponding object */
                          +	DWORD lcl,	/* Last cluster of the fragment */
                          +	DWORD term	/* Value to set the last FAT entry */
                          +)
                          +{
                          +	FRESULT res;
                          +
                          +	while (obj->n_frag > 0) {	/* Create the last chain on the FAT */
                          +		res = put_fat(obj->fs, lcl - obj->n_frag + 1, (obj->n_frag > 1) ? lcl - obj->n_frag + 2 : term);
                          +		if (res != FR_OK) return res;
                          +		obj->n_frag--;
                          +	}
                          +	return FR_OK;
                          +}
                          +
                           #endif	/* _FS_EXFAT && !_FS_READONLY */
                           
                           
                          @@ -1270,7 +1309,7 @@ FRESULT remove_chain (	/* FR_OK(0):succeeded, !=0:error */
                           #if _FS_EXFAT || _USE_TRIM
                           		if (ecl + 1 == nxt) {	/* Is next cluster contiguous? */
                           			ecl = nxt;
                          -		} else {				/* End of contiguous cluster block */ 
                          +		} else {				/* End of contiguous cluster block */
                           #if _FS_EXFAT
                           			if (fs->fs_type == FS_EXFAT) {
                           				res = change_bitmap(fs, scl, ecl - scl + 1, 0);	/* Mark the cluster block 'free' on the bitmap */
                          @@ -1290,10 +1329,10 @@ FRESULT remove_chain (	/* FR_OK(0):succeeded, !=0:error */
                           
                           #if _FS_EXFAT
                           	if (fs->fs_type == FS_EXFAT) {
                          -		if (pclst == 0) {	/* Does object have no chain? */
                          +		if (pclst == 0) {	/* Does the object have no chain? */
                           			obj->stat = 0;		/* Change the object status 'initial' */
                           		} else {
                          -			if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) {	/* Did the chain got contiguous? */
                          +			if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) {	/* Did the chain get contiguous? */
                           				obj->stat = 2;	/* Change the object status 'contiguous' */
                           			}
                           		}
                          @@ -1325,7 +1364,7 @@ DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err
                           	}
                           	else {				/* Stretch current chain */
                           		cs = get_fat(obj, clst);			/* Check the cluster status */
                          -		if (cs < 2) return 1;				/* Invalid value */
                          +		if (cs < 2) return 1;				/* Invalid FAT value */
                           		if (cs == 0xFFFFFFFF) return cs;	/* A disk error occurred */
                           		if (cs < fs->n_fatent) return cs;	/* It is already followed by next cluster */
                           		scl = clst;
                          @@ -1339,13 +1378,22 @@ DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err
                           		if (res == FR_INT_ERR) return 1;
                           		if (res == FR_DISK_ERR) return 0xFFFFFFFF;
                           		if (clst == 0) {							/* Is it a new chain? */
                          -			obj->stat = 2;							/* Set status 'contiguous chain' */
                          -		} else {									/* This is a stretched chain */
                          +			obj->stat = 2;							/* Set status 'contiguous' */
                          +		} else {									/* It is a stretched chain */
                           			if (obj->stat == 2 && ncl != scl + 1) {	/* Is the chain got fragmented? */
                           				obj->n_cont = scl - obj->sclust;	/* Set size of the contiguous part */
                           				obj->stat = 3;						/* Change status 'just fragmented' */
                           			}
                           		}
                          +		if (obj->stat != 2) {	/* Is the file non-contiguous? */
                          +			if (ncl == clst + 1) {	/* Is the cluster next to previous one? */
                          +				obj->n_frag = obj->n_frag ? obj->n_frag + 1 : 2;	/* Increment size of last framgent */
                          +			} else {				/* New fragment */
                          +				if (obj->n_frag == 0) obj->n_frag = 1;
                          +				res = fill_last_frag(obj, clst, ncl);	/* Fill last fragment on the FAT and link it to new one */
                          +				if (res == FR_OK) obj->n_frag = 1;
                          +			}
                          +		}
                           	} else
                           #endif
                           	{	/* On the FAT12/16/32 volume */
                          @@ -1361,23 +1409,18 @@ DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk err
                           			if (cs == 1 || cs == 0xFFFFFFFF) return cs;	/* An error occurred */
                           			if (ncl == scl) return 0;		/* No free cluster */
                           		}
                          -	}
                          -
                          -	if (_FS_EXFAT && fs->fs_type == FS_EXFAT && obj->stat == 2) {	/* Is it a contiguous chain? */
                          -		res = FR_OK;						/* FAT does not need to be written */
                          -	} else {
                           		res = put_fat(fs, ncl, 0xFFFFFFFF);	/* Mark the new cluster 'EOC' */
                          -		if (res == FR_OK && clst) {
                          +		if (res == FR_OK && clst != 0) {
                           			res = put_fat(fs, clst, ncl);	/* Link it from the previous one if needed */
                           		}
                           	}
                           
                           	if (res == FR_OK) {			/* Update FSINFO if function succeeded. */
                           		fs->last_clst = ncl;
                          -		if (fs->free_clst < fs->n_fatent - 2) fs->free_clst--;
                          +		if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--;
                           		fs->fsi_flag |= 1;
                           	} else {
                          -		ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1;	/* Failed. Create error status */
                          +		ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1;	/* Failed. Generate error status */
                           	}
                           
                           	return ncl;		/* Return new cluster number or error status */
                          @@ -1519,7 +1562,7 @@ FRESULT dir_next (	/* FR_OK(0):succeeded, FR_NO_FILE:End of table, FR_DENIED:Cou
                           					}
                           					fs->winsect -= n;							/* Restore window offset */
                           #else
                          -					if (!stretch) dp->sect = 0;					/* If no stretch, report EOT (this is to suppress warning) */
                          +					if (!stretch) dp->sect = 0;					/* (this line is to suppress compiler warning) */
                           					dp->sect = 0; return FR_NO_FILE;			/* Report EOT */
                           #endif
                           				}
                          @@ -1676,9 +1719,9 @@ int pick_lfn (			/* 1:succeeded, 0:buffer overflow or invalid LFN entry */
                           	WCHAR wc, uc;
                           
                           
                          -	if (ld_word(dir + LDIR_FstClusLO) != 0) return 0;	/* Check LDIR_FstClusLO */
                          +	if (ld_word(dir + LDIR_FstClusLO) != 0) return 0;	/* Check LDIR_FstClusLO is 0 */
                           
                          -	i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13;	/* Offset in the LFN buffer */
                          +	i = ((dir[LDIR_Ord] & ~LLEF) - 1) * 13;	/* Offset in the LFN buffer */
                           
                           	for (wc = 1, s = 0; s < 13; s++) {		/* Process all characters in the entry */
                           		uc = ld_word(dir + LfnOfs[s]);		/* Pick an LFN character */
                          @@ -1809,7 +1852,9 @@ BYTE sum_sfn (
                           	BYTE sum = 0;
                           	UINT n = 11;
                           
                          -	do sum = (sum >> 1) + (sum << 7) + *dir++; while (--n);
                          +	do {
                          +		sum = (sum >> 1) + (sum << 7) + *dir++;
                          +	} while (--n);
                           	return sum;
                           }
                           
                          @@ -1893,30 +1938,26 @@ void get_xdir_info (
                           #endif
                           
                           	/* Get file name */
                          +	di = 0;
                           #if _LFN_UNICODE
                          -	if (dirb[XDIR_NumName] <= _MAX_LFN) {
                          -		for (si = SZDIRE * 2, di = 0; di < dirb[XDIR_NumName]; si += 2, di++) {
                          -			if ((si % SZDIRE) == 0) si += 2;	/* Skip entry type field */
                          -			w = ld_word(dirb + si);				/* Get a character */
                          -			fno->fname[di] = w;					/* Store it */
                          -		}
                          -	} else {
                          -		di = 0;	/* Buffer overflow and inaccessible object */
                          +	for (si = SZDIRE * 2; di < dirb[XDIR_NumName]; si += 2, di++) {
                          +		if ((si % SZDIRE) == 0) si += 2;		/* Skip entry type field */
                          +		w = ld_word(dirb + si);					/* Get a character */
                          +		if (di >= _MAX_LFN) { di = 0; break; }	/* Buffer overflow --> inaccessible object name */
                          +		fno->fname[di] = w;						/* Store it */
                           	}
                           #else
                          -	for (si = SZDIRE * 2, di = nc = 0; nc < dirb[XDIR_NumName]; si += 2, nc++) {
                          -		if ((si % SZDIRE) == 0) si += 2;	/* Skip entry type field */
                          -		w = ld_word(dirb + si);				/* Get a character */
                          -		w = ff_convert(w, 0);				/* Unicode -> OEM */
                          -		if (w == 0) { di = 0; break; }		/* Could not be converted and inaccessible object */
                          -		if (_DF1S && w >= 0x100) {			/* Put 1st byte if it is a DBC (always false at SBCS cfg) */
                          -			fno->fname[di++] = (char)(w >> 8);
                          +	for (si = SZDIRE * 2, nc = 0; nc < dirb[XDIR_NumName]; si += 2, nc++) {
                          +		if ((si % SZDIRE) == 0) si += 2;		/* Skip entry type field */
                          +		w = ff_convert(ld_word(dirb + si), 0);	/* Get a character and Unicode -> OEM */
                          +		if (_DF1S && w >= 0x100) {				/* Is it a double byte char? (always false at SBCS cfg) */
                          +			fno->fname[di++] = (char)(w >> 8);	/* Put 1st byte of the DBC */
                           		}
                          -		if (di >= _MAX_LFN) { di = 0; break; }	/* Buffer overflow and inaccessible object */
                          +		if (w == 0 || di >= _MAX_LFN) { di = 0; break; }	/* Invalid char or buffer overflow --> inaccessible object name */
                           		fno->fname[di++] = (char)w;
                           	}
                           #endif
                          -	if (di == 0) fno->fname[di++] = '?';	/* Inaccessible object? */
                          +	if (di == 0) fno->fname[di++] = '?';	/* Inaccessible object name? */
                           	fno->fname[di] = 0;						/* Terminate file name */
                           
                           	fno->altname[0] = 0;							/* No SFN */
                          @@ -1939,7 +1980,7 @@ FRESULT load_xdir (	/* FR_INT_ERR: invalid entry block */
                           )
                           {
                           	FRESULT res;
                          -	UINT i, nent;
                          +	UINT i, sz_ent;
                           	BYTE* dirb = dp->obj.fs->dirbuf;	/* Pointer to the on-memory direcotry entry block 85+C0+C1s */
                           
                           
                          @@ -1947,8 +1988,9 @@ FRESULT load_xdir (	/* FR_INT_ERR: invalid entry block */
                           	res = move_window(dp->obj.fs, dp->sect);
                           	if (res != FR_OK) return res;
                           	if (dp->dir[XDIR_Type] != 0x85) return FR_INT_ERR;
                          -	mem_cpy(dirb, dp->dir, SZDIRE);
                          -	nent = dirb[XDIR_NumSec] + 1;
                          +	mem_cpy(dirb + 0, dp->dir, SZDIRE);
                          +	sz_ent = (dirb[XDIR_NumSec] + 1) * SZDIRE;
                          +	if (sz_ent < 3 * SZDIRE || sz_ent > 19 * SZDIRE) return FR_INT_ERR;
                           
                           	/* Load C0 entry */
                           	res = dir_next(dp, 0);
                          @@ -1957,40 +1999,39 @@ FRESULT load_xdir (	/* FR_INT_ERR: invalid entry block */
                           	if (res != FR_OK) return res;
                           	if (dp->dir[XDIR_Type] != 0xC0) return FR_INT_ERR;
                           	mem_cpy(dirb + SZDIRE, dp->dir, SZDIRE);
                          +	if (MAXDIRB(dirb[XDIR_NumName]) > sz_ent) return FR_INT_ERR;
                           
                           	/* Load C1 entries */
                          -	if (nent < 3 || nent > 19) return FR_NO_FILE;
                          -	i = SZDIRE * 2; nent *= SZDIRE;
                          +	i = SZDIRE * 2;	/* C1 offset */
                           	do {
                           		res = dir_next(dp, 0);
                           		if (res != FR_OK) return res;
                           		res = move_window(dp->obj.fs, dp->sect);
                           		if (res != FR_OK) return res;
                           		if (dp->dir[XDIR_Type] != 0xC1) return FR_INT_ERR;
                          -		mem_cpy(dirb + i, dp->dir, SZDIRE);
                          -		i += SZDIRE;
                          -	} while (i < nent);
                          -
                          -	/* Sanity check */
                          -	if (xdir_sum(dirb) != ld_word(dirb + XDIR_SetSum)) return FR_INT_ERR;
                          +		if (i < MAXDIRB(_MAX_LFN)) mem_cpy(dirb + i, dp->dir, SZDIRE);
                          +	} while ((i += SZDIRE) < sz_ent);
                           
                          +	/* Sanity check (do it when accessible object name) */
                          +	if (i <= MAXDIRB(_MAX_LFN)) {
                          +		if (xdir_sum(dirb) != ld_word(dirb + XDIR_SetSum)) return FR_INT_ERR;
                          +	}
                           	return FR_OK;
                           }
                           
                           
                          -#if !_FS_READONLY || _FS_RPATH != 0 
                          +#if !_FS_READONLY || _FS_RPATH != 0
                           /*------------------------------------------------*/
                           /* exFAT: Load the object's directory entry block */
                           /*------------------------------------------------*/
                           static
                           FRESULT load_obj_dir (	
                           	DIR* dp,			/* Blank directory object to be used to access containing direcotry */
                          -	const _FDID* obj	/* Object with containing directory information */
                          +	const _FDID* obj	/* Object with its containing directory information */
                           )
                           {
                           	FRESULT res;
                           
                          -
                           	/* Open object containing directory */
                           	dp->obj.fs = obj->fs;
                           	dp->obj.sclust = obj->c_scl;
                          @@ -1998,7 +2039,7 @@ FRESULT load_obj_dir (
                           	dp->obj.objsize = obj->c_size & 0xFFFFFF00;
                           	dp->blk_ofs = obj->c_ofs;
                           
                          -	res = dir_sdi(dp, dp->blk_ofs);	/* Goto the block location */
                          +	res = dir_sdi(dp, dp->blk_ofs);	/* Goto object's entry block */
                           	if (res == FR_OK) {
                           		res = load_xdir(dp);		/* Load the object's entry block */
                           	}
                          @@ -2055,24 +2096,25 @@ void create_xdir (
                           	WCHAR chr;
                           
                           
                          -	mem_set(dirb, 0, 2 * SZDIRE);			/* Initialize 85+C0 entry */
                          +	/* Create 85+C0 entry */
                          +	mem_set(dirb, 0, 2 * SZDIRE);
                           	dirb[XDIR_Type] = 0x85;
                           	dirb[XDIR_Type + SZDIRE] = 0xC0;
                          -	st_word(dirb + XDIR_NameHash, xname_sum(lfn));	/* Set name hash */
                           
                          -	i = SZDIRE * 2;	/* C1 offset */
                          -	nc = 0; nb = 1; chr = 1;
                          +	/* Create C1 entries */
                          +	nc = 0; nb = 1; chr = 1; i = SZDIRE * 2;
                           	do {
                           		dirb[i++] = 0xC1; dirb[i++] = 0;	/* Entry type C1 */
                           		do {	/* Fill name field */
                           			if (chr && (chr = lfn[nc]) != 0) nc++;	/* Get a character if exist */
                          -			st_word(dirb + i, chr); i += 2;	/* Store it */
                          -		} while (i % SZDIRE);
                          +			st_word(dirb + i, chr); 		/* Store it */
                          +		} while ((i += 2) % SZDIRE != 0);
                           		nb++;
                           	} while (lfn[nc]);	/* Fill next entry if any char follows */
                           
                           	dirb[XDIR_NumName] = nc;	/* Set name length */
                          -	dirb[XDIR_NumSec] = nb;		/* Set number of C0+C1s */
                          +	dirb[XDIR_NumSec] = nb;		/* Set block length */
                          +	st_word(dirb + XDIR_NameHash, xname_sum(lfn));	/* Set name hash */
                           }
                           
                           #endif	/* !_FS_READONLY */
                          @@ -2102,7 +2144,9 @@ FRESULT dir_read (
                           		res = move_window(fs, dp->sect);
                           		if (res != FR_OK) break;
                           		c = dp->dir[DIR_Name];	/* Test for the entry type */
                          -		if (c == 0) { res = FR_NO_FILE; break; }	/* Reached to end of the directory */
                          +		if (c == 0) {
                          +			res = FR_NO_FILE; break; /* Reached to end of the directory */
                          +		}
                           #if _FS_EXFAT
                           		if (fs->fs_type == FS_EXFAT) {	/* On the exFAT volume */
                           			if (_USE_LABEL && vol) {
                          @@ -2183,7 +2227,10 @@ FRESULT dir_find (	/* FR_OK(0):succeeded, !=0:error */
                           		WORD hash = xname_sum(fs->lfnbuf);		/* Hash value of the name to find */
                           
                           		while ((res = dir_read(dp, 0)) == FR_OK) {	/* Read an item */
                          -			if (ld_word(fs->dirbuf + XDIR_NameHash) != hash) continue;	/* Skip the comparison if hash value mismatched */
                          +#if _MAX_LFN < 255
                          +			if (fs->dirbuf[XDIR_NumName] > _MAX_LFN) continue;			/* Skip comparison if inaccessible object name */
                          +#endif
                          +			if (ld_word(fs->dirbuf + XDIR_NameHash) != hash) continue;	/* Skip comparison if hash mismatched */
                           			for (nc = fs->dirbuf[XDIR_NumName], di = SZDIRE * 2, ni = 0; nc; nc--, di += 2, ni++) {	/* Compare the name */
                           				if ((di % SZDIRE) == 0) di += 2;
                           				if (ff_wtoupper(ld_word(fs->dirbuf + di)) != ff_wtoupper(fs->lfnbuf[ni])) break;
                          @@ -2263,19 +2310,20 @@ FRESULT dir_register (	/* FR_OK:succeeded, FR_DENIED:no free entry or too many S
                           		nent = (nlen + 14) / 15 + 2;	/* Number of entries to allocate (85+C0+C1s) */
                           		res = dir_alloc(dp, nent);		/* Allocate entries */
                           		if (res != FR_OK) return res;
                          -		dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1);			/* Set block position */
                          +		dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1);	/* Set the allocated entry block offset */
                           
                           		if (dp->obj.sclust != 0 && (dp->obj.stat & 4)) {	/* Has the sub-directory been stretched? */
                          -			dp->obj.stat &= 3;
                          -			dp->obj.objsize += (DWORD)fs->csize * SS(fs);	/* Increase object size by cluster size */
                          -			res = fill_fat_chain(&dp->obj);	/* Complement FAT chain if needed */
                          +			dp->obj.objsize += (DWORD)fs->csize * SS(fs);	/* Increase the directory size by cluster size */
                          +			res = fill_first_frag(&dp->obj);				/* Fill first fragment on the FAT if needed */
                          +			if (res != FR_OK) return res;
                          +			res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF);	/* Fill last fragment on the FAT if needed */
                          +			if (res != FR_OK) return res;
                          +			res = load_obj_dir(&dj, &dp->obj);				/* Load the object status */
                           			if (res != FR_OK) return res;
                          -			res = load_obj_dir(&dj, &dp->obj);
                          -			if (res != FR_OK) return res;	/* Load the object status */
                           			st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize);		/* Update the allocation status */
                           			st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize);
                           			fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1;
                          -			res = store_xdir(&dj);			/* Store the object status */
                          +			res = store_xdir(&dj);							/* Store the object status */
                           			if (res != FR_OK) return res;
                           		}
                           
                          @@ -2454,7 +2502,7 @@ void get_fileinfo (		/* No return code */
                           #endif
                           		fno->altname[j] = c;
                           		if (!lfv) {
                          -			if (IsUpper(c) && (dp->dir[DIR_NTres] & (i >= 9 ? NS_EXT : NS_BODY))) {
                          +			if (IsUpper(c) && (dp->dir[DIR_NTres] & ((i >= 9) ? NS_EXT : NS_BODY))) {
                           				c += 0x20;			/* To lower */
                           			}
                           			fno->fname[j] = c;
                          @@ -2775,14 +2823,16 @@ FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
                           
                           #if _FS_RPATH != 0
                           	if (*path != '/' && *path != '\\') {	/* Without heading separator */
                          -		obj->sclust = fs->cdir;				/* Start from the current directory */
                          +		obj->sclust = fs->cdir;				/* Start from current directory */
                           	} else
                           #endif
                           	{										/* With heading separator */
                           		while (*path == '/' || *path == '\\') path++;	/* Strip heading separator */
                          -		obj->sclust = 0;					/* Start from the root directory */
                          +		obj->sclust = 0;					/* Start from root directory */
                           	}
                          -#if _FS_EXFAT && _FS_RPATH != 0
                          +#if _FS_EXFAT
                          +	obj->n_frag = 0;	/* Invalidate last fragment counter of the object */
                          +#if _FS_RPATH != 0
                           	if (fs->fs_type == FS_EXFAT && obj->sclust) {	/* Retrieve the sub-directory status if needed */
                           		DIR dj;
                           
                          @@ -2794,6 +2844,7 @@ FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
                           		obj->objsize = ld_dword(fs->dirbuf + XDIR_FileSize);
                           		obj->stat = fs->dirbuf[XDIR_GenFlags] & 2;
                           	}
                          +#endif
                           #endif
                           
                           	if ((UINT)*path < ' ') {				/* Null path name is the origin directory itself */
                          @@ -2824,8 +2875,8 @@ FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
                           				res = FR_NO_PATH; break;
                           			}
                           #if _FS_EXFAT
                          -			if (fs->fs_type == FS_EXFAT) {
                          -				obj->c_scl = obj->sclust;		/* Save containing directory information for next dir */
                          +			if (fs->fs_type == FS_EXFAT) {		/* Save containing directory information for next dir */
                          +				obj->c_scl = obj->sclust;
                           				obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat;
                           				obj->c_ofs = dp->blk_ofs;
                           				obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus);	/* Open next directory */
                          @@ -2858,7 +2909,7 @@ int get_ldnumber (		/* Returns logical drive number (-1:invalid drive) */
                           	UINT i;
                           	int vol = -1;
                           #if _STR_VOLUME_ID		/* Find string drive id */
                          -	static const char* const str[] = {_VOLUME_STRS};
                          +	static const char* const volid[] = {_VOLUME_STRS};
                           	const char *sp;
                           	char c;
                           	TCHAR tc;
                          @@ -2869,7 +2920,7 @@ int get_ldnumber (		/* Returns logical drive number (-1:invalid drive) */
                           		for (tt = *path; (UINT)*tt >= (_USE_LFN ? ' ' : '!') && *tt != ':'; tt++) ;	/* Find ':' in the path */
                           		if (*tt == ':') {	/* If a ':' is exist in the path name */
                           			tp = *path;
                          -			i = *tp++ - '0'; 
                          +			i = *tp++ - '0';
                           			if (i < 10 && tp == tt) {	/* Is there a numeric drive id? */
                           				if (i < _VOLUMES) {	/* If a drive id is found, get the value and strip it */
                           					vol = (int)i;
                          @@ -2880,7 +2931,7 @@ int get_ldnumber (		/* Returns logical drive number (-1:invalid drive) */
                           			 else {	/* No numeric drive number, find string drive id */
                           				i = 0; tt++;
                           				do {
                          -					sp = str[i]; tp = *path;
                          +					sp = volid[i]; tp = *path;
                           					do {	/* Compare a string drive id with path name */
                           						c = *sp++; tc = *tp++;
                           						if (IsLower(tc)) tc -= 0x20;
                          @@ -2913,13 +2964,13 @@ int get_ldnumber (		/* Returns logical drive number (-1:invalid drive) */
                           static
                           BYTE check_fs (	/* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not a BS, 4:Disk error */
                           	FATFS* fs,	/* File system object */
                          -	DWORD sect	/* Sector# (lba) to check if it is an FAT-VBR or not */
                          +	DWORD sect	/* Sector# (lba) to load and check if it is an FAT-VBR or not */
                           )
                           {
                           	fs->wflag = 0; fs->winsect = 0xFFFFFFFF;		/* Invaidate window */
                           	if (move_window(fs, sect) != FR_OK) return 4;	/* Load boot record */
                           
                          -	if (ld_word(fs->win + BS_55AA) != 0xAA55) return 3;	/* Check boot record signature (always placed at offset 510 even if the sector size is >512) */
                          +	if (ld_word(fs->win + BS_55AA) != 0xAA55) return 3;	/* Check boot record signature (always placed here even if the sector size is >512) */
                           
                           	if (fs->win[BS_JmpBoot] == 0xE9 || (fs->win[BS_JmpBoot] == 0xEB && fs->win[BS_JmpBoot + 2] == 0x90)) {
                           		if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0;	/* Check "FAT" string */
                          @@ -2989,29 +3040,30 @@ FRESULT find_volume (	/* FR_OK(0): successful, !=0: any error occurred */
                           	if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check disk write protection if needed */
                           		return FR_WRITE_PROTECTED;
                           	}
                          -#if _MAX_SS != _MIN_SS						/* Get sector size (multiple sector size cfg only) */
                          +#if _MAX_SS != _MIN_SS					/* Get sector size (multiple sector size cfg only) */
                           	if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK) return FR_DISK_ERR;
                           	if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR;
                           #endif
                          -	/* Find an FAT partition on the drive. Supports only generic partitioning, FDISK and SFD. */
                          +
                          +	/* Find an FAT partition on the drive. Supports only generic partitioning rules, FDISK and SFD. */
                           	bsect = 0;
                           	fmt = check_fs(fs, bsect);			/* Load sector 0 and check if it is an FAT-VBR as SFD */
                           	if (fmt == 2 || (fmt < 2 && LD2PT(vol) != 0)) {	/* Not an FAT-VBR or forced partition number */
                          -		for (i = 0; i < 4; i++) {			/* Get partition offset */
                          +		for (i = 0; i < 4; i++) {		/* Get partition offset */
                           			pt = fs->win + (MBR_Table + i * SZ_PTE);
                           			br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0;
                           		}
                          -		i = LD2PT(vol);						/* Partition number: 0:auto, 1-4:forced */
                          +		i = LD2PT(vol);					/* Partition number: 0:auto, 1-4:forced */
                           		if (i) i--;
                          -		do {								/* Find an FAT volume */
                          +		do {							/* Find an FAT volume */
                           			bsect = br[i];
                           			fmt = bsect ? check_fs(fs, bsect) : 3;	/* Check the partition */
                          -		} while (!LD2PT(vol) && fmt >= 2 && ++i < 4);
                          +		} while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4);
                           	}
                           	if (fmt == 4) return FR_DISK_ERR;		/* An error occured in the disk I/O layer */
                           	if (fmt >= 2) return FR_NO_FILESYSTEM;	/* No FAT volume is found */
                           
                          -	/* An FAT volume is found. Following code initializes the file system object */
                          +	/* An FAT volume is found (bsect). Following code initializes the file system object */
                           
                           #if _FS_EXFAT
                           	if (fmt == 1) {
                          @@ -3022,8 +3074,9 @@ FRESULT find_volume (	/* FR_OK(0): successful, !=0: any error occurred */
                           
                           		if (ld_word(fs->win + BPB_FSVerEx) != 0x100) return FR_NO_FILESYSTEM;	/* Check exFAT revision (Must be 1.0) */
                           
                          -		if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs))	/* (BPB_BytsPerSecEx must be equal to the physical sector size) */
                          +		if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) {	/* (BPB_BytsPerSecEx must be equal to the physical sector size) */
                           			return FR_NO_FILESYSTEM;
                          +		}
                           
                           		maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect;	/* Last LBA + 1 of the volume */
                           		if (maxlba >= 0x100000000) return FR_NO_FILESYSTEM;	/* (It cannot be handled in 32-bit LBA) */
                          @@ -3062,49 +3115,49 @@ FRESULT find_volume (	/* FR_OK(0): successful, !=0: any error occurred */
                           	{
                           		if (ld_word(fs->win + BPB_BytsPerSec) != SS(fs)) return FR_NO_FILESYSTEM;	/* (BPB_BytsPerSec must be equal to the physical sector size) */
                           
                          -		fasize = ld_word(fs->win + BPB_FATSz16);			/* Number of sectors per FAT */
                          +		fasize = ld_word(fs->win + BPB_FATSz16);		/* Number of sectors per FAT */
                           		if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32);
                           		fs->fsize = fasize;
                           
                          -		fs->n_fats = fs->win[BPB_NumFATs];					/* Number of FATs */
                          +		fs->n_fats = fs->win[BPB_NumFATs];				/* Number of FATs */
                           		if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM;	/* (Must be 1 or 2) */
                          -		fasize *= fs->n_fats;								/* Number of sectors for FAT area */
                          +		fasize *= fs->n_fats;							/* Number of sectors for FAT area */
                           
                          -		fs->csize = fs->win[BPB_SecPerClus];				/* Cluster size */
                          +		fs->csize = fs->win[BPB_SecPerClus];			/* Cluster size */
                           		if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM;	/* (Must be power of 2) */
                           
                           		fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt);	/* Number of root directory entries */
                           		if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM;	/* (Must be sector aligned) */
                           
                          -		tsect = ld_word(fs->win + BPB_TotSec16);			/* Number of sectors on the volume */
                          +		tsect = ld_word(fs->win + BPB_TotSec16);		/* Number of sectors on the volume */
                           		if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32);
                           
                          -		nrsv = ld_word(fs->win + BPB_RsvdSecCnt);			/* Number of reserved sectors */
                          -		if (nrsv == 0) return FR_NO_FILESYSTEM;				/* (Must not be 0) */
                          +		nrsv = ld_word(fs->win + BPB_RsvdSecCnt);		/* Number of reserved sectors */
                          +		if (nrsv == 0) return FR_NO_FILESYSTEM;			/* (Must not be 0) */
                           
                           		/* Determine the FAT sub type */
                           		sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE);	/* RSV + FAT + DIR */
                          -		if (tsect < sysect) return FR_NO_FILESYSTEM;		/* (Invalid volume size) */
                          -		nclst = (tsect - sysect) / fs->csize;				/* Number of clusters */
                          -		if (nclst == 0) return FR_NO_FILESYSTEM;			/* (Invalid volume size) */
                          +		if (tsect < sysect) return FR_NO_FILESYSTEM;	/* (Invalid volume size) */
                          +		nclst = (tsect - sysect) / fs->csize;			/* Number of clusters */
                          +		if (nclst == 0) return FR_NO_FILESYSTEM;		/* (Invalid volume size) */
                           		fmt = FS_FAT32;
                           		if (nclst <= MAX_FAT16) fmt = FS_FAT16;
                           		if (nclst <= MAX_FAT12) fmt = FS_FAT12;
                           
                           		/* Boundaries and Limits */
                          -		fs->n_fatent = nclst + 2;							/* Number of FAT entries */
                          -		fs->volbase = bsect;								/* Volume start sector */
                          -		fs->fatbase = bsect + nrsv; 						/* FAT start sector */
                          -		fs->database = bsect + sysect;						/* Data start sector */
                          +		fs->n_fatent = nclst + 2;						/* Number of FAT entries */
                          +		fs->volbase = bsect;							/* Volume start sector */
                          +		fs->fatbase = bsect + nrsv; 					/* FAT start sector */
                          +		fs->database = bsect + sysect;					/* Data start sector */
                           		if (fmt == FS_FAT32) {
                           			if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM;	/* (Must be FAT32 revision 0.0) */
                          -			if (fs->n_rootdir) return FR_NO_FILESYSTEM;		/* (BPB_RootEntCnt must be 0) */
                          +			if (fs->n_rootdir) return FR_NO_FILESYSTEM;	/* (BPB_RootEntCnt must be 0) */
                           			fs->dirbase = ld_dword(fs->win + BPB_RootClus32);	/* Root directory start cluster */
                          -			szbfat = fs->n_fatent * 4;						/* (Needed FAT size) */
                          +			szbfat = fs->n_fatent * 4;					/* (Needed FAT size) */
                           		} else {
                           			if (fs->n_rootdir == 0)	return FR_NO_FILESYSTEM;/* (BPB_RootEntCnt must not be 0) */
                          -			fs->dirbase = fs->fatbase + fasize;				/* Root directory start sector */
                          -			szbfat = (fmt == FS_FAT16) ?					/* (Needed FAT size) */
                          +			fs->dirbase = fs->fatbase + fasize;			/* Root directory start sector */
                          +			szbfat = (fmt == FS_FAT16) ?				/* (Needed FAT size) */
                           				fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1);
                           		}
                           		if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs)) return FR_NO_FILESYSTEM;	/* (BPB_FATSz must not be less than the size needed) */
                          @@ -3135,18 +3188,18 @@ FRESULT find_volume (	/* FR_OK(0): successful, !=0: any error occurred */
                           #endif	/* !_FS_READONLY */
                           	}
                           
                          -	fs->fs_type = fmt;	/* FAT sub-type */
                          -	fs->id = ++Fsid;	/* File system mount ID */
                          +	fs->fs_type = fmt;		/* FAT sub-type */
                          +	fs->id = ++Fsid;		/* File system mount ID */
                           #if _USE_LFN == 1
                           	fs->lfnbuf = LfnBuf;	/* Static LFN working buffer */
                           #if _FS_EXFAT
                          -	fs->dirbuf = DirBuf;	/* Static directory block working buuffer */
                          +	fs->dirbuf = DirBuf;	/* Static directory block scratchpad buuffer */
                           #endif
                           #endif
                           #if _FS_RPATH != 0
                          -	fs->cdir = 0;		/* Initialize current directory */
                          +	fs->cdir = 0;			/* Initialize current directory */
                           #endif
                          -#if _FS_LOCK != 0		/* Clear file lock semaphores */
                          +#if _FS_LOCK != 0			/* Clear file lock semaphores */
                           	clear_lock(fs);
                           #endif
                           	return FR_OK;
                          @@ -3167,14 +3220,13 @@ FRESULT validate (	/* Returns FR_OK or FR_INVALID_OBJECT */
                           {
                           	FRESULT res;
                           
                          -
                           	if (!obj || !obj->fs || !obj->fs->fs_type || obj->fs->id != obj->id || (disk_status(obj->fs->drv) & STA_NOINIT)) {
                          -		*fs = 0;				/* The object is invalid */
                          -		res = FR_INVALID_OBJECT;
                          +		*fs = 0;
                          +		res = FR_INVALID_OBJECT;	/* The object is invalid */
                           	} else {
                           		*fs = obj->fs;			/* Owner file sytem object */
                           		ENTER_FF(obj->fs);		/* Lock file system */
                          -		res = FR_OK;
                          +		res = FR_OK;			/* Valid object */
                           	}
                           	return res;
                           }
                          @@ -3281,12 +3333,13 @@ FRESULT f_open (
                           		/* Create or Open a file */
                           		if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) {
                           			if (res != FR_OK) {					/* No file, create new */
                          -				if (res == FR_NO_FILE)			/* There is no file to open, create a new entry */
                          +				if (res == FR_NO_FILE) {		/* There is no file to open, create a new entry */
                           #if _FS_LOCK != 0
                           					res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES;
                           #else
                           					res = dir_register(&dj);
                           #endif
                          +				}
                           				mode |= FA_CREATE_ALWAYS;		/* File is created */
                           			}
                           			else {								/* Any object is already existing */
                          @@ -3305,6 +3358,7 @@ FRESULT f_open (
                           					fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus);
                           					fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize);
                           					fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2;
                          +					fp->obj.n_frag = 0;
                           					/* Initialize directory entry block */
                           					st_dword(fs->dirbuf + XDIR_CrtTime, dw);	/* Set created time */
                           					fs->dirbuf[XDIR_CrtTime10] = 0;
                          @@ -3379,16 +3433,16 @@ FRESULT f_open (
                           		if (res == FR_OK) {
                           #if _FS_EXFAT
                           			if (fs->fs_type == FS_EXFAT) {
                          -				fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus);		/* Get allocation info */
                          -				fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize);
                          -				fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2;
                          -				fp->obj.c_scl = dj.obj.sclust;
                          +				fp->obj.c_scl = dj.obj.sclust;							/* Get containing directory info */
                           				fp->obj.c_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat;
                           				fp->obj.c_ofs = dj.blk_ofs;
                          +				fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus);	/* Get object allocation info */
                          +				fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize);
                          +				fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2;
                           			} else
                           #endif
                           			{
                          -				fp->obj.sclust = ld_clust(fs, dj.dir);				/* Get allocation info */
                          +				fp->obj.sclust = ld_clust(fs, dj.dir);					/* Get object allocation info */
                           				fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize);
                           			}
                           #if _USE_FASTSEEK
                          @@ -3672,8 +3726,10 @@ FRESULT f_sync (
                           	FATFS *fs;
                           	DWORD tm;
                           	BYTE *dir;
                          +#if _FS_EXFAT
                          +	DIR dj;
                           	DEF_NAMBUF
                          -
                          +#endif
                           
                           	res = validate(&fp->obj, &fs);	/* Check validity of the file object */
                           	if (res == FR_OK) {
                          @@ -3688,10 +3744,11 @@ FRESULT f_sync (
                           			tm = GET_FATTIME();				/* Modified time */
                           #if _FS_EXFAT
                           			if (fs->fs_type == FS_EXFAT) {
                          -				res = fill_fat_chain(&fp->obj);	/* Create FAT chain if needed */
                          +				res = fill_first_frag(&fp->obj);	/* Fill first fragment on the FAT if needed */
                          +				if (res == FR_OK) {
                          +					res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF);	/* Fill last fragment on the FAT if needed */
                          +				}
                           				if (res == FR_OK) {
                          -					DIR dj;
                          -
                           					INIT_NAMBUF(fs);
                           					res = load_obj_dir(&dj, &fp->obj);	/* Load directory entry block */
                           					if (res == FR_OK) {
                          @@ -3944,7 +4001,14 @@ FRESULT f_lseek (
                           #endif
                           
                           	res = validate(&fp->obj, &fs);		/* Check validity of the file object */
                          -	if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res);	/* Check validity */
                          +	if (res == FR_OK) res = (FRESULT)fp->err;
                          +#if _FS_EXFAT && !_FS_READONLY
                          +	if (res == FR_OK && fs->fs_type == FS_EXFAT) {
                          +		res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF);	/* Fill last fragment on the FAT if needed */
                          +	}
                          +#endif
                          +	if (res != FR_OK) LEAVE_FF(fs, res);
                          +
                           #if _USE_FASTSEEK
                           	if (fp->cltbl) {	/* Fast seek */
                           		if (ofs == CREATE_LINKMAP) {	/* Create CLMT */
                          @@ -4109,16 +4173,16 @@ FRESULT f_opendir (
                           				if (obj->attr & AM_DIR) {		/* This object is a sub-directory */
                           #if _FS_EXFAT
                           					if (fs->fs_type == FS_EXFAT) {
                          -						obj->c_scl = obj->sclust;	/* Save containing directory inforamation */
                          +						obj->c_scl = obj->sclust;							/* Get containing directory inforamation */
                           						obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat;
                           						obj->c_ofs = dp->blk_ofs;
                          -						obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus);	/* Get object location and status */
                          +						obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus);	/* Get object allocation info */
                           						obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize);
                           						obj->stat = fs->dirbuf[XDIR_GenFlags] & 2;
                           					} else
                           #endif
                           					{
                          -						obj->sclust = ld_clust(fs, dp->dir);	/* Get object location */
                          +						obj->sclust = ld_clust(fs, dp->dir);	/* Get object allocation info */
                           					}
                           				} else {						/* This object is a file */
                           					res = FR_NO_PATH;
                          @@ -4410,7 +4474,7 @@ FRESULT f_truncate (
                           	if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res);
                           	if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED);	/* Check access mode */
                           
                          -	if (fp->obj.objsize > fp->fptr) {
                          +	if (fp->fptr < fp->obj.objsize) {	/* Process when fptr is not on the eof */
                           		if (fp->fptr == 0) {	/* When set file size to zero, remove entire cluster chain */
                           			res = remove_chain(&fp->obj, fp->obj.sclust, 0);
                           			fp->obj.sclust = 0;
                          @@ -4493,7 +4557,7 @@ FRESULT f_unlink (
                           				{
                           					dclst = ld_clust(fs, dj.dir);
                           				}
                          -				if (dj.obj.attr & AM_DIR) {			/* Is it a sub-directory ? */
                          +				if (dj.obj.attr & AM_DIR) {			/* Is it a sub-directory? */
                           #if _FS_RPATH != 0
                           					if (dclst == fs->cdir) {		 		/* Is it the current directory? */
                           						res = FR_DENIED;
                          @@ -4597,7 +4661,9 @@ FRESULT f_mkdir (
                           					mem_set(dir, 0, SS(fs));
                           				}
                           			}
                          -			if (res == FR_OK) res = dir_register(&dj);	/* Register the object to the directoy */
                          +			if (res == FR_OK) {
                          +				res = dir_register(&dj);	/* Register the object to the directoy */
                          +			}
                           			if (res == FR_OK) {
                           #if _FS_EXFAT
                           				if (fs->fs_type == FS_EXFAT) {	/* Initialize directory entry block */
                          @@ -4617,7 +4683,9 @@ FRESULT f_mkdir (
                           					dir[DIR_Attr] = AM_DIR;				/* Attribute */
                           					fs->wflag = 1;
                           				}
                          -				if (res == FR_OK) res = sync_fs(fs);
                          +				if (res == FR_OK) {
                          +					res = sync_fs(fs);
                          +				}
                           			} else {
                           				remove_chain(&dj.obj, dcl, 0);		/* Could not register, remove cluster chain */
                           			}
                          @@ -4648,7 +4716,7 @@ FRESULT f_rename (
                           	DEF_NAMBUF
                           
                           
                          -	get_ldnumber(&path_new);						/* Ignore drive number of new name */
                          +	get_ldnumber(&path_new);						/* Snip drive number of new name off */
                           	res = find_volume(&path_old, &fs, FA_WRITE);	/* Get logical drive of the old object */
                           	if (res == FR_OK) {
                           		djo.obj.fs = fs;
                          @@ -4656,7 +4724,9 @@ FRESULT f_rename (
                           		res = follow_path(&djo, path_old);		/* Check old object */
                           		if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME;	/* Check validity of name */
                           #if _FS_LOCK != 0
                          -		if (res == FR_OK) res = chk_lock(&djo, 2);
                          +		if (res == FR_OK) {
                          +			res = chk_lock(&djo, 2);
                          +		}
                           #endif
                           		if (res == FR_OK) {						/* Object to be renamed is found */
                           #if _FS_EXFAT
                          @@ -4678,7 +4748,7 @@ FRESULT f_rename (
                           						mem_cpy(fs->dirbuf, buf, SZDIRE * 2);
                           						fs->dirbuf[XDIR_NumSec] = nf; fs->dirbuf[XDIR_NumName] = nn;
                           						st_word(fs->dirbuf + XDIR_NameHash, nh);
                          -/* Start of critical section where any interruption can cause a cross-link */
                          +/* Start of critical section where an interruption can cause a cross-link */
                           						res = store_xdir(&djn);
                           					}
                           				}
                          @@ -4703,7 +4773,7 @@ FRESULT f_rename (
                           							if (!dw) {
                           								res = FR_INT_ERR;
                           							} else {
                          -/* Start of critical section where any interruption can cause a cross-link */
                          +/* Start of critical section where an interruption can cause a cross-link */
                           								res = move_window(fs, dw);
                           								dir = fs->win + SZDIRE * 1;	/* Ptr to .. entry */
                           								if (res == FR_OK && dir[1] == '.') {
                          @@ -4721,7 +4791,7 @@ FRESULT f_rename (
                           					res = sync_fs(fs);
                           				}
                           			}
                          -/* End of critical section */
                          +/* End of the critical section */
                           		}
                           		FREE_NAMBUF();
                           	}
                          @@ -4771,7 +4841,9 @@ FRESULT f_chmod (
                           				dj.dir[DIR_Attr] = (attr & mask) | (dj.dir[DIR_Attr] & (BYTE)~mask);	/* Apply attribute change */
                           				fs->wflag = 1;
                           			}
                          -			if (res == FR_OK) res = sync_fs(fs);
                          +			if (res == FR_OK) {
                          +				res = sync_fs(fs);
                          +			}
                           		}
                           		FREE_NAMBUF();
                           	}
                          @@ -4814,7 +4886,9 @@ FRESULT f_utime (
                           				st_dword(dj.dir + DIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime);
                           				fs->wflag = 1;
                           			}
                          -			if (res == FR_OK) res = sync_fs(fs);
                          +			if (res == FR_OK) {
                          +				res = sync_fs(fs);
                          +			}
                           		}
                           		FREE_NAMBUF();
                           	}
                          @@ -4902,9 +4976,14 @@ FRESULT f_getlabel (
                           		res = move_window(fs, fs->volbase);
                           		if (res == FR_OK) {
                           			switch (fs->fs_type) {
                          -			case FS_EXFAT: di = BPB_VolIDEx; break;
                          -			case FS_FAT32: di = BS_VolID32; break;
                          -			default:       di = BS_VolID;
                          +			case FS_EXFAT:
                          +				di = BPB_VolIDEx; break;
                          +
                          +			case FS_FAT32:
                          +				di = BS_VolID32; break;
                          +
                          +			default:
                          +				di = BS_VolID;
                           			}
                           			*vsn = ld_dword(fs->win + di);
                           		}
                          @@ -5074,11 +5153,11 @@ FRESULT f_expand (
                           		scl = find_bitmap(fs, stcl, tcl);			/* Find a contiguous cluster block */
                           		if (scl == 0) res = FR_DENIED;				/* No contiguous cluster block was found */
                           		if (scl == 0xFFFFFFFF) res = FR_DISK_ERR;
                          -		if (res == FR_OK) {
                          -			if (opt) {
                          +		if (res == FR_OK) {	/* A contiguous free area is found */
                          +			if (opt) {		/* Allocate it now */
                           				res = change_bitmap(fs, scl, tcl, 1);	/* Mark the cluster block 'in use' */
                           				lclst = scl + tcl - 1;
                          -			} else {
                          +			} else {		/* Set it as suggested point for next allocation */
                           				lclst = scl - 1;
                           			}
                           		}
                          @@ -5098,14 +5177,14 @@ FRESULT f_expand (
                           			}
                           			if (clst == stcl) { res = FR_DENIED; break; }	/* No contiguous cluster? */
                           		}
                          -		if (res == FR_OK) {
                          -			if (opt) {
                          +		if (res == FR_OK) {	/* A contiguous free area is found */
                          +			if (opt) {		/* Allocate it now */
                           				for (clst = scl, n = tcl; n; clst++, n--) {	/* Create a cluster chain on the FAT */
                           					res = put_fat(fs, clst, (n == 1) ? 0xFFFFFFFF : clst + 1);
                           					if (res != FR_OK) break;
                           					lclst = clst;
                           				}
                          -			} else {
                          +			} else {		/* Set it as suggested point for next allocation */
                           				lclst = scl - 1;
                           			}
                           		}
                          @@ -5113,12 +5192,12 @@ FRESULT f_expand (
                           
                           	if (res == FR_OK) {
                           		fs->last_clst = lclst;		/* Set suggested start cluster to start next */
                          -		if (opt) {
                          +		if (opt) {	/* Is it allocated now? */
                           			fp->obj.sclust = scl;		/* Update object allocation information */
                           			fp->obj.objsize = fsz;
                           			if (_FS_EXFAT) fp->obj.stat = 2;	/* Set status 'contiguous chain' */
                           			fp->flag |= FA_MODIFIED;
                          -			if (fs->free_clst  < fs->n_fatent - 2) {	/* Update FSINFO */
                          +			if (fs->free_clst <= fs->n_fatent - 2) {	/* Update FSINFO */
                           				fs->free_clst -= tcl;
                           				fs->fsi_flag |= 1;
                           			}
                          @@ -5205,13 +5284,13 @@ FRESULT f_forward (
                           
                           #if _USE_MKFS && !_FS_READONLY
                           /*-----------------------------------------------------------------------*/
                          -/* Create FAT file system on the logical drive                           */
                          +/* Create an FAT/exFAT volume                                            */
                           /*-----------------------------------------------------------------------*/
                           
                           FRESULT f_mkfs (
                           	const TCHAR* path,	/* Logical drive number */
                           	BYTE opt,			/* Format option */
                          -	DWORD au,			/* Size of allocation unit [byte] */
                          +	DWORD au,			/* Size of allocation unit (cluster) [byte] */
                           	void* work,			/* Pointer to working buffer */
                           	UINT len			/* Size of working buffer */
                           )
                          @@ -5236,7 +5315,7 @@ FRESULT f_mkfs (
                           	/* Check mounted drive and clear work area */
                           	vol = get_ldnumber(&path);					/* Get target logical drive */
                           	if (vol < 0) return FR_INVALID_DRIVE;
                          -	if (FatFs[vol]) FatFs[vol]->fs_type = 0;	/* Clear mounted volume */
                          +	if (FatFs[vol]) FatFs[vol]->fs_type = 0;	/* Clear the volume */
                           	pdrv = LD2PD(vol);	/* Physical drive */
                           	part = LD2PT(vol);	/* Partition (0:create as new, 1-4:get from partition table) */
                           
                          @@ -5245,7 +5324,7 @@ FRESULT f_mkfs (
                           	if (stat & STA_NOINIT) return FR_NOT_READY;
                           	if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
                           	if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & (sz_blk - 1))) sz_blk = 1;	/* Erase block to align data area */
                          -#if _MAX_SS != _MIN_SS		/* Get sector size of the medium */
                          +#if _MAX_SS != _MIN_SS		/* Get sector size of the medium if variable sector size cfg. */
                           	if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR;
                           	if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR;
                           #else
                          @@ -5304,7 +5383,7 @@ FRESULT f_mkfs (
                           
                           		if (sz_vol < 0x1000) return FR_MKFS_ABORTED;	/* Too small volume? */
                           #if _USE_TRIM
                          -		tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1;	/* Inform the device the volume area can be erased */
                          +		tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1;	/* Inform the device the volume area may be erased */
                           		disk_ioctl(pdrv, CTRL_TRIM, tbl);
                           #endif
                           		/* Determine FAT location, data location and number of clusters */
                          @@ -5340,11 +5419,12 @@ FRESULT f_mkfs (
                           					ch = 0xFFFF; st = 2; break;	/* Compress the no-case block if run is >= 128 */
                           				}
                           				st = 1;			/* Do not compress short run */
                          -				/* continue */
                          +				/* go to next case */
                           			case 1:
                           				ch = si++;		/* Fill the short run */
                           				if (--j == 0) st = 0;
                           				break;
                          +
                           			default:
                           				ch = (WCHAR)j; si += j;	/* Number of chars to skip */
                           				st = 0;
                          @@ -5626,14 +5706,14 @@ FRESULT f_mkfs (
                           		}
                           	}
                           
                          -	if (_MULTI_PARTITION && part != 0) {
                          +	/* Update partition information */
                          +	if (_MULTI_PARTITION && part != 0) {	/* Created in the existing partition */
                           		/* Update system ID in the partition table */
                           		if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR;	/* Read the MBR */
                          -		buf[MBR_Table + (part - 1) * SZ_PTE + PTE_System] = sys;		/* Set system type */
                          +		buf[MBR_Table + (part - 1) * SZ_PTE + PTE_System] = sys;		/* Set system ID */
                           		if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR;	/* Write it back to the MBR */
                          -	} else {
                          -		if (!(opt & FM_SFD)) {
                          -			/* Create partition table in FDISK format */
                          +	} else {								/* Created as a new single partition */
                          +		if (!(opt & FM_SFD)) {	/* Create partition table if in FDISK format */
                           			mem_set(buf, 0, ss);
                           			st_word(buf + BS_55AA, 0xAA55);		/* MBR signature */
                           			pte = buf + MBR_Table;				/* Create partition table for single partition in the drive */
                          @@ -5642,7 +5722,7 @@ FRESULT f_mkfs (
                           			pte[PTE_StSec] = 1;					/* Start sector */
                           			pte[PTE_StCyl] = 0;					/* Start cylinder */
                           			pte[PTE_System] = sys;				/* System type */
                          -			n = (b_vol + sz_vol) / (63 * 255);	/* (End CHS is incorrect) */
                          +			n = (b_vol + sz_vol) / (63 * 255);	/* (End CHS may be invalid) */
                           			pte[PTE_EdHead] = 254;				/* End head */
                           			pte[PTE_EdSec] = (BYTE)(n >> 2 | 63);	/* End sector */
                           			pte[PTE_EdCyl] = (BYTE)n;			/* End cylinder */
                          @@ -5681,7 +5761,7 @@ FRESULT f_fdisk (
                           	if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
                           	if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_disk)) return FR_DISK_ERR;
                           
                          -	/* Determine the CHS without any care of the drive geometry */
                          +	/* Determine the CHS without any consideration of the drive geometry */
                           	for (n = 16; n < 256 && sz_disk / n / 63 > 1024; n *= 2) ;
                           	if (n == 256) n--;
                           	e_hd = n - 1;
                          @@ -5692,7 +5772,7 @@ FRESULT f_fdisk (
                           	mem_set(buf, 0, _MAX_SS);
                           	p = buf + MBR_Table; b_cyl = 0;
                           	for (i = 0; i < 4; i++, p += SZ_PTE) {
                          -		p_cyl = (szt[i] <= 100U) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl;
                          +		p_cyl = (szt[i] <= 100U) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl;	/* Number of cylinders */
                           		if (!p_cyl) continue;
                           		s_part = (DWORD)sz_cyl * b_cyl;
                           		sz_part = (DWORD)sz_cyl * p_cyl;
                          @@ -5702,19 +5782,19 @@ FRESULT f_fdisk (
                           		} else {
                           			s_hd = 0;
                           		}
                          -		e_cyl = b_cyl + p_cyl - 1;
                          +		e_cyl = b_cyl + p_cyl - 1;	/* End cylinder */
                           		if (e_cyl >= tot_cyl) return FR_INVALID_PARAMETER;
                           
                           		/* Set partition table */
                           		p[1] = s_hd;						/* Start head */
                           		p[2] = (BYTE)((b_cyl >> 2) + 1);	/* Start sector */
                           		p[3] = (BYTE)b_cyl;					/* Start cylinder */
                          -		p[4] = 0x06;						/* System type (temporary setting) */
                          +		p[4] = 0x07;						/* System type (temporary setting) */
                           		p[5] = e_hd;						/* End head */
                           		p[6] = (BYTE)((e_cyl >> 2) + 63);	/* End sector */
                           		p[7] = (BYTE)e_cyl;					/* End cylinder */
                           		st_dword(p + 8, s_part);			/* Start sector in LBA */
                          -		st_dword(p + 12, sz_part);			/* Partition size */
                          +		st_dword(p + 12, sz_part);			/* Number of sectors */
                           
                           		/* Next partition */
                           		b_cyl += p_cyl;
                          @@ -5756,17 +5836,17 @@ TCHAR* f_gets (
                           		c = s[0];
                           		if (c >= 0x80) {
                           			if (c < 0xC0) continue;	/* Skip stray trailer */
                          -			if (c < 0xE0) {			/* Two-byte sequence */
                          +			if (c < 0xE0) {			/* Two-byte sequence (0x80-0x7FF) */
                           				f_read(fp, s, 1, &rc);
                           				if (rc != 1) break;
                           				c = (c & 0x1F) << 6 | (s[0] & 0x3F);
                          -				if (c < 0x80) c = '?';
                          +				if (c < 0x80) c = '?';	/* Reject invalid code range */
                           			} else {
                          -				if (c < 0xF0) {		/* Three-byte sequence */
                          +				if (c < 0xF0) {		/* Three-byte sequence (0x800-0xFFFF) */
                           					f_read(fp, s, 2, &rc);
                           					if (rc != 2) break;
                           					c = c << 12 | (s[0] & 0x3F) << 6 | (s[1] & 0x3F);
                          -					if (c < 0x800) c = '?';
                          +					if (c < 0x800) c = '?';	/* Reject invalid code range */
                           				} else {			/* Reject four-byte sequence */
                           					c = '?';
                           				}
                          @@ -5998,17 +6078,23 @@ int f_printf (
                           			while (*p) putc_bfd(&pb, *p++);
                           			while (j++ < w) putc_bfd(&pb, ' ');
                           			continue;
                          +
                           		case 'C' :					/* Character */
                           			putc_bfd(&pb, (TCHAR)va_arg(arp, int)); continue;
                          +
                           		case 'B' :					/* Binary */
                           			r = 2; break;
                          +
                           		case 'O' :					/* Octal */
                           			r = 8; break;
                          +
                           		case 'D' :					/* Signed decimal */
                           		case 'U' :					/* Unsigned decimal */
                           			r = 10; break;
                          +
                           		case 'X' :					/* Hexdecimal */
                           			r = 16; break;
                          +
                           		default:					/* Unknown type (pass-through) */
                           			putc_bfd(&pb, c); continue;
                           		}
                          @@ -6028,7 +6114,9 @@ int f_printf (
                           		if (f & 8) str[i++] = '-';
                           		j = i; d = (f & 1) ? '0' : ' ';
                           		while (!(f & 2) && j++ < w) putc_bfd(&pb, d);
                          -		do putc_bfd(&pb, str[--i]); while (i);
                          +		do {
                          +			putc_bfd(&pb, str[--i]);
                          +		} while (i);
                           		while (j++ < w) putc_bfd(&pb, d);
                           	}
                           
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.h b/firmware/chibios-portapack/ext/fatfs/src/ff.h
                          index 981a88634..f90251980 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ff.h
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.h
                          @@ -1,8 +1,8 @@
                           /*----------------------------------------------------------------------------/
                          -/  FatFs - Generic FAT file system module  R0.12b                             /
                          +/  FatFs - Generic FAT file system module  R0.12c                             /
                           /-----------------------------------------------------------------------------/
                           /
                          -/ Copyright (C) 2016, ChaN, all right reserved.
                          +/ Copyright (C) 2017, ChaN, all right reserved.
                           /
                           / FatFs module is an open source software. Redistribution and use of FatFs in
                           / source and binary forms, with or without modification, are permitted provided
                          @@ -19,7 +19,7 @@
                           
                           
                           #ifndef _FATFS
                          -#define _FATFS	68020	/* Revision ID */
                          +#define _FATFS	68300	/* Revision ID */
                           
                           #ifdef __cplusplus
                           extern "C" {
                          @@ -42,13 +42,6 @@ typedef struct {
                           	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */
                           } PARTITION;
                           extern PARTITION VolToPart[];	/* Volume - Partition resolution table */
                          -#define LD2PD(vol) (VolToPart[vol].pd)	/* Get physical drive number */
                          -#define LD2PT(vol) (VolToPart[vol].pt)	/* Get partition index */
                          -
                          -#else							/* Single partition configuration */
                          -#define LD2PD(vol) (BYTE)(vol)	/* Each logical drive is bound to the same physical drive number */
                          -#define LD2PT(vol) 0			/* Find first valid partition or in SFD */
                          -
                           #endif
                           
                           
                          @@ -140,14 +133,15 @@ typedef struct {
                           	FATFS*	fs;			/* Pointer to the owner file system object */
                           	WORD	id;			/* Owner file system mount ID */
                           	BYTE	attr;		/* Object attribute */
                          -	BYTE	stat;		/* Object chain status (b1-0: =0:not contiguous, =2:contiguous (no data on FAT), =3:got flagmented, b2:sub-directory stretched) */
                          +	BYTE	stat;		/* Object chain status (b1-0: =0:not contiguous, =2:contiguous (no data on FAT), =3:flagmented in this session, b2:sub-directory stretched) */
                           	DWORD	sclust;		/* Object start cluster (0:no cluster or root directory) */
                           	FSIZE_t	objsize;	/* Object size (valid when sclust != 0) */
                           #if _FS_EXFAT
                          -	DWORD	n_cont;		/* Size of coutiguous part, clusters - 1 (valid when stat == 3) */
                          +	DWORD	n_cont;		/* Size of first fragment, clusters - 1 (valid when stat == 3) */
                          +	DWORD	n_frag;		/* Size of last fragment needs to be written (valid when not zero) */
                           	DWORD	c_scl;		/* Containing directory start cluster (valid when sclust != 0) */
                           	DWORD	c_size;		/* b31-b8:Size of containing directory, b7-b0: Chain status (valid when c_scl != 0) */
                          -	DWORD	c_ofs;		/* Offset in the containing directory (valid when sclust != 0) */
                          +	DWORD	c_ofs;		/* Offset in the containing directory (valid when sclust != 0 and non-directory object) */
                           #endif
                           #if _FS_LOCK != 0
                           	UINT	lockid;		/* File lock ID origin from 1 (index of file semaphore table Files[]) */
                          @@ -163,7 +157,7 @@ typedef struct {
                           	BYTE	flag;			/* File status flags */
                           	BYTE	err;			/* Abort flag (error code) */
                           	FSIZE_t	fptr;			/* File read/write pointer (Zeroed on file open) */
                          -	DWORD	clust;			/* Current cluster of fpter (invalid when fprt is 0) */
                          +	DWORD	clust;			/* Current cluster of fpter (invalid when fptr is 0) */
                           	DWORD	sect;			/* Sector number appearing in buf[] (0:invalid) */
                           #if !_FS_READONLY
                           	DWORD	dir_sect;		/* Sector number containing the directory entry */
                          @@ -185,7 +179,7 @@ typedef struct {
                           	_FDID	obj;			/* Object identifier */
                           	DWORD	dptr;			/* Current read/write offset */
                           	DWORD	clust;			/* Current cluster */
                          -	DWORD	sect;			/* Current sector */
                          +	DWORD	sect;			/* Current sector (0:Read operation has terminated) */
                           	BYTE*	dir;			/* Pointer to the directory item in the win[] */
                           	BYTE	fn[12];			/* SFN (in/out) {body[8],ext[3],status[1]} */
                           #if _USE_LFN != 0
                          @@ -285,6 +279,7 @@ TCHAR* f_gets (TCHAR* buff, int len, FIL* fp);						/* Get a string from the fil
                           #define f_size(fp) ((fp)->obj.objsize)
                           #define f_rewind(fp) f_lseek((fp), 0)
                           #define f_rewinddir(dp) f_readdir((dp), 0)
                          +#define f_rmdir(path) f_unlink(path)
                           
                           #ifndef EOF
                           #define EOF (-1)
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ffconf_template.h b/firmware/chibios-portapack/ext/fatfs/src/ffconf_template.h
                          deleted file mode 100644
                          index 8db3d7cb7..000000000
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ffconf_template.h
                          +++ /dev/null
                          @@ -1,265 +0,0 @@
                          -/*---------------------------------------------------------------------------/
                          -/  FatFs - FAT file system module configuration file
                          -/---------------------------------------------------------------------------*/
                          -
                          -#define _FFCONF 80186	/* Revision ID */
                          -
                          -/*---------------------------------------------------------------------------/
                          -/ Function Configurations
                          -/---------------------------------------------------------------------------*/
                          -
                          -#define _FS_READONLY	0
                          -/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
                          -/  Read-only configuration removes writing API functions, f_write(), f_sync(),
                          -/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
                          -/  and optional writing functions as well. */
                          -
                          -
                          -#define _FS_MINIMIZE	0
                          -/* This option defines minimization level to remove some basic API functions.
                          -/
                          -/   0: All basic functions are enabled.
                          -/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
                          -/      are removed.
                          -/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
                          -/   3: f_lseek() function is removed in addition to 2. */
                          -
                          -
                          -#define	_USE_STRFUNC	0
                          -/* This option switches string functions, f_gets(), f_putc(), f_puts() and
                          -/  f_printf().
                          -/
                          -/  0: Disable string functions.
                          -/  1: Enable without LF-CRLF conversion.
                          -/  2: Enable with LF-CRLF conversion. */
                          -
                          -
                          -#define _USE_FIND		0
                          -/* This option switches filtered directory read functions, f_findfirst() and
                          -/  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
                          -
                          -
                          -#define	_USE_MKFS		0
                          -/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */
                          -
                          -
                          -#define	_USE_FASTSEEK	0
                          -/* This option switches fast seek function. (0:Disable or 1:Enable) */
                          -
                          -
                          -#define	_USE_EXPAND		0
                          -/* This option switches f_expand function. (0:Disable or 1:Enable) */
                          -
                          -
                          -#define _USE_CHMOD		0
                          -/* This option switches attribute manipulation functions, f_chmod() and f_utime().
                          -/  (0:Disable or 1:Enable) Also _FS_READONLY needs to be 0 to enable this option. */
                          -
                          -
                          -#define _USE_LABEL		0
                          -/* This option switches volume label functions, f_getlabel() and f_setlabel().
                          -/  (0:Disable or 1:Enable) */
                          -
                          -
                          -#define	_USE_FORWARD	0
                          -/* This option switches f_forward() function. (0:Disable or 1:Enable) */
                          -
                          -
                          -/*---------------------------------------------------------------------------/
                          -/ Locale and Namespace Configurations
                          -/---------------------------------------------------------------------------*/
                          -
                          -#define _CODE_PAGE	932
                          -/* This option specifies the OEM code page to be used on the target system.
                          -/  Incorrect setting of the code page can cause a file open failure.
                          -/
                          -/   1   - ASCII (No extended character. Non-LFN cfg. only)
                          -/   437 - U.S.
                          -/   720 - Arabic
                          -/   737 - Greek
                          -/   771 - KBL
                          -/   775 - Baltic
                          -/   850 - Latin 1
                          -/   852 - Latin 2
                          -/   855 - Cyrillic
                          -/   857 - Turkish
                          -/   860 - Portuguese
                          -/   861 - Icelandic
                          -/   862 - Hebrew
                          -/   863 - Canadian French
                          -/   864 - Arabic
                          -/   865 - Nordic
                          -/   866 - Russian
                          -/   869 - Greek 2
                          -/   932 - Japanese (DBCS)
                          -/   936 - Simplified Chinese (DBCS)
                          -/   949 - Korean (DBCS)
                          -/   950 - Traditional Chinese (DBCS)
                          -*/
                          -
                          -
                          -#define	_USE_LFN	0
                          -#define	_MAX_LFN	255
                          -/* The _USE_LFN switches the support of long file name (LFN).
                          -/
                          -/   0: Disable support of LFN. _MAX_LFN has no effect.
                          -/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
                          -/   2: Enable LFN with dynamic working buffer on the STACK.
                          -/   3: Enable LFN with dynamic working buffer on the HEAP.
                          -/
                          -/  To enable the LFN, Unicode handling functions (option/unicode.c) must be added
                          -/  to the project. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and
                          -/  additional 608 bytes at exFAT enabled. _MAX_LFN can be in range from 12 to 255.
                          -/  It should be set 255 to support full featured LFN operations.
                          -/  When use stack for the working buffer, take care on stack overflow. When use heap
                          -/  memory for the working buffer, memory management functions, ff_memalloc() and
                          -/  ff_memfree(), must be added to the project. */
                          -
                          -
                          -#define	_LFN_UNICODE	0
                          -/* This option switches character encoding on the API. (0:ANSI/OEM or 1:UTF-16)
                          -/  To use Unicode string for the path name, enable LFN and set _LFN_UNICODE = 1.
                          -/  This option also affects behavior of string I/O functions. */
                          -
                          -
                          -#define _STRF_ENCODE	3
                          -/* When _LFN_UNICODE == 1, this option selects the character encoding ON THE FILE to
                          -/  be read/written via string I/O functions, f_gets(), f_putc(), f_puts and f_printf().
                          -/
                          -/  0: ANSI/OEM
                          -/  1: UTF-16LE
                          -/  2: UTF-16BE
                          -/  3: UTF-8
                          -/
                          -/  This option has no effect when _LFN_UNICODE == 0. */
                          -
                          -
                          -#define _FS_RPATH	0
                          -/* This option configures support of relative path.
                          -/
                          -/   0: Disable relative path and remove related functions.
                          -/   1: Enable relative path. f_chdir() and f_chdrive() are available.
                          -/   2: f_getcwd() function is available in addition to 1.
                          -*/
                          -
                          -
                          -/*---------------------------------------------------------------------------/
                          -/ Drive/Volume Configurations
                          -/---------------------------------------------------------------------------*/
                          -
                          -#define _VOLUMES	1
                          -/* Number of volumes (logical drives) to be used. */
                          -
                          -
                          -#define _STR_VOLUME_ID	0
                          -#define _VOLUME_STRS	"RAM","NAND","CF","SD","SD2","USB","USB2","USB3"
                          -/* _STR_VOLUME_ID switches string support of volume ID.
                          -/  When _STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive
                          -/  number in the path name. _VOLUME_STRS defines the drive ID strings for each
                          -/  logical drives. Number of items must be equal to _VOLUMES. Valid characters for
                          -/  the drive ID strings are: A-Z and 0-9. */
                          -
                          -
                          -#define	_MULTI_PARTITION	0
                          -/* This option switches support of multi-partition on a physical drive.
                          -/  By default (0), each logical drive number is bound to the same physical drive
                          -/  number and only an FAT volume found on the physical drive will be mounted.
                          -/  When multi-partition is enabled (1), each logical drive number can be bound to
                          -/  arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
                          -/  funciton will be available. */
                          -
                          -
                          -#define	_MIN_SS		512
                          -#define	_MAX_SS		512
                          -/* These options configure the range of sector size to be supported. (512, 1024,
                          -/  2048 or 4096) Always set both 512 for most systems, all type of memory cards and
                          -/  harddisk. But a larger value may be required for on-board flash memory and some
                          -/  type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured
                          -/  to variable sector size and GET_SECTOR_SIZE command must be implemented to the
                          -/  disk_ioctl() function. */
                          -
                          -
                          -#define	_USE_TRIM	0
                          -/* This option switches support of ATA-TRIM. (0:Disable or 1:Enable)
                          -/  To enable Trim function, also CTRL_TRIM command should be implemented to the
                          -/  disk_ioctl() function. */
                          -
                          -
                          -#define _FS_NOFSINFO	0
                          -/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
                          -/  option, and f_getfree() function at first time after volume mount will force
                          -/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
                          -/
                          -/  bit0=0: Use free cluster count in the FSINFO if available.
                          -/  bit0=1: Do not trust free cluster count in the FSINFO.
                          -/  bit1=0: Use last allocated cluster number in the FSINFO if available.
                          -/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
                          -*/
                          -
                          -
                          -
                          -/*---------------------------------------------------------------------------/
                          -/ System Configurations
                          -/---------------------------------------------------------------------------*/
                          -
                          -#define	_FS_TINY	0
                          -/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
                          -/  At the tiny configuration, size of the file object (FIL) is reduced _MAX_SS bytes.
                          -/  Instead of private sector buffer eliminated from the file object, common sector
                          -/  buffer in the file system object (FATFS) is used for the file data transfer. */
                          -
                          -
                          -#define _FS_EXFAT	0
                          -/* This option switches support of exFAT file system in addition to the traditional
                          -/  FAT file system. (0:Disable or 1:Enable) To enable exFAT, also LFN must be enabled.
                          -/  Note that enabling exFAT discards C89 compatibility. */
                          -
                          -
                          -#define _FS_NORTC	0
                          -#define _NORTC_MON	1
                          -#define _NORTC_MDAY	1
                          -#define _NORTC_YEAR	2016
                          -/* The option _FS_NORTC switches timestamp functiton. If the system does not have
                          -/  any RTC function or valid timestamp is not needed, set _FS_NORTC = 1 to disable
                          -/  the timestamp function. All objects modified by FatFs will have a fixed timestamp
                          -/  defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR in local time.
                          -/  To enable timestamp function (_FS_NORTC = 0), get_fattime() function need to be
                          -/  added to the project to get current time form real-time clock. _NORTC_MON,
                          -/  _NORTC_MDAY and _NORTC_YEAR have no effect. 
                          -/  These options have no effect at read-only configuration (_FS_READONLY = 1). */
                          -
                          -
                          -#define	_FS_LOCK	0
                          -/* The option _FS_LOCK switches file lock function to control duplicated file open
                          -/  and illegal operation to open objects. This option must be 0 when _FS_READONLY
                          -/  is 1.
                          -/
                          -/  0:  Disable file lock function. To avoid volume corruption, application program
                          -/      should avoid illegal open, remove and rename to the open objects.
                          -/  >0: Enable file lock function. The value defines how many files/sub-directories
                          -/      can be opened simultaneously under file lock control. Note that the file
                          -/      lock control is independent of re-entrancy. */
                          -
                          -
                          -#define _FS_REENTRANT	0
                          -#define _FS_TIMEOUT		1000
                          -#define	_SYNC_t			HANDLE
                          -/* The option _FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
                          -/  module itself. Note that regardless of this option, file access to different
                          -/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
                          -/  and f_fdisk() function, are always not re-entrant. Only file/directory access
                          -/  to the same volume is under control of this function.
                          -/
                          -/   0: Disable re-entrancy. _FS_TIMEOUT and _SYNC_t have no effect.
                          -/   1: Enable re-entrancy. Also user provided synchronization handlers,
                          -/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
                          -/      function, must be added to the project. Samples are available in
                          -/      option/syscall.c.
                          -/
                          -/  The _FS_TIMEOUT defines timeout period in unit of time tick.
                          -/  The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
                          -/  SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
                          -/  included somewhere in the scope of ff.c. */
                          -
                          -
                          -/*--- End of configuration options ---*/
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/integer.h b/firmware/chibios-portapack/ext/fatfs/src/integer.h
                          index 4660ed624..d8e911cf1 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/integer.h
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/integer.h
                          @@ -30,7 +30,7 @@ typedef unsigned short	WCHAR;
                           typedef long			LONG;
                           typedef unsigned long	DWORD;
                           
                          -/* This type MUST be 64-bit (Remove this for C89 compatibility) */
                          +/* This type MUST be 64-bit (Remove this for ANSI C (C89) compatibility) */
                           typedef unsigned long long QWORD;
                           
                           #endif
                          
                          From fd8f5e62e1cbfd9a108c2e6e125475c035452ea8 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 3 May 2017 12:51:24 +0100
                          Subject: [PATCH 09/39] FatFs: Apply patch ff_12c_p1.diff.
                          
                          ---
                           firmware/chibios-portapack/ext/fatfs/src/ff.c | 1 +
                           1 file changed, 1 insertion(+)
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          index faac347b2..86cdf239a 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          @@ -3439,6 +3439,7 @@ FRESULT f_open (
                           				fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus);	/* Get object allocation info */
                           				fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize);
                           				fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2;
                          +				fp->obj.n_frag = 0;
                           			} else
                           #endif
                           			{
                          
                          From dfc1eab4ae572e418ef90cd8a0cb8edbfa2d20bf Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 3 May 2017 12:52:59 +0100
                          Subject: [PATCH 10/39] FatFs: Apply patch ff_12c_p2.diff.
                          
                          ---
                           firmware/chibios-portapack/ext/fatfs/src/ff.c | 18 ++++++++++++++++--
                           1 file changed, 16 insertions(+), 2 deletions(-)
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          index 86cdf239a..2962d5e5c 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          @@ -1332,8 +1332,22 @@ FRESULT remove_chain (	/* FR_OK(0):succeeded, !=0:error */
                           		if (pclst == 0) {	/* Does the object have no chain? */
                           			obj->stat = 0;		/* Change the object status 'initial' */
                           		} else {
                          -			if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) {	/* Did the chain get contiguous? */
                          -				obj->stat = 2;	/* Change the object status 'contiguous' */
                          +			if (obj->stat == 0) {	/* Is it a fragmented chain from the beginning of this session? */
                          +				clst = obj->sclust;		/* Follow the chain to check if it gets contiguous */
                          +				while (clst != pclst) {
                          +					nxt = get_fat(obj, clst);
                          +					if (nxt < 2) return FR_INT_ERR;
                          +					if (nxt == 0xFFFFFFFF) return FR_DISK_ERR;
                          +					if (nxt != clst + 1) break;	/* Not contiguous? */
                          +					clst++;
                          +				}
                          +				if (clst == pclst) {	/* Has the chain got contiguous again? */
                          +					obj->stat = 2;		/* Change the chain status 'contiguous' */
                          +				}
                          +			} else {
                          +				if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) {	/* Was the chain fragmented in this session and got contiguous again? */
                          +					obj->stat = 2;	/* Change the chain status 'contiguous' */
                          +				}
                           			}
                           		}
                           	}
                          
                          From f88e27bd3fc3ba1d931f2e6a8b094ea8f1788e6d Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 3 May 2017 12:53:52 +0100
                          Subject: [PATCH 11/39] FatFs: Apply patch ff_12c_p3.diff.
                          
                          ---
                           firmware/chibios-portapack/ext/fatfs/src/ff.c | 26 +++++++++++--------
                           1 file changed, 15 insertions(+), 11 deletions(-)
                          
                          diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          index 2962d5e5c..382da8006 100644
                          --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c
                          @@ -2051,6 +2051,7 @@ FRESULT load_obj_dir (
                           	dp->obj.sclust = obj->c_scl;
                           	dp->obj.stat = (BYTE)obj->c_size;
                           	dp->obj.objsize = obj->c_size & 0xFFFFFF00;
                          +	dp->obj.n_frag = 0;
                           	dp->blk_ofs = obj->c_ofs;
                           
                           	res = dir_sdi(dp, dp->blk_ofs);	/* Goto object's entry block */
                          @@ -2326,19 +2327,22 @@ FRESULT dir_register (	/* FR_OK:succeeded, FR_DENIED:no free entry or too many S
                           		if (res != FR_OK) return res;
                           		dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1);	/* Set the allocated entry block offset */
                           
                          -		if (dp->obj.sclust != 0 && (dp->obj.stat & 4)) {	/* Has the sub-directory been stretched? */
                          -			dp->obj.objsize += (DWORD)fs->csize * SS(fs);	/* Increase the directory size by cluster size */
                          -			res = fill_first_frag(&dp->obj);				/* Fill first fragment on the FAT if needed */
                          +		if (dp->obj.stat & 4) {			/* Has the directory been stretched? */
                          +			dp->obj.stat &= ~4;
                          +			res = fill_first_frag(&dp->obj);	/* Fill the first fragment on the FAT if needed */
                           			if (res != FR_OK) return res;
                          -			res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF);	/* Fill last fragment on the FAT if needed */
                          -			if (res != FR_OK) return res;
                          -			res = load_obj_dir(&dj, &dp->obj);				/* Load the object status */
                          -			if (res != FR_OK) return res;
                          -			st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize);		/* Update the allocation status */
                          -			st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize);
                          -			fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1;
                          -			res = store_xdir(&dj);							/* Store the object status */
                          +			res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF);	/* Fill the last fragment on the FAT if needed */
                           			if (res != FR_OK) return res;
                          +			if (dp->obj.sclust != 0) {		/* Is it a sub directory? */
                          +				res = load_obj_dir(&dj, &dp->obj);	/* Load the object status */
                          +				if (res != FR_OK) return res;
                          +				dp->obj.objsize += (DWORD)fs->csize * SS(fs);			/* Increase the directory size by cluster size */
                          +				st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize);	/* Update the allocation status */
                          +				st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize);
                          +				fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1;
                          +				res = store_xdir(&dj);				/* Store the object status */
                          +				if (res != FR_OK) return res;
                          +			}
                           		}
                           
                           		create_xdir(fs->dirbuf, fs->lfnbuf);	/* Create on-memory directory block to be written later */
                          
                          From 556085b3e37ddde74a7419d2357fe466c6b4bafc Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Mon, 22 May 2017 14:20:49 -0700
                          Subject: [PATCH 12/39] I2S: Enable TX_WS output pin's input buffer.
                          
                          This permits receipt of TX_WS as RX_WS for the receive side of the I2S peripheral, and was why I got no RX samples when testing microphone input.
                          ---
                           firmware/common/pins.hpp | 2 +-
                           1 file changed, 1 insertion(+), 1 deletion(-)
                          
                          diff --git a/firmware/common/pins.hpp b/firmware/common/pins.hpp
                          index 76f1761dd..166cd1b02 100644
                          --- a/firmware/common/pins.hpp
                          +++ b/firmware/common/pins.hpp
                          @@ -79,7 +79,7 @@ constexpr Pin pins[] = {
                           	[P2_12] = {  2, 12, { .mode=0, .pd=0, .pu=0, .fast=0, .input=0, .ifilt=1 } }, /* !RX_AMP_PWR/P52: 10K PU, Q1.G(I), power to U13 (RX amp) */
                           	[P2_13] = {  2, 13, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* P2_13: PortaPack P2_13/DIR */
                           	[P3_0]  = {  3,  0, { .mode=2, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_TX_SCK: PortaPack I2S0_TX_SCK(I) */
                          -	[P3_1]  = {  3,  1, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_WS: PortaPack I2S0_TX_WS(I) */
                          +	[P3_1]  = {  3,  1, { .mode=0, .pd=0, .pu=1, .fast=0, .input=1, .ifilt=1 } }, /* I2S0_RX_WS: PortaPack I2S0_TX_WS(I). Input enabled to fold back into RX. */
                           	[P3_2]  = {  3,  2, { .mode=0, .pd=0, .pu=1, .fast=0, .input=0, .ifilt=1 } }, /* I2S0_RX_SDA: PortaPack I2S0_TX_SDA(I) */
                           	//[P3_3]  = {  3,  3, { .mode=3, .pd=1, .pu=0, .fast=1, .input=1, .ifilt=0 } }, /* SPIFI_SCK: W25Q80BV.CLK(I), enable input buffer for timing feedback */
                           	//[P3_4]  = {  3,  4, { .mode=3, .pd=0, .pu=1, .fast=1, .input=1, .ifilt=0 } }, /* SPIFI_SIO3/P82: W25Q80BV.HOLD(IO) */
                          
                          From 6ef8b19bf104a228eefccdd41a558fa91489f0d7 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 24 May 2017 15:42:44 -0700
                          Subject: [PATCH 13/39] Move some GPDMA configuration to application processor.
                          
                          ---
                           firmware/application/portapack.cpp | 6 ++++++
                           firmware/baseband/baseband.cpp     | 2 --
                           2 files changed, 6 insertions(+), 2 deletions(-)
                          
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 7d93bd406..d4d73cd3f 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -21,6 +21,7 @@
                           
                           #include "portapack.hpp"
                           #include "portapack_hal.hpp"
                          +#include "portapack_dma.hpp"
                           #include "portapack_persistent_memory.hpp"
                           
                           #include "hackrf_hal.hpp"
                          @@ -161,9 +162,14 @@ void init() {
                           	radio::init();
                           
                           	touch::adc::init();
                          +
                          +	LPC_CREG->DMAMUX = portapack::gpdma_mux;
                          +	gpdma::controller.enable();
                           }
                           
                           void shutdown() {
                          +	gpdma::controller.disable();
                          +
                           	display.shutdown();
                           	
                           	radio::disable();
                          diff --git a/firmware/baseband/baseband.cpp b/firmware/baseband/baseband.cpp
                          index 284b94711..198f1087f 100644
                          --- a/firmware/baseband/baseband.cpp
                          +++ b/firmware/baseband/baseband.cpp
                          @@ -35,8 +35,6 @@ static void init() {
                           	audio::dma::configure();
                           	audio::dma::enable();
                           
                          -	LPC_CREG->DMAMUX = portapack::gpdma_mux;
                          -	gpdma::controller.enable();
                           	nvicEnableVector(DMA_IRQn, CORTEX_PRIORITY_MASK(LPC_DMA_IRQ_PRIORITY));
                           }
                           
                          
                          From 5cb71d787e96ccce32bce9f87cb573e820bdabdf Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 26 May 2017 11:23:47 -0700
                          Subject: [PATCH 14/39] Audio DMA: Fix cut-and-paste error
                          
                          rx_empy_buffer() was returning the peripheral address, not the buffer address.
                          ---
                           firmware/baseband/audio_dma.cpp | 2 +-
                           1 file changed, 1 insertion(+), 1 deletion(-)
                          
                          diff --git a/firmware/baseband/audio_dma.cpp b/firmware/baseband/audio_dma.cpp
                          index 60e85096e..a9ddf7680 100644
                          --- a/firmware/baseband/audio_dma.cpp
                          +++ b/firmware/baseband/audio_dma.cpp
                          @@ -228,7 +228,7 @@ buffer_t rx_empty_buffer() {
                           	if( next_lli ) {
                           		const size_t next_index = next_lli - &lli_rx_loop[0];
                           		const size_t free_index = (next_index + transfers_per_buffer - 2) & transfers_mask;
                          -		return { reinterpret_cast(lli_rx_loop[free_index].srcaddr), transfer_samples };
                          +		return { reinterpret_cast(lli_rx_loop[free_index].destaddr), transfer_samples };
                           	} else {
                           		return { nullptr, 0 };
                           	}
                          
                          From b3ee884f16dde90b600dc69d1414cf3c89965b44 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 26 May 2017 16:50:34 -0700
                          Subject: [PATCH 15/39] I2S RX: Set RX SDA pin to correct SCUMUX mode.
                          
                          It's left in GPIO mode ordinarily, because of CPLD programming earlier in boot-up.
                          ---
                           firmware/application/audio.cpp    | 4 ++++
                           firmware/common/portapack_hal.hpp | 6 ++++++
                           2 files changed, 10 insertions(+)
                          
                          diff --git a/firmware/application/audio.cpp b/firmware/application/audio.cpp
                          index ac04e106c..c732fcbbb 100644
                          --- a/firmware/application/audio.cpp
                          +++ b/firmware/application/audio.cpp
                          @@ -27,6 +27,7 @@ using portapack::clock_manager;
                           
                           #include "wm8731.hpp"
                           using wolfson::wm8731::WM8731;
                          +#include "portapack_hal.hpp"
                           
                           #include "i2s.hpp"
                           using namespace lpc43xx;
                          @@ -160,6 +161,9 @@ void init() {
                           		i2s0_config_rx,
                           		i2s0_config_dma
                           	);
                          +
                          +	// Set pin mode, since it's likely GPIO (as left after CPLD JTAG interactions).
                          +	portapack::pin_i2s0_rx_sda.mode(3);
                           }
                           
                           void shutdown() {
                          diff --git a/firmware/common/portapack_hal.hpp b/firmware/common/portapack_hal.hpp
                          index 00098f23c..716e86789 100644
                          --- a/firmware/common/portapack_hal.hpp
                          +++ b/firmware/common/portapack_hal.hpp
                          @@ -56,6 +56,12 @@ constexpr GPIO gpio_cpld_tdo = gpio[GPIO1_8];	// P1_5
                           constexpr GPIO gpio_cpld_tck = gpio[GPIO3_0];	// P6_1
                           constexpr GPIO gpio_cpld_tdi = gpio[GPIO3_1];	// P6_2
                           
                          +constexpr auto pin_i2s0_mclk   = pins[CLK2];
                          +constexpr auto pin_i2s0_sck    = pins[P3_0];
                          +constexpr auto pin_i2s0_ws     = pins[P3_1];
                          +constexpr auto pin_i2s0_tx_sda = pins[P3_2];
                          +constexpr auto pin_i2s0_rx_sda = pins[P6_2];
                          +
                           } /* namespace portapack */
                           
                           #endif/*__PORTAPACK_HAL_H__*/
                          
                          From 5da64ab069518d25de8a1acddd32594487df5cfe Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:12:56 -0700
                          Subject: [PATCH 16/39] Modify registers widget to simplify configuration.
                          
                          Now specify number of registers and register bits, and the widget figures out the rest.
                          ---
                           firmware/application/ui_debug.cpp | 22 +++++++++++-----------
                           firmware/application/ui_debug.hpp | 24 +++++++++++++++++-------
                           2 files changed, 28 insertions(+), 18 deletions(-)
                          
                          diff --git a/firmware/application/ui_debug.cpp b/firmware/application/ui_debug.cpp
                          index 11aff2190..907e85b46 100644
                          --- a/firmware/application/ui_debug.cpp
                          +++ b/firmware/application/ui_debug.cpp
                          @@ -173,12 +173,12 @@ void RegistersWidget::paint(Painter& painter) {
                           void RegistersWidget::draw_legend(const Coord left, Painter& painter) {
                           	const auto pos = screen_pos();
                           
                          -	for(int i=0; i(
                          -			"RFFC5072", RegistersWidgetConfig { 31, 2, 4, 4 },
                          +			"RFFC5072", RegistersWidgetConfig { 31, 16 },
                           			[](const size_t register_number) { return radio::debug::first_if::register_read(register_number); }
                           		); } },
                           		{ "MAX2837",     [&nav](){ nav.push(
                          -			"MAX2837", RegistersWidgetConfig { 32, 2, 3, 4 },
                          +			"MAX2837", RegistersWidgetConfig { 32, 10 },
                           			[](const size_t register_number) { return radio::debug::second_if::register_read(register_number); }
                           		); } },
                           		{ "Si5351C",     [&nav](){ nav.push(
                          -			"Si5351C", RegistersWidgetConfig { 96, 2, 2, 8 },
                          +			"Si5351C", RegistersWidgetConfig { 96, 8 },
                           			[](const size_t register_number) { return portapack::clock_generator.read_register(register_number); }
                           		); } },
                          -		{ "WM8731",      [&nav](){ nav.push(
                          -			"WM8731", RegistersWidgetConfig { audio::debug::reg_count(), 1, 3, 4 },
                          +		{ "WM8731",      [&nav](){ nav.push( 
                          +		  "WM8731", RegistersWidgetConfig { audio::debug::reg_count(), 9 }, 
                           			[](const size_t register_number) { return audio::debug::reg_read(register_number); }
                           		); } },
                           	});
                          diff --git a/firmware/application/ui_debug.hpp b/firmware/application/ui_debug.hpp
                          index 33108dcc1..67251ce38 100644
                          --- a/firmware/application/ui_debug.hpp
                          +++ b/firmware/application/ui_debug.hpp
                          @@ -131,20 +131,30 @@ private:
                           
                           struct RegistersWidgetConfig {
                           	int registers_count;
                          -	int legend_length;
                          -	int value_length;
                          -	int registers_per_row;
                          +	int register_bits;
                          +
                          +	constexpr int legend_length() const {
                          +		return (registers_count >= 0x10) ? 2 : 1;
                          +	}
                           
                           	constexpr int legend_width() const {
                          -		return legend_length * 8;
                          +		return legend_length() * 8;
                          +	}
                          +
                          +	constexpr int value_length() const {
                          +		return (register_bits + 3) / 4;
                           	}
                           
                           	constexpr int value_width() const {
                          -		return value_length * 8;
                          +		return value_length() * 8;
                          +	}
                          +
                          +	constexpr int registers_per_row() const {
                          +		return (value_length() >= 3) ? 4 : 8;
                           	}
                           
                           	constexpr int registers_row_length() const {
                          -		return (registers_per_row * (value_length + 1)) - 1;
                          +		return (registers_per_row() * (value_length() + 1)) - 1;
                           	}
                           
                           	constexpr int registers_row_width() const {
                          @@ -156,7 +166,7 @@ struct RegistersWidgetConfig {
                           	}
                           
                           	constexpr int rows() const {
                          -		return registers_count / registers_per_row;
                          +		return registers_count / registers_per_row();
                           	}
                           };
                           
                          
                          From da4bee6cc695384c4426efcb9716c88b9b3733ce Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:21:51 -0700
                          Subject: [PATCH 17/39] Audio: Introduce Codec abstraction.
                          
                          Now that we have two hardware variants with different audio codecs.
                          ---
                           firmware/application/audio.hpp | 25 +++++++++++++++++++++++++
                           1 file changed, 25 insertions(+)
                          
                          diff --git a/firmware/application/audio.hpp b/firmware/application/audio.hpp
                          index e3d7544f5..8ed545e4c 100644
                          --- a/firmware/application/audio.hpp
                          +++ b/firmware/application/audio.hpp
                          @@ -25,9 +25,34 @@
                           #include "volume.hpp"
                           
                           #include 
                          +#include 
                          +
                          +#include 
                           
                           namespace audio {
                           
                          +class Codec {
                          +public:
                          +	virtual ~Codec() { }
                          +
                          +	virtual std::string name() const = 0;
                          +
                          +	virtual bool reset() = 0;
                          +	virtual void init() = 0;
                          +
                          +	virtual void headphone_enable() = 0;
                          +	virtual void headphone_disable() = 0;
                          +	virtual volume_range_t headphone_gain_range() const = 0;
                          +	virtual void set_headphone_volume(const volume_t volume) = 0;
                          +
                          +	virtual void microphone_enable() = 0;
                          +	virtual void microphone_disable() = 0;
                          +
                          +	virtual size_t reg_count() const = 0;
                          +	virtual size_t reg_bits() const = 0;
                          +	virtual uint32_t reg_read(const size_t register_number) = 0;
                          +};
                          +
                           namespace output {
                           
                           void start();
                          
                          From f6e1e78e8aaadb25e2fc7ff236d7e1d4a5bb19cf Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:28:00 -0700
                          Subject: [PATCH 18/39] WM8731: Return bool from reset() and low-level
                           write()s.
                          
                          ---
                           firmware/common/wm8731.cpp | 12 ++++++------
                           firmware/common/wm8731.hpp |  6 +++---
                           2 files changed, 9 insertions(+), 9 deletions(-)
                          
                          diff --git a/firmware/common/wm8731.cpp b/firmware/common/wm8731.cpp
                          index f5c454c36..b0b271513 100644
                          --- a/firmware/common/wm8731.cpp
                          +++ b/firmware/common/wm8731.cpp
                          @@ -87,21 +87,21 @@ void WM8731::init() {
                           	headphone_mute();
                           }
                           
                          -void WM8731::reset() {
                          -	write(0x0f, 0);
                          +bool WM8731::reset() {
                          +	return write(0x0f, 0);
                           }
                           
                          -void WM8731::write(const Register reg) {
                          -	write(toUType(reg), map.w[toUType(reg)]);
                          +bool WM8731::write(const Register reg) {
                          +	return write(toUType(reg), map.w[toUType(reg)]);
                           }
                           
                          -void WM8731::write(const address_t reg_address, const reg_t value) {
                          +bool WM8731::write(const address_t reg_address, const reg_t value) {
                           	const uint16_t word = (reg_address << 9) | value;
                           	const std::array values {
                           		static_cast(word >> 8),
                           		static_cast(word & 0xff),
                           	};
                          -	bus.transmit(bus_address, values.data(), values.size());
                          +	return bus.transmit(bus_address, values.data(), values.size());
                           }
                           
                           reg_t WM8731::read(const address_t reg_address) {
                          diff --git a/firmware/common/wm8731.hpp b/firmware/common/wm8731.hpp
                          index a81e819cc..87790b865 100644
                          --- a/firmware/common/wm8731.hpp
                          +++ b/firmware/common/wm8731.hpp
                          @@ -290,7 +290,7 @@ public:
                           
                           	void init();
                           
                          -	void reset();
                          +	bool reset();
                           
                           	void set_line_in_volume(const volume_t volume) {
                           		const auto normalized = line_in_gain_range.normalize(volume);
                          @@ -338,9 +338,9 @@ private:
                           	const I2C::address_t bus_address;
                           	RegisterMap map { default_after_reset };
                           
                          -	void write(const Register reg);
                          +	bool write(const Register reg);
                           	
                          -	void write(const address_t reg_address, const reg_t value);
                          +	bool write(const address_t reg_address, const reg_t value);
                           
                           	void write(const LeftLineIn value);
                           	void write(const RightLineIn value);
                          
                          From 8f5555b052788679db705d19573b4729843a2169 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:32:32 -0700
                          Subject: [PATCH 19/39] WM8731: Store headphone volume for mute() function.
                          
                          So when unmuted, previous volume can be restored.
                          ---
                           firmware/common/wm8731.hpp | 2 ++
                           1 file changed, 2 insertions(+)
                          
                          diff --git a/firmware/common/wm8731.hpp b/firmware/common/wm8731.hpp
                          index 87790b865..1f6b3e537 100644
                          --- a/firmware/common/wm8731.hpp
                          +++ b/firmware/common/wm8731.hpp
                          @@ -307,6 +307,7 @@ public:
                           
                           	void set_headphone_volume(const volume_t volume) {
                           		const auto normalized = headphone_gain_range.normalize(volume);
                          +		headphone_volume = volume;
                           		auto n = normalized.centibel() / 10;
                           
                           		write(LeftHeadphoneOut {
                          @@ -337,6 +338,7 @@ private:
                           	I2C& bus;
                           	const I2C::address_t bus_address;
                           	RegisterMap map { default_after_reset };
                          +	volume_t headphone_volume = -60.0_dB;
                           
                           	bool write(const Register reg);
                           	
                          
                          From 37c058354e4c46c1c5394af111b128c366a1c8e3 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:34:16 -0700
                          Subject: [PATCH 20/39] WM8731: Add method to detect codec is present.
                          
                          Used to determine PortaPack hardware version.
                          ---
                           firmware/common/wm8731.cpp | 4 ++++
                           firmware/common/wm8731.hpp | 2 ++
                           2 files changed, 6 insertions(+)
                          
                          diff --git a/firmware/common/wm8731.cpp b/firmware/common/wm8731.cpp
                          index b0b271513..e4c01b1bb 100644
                          --- a/firmware/common/wm8731.cpp
                          +++ b/firmware/common/wm8731.cpp
                          @@ -87,6 +87,10 @@ void WM8731::init() {
                           	headphone_mute();
                           }
                           
                          +bool WM8731::detected() {
                          +	return reset();
                          +}
                          +
                           bool WM8731::reset() {
                           	return write(0x0f, 0);
                           }
                          diff --git a/firmware/common/wm8731.hpp b/firmware/common/wm8731.hpp
                          index 1f6b3e537..bca090e91 100644
                          --- a/firmware/common/wm8731.hpp
                          +++ b/firmware/common/wm8731.hpp
                          @@ -292,6 +292,8 @@ public:
                           
                           	bool reset();
                           
                          +	bool detected();
                          +
                           	void set_line_in_volume(const volume_t volume) {
                           		const auto normalized = line_in_gain_range.normalize(volume);
                           		auto n = normalized.centibel() / 15;
                          
                          From bec626e29fe534a67cb430a5cf8e491014d1940a Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:42:12 -0700
                          Subject: [PATCH 21/39] WM8731: Add Codec abstraction.
                          
                          ---
                           firmware/application/audio.cpp     | 39 +++++++++++---------
                           firmware/application/audio.hpp     |  8 +++--
                           firmware/application/portapack.cpp |  7 +++-
                           firmware/application/ui_debug.cpp  |  4 +--
                           firmware/common/wm8731.cpp         |  2 +-
                           firmware/common/wm8731.hpp         | 57 +++++++++++++++++++++++-------
                           6 files changed, 81 insertions(+), 36 deletions(-)
                          
                          diff --git a/firmware/application/audio.cpp b/firmware/application/audio.cpp
                          index c732fcbbb..7858376ff 100644
                          --- a/firmware/application/audio.cpp
                          +++ b/firmware/application/audio.cpp
                          @@ -22,11 +22,8 @@
                           #include "audio.hpp"
                           
                           #include "portapack.hpp"
                          -using portapack::i2c0;
                           using portapack::clock_manager;
                           
                          -#include "wm8731.hpp"
                          -using wolfson::wm8731::WM8731;
                           #include "portapack_hal.hpp"
                           
                           #include "i2s.hpp"
                          @@ -98,9 +95,7 @@ constexpr i2s::ConfigDMA i2s0_config_dma {
                           	},
                           };
                           
                          -constexpr uint8_t wm8731_i2c_address = 0x1a;
                          -
                          -WM8731 audio_codec { i2c0, wm8731_i2c_address };
                          +static audio::Codec* audio_codec = nullptr;
                           
                           } /* namespace */
                           
                          @@ -118,12 +113,12 @@ void stop() {
                           
                           void mute() {
                           	i2s::i2s0::tx_mute();
                          -
                          -	audio_codec.headphone_mute();
                          +	audio_codec->headphone_disable();
                           }
                           
                           void unmute() {
                           	i2s::i2s0::tx_unmute();
                          +	audio_codec->headphone_enable();
                           }
                           
                           } /* namespace output */
                          @@ -131,30 +126,40 @@ void unmute() {
                           namespace headphone {
                           
                           volume_range_t volume_range() {
                          -	return wolfson::wm8731::headphone_gain_range;
                          +	return audio_codec->headphone_gain_range();
                           }
                           
                           void set_volume(const volume_t volume) {
                          -	audio_codec.set_headphone_volume(volume);
                          +	audio_codec->set_headphone_volume(volume);
                           }
                           
                           } /* namespace headphone */
                           
                           namespace debug {
                           
                          -int reg_count() {
                          -	return wolfson::wm8731::reg_count;
                          +size_t reg_count() {
                          +	return audio_codec->reg_count();
                           }
                           
                          -uint16_t reg_read(const int register_number) {
                          -	return audio_codec.read(register_number);
                          +uint32_t reg_read(const size_t register_number) {
                          +	return audio_codec->reg_read(register_number);
                          +}
                          +
                          +std::string codec_name() {
                          +	return audio_codec->name();
                          +}
                          +
                          +size_t reg_bits() {
                          +	return audio_codec->reg_bits();
                           }
                           
                           } /* namespace debug */
                           
                          -void init() {
                          +void init(audio::Codec* const codec) {
                          +	audio_codec = codec;
                          +
                           	clock_manager.start_audio_pll();
                          -	audio_codec.init();
                          +	audio_codec->init();
                           
                           	i2s::i2s0::configure(
                           		i2s0_config_tx,
                          @@ -167,7 +172,7 @@ void init() {
                           }
                           
                           void shutdown() {
                          -	audio_codec.reset();
                          +	audio_codec->reset();
                           	output::stop();
                           }
                           
                          diff --git a/firmware/application/audio.hpp b/firmware/application/audio.hpp
                          index 8ed545e4c..94f193cee 100644
                          --- a/firmware/application/audio.hpp
                          +++ b/firmware/application/audio.hpp
                          @@ -73,12 +73,14 @@ void set_volume(const volume_t volume);
                           
                           namespace debug {
                           
                          -int reg_count();
                          -uint16_t reg_read(const int register_number);
                          +size_t reg_count();
                          +uint32_t reg_read(const size_t register_number);
                          +std::string codec_name();
                          +size_t reg_bits();
                           
                           } /* namespace debug */
                           
                          -void init();
                          +void init(audio::Codec* const codec);
                           void shutdown();
                           
                           enum class Rate {
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index d4d73cd3f..60545ae92 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -33,6 +33,9 @@ using namespace hackrf::one;
                           #include "touch_adc.hpp"
                           #include "audio.hpp"
                           
                          +#include "wm8731.hpp"
                          +using wolfson::wm8731::WM8731;
                          +
                           #include "cpld_update.hpp"
                           
                           namespace portapack {
                          @@ -61,6 +64,8 @@ ClockManager clock_manager {
                           	i2c0, clock_generator
                           };
                           
                          +WM8731 audio_codec_wm8731 { i2c0, 0x1a };
                          +
                           ReceiverModel receiver_model;
                           
                           TemperatureLogger temperature_logger;
                          @@ -154,7 +159,7 @@ void init() {
                           
                           	portapack::io.init();
                           
                          -	audio::init();
                          +	audio::init(&audio_codec_wm8731);
                           	
                           	clock_manager.enable_first_if_clock();
                           	clock_manager.enable_second_if_clock();
                          diff --git a/firmware/application/ui_debug.cpp b/firmware/application/ui_debug.cpp
                          index 907e85b46..3e439367b 100644
                          --- a/firmware/application/ui_debug.cpp
                          +++ b/firmware/application/ui_debug.cpp
                          @@ -260,8 +260,8 @@ DebugPeripheralsMenuView::DebugPeripheralsMenuView(NavigationView& nav) {
                           			"Si5351C", RegistersWidgetConfig { 96, 8 },
                           			[](const size_t register_number) { return portapack::clock_generator.read_register(register_number); }
                           		); } },
                          -		{ "WM8731",      [&nav](){ nav.push( 
                          -		  "WM8731", RegistersWidgetConfig { audio::debug::reg_count(), 9 }, 
                          +		{ audio::debug::codec_name(), [&nav](){ nav.push(
                          +			audio::debug::codec_name(), RegistersWidgetConfig { audio::debug::reg_count(), audio::debug::reg_bits() },
                           			[](const size_t register_number) { return audio::debug::reg_read(register_number); }
                           		); } },
                           	});
                          diff --git a/firmware/common/wm8731.cpp b/firmware/common/wm8731.cpp
                          index e4c01b1bb..68086d66d 100644
                          --- a/firmware/common/wm8731.cpp
                          +++ b/firmware/common/wm8731.cpp
                          @@ -108,7 +108,7 @@ bool WM8731::write(const address_t reg_address, const reg_t value) {
                           	return bus.transmit(bus_address, values.data(), values.size());
                           }
                           
                          -reg_t WM8731::read(const address_t reg_address) {
                          +uint32_t WM8731::reg_read(const size_t reg_address) {
                           	return map.w[reg_address];
                           }
                           
                          diff --git a/firmware/common/wm8731.hpp b/firmware/common/wm8731.hpp
                          index bca090e91..b2c52778f 100644
                          --- a/firmware/common/wm8731.hpp
                          +++ b/firmware/common/wm8731.hpp
                          @@ -27,14 +27,11 @@
                           
                           #include "i2c_pp.hpp"
                           
                          -#include "volume.hpp"
                          +#include "audio.hpp"
                           
                           namespace wolfson {
                           namespace wm8731 {
                           
                          -constexpr volume_range_t headphone_gain_range { -121.0_dB, 6.0_dB };
                          -constexpr volume_range_t line_in_gain_range { -34.5_dB, 12.0_dB };
                          -
                           enum class ADCSource {
                           	Line = 0,
                           	Microphone = 1,
                          @@ -278,7 +275,7 @@ constexpr RegisterMap default_after_reset { Register_Type {
                           	},
                           } };
                           
                          -class WM8731 {
                          +class WM8731 : public audio::Codec {
                           public:
                           	constexpr WM8731(
                           		I2C& bus,
                          @@ -288,14 +285,18 @@ public:
                           	{
                           	}
                           
                          -	void init();
                          +	void init() override;
                          +	
                          +	bool reset() override;
                           
                          -	bool reset();
                          +	std::string name() const override {
                          +		return "WM8731";
                          +	}
                           
                           	bool detected();
                           
                           	void set_line_in_volume(const volume_t volume) {
                          -		const auto normalized = line_in_gain_range.normalize(volume);
                          +		const auto normalized = line_in_gain_range().normalize(volume);
                           		auto n = normalized.centibel() / 15;
                           
                           		write(LeftLineIn {
                          @@ -307,9 +308,9 @@ public:
                           		});
                           	}
                           
                          -	void set_headphone_volume(const volume_t volume) {
                          -		const auto normalized = headphone_gain_range.normalize(volume);
                          +	void set_headphone_volume(const volume_t volume) override {
                           		headphone_volume = volume;
                          +		const auto normalized = headphone_gain_range().normalize(volume);
                           		auto n = normalized.centibel() / 10;
                           
                           		write(LeftHeadphoneOut {
                          @@ -320,8 +321,32 @@ public:
                           		});
                           	}
                           
                          +	volume_range_t headphone_gain_range() const override {
                          +		return { -121.0_dB, 6.0_dB };
                          +	}
                          +
                          +	volume_range_t line_in_gain_range() const {
                          +		return { -34.5_dB, 12.0_dB };
                          +	}
                          +
                           	void headphone_mute() {
                          -		set_headphone_volume(headphone_gain_range.min);
                          +		set_headphone_volume(headphone_gain_range().min);
                          +	}
                          +
                          +	void headphone_enable() override {
                          +		set_headphone_volume(headphone_volume);
                          +	}
                          +
                          +	void headphone_disable() override {
                          +		headphone_mute();
                          +	}
                          +
                          +	void microphone_enable() override {
                          +		// TODO: Implement
                          +	}
                          +
                          +	void microphone_disable() override {
                          +		// TODO: Implement
                           	}
                           
                           	// void microphone_mute(const bool mute) {
                          @@ -334,7 +359,15 @@ public:
                           	// 	write(Register::AnalogAudioPathControl);
                           	// }
                           
                          -	reg_t read(const address_t reg_address);
                          +	size_t reg_count() const override {
                          +		return wolfson::wm8731::reg_count;
                          +	}
                          +
                          +	size_t reg_bits() const override {
                          +		return 9;
                          +	}
                          +	
                          +	uint32_t reg_read(const size_t reg_address) override;
                           	
                           private:
                           	I2C& bus;
                          
                          From 395e3b173616023de9a29ca96d1db05d9303d041 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:43:45 -0700
                          Subject: [PATCH 22/39] Audio: Add input namespace and functions.
                          
                          ---
                           firmware/application/audio.cpp | 14 ++++++++++++++
                           firmware/application/audio.hpp |  7 +++++++
                           2 files changed, 21 insertions(+)
                          
                          diff --git a/firmware/application/audio.cpp b/firmware/application/audio.cpp
                          index 7858376ff..67dfee76b 100644
                          --- a/firmware/application/audio.cpp
                          +++ b/firmware/application/audio.cpp
                          @@ -123,6 +123,20 @@ void unmute() {
                           
                           } /* namespace output */
                           
                          +namespace input {
                          +
                          +void start() {
                          +	audio_codec->microphone_enable();
                          +	i2s::i2s0::rx_start();
                          +}
                          +
                          +void stop() {
                          +	i2s::i2s0::rx_stop();
                          +	audio_codec->microphone_disable();
                          +}
                          +
                          +} /* namespace input */
                          +
                           namespace headphone {
                           
                           volume_range_t volume_range() {
                          diff --git a/firmware/application/audio.hpp b/firmware/application/audio.hpp
                          index 94f193cee..77695cadd 100644
                          --- a/firmware/application/audio.hpp
                          +++ b/firmware/application/audio.hpp
                          @@ -63,6 +63,13 @@ void unmute();
                           
                           } /* namespace output */
                           
                          +namespace input {
                          +
                          +void start();
                          +void stop();
                          +
                          +} /* namespace input */
                          +
                           namespace headphone {
                           
                           volume_range_t volume_range();
                          
                          From 600dcb734eb8845c9f7161cbf66833c6c425449e Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:45:54 -0700
                          Subject: [PATCH 23/39] AK4951: Initial commit.
                          
                          ---
                           firmware/common/ak4951.cpp | 312 +++++++++++++
                           firmware/common/ak4951.hpp | 882 +++++++++++++++++++++++++++++++++++++
                           2 files changed, 1194 insertions(+)
                           create mode 100644 firmware/common/ak4951.cpp
                           create mode 100644 firmware/common/ak4951.hpp
                          
                          diff --git a/firmware/common/ak4951.cpp b/firmware/common/ak4951.cpp
                          new file mode 100644
                          index 000000000..66061315b
                          --- /dev/null
                          +++ b/firmware/common/ak4951.cpp
                          @@ -0,0 +1,312 @@
                          +/*
                          + * Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
                          + *
                          + * This file is part of PortaPack.
                          + *
                          + * This program is free software; you can redistribute it and/or modify
                          + * it under the terms of the GNU General Public License as published by
                          + * the Free Software Foundation; either version 2, or (at your option)
                          + * any later version.
                          + *
                          + * This program is distributed in the hope that it will be useful,
                          + * but WITHOUT ANY WARRANTY; without even the implied warranty of
                          + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          + * GNU General Public License for more details.
                          + *
                          + * You should have received a copy of the GNU General Public License
                          + * along with this program; see the file COPYING.  If not, write to
                          + * the Free Software Foundation, Inc., 51 Franklin Street,
                          + * Boston, MA 02110-1301, USA.
                          + */
                          +
                          +#include "ak4951.hpp"
                          +
                          +#include "portapack_io.hpp"
                          +using namespace portapack;
                          +
                          +#include 
                          +
                          +namespace asahi_kasei {
                          +namespace ak4951 {
                          +
                          +void AK4951::configure_digital_interface() {
                          +	// Configure for external slave mode.
                          +	map.r.mode_control_1.DIF = 0b11;	// I2S compatible
                          +	map.r.mode_control_1.BCKO = 0;		// BICK = 32fs
                          +	update(Register::ModeControl1);
                          +
                          +	map.r.mode_control_2.CM = 0b00;		// MCKI = 256fs
                          +	map.r.mode_control_2.FS = 0b1011;	// fs = 48kHz
                          +	update(Register::ModeControl2);
                          +
                          +	// map.r.mode_control_3.DVOLC = 1;		// Control L/R channels with DVL (LchDigitalVolumeControl)
                          +	// update(Register::ModeControl3);
                          +
                          +	map.r.power_management_2.MS = 0;	// Slave mode
                          +	map.r.power_management_2.PMPLL = 0;	// EXT mode
                          +	update(Register::PowerManagement2);
                          +}
                          +
                          +void AK4951::init() {
                          +	reset();
                          +
                          +	// Write dummy address to "release" the reset.
                          +	write(0x00, 0x00);
                          +
                          +	configure_digital_interface();
                          +
                          +	map.r.power_management_1.PMVCM = 1;
                          +	update(Register::PowerManagement1);
                          +
                          +	// Headphone output is hi-Z when not active, reduces crosstalk from speaker output.
                          +	map.r.beep_control.HPZ = 1;
                          +	update(Register::BeepControl);
                          +
                          +	// Pause for VCOM and REGFIL pins to stabilize.
                          +	chThdSleepMilliseconds(2);
                          +
                          +	headphone_mute();
                          +
                          +	// SPK-Amp gain setting: SPKG1-0 bits = “00” → “01”
                          +	map.r.signal_select_2.SPKG = 0b01;
                          +	update(Register::SignalSelect2);
                          +
                          +	map.r.signal_select_3.MONO = 0b00;
                          +	update(Register::SignalSelect3);
                          +
                          +	map.r.digital_filter_mode.PFSDO = 0;	// ADC bypass digital filter block.
                          +	map.r.digital_filter_mode.ADCPF = 1;	// ADC output
                          +	map.r.digital_filter_mode.PFDAC = 0b00;	// SDTI
                          +	update(Register::DigitalFilterMode);
                          +
                          +	// Set up FRN, FRATT and ADRST1-0 bits (Addr = 09H)
                          +	// map.r.timer_select.FRN = 0;
                          +	// map.r.timer_select.FRATT = 0;
                          +	// map.r.timer_select.ADRST = 0b00;
                          +	// update(Register::TimerSelect);
                          +
                          +	// Set up ALC mode (Addr = 0AH, 0BH)
                          +	// map.r.alc_timer_select. = ;
                          +	// update(Register::ALCTimerSelect);
                          +	// map.r.alc_mode_control_1. = ;
                          +	// update(Register::ALCModeControl1);
                          +
                          +	// Set up REF value of ALC (Addr = 0CH)
                          +	// map.r.alc_mode_control_2. = ;
                          +	// update(Register::ALCModeControl2);
                          +
                          +	// Set up IVOL value of ALC operation start (Addr = 0DH)
                          +	// map.r.l_ch_input_volume_control. = ;
                          +	// update(Register::LchInputVolumeControl);
                          +	// map.r.r_ch_input_volume_control. = ;
                          +	// update(Register::RchInputVolumeControl);
                          +
                          +	// Set up the output digital volume. (Addr = 13H)
                          +	// set_headphone_volume(...);
                          +
                          +	// Set up Programmable Filter Path: PFDAC1-0 bits=“01”, PFSDO=ADCPF bits=“0” (Addr = 1DH)
                          +	// map.r.digital_filter_mode.PFDAC = 0b01;
                          +	// update(Register::DigitalFilterMode);
                          +}
                          +
                          +bool AK4951::reset() {
                          +	io.audio_reset_state(true);
                          +
                          +	// PDN# pulse must be >200ns
                          +	chThdSleepMicroseconds(10);
                          +
                          +	io.audio_reset_state(false);
                          +
                          +	return true;
                          +}
                          +
                          +void AK4951::set_digtal_volume_control(const reg_t value) {
                          +	map.r.l_ch_digital_volume_control.DV = value;
                          +	update(Register::LchDigitalVolumeControl);
                          +}
                          +
                          +void AK4951::set_headphone_volume(const volume_t volume) {
                          +	const auto normalized = headphone_gain_range().normalize(volume);
                          +	auto n = normalized.centibel() / 5;
                          +	set_digtal_volume_control(0xcb - n);
                          +}
                          +
                          +void AK4951::headphone_mute() {
                          +	set_digtal_volume_control(0xff);
                          +}
                          +
                          +void AK4951::set_dac_power(const bool enable) {
                          +	map.r.power_management_1.PMDAC = enable;
                          +	update(Register::PowerManagement1);
                          +}
                          +
                          +void AK4951::set_headphone_power(const bool enable) {
                          +	map.r.power_management_2.PMHPL = map.r.power_management_2.PMHPR = enable;
                          +	update(Register::PowerManagement2);
                          +}
                          +
                          +void AK4951::set_speaker_power(const bool enable) {
                          +	map.r.power_management_2.PMSL = enable;
                          +	update(Register::PowerManagement2);
                          +}
                          +
                          +void AK4951::select_line_out(const LineOutSelect value) {
                          +	map.r.power_management_2.LOSEL = (value == LineOutSelect::Line) ? 1 : 0;
                          +	update(Register::PowerManagement2);
                          +}
                          +
                          +void AK4951::headphone_enable() {
                          +	set_dac_power(true);
                          +	set_headphone_power(true);
                          +
                          +	// Wait for headphone amplifier charge pump power-up.
                          +	chThdSleepMilliseconds(35);
                          +}
                          +
                          +void AK4951::headphone_disable() {
                          +	set_headphone_power(false);
                          +	set_dac_power(false);
                          +}
                          +
                          +void AK4951::speaker_enable() {
                          +	// Set up the path of DAC → SPK-Amp: DACS bit = “0” → “1”
                          +	map.r.signal_select_1.DACS = 1;
                          +	update(Register::SignalSelect1);
                          +
                          +	// Enter Speaker-Amp Output Mode: LOSEL bit = “0”
                          +	select_line_out(LineOutSelect::Speaker);
                          +
                          +	// Power up DAC, Programmable Filter and Speaker-Amp: PMDAC=PMPFIL=PMSL bits=“0”→“1”
                          +	set_dac_power(true);
                          +	// map.r.power_management_1.PMPFIL = 1;
                          +	// update(Register::PowerManagement1);
                          +	set_speaker_power(true);
                          +
                          +	// Time from PMSL=1 to SLPSN=1.
                          +	chThdSleepMilliseconds(1);
                          +
                          +	// Exit the power-save mode of Speaker-Amp: SLPSN bit = “0” → “1”
                          +	map.r.signal_select_1.SLPSN = 1;
                          +	update(Register::SignalSelect1);
                          +}
                          +
                          +void AK4951::speaker_disable() {
                          +	// Enter Speaker-Amp Power Save Mode: SLPSN bit = “1” → “0”
                          +	map.r.signal_select_1.SLPSN = 0;
                          +	update(Register::SignalSelect1);
                          +
                          +	// Disable the path of DAC → SPK-Amp: DACS bit = “1” → “0”
                          +	map.r.signal_select_1.DACS = 0;
                          +	update(Register::SignalSelect1);
                          +
                          +	// Power down DAC, Programmable Filter and speaker: PMDAC=PMPFIL=PMSL bits= “1”→“0”
                          +	set_dac_power(false);
                          +	// map.r.power_management_1.PMPFIL = 0;
                          +	// update(Register::PowerManagement1);
                          +	set_speaker_power(false);
                          +}
                          +
                          +void AK4951::microphone_enable() {
                          +// map.r.digital_mic.DMIC = 0;
                          +// update(Register::DigitalMic);
                          +	
                          +	map.r.signal_select_1.MGAIN20 = 0b110;
                          +	map.r.signal_select_1.PMMP = 1;
                          +	map.r.signal_select_1.MPSEL = 1;	// MPWR2 pin
                          +	map.r.signal_select_1.MGAIN3 = 0b0;
                          +	update(Register::SignalSelect1);
                          +
                          +	map.r.signal_select_2.INL = 0b01;	// Lch input signal = LIN2
                          +	map.r.signal_select_2.INR = 0b01;	// Rch input signal = RIN2
                          +	map.r.signal_select_2.MICL = 0;		// MPWR = 2.4V
                          +	update(Register::SignalSelect2);
                          +
                          +// map.r.r_ch_mic_gain_setting.MGR = 0x80;	// Microphone sensitivity correction = 0dB.
                          +// update(Register::RchMicGainSetting);
                          +/*
                          +	map.r.timer_select.FRN = ?;
                          +	map.r.timer_select.FRATT = ?;
                          +	map.r.timer_select.ADRST = 0b??;
                          +	update(Register::TimerSelect);
                          +
                          +	map.r.alc_timer_select. = ?;
                          +	update(Register::ALCTimerSelect);
                          +	map.r.alc_mode_control_1. = ?;
                          +	map.r.alc_mode_control_1.ALC = 1;
                          +	update(Register::ALCModeControl1);
                          +
                          +	map.r.alc_mode_control_2.REF = ?;
                          +	update(Register::ALCModeControl2);
                          +*/
                          +// map.r.l_ch_input_volume_control.IV = 0xe1;
                          +// update(Register::LchInputVolumeControl);
                          +// map.r.r_ch_input_volume_control.IV = 0xe1;
                          +// update(Register::RchInputVolumeControl);
                          +/*
                          +	map.r.auto_hpf_control.STG = 0b00;
                          +	map.r.auto_hpf_control.SENC = 0b011;
                          +	map.r.auto_hpf_control.AHPF = 0;
                          +	update(Register::AutoHPFControl);
                          +*/
                          +	map.r.digital_filter_select_1.HPFAD = 1;	// HPF1 (after ADC) = on
                          +	map.r.digital_filter_select_1.HPFC = 0b11;	// 2336.8 Hz @ fs=48k
                          +	update(Register::DigitalFilterSelect1);
                          +/*
                          +	map.r.digital_filter_select_2.HPF = 0;
                          +	map.r.digital_filter_select_2.LPF = 0;
                          +	map.r.digital_filter_select_2.FIL3 = 0;
                          +	map.r.digital_filter_select_2.EQ0 = 0;
                          +	map.r.digital_filter_select_2.GN = 0b00;
                          +	update(Register::DigitalFilterSelect2);
                          +
                          +	map.r.digital_filter_select_3.EQ1 = 0;
                          +	map.r.digital_filter_select_3.EQ2 = 0;
                          +	map.r.digital_filter_select_3.EQ3 = 0;
                          +	map.r.digital_filter_select_3.EQ4 = 0;
                          +	map.r.digital_filter_select_3.EQ5 = 0;
                          +	update(Register::DigitalFilterSelect3);
                          +*/
                          +	map.r.digital_filter_mode.PFSDO = 0;	// ADC (+ 1st order HPF) Output
                          +	map.r.digital_filter_mode.ADCPF = 1;	// ADC Output (default)
                          +	update(Register::DigitalFilterMode);
                          +
                          +	// ... Set coefficients ...
                          +
                          +	map.r.power_management_1.PMADL = 1;		// ADC Lch = Lch input signal
                          +	map.r.power_management_1.PMADR = 1;		// ADC Rch = Rch input signal
                          +	map.r.power_management_1.PMPFIL = 0;	// Programmable filter unused, routed around.
                          +	update(Register::PowerManagement1);
                          +
                          +	// 1059/fs, 22ms @ 48kHz
                          +	chThdSleepMilliseconds(22);
                          +}
                          +
                          +void AK4951::microphone_disable() {
                          +	map.r.power_management_1.PMADL = 0;
                          +	map.r.power_management_1.PMADR = 0;
                          +	map.r.power_management_1.PMPFIL = 0;
                          +	update(Register::PowerManagement1);
                          +
                          +	map.r.alc_mode_control_1.ALC = 0;
                          +	update(Register::ALCModeControl1);
                          +}
                          +
                          +reg_t AK4951::read(const address_t reg_address) {
                          +	const std::array tx { reg_address };
                          +	std::array rx { 0x00 };
                          +	bus.transmit(bus_address, tx.data(), tx.size());
                          +	bus.receive(bus_address, rx.data(), rx.size());
                          +	return rx[0];
                          +}
                          +
                          +void AK4951::update(const Register reg) {
                          +	write(toUType(reg), map.w[toUType(reg)]);
                          +}
                          +
                          +void AK4951::write(const address_t reg_address, const reg_t value) {
                          +	const std::array tx { reg_address, value };
                          +	bus.transmit(bus_address, tx.data(), tx.size());
                          +}
                          +
                          +} /* namespace ak4951 */
                          +} /* namespace asahi_kasei */
                          diff --git a/firmware/common/ak4951.hpp b/firmware/common/ak4951.hpp
                          new file mode 100644
                          index 000000000..54115481a
                          --- /dev/null
                          +++ b/firmware/common/ak4951.hpp
                          @@ -0,0 +1,882 @@
                          +/*
                          + * Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
                          + *
                          + * This file is part of PortaPack.
                          + *
                          + * This program is free software; you can redistribute it and/or modify
                          + * it under the terms of the GNU General Public License as published by
                          + * the Free Software Foundation; either version 2, or (at your option)
                          + * any later version.
                          + *
                          + * This program is distributed in the hope that it will be useful,
                          + * but WITHOUT ANY WARRANTY; without even the implied warranty of
                          + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          + * GNU General Public License for more details.
                          + *
                          + * You should have received a copy of the GNU General Public License
                          + * along with this program; see the file COPYING.  If not, write to
                          + * the Free Software Foundation, Inc., 51 Franklin Street,
                          + * Boston, MA 02110-1301, USA.
                          + */
                          +
                          +#ifndef __AK4951_H__
                          +#define __AK4951_H__
                          +
                          +#include 
                          +#include 
                          +
                          +#include "utility.hpp"
                          +
                          +#include "i2c_pp.hpp"
                          +
                          +#include "audio.hpp"
                          +
                          +namespace asahi_kasei {
                          +namespace ak4951 {
                          +
                          +using address_t = uint8_t;
                          +using reg_t = uint8_t;
                          +
                          +constexpr size_t reg_count = 0x50;
                          +
                          +enum class Register : address_t {
                          +	PowerManagement1 = 0x00,
                          +	PowerManagement2 = 0x01,
                          +	SignalSelect1 = 0x02,
                          +	SignalSelect2 = 0x03,
                          +	SignalSelect3 = 0x04,
                          +	ModeControl1 = 0x05,
                          +	ModeControl2 = 0x06,
                          +	ModeControl3 = 0x07,
                          +	DigitalMic = 0x08,
                          +	TimerSelect = 0x09,
                          +	ALCTimerSelect = 0x0a,
                          +	ALCModeControl1 = 0x0b,
                          +	ALCModeControl2 = 0x0c,
                          +	LchInputVolumeControl = 0x0d,
                          +	RchInputVolumeControl = 0x0e,
                          +	ALCVolume = 0x0f,
                          +	_Reserved_0x10 = 0x10,
                          +	RchMicGainSetting = 0x11,
                          +	BeepControl = 0x12,
                          +	LchDigitalVolumeControl = 0x13,
                          +	RchDigitalVolumeControl = 0x14,
                          +	EQCommonGainSelect = 0x15,
                          +	EQ2CommonGainSetting = 0x16,
                          +	EQ3CommonGainSetting = 0x17,
                          +	EQ4CommonGainSetting = 0x18,
                          +	EQ5CommonGainSetting = 0x19,
                          +	AutoHPFControl = 0x1a,
                          +	DigitalFilterSelect1 = 0x1b,
                          +	DigitalFilterSelect2 = 0x1c,
                          +	DigitalFilterMode = 0x1d,
                          +	HPF2Coefficient0 = 0x1e,
                          +	HPF2Coefficient1 = 0x1f,
                          +	HPF2Coefficient2 = 0x20,
                          +	HPF2Coefficient3 = 0x21,
                          +	LPFCoefficient0 = 0x22,
                          +	LPFCoefficient1 = 0x23,
                          +	LPFCoefficient2 = 0x24,
                          +	LPFCoefficient3 = 0x25,
                          +	FIL3Coefficient0 = 0x26,
                          +	FIL3Coefficient1 = 0x27,
                          +	FIL3Coefficient2 = 0x28,
                          +	FIL3Coefficient3 = 0x29,
                          +	EQCoefficient0 = 0x2a,
                          +	EQCoefficient1 = 0x2b,
                          +	EQCoefficient2 = 0x2c,
                          +	EQCoefficient3 = 0x2d,
                          +	EQCoefficient4 = 0x2e,
                          +	EQCoefficient5 = 0x2f,
                          +	DigitalFilterSelect3 = 0x30,
                          +	DeviceInformation = 0x31,
                          +	E1Coefficient0 = 0x32,
                          +	E1Coefficient1 = 0x33,
                          +	E1Coefficient2 = 0x34,
                          +	E1Coefficient3 = 0x35,
                          +	E1Coefficient4 = 0x36,
                          +	E1Coefficient5 = 0x37,
                          +	E2Coefficient0 = 0x38,
                          +	E2Coefficient1 = 0x39,
                          +	E2Coefficient2 = 0x3a,
                          +	E2Coefficient3 = 0x3b,
                          +	E2Coefficient4 = 0x3c,
                          +	E2Coefficient5 = 0x3d,
                          +	E3Coefficient0 = 0x3e,
                          +	E3Coefficient1 = 0x3f,
                          +	E3Coefficient2 = 0x40,
                          +	E3Coefficient3 = 0x41,
                          +	E3Coefficient4 = 0x42,
                          +	E3Coefficient5 = 0x43,
                          +	E4Coefficient0 = 0x44,
                          +	E4Coefficient1 = 0x45,
                          +	E4Coefficient2 = 0x46,
                          +	E4Coefficient3 = 0x47,
                          +	E4Coefficient4 = 0x48,
                          +	E4Coefficient5 = 0x49,
                          +	E5Coefficient0 = 0x4a,
                          +	E5Coefficient1 = 0x4b,
                          +	E5Coefficient2 = 0x4c,
                          +	E5Coefficient3 = 0x4d,
                          +	E5Coefficient4 = 0x4e,
                          +	E5Coefficient5 = 0x4f,
                          +	_count,
                          +};
                          +
                          +static_assert(toUType(Register::_count) == reg_count, "Register::_count != reg_count");
                          +
                          +struct PowerManagement1 {
                          +	reg_t PMADL     : 1;
                          +	reg_t PMADR     : 1;
                          +	reg_t PMDAC     : 1;
                          +	reg_t reserved0 : 2;
                          +	reg_t PMBP      : 1;
                          +	reg_t PMVCM     : 1;
                          +	reg_t PMPFIL    : 1;
                          +};
                          +
                          +static_assert(sizeof(PowerManagement1) == sizeof(reg_t), "wrong size `struct");
                          +
                          +struct PowerManagement2 {
                          +	reg_t LOSEL     : 1;
                          +	reg_t PMSL      : 1;
                          +	reg_t PMPLL     : 1;
                          +	reg_t MS        : 1;
                          +	reg_t PMHPL     : 1;
                          +	reg_t PMHPR     : 1;
                          +	reg_t reserved0 : 1;
                          +	reg_t PMOSC     : 1;
                          +};
                          +
                          +static_assert(sizeof(PowerManagement2) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct SignalSelect1 {
                          +	reg_t MGAIN20   : 3;
                          +	reg_t PMMP      : 1;
                          +	reg_t MPSEL     : 1;
                          +	reg_t DACS      : 1;
                          +	reg_t MGAIN3    : 1;
                          +	reg_t SLPSN     : 1;
                          +};
                          +
                          +static_assert(sizeof(SignalSelect1) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct SignalSelect2 {
                          +	reg_t INR       : 2;
                          +	reg_t INL       : 2;
                          +	reg_t MICL      : 1;
                          +	reg_t reserved0 : 1;
                          +	reg_t SPKG      : 2;
                          +};
                          +
                          +static_assert(sizeof(SignalSelect2) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct SignalSelect3 {
                          +	reg_t MONO      : 2;
                          +	reg_t PTS       : 2;
                          +	reg_t reserved0 : 1;
                          +	reg_t DACL      : 1;
                          +	reg_t LVCM      : 2;
                          +};
                          +
                          +static_assert(sizeof(SignalSelect3) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ModeControl1 {
                          +	reg_t DIF       : 2;
                          +	reg_t CKOFF     : 1;
                          +	reg_t BCKO      : 1;
                          +	reg_t PLL       : 4;
                          +};
                          +
                          +static_assert(sizeof(ModeControl1) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ModeControl2 {
                          +	reg_t FS        : 4;
                          +	reg_t reserved0 : 2;
                          +	reg_t CM        : 2;
                          +};
                          +
                          +static_assert(sizeof(ModeControl2) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ModeControl3 {
                          +	reg_t reserved0 : 2;
                          +	reg_t IVOLC     : 1;
                          +	reg_t reserved1 : 1;
                          +	reg_t DVOLC     : 1;
                          +	reg_t SMUTE     : 1;
                          +	reg_t THDET     : 1;
                          +	reg_t TSDSEL    : 1;
                          +};
                          +
                          +static_assert(sizeof(ModeControl3) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DigitalMIC {
                          +	reg_t DMIC      : 1;
                          +	reg_t DCLKP     : 1;
                          +	reg_t reserved0 : 1;
                          +	reg_t DCLKE     : 1;
                          +	reg_t PMDML     : 1;
                          +	reg_t PMDMR     : 1;
                          +	reg_t reserved1 : 1;
                          +	reg_t READ      : 1;
                          +};
                          +
                          +static_assert(sizeof(DigitalMIC) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct TimerSelect {
                          +	reg_t DVTM      : 1;
                          +	reg_t MOFF      : 1;
                          +	reg_t reserved0 : 2;
                          +	reg_t FRN       : 1;
                          +	reg_t FRATT     : 1;
                          +	reg_t ADRST     : 2;
                          +};
                          +
                          +static_assert(sizeof(TimerSelect) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ALCTimerSelect {
                          +	reg_t RFST      : 2;
                          +	reg_t WTM       : 2;
                          +	reg_t EQFC      : 2;
                          +	reg_t IVTM      : 1;
                          +	reg_t reserved0 : 1;
                          +};
                          +
                          +static_assert(sizeof(ALCTimerSelect) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ALCModeControl1 {
                          +	reg_t LMTH10    : 2;
                          +	reg_t RGAIN     : 3;
                          +	reg_t ALC       : 1;
                          +	reg_t LMTH2     : 1;
                          +	reg_t ALCEQN    : 1;
                          +};
                          +
                          +static_assert(sizeof(ALCModeControl1) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct ALCModeControl2 {
                          +	reg_t REF       : 8;
                          +};
                          +
                          +static_assert(sizeof(ALCModeControl2) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct InputVolumeControl {
                          +	reg_t IV        : 8;
                          +};
                          +
                          +static_assert(sizeof(InputVolumeControl) == sizeof(reg_t), "wrong size struct");
                          +
                          +using LchInputVolumeControl = InputVolumeControl;
                          +using RchInputVolumeControl = InputVolumeControl;
                          +
                          +struct ALCVolume {
                          +	reg_t VOL       : 8;
                          +};
                          +
                          +static_assert(sizeof(ALCVolume) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct RchMICGainSetting {
                          +	reg_t MGR       : 8;
                          +};
                          +
                          +static_assert(sizeof(RchMICGainSetting) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct BeepControl {
                          +	reg_t BPLVL     : 4;
                          +	reg_t BEEPH     : 1;
                          +	reg_t BEEPS     : 1;
                          +	reg_t BPVCM     : 1;
                          +	reg_t HPZ       : 1;
                          +};
                          +
                          +static_assert(sizeof(BeepControl) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DigitalVolumeControl {
                          +	reg_t DV        : 8;
                          +};
                          +
                          +static_assert(sizeof(DigitalVolumeControl) == sizeof(reg_t), "wrong size struct");
                          +
                          +using LchDigitalVolumeControl = DigitalVolumeControl;
                          +using RchDigitalVolumeControl = DigitalVolumeControl;
                          +
                          +struct EQCommonGainSelect {
                          +	reg_t reserved0 : 1;
                          +	reg_t EQC2      : 1;
                          +	reg_t EQC3      : 1;
                          +	reg_t EQC4      : 1;
                          +	reg_t EQC5      : 1;
                          +	reg_t reserved1 : 3;
                          +};
                          +
                          +static_assert(sizeof(EQCommonGainSelect) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct EQCommonGainSetting {
                          +	reg_t EQnT      : 2;
                          +	reg_t EQnG      : 6;
                          +};
                          +
                          +static_assert(sizeof(EQCommonGainSetting) == sizeof(reg_t), "wrong size struct");
                          +
                          +using EQ2CommonGainSetting = EQCommonGainSetting;
                          +using EQ3CommonGainSetting = EQCommonGainSetting;
                          +using EQ4CommonGainSetting = EQCommonGainSetting;
                          +using EQ5CommonGainSetting = EQCommonGainSetting;
                          +
                          +struct AutoHPFControl {
                          +	reg_t STG       : 2;
                          +	reg_t SENC      : 3;
                          +	reg_t AHPF      : 1;
                          +	reg_t reserved0 : 2;
                          +};
                          +
                          +static_assert(sizeof(AutoHPFControl) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DigitalFilterSelect1 {
                          +	reg_t HPFAD     : 1;
                          +	reg_t HPFC      : 2;
                          +	reg_t reserved0 : 5;
                          +};
                          +
                          +static_assert(sizeof(DigitalFilterSelect1) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DigitalFilterSelect2 {
                          +	reg_t HPF       : 1;
                          +	reg_t LPF       : 1;
                          +	reg_t reserved0 : 2;
                          +	reg_t FIL3      : 1;
                          +	reg_t EQ0       : 1;
                          +	reg_t GN        : 2;
                          +};
                          +
                          +static_assert(sizeof(DigitalFilterSelect2) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DigitalFilterMode {
                          +	reg_t PFSDO     : 1;
                          +	reg_t ADCPF     : 1;
                          +	reg_t PFDAC     : 2;
                          +	reg_t PFVOL     : 2;
                          +	reg_t reserved0 : 2;
                          +};
                          +
                          +static_assert(sizeof(DigitalFilterMode) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct Coefficient14L {
                          +	reg_t l         : 8;
                          +};
                          +
                          +struct Coefficient14H {
                          +	reg_t h         : 6;
                          +	reg_t reserved0 : 2;
                          +};
                          +
                          +static_assert(sizeof(Coefficient14L) == sizeof(reg_t), "wrong size struct");
                          +static_assert(sizeof(Coefficient14H) == sizeof(reg_t), "wrong size struct");
                          +
                          +using Coefficient16L = Coefficient14L;
                          +
                          +struct Coefficient16H {
                          +	reg_t h         : 8;
                          +};
                          +
                          +static_assert(sizeof(Coefficient16H) == sizeof(reg_t), "wrong size struct");
                          +
                          +using HPF2Coefficient0 = Coefficient14L;
                          +using HPF2Coefficient1 = Coefficient14H;
                          +using HPF2Coefficient2 = Coefficient14L;
                          +using HPF2Coefficient3 = Coefficient14H;
                          +
                          +using LPFCoefficient0 = Coefficient14L;
                          +using LPFCoefficient1 = Coefficient14H;
                          +using LPFCoefficient2 = Coefficient14L;
                          +using LPFCoefficient3 = Coefficient14H;
                          +
                          +using FIL3Coefficient0 = Coefficient14L;
                          +
                          +struct FIL3Coefficient1 {
                          +	reg_t h : 6;
                          +	reg_t reserved0 : 1;
                          +	reg_t s : 1;
                          +};
                          +
                          +static_assert(sizeof(FIL3Coefficient1) == sizeof(reg_t), "wrong size struct");
                          +
                          +using FIL3Coefficient2 = Coefficient14L;
                          +using FIL3Coefficient3 = Coefficient14H;
                          +
                          +using EQCoefficient0 = Coefficient16L;
                          +using EQCoefficient1 = Coefficient16H;
                          +using EQCoefficient2 = Coefficient14L;
                          +using EQCoefficient3 = Coefficient14H;
                          +using EQCoefficient4 = Coefficient16L;
                          +using EQCoefficient5 = Coefficient16H;
                          +
                          +struct DigitalFilterSelect3 {
                          +	reg_t EQ1       : 1;
                          +	reg_t EQ2       : 1;
                          +	reg_t EQ3       : 1;
                          +	reg_t EQ4       : 1;
                          +	reg_t EQ5       : 1;
                          +	reg_t reserved0 : 3;
                          +};
                          +
                          +static_assert(sizeof(DigitalFilterSelect3) == sizeof(reg_t), "wrong size struct");
                          +
                          +struct DeviceInformation {
                          +	reg_t DVN       : 4;
                          +	reg_t REV       : 4;
                          +};
                          +
                          +static_assert(sizeof(DeviceInformation) == sizeof(reg_t), "wrong size struct");
                          +
                          +using E1Coefficient0 = Coefficient16L;
                          +using E1Coefficient1 = Coefficient16H;
                          +using E1Coefficient2 = Coefficient16L;
                          +using E1Coefficient3 = Coefficient16H;
                          +using E1Coefficient4 = Coefficient16L;
                          +using E1Coefficient5 = Coefficient16H;
                          +
                          +using E2Coefficient0 = Coefficient16L;
                          +using E2Coefficient1 = Coefficient16H;
                          +using E2Coefficient2 = Coefficient16L;
                          +using E2Coefficient3 = Coefficient16H;
                          +using E2Coefficient4 = Coefficient16L;
                          +using E2Coefficient5 = Coefficient16H;
                          +
                          +using E3Coefficient0 = Coefficient16L;
                          +using E3Coefficient1 = Coefficient16H;
                          +using E3Coefficient2 = Coefficient16L;
                          +using E3Coefficient3 = Coefficient16H;
                          +using E3Coefficient4 = Coefficient16L;
                          +using E3Coefficient5 = Coefficient16H;
                          +
                          +using E4Coefficient0 = Coefficient16L;
                          +using E4Coefficient1 = Coefficient16H;
                          +using E4Coefficient2 = Coefficient16L;
                          +using E4Coefficient3 = Coefficient16H;
                          +using E4Coefficient4 = Coefficient16L;
                          +using E4Coefficient5 = Coefficient16H;
                          +
                          +using E5Coefficient0 = Coefficient16L;
                          +using E5Coefficient1 = Coefficient16H;
                          +using E5Coefficient2 = Coefficient16L;
                          +using E5Coefficient3 = Coefficient16H;
                          +using E5Coefficient4 = Coefficient16L;
                          +using E5Coefficient5 = Coefficient16H;
                          +
                          +struct Register_Type {
                          +	PowerManagement1		power_management_1;
                          +	PowerManagement2		power_management_2;
                          +	SignalSelect1			signal_select_1;
                          +	SignalSelect2			signal_select_2;
                          +	SignalSelect3			signal_select_3;
                          +	ModeControl1			mode_control_1;
                          +	ModeControl2			mode_control_2;
                          +	ModeControl3			mode_control_3;
                          +	DigitalMIC				digital_mic;
                          +	TimerSelect				timer_select;
                          +	ALCTimerSelect			alc_timer_select;
                          +	ALCModeControl1			alc_mode_control_1;
                          +	ALCModeControl2			alc_mode_control_2;
                          +	LchInputVolumeControl	l_ch_input_volume_control;
                          +	RchInputVolumeControl	r_ch_input_volume_control;
                          +	ALCVolume				alc_volume;
                          +	reg_t					_reserved_0x10;
                          +	RchMICGainSetting		r_ch_mic_gain_setting;
                          +	BeepControl				beep_control;
                          +	LchDigitalVolumeControl	l_ch_digital_volume_control;
                          +	RchDigitalVolumeControl	r_ch_digital_volume_control;
                          +	EQCommonGainSelect		eq_common_gain_select;
                          +	EQ2CommonGainSetting	eq2_common_gain_setting;
                          +	EQ3CommonGainSetting	eq3_common_gain_setting;
                          +	EQ4CommonGainSetting	eq4_common_gain_setting;
                          +	EQ5CommonGainSetting	eq5_common_gain_setting;
                          +	AutoHPFControl			auto_hpf_control;
                          +	DigitalFilterSelect1	digital_filter_select_1;
                          +	DigitalFilterSelect2	digital_filter_select_2;
                          +	DigitalFilterMode		digital_filter_mode;
                          +	HPF2Coefficient0		hpf_2_coefficient_0;
                          +	HPF2Coefficient1		hpf_2_coefficient_1;
                          +	HPF2Coefficient2		hpf_2_coefficient_2;
                          +	HPF2Coefficient3		hpf_2_coefficient_3;
                          +	LPFCoefficient0			lpf_coefficient_0;
                          +	LPFCoefficient1			lpf_coefficient_1;
                          +	LPFCoefficient2			lpf_coefficient_2;
                          +	LPFCoefficient3			lpf_coefficient_3;
                          +	FIL3Coefficient0		fil_3_coefficient_0;
                          +	FIL3Coefficient1		fil_3_coefficient_1;
                          +	FIL3Coefficient2		fil_3_coefficient_2;
                          +	FIL3Coefficient3		fil_3_coefficient_3;
                          +	EQCoefficient0			eq_coefficient_0;
                          +	EQCoefficient1			eq_coefficient_1;
                          +	EQCoefficient2			eq_coefficient_2;
                          +	EQCoefficient3			eq_coefficient_3;
                          +	EQCoefficient4			eq_coefficient_4;
                          +	EQCoefficient5			eq_coefficient_5;
                          +	DigitalFilterSelect3	digital_filter_select_3;
                          +	DeviceInformation		device_information;
                          +	E1Coefficient0			e1_coefficient_0;
                          +	E1Coefficient1			e1_coefficient_1;
                          +	E1Coefficient2			e1_coefficient_2;
                          +	E1Coefficient3			e1_coefficient_3;
                          +	E1Coefficient4			e1_coefficient_4;
                          +	E1Coefficient5			e1_coefficient_5;
                          +	E2Coefficient0			e2_coefficient_0;
                          +	E2Coefficient1			e2_coefficient_1;
                          +	E2Coefficient2			e2_coefficient_2;
                          +	E2Coefficient3			e2_coefficient_3;
                          +	E2Coefficient4			e2_coefficient_4;
                          +	E2Coefficient5			e2_coefficient_5;
                          +	E3Coefficient0			e3_coefficient_0;
                          +	E3Coefficient1			e3_coefficient_1;
                          +	E3Coefficient2			e3_coefficient_2;
                          +	E3Coefficient3			e3_coefficient_3;
                          +	E3Coefficient4			e3_coefficient_4;
                          +	E3Coefficient5			e3_coefficient_5;
                          +	E4Coefficient0			e4_coefficient_0;
                          +	E4Coefficient1			e4_coefficient_1;
                          +	E4Coefficient2			e4_coefficient_2;
                          +	E4Coefficient3			e4_coefficient_3;
                          +	E4Coefficient4			e4_coefficient_4;
                          +	E4Coefficient5			e4_coefficient_5;
                          +	E5Coefficient0			e5_coefficient_0;
                          +	E5Coefficient1			e5_coefficient_1;
                          +	E5Coefficient2			e5_coefficient_2;
                          +	E5Coefficient3			e5_coefficient_3;
                          +	E5Coefficient4			e5_coefficient_4;
                          +	E5Coefficient5			e5_coefficient_5;
                          +};
                          +
                          +static_assert(sizeof(Register_Type) == reg_count * sizeof(reg_t), "Register_Type wrong size");
                          +
                          +struct RegisterMap {
                          +	constexpr RegisterMap(
                          +		Register_Type values
                          +	) : r(values)
                          +	{
                          +	}
                          +
                          +	union {
                          +		Register_Type r;
                          +		std::array w;
                          +	};
                          +};
                          +
                          +static_assert(sizeof(RegisterMap) == reg_count * sizeof(reg_t), "RegisterMap type wrong size");
                          +
                          +constexpr RegisterMap default_after_reset { Register_Type {
                          +	.power_management_1 = {
                          +		.PMADL = 0,
                          +		.PMADR = 0,
                          +		.PMDAC = 0,
                          +		.reserved0 = 0,
                          +		.PMBP = 0,
                          +		.PMVCM = 0,
                          +		.PMPFIL = 0,
                          +	},
                          +	.power_management_2 = {
                          +		.LOSEL = 0,
                          +		.PMSL = 0,
                          +		.PMPLL = 0,
                          +		.MS = 0,
                          +		.PMHPL = 0,
                          +		.PMHPR = 0,
                          +		.reserved0 = 0,
                          +		.PMOSC = 0,
                          +	},
                          +	.signal_select_1 = {
                          +		.MGAIN20 = 0b110,
                          +		.PMMP = 0,
                          +		.MPSEL = 0,
                          +		.DACS = 0,
                          +		.MGAIN3 = 0,
                          +		.SLPSN = 0,
                          +	},
                          +	.signal_select_2 = {
                          +		.INR = 0b00,
                          +		.INL = 0b00,
                          +		.MICL = 0,
                          +		.reserved0 = 0,
                          +		.SPKG = 0b00,
                          +	},
                          +	.signal_select_3 = {
                          +		.MONO = 0b00,
                          +		.PTS = 0b01,
                          +		.reserved0 = 0,
                          +		.DACL = 0,
                          +		.LVCM = 0b01,
                          +	},
                          +	.mode_control_1 = {
                          +		.DIF = 0b10,
                          +		.CKOFF = 0,
                          +		.BCKO = 0,
                          +		.PLL = 0b0101,
                          +	},
                          +	.mode_control_2 = {
                          +		.FS = 0b1011,
                          +		.reserved0 = 0,
                          +		.CM = 0b00,
                          +	},
                          +	.mode_control_3 = {
                          +		.reserved0 = 0,
                          +		.IVOLC = 1,
                          +		.reserved1 = 0,
                          +		.DVOLC = 1,
                          +		.SMUTE = 0,
                          +		.THDET = 0,
                          +		.TSDSEL = 0,
                          +	},
                          +	.digital_mic = {
                          +		.DMIC = 0,
                          +		.DCLKP = 0,
                          +		.reserved0 = 0,
                          +		.DCLKE = 0,
                          +		.PMDML = 0,
                          +		.PMDMR = 1,
                          +		.reserved1 = 0,
                          +		.READ = 0,
                          +	},
                          +	.timer_select = {
                          +		.DVTM = 0,
                          +		.MOFF = 0,
                          +		.reserved0 = 0,
                          +		.FRN = 0,
                          +		.FRATT = 0,
                          +		.ADRST = 0b00,
                          +	},
                          +	.alc_timer_select = {
                          +		.RFST = 0b00,
                          +		.WTM = 0b00,
                          +		.EQFC = 0b10,
                          +		.IVTM = 1,
                          +		.reserved0 = 0,
                          +	},
                          +	.alc_mode_control_1 = {
                          +		.LMTH10 = 0b00,
                          +		.RGAIN = 0b000,
                          +		.ALC = 0,
                          +		.LMTH2 = 0,
                          +		.ALCEQN = 0,
                          +	},
                          +	.alc_mode_control_2 = {
                          +		.REF = 0xe1,
                          +	},
                          +	.l_ch_input_volume_control = {
                          +		.IV = 0xe1,
                          +	},
                          +	.r_ch_input_volume_control = {
                          +		.IV = 0xe1,
                          +	},
                          +	.alc_volume = {
                          +		.VOL = 0x00,	// Read-only.
                          +	},
                          +	._reserved_0x10 = 0x80,
                          +	.r_ch_mic_gain_setting = {
                          +		.MGR = 0x80,
                          +	},
                          +	.beep_control = {
                          +		.BPLVL = 0b0000,
                          +		.BEEPH = 0,
                          +		.BEEPS = 0,
                          +		.BPVCM = 0,
                          +		.HPZ = 0,
                          +	},
                          +	.l_ch_digital_volume_control = {
                          +		.DV = 0x18,
                          +	},
                          +	.r_ch_digital_volume_control = {
                          +		.DV = 0x18,
                          +	},
                          +	.eq_common_gain_select = {
                          +		.reserved0 = 0,
                          +		.EQC2 = 0,
                          +		.EQC3 = 0,
                          +		.EQC4 = 0,
                          +		.EQC5 = 0,
                          +		.reserved1 = 0,
                          +	},
                          +	.eq2_common_gain_setting = {
                          +		.EQnT = 0b00,
                          +		.EQnG = 0b000000,
                          +	},
                          +	.eq3_common_gain_setting = {
                          +		.EQnT = 0b00,
                          +		.EQnG = 0b000000,
                          +	},
                          +	.eq4_common_gain_setting = {
                          +		.EQnT = 0b00,
                          +		.EQnG = 0b000000,
                          +	},
                          +	.eq5_common_gain_setting = {
                          +		.EQnT = 0b00,
                          +		.EQnG = 0b000000,
                          +	},
                          +	.auto_hpf_control = {
                          +		.STG = 0b00,
                          +		.SENC = 0b011,
                          +		.AHPF = 0,
                          +		.reserved0 = 0,
                          +	},
                          +	.digital_filter_select_1 = {
                          +		.HPFAD = 1,
                          +		.HPFC = 0b00,
                          +		.reserved0 = 0,
                          +	},
                          +	.digital_filter_select_2 = {
                          +		.HPF = 0,
                          +		.LPF = 0,
                          +		.reserved0 = 0,
                          +		.FIL3 = 0,
                          +		.EQ0 = 0,
                          +		.GN = 0b00,
                          +	},
                          +	.digital_filter_mode = {
                          +		.PFSDO = 1,
                          +		.ADCPF = 1,
                          +		.PFDAC = 0b00,
                          +		.PFVOL = 0b00,
                          +		.reserved0 = 0,
                          +	},
                          +	
                          +	.hpf_2_coefficient_0 = { .l = 0xb0 },
                          +	.hpf_2_coefficient_1 = { .h = 0x1f, .reserved0 = 0 },
                          +	.hpf_2_coefficient_2 = { .l = 0x9f },
                          +	.hpf_2_coefficient_3 = { .h = 0x20, .reserved0 = 0 },
                          +	
                          +	.lpf_coefficient_0 = { .l = 0x00 },
                          +	.lpf_coefficient_1 = { .h = 0x00, .reserved0 = 0 },
                          +	.lpf_coefficient_2 = { .l = 0x00 },
                          +	.lpf_coefficient_3 = { .h = 0x00, .reserved0 = 0 },
                          +	
                          +	.fil_3_coefficient_0 = { .l = 0x00 },
                          +	.fil_3_coefficient_1 = { .h = 0x00, .reserved0 = 0, .s = 0 },
                          +	.fil_3_coefficient_2 = { .l = 0x00 },
                          +	.fil_3_coefficient_3 = { .h = 0x00, .reserved0 = 0 },
                          +	
                          +	.eq_coefficient_0 = { .l = 0x00 },
                          +	.eq_coefficient_1 = { .h = 0x00 },
                          +	.eq_coefficient_2 = { .l = 0x00 },
                          +	.eq_coefficient_3 = { .h = 0x00, .reserved0 = 0 },
                          +	.eq_coefficient_4 = { .l = 0x00 },
                          +	.eq_coefficient_5 = { .h = 0x00 },
                          +
                          +	.digital_filter_select_3 = {
                          +		.EQ1 = 0,
                          +		.EQ2 = 0,
                          +		.EQ3 = 0,
                          +		.EQ4 = 0,
                          +		.EQ5 = 0,
                          +		.reserved0 = 0,
                          +	},
                          +	.device_information = {
                          +		.DVN = 0b0001,
                          +		.REV = 0b1100,
                          +	},
                          +	
                          +	.e1_coefficient_0 = { .l = 0x00 },
                          +	.e1_coefficient_1 = { .h = 0x00 },
                          +	.e1_coefficient_2 = { .l = 0x00 },
                          +	.e1_coefficient_3 = { .h = 0x00 },
                          +	.e1_coefficient_4 = { .l = 0x00 },
                          +	.e1_coefficient_5 = { .h = 0x00 },
                          +	
                          +	.e2_coefficient_0 = { .l = 0x00 },
                          +	.e2_coefficient_1 = { .h = 0x00 },
                          +	.e2_coefficient_2 = { .l = 0x00 },
                          +	.e2_coefficient_3 = { .h = 0x00 },
                          +	.e2_coefficient_4 = { .l = 0x00 },
                          +	.e2_coefficient_5 = { .h = 0x00 },
                          +	
                          +	.e3_coefficient_0 = { .l = 0x00 },
                          +	.e3_coefficient_1 = { .h = 0x00 },
                          +	.e3_coefficient_2 = { .l = 0x00 },
                          +	.e3_coefficient_3 = { .h = 0x00 },
                          +	.e3_coefficient_4 = { .l = 0x00 },
                          +	.e3_coefficient_5 = { .h = 0x00 },
                          +	
                          +	.e4_coefficient_0 = { .l = 0x00 },
                          +	.e4_coefficient_1 = { .h = 0x00 },
                          +	.e4_coefficient_2 = { .l = 0x00 },
                          +	.e4_coefficient_3 = { .h = 0x00 },
                          +	.e4_coefficient_4 = { .l = 0x00 },
                          +	.e4_coefficient_5 = { .h = 0x00 },
                          +
                          +	.e5_coefficient_0 = { .l = 0x00 },
                          +	.e5_coefficient_1 = { .h = 0x00 },
                          +	.e5_coefficient_2 = { .l = 0x00 },
                          +	.e5_coefficient_3 = { .h = 0x00 },
                          +	.e5_coefficient_4 = { .l = 0x00 },
                          +	.e5_coefficient_5 = { .h = 0x00 },
                          +} };
                          +
                          +class AK4951 : public audio::Codec  {
                          +public:
                          +	constexpr AK4951(
                          +		I2C& bus,
                          +		const I2C::address_t bus_address
                          +	) : bus(bus),
                          +		bus_address(bus_address)
                          +	{
                          +	}
                          +
                          +	std::string name() const override {
                          +		return "AK4951";
                          +	}
                          +	
                          +	void init() override;
                          +	bool reset() override;
                          +
                          +	volume_range_t headphone_gain_range() const override {
                          +		return { -89.5_dB, 12.0_dB }; 
                          +	}
                          +
                          +	void headphone_enable() override;
                          +	void headphone_disable() override;
                          +
                          +	void speaker_enable();
                          +	void speaker_disable();
                          +
                          +	void set_headphone_volume(const volume_t volume) override;
                          +	void headphone_mute();
                          +
                          +	void microphone_enable();
                          +	void microphone_disable();
                          +
                          +	size_t reg_count() const override {
                          +		return asahi_kasei::ak4951::reg_count;
                          +	}
                          +
                          +	size_t reg_bits() const override {
                          +		return 8;
                          +	}
                          +
                          +	uint32_t reg_read(const size_t reg_address) override {
                          +		return read(reg_address);
                          +	}
                          +
                          +private:
                          +	I2C& bus;
                          +	const I2C::address_t bus_address;
                          +	RegisterMap map { default_after_reset };
                          +
                          +	enum class LineOutSelect {
                          +		Speaker,
                          +		Line,
                          +	};
                          +
                          +	void configure_digital_interface();
                          +	void set_digtal_volume_control(const reg_t value);
                          +	void set_dac_power(const bool enable);
                          +	void set_headphone_power(const bool enable);
                          +	void set_speaker_power(const bool enable);
                          +	void select_line_out(const LineOutSelect value);
                          +
                          +	reg_t read(const address_t reg_address);
                          +	void update(const Register reg);
                          +	void write(const address_t reg_address, const reg_t value);
                          +};
                          +
                          +} /* namespace ak4951 */
                          +} /* namespace asahi_kasei */
                          +
                          +#endif/*__AK4951_H__*/
                          
                          From 6e5549f1277a930b403a82ece942a9ffd97b11a8 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:47:13 -0700
                          Subject: [PATCH 24/39] Add hardware revision detection function.
                          
                          ---
                           firmware/application/portapack.cpp | 21 +++++++++++++++++++++
                           1 file changed, 21 insertions(+)
                          
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 60545ae92..eef2121a5 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -38,6 +38,8 @@ using wolfson::wm8731::WM8731;
                           
                           #include "cpld_update.hpp"
                           
                          +#include "optional.hpp"
                          +
                           namespace portapack {
                           
                           portapack::IO io {
                          @@ -108,6 +110,25 @@ private:
                           
                           static Power power;
                           
                          +enum class PortaPackModel {
                          +	R1_20150901,
                          +	R2_20170522,
                          +};
                          +
                          +static PortaPackModel portapack_model() {
                          +	static Optional model;
                          +
                          +	if( !model.is_valid() ) {
                          +		if( audio_codec_wm8731.detected() ) {
                          +			model = PortaPackModel::R1_20150901;
                          +		} else {
                          +			model = PortaPackModel::R2_20170522;
                          +		}
                          +	}
                          +
                          +	return model.value();
                          +}
                          +
                           void init() {
                           	for(const auto& pin : pins) {
                           		pin.init();
                          
                          From 4332bc763eb2ba43f3cdef4c2a7273056025dade Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:48:03 -0700
                          Subject: [PATCH 25/39] Audio: Use correct codec based on hardware revision.
                          
                          ---
                           firmware/application/CMakeLists.txt |  1 +
                           firmware/application/portapack.cpp  | 10 +++++++++-
                           2 files changed, 10 insertions(+), 1 deletion(-)
                          
                          diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
                          index 0243f7603..cb4aa6d91 100644
                          --- a/firmware/application/CMakeLists.txt
                          +++ b/firmware/application/CMakeLists.txt
                          @@ -122,6 +122,7 @@ set(CPPSRC
                           	clock_manager.cpp
                           	si5351.cpp
                           	${COMMON}/wm8731.cpp
                          +	${COMMON}/ak4951.cpp
                           	radio.cpp
                           	baseband_cpld.cpp
                           	tuning.cpp
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index eef2121a5..d46b1a64a 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -36,6 +36,9 @@ using namespace hackrf::one;
                           #include "wm8731.hpp"
                           using wolfson::wm8731::WM8731;
                           
                          +#include "ak4951.hpp"
                          +using asahi_kasei::ak4951::AK4951;
                          +
                           #include "cpld_update.hpp"
                           
                           #include "optional.hpp"
                          @@ -67,6 +70,7 @@ ClockManager clock_manager {
                           };
                           
                           WM8731 audio_codec_wm8731 { i2c0, 0x1a };
                          +AK4951 audio_codec_ak4951 { i2c0, 0x12 };
                           
                           ReceiverModel receiver_model;
                           
                          @@ -180,7 +184,11 @@ void init() {
                           
                           	portapack::io.init();
                           
                          -	audio::init(&audio_codec_wm8731);
                          +	if( portapack_model() == PortaPackModel::R2_20170522 ) {
                          +		audio::init(&audio_codec_ak4951);
                          +	} else {
                          +		audio::init(&audio_codec_wm8731);
                          +	}
                           	
                           	clock_manager.enable_first_if_clock();
                           	clock_manager.enable_second_if_clock();
                          
                          From 0fd52a7483508ff038392cd47544dde04472ccb9 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 11:50:59 -0700
                          Subject: [PATCH 26/39] CPLD: Move HDL project to hardware revision-specific
                           directory.
                          
                          ---
                           firmware/application/CMakeLists.txt                             | 2 +-
                           .../cpld/{ => 20150901}/output_files/portapack_h1_cpld.svf      | 0
                           hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.qpf | 0
                           hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.qsf | 0
                           hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.sdc | 0
                           hardware/portapack_h1/cpld/{ => 20150901}/top.vhd               | 0
                           hardware/portapack_h1/cpld/{ => 20150901}/top_tb.vhd            | 0
                           7 files changed, 1 insertion(+), 1 deletion(-)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/output_files/portapack_h1_cpld.svf (100%)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.qpf (100%)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.qsf (100%)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/portapack_h1_cpld.sdc (100%)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/top.vhd (100%)
                           rename hardware/portapack_h1/cpld/{ => 20150901}/top_tb.vhd (100%)
                          
                          diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
                          index cb4aa6d91..4b9d7aa2c 100644
                          --- a/firmware/application/CMakeLists.txt
                          +++ b/firmware/application/CMakeLists.txt
                          @@ -71,7 +71,7 @@ set(USE_FPU no)
                           # Project, sources and paths
                           #
                           
                          -set(CPLD_SVF_PATH ${HARDWARE_PATH}/portapack_h1/cpld/output_files/portapack_h1_cpld.svf)
                          +set(CPLD_SVF_PATH ${HARDWARE_PATH}/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf)
                           set(CPLD_DATA_CPP ${CMAKE_CURRENT_BINARY_DIR}/portapack_cpld_data.cpp)
                           
                           set(HACKRF_CPLD_DATA_HPP ${CMAKE_CURRENT_BINARY_DIR}/hackrf_cpld_data.hpp)
                          diff --git a/hardware/portapack_h1/cpld/output_files/portapack_h1_cpld.svf b/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/output_files/portapack_h1_cpld.svf
                          rename to hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf
                          diff --git a/hardware/portapack_h1/cpld/portapack_h1_cpld.qpf b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qpf
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/portapack_h1_cpld.qpf
                          rename to hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qpf
                          diff --git a/hardware/portapack_h1/cpld/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/portapack_h1_cpld.qsf
                          rename to hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          diff --git a/hardware/portapack_h1/cpld/portapack_h1_cpld.sdc b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.sdc
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/portapack_h1_cpld.sdc
                          rename to hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.sdc
                          diff --git a/hardware/portapack_h1/cpld/top.vhd b/hardware/portapack_h1/cpld/20150901/top.vhd
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/top.vhd
                          rename to hardware/portapack_h1/cpld/20150901/top.vhd
                          diff --git a/hardware/portapack_h1/cpld/top_tb.vhd b/hardware/portapack_h1/cpld/20150901/top_tb.vhd
                          similarity index 100%
                          rename from hardware/portapack_h1/cpld/top_tb.vhd
                          rename to hardware/portapack_h1/cpld/20150901/top_tb.vhd
                          
                          From 7c715ed91303bf5561097e5b5597c5102996b19c Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 15:21:25 -0700
                          Subject: [PATCH 27/39] CPLD: HDL for 20170522 hardware variant.
                          
                          ---
                           .../cpld/20170522/portapack_h1_cpld.qpf       |  30 ++
                           .../cpld/20170522/portapack_h1_cpld.qsf       | 291 ++++++++++++++++++
                           .../cpld/20170522/portapack_h1_cpld.sdc       | 116 +++++++
                           hardware/portapack_h1/cpld/20170522/top.vhd   | 173 +++++++++++
                           4 files changed, 610 insertions(+)
                           create mode 100644 hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qpf
                           create mode 100644 hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                           create mode 100644 hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.sdc
                           create mode 100644 hardware/portapack_h1/cpld/20170522/top.vhd
                          
                          diff --git a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qpf b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qpf
                          new file mode 100644
                          index 000000000..0ced0c844
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qpf
                          @@ -0,0 +1,30 @@
                          +# -------------------------------------------------------------------------- #
                          +#
                          +# Copyright (C) 1991-2014 Altera Corporation
                          +# Your use of Altera Corporation's design tools, logic functions 
                          +# and other software and tools, and its AMPP partner logic 
                          +# functions, and any output files from any of the foregoing 
                          +# (including device programming or simulation files), and any 
                          +# associated documentation or information are expressly subject 
                          +# to the terms and conditions of the Altera Program License 
                          +# Subscription Agreement, Altera MegaCore Function License 
                          +# Agreement, or other applicable license agreement, including, 
                          +# without limitation, that your use is for the sole purpose of 
                          +# programming logic devices manufactured by Altera and sold by 
                          +# Altera or its authorized distributors.  Please refer to the 
                          +# applicable agreement for further details.
                          +#
                          +# -------------------------------------------------------------------------- #
                          +#
                          +# Quartus II 32-bit
                          +# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
                          +# Date created = 21:24:55  April 29, 2014
                          +#
                          +# -------------------------------------------------------------------------- #
                          +
                          +QUARTUS_VERSION = "13.1"
                          +DATE = "21:24:55  April 29, 2014"
                          +
                          +# Revisions
                          +
                          +PROJECT_REVISION = "portapack_h1_cpld"
                          diff --git a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          new file mode 100644
                          index 000000000..c2a274d8a
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          @@ -0,0 +1,291 @@
                          +# -------------------------------------------------------------------------- #
                          +#
                          +# Copyright (C) 1991-2014 Altera Corporation
                          +# Your use of Altera Corporation's design tools, logic functions 
                          +# and other software and tools, and its AMPP partner logic 
                          +# functions, and any output files from any of the foregoing 
                          +# (including device programming or simulation files), and any 
                          +# associated documentation or information are expressly subject 
                          +# to the terms and conditions of the Altera Program License 
                          +# Subscription Agreement, Altera MegaCore Function License 
                          +# Agreement, or other applicable license agreement, including, 
                          +# without limitation, that your use is for the sole purpose of 
                          +# programming logic devices manufactured by Altera and sold by 
                          +# Altera or its authorized distributors.  Please refer to the 
                          +# applicable agreement for further details.
                          +#
                          +# -------------------------------------------------------------------------- #
                          +#
                          +# Quartus II 32-bit
                          +# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
                          +# Date created = 21:24:55  April 29, 2014
                          +#
                          +# -------------------------------------------------------------------------- #
                          +#
                          +# Notes:
                          +#
                          +# 1) The default values for assignments are stored in the file:
                          +#		portapack_h1_cpld_assignment_defaults.qdf
                          +#    If this file doesn't exist, see file:
                          +#		assignment_defaults.qdf
                          +#
                          +# 2) Altera recommends that you do not modify this file. This
                          +#    file is updated automatically by the Quartus II software
                          +#    and any changes you make may be lost or overwritten.
                          +#
                          +# -------------------------------------------------------------------------- #
                          +
                          +
                          +set_global_assignment -name FAMILY "MAX V"
                          +set_global_assignment -name DEVICE 5M40ZE64C5
                          +set_global_assignment -name TOP_LEVEL_ENTITY top
                          +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1
                          +set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:24:55  APRIL 29, 2014"
                          +set_global_assignment -name LAST_QUARTUS_VERSION 14.1.0
                          +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
                          +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
                          +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
                          +set_global_assignment -name DEVICE_FILTER_PACKAGE EQFP
                          +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 64
                          +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR "-1"
                          +set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
                          +set_global_assignment -name EDA_NETLIST_WRITER_OUTPUT_DIR simulation/modelsim -section_id eda_simulation
                          +set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation
                          +set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008
                          +set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF
                          +set_global_assignment -name SDC_FILE portapack_h1_cpld.sdc
                          +set_global_assignment -name VHDL_FILE top.vhd
                          +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVCMOS"
                          +set_location_assignment PIN_43 -to LCD_DB[15]
                          +set_location_assignment PIN_44 -to LCD_DB[14]
                          +set_location_assignment PIN_45 -to LCD_DB[13]
                          +set_location_assignment PIN_46 -to LCD_DB[12]
                          +set_location_assignment PIN_47 -to LCD_DB[11]
                          +set_location_assignment PIN_48 -to LCD_DB[10]
                          +set_location_assignment PIN_49 -to LCD_DB[9]
                          +set_location_assignment PIN_50 -to LCD_DB[8]
                          +set_location_assignment PIN_51 -to LCD_DB[7]
                          +set_location_assignment PIN_52 -to LCD_DB[6]
                          +set_location_assignment PIN_53 -to LCD_DB[5]
                          +set_location_assignment PIN_54 -to LCD_DB[4]
                          +set_location_assignment PIN_55 -to LCD_DB[3]
                          +set_location_assignment PIN_56 -to LCD_DB[2]
                          +set_location_assignment PIN_58 -to LCD_DB[1]
                          +set_location_assignment PIN_59 -to LCD_DB[0]
                          +set_location_assignment PIN_60 -to LCD_RDX
                          +set_location_assignment PIN_62 -to LCD_RS
                          +set_location_assignment PIN_63 -to LCD_TE
                          +set_location_assignment PIN_61 -to LCD_WRX
                          +set_location_assignment PIN_10 -to SW_D
                          +set_location_assignment PIN_28 -to SW_L
                          +set_location_assignment PIN_9 -to SW_R
                          +set_location_assignment PIN_11 -to SW_ROT_A
                          +set_location_assignment PIN_12 -to SW_ROT_B
                          +set_location_assignment PIN_13 -to SW_SEL
                          +set_location_assignment PIN_25 -to SW_U
                          +set_location_assignment PIN_1 -to TP_D
                          +set_location_assignment PIN_2 -to TP_L
                          +set_location_assignment PIN_64 -to TP_R
                          +set_location_assignment PIN_3 -to TP_U
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_D
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_L
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_R
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_ROT_A
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_ROT_B
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_SEL
                          +set_instance_assignment -name IO_STANDARD "3.3V SCHMITT TRIGGER INPUT" -to SW_U
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to TP_D
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to TP_L
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to TP_R
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to TP_U
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[15]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[14]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[13]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[12]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[11]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[10]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[9]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[8]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[7]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[6]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[5]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[4]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[3]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[2]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[1]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_DB[0]
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_RDX
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_RS
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_TE
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_WRX
                          +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS TEST_BENCH_MODE -section_id eda_simulation
                          +set_global_assignment -name EDA_NATIVELINK_SIMULATION_TEST_BENCH top_tb -section_id eda_simulation
                          +set_global_assignment -name EDA_TEST_BENCH_NAME top_tb -section_id eda_simulation
                          +set_global_assignment -name EDA_DESIGN_INSTANCE_NAME uut -section_id top_tb
                          +set_global_assignment -name EDA_TEST_BENCH_MODULE_NAME top_tb -section_id top_tb
                          +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR"
                          +set_global_assignment -name EDA_TEST_BENCH_RUN_SIM_FOR "500 ns" -section_id top_tb
                          +set_global_assignment -name EDA_TEST_BENCH_FILE top_tb.vhd -section_id top_tb
                          +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "BSDL (Boundary Scan)"
                          +set_global_assignment -name EDA_NETLIST_WRITER_OUTPUT_DIR /home/jboone/src/portapack/portapack_hackrf/hardware/portapack_h1/cpld -section_id eda_board_design_boundary_scan
                          +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION POST_CONFIG -section_id eda_board_design_boundary_scan
                          +set_global_assignment -name AUTO_RESTART_CONFIGURATION OFF
                          +set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
                          +set_global_assignment -name ENABLE_NCE_PIN OFF
                          +set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF
                          +set_global_assignment -name USE_CONFIGURATION_DEVICE ON
                          +set_global_assignment -name GENERATE_RBF_FILE OFF
                          +set_global_assignment -name GENERATE_SVF_FILE ON
                          +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH BUS-HOLD"
                          +set_location_assignment PIN_38 -to LCD_RESETX
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_RESETX
                          +set_location_assignment PIN_18 -to MCU_D[7]
                          +set_location_assignment PIN_19 -to MCU_D[6]
                          +set_location_assignment PIN_21 -to MCU_D[5]
                          +set_location_assignment PIN_20 -to MCU_D[4]
                          +set_location_assignment PIN_22 -to MCU_D[3]
                          +set_location_assignment PIN_24 -to MCU_D[2]
                          +set_location_assignment PIN_27 -to MCU_D[1]
                          +set_location_assignment PIN_26 -to MCU_D[0]
                          +set_location_assignment PIN_33 -to MCU_ADDR
                          +set_location_assignment PIN_42 -to MCU_DIR
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_ADDR
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[7]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[6]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[5]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[4]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[3]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[2]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[1]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_D[0]
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_DIR
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_D
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_L
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_R
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_U
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_ROT_B
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_SEL
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to SW_ROT_A
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[15]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[14]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[13]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[12]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[11]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[10]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[9]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[8]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[7]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[6]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[5]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[4]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[3]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[2]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[1]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_DB[0]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_RDX
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_RESETX
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_RS
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_TE
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_WRX
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_ADDR
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[7]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[6]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[5]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[4]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[3]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[2]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[1]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_D[0]
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_DIR
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_D
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_L
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_R
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_ROT_A
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_ROT_B
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_SEL
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to SW_U
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to TP_D
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to TP_L
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to TP_R
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to TP_U
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[15]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[14]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[13]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[12]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[11]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[10]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[9]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[8]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[7]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[6]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[5]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[4]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[3]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[2]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[1]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_DB[0]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_RDX
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_RESETX
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_RS
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_TE
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_WRX
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_ADDR
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[7]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[6]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[5]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[4]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[3]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[2]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[1]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_D[0]
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_DIR
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_D
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_L
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_R
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_ROT_A
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_ROT_B
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_SEL
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to SW_U
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to TP_D
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to TP_L
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to TP_R
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to TP_U
                          +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET ON
                          +set_global_assignment -name IOBANK_VCCIO 1.8V -section_id 2
                          +set_global_assignment -name IOBANK_VCCIO 3.3V -section_id 1
                          +set_instance_assignment -name PCI_IO OFF -to MCU_DIR
                          +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER ON
                          +set_location_assignment PIN_37 -to LCD_BACKLIGHT
                          +set_instance_assignment -name IO_STANDARD "1.8 V" -to LCD_BACKLIGHT
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to LCD_BACKLIGHT
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to LCD_BACKLIGHT
                          +set_location_assignment PIN_4 -to AUDIO_RESETX
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to AUDIO_RESETX
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to AUDIO_RESETX
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to AUDIO_RESETX
                          +set_location_assignment PIN_30 -to MCU_LCD_RD
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_LCD_RD
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_LCD_RD
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_LCD_RD
                          +set_location_assignment PIN_40 -to MCU_LCD_WR
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_LCD_WR
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_LCD_WR
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_LCD_WR
                          +set_instance_assignment -name PCI_IO OFF -to MCU_LCD_WR
                          +set_location_assignment PIN_32 -to MCU_IO_STBX
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_IO_STBX
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_IO_STBX
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_IO_STBX
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to TP_R
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to TP_D
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to TP_L
                          +set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to TP_U
                          +set_location_assignment PIN_31 -to MCU_LCD_TE
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_LCD_TE
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_LCD_TE
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_LCD_TE
                          +set_location_assignment PIN_34 -to MCU_P2_8
                          +set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_P2_8
                          +set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_P2_8
                          +set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
                          +set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
                          \ No newline at end of file
                          diff --git a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.sdc b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.sdc
                          new file mode 100644
                          index 000000000..7417b9444
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.sdc
                          @@ -0,0 +1,116 @@
                          +## Generated SDC file "portapack_hackrf_one_cpld.sdc"
                          +
                          +## Copyright (C) 1991-2014 Altera Corporation
                          +## Your use of Altera Corporation's design tools, logic functions 
                          +## and other software and tools, and its AMPP partner logic 
                          +## functions, and any output files from any of the foregoing 
                          +## (including device programming or simulation files), and any 
                          +## associated documentation or information are expressly subject 
                          +## to the terms and conditions of the Altera Program License 
                          +## Subscription Agreement, Altera MegaCore Function License 
                          +## Agreement, or other applicable license agreement, including, 
                          +## without limitation, that your use is for the sole purpose of 
                          +## programming logic devices manufactured by Altera and sold by 
                          +## Altera or its authorized distributors.  Please refer to the 
                          +## applicable agreement for further details.
                          +
                          +
                          +## VENDOR  "Altera"
                          +## PROGRAM "Quartus II"
                          +## VERSION "Version 13.1.4 Build 182 03/12/2014 SJ Web Edition"
                          +
                          +## DATE    "Sat May  3 10:22:18 2014"
                          +
                          +##
                          +## DEVICE  "5M40ZE64C5"
                          +##
                          +
                          +# RS = 0, D = DB[15:8]
                          +#		wait max(tast = 0 ns, CPLD setup = ?)
                          +# WR = 0, D = DB[7:0]
                          +#		wait max(CPLD )
                          +
                          +#**************************************************************
                          +# Time Information
                          +#**************************************************************
                          +
                          +set_time_format -unit ns -decimal_places 3
                          +
                          +set mcu_clk_period 4.9
                          +
                          +set lcd_data_wr_setup 10.0
                          +set lcd_data_wr_hold 10.0
                          +
                          +#**************************************************************
                          +# Create Clock
                          +#**************************************************************
                          +
                          +create_clock -name {MCU_LCD_WR} -period 66.000 -waveform { 0.000 33.000 } [get_ports {MCU_LCD_WR}]
                          +#create_clock -name strobe_virt -period 66.000
                          +
                          +#**************************************************************
                          +# Create Generated Clock
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Clock Latency
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Clock Uncertainty
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Input Delay
                          +#**************************************************************
                          +
                          +#set_input_delay -clock strobe_virt [get_ports {D[*]}]
                          +
                          +#**************************************************************
                          +# Set Output Delay
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Clock Groups
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set False Path
                          +#**************************************************************
                          +
                          +#set_false_path -from [get_clocks {MCU_IO_STBX}] -to [get_ports {TP_D TP_L TP_R TP_U}]
                          +#set_false_path -from [get_ports {SW_D SW_L SW_R SW_ROT_A SW_ROT_B SW_SEL SW_U}] -to [get_ports {MCU_D[*]}]
                          +
                          +
                          +#**************************************************************
                          +# Set Multicycle Path
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Maximum Delay
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Minimum Delay
                          +#**************************************************************
                          +
                          +
                          +
                          +#**************************************************************
                          +# Set Input Transition
                          +#**************************************************************
                          +
                          diff --git a/hardware/portapack_h1/cpld/20170522/top.vhd b/hardware/portapack_h1/cpld/20170522/top.vhd
                          new file mode 100644
                          index 000000000..d9969ff46
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/top.vhd
                          @@ -0,0 +1,173 @@
                          +--
                          +-- Copyright (C) 2012 Jared Boone, ShareBrained Technology, Inc.
                          +--
                          +-- This file is part of PortaPack.
                          +--
                          +-- This program is free software; you can redistribute it and/or modify
                          +-- it under the terms of the GNU General Public License as published by
                          +-- the Free Software Foundation; either version 2, or (at your option)
                          +-- any later version.
                          +--
                          +-- This program is distributed in the hope that it will be useful,
                          +-- but WITHOUT ANY WARRANTY; without even the implied warranty of
                          +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          +-- GNU General Public License for more details.
                          +--
                          +-- You should have received a copy of the GNU General Public License
                          +-- along with this program; see the file COPYING.  If not, write to
                          +-- the Free Software Foundation, Inc., 51 Franklin Street,
                          +-- Boston, MA 02110-1301, USA.
                          +
                          +library ieee;
                          +use ieee.std_logic_1164.all;
                          +
                          +entity top is
                          +	port (
                          +		MCU_D				:	inout	std_logic_vector(7 downto 0);
                          +		MCU_DIR			:	in		std_logic;
                          +		MCU_IO_STBX		:	in		std_logic;
                          +		MCU_LCD_WR		:	in		std_logic;
                          +		MCU_ADDR			:	in		std_logic;
                          +		MCU_LCD_TE		:	out	std_logic;
                          +		MCU_P2_8			:	in		std_logic;
                          +		MCU_LCD_RD		:	in		std_logic;
                          +		
                          +		TP_U				:	out	std_logic;
                          +		TP_D				:	out	std_logic;
                          +		TP_L				:	out	std_logic;
                          +		TP_R				:	out	std_logic;
                          +		
                          +		SW_SEL			:	in		std_logic;
                          +		SW_ROT_A			:	in		std_logic;
                          +		SW_ROT_B			:	in		std_logic;
                          +		SW_U				:	in		std_logic;
                          +		SW_D				:	in		std_logic;
                          +		SW_L				:	in		std_logic;
                          +		SW_R				:	in		std_logic;
                          +		
                          +		LCD_RESETX		:	out	std_logic;
                          +		LCD_RS			:	out	std_logic;
                          +		LCD_WRX			:	out	std_logic;
                          +		LCD_RDX			:	out	std_logic;
                          +		LCD_DB			:	inout	std_logic_vector(15 downto 0);
                          +		LCD_TE			:	in		std_logic;
                          +		LCD_BACKLIGHT	:	out	std_logic;
                          +
                          +		AUDIO_RESETX	:	out std_logic
                          +	);
                          +end top;
                          +
                          +architecture rtl of top is
                          +
                          +	signal	switches : std_logic_vector(7 downto 0);
                          +	
                          +	type data_direction_t is (from_mcu, to_mcu);
                          +	signal	data_dir	: data_direction_t;
                          +	
                          +	signal	mcu_data_out_lcd : std_logic_vector(7 downto 0);
                          +	signal	mcu_data_out_io : std_logic_vector(7 downto 0);
                          +	signal	mcu_data_out : std_logic_vector(7 downto 0);
                          +	signal	mcu_data_in	: std_logic_vector(7 downto 0);
                          +	
                          +	signal	lcd_data_in : std_logic_vector(15 downto 0);
                          +	signal  lcd_data_in_mux : std_logic_vector(7 downto 0);
                          +	signal	lcd_data_out : std_logic_vector(15 downto 0);
                          +	
                          +	signal  lcd_data_in_q : std_logic_vector(7 downto 0) := (others => '0');
                          +	signal  lcd_data_out_q : std_logic_vector(7 downto 0) := (others => '0');
                          +	
                          +	signal	tp_q : std_logic_vector(7 downto 0) := (others => '0');
                          +	
                          +	signal	lcd_reset_q : std_logic := '1';
                          +	signal	lcd_backlight_q : std_logic := '0';
                          +
                          +	signal	audio_reset_q : std_logic := '1';
                          +
                          +	signal	dir_read : boolean;
                          +	signal	dir_write : boolean;
                          +	
                          +	signal	lcd_read_strobe : boolean;
                          +	signal	lcd_write_strobe : boolean;
                          +	signal	lcd_write : boolean;
                          +
                          +	signal	io_strobe : boolean;
                          +	signal	io_read_strobe : boolean;
                          +	signal	io_write_strobe : boolean;
                          +	
                          +begin
                          +
                          +	-- I/O data
                          +	switches <= LCD_TE & not SW_ROT_B & not SW_ROT_A & not SW_SEL & not SW_U & not SW_D & not SW_L & not SW_R;
                          +
                          +	TP_U <= tp_q(3) when tp_q(7) = '1' else 'Z';
                          +	TP_D <= tp_q(2) when tp_q(6) = '1' else 'Z';
                          +	TP_L <= tp_q(1) when tp_q(5) = '1' else 'Z';
                          +	TP_R <= tp_q(0) when tp_q(4) = '1' else 'Z';
                          +	
                          +	LCD_BACKLIGHT <= lcd_backlight_q;
                          +	
                          +	MCU_LCD_TE <= LCD_TE;
                          +	
                          +	-- State management
                          +	data_dir <= to_mcu when MCU_DIR = '1' else from_mcu;
                          +	dir_read <= (data_dir = to_mcu);
                          +	dir_write <= (data_dir = from_mcu);
                          +
                          +	io_strobe <= (MCU_IO_STBX = '0');
                          +	io_read_strobe <= io_strobe and dir_read;
                          +
                          +	lcd_read_strobe <= (MCU_LCD_RD = '1');
                          +	lcd_write <= not lcd_read_strobe;
                          +
                          +	-- LCD interface
                          +	LCD_RS <= MCU_ADDR;
                          +	LCD_RDX <= not MCU_LCD_RD;
                          +	LCD_WRX <= not MCU_LCD_WR;
                          +
                          +	lcd_data_out <= lcd_data_out_q & mcu_data_in;
                          +	lcd_data_in <= LCD_DB;
                          +	LCD_DB <= lcd_data_out when lcd_write else (others => 'Z');
                          +	
                          +	LCD_RESETX <= not lcd_reset_q;
                          +	AUDIO_RESETX <= not audio_reset_q;
                          +	
                          +	-- MCU interface
                          +	mcu_data_out_lcd <= lcd_data_in(15 downto 8) when lcd_read_strobe else lcd_data_in_q;
                          +	mcu_data_out_io <= switches;
                          +	mcu_data_out <= mcu_data_out_io when io_read_strobe else mcu_data_out_lcd;
                          +
                          +	mcu_data_in <= MCU_D;
                          +	MCU_D <= mcu_data_out when dir_read else (others => 'Z');
                          +	
                          +	-- Synchronous behaviors:
                          +	-- LCD write: Capture LCD high byte on LCD_WRX falling edge.
                          +	process(MCU_LCD_WR, mcu_data_in)
                          +	begin
                          +		if rising_edge(MCU_LCD_WR) then
                          +			lcd_data_out_q <= mcu_data_in;
                          +		end if;
                          +	end process;
                          +	
                          +	-- LCD read: Capture LCD low byte on LCD_RD falling edge.
                          +	process(MCU_LCD_RD, lcd_data_in)
                          +	begin
                          +		if falling_edge(MCU_LCD_RD) then
                          +			lcd_data_in_q <= lcd_data_in(7 downto 0);
                          +		end if;
                          +	end process;
                          +	
                          +	-- I/O write (to resistive touch panel): Capture data from
                          +	-- MCU and hold on TP pins until further notice.
                          +	process(MCU_IO_STBX, dir_write, mcu_data_in, MCU_ADDR)
                          +	begin
                          +		if rising_edge(MCU_IO_STBX) and dir_write then
                          +			if MCU_ADDR = '0' then
                          +				tp_q <= mcu_data_in;
                          +			else
                          +				lcd_reset_q <= mcu_data_in(0);
                          +				audio_reset_q <= mcu_data_in(1);
                          +				lcd_backlight_q <= mcu_data_in(7);
                          +			end if;
                          +		end if;
                          +	end process;
                          +end rtl;
                          
                          From 73d62367d16546ad1c0fc4605ffbfb1dec2bf92c Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 21:05:47 -0700
                          Subject: [PATCH 28/39] CPLD: Makefiles for both hardware variants.
                          
                          ---
                           hardware/portapack_h1/cpld/20150901/Makefile | 108 +++++++++++++++++++
                           hardware/portapack_h1/cpld/20170522/Makefile | 108 +++++++++++++++++++
                           2 files changed, 216 insertions(+)
                           create mode 100644 hardware/portapack_h1/cpld/20150901/Makefile
                           create mode 100644 hardware/portapack_h1/cpld/20170522/Makefile
                          
                          diff --git a/hardware/portapack_h1/cpld/20150901/Makefile b/hardware/portapack_h1/cpld/20150901/Makefile
                          new file mode 100644
                          index 000000000..bff952ff1
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20150901/Makefile
                          @@ -0,0 +1,108 @@
                          +#
                          +# Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
                          +#
                          +# This file is part of PortaPack.
                          +#
                          +# This program is free software; you can redistribute it and/or modify
                          +# it under the terms of the GNU General Public License as published by
                          +# the Free Software Foundation; either version 2, or (at your option)
                          +# any later version.
                          +#
                          +# This program is distributed in the hope that it will be useful,
                          +# but WITHOUT ANY WARRANTY; without even the implied warranty of
                          +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          +# GNU General Public License for more details.
                          +#
                          +# You should have received a copy of the GNU General Public License
                          +# along with this program; see the file COPYING.  If not, write to
                          +# the Free Software Foundation, Inc., 51 Franklin Street,
                          +# Boston, MA 02110-1301, USA.
                          +
                          +# Makefile based on Altera Quartus documentation example, topic
                          +# "About Using Quartus II from the Command Line"
                          +
                          +###################################################################
                          +# Project Configuration: 
                          +# 
                          +# Specify the name of the design (project) and Quartus II Settings 
                          +# File (.qsf) and the list of source files used.
                          +###################################################################
                          +
                          +PROJECT=portapack_h1_cpld
                          +SOURCE_FILES=top.vhd
                          +ASSIGNMENT_FILES=$(PROJECT).qpf $(PROJECT).qsf $(PROJECT).sdc
                          +OUTPUT_DIR=output_files
                          +
                          +###################################################################
                          +# Main Targets
                          +#
                          +# all: build everything
                          +# clean: remove output files and database
                          +###################################################################
                          +
                          +all: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                          +
                          +clean:
                          +	rm -rf *.chg smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                          +
                          +map: smart.log $(OUTPUT_DIR)/$(PROJECT).map.rpt
                          +
                          +fit: smart.log $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +
                          +asm: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt
                          +
                          +sta: smart.log $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                          +
                          +smart: smart.log
                          +
                          +###################################################################
                          +# Executable Configuration
                          +###################################################################
                          +
                          +MAP_ARGS=
                          +FIT_ARGS=
                          +ASM_ARGS=
                          +STA_ARGS=
                          +
                          +###################################################################
                          +# Target implementations
                          +###################################################################
                          +
                          +STAMP = echo done >
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).map.rpt: $(SOURCE_FILES)
                          +	quartus_map $(MAP_ARGS) $(PROJECT)
                          +	$(STAMP) fit.chg
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).fit.rpt: fit.chg $(OUTPUT_DIR)/$(PROJECT).map.rpt
                          +	quartus_fit $(FIT_ARGS) $(PROJECT)
                          +	$(STAMP) asm.chg
                          +	$(STAMP) sta.chg
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).asm.rpt: asm.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +	quartus_asm $(ASM_ARGS) $(PROJECT)
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).sta.rpt: sta.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +	quartus_sta $(STA_ARGS) $(PROJECT)
                          +
                          +smart.log: $(ASSIGNMENT_FILES) $(OUTPUT_DIR)
                          +	quartus_sh --determine_smart_action $(PROJECT) > smart.log
                          +
                          +###################################################################
                          +# Project initialization
                          +###################################################################
                          +
                          +$(OUTPUT_DIR):
                          +	mkdir $(OUTPUT_DIR)
                          +
                          +$(ASSIGNMENT_FILES): $(OUTPUT_DIR)
                          +	quartus_sh --prepare $(PROJECT)
                          +
                          +fit.chg:
                          +	$(STAMP) fit.chg
                          +
                          +sta.chg:
                          +	$(STAMP) sta.chg
                          +
                          +asm.chg:
                          +	$(STAMP) asm.chg
                          diff --git a/hardware/portapack_h1/cpld/20170522/Makefile b/hardware/portapack_h1/cpld/20170522/Makefile
                          new file mode 100644
                          index 000000000..bff952ff1
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/Makefile
                          @@ -0,0 +1,108 @@
                          +#
                          +# Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc.
                          +#
                          +# This file is part of PortaPack.
                          +#
                          +# This program is free software; you can redistribute it and/or modify
                          +# it under the terms of the GNU General Public License as published by
                          +# the Free Software Foundation; either version 2, or (at your option)
                          +# any later version.
                          +#
                          +# This program is distributed in the hope that it will be useful,
                          +# but WITHOUT ANY WARRANTY; without even the implied warranty of
                          +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          +# GNU General Public License for more details.
                          +#
                          +# You should have received a copy of the GNU General Public License
                          +# along with this program; see the file COPYING.  If not, write to
                          +# the Free Software Foundation, Inc., 51 Franklin Street,
                          +# Boston, MA 02110-1301, USA.
                          +
                          +# Makefile based on Altera Quartus documentation example, topic
                          +# "About Using Quartus II from the Command Line"
                          +
                          +###################################################################
                          +# Project Configuration: 
                          +# 
                          +# Specify the name of the design (project) and Quartus II Settings 
                          +# File (.qsf) and the list of source files used.
                          +###################################################################
                          +
                          +PROJECT=portapack_h1_cpld
                          +SOURCE_FILES=top.vhd
                          +ASSIGNMENT_FILES=$(PROJECT).qpf $(PROJECT).qsf $(PROJECT).sdc
                          +OUTPUT_DIR=output_files
                          +
                          +###################################################################
                          +# Main Targets
                          +#
                          +# all: build everything
                          +# clean: remove output files and database
                          +###################################################################
                          +
                          +all: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                          +
                          +clean:
                          +	rm -rf *.chg smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                          +
                          +map: smart.log $(OUTPUT_DIR)/$(PROJECT).map.rpt
                          +
                          +fit: smart.log $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +
                          +asm: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt
                          +
                          +sta: smart.log $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                          +
                          +smart: smart.log
                          +
                          +###################################################################
                          +# Executable Configuration
                          +###################################################################
                          +
                          +MAP_ARGS=
                          +FIT_ARGS=
                          +ASM_ARGS=
                          +STA_ARGS=
                          +
                          +###################################################################
                          +# Target implementations
                          +###################################################################
                          +
                          +STAMP = echo done >
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).map.rpt: $(SOURCE_FILES)
                          +	quartus_map $(MAP_ARGS) $(PROJECT)
                          +	$(STAMP) fit.chg
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).fit.rpt: fit.chg $(OUTPUT_DIR)/$(PROJECT).map.rpt
                          +	quartus_fit $(FIT_ARGS) $(PROJECT)
                          +	$(STAMP) asm.chg
                          +	$(STAMP) sta.chg
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).asm.rpt: asm.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +	quartus_asm $(ASM_ARGS) $(PROJECT)
                          +
                          +$(OUTPUT_DIR)/$(PROJECT).sta.rpt: sta.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt
                          +	quartus_sta $(STA_ARGS) $(PROJECT)
                          +
                          +smart.log: $(ASSIGNMENT_FILES) $(OUTPUT_DIR)
                          +	quartus_sh --determine_smart_action $(PROJECT) > smart.log
                          +
                          +###################################################################
                          +# Project initialization
                          +###################################################################
                          +
                          +$(OUTPUT_DIR):
                          +	mkdir $(OUTPUT_DIR)
                          +
                          +$(ASSIGNMENT_FILES): $(OUTPUT_DIR)
                          +	quartus_sh --prepare $(PROJECT)
                          +
                          +fit.chg:
                          +	$(STAMP) fit.chg
                          +
                          +sta.chg:
                          +	$(STAMP) sta.chg
                          +
                          +asm.chg:
                          +	$(STAMP) asm.chg
                          
                          From 797e63a590f7dcf68c22feccc26b57edbf10fe90 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Wed, 31 May 2017 22:28:07 -0700
                          Subject: [PATCH 29/39] CPLD: Use correct bitstream for updating hardware.
                          
                          Determine hardware version and use one of two CPLD bitstream files.
                          ---
                           firmware/application/CMakeLists.txt           |    22 +-
                           firmware/application/cpld_update.cpp          |    16 +-
                           firmware/application/cpld_update.hpp          |     8 +-
                           firmware/application/portapack.cpp            |    11 +-
                           firmware/common/portapack_cpld_data.hpp       |     7 +
                           firmware/tools/extract_cpld_data.py           |    11 +-
                           .../output_files/portapack_h1_cpld.svf        |  8029 +++++------
                           .../cpld/20150901/portapack_h1_cpld.qsf       |     2 +-
                           .../output_files/portapack_h1_cpld.svf        | 11651 ++++++++++++++++
                           .../cpld/20170522/portapack_h1_cpld.qsf       |     2 +-
                           10 files changed, 15722 insertions(+), 4037 deletions(-)
                           create mode 100644 hardware/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.svf
                          
                          diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
                          index 4b9d7aa2c..be3e8ba2e 100644
                          --- a/firmware/application/CMakeLists.txt
                          +++ b/firmware/application/CMakeLists.txt
                          @@ -71,8 +71,11 @@ set(USE_FPU no)
                           # Project, sources and paths
                           #
                           
                          -set(CPLD_SVF_PATH ${HARDWARE_PATH}/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf)
                          -set(CPLD_DATA_CPP ${CMAKE_CURRENT_BINARY_DIR}/portapack_cpld_data.cpp)
                          +set(CPLD_20150901_SVF_PATH ${HARDWARE_PATH}/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf)
                          +set(CPLD_20150901_DATA_CPP ${CMAKE_CURRENT_BINARY_DIR}/portapack_cpld_20150901_data.cpp)
                          +
                          +set(CPLD_20170522_SVF_PATH ${HARDWARE_PATH}/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.svf)
                          +set(CPLD_20170522_DATA_CPP ${CMAKE_CURRENT_BINARY_DIR}/portapack_cpld_20170522_data.cpp)
                           
                           set(HACKRF_CPLD_DATA_HPP ${CMAKE_CURRENT_BINARY_DIR}/hackrf_cpld_data.hpp)
                           set(HACKRF_CPLD_DATA_CPP ${CMAKE_CURRENT_BINARY_DIR}/hackrf_cpld_data.cpp)
                          @@ -194,7 +197,8 @@ set(CPPSRC
                           	${COMMON}/jtag.cpp
                           	${COMMON}/jtag_tap.cpp
                           	cpld_update.cpp
                          -	${CPLD_DATA_CPP}
                          +	${CPLD_20150901_DATA_CPP}
                          +	${CPLD_20170522_DATA_CPP}
                           	${HACKRF_CPLD_DATA_CPP}
                           )
                           
                          @@ -310,9 +314,15 @@ include(${RULESPATH}/rules.cmake)
                           ##############################################################################
                           
                           add_custom_command(
                          -	OUTPUT ${CPLD_DATA_CPP}
                          -	COMMAND ${EXTRACT_CPLD_DATA} ${CPLD_SVF_PATH} >${CPLD_DATA_CPP}
                          -	DEPENDS ${EXTRACT_CPLD_DATA} ${CPLD_SVF_PATH}
                          +	OUTPUT ${CPLD_20150901_DATA_CPP}
                          +	COMMAND ${EXTRACT_CPLD_DATA} ${CPLD_20150901_SVF_PATH} rev_20150901 >${CPLD_20150901_DATA_CPP}
                          +	DEPENDS ${EXTRACT_CPLD_DATA} ${CPLD_20150901_SVF_PATH}
                          +)
                          +
                          +add_custom_command(
                          +	OUTPUT ${CPLD_20170522_DATA_CPP}
                          +	COMMAND ${EXTRACT_CPLD_DATA} ${CPLD_20170522_SVF_PATH} rev_20170522 >${CPLD_20170522_DATA_CPP}
                          +	DEPENDS ${EXTRACT_CPLD_DATA} ${CPLD_20170522_SVF_PATH}
                           )
                           
                           add_custom_command(
                          diff --git a/firmware/application/cpld_update.cpp b/firmware/application/cpld_update.cpp
                          index cafa81cbf..0a01d6d76 100644
                          --- a/firmware/application/cpld_update.cpp
                          +++ b/firmware/application/cpld_update.cpp
                          @@ -27,10 +27,12 @@
                           #include "jtag_target_gpio.hpp"
                           #include "cpld_max5.hpp"
                           #include "cpld_xilinx.hpp"
                          -#include "portapack_cpld_data.hpp"
                           #include "hackrf_cpld_data.hpp"
                           
                          -bool cpld_update_if_necessary() {
                          +bool cpld_update_if_necessary(
                          +	const std::array& block_0,
                          +	const std::array& block_1
                          +) {
                           	jtag::GPIOTarget target {
                           		portapack::gpio_cpld_tck,
                           		portapack::gpio_cpld_tms,
                          @@ -63,17 +65,11 @@ bool cpld_update_if_necessary() {
                           	}
                           
                           	/* Verify CPLD contents against current bitstream. */
                          -	auto ok = cpld.verify(
                          -		portapack::cpld::block_0,
                          -		portapack::cpld::block_1
                          -	);
                          +	auto ok = cpld.verify(block_0, block_1);
                           
                           	/* CPLD verifies incorrectly. Erase and program with current bitstream. */
                           	if( !ok ) {
                          -		ok = cpld.program(
                          -			portapack::cpld::block_0,
                          -			portapack::cpld::block_1
                          -		);
                          +		ok = cpld.program(block_0, block_1);
                           	}
                           
                           	/* If programming OK, reset CPLD to user mode. Otherwise leave it in
                          diff --git a/firmware/application/cpld_update.hpp b/firmware/application/cpld_update.hpp
                          index 17c42bd52..ba39790d3 100644
                          --- a/firmware/application/cpld_update.hpp
                          +++ b/firmware/application/cpld_update.hpp
                          @@ -22,7 +22,13 @@
                           #ifndef __CPLD_UPDATE_H__
                           #define __CPLD_UPDATE_H__
                           
                          -bool cpld_update_if_necessary();
                          +#include 
                          +#include 
                          +
                          +bool cpld_update_if_necessary(
                          +	const std::array& block_0,
                          +	const std::array& block_1
                          +);
                           
                           bool cpld_hackrf_load_sram();
                           bool cpld_hackrf_verify_eeprom();
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index d46b1a64a..8eac95cb8 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -22,6 +22,7 @@
                           #include "portapack.hpp"
                           #include "portapack_hal.hpp"
                           #include "portapack_dma.hpp"
                          +#include "portapack_cpld_data.hpp"
                           #include "portapack_persistent_memory.hpp"
                           
                           #include "hackrf_hal.hpp"
                          @@ -174,8 +175,14 @@ void init() {
                           	clock_manager.set_reference_ppb(persistent_memory::correction_ppb());
                           	clock_manager.run_at_full_speed();
                           
                          -	if( !cpld_update_if_necessary() ) {
                          -		chSysHalt();
                          +	if( portapack_model() == PortaPackModel::R2_20170522 ) {
                          +		if( !cpld_update_if_necessary(portapack::cpld::rev_20170522::block_0, portapack::cpld::rev_20170522::block_1) ) {
                          +			chSysHalt();
                          +		}
                          +	} else {
                          +		if( !cpld_update_if_necessary(portapack::cpld::rev_20150901::block_0, portapack::cpld::rev_20150901::block_1) ) {
                          +			chSysHalt();
                          +		}
                           	}
                           
                           	if( !cpld_hackrf_load_sram() ) {
                          diff --git a/firmware/common/portapack_cpld_data.hpp b/firmware/common/portapack_cpld_data.hpp
                          index d356b7c31..8170bdeed 100644
                          --- a/firmware/common/portapack_cpld_data.hpp
                          +++ b/firmware/common/portapack_cpld_data.hpp
                          @@ -28,8 +28,15 @@
                           namespace portapack {
                           namespace cpld {
                           
                          +namespace rev_20150901 {
                           extern const std::array block_0;
                           extern const std::array block_1;
                          +} /* namespace rev_20150901 */
                          +
                          +namespace rev_20170522 {
                          +extern const std::array block_0;
                          +extern const std::array block_1;
                          +} /* namespace rev_20170522 */
                           
                           } /* namespace cpld */
                           } /* namespace portapack */
                          diff --git a/firmware/tools/extract_cpld_data.py b/firmware/tools/extract_cpld_data.py
                          index c44058548..530a31ac3 100755
                          --- a/firmware/tools/extract_cpld_data.py
                          +++ b/firmware/tools/extract_cpld_data.py
                          @@ -25,11 +25,12 @@
                           
                           import sys
                           
                          -if len(sys.argv) != 2:
                          -	print('Usage:  ')
                          +if len(sys.argv) != 3:
                          +	print('Usage:   ')
                           	sys.exit(-1)
                           
                           f = open(sys.argv[1], 'r')
                          +revision_name = sys.argv[2]
                           
                           calculate_crc = False
                           
                          @@ -98,7 +99,8 @@ print("""#include "portapack_cpld_data.hpp"
                           
                           namespace portapack {
                           namespace cpld {
                          -""")
                          +namespace %s {
                          +""" % revision_name)
                           
                           print('const std::array block_0 { {' % len(block_0))
                           print_block(block_0)
                          @@ -111,9 +113,10 @@ print_block(block_1)
                           
                           print("""} };
                           
                          +} /* namespace %s */
                           } /* namespace cpld */
                           } /* namespace portapack */
                          -""")
                          +""" % revision_name)
                           
                           if calculate_crc:
                           	# Apply post-programming modification to make post-programming CRC correct:
                          diff --git a/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf b/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf
                          index c039e066a..baeef5f78 100644
                          --- a/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf
                          +++ b/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.svf
                          @@ -1,25 +1,25 @@
                          -!Copyright (C) 1991-2014 Altera Corporation. All rights reserved.
                          -!Your use of Altera Corporation's design tools, logic functions 
                          +!Copyright (C) 2017  Intel Corporation. All rights reserved.
                          +!Your use of Intel Corporation's design tools, logic functions 
                           !and other software and tools, and its AMPP partner logic 
                           !functions, and any output files from any of the foregoing 
                           !(including device programming or simulation files), and any 
                           !associated documentation or information are expressly subject 
                          -!to the terms and conditions of the Altera Program License 
                          -!Subscription Agreement, the Altera Quartus II License Agreement,
                          -!the Altera MegaCore Function License Agreement, or other 
                          +!to the terms and conditions of the Intel Program License 
                          +!Subscription Agreement, the Intel Quartus Prime License Agreement,
                          +!the Intel MegaCore Function License Agreement, or other 
                           !applicable license agreement, including, without limitation, 
                           !that your use is for the sole purpose of programming logic 
                          -!devices manufactured by Altera and sold by Altera or its 
                          +!devices manufactured by Intel and sold by Intel or its 
                           !authorized distributors.  Please refer to the applicable 
                           !agreement for further details.
                           !
                          -!Quartus II SVF converter 14.1
                          +!Quartus Prime SVF converter 16.1
                           !
                          -!Device #1: 5M40Z - /mnt/hgfs/src/portapack-hackrf/hardware/portapack_h1/cpld/output_files/portapack_h1_cpld.pof Fri Aug 21 12:12:34 2015
                          +!Device #1: 5M40Z - /home/jboone/src/portapack-release/hardware/portapack_h1/cpld/20150901/output_files/portapack_h1_cpld.pof Wed May 31 16:04:37 2017
                           !
                          -!NOTE "USERCODE" "0018AF0E";
                          +!NOTE "USERCODE" "0018B114";
                           !
                          -!NOTE "CHECKSUM" "0018B286";
                          +!NOTE "CHECKSUM" "0018B594";
                           !
                           !
                           !
                          @@ -31,8 +31,13 @@ TRST ABSENT;
                           ENDDR IDLE;
                           ENDIR IRPAUSE;
                           STATE IDLE;
                          +SIR 10 TDI (005);
                          +RUNTEST IDLE 93 TCK ENDSTATE IDLE;
                          +SDR 240 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
                          +SIR 10 TDI (3FF);
                          +RUNTEST 18003 TCK;
                           SIR 10 TDI (2CC);
                          -RUNTEST IDLE 18003 TCK ENDSTATE IDLE;
                          +RUNTEST 18003 TCK;
                           !
                           !
                           !
                          @@ -148,13 +153,13 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67FF);
                          +SDR 16 TDI (77FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFD);
                          +SDR 16 TDI (FEDD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -178,21 +183,21 @@ SDR 16 TDI (B99F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BCCC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (CFFE);
                          +SDR 16 TDI (CFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEB);
                          +SDR 16 TDI (FFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77F3);
                          +SDR 16 TDI (6FEB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFE6);
                          +SDR 16 TDI (BFD6);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -204,38 +209,6 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -250,17 +223,49 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDB);
                          +SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFF7);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFD7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (EFFF);
                           RUNTEST 1800 TCK;
                          @@ -274,7 +279,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -282,9 +287,9 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF5);
                          +SDR 16 TDI (7FF7);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -292,7 +297,7 @@ SDR 16 TDI (BFFD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7EFF);
                          +SDR 16 TDI (7AFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (EFFF);
                           RUNTEST 1800 TCK;
                          @@ -314,15 +319,15 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDBB);
                          +SDR 16 TDI (FFBF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77EF);
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7B);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          +SDR 16 TDI (BFFB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7EEF);
                           RUNTEST 1800 TCK;
                          @@ -332,7 +337,7 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -346,13 +351,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (6FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (5FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -378,120 +383,120 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (76FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FF7F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7EF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7EFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -504,53 +509,13 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B5FD);
                          +SDR 16 TDI (BDFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (ADFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF5F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          +SDR 16 TDI (DFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -558,6 +523,22 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7DFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (EEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                          @@ -570,6 +551,94 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (79FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFD7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                          @@ -588,75 +657,19 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F6FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBCB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          +SDR 16 TDI (7F7F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFDF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -678,22 +691,14 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (DBFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFF5);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7EFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FAFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFD5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (A55F);
                          @@ -716,13 +721,13 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDF);
                          +SDR 16 TDI (7FDD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DEEF);
                          +SDR 16 TDI (EFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BBFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          +SDR 16 TDI (DFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -748,15 +753,15 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFB);
                          +SDR 16 TDI (BFDF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEB);
                          +SDR 16 TDI (FD6A);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6BFF);
                          +SDR 16 TDI (7BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -782,13 +787,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FDDF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          +SDR 16 TDI (BFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFF5);
                          +SDR 16 TDI (FF75);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -812,15 +817,143 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFB);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (F9BF);
                          +SDR 16 TDI (E76F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BAFE);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BD7B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F77F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B72F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -846,140 +979,12 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDE);
                          +SDR 16 TDI (FDDD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (35FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FD2);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBC);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (C7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7AF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DDEE);
                          +SDR 16 TDI (BDFC);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B9FF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EA9F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -1004,19 +1009,19 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          +SDR 16 TDI (7FF3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (0DDF);
                          +SDR 16 TDI (D55F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B598);
                          +SDR 16 TDI (B585);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (5E74);
                          +SDR 16 TDI (07F4);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B65F);
                          +SDR 16 TDI (B6FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1036,51 +1041,19 @@ SDR 16 TDI (BFFE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFC);
                          +SDR 16 TDI (7FF3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (0DDD);
                          +SDR 16 TDI (DCCF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BD99);
                          +SDR 16 TDI (BD81);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (1E6A);
                          +SDR 16 TDI (816B);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7F08);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (388F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B89E);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (887F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B6F7);
                          +SDR 16 TDI (BF5F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1100,15 +1073,47 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7F0C);
                          +SDR 16 TDI (7F00);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (388F);
                          +SDR 16 TDI (8CCF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B89F);
                          +SDR 16 TDI (B881);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (983B);
                          +SDR 16 TDI (E6FF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67FF);
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7F7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F00);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (8CCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B881);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (E073);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1134,13 +1139,13 @@ SDR 16 TDI (9999);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (73E8);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (C445);
                          +SDR 16 TDI (4885);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B938);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (88FF);
                          +SDR 16 TDI (98FF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1166,17 +1171,17 @@ SDR 16 TDI (5DDD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7BCD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DCCA);
                          +SDR 16 TDI (CDDA);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B19D);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (DDFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDF7);
                          +SDR 16 TDI (BFF7);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1198,160 +1203,16 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (E66F);
                          +SDR 16 TDI (6FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B37F);
                          +SDR 16 TDI (B377);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FEB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EEDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FCFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EEEE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFA);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FD7A);
                          +SDR 16 TDI (BFEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (77FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEBE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FB7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BF9F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -1360,73 +1221,33 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BAFF);
                          +SDR 16 TDI (AFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBDF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FDFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFDE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FD);
                          +SDR 16 TDI (BFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFF3);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBF7);
                          +SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1438,9 +1259,25 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7F);
                          +SDR 16 TDI (FFFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEAF);
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                          @@ -1448,9 +1285,113 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBE);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF9F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFB);
                           RUNTEST 1800 TCK;
                          @@ -1464,57 +1405,121 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDEE);
                          +SDR 16 TDI (BFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7F7);
                          +SDR 16 TDI (7DFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7FFD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (ADBF);
                          +SDR 16 TDI (B7FF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F77F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1528,13 +1533,13 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          +SDR 16 TDI (BFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1542,31 +1547,39 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFD7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6EFF);
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BADF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BD7);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FD7D);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1574,14 +1587,6 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBF9);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B3FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                          @@ -1592,13 +1597,13 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BE5F);
                          +SDR 16 TDI (BBFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF77);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFD);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1606,13 +1611,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEEE);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFBF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FB3B);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          +SDR 16 TDI (7EFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1620,15 +1625,23 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFEA);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BE5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1642,7 +1655,15 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (D7FF);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1652,29 +1673,13 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBAF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (DDFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1688,9 +1693,9 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDAF);
                          +SDR 16 TDI (B5AF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1702,13 +1707,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7BA);
                          +SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B37F);
                          +SDR 16 TDI (BFFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (EEFF);
                          +SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1734,11 +1739,75 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF3);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7EFF);
                           RUNTEST 1800 TCK;
                          @@ -1752,31 +1821,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7F7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F76F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFB7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6EFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFAF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1786,55 +1831,15 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FCDE);
                          +SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDBF);
                          +SDR 16 TDI (AFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DF8D);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7AFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B5AF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6F7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBAD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F77B);
                          +SDR 16 TDI (DDBB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -1850,26 +1855,10 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7F7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (F77B);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B37F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (ECF6);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6DFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                          @@ -1880,13 +1869,29 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFAF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3000);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67C0);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (061F);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B6AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1894,13 +1899,13 @@ SDR 16 TDI (FFEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FCCD);
                          +SDR 16 TDI (FFFC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBB7);
                          +SDR 16 TDI (BE1F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7F99);
                          +SDR 16 TDI (0019);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7CFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1912,13 +1917,13 @@ SDR 16 TDI (6BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          +SDR 16 TDI (BF5F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3000);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (66E0);
                          +SDR 16 TDI (7FBF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (0601);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1926,13 +1931,13 @@ SDR 16 TDI (FFDF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FCCD);
                          +SDR 16 TDI (FFFC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBBE);
                          +SDR 16 TDI (A01B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (D519);
                          +SDR 16 TDI (8019);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7CFF);
                          +SDR 16 TDI (70FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1944,13 +1949,13 @@ SDR 16 TDI (7DFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BD5F);
                          +SDR 16 TDI (BAFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3000);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67E0);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (061F);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1958,13 +1963,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FCC8);
                          +SDR 16 TDI (FFFC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B11F);
                          +SDR 16 TDI (BE1F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (CC99);
                          +SDR 16 TDI (8019);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (78FF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -1976,13 +1981,13 @@ SDR 16 TDI (6BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3000);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67E0);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (0601);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -1990,13 +1995,13 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (F698);
                          +SDR 16 TDI (FFFC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B11F);
                          +SDR 16 TDI (A01F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (8033);
                          +SDR 16 TDI (8019);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6EFF);
                          +SDR 16 TDI (70FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2004,17 +2009,17 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFF7);
                          +SDR 16 TDI (BFDF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBBB);
                          +SDR 16 TDI (3333);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (73EE);
                          +SDR 16 TDI (63E6);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6EE7);
                          +SDR 16 TDI (6667);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B333);
                           RUNTEST 1800 TCK;
                          @@ -2022,13 +2027,13 @@ SDR 16 TDI (31F3);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (78C6);
                          +SDR 16 TDI (7CCE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (ACCF);
                          +SDR 16 TDI (B9CF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B318);
                          +SDR 16 TDI (9BB9);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BCC);
                          +SDR 16 TDI (73CC);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (CCC7);
                           RUNTEST 1800 TCK;
                          @@ -2040,13 +2045,13 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3333);
                          +SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6546);
                          +SDR 16 TDI (6957);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6667);
                          +SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B777);
                           RUNTEST 1800 TCK;
                          @@ -2054,13 +2059,13 @@ SDR 16 TDI (74AB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7D9C);
                          +SDR 16 TDI (7DDC);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B995);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (19CD);
                          +SDR 16 TDI (1999);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (79DD);
                          +SDR 16 TDI (73DD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (DDD2);
                           RUNTEST 1800 TCK;
                          @@ -2068,17 +2073,17 @@ SDR 16 TDI (B5DD);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (DDFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFB);
                          +SDR 16 TDI (BEEF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDDD);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDD);
                          +SDR 16 TDI (7FDF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFDF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -2086,11 +2091,11 @@ SDR 16 TDI (FFEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF6);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (ACFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (337F);
                          +SDR 16 TDI (777F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -2104,9 +2109,169 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (5FFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -2118,15 +2283,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (EFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -2144,33 +2301,9 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BDFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (DFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -2182,59 +2315,11 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (5FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          +SDR 16 TDI (EFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BDFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77BF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (BFFB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -2244,7 +2329,7 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2254,6 +2339,14 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                          @@ -2268,99 +2361,11 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2456,7 +2461,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2488,7 +2493,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BF7F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2520,7 +2525,7 @@ SDR 16 TDI (7BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B77F);
                          +SDR 16 TDI (B7FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2552,7 +2557,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          +SDR 16 TDI (BBBF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2584,7 +2589,7 @@ SDR 16 TDI (79FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7BF);
                          +SDR 16 TDI (BFBF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -2712,774 +2717,6 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (A59F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (69FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (AB7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (AFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BABF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (3333);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (63E6);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6667);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B333);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (31F3);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6666);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7CCC);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B98F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (9999);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (73CC);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (CCC7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B999);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (99FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7BF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7777);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6957);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7777);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B777);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (74AB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7777);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBA5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (5DDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BDD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DDD2);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B5DD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FBFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (F7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (AD5F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (69FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (ABFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7DFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BD9F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (69FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (B6BF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -3508,7 +2745,7 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (75FF);
                          +SDR 16 TDI (77FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -3544,31 +2781,55 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (AD9F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (69FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFDF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFFE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -3576,39 +2837,15 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (AFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7DFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFAF);
                          +SDR 16 TDI (BD5F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -3636,11 +2873,11 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFF5);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (6BFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BBFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -3672,135 +2909,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B6AF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B9FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (AFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BF5F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BE9F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BDFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (3333);
                           RUNTEST 1800 TCK;
                          @@ -3832,7 +2941,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                          @@ -3864,7 +2973,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEDF);
                          +SDR 16 TDI (B6FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -3890,334 +2999,6 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (B7FF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF5F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7F);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBD);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFB);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFEA);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (75FF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFD);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                          @@ -4248,9 +3029,17 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDB);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B5FF);
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4274,22 +3063,6 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (B6AF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                          @@ -4306,22 +3079,6 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF5);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (6BFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                          @@ -4344,9 +3101,297 @@ SDR 16 TDI (7DFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B7AF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FDFF);
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ADDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4372,17 +3417,17 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFF5);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (6BFF);
                          +SDR 16 TDI (69FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDAF);
                          +SDR 16 TDI (ABBF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -4402,27 +3447,987 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (69FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BE3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (75FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF0F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73CC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCC7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDD2);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5DD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFE7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBBB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F6FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEF9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A5FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9EF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEAD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7AE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77EF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BAAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (FFEA);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (77FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BBFF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (9D5F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (D6F7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (9FFF);
                          +SDR 16 TDI (9FF7);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (5FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -4442,11 +4447,11 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (4FFF);
                          +SDR 16 TDI (57EB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFDF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -4474,11 +4479,11 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DEFF);
                          +SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7FED);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (FFFB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -4504,19 +4509,19 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BAFF);
                          +SDR 16 TDI (BAFC);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (EAEE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          +SDR 16 TDI (67F3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBF);
                          +SDR 16 TDI (260F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (9FFF);
                          +SDR 16 TDI (9BFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7F7B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (5FFF);
                          +SDR 16 TDI (5EFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -4538,17 +4543,17 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (BFB9);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FEF);
                          +SDR 16 TDI (7FFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (FDF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFFB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (6FEE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -4570,20 +4575,20 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (A55F);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEBF);
                          +SDR 16 TDI (7777);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67C6);
                          +SDR 16 TDI (65C7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (1EBF);
                          +SDR 16 TDI (7E7B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (B3F0);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (3FE0);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                          @@ -4602,20 +4607,20 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (AFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (C2BF);
                          +SDR 16 TDI (3777);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (47A6);
                          +SDR 16 TDI (47A7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (1EBF);
                          +SDR 16 TDI (787B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (B3F0);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFDF);
                          +SDR 16 TDI (3FF0);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -4632,22 +4637,22 @@ SDR 16 TDI (5FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B55F);
                          +SDR 16 TDI (B55E);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FE7F);
                          +SDR 16 TDI (2222);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67E6);
                          +SDR 16 TDI (67EE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (1F3F);
                          +SDR 16 TDI (2623);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (B3F0);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (3FF0);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -4664,22 +4669,22 @@ SDR 16 TDI (67FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (9FFF);
                          +SDR 16 TDI (9FF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (C27F);
                          +SDR 16 TDI (2223);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (47E6);
                          +SDR 16 TDI (57E2);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (1F3F);
                          +SDR 16 TDI (20E3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (B3F0);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (3FF0);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -4698,17 +4703,17 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (3BB3);
                          +SDR 16 TDI (199B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (73EE);
                          +SDR 16 TDI (63E6);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (E6E7);
                          +SDR 16 TDI (CC6D);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B333);
                          +SDR 16 TDI (B33B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (31F3);
                          +SDR 16 TDI (B1F3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (4666);
                          +SDR 16 TDI (46EE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7CCC);
                           RUNTEST 1800 TCK;
                          @@ -4728,19 +4733,19 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFFE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7337);
                          +SDR 16 TDI (7332);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (4546);
                          +SDR 16 TDI (4D52);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7677);
                          +SDR 16 TDI (6323);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (B777);
                          +SDR 16 TDI (B373);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (74AB);
                          +SDR 16 TDI (36A3);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7777);
                          +SDR 16 TDI (6666);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7DDD);
                           RUNTEST 1800 TCK;
                          @@ -4760,17 +4765,17 @@ SDR 16 TDI (5FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (D99B);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FDF);
                          +SDR 16 TDI (7FDE);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          +SDR 16 TDI (DDFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFFD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFEE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4794,23 +4799,23 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (BFF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77FF);
                          +SDR 16 TDI (6FF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (EFEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          +SDR 16 TDI (6FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BF7F);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFF7);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4826,21 +4831,21 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (F7FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FDF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -4858,23 +4863,23 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (8FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFD);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (4FF7);
                          +SDR 16 TDI (5FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FBF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4890,21 +4895,21 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (AFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (7FFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (6FF7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (F7EF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          +SDR 16 TDI (E7FF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (9F7F);
                          +SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -4944,7 +4949,7 @@ SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          +SDR 16 TDI (BFEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFB);
                           RUNTEST 1800 TCK;
                          @@ -4962,7 +4967,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -4974,31 +4979,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (9FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (5FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (77EE);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (EFFF);
                          +SDR 16 TDI (FF7F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          @@ -5020,6 +5001,30 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                          @@ -5722,7 +5727,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEFF);
                          +SDR 16 TDI (FEEF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -5828,11 +5833,11 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (F7FF);
                           RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          -RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFBF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -5850,7 +5855,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -5924,11 +5929,11 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (7FBE);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BFDF);
                          +SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -5948,9 +5953,9 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FEF);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFF);
                          +SDR 16 TDI (EBFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          @@ -5978,11 +5983,11 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFBD);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFF);
                          +SDR 16 TDI (6FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (BDFF);
                          +SDR 16 TDI (BEFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -6012,7 +6017,7 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FF7);
                          +SDR 16 TDI (6FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FDFF);
                           RUNTEST 1800 TCK;
                          @@ -6042,11 +6047,11 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FF7E);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (DFFF);
                          +SDR 16 TDI (D77F);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -6074,9 +6079,9 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFDD);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (7FFD);
                          +SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (DFFF);
                           RUNTEST 1800 TCK;
                          @@ -6108,7 +6113,7 @@ SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFB);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (77EF);
                          +SDR 16 TDI (77EB);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                          @@ -6138,7 +6143,7 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFFE);
                          +SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (7FFF);
                           RUNTEST 1800 TCK;
                          @@ -6170,9 +6175,9 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (9FFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FFEF);
                          +SDR 16 TDI (FFF5);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (5FFD);
                          +SDR 16 TDI (4FF3);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -6202,9 +6207,9 @@ SDR 16 TDI (FFFF);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (FEF1);
                          +SDR 16 TDI (FED7);
                           RUNTEST 1800 TCK;
                          -SDR 16 TDI (67E7);
                          +SDR 16 TDI (6FF7);
                           RUNTEST 1800 TCK;
                           SDR 16 TDI (BFFF);
                           RUNTEST 1800 TCK;
                          @@ -7813,10 +7818,10 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FEFD);
                          +SDR 16 TDI (FFFF) TDO (FEDD);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FF7F);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -7828,35 +7833,19 @@ SDR 16 TDI (FFFF) TDO (CCCF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (B99F);
                           SDR 16 TDI (FFFF) TDO (BCCC);
                          -SDR 16 TDI (FFFF) TDO (CFFE);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (CFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEB);
                          -SDR 16 TDI (FFFF) TDO (77F3);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (6FEB);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFE6);
                          +SDR 16 TDI (FFFF) TDO (BFD6);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FBFE);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFEF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -7864,28 +7853,44 @@ SDR 16 TDI (FFFF) TDO (FFFE);
                           SDR 16 TDI (FFFF) TDO (6FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDB);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (77FB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFD7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF5);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFD);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (7AFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -7896,26 +7901,26 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (6FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FDBB);
                          -SDR 16 TDI (FFFF) TDO (77EF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7B);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                           SDR 16 TDI (FFFF) TDO (7EEF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7DFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                          @@ -7928,102 +7933,134 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7E);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (7EEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (76FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FEF7);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7EF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7EFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FEFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B5FD);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (ADFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (7FFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFEF);
                          -SDR 16 TDI (FFFF) TDO (FF5F);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (EEFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BBEF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (79FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFD7);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BBFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8033,41 +8070,13 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F6FF);
                          -SDR 16 TDI (FFFF) TDO (BBCB);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                           SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8078,14 +8087,10 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (DBFF);
                          +SDR 16 TDI (FFFF) TDO (BFF5);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FAFF);
                          -SDR 16 TDI (FFFF) TDO (BFD5);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (A55F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8097,10 +8102,10 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FDF);
                          -SDR 16 TDI (FFFF) TDO (DEEF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FDD);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (AFFF);
                          @@ -8113,11 +8118,11 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFB);
                          -SDR 16 TDI (FFFF) TDO (FFEB);
                          -SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FD6A);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B55F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8130,10 +8135,10 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (DFF5);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FDDF);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FF75);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BABF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8145,11 +8150,75 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFB);
                          -SDR 16 TDI (FFFF) TDO (F9BF);
                          -SDR 16 TDI (FFFF) TDO (BAFE);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (E76F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (BD7B);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (F77F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (5DFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (B72F);
                          +SDR 16 TDI (FFFF) TDO (BEDB);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (CAFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (DF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8162,73 +8231,9 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFE);
                          -SDR 16 TDI (FFFF) TDO (FFDE);
                          -SDR 16 TDI (FFFF) TDO (BFDF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (35FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FD2);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBC);
                          -SDR 16 TDI (FFFF) TDO (C7FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7AF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (DDEE);
                          +SDR 16 TDI (FFFF) TDO (FDDD);
                          +SDR 16 TDI (FFFF) TDO (BDFC);
                           SDR 16 TDI (FFFF) TDO (B9FF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          -SDR 16 TDI (FFFF) TDO (EA9F);
                          -SDR 16 TDI (FFFF) TDO (BEFB);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BEAF);
                          @@ -8241,13 +8246,13 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          -SDR 16 TDI (FFFF) TDO (0DDF);
                          -SDR 16 TDI (FFFF) TDO (B598);
                          -SDR 16 TDI (FFFF) TDO (5E74);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FF3);
                          +SDR 16 TDI (FFFF) TDO (D55F);
                          +SDR 16 TDI (FFFF) TDO (B585);
                          +SDR 16 TDI (FFFF) TDO (07F4);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B65F);
                          +SDR 16 TDI (FFFF) TDO (B6FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FBF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8257,29 +8262,13 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFE);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFC);
                          -SDR 16 TDI (FFFF) TDO (0DDD);
                          -SDR 16 TDI (FFFF) TDO (BD99);
                          -SDR 16 TDI (FFFF) TDO (1E6A);
                          +SDR 16 TDI (FFFF) TDO (7FF3);
                          +SDR 16 TDI (FFFF) TDO (DCCF);
                          +SDR 16 TDI (FFFF) TDO (BD81);
                          +SDR 16 TDI (FFFF) TDO (816B);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7F08);
                          -SDR 16 TDI (FFFF) TDO (388F);
                          -SDR 16 TDI (FFFF) TDO (B89E);
                          -SDR 16 TDI (FFFF) TDO (887F);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B6F7);
                          +SDR 16 TDI (FFFF) TDO (BF5F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8289,11 +8278,27 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7F0C);
                          -SDR 16 TDI (FFFF) TDO (388F);
                          -SDR 16 TDI (FFFF) TDO (B89F);
                          -SDR 16 TDI (FFFF) TDO (983B);
                          -SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (7F00);
                          +SDR 16 TDI (FFFF) TDO (8CCF);
                          +SDR 16 TDI (FFFF) TDO (B881);
                          +SDR 16 TDI (FFFF) TDO (E6FF);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7F7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F00);
                          +SDR 16 TDI (FFFF) TDO (8CCF);
                          +SDR 16 TDI (FFFF) TDO (B881);
                          +SDR 16 TDI (FFFF) TDO (E073);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (3333);
                          @@ -8306,10 +8311,10 @@ SDR 16 TDI (FFFF) TDO (7CCC);
                           SDR 16 TDI (FFFF) TDO (B98F);
                           SDR 16 TDI (FFFF) TDO (9999);
                           SDR 16 TDI (FFFF) TDO (73E8);
                          -SDR 16 TDI (FFFF) TDO (C445);
                          +SDR 16 TDI (FFFF) TDO (4885);
                           SDR 16 TDI (FFFF) TDO (B938);
                          -SDR 16 TDI (FFFF) TDO (88FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (98FF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B7FF);
                           SDR 16 TDI (FFFF) TDO (7777);
                          @@ -8322,12 +8327,12 @@ SDR 16 TDI (FFFF) TDO (7DDD);
                           SDR 16 TDI (FFFF) TDO (BBA5);
                           SDR 16 TDI (FFFF) TDO (5DDD);
                           SDR 16 TDI (FFFF) TDO (7BCD);
                          -SDR 16 TDI (FFFF) TDO (DCCA);
                          +SDR 16 TDI (FFFF) TDO (CDDA);
                           SDR 16 TDI (FFFF) TDO (B19D);
                           SDR 16 TDI (FFFF) TDO (DDFB);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDF7);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FDF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8338,262 +8343,262 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (E66F);
                          -SDR 16 TDI (FFFF) TDO (B37F);
                          -SDR 16 TDI (FFFF) TDO (FFDE);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FEB);
                          -SDR 16 TDI (FFFF) TDO (EEDF);
                          -SDR 16 TDI (FFFF) TDO (BFDF);
                          -SDR 16 TDI (FFFF) TDO (FCFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (EEEE);
                          -SDR 16 TDI (FFFF) TDO (7FFB);
                          -SDR 16 TDI (FFFF) TDO (FBBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFA);
                          -SDR 16 TDI (FFFF) TDO (EFDF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FEF);
                          -SDR 16 TDI (FFFF) TDO (FEFF);
                          -SDR 16 TDI (FFFF) TDO (BFDD);
                          -SDR 16 TDI (FFFF) TDO (FD7A);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (B377);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                           SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEBE);
                          -SDR 16 TDI (FFFF) TDO (FFF7);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FB7F);
                          -SDR 16 TDI (FFFF) TDO (BF9F);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFEF);
                          -SDR 16 TDI (FFFF) TDO (FFFB);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                           SDR 16 TDI (FFFF) TDO (FFFD);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FAF);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                          +SDR 16 TDI (FFFF) TDO (BBDF);
                           SDR 16 TDI (FFFF) TDO (FDFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DFDE);
                          -SDR 16 TDI (FFFF) TDO (7FFB);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FD);
                          -SDR 16 TDI (FFFF) TDO (FFF7);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FDFB);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EDFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFF3);
                          -SDR 16 TDI (FFFF) TDO (BBF7);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (BEAF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFF7);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFE);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFE);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FAF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BDBF);
                          +SDR 16 TDI (FFFF) TDO (FDFA);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEBF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FA);
                          +SDR 16 TDI (FFFF) TDO (BF9F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (7FF3);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (F7FE);
                           SDR 16 TDI (FFFF) TDO (7FFB);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDEE);
                          -SDR 16 TDI (FFFF) TDO (B7F7);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBEF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBFE);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FEDF);
                          -SDR 16 TDI (FFFF) TDO (6DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (EFDF);
                          -SDR 16 TDI (FFFF) TDO (7FEF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                           SDR 16 TDI (FFFF) TDO (FFF7);
                          -SDR 16 TDI (FFFF) TDO (ADBF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7DFE);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (EFFA);
                          +SDR 16 TDI (FFFF) TDO (BEAF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFE);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFCF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F77F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFB);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFD7);
                          -SDR 16 TDI (FFFF) TDO (6EFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BADF);
                          -SDR 16 TDI (FFFF) TDO (7BD7);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (FD7D);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBF9);
                          -SDR 16 TDI (FFFF) TDO (B3FF);
                          -SDR 16 TDI (FFFF) TDO (FEFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFB);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BE5F);
                          -SDR 16 TDI (FFFF) TDO (FF77);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FEFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FEEE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFBF);
                          -SDR 16 TDI (FFFF) TDO (FB3B);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFEA);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BE5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (D7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBAF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (DDFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFF4);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDAF);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (B5AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F7BA);
                          -SDR 16 TDI (FFFF) TDO (B37F);
                          -SDR 16 TDI (FFFF) TDO (EEFF);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8606,57 +8611,57 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FEFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          -SDR 16 TDI (FFFF) TDO (FFF3);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7EFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7F7F);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F76F);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFB7);
                          -SDR 16 TDI (FFFF) TDO (6EFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FCDE);
                          -SDR 16 TDI (FFFF) TDO (BDBF);
                          -SDR 16 TDI (FFFF) TDO (DF8D);
                          -SDR 16 TDI (FFFF) TDO (7AFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B5AF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (6FF7);
                          -SDR 16 TDI (FFFF) TDO (6F7F);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBAD);
                          -SDR 16 TDI (FFFF) TDO (BFDF);
                          -SDR 16 TDI (FFFF) TDO (F77B);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (DDBB);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -8664,145 +8669,221 @@ SDR 16 TDI (FFFF) TDO (FFEE);
                           SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FBF7);
                          -SDR 16 TDI (FFFF) TDO (7F7F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F77B);
                          -SDR 16 TDI (FFFF) TDO (B37F);
                          -SDR 16 TDI (FFFF) TDO (ECF6);
                          -SDR 16 TDI (FFFF) TDO (6DFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFAF);
                          -SDR 16 TDI (FFFF) TDO (3000);
                          -SDR 16 TDI (FFFF) TDO (67C0);
                          -SDR 16 TDI (FFFF) TDO (061F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B6AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFEF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FCCD);
                          -SDR 16 TDI (FFFF) TDO (BBB7);
                          -SDR 16 TDI (FFFF) TDO (7F99);
                          -SDR 16 TDI (FFFF) TDO (7CFF);
                          +SDR 16 TDI (FFFF) TDO (FFFC);
                          +SDR 16 TDI (FFFF) TDO (BE1F);
                          +SDR 16 TDI (FFFF) TDO (0019);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B7FF);
                           SDR 16 TDI (FFFF) TDO (FFF5);
                           SDR 16 TDI (FFFF) TDO (6BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (3000);
                          -SDR 16 TDI (FFFF) TDO (66E0);
                          -SDR 16 TDI (FFFF) TDO (0601);
                          +SDR 16 TDI (FFFF) TDO (BF5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFDF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FCCD);
                          -SDR 16 TDI (FFFF) TDO (BBBE);
                          -SDR 16 TDI (FFFF) TDO (D519);
                          -SDR 16 TDI (FFFF) TDO (7CFF);
                          +SDR 16 TDI (FFFF) TDO (FFFC);
                          +SDR 16 TDI (FFFF) TDO (A01B);
                          +SDR 16 TDI (FFFF) TDO (8019);
                          +SDR 16 TDI (FFFF) TDO (70FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (AFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7DFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BD5F);
                          -SDR 16 TDI (FFFF) TDO (3000);
                          -SDR 16 TDI (FFFF) TDO (67E0);
                          -SDR 16 TDI (FFFF) TDO (061F);
                          +SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FCC8);
                          -SDR 16 TDI (FFFF) TDO (B11F);
                          -SDR 16 TDI (FFFF) TDO (CC99);
                          -SDR 16 TDI (FFFF) TDO (78FF);
                          +SDR 16 TDI (FFFF) TDO (FFFC);
                          +SDR 16 TDI (FFFF) TDO (BE1F);
                          +SDR 16 TDI (FFFF) TDO (8019);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFF5);
                           SDR 16 TDI (FFFF) TDO (6BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          -SDR 16 TDI (FFFF) TDO (3000);
                          -SDR 16 TDI (FFFF) TDO (67E0);
                          -SDR 16 TDI (FFFF) TDO (0601);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F698);
                          -SDR 16 TDI (FFFF) TDO (B11F);
                          -SDR 16 TDI (FFFF) TDO (8033);
                          -SDR 16 TDI (FFFF) TDO (6EFF);
                          +SDR 16 TDI (FFFF) TDO (FFFC);
                          +SDR 16 TDI (FFFF) TDO (A01F);
                          +SDR 16 TDI (FFFF) TDO (8019);
                          +SDR 16 TDI (FFFF) TDO (70FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFF7);
                          -SDR 16 TDI (FFFF) TDO (BBBB);
                          -SDR 16 TDI (FFFF) TDO (73EE);
                          -SDR 16 TDI (FFFF) TDO (6EE7);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                           SDR 16 TDI (FFFF) TDO (B333);
                           SDR 16 TDI (FFFF) TDO (31F3);
                           SDR 16 TDI (FFFF) TDO (6666);
                          -SDR 16 TDI (FFFF) TDO (78C6);
                          -SDR 16 TDI (FFFF) TDO (ACCF);
                          -SDR 16 TDI (FFFF) TDO (B318);
                          -SDR 16 TDI (FFFF) TDO (7BCC);
                          +SDR 16 TDI (FFFF) TDO (7CCE);
                          +SDR 16 TDI (FFFF) TDO (B9CF);
                          +SDR 16 TDI (FFFF) TDO (9BB9);
                          +SDR 16 TDI (FFFF) TDO (73CC);
                           SDR 16 TDI (FFFF) TDO (CCC7);
                           SDR 16 TDI (FFFF) TDO (B999);
                           SDR 16 TDI (FFFF) TDO (99FF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (3333);
                          -SDR 16 TDI (FFFF) TDO (6546);
                          -SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                           SDR 16 TDI (FFFF) TDO (B777);
                           SDR 16 TDI (FFFF) TDO (74AB);
                           SDR 16 TDI (FFFF) TDO (7777);
                          -SDR 16 TDI (FFFF) TDO (7D9C);
                          +SDR 16 TDI (FFFF) TDO (7DDC);
                           SDR 16 TDI (FFFF) TDO (B995);
                          -SDR 16 TDI (FFFF) TDO (19CD);
                          -SDR 16 TDI (FFFF) TDO (79DD);
                          +SDR 16 TDI (FFFF) TDO (1999);
                          +SDR 16 TDI (FFFF) TDO (73DD);
                           SDR 16 TDI (FFFF) TDO (DDD2);
                           SDR 16 TDI (FFFF) TDO (B5DD);
                           SDR 16 TDI (FFFF) TDO (DDFF);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFB);
                          -SDR 16 TDI (FFFF) TDO (FDDD);
                          -SDR 16 TDI (FFFF) TDO (7FDD);
                          -SDR 16 TDI (FFFF) TDO (DFDF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFEF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFF6);
                          -SDR 16 TDI (FFFF) TDO (ACFF);
                          -SDR 16 TDI (FFFF) TDO (337F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (777F);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B7FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBDF);
                          -SDR 16 TDI (FFFF) TDO (DDFF);
                          -SDR 16 TDI (FFFF) TDO (7BBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -8811,61 +8892,29 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FDDF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDD);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          -SDR 16 TDI (FFFF) TDO (FFDD);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          -SDR 16 TDI (FFFF) TDO (5FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FEDF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (77BF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8873,53 +8922,9 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFB);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFF7);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EEFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8967,7 +8972,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8983,7 +8988,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -8999,7 +9004,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFD);
                           SDR 16 TDI (FFFF) TDO (7BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B77F);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9015,7 +9020,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (BBBF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9031,7 +9036,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFD);
                           SDR 16 TDI (FFFF) TDO (79FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7BF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9095,390 +9100,6 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (A59F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FDF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (69FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (AB7F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (AFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDDF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (6BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BABF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (3333);
                          -SDR 16 TDI (FFFF) TDO (63E6);
                          -SDR 16 TDI (FFFF) TDO (6667);
                          -SDR 16 TDI (FFFF) TDO (B333);
                          -SDR 16 TDI (FFFF) TDO (31F3);
                          -SDR 16 TDI (FFFF) TDO (6666);
                          -SDR 16 TDI (FFFF) TDO (7CCC);
                          -SDR 16 TDI (FFFF) TDO (B98F);
                          -SDR 16 TDI (FFFF) TDO (9999);
                          -SDR 16 TDI (FFFF) TDO (73CC);
                          -SDR 16 TDI (FFFF) TDO (CCC7);
                          -SDR 16 TDI (FFFF) TDO (B999);
                          -SDR 16 TDI (FFFF) TDO (99FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7BF);
                          -SDR 16 TDI (FFFF) TDO (7777);
                          -SDR 16 TDI (FFFF) TDO (6957);
                          -SDR 16 TDI (FFFF) TDO (7777);
                          -SDR 16 TDI (FFFF) TDO (B777);
                          -SDR 16 TDI (FFFF) TDO (74AB);
                          -SDR 16 TDI (FFFF) TDO (7777);
                          -SDR 16 TDI (FFFF) TDO (7DDD);
                          -SDR 16 TDI (FFFF) TDO (BBA5);
                          -SDR 16 TDI (FFFF) TDO (5DDD);
                          -SDR 16 TDI (FFFF) TDO (7BDD);
                          -SDR 16 TDI (FFFF) TDO (DDD2);
                          -SDR 16 TDI (FFFF) TDO (B5DD);
                          -SDR 16 TDI (FFFF) TDO (DDFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FDF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FBFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (F7FF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFB);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (AD5F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (69FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (ABFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7DFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BD9F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (69FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B6BF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -9493,7 +9114,7 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (75FF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9511,39 +9132,39 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (AD9F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (BD5F);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9557,9 +9178,9 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9575,71 +9196,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B6AF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FDF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (7BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B9FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FBF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (AFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEB);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BF5F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BE9F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                           SDR 16 TDI (FFFF) TDO (3333);
                           SDR 16 TDI (FFFF) TDO (63E6);
                           SDR 16 TDI (FFFF) TDO (6667);
                          @@ -9655,7 +9212,7 @@ SDR 16 TDI (FFFF) TDO (B999);
                           SDR 16 TDI (FFFF) TDO (99FF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (7777);
                           SDR 16 TDI (FFFF) TDO (6957);
                           SDR 16 TDI (FFFF) TDO (7777);
                          @@ -9671,7 +9228,7 @@ SDR 16 TDI (FFFF) TDO (B5DD);
                           SDR 16 TDI (FFFF) TDO (DDFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEDF);
                          +SDR 16 TDI (FFFF) TDO (B6FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FDF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9684,170 +9241,6 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (B7FF);
                          -SDR 16 TDI (FFFF) TDO (FFF7);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (BEFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BEFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FF5F);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BF7F);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (6FF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BF7F);
                          -SDR 16 TDI (FFFF) TDO (FEFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFB);
                          -SDR 16 TDI (FFFF) TDO (FF7F);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (BBF7);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFB);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDFD);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (6FFF);
                          -SDR 16 TDI (FFFF) TDO (DFF7);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBD);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                          -SDR 16 TDI (FFFF) TDO (BFFE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFB);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFEA);
                          -SDR 16 TDI (FFFF) TDO (75FF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFD);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9863,8 +9256,12 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFDB);
                          -SDR 16 TDI (FFFF) TDO (B5FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -9876,14 +9273,6 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B6AF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9892,14 +9281,6 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (6BFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -9911,8 +9292,152 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7DFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B7AF);
                          -SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBD);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (ADDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -9925,12 +9450,12 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFF5);
                          -SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BDAF);
                          +SDR 16 TDI (FFFF) TDO (ABBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -9940,17 +9465,497 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B9DF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BE3F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (75FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF0F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B9FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEA);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFAF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (73CC);
                          +SDR 16 TDI (FFFF) TDO (CCC7);
                          +SDR 16 TDI (FFFF) TDO (B999);
                          +SDR 16 TDI (FFFF) TDO (99FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BDD);
                          +SDR 16 TDI (FFFF) TDO (DDD2);
                          +SDR 16 TDI (FFFF) TDO (B5DD);
                          +SDR 16 TDI (FFFF) TDO (DDBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFE7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (BEEF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7DF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (FBBB);
                          +SDR 16 TDI (FFFF) TDO (BFEE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBB);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF5F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (F6FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFB);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FBBF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFA);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFA);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFF3);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEF9);
                          +SDR 16 TDI (FFFF) TDO (A5FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7EEB);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEB);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (EFDF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (F7DF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (9EF7);
                          +SDR 16 TDI (FFFF) TDO (7FFE);
                          +SDR 16 TDI (FFFF) TDO (FEAD);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7AE);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (77EF);
                          +SDR 16 TDI (FFFF) TDO (7CFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BAAF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FD);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAE);
                          +SDR 16 TDI (FFFF) TDO (F7FA);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFEA);
                           SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BBFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (9D5F);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (D6F7);
                          +SDR 16 TDI (FFFF) TDO (9FF7);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -9960,9 +9965,9 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (4FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (57EB);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -9976,9 +9981,9 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DEFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7FED);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -9991,13 +9996,13 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BAFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFBF);
                          -SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (BAFC);
                          +SDR 16 TDI (FFFF) TDO (EAEE);
                          +SDR 16 TDI (FFFF) TDO (67F3);
                          +SDR 16 TDI (FFFF) TDO (260F);
                          +SDR 16 TDI (FFFF) TDO (9BFF);
                          +SDR 16 TDI (FFFF) TDO (7F7B);
                          +SDR 16 TDI (FFFF) TDO (5EFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10008,12 +10013,12 @@ SDR 16 TDI (FFFF) TDO (FFEE);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFB9);
                          +SDR 16 TDI (FFFF) TDO (7FFE);
                          +SDR 16 TDI (FFFF) TDO (FDF7);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FEF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (6FEE);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10024,13 +10029,13 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (A55F);
                          -SDR 16 TDI (FFFF) TDO (FEBF);
                          -SDR 16 TDI (FFFF) TDO (67C6);
                          -SDR 16 TDI (FFFF) TDO (1EBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (65C7);
                          +SDR 16 TDI (FFFF) TDO (7E7B);
                          +SDR 16 TDI (FFFF) TDO (B3F0);
                          +SDR 16 TDI (FFFF) TDO (3FE0);
                          +SDR 16 TDI (FFFF) TDO (6666);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                          @@ -10040,13 +10045,13 @@ SDR 16 TDI (FFFF) TDO (FFF5);
                           SDR 16 TDI (FFFF) TDO (67FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (AFFF);
                          -SDR 16 TDI (FFFF) TDO (C2BF);
                          -SDR 16 TDI (FFFF) TDO (47A6);
                          -SDR 16 TDI (FFFF) TDO (1EBF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (3777);
                          +SDR 16 TDI (FFFF) TDO (47A7);
                          +SDR 16 TDI (FFFF) TDO (787B);
                          +SDR 16 TDI (FFFF) TDO (B3F0);
                          +SDR 16 TDI (FFFF) TDO (3FF0);
                          +SDR 16 TDI (FFFF) TDO (6666);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFE);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -10055,14 +10060,14 @@ SDR 16 TDI (FFFF) TDO (AFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (B55F);
                          -SDR 16 TDI (FFFF) TDO (FE7F);
                          -SDR 16 TDI (FFFF) TDO (67E6);
                          -SDR 16 TDI (FFFF) TDO (1F3F);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B55E);
                          +SDR 16 TDI (FFFF) TDO (2222);
                          +SDR 16 TDI (FFFF) TDO (67EE);
                          +SDR 16 TDI (FFFF) TDO (2623);
                          +SDR 16 TDI (FFFF) TDO (B3F0);
                          +SDR 16 TDI (FFFF) TDO (3FF0);
                          +SDR 16 TDI (FFFF) TDO (6666);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -10071,14 +10076,14 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFF5);
                           SDR 16 TDI (FFFF) TDO (67FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (C27F);
                          -SDR 16 TDI (FFFF) TDO (47E6);
                          -SDR 16 TDI (FFFF) TDO (1F3F);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FF7);
                          +SDR 16 TDI (FFFF) TDO (2223);
                          +SDR 16 TDI (FFFF) TDO (57E2);
                          +SDR 16 TDI (FFFF) TDO (20E3);
                          +SDR 16 TDI (FFFF) TDO (B3F0);
                          +SDR 16 TDI (FFFF) TDO (3FF0);
                          +SDR 16 TDI (FFFF) TDO (6666);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                          @@ -10088,12 +10093,12 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (3BB3);
                          -SDR 16 TDI (FFFF) TDO (73EE);
                          -SDR 16 TDI (FFFF) TDO (E6E7);
                          -SDR 16 TDI (FFFF) TDO (B333);
                          -SDR 16 TDI (FFFF) TDO (31F3);
                          -SDR 16 TDI (FFFF) TDO (4666);
                          +SDR 16 TDI (FFFF) TDO (199B);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (CC6D);
                          +SDR 16 TDI (FFFF) TDO (B33B);
                          +SDR 16 TDI (FFFF) TDO (B1F3);
                          +SDR 16 TDI (FFFF) TDO (46EE);
                           SDR 16 TDI (FFFF) TDO (7CCC);
                           SDR 16 TDI (FFFF) TDO (B98F);
                           SDR 16 TDI (FFFF) TDO (9999);
                          @@ -10103,13 +10108,13 @@ SDR 16 TDI (FFFF) TDO (B999);
                           SDR 16 TDI (FFFF) TDO (99FF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (7337);
                          -SDR 16 TDI (FFFF) TDO (4546);
                          -SDR 16 TDI (FFFF) TDO (7677);
                          -SDR 16 TDI (FFFF) TDO (B777);
                          -SDR 16 TDI (FFFF) TDO (74AB);
                          -SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (7332);
                          +SDR 16 TDI (FFFF) TDO (4D52);
                          +SDR 16 TDI (FFFF) TDO (6323);
                          +SDR 16 TDI (FFFF) TDO (B373);
                          +SDR 16 TDI (FFFF) TDO (36A3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                           SDR 16 TDI (FFFF) TDO (7DDD);
                           SDR 16 TDI (FFFF) TDO (BBA5);
                           SDR 16 TDI (FFFF) TDO (5DDD);
                          @@ -10119,12 +10124,12 @@ SDR 16 TDI (FFFF) TDO (B5DD);
                           SDR 16 TDI (FFFF) TDO (DDFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FDF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (D99B);
                          +SDR 16 TDI (FFFF) TDO (7FDE);
                          +SDR 16 TDI (FFFF) TDO (DDFD);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFEE);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10136,15 +10141,15 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77FF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (6FF7);
                          +SDR 16 TDI (FFFF) TDO (EFEF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BF7F);
                          -SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10152,14 +10157,14 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                           SDR 16 TDI (FFFF) TDO (7FDF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FF7F);
                          @@ -10168,15 +10173,15 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (8FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFD);
                          -SDR 16 TDI (FFFF) TDO (4FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (7FBF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FF7F);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                          @@ -10184,14 +10189,14 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5DFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (AFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (6FF7);
                          +SDR 16 TDI (FFFF) TDO (F7EF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (E7FF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (9F7F);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10211,7 +10216,7 @@ SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                           SDR 16 TDI (FFFF) TDO (FFFB);
                           SDR 16 TDI (FFFF) TDO (77FF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10220,25 +10225,13 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (5FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (77EE);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                          @@ -10249,6 +10242,18 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFE);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10600,7 +10605,7 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10653,9 +10658,9 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10664,7 +10669,7 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10701,9 +10706,9 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FBE);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10713,8 +10718,8 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FEF);
                          -SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EBFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                           SDR 16 TDI (FFFF) TDO (EFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                          @@ -10728,9 +10733,9 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (5FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFBD);
                          -SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (F7FF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -10745,7 +10750,7 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          -SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                           SDR 16 TDI (FFFF) TDO (FDFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10760,9 +10765,9 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FF7E);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          -SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (D77F);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (DBFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                          @@ -10776,8 +10781,8 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (FFDD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (DFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10793,7 +10798,7 @@ SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (FFFB);
                          -SDR 16 TDI (FFFF) TDO (77EF);
                          +SDR 16 TDI (FFFF) TDO (77EB);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFDD);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10808,7 +10813,7 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          @@ -10824,8 +10829,8 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (9FFF);
                          -SDR 16 TDI (FFFF) TDO (FFEF);
                          -SDR 16 TDI (FFFF) TDO (5FFD);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (4FF3);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (BFEF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                          @@ -10840,8 +10845,8 @@ SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (7FFF);
                           SDR 16 TDI (FFFF) TDO (FFFF);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                          -SDR 16 TDI (FFFF) TDO (FEF1);
                          -SDR 16 TDI (FFFF) TDO (67E7);
                          +SDR 16 TDI (FFFF) TDO (FED7);
                          +SDR 16 TDI (FFFF) TDO (6FF7);
                           SDR 16 TDI (FFFF) TDO (BFFF);
                           SDR 16 TDI (FFFF) TDO (9FED);
                           SDR 16 TDI (FFFF) TDO (EFFD);
                          diff --git a/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          index b9cec13a8..254a3481a 100644
                          --- a/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          +++ b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          @@ -41,7 +41,7 @@ set_global_assignment -name DEVICE 5M40ZE64C5
                           set_global_assignment -name TOP_LEVEL_ENTITY top
                           set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1
                           set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:24:55  APRIL 29, 2014"
                          -set_global_assignment -name LAST_QUARTUS_VERSION 14.1.0
                          +set_global_assignment -name LAST_QUARTUS_VERSION "16.1.2 Lite Edition"
                           set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
                           set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
                           set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
                          diff --git a/hardware/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.svf b/hardware/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.svf
                          new file mode 100644
                          index 000000000..f3ad8b8b2
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.svf
                          @@ -0,0 +1,11651 @@
                          +!Copyright (C) 2017  Intel Corporation. All rights reserved.
                          +!Your use of Intel Corporation's design tools, logic functions 
                          +!and other software and tools, and its AMPP partner logic 
                          +!functions, and any output files from any of the foregoing 
                          +!(including device programming or simulation files), and any 
                          +!associated documentation or information are expressly subject 
                          +!to the terms and conditions of the Intel Program License 
                          +!Subscription Agreement, the Intel Quartus Prime License Agreement,
                          +!the Intel MegaCore Function License Agreement, or other 
                          +!applicable license agreement, including, without limitation, 
                          +!that your use is for the sole purpose of programming logic 
                          +!devices manufactured by Intel and sold by Intel or its 
                          +!authorized distributors.  Please refer to the applicable 
                          +!agreement for further details.
                          +!
                          +!Quartus Prime SVF converter 16.1
                          +!
                          +!Device #1: 5M40Z - /home/jboone/src/portapack-release/hardware/portapack_h1/cpld/20170522/output_files/portapack_h1_cpld.pof Wed May 31 16:05:40 2017
                          +!
                          +!NOTE "USERCODE" "0018BE34";
                          +!
                          +!NOTE "CHECKSUM" "0018C224";
                          +!
                          +!
                          +!
                          +FREQUENCY 1.80E+07 HZ;
                          +!
                          +!
                          +!
                          +TRST ABSENT;
                          +ENDDR IDLE;
                          +ENDIR IRPAUSE;
                          +STATE IDLE;
                          +SIR 10 TDI (005);
                          +RUNTEST IDLE 93 TCK ENDSTATE IDLE;
                          +SDR 240 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
                          +SIR 10 TDI (3FF);
                          +RUNTEST 18003 TCK;
                          +SIR 10 TDI (2CC);
                          +RUNTEST 18003 TCK;
                          +!
                          +!
                          +!
                          +!CHECKING SILICON ID
                          +!
                          +!
                          +!
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0089);
                          +SIR 10 TDI (205);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (FFFF) TDO (8232) MASK (FFFF);
                          +SDR 16 TDI (FFFF) TDO (2AA2);
                          +SDR 16 TDI (FFFF) TDO (4A82);
                          +SDR 16 TDI (FFFF) TDO (8C0C);
                          +SDR 16 TDI (FFFF) TDO (0000);
                          +!
                          +!
                          +!
                          +!BULK ERASE
                          +!
                          +!
                          +!
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0011);
                          +SIR 10 TDI (2F2);
                          +RUNTEST 9000003 TCK;
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0001);
                          +SIR 10 TDI (2F2);
                          +RUNTEST 9000003 TCK;
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0000);
                          +SIR 10 TDI (2F2);
                          +RUNTEST 9000003 TCK;
                          +!
                          +!
                          +!
                          +!PROGRAM
                          +!
                          +!
                          +!
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0000);
                          +SIR 10 TDI (2F4);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F9E7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (79FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AF9E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBE7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B3F7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (67FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (E7F9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (733F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B77F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B99F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BCCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFD6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77F5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7B7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F9FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (E7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (E7BF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFED);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DF7E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BABF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A95F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FACF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B678);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (07F4);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FACF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BE78);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (006B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F9CF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B806);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (07FE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F3F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F9CF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B806);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (003B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73EC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCC7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B8B9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BCD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DCCA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B59D);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99FA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F99);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF2F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF9F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FB7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5FD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7D7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F67F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7D5B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ABBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F679);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B3FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FD7B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (D7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A57F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BE9F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (67FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B6BF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ADFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B77E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFD6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF89);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (D7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6CFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB57);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5AA9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7300);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (0FCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B1A9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9875);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB5E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DAA9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7300);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (00CF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9A9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (987F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF88);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B13F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (8CC9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7300);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (0FCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9C9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9875);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF8E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B13F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (8CCB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6600);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (00CF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9C9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (987F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7C6C);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AD8F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B198);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73EE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ECE7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB9B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DC9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B995);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (199D);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (79CC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCCA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B199);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9EF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF6F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ADFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (37FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F77);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7D);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BBD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (75FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (D7DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BD7B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (377D);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (79FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F77);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (67BF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFD7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (75FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF6F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BB7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (577F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F9B);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ABDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBCD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B6BF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (D3FE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FC7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BE3A);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6C7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AD9F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDCB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B1D9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (81F5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (69FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ABFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F5D);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (ABDB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A3FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BD5F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F98);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (88CF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B989);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9F5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F08);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (889F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B909);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (797F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7366);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (66C7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B9B1);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (98FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CC9A);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B49C);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F66);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (66FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7B7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7EEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F3FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (D5FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFD6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B6FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A5DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (69FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B99F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (69FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (75FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73CC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCC7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99DF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDD2);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5DD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFB9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFAF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5AF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEA);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (67FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (67FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (63E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (4666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73CC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCC7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (4957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDD2);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5DD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (8FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (A55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BAFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (855F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (97FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (4BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B55F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (3333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (43E6);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6667);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B333);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (31F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6666);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CCC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B98F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (73CC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (CCC7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B999);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (99FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6957);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (74AB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7777);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BBA5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5DDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BDD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDD2);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B5DD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (DDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7BBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (AFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7DFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FF7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFBF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5EFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BDFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FEF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FBFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7F7F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (77EE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFB);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (EFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFDF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFD7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (4FF3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FEF5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FF7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FD5);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (6FFD);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (53FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFF9);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (B77F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F7FF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BF9F);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BCCF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFE);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7CFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFE7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (93E7);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5F3E);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (79F3);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (9FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (5FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (7FFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0001);
                          +SIR 10 TDI (2F4);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +!
                          +!
                          +!
                          +!VERIFY
                          +!
                          +!
                          +!
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0000);
                          +SIR 10 TDI (205);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (FFFF) TDO (7FFF) MASK (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFC);
                          +SDR 16 TDI (FFFF) TDO (F9E7);
                          +SDR 16 TDI (FFFF) TDO (79FF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (AF9E);
                          +SDR 16 TDI (FFFF) TDO (7CFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBE7);
                          +SDR 16 TDI (FFFF) TDO (B3F7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F3F);
                          +SDR 16 TDI (FFFF) TDO (7DFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFDB);
                          +SDR 16 TDI (FFFF) TDO (E7F9);
                          +SDR 16 TDI (FFFF) TDO (733F);
                          +SDR 16 TDI (FFFF) TDO (FFF9);
                          +SDR 16 TDI (FFFF) TDO (B77F);
                          +SDR 16 TDI (FFFF) TDO (CCCF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (B99F);
                          +SDR 16 TDI (FFFF) TDO (BCCC);
                          +SDR 16 TDI (FFFF) TDO (CFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFD6);
                          +SDR 16 TDI (FFFF) TDO (77F5);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7B7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFE);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FBFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDA);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F9FF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FDEF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DDFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (E7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFEB);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (EBFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (E7BF);
                          +SDR 16 TDI (FFFF) TDO (BFED);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (FFCF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (DF7E);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FE);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BABF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBFD);
                          +SDR 16 TDI (FFFF) TDO (BBDB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A95F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7F3F);
                          +SDR 16 TDI (FFFF) TDO (FACF);
                          +SDR 16 TDI (FFFF) TDO (B678);
                          +SDR 16 TDI (FFFF) TDO (07F4);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F3F);
                          +SDR 16 TDI (FFFF) TDO (FACF);
                          +SDR 16 TDI (FFFF) TDO (BE78);
                          +SDR 16 TDI (FFFF) TDO (006B);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BB5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F3F);
                          +SDR 16 TDI (FFFF) TDO (F9CF);
                          +SDR 16 TDI (FFFF) TDO (B806);
                          +SDR 16 TDI (FFFF) TDO (07FE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F3F);
                          +SDR 16 TDI (FFFF) TDO (F9CF);
                          +SDR 16 TDI (FFFF) TDO (B806);
                          +SDR 16 TDI (FFFF) TDO (003B);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (73EC);
                          +SDR 16 TDI (FFFF) TDO (CCC7);
                          +SDR 16 TDI (FFFF) TDO (B8B9);
                          +SDR 16 TDI (FFFF) TDO (B9FF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BCD);
                          +SDR 16 TDI (FFFF) TDO (DCCA);
                          +SDR 16 TDI (FFFF) TDO (B59D);
                          +SDR 16 TDI (FFFF) TDO (99FA);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FB);
                          +SDR 16 TDI (FFFF) TDO (F7DF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DEFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F99);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (EFFD);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DEFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF2F);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF9F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FB7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B5FD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7D7F);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                          +SDR 16 TDI (FFFF) TDO (BFBE);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BEF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F67F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FAFF);
                          +SDR 16 TDI (FFFF) TDO (7D5B);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFF6);
                          +SDR 16 TDI (FFFF) TDO (ABBF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7EF7);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BDBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F679);
                          +SDR 16 TDI (FFFF) TDO (B3FF);
                          +SDR 16 TDI (FFFF) TDO (FD7B);
                          +SDR 16 TDI (FFFF) TDO (7F5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFDB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFDE);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (77FE);
                          +SDR 16 TDI (FFFF) TDO (D7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A57F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (6EFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BE9F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FDF5);
                          +SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B6BF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (ADFF);
                          +SDR 16 TDI (FFFF) TDO (B77E);
                          +SDR 16 TDI (FFFF) TDO (7EFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFD6);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF89);
                          +SDR 16 TDI (FFFF) TDO (B5FF);
                          +SDR 16 TDI (FFFF) TDO (CFFD);
                          +SDR 16 TDI (FFFF) TDO (73FF);
                          +SDR 16 TDI (FFFF) TDO (D7FF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B5AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFF6);
                          +SDR 16 TDI (FFFF) TDO (BB7F);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (7FDD);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFEE);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEA);
                          +SDR 16 TDI (FFFF) TDO (6CFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFDC);
                          +SDR 16 TDI (FFFF) TDO (BB57);
                          +SDR 16 TDI (FFFF) TDO (5AA9);
                          +SDR 16 TDI (FFFF) TDO (7300);
                          +SDR 16 TDI (FFFF) TDO (0FCF);
                          +SDR 16 TDI (FFFF) TDO (B1A9);
                          +SDR 16 TDI (FFFF) TDO (9875);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BB5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFDC);
                          +SDR 16 TDI (FFFF) TDO (BB5E);
                          +SDR 16 TDI (FFFF) TDO (DAA9);
                          +SDR 16 TDI (FFFF) TDO (7300);
                          +SDR 16 TDI (FFFF) TDO (00CF);
                          +SDR 16 TDI (FFFF) TDO (B9A9);
                          +SDR 16 TDI (FFFF) TDO (987F);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF88);
                          +SDR 16 TDI (FFFF) TDO (B13F);
                          +SDR 16 TDI (FFFF) TDO (8CC9);
                          +SDR 16 TDI (FFFF) TDO (7300);
                          +SDR 16 TDI (FFFF) TDO (0FCF);
                          +SDR 16 TDI (FFFF) TDO (B9C9);
                          +SDR 16 TDI (FFFF) TDO (9875);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF8E);
                          +SDR 16 TDI (FFFF) TDO (B13F);
                          +SDR 16 TDI (FFFF) TDO (8CCB);
                          +SDR 16 TDI (FFFF) TDO (6600);
                          +SDR 16 TDI (FFFF) TDO (00CF);
                          +SDR 16 TDI (FFFF) TDO (B9C9);
                          +SDR 16 TDI (FFFF) TDO (987F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7C6C);
                          +SDR 16 TDI (FFFF) TDO (AD8F);
                          +SDR 16 TDI (FFFF) TDO (B198);
                          +SDR 16 TDI (FFFF) TDO (73EE);
                          +SDR 16 TDI (FFFF) TDO (ECE7);
                          +SDR 16 TDI (FFFF) TDO (BB9B);
                          +SDR 16 TDI (FFFF) TDO (BBFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DC9);
                          +SDR 16 TDI (FFFF) TDO (B995);
                          +SDR 16 TDI (FFFF) TDO (199D);
                          +SDR 16 TDI (FFFF) TDO (79CC);
                          +SDR 16 TDI (FFFF) TDO (CCCA);
                          +SDR 16 TDI (FFFF) TDO (B199);
                          +SDR 16 TDI (FFFF) TDO (99FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B9EF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF6F);
                          +SDR 16 TDI (FFFF) TDO (ADFF);
                          +SDR 16 TDI (FFFF) TDO (37FF);
                          +SDR 16 TDI (FFFF) TDO (7F77);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FF7D);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDDF);
                          +SDR 16 TDI (FFFF) TDO (7BBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDD);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (BEFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDBF);
                          +SDR 16 TDI (FFFF) TDO (7BBD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFAF);
                          +SDR 16 TDI (FFFF) TDO (75FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (DFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FBFB);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (DEFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (D7DF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BB7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBE);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDDF);
                          +SDR 16 TDI (FFFF) TDO (BD7B);
                          +SDR 16 TDI (FFFF) TDO (377D);
                          +SDR 16 TDI (FFFF) TDO (79FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F77);
                          +SDR 16 TDI (FFFF) TDO (67BF);
                          +SDR 16 TDI (FFFF) TDO (BFD7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (75FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (FF6F);
                          +SDR 16 TDI (FFFF) TDO (BB7F);
                          +SDR 16 TDI (FFFF) TDO (577F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F9B);
                          +SDR 16 TDI (FFFF) TDO (ABDF);
                          +SDR 16 TDI (FFFF) TDO (BBCD);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B6BF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                          +SDR 16 TDI (FFFF) TDO (DFAF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (D3FE);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFC);
                          +SDR 16 TDI (FFFF) TDO (FC7F);
                          +SDR 16 TDI (FFFF) TDO (BE3A);
                          +SDR 16 TDI (FFFF) TDO (6C7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AD9F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (DDCB);
                          +SDR 16 TDI (FFFF) TDO (B1D9);
                          +SDR 16 TDI (FFFF) TDO (81F5);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (ABFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F5D);
                          +SDR 16 TDI (FFFF) TDO (DDCF);
                          +SDR 16 TDI (FFFF) TDO (ABDB);
                          +SDR 16 TDI (FFFF) TDO (A3FF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BD5F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F98);
                          +SDR 16 TDI (FFFF) TDO (88CF);
                          +SDR 16 TDI (FFFF) TDO (B989);
                          +SDR 16 TDI (FFFF) TDO (B9F5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7F08);
                          +SDR 16 TDI (FFFF) TDO (889F);
                          +SDR 16 TDI (FFFF) TDO (B909);
                          +SDR 16 TDI (FFFF) TDO (797F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (7366);
                          +SDR 16 TDI (FFFF) TDO (66C7);
                          +SDR 16 TDI (FFFF) TDO (B9B1);
                          +SDR 16 TDI (FFFF) TDO (98FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BCC);
                          +SDR 16 TDI (FFFF) TDO (CC9A);
                          +SDR 16 TDI (FFFF) TDO (B49C);
                          +SDR 16 TDI (FFFF) TDO (CDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7F66);
                          +SDR 16 TDI (FFFF) TDO (66FF);
                          +SDR 16 TDI (FFFF) TDO (B7B7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7EEF);
                          +SDR 16 TDI (FFFF) TDO (DEEF);
                          +SDR 16 TDI (FFFF) TDO (BBCC);
                          +SDR 16 TDI (FFFF) TDO (F3FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEE);
                          +SDR 16 TDI (FFFF) TDO (FEEF);
                          +SDR 16 TDI (FFFF) TDO (BDFD);
                          +SDR 16 TDI (FFFF) TDO (D5FF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFD6);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBBF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (DFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFDE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B6FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A5DF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B99F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (69FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (75FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B5AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEB);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (73CC);
                          +SDR 16 TDI (FFFF) TDO (CCC7);
                          +SDR 16 TDI (FFFF) TDO (B999);
                          +SDR 16 TDI (FFFF) TDO (99DF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BDD);
                          +SDR 16 TDI (FFFF) TDO (DDD2);
                          +SDR 16 TDI (FFFF) TDO (B5DD);
                          +SDR 16 TDI (FFFF) TDO (DDDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BF7F);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFB9);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFAF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B5AF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEA);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (67FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (63E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (4666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (73CC);
                          +SDR 16 TDI (FFFF) TDO (CCC7);
                          +SDR 16 TDI (FFFF) TDO (B999);
                          +SDR 16 TDI (FFFF) TDO (99FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (4957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BDD);
                          +SDR 16 TDI (FFFF) TDO (DDD2);
                          +SDR 16 TDI (FFFF) TDO (B5DD);
                          +SDR 16 TDI (FFFF) TDO (DDFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FDF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (8FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFF7);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FF7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FEFB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (CFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BBFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (A55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (7BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFB);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BAFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEE);
                          +SDR 16 TDI (FFFF) TDO (77FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (855F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (97FF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (4BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B55F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF5);
                          +SDR 16 TDI (FFFF) TDO (6BFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (3333);
                          +SDR 16 TDI (FFFF) TDO (43E6);
                          +SDR 16 TDI (FFFF) TDO (6667);
                          +SDR 16 TDI (FFFF) TDO (B333);
                          +SDR 16 TDI (FFFF) TDO (31F3);
                          +SDR 16 TDI (FFFF) TDO (6666);
                          +SDR 16 TDI (FFFF) TDO (7CCC);
                          +SDR 16 TDI (FFFF) TDO (B98F);
                          +SDR 16 TDI (FFFF) TDO (9999);
                          +SDR 16 TDI (FFFF) TDO (73CC);
                          +SDR 16 TDI (FFFF) TDO (CCC7);
                          +SDR 16 TDI (FFFF) TDO (B999);
                          +SDR 16 TDI (FFFF) TDO (99FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (6957);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (B777);
                          +SDR 16 TDI (FFFF) TDO (74AB);
                          +SDR 16 TDI (FFFF) TDO (7777);
                          +SDR 16 TDI (FFFF) TDO (7DDD);
                          +SDR 16 TDI (FFFF) TDO (BBA5);
                          +SDR 16 TDI (FFFF) TDO (5DDD);
                          +SDR 16 TDI (FFFF) TDO (7BDD);
                          +SDR 16 TDI (FFFF) TDO (DDD2);
                          +SDR 16 TDI (FFFF) TDO (B5DD);
                          +SDR 16 TDI (FFFF) TDO (DDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (B7FF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7BBF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (AFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7DFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFEF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EF7F);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FF7F);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFBF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5EFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FDFE);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BEFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFD);
                          +SDR 16 TDI (FFFF) TDO (6FFF);
                          +SDR 16 TDI (FFFF) TDO (FDFF);
                          +SDR 16 TDI (FFFF) TDO (BDFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEFF);
                          +SDR 16 TDI (FFFF) TDO (7FEF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FBFF);
                          +SDR 16 TDI (FFFF) TDO (7F7F);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFE);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFDF);
                          +SDR 16 TDI (FFFF) TDO (7FFB);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFD);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFF9);
                          +SDR 16 TDI (FFFF) TDO (77EE);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFB);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (EFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (BFDF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFD7);
                          +SDR 16 TDI (FFFF) TDO (4FF3);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (BFF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FEF5);
                          +SDR 16 TDI (FFFF) TDO (6FF7);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (9FD5);
                          +SDR 16 TDI (FFFF) TDO (6FFD);
                          +SDR 16 TDI (FFFF) TDO (53FF);
                          +SDR 16 TDI (FFFF) TDO (FFF9);
                          +SDR 16 TDI (FFFF) TDO (B77F);
                          +SDR 16 TDI (FFFF) TDO (F7FF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (BF9F);
                          +SDR 16 TDI (FFFF) TDO (BCCF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFC);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFE);
                          +SDR 16 TDI (FFFF) TDO (7CFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFE7);
                          +SDR 16 TDI (FFFF) TDO (93E7);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5F3E);
                          +SDR 16 TDI (FFFF) TDO (79F3);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (9FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (5FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (7FFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (BFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0001);
                          +SIR 10 TDI (205);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (FFFF) TDO (FFFF) MASK (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SDR 16 TDI (FFFF) TDO (FFFF);
                          +SIR 10 TDI (203);
                          +RUNTEST 93 TCK;
                          +SDR 13 TDI (0000);
                          +SIR 10 TDI (2F4);
                          +RUNTEST 93 TCK;
                          +SDR 16 TDI (7BFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (FFFF);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (BFFC);
                          +RUNTEST 1800 TCK;
                          +SDR 16 TDI (F9E7);
                          +RUNTEST 1800 TCK;
                          +SIR 10 TDI (201);
                          +RUNTEST 18003 TCK;
                          +SIR 10 TDI (3FF);
                          +RUNTEST 18000 TCK;
                          +STATE IDLE;
                          diff --git a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          index c2a274d8a..b16ad776f 100644
                          --- a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          +++ b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          @@ -41,7 +41,7 @@ set_global_assignment -name DEVICE 5M40ZE64C5
                           set_global_assignment -name TOP_LEVEL_ENTITY top
                           set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1
                           set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:24:55  APRIL 29, 2014"
                          -set_global_assignment -name LAST_QUARTUS_VERSION 14.1.0
                          +set_global_assignment -name LAST_QUARTUS_VERSION "16.1.2 Lite Edition"
                           set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
                           set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
                           set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
                          
                          From 76c2cc77af675a5f0241bbc30ba8a75893fb5aaf Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Thu, 1 Jun 2017 15:20:16 -0700
                          Subject: [PATCH 30/39] CPLD: Move around some .gitignores.
                          
                          ---
                           hardware/.gitignore                   | 14 --------------
                           hardware/portapack_h1/cpld/.gitignore | 14 ++++++++++++++
                           2 files changed, 14 insertions(+), 14 deletions(-)
                           create mode 100644 hardware/portapack_h1/cpld/.gitignore
                          
                          diff --git a/hardware/.gitignore b/hardware/.gitignore
                          index ddc0d214f..a0aef850b 100644
                          --- a/hardware/.gitignore
                          +++ b/hardware/.gitignore
                          @@ -1,19 +1,5 @@
                           # Common
                           *.bak
                           
                          -# CPLD tool
                          -*.bsd
                          -*.rpt
                          -tb2_ie_info.xml
                          -**/cpld/db/
                          -**/cpld/incremental_db/
                          -**/cpld/output_files/*.done
                          -**/cpld/output_files/*.smsg
                          -**/cpld/output_files/*.summary
                          -**/cpld/output_files/*.jdi
                          -**/cpld/output_files/*.pin
                          -**/cpld/output_files/*.pof
                          -**/cpld/simulation/
                          -
                           # KiCad
                           *.kicad_pcb-bak
                          diff --git a/hardware/portapack_h1/cpld/.gitignore b/hardware/portapack_h1/cpld/.gitignore
                          new file mode 100644
                          index 000000000..8399f17bf
                          --- /dev/null
                          +++ b/hardware/portapack_h1/cpld/.gitignore
                          @@ -0,0 +1,14 @@
                          +**/*.qws
                          +**/*.chg
                          +**/smart.log
                          +**/db/
                          +**/incremental_db/
                          +**/output_files/*.done
                          +**/output_files/*.smsg
                          +**/output_files/*.summary
                          +**/output_files/*.jdi
                          +**/output_files/*.pin
                          +**/output_files/*.pof
                          +**/output_files/*.rpt
                          +**/output_files/*.sld
                          +**/simulation/
                          
                          From a3483a839462bde24818c03fca27a270ad1a1cd4 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 16:54:24 -0700
                          Subject: [PATCH 31/39] CPLD: Introduce Config type to clean up programming
                           interface.
                          
                          Hide the details of how the CPLD data is stored.
                          ---
                           firmware/application/cpld_update.cpp    |  8 ++++----
                           firmware/application/cpld_update.hpp    |  6 ++----
                           firmware/application/portapack.cpp      |  4 ++--
                           firmware/common/portapack_cpld_data.hpp | 13 +++++++++++++
                           4 files changed, 21 insertions(+), 10 deletions(-)
                          
                          diff --git a/firmware/application/cpld_update.cpp b/firmware/application/cpld_update.cpp
                          index 0a01d6d76..52b59b089 100644
                          --- a/firmware/application/cpld_update.cpp
                          +++ b/firmware/application/cpld_update.cpp
                          @@ -27,11 +27,11 @@
                           #include "jtag_target_gpio.hpp"
                           #include "cpld_max5.hpp"
                           #include "cpld_xilinx.hpp"
                          +#include "portapack_cpld_data.hpp"
                           #include "hackrf_cpld_data.hpp"
                           
                           bool cpld_update_if_necessary(
                          -	const std::array& block_0,
                          -	const std::array& block_1
                          +	const portapack::cpld::Config config
                           ) {
                           	jtag::GPIOTarget target {
                           		portapack::gpio_cpld_tck,
                          @@ -65,11 +65,11 @@ bool cpld_update_if_necessary(
                           	}
                           
                           	/* Verify CPLD contents against current bitstream. */
                          -	auto ok = cpld.verify(block_0, block_1);
                          +	auto ok = cpld.verify(config.block_0, config.block_1);
                           
                           	/* CPLD verifies incorrectly. Erase and program with current bitstream. */
                           	if( !ok ) {
                          -		ok = cpld.program(block_0, block_1);
                          +		ok = cpld.program(config.block_0, config.block_1);
                           	}
                           
                           	/* If programming OK, reset CPLD to user mode. Otherwise leave it in
                          diff --git a/firmware/application/cpld_update.hpp b/firmware/application/cpld_update.hpp
                          index ba39790d3..38691e087 100644
                          --- a/firmware/application/cpld_update.hpp
                          +++ b/firmware/application/cpld_update.hpp
                          @@ -22,12 +22,10 @@
                           #ifndef __CPLD_UPDATE_H__
                           #define __CPLD_UPDATE_H__
                           
                          -#include 
                          -#include 
                          +#include "portapack_cpld_data.hpp"
                           
                           bool cpld_update_if_necessary(
                          -	const std::array& block_0,
                          -	const std::array& block_1
                          +	const portapack::cpld::Config config
                           );
                           
                           bool cpld_hackrf_load_sram();
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 8eac95cb8..592540613 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -176,11 +176,11 @@ void init() {
                           	clock_manager.run_at_full_speed();
                           
                           	if( portapack_model() == PortaPackModel::R2_20170522 ) {
                          -		if( !cpld_update_if_necessary(portapack::cpld::rev_20170522::block_0, portapack::cpld::rev_20170522::block_1) ) {
                          +		if( !cpld_update_if_necessary(portapack::cpld::rev_20170522::config) ) {
                           			chSysHalt();
                           		}
                           	} else {
                          -		if( !cpld_update_if_necessary(portapack::cpld::rev_20150901::block_0, portapack::cpld::rev_20150901::block_1) ) {
                          +		if( !cpld_update_if_necessary(portapack::cpld::rev_20150901::config) ) {
                           			chSysHalt();
                           		}
                           	}
                          diff --git a/firmware/common/portapack_cpld_data.hpp b/firmware/common/portapack_cpld_data.hpp
                          index 8170bdeed..71190b0bf 100644
                          --- a/firmware/common/portapack_cpld_data.hpp
                          +++ b/firmware/common/portapack_cpld_data.hpp
                          @@ -28,14 +28,27 @@
                           namespace portapack {
                           namespace cpld {
                           
                          +struct Config {
                          +	const std::array& block_0;
                          +	const std::array& block_1;
                          +};
                          +
                           namespace rev_20150901 {
                          +
                           extern const std::array block_0;
                           extern const std::array block_1;
                          +
                          +const Config config { block_0, block_1 };
                          +
                           } /* namespace rev_20150901 */
                           
                           namespace rev_20170522 {
                          +
                           extern const std::array block_0;
                           extern const std::array block_1;
                          +
                          +const Config config { block_0, block_1 };
                          +
                           } /* namespace rev_20170522 */
                           
                           } /* namespace cpld */
                          
                          From fe687b93a2282ae3123e344e6baa30d4e49dcf77 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 17:05:41 -0700
                          Subject: [PATCH 32/39] CPLD: Extract decision about which CPLD config to use.
                          
                          ...based on hardware revision.
                          ---
                           firmware/application/portapack.cpp | 17 +++++++++--------
                           1 file changed, 9 insertions(+), 8 deletions(-)
                          
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 592540613..6cc8556d4 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -134,6 +134,13 @@ static PortaPackModel portapack_model() {
                           	return model.value();
                           }
                           
                          +static const portapack::cpld::Config& portapack_cpld_config() {
                          +	return (portapack_model() == PortaPackModel::R2_20170522)
                          +		? portapack::cpld::rev_20170522::config
                          +		: portapack::cpld::rev_20150901::config
                          +		;
                          +}
                          +
                           void init() {
                           	for(const auto& pin : pins) {
                           		pin.init();
                          @@ -175,14 +182,8 @@ void init() {
                           	clock_manager.set_reference_ppb(persistent_memory::correction_ppb());
                           	clock_manager.run_at_full_speed();
                           
                          -	if( portapack_model() == PortaPackModel::R2_20170522 ) {
                          -		if( !cpld_update_if_necessary(portapack::cpld::rev_20170522::config) ) {
                          -			chSysHalt();
                          -		}
                          -	} else {
                          -		if( !cpld_update_if_necessary(portapack::cpld::rev_20150901::config) ) {
                          -			chSysHalt();
                          -		}
                          +	if( !cpld_update_if_necessary(portapack_cpld_config()) ) {
                          +		chSysHalt();
                           	}
                           
                           	if( !cpld_hackrf_load_sram() ) {
                          
                          From 3d06941129c23170f856e624370f1c913183b366 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 17:13:41 -0700
                          Subject: [PATCH 33/39] Move CPLD filres to common/
                          
                          ...for imminent refactoring.
                          ---
                           firmware/application/CMakeLists.txt                | 4 ++--
                           firmware/{application => common}/baseband_cpld.cpp | 0
                           firmware/{application => common}/baseband_cpld.hpp | 0
                           firmware/{application => common}/cpld_update.cpp   | 0
                           firmware/{application => common}/cpld_update.hpp   | 0
                           5 files changed, 2 insertions(+), 2 deletions(-)
                           rename firmware/{application => common}/baseband_cpld.cpp (100%)
                           rename firmware/{application => common}/baseband_cpld.hpp (100%)
                           rename firmware/{application => common}/cpld_update.cpp (100%)
                           rename firmware/{application => common}/cpld_update.hpp (100%)
                          
                          diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
                          index be3e8ba2e..5e46e4b28 100644
                          --- a/firmware/application/CMakeLists.txt
                          +++ b/firmware/application/CMakeLists.txt
                          @@ -127,7 +127,7 @@ set(CPPSRC
                           	${COMMON}/wm8731.cpp
                           	${COMMON}/ak4951.cpp
                           	radio.cpp
                          -	baseband_cpld.cpp
                          +	${COMMON}/baseband_cpld.cpp
                           	tuning.cpp
                           	rf_path.cpp
                           	rffc507x.cpp
                          @@ -196,7 +196,7 @@ set(CPPSRC
                           	${COMMON}/cpld_xilinx.cpp
                           	${COMMON}/jtag.cpp
                           	${COMMON}/jtag_tap.cpp
                          -	cpld_update.cpp
                          +	${COMMON}/cpld_update.cpp
                           	${CPLD_20150901_DATA_CPP}
                           	${CPLD_20170522_DATA_CPP}
                           	${HACKRF_CPLD_DATA_CPP}
                          diff --git a/firmware/application/baseband_cpld.cpp b/firmware/common/baseband_cpld.cpp
                          similarity index 100%
                          rename from firmware/application/baseband_cpld.cpp
                          rename to firmware/common/baseband_cpld.cpp
                          diff --git a/firmware/application/baseband_cpld.hpp b/firmware/common/baseband_cpld.hpp
                          similarity index 100%
                          rename from firmware/application/baseband_cpld.hpp
                          rename to firmware/common/baseband_cpld.hpp
                          diff --git a/firmware/application/cpld_update.cpp b/firmware/common/cpld_update.cpp
                          similarity index 100%
                          rename from firmware/application/cpld_update.cpp
                          rename to firmware/common/cpld_update.cpp
                          diff --git a/firmware/application/cpld_update.hpp b/firmware/common/cpld_update.hpp
                          similarity index 100%
                          rename from firmware/application/cpld_update.hpp
                          rename to firmware/common/cpld_update.hpp
                          
                          From dd0c009e6ff489e498ff4a968b01d65a0c87dc70 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 21:55:35 -0700
                          Subject: [PATCH 34/39] CPLD: Stop generating HackRF CPLD .hpp file.
                          
                          ---
                           firmware/application/CMakeLists.txt        |  2 +-
                           firmware/common/hackrf_cpld_data.hpp       | 39 ++++++++++++++++++++++
                           firmware/tools/extract_svf_data_xc2c64a.py |  9 ++---
                           3 files changed, 45 insertions(+), 5 deletions(-)
                           create mode 100644 firmware/common/hackrf_cpld_data.hpp
                          
                          diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
                          index 5e46e4b28..03d7bc007 100644
                          --- a/firmware/application/CMakeLists.txt
                          +++ b/firmware/application/CMakeLists.txt
                          @@ -327,7 +327,7 @@ add_custom_command(
                           
                           add_custom_command(
                           	OUTPUT ${HACKRF_CPLD_DATA_HPP} ${HACKRF_CPLD_DATA_CPP}
                          -	COMMAND ${EXTRACT_SVF_DATA_XC2C64A} ${HACKRF_CPLD_SVF_PATH} hackrf::one::cpld::verify_blocks ${HACKRF_CPLD_DATA_HPP} ${HACKRF_CPLD_DATA_CPP}
                          +	COMMAND ${EXTRACT_SVF_DATA_XC2C64A} ${HACKRF_CPLD_SVF_PATH} hackrf::one::cpld::verify_blocks ${HACKRF_CPLD_DATA_CPP}
                           	DEPENDS ${EXTRACT_SVF_DATA_XC2C64A} ${HACKRF_CPLD_SVF_PATH}
                           )
                           
                          diff --git a/firmware/common/hackrf_cpld_data.hpp b/firmware/common/hackrf_cpld_data.hpp
                          new file mode 100644
                          index 000000000..888d41eac
                          --- /dev/null
                          +++ b/firmware/common/hackrf_cpld_data.hpp
                          @@ -0,0 +1,39 @@
                          +/*
                          + * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc.
                          + *
                          + * This file is part of PortaPack.
                          + *
                          + * This program is free software; you can redistribute it and/or modify
                          + * it under the terms of the GNU General Public License as published by
                          + * the Free Software Foundation; either version 2, or (at your option)
                          + * any later version.
                          + *
                          + * This program is distributed in the hope that it will be useful,
                          + * but WITHOUT ANY WARRANTY; without even the implied warranty of
                          + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          + * GNU General Public License for more details.
                          + *
                          + * You should have received a copy of the GNU General Public License
                          + * along with this program; see the file COPYING.  If not, write to
                          + * the Free Software Foundation, Inc., 51 Franklin Street,
                          + * Boston, MA 02110-1301, USA.
                          + */
                          +
                          +#ifndef __HACKRF_CPLD_DATA_H__
                          +#define __HACKRF_CPLD_DATA_H__
                          +
                          +#include "cpld_xilinx.hpp"
                          +
                          +namespace hackrf {
                          +namespace one {
                          +namespace cpld {
                          +
                          +using CPLD = ::cpld::xilinx::XC2C64A;
                          +
                          +extern const CPLD::verify_blocks_t verify_blocks;
                          +
                          +} /* namespace hackrf */
                          +} /* namespace one */
                          +} /* namespace cpld */
                          +
                          +#endif/*__HACKRF_CPLD_DATA_H__*/
                          diff --git a/firmware/tools/extract_svf_data_xc2c64a.py b/firmware/tools/extract_svf_data_xc2c64a.py
                          index 1c1b8c1b5..8ec3afd54 100755
                          --- a/firmware/tools/extract_svf_data_xc2c64a.py
                          +++ b/firmware/tools/extract_svf_data_xc2c64a.py
                          @@ -36,7 +36,7 @@ def crack_variable_path(variable_path):
                           parser = argparse.ArgumentParser()
                           parser.add_argument('input_file_path', type=str)
                           parser.add_argument('variable_path', type=str)
                          -parser.add_argument('header_file_path', type=str)
                          +# parser.add_argument('header_file_path', type=str)
                           parser.add_argument('data_file_path', type=str)
                           args = parser.parse_args()
                           
                          @@ -330,12 +330,13 @@ for block in verify:
                           	if block['id'] == 0x05:
                           		block['tdo'] = program_done[0]['tdi']
                           
                          -header_file_name = os.path.split(args.header_file_path)[1]
                          +# header_file_name = os.path.split(args.header_file_path)[1]
                          +header_file_name = 'hackrf_cpld_data.hpp'
                           
                          -header_includes = ('cpld_xilinx.hpp',)
                          +# header_includes = ('cpld_xilinx.hpp',)
                           data_includes = (header_file_name,)
                           
                           type_name = '::cpld::xilinx::XC2C64A::verify_blocks_t'
                           
                          -HeaderGen(header_includes, namespaces, type_name, variable_name).to_file(args.header_file_path)
                          +# HeaderGen(header_includes, namespaces, type_name, variable_name).to_file(args.header_file_path)
                           DataGen(data_includes, namespaces, type_name, variable_name, verify).to_file(args.data_file_path)
                          
                          From dec4e4118975d180f24bc94587c128bb0f678fd4 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 21:57:13 -0700
                          Subject: [PATCH 35/39] CPLD: Organize CPLD code into namespaces.
                          
                          Use type aliases to hide actual CPLD type (somewhat).
                          ---
                           firmware/application/portapack.cpp      |  6 ++---
                           firmware/application/ui_setup.cpp       |  2 +-
                           firmware/common/cpld_max5.hpp           |  5 +++++
                           firmware/common/cpld_update.cpp         | 30 +++++++++++++++++--------
                           firmware/common/cpld_update.hpp         | 22 +++++++++++++-----
                           firmware/common/portapack_cpld_data.hpp |  8 +++----
                           6 files changed, 51 insertions(+), 22 deletions(-)
                          
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 6cc8556d4..b993feaba 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -182,11 +182,11 @@ void init() {
                           	clock_manager.set_reference_ppb(persistent_memory::correction_ppb());
                           	clock_manager.run_at_full_speed();
                           
                          -	if( !cpld_update_if_necessary(portapack_cpld_config()) ) {
                          +	if( !portapack::cpld::update_if_necessary(portapack_cpld_config()) ) {
                           		chSysHalt();
                           	}
                           
                          -	if( !cpld_hackrf_load_sram() ) {
                          +	if( !hackrf::cpld::load_sram() ) {
                           		chSysHalt();
                           	}
                           
                          @@ -217,7 +217,7 @@ void shutdown() {
                           	radio::disable();
                           	audio::shutdown();
                           
                          -	cpld_hackrf_init_from_eeprom();
                          +	hackrf::cpld::init_from_eeprom();
                           
                           	clock_manager.shutdown();
                           
                          diff --git a/firmware/application/ui_setup.cpp b/firmware/application/ui_setup.cpp
                          index 550af2dd6..d0a8650a7 100644
                          --- a/firmware/application/ui_setup.cpp
                          +++ b/firmware/application/ui_setup.cpp
                          @@ -182,7 +182,7 @@ AboutView::AboutView(NavigationView& nav) {
                           
                           	button_ok.on_select = [&nav](Button&){ nav.pop(); };
                           
                          -	if( cpld_hackrf_verify_eeprom() ) {
                          +	if( hackrf::cpld::verify_eeprom() ) {
                           		text_cpld_hackrf_status.set(" OK");
                           	} else {
                           		text_cpld_hackrf_status.set("BAD");
                          diff --git a/firmware/common/cpld_max5.hpp b/firmware/common/cpld_max5.hpp
                          index 98bf96d82..bf98edda6 100644
                          --- a/firmware/common/cpld_max5.hpp
                          +++ b/firmware/common/cpld_max5.hpp
                          @@ -33,6 +33,11 @@
                           namespace cpld {
                           namespace max5 {
                           
                          +struct Config {
                          +	const std::array& block_0;
                          +	const std::array& block_1;
                          +};
                          +
                           class CPLD {
                           public:
                           	constexpr CPLD(
                          diff --git a/firmware/common/cpld_update.cpp b/firmware/common/cpld_update.cpp
                          index 52b59b089..11fd68674 100644
                          --- a/firmware/common/cpld_update.cpp
                          +++ b/firmware/common/cpld_update.cpp
                          @@ -30,8 +30,11 @@
                           #include "portapack_cpld_data.hpp"
                           #include "hackrf_cpld_data.hpp"
                           
                          -bool cpld_update_if_necessary(
                          -	const portapack::cpld::Config config
                          +namespace portapack {
                          +namespace cpld {
                          +
                          +bool update_if_necessary(
                          +	const Config config
                           ) {
                           	jtag::GPIOTarget target {
                           		portapack::gpio_cpld_tck,
                          @@ -40,7 +43,7 @@ bool cpld_update_if_necessary(
                           		portapack::gpio_cpld_tdo
                           	};
                           	jtag::JTAG jtag { target };
                          -	cpld::max5::CPLD cpld { jtag };
                          +	CPLD cpld { jtag };
                           
                           	/* Unknown state */
                           	cpld.reset();
                          @@ -82,6 +85,12 @@ bool cpld_update_if_necessary(
                           	return ok;
                           }
                           
                          +} /* namespace cpld */
                          +} /* namespace portapack */
                          +
                          +namespace hackrf {
                          +namespace cpld {
                          +
                           static jtag::GPIOTarget jtag_target_hackrf() {
                           	return {
                           		hackrf::one::gpio_cpld_tck,
                          @@ -91,9 +100,9 @@ static jtag::GPIOTarget jtag_target_hackrf() {
                           	};
                           }
                           
                          -bool cpld_hackrf_load_sram() {
                          +bool load_sram() {
                           	auto jtag_target_hackrf_cpld = jtag_target_hackrf();
                          -	cpld::xilinx::XC2C64A hackrf_cpld { jtag_target_hackrf_cpld };
                          +	hackrf::one::cpld::CPLD hackrf_cpld { jtag_target_hackrf_cpld };
                           
                           	hackrf_cpld.write_sram(hackrf::one::cpld::verify_blocks);
                           	const auto ok = hackrf_cpld.verify_sram(hackrf::one::cpld::verify_blocks);
                          @@ -101,18 +110,21 @@ bool cpld_hackrf_load_sram() {
                           	return ok;
                           }
                           
                          -bool cpld_hackrf_verify_eeprom() {
                          +bool verify_eeprom() {
                           	auto jtag_target_hackrf_cpld = jtag_target_hackrf();
                          -	cpld::xilinx::XC2C64A hackrf_cpld { jtag_target_hackrf_cpld };
                          +	hackrf::one::cpld::CPLD hackrf_cpld { jtag_target_hackrf_cpld };
                           
                           	const auto ok = hackrf_cpld.verify_eeprom(hackrf::one::cpld::verify_blocks);
                           	
                           	return ok;
                           }
                           
                          -void cpld_hackrf_init_from_eeprom() {
                          +void init_from_eeprom() {
                           	auto jtag_target_hackrf_cpld = jtag_target_hackrf();
                          -	cpld::xilinx::XC2C64A hackrf_cpld { jtag_target_hackrf_cpld };
                          +	hackrf::one::cpld::CPLD hackrf_cpld { jtag_target_hackrf_cpld };
                           
                           	hackrf_cpld.init_from_eeprom();
                           }
                          +
                          +} /* namespace cpld */
                          +} /* namespace hackrf */
                          diff --git a/firmware/common/cpld_update.hpp b/firmware/common/cpld_update.hpp
                          index 38691e087..6799c7089 100644
                          --- a/firmware/common/cpld_update.hpp
                          +++ b/firmware/common/cpld_update.hpp
                          @@ -24,12 +24,24 @@
                           
                           #include "portapack_cpld_data.hpp"
                           
                          -bool cpld_update_if_necessary(
                          -	const portapack::cpld::Config config
                          +namespace portapack {
                          +namespace cpld {
                          +
                          +bool update_if_necessary(
                          +	const Config config
                           );
                           
                          -bool cpld_hackrf_load_sram();
                          -bool cpld_hackrf_verify_eeprom();
                          -void cpld_hackrf_init_from_eeprom();
                          +} /* namespace cpld */
                          +} /* namespace portapack */
                          +
                          +namespace hackrf {
                          +namespace cpld {
                          +
                          +bool load_sram();
                          +bool verify_eeprom();
                          +void init_from_eeprom();
                          +
                          +} /* namespace cpld */
                          +} /* namespace hackrf */
                           
                           #endif/*__CPLD_UPDATE_H__*/
                          diff --git a/firmware/common/portapack_cpld_data.hpp b/firmware/common/portapack_cpld_data.hpp
                          index 71190b0bf..ad4dfd2f9 100644
                          --- a/firmware/common/portapack_cpld_data.hpp
                          +++ b/firmware/common/portapack_cpld_data.hpp
                          @@ -22,16 +22,16 @@
                           #ifndef __PORTAPACK_CPLD_DATA_H__
                           #define __PORTAPACK_CPLD_DATA_H__
                           
                          +#include "cpld_max5.hpp"
                          +
                           #include 
                           #include 
                           
                           namespace portapack {
                           namespace cpld {
                           
                          -struct Config {
                          -	const std::array& block_0;
                          -	const std::array& block_1;
                          -};
                          +using CPLD = ::cpld::max5::CPLD;
                          +using Config = ::cpld::max5::Config;
                           
                           namespace rev_20150901 {
                           
                          
                          From e85fb47a493f9f2e5bcd1cc4d5ae3ec2472fd3d1 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Fri, 2 Jun 2017 22:24:15 -0700
                          Subject: [PATCH 36/39] Extract function that returns audio codec based on
                           hardware revision.
                          
                          ---
                           firmware/application/portapack.cpp | 13 ++++++++-----
                           1 file changed, 8 insertions(+), 5 deletions(-)
                          
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index b993feaba..3802e5c37 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -134,6 +134,13 @@ static PortaPackModel portapack_model() {
                           	return model.value();
                           }
                           
                          +static audio::Codec* portapack_audio_codec() {
                          +	return (portapack_model() == PortaPackModel::R2_20170522)
                          +		? static_cast(&audio_codec_ak4951)
                          +		: static_cast(&audio_codec_wm8731)
                          +		;
                          +}
                          +
                           static const portapack::cpld::Config& portapack_cpld_config() {
                           	return (portapack_model() == PortaPackModel::R2_20170522)
                           		? portapack::cpld::rev_20170522::config
                          @@ -192,11 +199,7 @@ void init() {
                           
                           	portapack::io.init();
                           
                          -	if( portapack_model() == PortaPackModel::R2_20170522 ) {
                          -		audio::init(&audio_codec_ak4951);
                          -	} else {
                          -		audio::init(&audio_codec_wm8731);
                          -	}
                          +	audio::init(portapack_audio_codec());
                           	
                           	clock_manager.enable_first_if_clock();
                           	clock_manager.enable_second_if_clock();
                          
                          From 9a0fa128c0a34d9c12c607197234786432d95526 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Tue, 13 Jun 2017 21:20:19 -0700
                          Subject: [PATCH 37/39] CPLD: Clean up *.qws files.
                          
                          ---
                           hardware/portapack_h1/cpld/20150901/Makefile | 2 +-
                           hardware/portapack_h1/cpld/20170522/Makefile | 2 +-
                           2 files changed, 2 insertions(+), 2 deletions(-)
                          
                          diff --git a/hardware/portapack_h1/cpld/20150901/Makefile b/hardware/portapack_h1/cpld/20150901/Makefile
                          index bff952ff1..26da9d70b 100644
                          --- a/hardware/portapack_h1/cpld/20150901/Makefile
                          +++ b/hardware/portapack_h1/cpld/20150901/Makefile
                          @@ -43,7 +43,7 @@ OUTPUT_DIR=output_files
                           all: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                           
                           clean:
                          -	rm -rf *.chg smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                          +	rm -rf *.chg *.qws smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                           
                           map: smart.log $(OUTPUT_DIR)/$(PROJECT).map.rpt
                           
                          diff --git a/hardware/portapack_h1/cpld/20170522/Makefile b/hardware/portapack_h1/cpld/20170522/Makefile
                          index bff952ff1..26da9d70b 100644
                          --- a/hardware/portapack_h1/cpld/20170522/Makefile
                          +++ b/hardware/portapack_h1/cpld/20170522/Makefile
                          @@ -43,7 +43,7 @@ OUTPUT_DIR=output_files
                           all: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt $(OUTPUT_DIR)/$(PROJECT).sta.rpt
                           
                           clean:
                          -	rm -rf *.chg smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                          +	rm -rf *.chg *.qws smart.log db/ incremental_db/ $(OUTPUT_DIR)/
                           
                           map: smart.log $(OUTPUT_DIR)/$(PROJECT).map.rpt
                           
                          
                          From b3c21c37627acd905587673afe94ef101b64febd Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Tue, 13 Jun 2017 21:21:25 -0700
                          Subject: [PATCH 38/39] CPLD: Ask Quartus to use maximum number of processors.
                          
                          ---
                           hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf | 3 ++-
                           hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf | 3 ++-
                           2 files changed, 4 insertions(+), 2 deletions(-)
                          
                          diff --git a/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          index 254a3481a..a834c020f 100644
                          --- a/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          +++ b/hardware/portapack_h1/cpld/20150901/portapack_h1_cpld.qsf
                          @@ -285,4 +285,5 @@ set_location_assignment PIN_34 -to MCU_P2_8
                           set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_P2_8
                           set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_P2_8
                           set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
                          -set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
                          \ No newline at end of file
                          +set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
                          +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
                          diff --git a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          index b16ad776f..0b47ac081 100644
                          --- a/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          +++ b/hardware/portapack_h1/cpld/20170522/portapack_h1_cpld.qsf
                          @@ -288,4 +288,5 @@ set_location_assignment PIN_34 -to MCU_P2_8
                           set_instance_assignment -name IO_STANDARD "3.3-V LVCMOS" -to MCU_P2_8
                           set_instance_assignment -name CURRENT_STRENGTH_NEW "MINIMUM CURRENT" -to MCU_P2_8
                           set_instance_assignment -name SLOW_SLEW_RATE ON -to MCU_P2_8
                          -set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
                          \ No newline at end of file
                          +set_instance_assignment -name PCI_IO OFF -to MCU_P2_8
                          +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
                          
                          From 748e5a4f5f175b8525531d3c1d6d34349a87ff82 Mon Sep 17 00:00:00 2001
                          From: Jared Boone 
                          Date: Tue, 13 Jun 2017 22:16:00 -0700
                          Subject: [PATCH 39/39] Init: Boot to HackRF mode if PortaPack CPLD not found.
                          
                          Worst case, customers can always pull off the PortaPack to get back to a working HackRF.
                          ---
                           firmware/application/main.cpp      | 21 ++++++++++----------
                           firmware/application/portapack.cpp | 31 ++++++++++++++++++------------
                           firmware/application/portapack.hpp |  2 +-
                           3 files changed, 31 insertions(+), 23 deletions(-)
                          
                          diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp
                          index f2a262c8c..9cd1b93ec 100755
                          --- a/firmware/application/main.cpp
                          +++ b/firmware/application/main.cpp
                          @@ -68,22 +68,23 @@ static void event_loop() {
                           }
                           
                           int main(void) {
                          -	portapack::init();
                          +	if( portapack::init() ) {
                          +		portapack::display.init();
                           
                          -	portapack::display.init();
                          +		sdcStart(&SDCD1, nullptr);
                           
                          -	sdcStart(&SDCD1, nullptr);
                          +		controls_init();
                          +		lcd_frame_sync_configure();
                          +		rtc_interrupt_enable();
                           
                          -	controls_init();
                          -	lcd_frame_sync_configure();
                          -	rtc_interrupt_enable();
                          +		event_loop();
                           
                          -	event_loop();
                          +		sdcDisconnect(&SDCD1);
                          +		sdcStop(&SDCD1);
                           
                          -	sdcDisconnect(&SDCD1);
                          -	sdcStop(&SDCD1);
                          +		portapack::shutdown();
                          +	}
                           
                          -	portapack::shutdown();
                           	m4_init(portapack::spi_flash::image_tag_hackrf, portapack::memory::map::m4_code_hackrf);
                           	m0_halt();
                           
                          diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp
                          index 3802e5c37..a54e7ab95 100644
                          --- a/firmware/application/portapack.cpp
                          +++ b/firmware/application/portapack.cpp
                          @@ -148,7 +148,20 @@ static const portapack::cpld::Config& portapack_cpld_config() {
                           		;
                           }
                           
                          -void init() {
                          +static void shutdown_base() {
                          +	clock_manager.shutdown();
                          +
                          +	power.shutdown();
                          +	// TODO: Wait a bit for supplies to discharge?
                          +
                          +	chSysDisable();
                          +
                          +	systick_stop();
                          +
                          +	hackrf::one::reset();
                          +}
                          +
                          +bool init() {
                           	for(const auto& pin : pins) {
                           		pin.init();
                           	}
                          @@ -190,7 +203,8 @@ void init() {
                           	clock_manager.run_at_full_speed();
                           
                           	if( !portapack::cpld::update_if_necessary(portapack_cpld_config()) ) {
                          -		chSysHalt();
                          +		shutdown_base();
                          +		return false;
                           	}
                           
                           	if( !hackrf::cpld::load_sram() ) {
                          @@ -210,6 +224,8 @@ void init() {
                           
                           	LPC_CREG->DMAMUX = portapack::gpdma_mux;
                           	gpdma::controller.enable();
                          +
                          +	return true;
                           }
                           
                           void shutdown() {
                          @@ -222,16 +238,7 @@ void shutdown() {
                           
                           	hackrf::cpld::init_from_eeprom();
                           
                          -	clock_manager.shutdown();
                          -
                          -	power.shutdown();
                          -	// TODO: Wait a bit for supplies to discharge?
                          -
                          -	chSysDisable();
                          -
                          -	systick_stop();
                          -
                          -	hackrf::one::reset();
                          +	shutdown_base();
                           }
                           
                           extern "C" {
                          diff --git a/firmware/application/portapack.hpp b/firmware/application/portapack.hpp
                          index 004ab5e99..a00b16c00 100644
                          --- a/firmware/application/portapack.hpp
                          +++ b/firmware/application/portapack.hpp
                          @@ -49,7 +49,7 @@ extern ReceiverModel receiver_model;
                           
                           extern TemperatureLogger temperature_logger;
                           
                          -void init();
                          +bool init();
                           void shutdown();
                           
                           } /* namespace portapack */
                          
                          LFN構成 at CM3
                          _CODE_PAGE追加コード